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  [in template "20099#20135#10700480" at line 1451, column 69]

----
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.media.videoYotubeID}  [in template "20099#20135#10700480" in macro "renderNewsFeaturedMedia" at line 1451, column 67]
	- Reached through: @renderNewsFeaturedMedia newsInfo  [in template "20099#20135#10700480" at line 471, column 21]
----
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 addSchemaMarkup newsInfo> 
660  <#assign image = ""/> 
661  <#assign datePublished = newsInfo.createDate?string('yyyy-MM-ddHH:mm:ss-03:00')/> 
662  <#assign datePublishedISOFormat = datePublished?substring(0, 10) + "T" + datePublished?substring(10)/> 
663  <#assign dateModified = newsInfo.lastPublishDate?string('yyyy-MM-ddHH:mm:ss-03:00')/> 
664  <#assign dateModifiedISOFormat = dateModified?substring(0, 10) + "T" + dateModified?substring(10)/> 
665 
666  <#if newsInfo.newsMedia.imageSrc?? && newsInfo.newsMedia.imageSrc?has_content> 
667    <#assign image = "${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsMedia.fileEntryId}/Thumbnail-300x300/image"/> 
668  <#else> 
669    <#if newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content> 
670      <#assign image = "https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg"/> 
671    </#if> 
672  </#if> 
673 
674  <#--  Busca informações do cadastro Organization do institucional  do ambiente de produção--> 
675  <#--  35467409 é o id da estrutura de webcontent "Dados Estruturados - Organização"  --> 
676  <#assign organizationName = "" /> 
677  <#assign logoImgSrc = "" /> 
678 
679  <#assign structuredContents = restClient.get("/headless-delivery/v1.0/content-structures/35467409/structured-contents")/> 
680  <#if structuredContents?has_content && structuredContents.items?has_content> 
681    <#assign structuredContentData  = structuredContents.items[0]/> 
682    <#if structuredContentData?has_content && structuredContentData.contentFields?has_content> 
683      <#list structuredContentData.contentFields as item> 
684        <#if item.label == "Nome legal da organização"> 
685          <#assign organizationName = item.contentFieldValue.data!""> 
686        </#if> 
687        <#if item.label == "Logotipo" && item.contentFieldValue?has_content && item.contentFieldValue.image??> 
688          <#assign logoImgSrc = themeDisplay.getURLPortal() + item.contentFieldValue.image.contentUrl!""> 
689        </#if> 
690      </#list> 
691    </#if> 
692  </#if> 
693 
694 
695  <#-- add to head --> 
696  <@liferay_util["html-top"]> 
697    <script type="application/ld+json"> 
698
699        "@context": "https://schema.org", 
700        "@type": "BlogPosting", 
701        "headline": "${newsInfo.mainHeadlineOfTheNews}", 
702        "alternativeHeadline": "${newsInfo.featuredNewsHeadline}", 
703        "image": "${image}", 
704        "author": { 
705          "@type": "Person", 
706          "name": "Petrobras", 
707          "url": "${themeDisplay.getPortalURL()}/autor" 
708        }, 
709        "publisher": { 
710          "@type": "Organization", 
711          "name": "${organizationName}", 
712          "logo": { 
713            "@type": "ImageObject", 
714            "url": "${logoImgSrc}" 
715
716        }, 
717        "datePublished": "${datePublishedISOFormat}", 
718        "dateModified": "${dateModifiedISOFormat}", 
719        "mainEntityOfPage": "${newsInfo.url}", 
720        "description": "${newsInfo.newsSummary}", 
721        "keywords": [<#list tagCategoryList as tag>"${tag[0]}"<#sep>, </#list>], 
722        "articleBody": "${ 
723          newsInfo.newsContent 
724          ?replace('&[a-z]+;', ' ', 'r') 
725          ?replace('<[^>]+>', '', 'r') 
726          ?replace('[\n\r]+', ' ', 'r') 
727          ?trim 
728          ?json_string 
729        }" 
730
731    </script> 
732  </@> 
733</#macro> 
734 
735<@addSchemaMarkup newsInfo/> 
736 
737<#macro renderHeadLine newsInfo> 
738     
739    <div class="main-headline-container breakpoint"> 
740        <div class="main-headline-container-col col-2-11 md-col-1-8 sm-col-1-4"> 
741            <h1 class="main-headline display-sm">${newsInfo.featuredNewsHeadline}</h1> 
742            <div class="bar"></div> 
743        </div> 
744    </div> 
745 
746    <style> 
747        .ptb-news__read-news .main-headline-container .main-headline-container-col { 
748            display: flex; 
749            flex-direction: column; 
750            gap: var(--space-sm); 
751            padding-bottom: var(--space-lg); 
752
753 
754        .ptb-news__read-news .main-headline-container .main-headline-container-col * { 
755            margin: 0; 
756            padding: 0; 
757
758 
759        .ptb-news__read-news .main-headline-container .main-headline { 
760            font-family: var(--font-family-base); 
761            color: var(--color-neutral-800); 
762
763 
764        body.high-contrast-active .ptb-news__read-news .main-headline-container .main-headline { 
765            color: var(--text-primary-default, var(--color-neutral-100)); 
766
767 
768        .ptb-news__read-news .main-headline-container .bar { 
769            width: 32px; 
770            height: var(--size-micro); 
771            background: var(--color-secondary-medium); 
772
773 
774        body.high-contrast-active .ptb-news__read-news .main-headline-container .bar{ 
775            background: var(--text-secondary-accent, #FFEEB3); 
776
777 
778        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
779            .ptb-news__read-news .main-headline-container .main-headline-container-col { 
780                gap: var(--space-xs, 12px); 
781
782
783    </style> 
784</#macro> 
785<#-- ################################################################################################################## --> 
786 
787<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### --> 
788<#macro renderReview newsInfo> 
789    <#assign summaryCssRoot = "summary-container" /> 
790 
791    <div class="${summaryCssRoot}-breakpoint breakpoint"> 
792        <div class="${summaryCssRoot} col-2-11 md-col-1-8 sm-col-1-4"> 
793            <p class="summary paragraph-lg-regular"> 
794                ${newsInfo.newsSummary} 
795            </p> 
796        </div> 
797        
798    </div> 
799 
800    <style> 
801        .${summaryCssRoot} .summary { 
802            padding-bottom: var(--space-lg); 
803
804 
805        .${summaryCssRoot} .summary, 
806        .${summaryCssRoot} .summary * { 
807            color: var(--color-neutral-800, #373737); 
808            font-family: var(--font-family-base); 
809            font-style: var(--font-style-italic); 
810            margin: var(--space-none); 
811
812 
813        body.high-contrast-active .summary, 
814        body.high-contrast-active .summary * { 
815            color: var(--text-secondary-default, #F8F8F8); 
816
817    </style> 
818</#macro> 
819<#-- ################################################################################################################## --> 
820 
821<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### --> 
822<#macro renderPublishAndSocialMediasInfos journalArticle newsInfo> 
823 
824    <div class="publish_and_social_medias_infos_desk-breakpoint breakpoint"> 
825        <div class="publish_and_social_medias_infos_desk col-2-11 md-col-1-8 sm-col-1-4"> 
826            <div class="publish_and_update_date"> 
827                <#assign lastPublishDate = journalArticle.getModifiedDate()> 
828                <#assign createDate = journalArticle.getCreateDate()> 
829                <#if journalArticle.getLastPublishDate()??> 
830                    <#assign lastPublishDate = journalArticle.getLastPublishDate()> 
831                </#if> 
832 
833                <#if locale == "pt_BR"> 
834                    <p class="updated">Atualizado em ${formatDate(lastPublishDate)}</p> 
835                    <p class="published">Postado em ${formatDate(createDate)}</p> 
836                <#else > 
837                    <p class="updated">Updated on ${formatDate(lastPublishDate)}</p> 
838                    <p class="published">Posted on ${formatDate(createDate)}</p> 
839                </#if> 
840            </div> 
841            <div class="render-share-news-container desktop"> 
842                <@renderShareAndCopyNews/> 
843            </div> 
844        </div> 
845    </div> 
846 
847    <style> 
848			.ptb-news__read-news .hidden { 
849			     display: none; 
850
851        /*Data de publicação e redes sociais */ 
852 
853        /* Desktop */ 
854        .ptb-news__read-news .publish_and_social_medias_infos_desk { 
855            position: relative; 
856            display: grid; 
857            grid-template-columns: auto 1fr auto; 
858
859 
860        .ptb-news__read-news .render-share-news-container.mobile { 
861            display: none; 
862
863 
864        .ptb-news__read-news .publish_and_social_medias_infos_desk * { 
865            padding: var(--space-none, 0); 
866            margin: var(--space-none, 0); 
867            font-family: var(--font-family-base); 
868            font-style: var(--font-style-normal, normal); 
869            font-weight: var(--font-weight-regular, 400); 
870            font-size: var(--font-size-xxs, 16px); 
871            line-height: var(--line-height-xl, 160%); 
872            color: var(--color-neutral-800, #373737); 
873
874 
875        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk * { 
876            color: var(--text-secondary-default, #F8F8F8); 
877
878 
879        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg path, 
880        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg path { 
881            stroke: var(--color-neutral-500, #D7D7D7); 
882            fill: rgba(255, 255, 255, 0.32); 
883
884 
885        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg circle, 
886        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg circle { 
887            fill: rgba(255, 255, 255, 0.32); 
888
889 
890        .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date { 
891            display: flex; 
892            align-items: center; 
893            gap: var(--space-sm, 16px); 
894
895 
896        .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .updated { 
897            font-weight: var(--font-weight-bold, 700); 
898            font-size: var(--font-size-xxxs, 14px); 
899
900 
901        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .updated { 
902            color: var(--text-primary-default, var(--color-neutral-100)); 
903
904 
905        .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published { 
906            font-weight: var(--font-weight-normal, 400); 
907            font-size: var(--font-size-xxxs, 14px); 
908
909 
910        .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container { 
911            display: flex; 
912            width: 100%; 
913            justify-content: flex-end; 
914            align-items: center; 
915            gap: var(--space-sm, 16px); 
916
917   
918        .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .social-media-share { 
919            position: relative; 
920
921	 
922        .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .social-media-share span { 
923            position: absolute; 
924            width: 100%; 
925            height: 100%; 
926            opacity: 0; 
927            overflow: hidden; 
928            pointer-events: none; 
929
930 
931        .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share { 
932            display: none; 
933
934 
935        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container { 
936            background: var(--color-neutral-100); 
937            border: var(--border-width-hairline, 1px) solid #CCCCCC; 
938            border-radius: 32px; 
939            display: flex; 
940            align-items: center; 
941            gap: var(--space-sm, 16px); 
942            padding: 6px var(--space-xxs, 8px); 
943            height: 36px; 
944            margin: 0; 
945            cursor: pointer; 
946
947 
948        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container { 
949            background: rgba(255, 255, 255, 0.32); 
950            border: var(--border-width-hairline, 1px) solid rgba(255, 255, 255, 0.32); 
951
952 
953        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container svg { 
954            width: 18px; 
955
956 
957        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk  svg path { 
958            stroke: var(--color-neutral-500, #D7D7D7); 
959
960 
961        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text { 
962            font-family: var(--font-family-base); 
963            font-style: normal; 
964            margin: 0; 
965            height: 100%; 
966            display: flex; 
967            align-items: center; 
968            color: var(--color-primary-medium, #008542); 
969            font-size: var(--font-size-micro, 12px); 
970            font-weight: var(--font-weight-bold, 700); 
971            line-height: var(--line-height-lg, 144%); 
972            pointer-events: none; 
973
974	             
975        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text .copy-text-title-news { 
976            position: absolute; 
977            width: 100%; 
978            height: 100%; 
979            opacity: 0; 
980            overflow: hidden; 
981
982 
983        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text { 
984            color: var(--text-primary-accent, #E4F7E8); 
985
986 
987        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message { 
988            display: none; 
989            position: absolute; 
990            bottom: -43px; 
991            right: -15px; 
992            padding: var(--space-xxxs, 4px) 15px; 
993            margin: var(--space-micro, 2px) 10px; 
994            width: 110px; 
995            font-family: var(--font-family-base); 
996            font-size: var(--font-size-micro, 12px); 
997 
998            color: #008542; 
999            background: var(--color-neutral-100); 
1000            border-radius: var(--border-radius-md, 8px); 
1001 
1002            filter: drop-shadow(0px 4px 16px rgba(0, 0, 0, 0.16)); 
1003 
1004            cursor: pointer; 
1005
1006 
1007        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message { 
1008            background: rgba(255, 255, 255, 0.32); 
1009            color: var(--text-primary-accent, #E4F7E8); 
1010
1011 
1012        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message-active { 
1013            display: block; 
1014
1015 
1016        /* Mobile */ 
1017 
1018        .ptb-news__read-news .publish_and_social_medias_infos_mobile { 
1019            display: flex; 
1020            flex-direction: column; 
1021            gap: 19px; 
1022
1023 
1024        .ptb-news__read-news .publish_and_social_medias_infos_mobile { 
1025            display: none; 
1026
1027 
1028        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text { 
1029            display: flex; 
1030            justify-content: space-between; 
1031            align-items: center; 
1032            margin-bottom: var(--space-lg, 32px); 
1033
1034 
1035        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date * { 
1036            padding: 0; 
1037            margin: 0; 
1038            font-family: var(--font-family-base); 
1039            font-style: var(--font-style-normal, normal); 
1040            font-size: var(--font-size-micro, 12px); 
1041            line-height: 136%; 
1042            color: var(--color-neutral-800, #373737); 
1043
1044 
1045        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 * { 
1046            color: var(--text-primary-accent, #E4F7E8); 
1047
1048 
1049        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date { 
1050            display: flex; 
1051            flex-direction: column; 
1052            gap: 0; 
1053
1054 
1055        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .updated { 
1056            font-weight: var(--font-weight-bold, 700); 
1057
1058 
1059        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .published { 
1060            font-weight: var(--font-weight-regular, 400); 
1061
1062 
1063        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container { 
1064            background: var(--color-neutral-100); 
1065            border: var(--border-width-hairline, 1px) solid #CCCCCC; 
1066            border-radius: 32px; 
1067            display: flex; 
1068            align-items: center; 
1069            gap: var(--space-sm, 16px); 
1070            padding: 6px var(--space-xxs, 8px); 
1071            width: 112px; 
1072            height: 36px; 
1073
1074 
1075        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container { 
1076            background: rgba(255, 255, 255, 0.32); 
1077            color: var(--text-primary-accent, #E4F7E8); 
1078
1079 
1080        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container p.text { 
1081            margin: 0; 
1082
1083 
1084        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container .text { 
1085            font-family: var(--font-family-base); 
1086            font-style: var(--font-style-normal, normal); 
1087            font-weight: var(--font-weight-regular, 400); 
1088            font-size: 13px; 
1089            line-height: 14px; 
1090            color: #008542; 
1091
1092 
1093        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 { 
1094            background: rgba(255, 255, 255, 0.32); 
1095            color: var(--text-primary-accent, #E4F7E8); 
1096
1097 
1098        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
1099 
1100            .ptb-news__read-news .publish_and_social_medias_infos_desk .render-share-news-container.desktop { 
1101                display: none; 
1102
1103 
1104            .ptb-news__read-news .render-share-news-container.mobile { 
1105                display: block; 
1106                margin: var(--space-xl) var(--space-lg) 0 var(--space-lg); 
1107
1108 
1109            .ptb-news__read-news .publish_and_social_medias_infos_desk * { 
1110                font-size: var(--font-size-micro, 12px); 
1111
1112             
1113            .ptb-news__read-news .publish_and_social_medias_infos_desk { 
1114                display: grid; 
1115                grid-template-columns: 100%; 
1116                grid-template-rows: 1fr 100%; 
1117
1118 
1119            .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date { 
1120                grid-column-start: 1; 
1121                grid-column-end: 1; 
1122                grid-row-start: 1; 
1123                grid-row-end: 1; 
1124                gap: var(--space-xxs, 8px); 
1125
1126 
1127            .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * { 
1128                padding: 0; 
1129                margin: 0; 
1130                font-family: var(--font-family-base); 
1131                font-style: var(--font-style-normal); 
1132                color: var(--color-neutral-800, #373737); 
1133                font-weight: var(--font-weight-bold); 
1134                font-size: var(--font-size-xxxs, 14px); 
1135                line-height: var(--line-height-md, 132%); 
1136
1137 
1138            body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * { 
1139                color: var(--text-primary-accent, #E4F7E8); 
1140
1141 
1142            .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published { 
1143                font-weight: var(--font-weight-regular, 400); 
1144
1145 
1146            .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container { 
1147                grid-column-start: 1; 
1148                grid-column-end: 2; 
1149                grid-row-start: 2; 
1150                grid-row-end: 2; 
1151                justify-content: center; 
1152                gap: var(--space-xs, 12px); 
1153                height: 36px; 
1154
1155 
1156            .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container { 
1157                grid-column-start: 1; 
1158                grid-column-end: 2; 
1159                grid-row-start: 2; 
1160                grid-row-end: 2; 
1161                max-width: 112px; 
1162                place-self: end; 
1163
1164 
1165            .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text { 
1166                display: none; 
1167
1168 
1169            .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message { 
1170                bottom: 0; 
1171                right: -9px; 
1172
1173 
1174            .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share { 
1175                display: initial; 
1176
1177
1178 
1179        @media screen and (min-width: ${MIN_TABLET_WIDTH}px) and (max-width: ${MAX_TABLET_WIDTH}px) { 
1180            .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container { 
1181                padding-right: 0; 
1182
1183
1184 
1185 
1186    </style> 
1187 
1188    <script> 
1189        AUI().ready(function () { 
1190 
1191            function copyOnClick(text) { 
1192 
1193                const strWithoutHtmlTags = text.replace(/(<([^>]+)>)/gi, ""); 
1194                const strWithoutMarcationBrackets = strWithoutHtmlTags.replace(/ *#\[[^\]]*]/g, ""); 
1195                const strWithoutNextPrevious = strWithoutMarcationBrackets.replace(/Previous    Next/g, ""); 
1196                const strWithoutBlankEnters = strWithoutNextPrevious.replace(/^\s*$(?:\r\n?|\n)/gm, ""); 
1197                const strWithoutBlankLines = strWithoutBlankEnters.replace(/&nbsp;/g, ''); 
1198                const tempInput = document.createElement("textarea"); 
1199                tempInput.value = strWithoutBlankLines; 
1200 
1201                document.body.appendChild(tempInput); 
1202                tempInput.select(); 
1203                document.execCommand("copy"); 
1204 
1205                if (tempInput.value.length > 0) { 
1206                    copyMessages.forEach(copyMessage => copyMessage.classList.add('copy-message-active')); 
1207 
1208                    timerToMessage() 
1209
1210 
1211                document.body.removeChild(tempInput); 
1212
1213 
1214            const copyTextContainers = document.querySelectorAll(".publish_and_social_medias_infos_desk .copy-text-container"); 
1215            copyTextContainers.forEach(copyTextContainer => { 
1216                copyTextContainer.addEventListener("click", (event) => { 
1217                    event.preventDefault(); 
1218                    const titleText = document.querySelector(".main-headline-container .main-headline").innerHTML; 
1219                    const publishSocialMediaText = document.querySelector(".publish_and_social_medias_infos_desk .publish_and_update_date").innerHTML; 
1220                    const tagsText = document.querySelector(".tags").innerHTML; 
1221                    const newsContentText = document.querySelector(".news-content").innerHTML; 
1222                    const text = titleText + publishSocialMediaText + tagsText + newsContentText; 
1223                    copyOnClick(text) 
1224                }); 
1225            }); 
1226 
1227            const mobileShare = async () => { 
1228                try { 
1229                    const shareData = { 
1230                        title: '${newsInfo.mainHeadlineOfTheNews}', 
1231                        text: '', 
1232                        url: '${newsInfo.url}' 
1233                    }; 
1234                    await navigator.share(shareData); 
1235                } catch (err) { 
1236 
1237
1238            }; 
1239 
1240            const mobileShareButtons = document.querySelectorAll(".publish_and_social_medias_infos_desk .mobile-share"); 
1241            mobileShareButtons.forEach(mobileShareButton => { 
1242                mobileShareButton.addEventListener("click", (event) => { 
1243                    event.preventDefault(); 
1244                    mobileShare(); 
1245                }); 
1246            }); 
1247 
1248            const copyMessages = document.querySelectorAll('.copy-message'); 
1249            const timerToMessage = () => { 
1250                setTimeout(() => { 
1251                    removeMessage(); 
1252                }, 2500); 
1253 
1254
1255 
1256            const removeMessage = () => { 
1257                copyMessages.forEach(copyMessage => copyMessage.classList.remove('copy-message-active')); 
1258
1259 
1260        }); 
1261    </script> 
1262 
1263</#macro> 
1264 
1265<#-- ################################################################################################################## --> 
1266 
1267<#-- ############# Site de Crise - Notícia - Render Tags ############################################################## --> 
1268 
1269<#function getCategoriesNamesAndIds vocabularyName categoriesList> 
1270    <#assign tagCategoryList = [] /> 
1271 
1272    <#assign tagsVocabulary = assetVocabularyService.fetchGroupVocabulary(groupId, vocabularyName) /> 
1273    <#list categoriesList as cat> 
1274        <#if tagsVocabulary.getVocabularyId() == cat.embeddedTaxonomyCategory.taxonomyVocabularyId > 
1275            <#assign tagCategoryList += [[cat.taxonomyCategoryName, cat.taxonomyCategoryId]] /> 
1276        </#if> 
1277    </#list> 
1278    <#return tagCategoryList> 
1279</#function> 
1280 
1281<#assign 
1282flagVocabulary = findVocabulary("Flag", vocabularies) 
1283assetCategoryPropService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") 
1284/> 
1285 
1286<#macro renderNewsTags categoryList targetPageWhenClickTag removeStartParameterWhenTagIsClicked updateTagParamsWhenClicked> 
1287    <#assign tagPrefix = "tags-" + randomNumber(groupId?number)> 
1288    <div class="${tagPrefix}-breakpoint breakpoint"> 
1289        <div class="${tagPrefix} col-2-11 md-col-1-8 sm-col-1-4"> 
1290 
1291            <div class="tags"> 
1292                <#list categoryList as cat> 
1293                    <#assign tagLink = mountUrlToPage("") /> 
1294                    <#assign urlWithoutTrailingSlash = tagLink?substring(0, tagLink?length - 1)> 
1295                    <#assign lastSlashIndex = urlWithoutTrailingSlash?last_index_of("/")> 
1296                    <#assign newUrl = urlWithoutTrailingSlash?substring(0, lastSlashIndex + 1)> 
1297                    <#assign tagLink = newUrl + "categorias?category=" + cat[1] /> 
1298                    <a href="${tagLink}" 
1299                        class="category" cetegoryid="${cat[1]}"># ${cat[0]}</a> 
1300                </#list> 
1301            </div> 
1302        </div>    
1303    </div> 
1304 
1305    <style> 
1306        .${tagPrefix} { 
1307            display: flex; 
1308            flex-direction: column; 
1309            padding: 0; 
1310            gap: var(--space-sm); 
1311
1312 
1313        .${tagPrefix} * { 
1314            margin: 0; 
1315            padding: 0; 
1316
1317 
1318        .${tagPrefix} .tags { 
1319            display: flex; 
1320            flex-wrap: wrap; 
1321            gap: var(--space-xxs, 8px); 
1322            padding: var(--space-lg) 0 0; 
1323
1324 
1325        .${tagPrefix} .tags .category { 
1326            padding: var(--space-xxxs) var(--space-xxs); 
1327            background: var(--color-neutral-100); 
1328            border: var(--border-width-hairline, 1px) solid var(--color-neutral-500); 
1329            border-radius: var(--border-radius-xl); 
1330 
1331            font-family: var(--font-family-base); 
1332            font-style: var(--font-style-normal); 
1333            font-weight: var(--font-weight-regular); 
1334            font-size: var(--font-size-xxxs); 
1335            line-height: var(--line-height-xl); 
1336            color: var(--color-neutral-800, #373737); 
1337            cursor: pointer; 
1338
1339 
1340        body.high-contrast-active .${tagPrefix} .tags .category { 
1341            background: rgba(255, 255, 255, 0.32); 
1342            border: 1px solid rgba(255, 255, 255, 0.32); 
1343            color: var(--text-secondary-default, #F8F8F8); 
1344
1345 
1346        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
1347            .${tagPrefix} .tags { 
1348                display: flex; 
1349                flex-wrap: wrap; 
1350                gap: 8px; 
1351                padding: var(--space-sm) 0 var(--space-lg); 
1352
1353 
1354            .${tagPrefix} { 
1355                margin-top: var(--space-sm); 
1356
1357
1358    </style> 
1359 
1360    <script> 
1361        AUI().ready(function () { 
1362 
1363            const urlParams = new URLSearchParams(window.location.search); 
1364            const categories = urlParams.getAll("category").sort(); 
1365 
1366            const root = document.querySelector(".${tagPrefix}"); 
1367            const tags = root.querySelectorAll(".category"); 
1368            tags.forEach((tag, index) => { 
1369 
1370                const categoryId = tag.getAttribute("cetegoryid"); 
1371                if (categories.indexOf(categoryId) != -1) { 
1372                    tag.classList.add("active"); 
1373
1374 
1375                <#if updateTagParamsWhenClicked> 
1376                tag.addEventListener("click", (e) => { 
1377                    e.preventDefault(); 
1378                    const clickedTag = e.target; 
1379                    const urlParams = new URLSearchParams(window.location.search); 
1380                    urlParams.delete("tag"); 
1381                    urlParams.delete("category"); 
1382 
1383                    const categoryId = clickedTag.getAttribute("cetegoryid"); 
1384                    urlParams.append("category", categoryId); 
1385 
1386                    <#if removeStartParameterWhenTagIsClicked> 
1387                    urlParams.delete("start"); 
1388                    </#if> 
1389 
1390                    const href = "${themeDisplay.getPortalURL() + mountUrlToPage(targetPageWhenClickTag)}?" + urlParams.toString(); 
1391                    window.location.href = href; 
1392                }); 
1393                </#if> 
1394            }); 
1395        }); 
1396    </script> 
1397 
1398</#macro> 
1399 
1400<#-- ################################################################################################################## --> 
1401 
1402<#-- ############# Site de Crise - Notícia - Imagem de destaque ####################################################### --> 
1403<#macro renderNewsFeaturedMedia newsInfo> 
1404    <#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)> 
1405        <div class="news-featured-media"> 
1406             
1407            <div class="media-breakpoint breakpoint"> 
1408                <div class="media-col col-2-11 md-col-1-8 sm-col-1-4"> 
1409                    <#if newsInfo.newsMedia.imageSrc?? && newsInfo.newsMedia.imageSrc?has_content> 
1410                        <#-- Midias adaptativas de imagem para desktop e mobile --> 
1411                        <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${newsInfo.newsMedia.fileEntryId}") /> 
1412                        <#assign urlAdaptativeMediaMobile = newsInfo.newsMedia.imageSrc/> 
1413                        <#assign urlAdaptativeMediaDesktop = newsInfo.newsMedia.imageSrc/> 
1414                         
1415                        <#if fileDataRequest?? && fileDataRequest.adaptedImages?? > 
1416                            <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages /> 
1417                            <#list dataAdaptativeMedia as data> 
1418                                <#if data.resolutionName == adaptativeMediaDesktopResolutionName> 
1419                                    <#assign urlAdaptativeMediaDesktop = data.contentUrl/> 
1420                                </#if> 
1421                                <#if data.resolutionName == adaptativeMediaMobileResolutionName> 
1422                                    <#assign urlAdaptativeMediaMobile = data.contentUrl/> 
1423                                </#if>      
1424                            </#list> 
1425                        </#if> 
1426 
1427                        <picture> 
1428                            <source media="(max-width:767px)" srcset="${urlAdaptativeMediaMobile}"> 
1429                            <img src="${urlAdaptativeMediaDesktop}" loading="lazy" alt="${newsInfo.newsMedia.imageAlt}"/> 
1430                        </picture> 
1431												<@liferay_util["html-top"]> 
1432                            <meta name="title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1433                            <meta name="description" content="${newsInfo.newsSummary}"> 
1434 
1435                            <meta property="og:url" content="${currentURL}"> 
1436                            <meta property="og:type" content="website"> 
1437                            <meta property="og:title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1438				            				<meta property="og:description" content="${newsInfo.newsSummary}" /> 
1439                            <meta property="og:image" content="${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsMedia.fileEntryId}/Thumbnail-300x300/image"> 
1440                            <meta property="og:image:alt" content="${newsInfo.newsMedia.imageAlt}"> 
1441 
1442                            <meta name="twitter:card" content="summary_large_image"> 
1443                            <meta name="twitter:url" content="${currentURL}" /> 
1444                            <meta name="twitter:title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1445                            <meta name="twitter:description" content="${newsInfo.newsSummary}" /> 
1446                            <meta name="twitter:image" content= "${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsMedia.fileEntryId}/Thumbnail-300x300/image" > 
1447							 							<meta name="twitter:image:alt" content="${newsInfo.newsMedia.imageAlt}"> 
1448                        </@> 
1449                    <#else> 
1450                        <#if newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content> 
1451                            <iframe loading="lazy" data-video-id="${cardData.media.videoYotubeID}" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> 
1452                            <@liferay_util["html-top"]>       
1453                            		<meta name="title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1454                            		<meta name="description" content="${newsInfo.newsSummary}"> 
1455							 
1456							    							<meta property="og:url" content="${currentURL}"> 
1457                                <meta property="og:type" content="website"> 
1458                                <meta property="og:title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1459				                				<meta property="og:description" content="${newsInfo.newsSummary}" /> 
1460                                <meta property="og:image" content="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg"> 
1461															  <meta property="og:image:alt" content="Youtube Video Thumbnail"> 
1462 
1463                                <meta name="twitter:card" content="summary_large_image"> 
1464                                <meta name="twitter:url" content="${currentURL}" /> 
1465                                <meta name="twitter:title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1466                                <meta name="twitter:description" content="${newsInfo.newsSummary}" /> 
1467                                <meta name="twitter:image" content= "https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg" > 
1468															  <meta name="twitter:image:alt" content="Youtube Video Thumbnail"> 
1469                            </@> 
1470														<#else> 
1471                            <video loading="lazy"> 
1472                                <source src="${newsInfo.newsMedia.internalVideo.url}"> 
1473                                Your browser does not support the video tag. 
1474                            </video> 
1475                        </#if> 
1476 
1477                         <div class="banner-video-icons"> 
1478                            <#if newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content> 
1479                                <picture> 
1480                                    <source media="(max-width:767px)" srcset="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/mqdefault.jpg"> 
1481                                    <img class="banner-video-thumb-iframe" loading="lazy" src="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg" alt="YouTube Thumbnail"/> 
1482                                </picture> 
1483                            </#if> 
1484                            <svg class="banner-video-icon-play" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
1485                                <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"/> 
1486                                <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"/> 
1487                            </svg> 
1488                        </div> 
1489                    </#if> 
1490                </div> 
1491            </div> 
1492             
1493            <div class="credit-legend breakpoint"> 
1494							 
1495                    <div class="credit-legend-container col-2-11 md-col-1-8 sm-col-1-4"> 
1496											<#if newsInfo.newsMedia.legend != ""> 
1497															<div class="legend paragraph-micro-regular"> 
1498																	<p>${newsInfo.newsMedia.legend}</p> 
1499															</div> 
1500											</#if> 
1501											<#if newsInfo.newsMedia.credits != ""> 
1502															<p class="credits paragraph-micro-regular"> 
1503																	${newsInfo.newsMedia.credits} 
1504															</p>     
1505											</#if> 
1506 
1507                    </div> 
1508            </div> 
1509        </div> 
1510    </#if> 
1511    <style> 
1512        .ptb-news__read-news .news-featured-media { 
1513            padding: var(--space-xl) 0 var(--space-xl) 0; 
1514
1515 
1516        .ptb-news__read-news .news-featured-media .media-col { 
1517            position: relative; 
1518
1519 
1520        .ptb-news__read-news .news-featured-media img, 
1521        .ptb-news__read-news .news-featured-media video, 
1522        .ptb-news__read-news .news-featured-media iframe { 
1523            width: 100%; 
1524            max-height: 567px; 
1525            aspect-ratio: 16/9; 
1526            object-fit: cover; 
1527            border-radius: var(--border-radius-lg, 16px); 
1528
1529 
1530        .ptb-news__read-news .news-featured-media .banner-video-icons { 
1531            width: 100%; 
1532            height: 100%; 
1533            position: absolute; 
1534            top: 50%; 
1535            left: 50%; 
1536            transform: translate(-50%,-50%); 
1537            cursor: pointer; 
1538
1539 
1540        .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-thumb-iframe { 
1541            position: absolute; 
1542            width: 100%; 
1543            height: 100%; 
1544            object-fit: cover; 
1545
1546 
1547        .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play { 
1548            position: absolute; 
1549            top: 50%; 
1550            left: 50%; 
1551            transform: translate(-50%,-50%); 
1552
1553 
1554        body.high-contrast-active .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play path:nth-child(1) { 
1555            fill: black;   
1556
1557 
1558        body.high-contrast-active .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play path:nth-child(2) { 
1559            fill: white;   
1560
1561 
1562        .ptb-news__read-news .news-featured-media *:not(.breakpoint) { 
1563          margin: 0; 
1564
1565        .ptb-news__read-news .news-featured-media * { 
1566            padding: 0; 
1567            font-family: var(--font-family-base); 
1568            line-height: var(--line-height-xl); 
1569
1570 
1571        .ptb-news__read-news .news-featured-media .credits { 
1572            text-align: right; 
1573            color: var(--collor-neutral-dark-to-bright-200, #525252); 
1574            margin-bottom: var(--space-xxxs, 4px); 
1575            font-style: var(--font-style-italic, italic); 
1576            margin-top: var(--space-xxs, 8px); 
1577            margin-bottom: 0; 
1578
1579 
1580        body.high-contrast-active .ptb-news__read-news .news-featured-media .credits { 
1581            color: var(--text-secondary-default, #F8F8F8); 
1582
1583 
1584        .ptb-news__read-news .news-featured-media .legend { 
1585            margin-top: var(--space-xxs, 8px); 
1586            display: flex; 
1587            justify-content: space-between; 
1588
1589 
1590        .ptb-news__read-news .news-featured-media .legend, 
1591        .ptb-news__read-news .news-featured-media .legend * { 
1592            font-style: var(--font-style-italic, italic); 
1593            color: var(--collor-neutral-dark-to-bright-200, #525252); 
1594
1595			 
1596				.ptb-news__read-news .credit-legend .credit-legend-container { 
1597						display: flex; 
1598						justify-content: space-between; 
1599						flex-wrap: wrap; 
1600						gap: 8px; 
1601				}	 
1602 
1603        body.high-contrast-active .ptb-news__read-news .news-featured-media .legend, 
1604        body.high-contrast-active .ptb-news__read-news .news-featured-media .legend * { 
1605            color: var(--text-secondary-default, #F8F8F8); 
1606
1607 
1608        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
1609            .ptb-news__read-news .news-featured-media .credits { 
1610                text-align: left; 
1611
1612
1613    </style> 
1614 
1615    <script> 
1616        /* Manipulation video*/ 
1617        let videoIsPlaying = false; 
1618 
1619        const modalForClick = document.querySelector(".ptb-news__read-news .news-featured-media .banner-video-icons"); 
1620        const video = document.querySelector(".ptb-news__read-news .news-featured-media .media-col > :first-child"); 
1621        
1622        const playIcon = modalForClick && modalForClick.querySelector(".banner-video-icon-play"); 
1623        modalForClick && modalForClick.addEventListener("click", ()=>{ 
1624            if(video.tagName === "VIDEO") { 
1625                if(videoIsPlaying) { 
1626                    video.pause(); 
1627                    playIcon.style.display = ""; 
1628                    videoIsPlaying = false; 
1629                }  
1630                else { 
1631                    video.play(); 
1632                    playIcon.style.display = "none"; 
1633                    videoIsPlaying = true; 
1634
1635            }   
1636            else if(video.tagName === "IFRAME") { 
1637                const thumbYoutube = modalForClick.querySelector(".banner-video-thumb-iframe"); 
1638                if(videoIsPlaying) { 
1639                    video.contentWindow.postMessage('{"event":"command","func":"pauseVideo"}', '*'); 
1640                    playIcon.style.display = ""; 
1641                    videoIsPlaying = false; 
1642                }  
1643                else { 
1644									if (!video.getAttribute('src')) { 
1645                          const videoId = video.getAttribute('data-video-id'); 
1646                          const youtubeIframeUrl = 'https://www.youtube-nocookie.com/embed/' + videoId + '?si=PDNu4EIwtCuSHC1S&amp;controls=0&enablejsapi=1&rel=0'; 
1647                          video.setAttribute('src', youtubeIframeUrl); 
1648                          video.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'); 
1649 
1650                          video.onload = () => video.contentWindow.postMessage('{"event":"command","func":"playVideo"}', '*'); 
1651
1652                    thumbYoutube && (thumbYoutube.style.display = "none"); 
1653                    video.contentWindow.postMessage('{"event":"command","func":"playVideo"}', '*'); 
1654                    playIcon.style.display = "none"; 
1655                    videoIsPlaying = true; 
1656
1657            }       
1658        }); 
1659    </script> 
1660<#--/#if --> 
1661</#macro> 
1662<#-- ################################################################################################################## --> 
1663 
1664<#-- ############# Site de Crise - Notícia - Conteúdo da notícia ###################################################### --> 
1665 
1666<#macro renderNewsContent newsInfo> 
1667 
1668    <#assign targetStr = "<div class='paragraph_separator'><span class='dot'></span><span class='dot'></span><span class='dot'></span><span class='dot'></span></div>"> 
1669    <#assign content = newsInfo.newsContent?replace("<p></p>", targetStr, 'r')> 
1670    <#assign content = content?replace("<p> </p>", targetStr, 'r')> 
1671    <#assign content = content?replace("<p></p>", targetStr, 'r')> 
1672    <#assign content = content?replace("<p>&nbsp;</p>", targetStr, 'r')> 
1673  
1674     
1675    <div class="news-content breakpoint"> 
1676      <div class="col-1-12 md-col-1-8 sm-col-1-4"> 
1677        ${content} 
1678      </div> 
1679        <div class="audio-template audio-pause audio-unmuted" style="display:none"> 
1680            <div class="audio-button-play">  
1681                <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> 
1682                </svg> 
1683 
1684                <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> 
1685                </svg> 
1686            </div> 
1687            <div class="audio-sondwave">  
1688                <svg class="audio-sondwave-desktop" width="100%" height="100%" viewBox="0 0 590 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 
1689                    <g clip-path="url(#clip0_2625_8152)"> 
1690                    <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1691                    <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1692                    <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1693                    <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1694                    <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1695                    <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1696                    <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1697                    <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1698                    <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1699                    <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1700                    <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1701                    <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1702                    <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1703                    <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1704                    <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1705                    <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1706                    <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1707                    <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1708                    <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1709                    <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1710                    <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1711                    <line x1="107.072" y1="8.75" x2="107.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1712                    <line x1="112.234" y1="0.75" x2="112.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1713                    <line x1="117.395" y1="7.75" x2="117.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1714                    <line x1="122.557" y1="5.75" x2="122.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1715                    <line x1="127.717" y1="11.75" x2="127.717" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1716                    <line x1="132.879" y1="9.75" x2="132.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1717                    <line x1="138.041" y1="9.75" x2="138.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1718                    <line x1="142.17" y1="1.75" x2="142.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1719                    <line x1="147.33" y1="12.75" x2="147.33" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1720                    <line x1="151.75" y1="0.75" x2="151.75" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1721                    <line x1="156.91" y1="7.75" x2="156.91" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1722                    <line x1="162.072" y1="5.75" x2="162.072" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1723                    <line x1="167.234" y1="11.75" x2="167.234" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1724                    <line x1="172.395" y1="9.75" x2="172.395" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1725                    <line x1="177.557" y1="9.75" x2="177.557" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1726                    <line x1="181.686" y1="1.75" x2="181.686" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1727                    <line x1="186.848" y1="12.75" x2="186.848" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1728                    <line x1="192.008" y1="13.75" x2="192.008" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1729                    <line x1="197.17" y1="10.75" x2="197.17" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1730                    <line x1="202.33" y1="8.75" x2="202.33" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1731                    <line x1="207.492" y1="0.75" x2="207.492" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1732                    <line x1="212.652" y1="7.75" x2="212.652" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1733                    <line x1="217.814" y1="5.75" x2="217.814" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1734                    <line x1="222.977" y1="11.75" x2="222.977" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1735                    <line x1="228.137" y1="9.75" x2="228.137" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1736                    <line x1="233.299" y1="9.75" x2="233.299" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1737                    <line x1="237.428" y1="1.75" x2="237.428" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1738                    <line x1="242.588" y1="12.75" x2="242.588" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1739                    <line x1="247.75" y1="13.75" x2="247.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1740                    <line x1="252.91" y1="10.75" x2="252.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1741                    <line x1="258.072" y1="8.75" x2="258.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1742                    <line x1="263.234" y1="0.75" x2="263.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1743                    <line x1="268.395" y1="7.75" x2="268.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1744                    <line x1="273.557" y1="5.75" x2="273.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1745                    <line x1="278.717" y1="11.75" x2="278.717" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1746                    <line x1="283.879" y1="9.75" x2="283.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1747                    <line x1="289.041" y1="9.75" x2="289.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1748                    <line x1="293.17" y1="1.75" x2="293.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1749                    <line x1="298.33" y1="12.75" x2="298.33" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1750                    <line x1="302.75" y1="10.75" x2="302.75" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1751                    <line x1="307.912" y1="8.75" x2="307.912" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1752                    <line x1="313.072" y1="0.75" x2="313.072" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1753                    <line x1="318.234" y1="7.75" x2="318.234" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1754                    <line x1="323.395" y1="5.75" x2="323.395" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1755                    <line x1="328.557" y1="11.75" x2="328.557" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1756                    <line x1="333.719" y1="9.75" x2="333.719" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1757                    <line x1="338.879" y1="9.75" x2="338.879" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1758                    <line x1="343.008" y1="1.75" x2="343.008" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1759                    <line x1="348.17" y1="12.75" x2="348.17" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1760                    <line x1="353.33" y1="13.75" x2="353.33" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1761                    <line x1="358.492" y1="10.75" x2="358.492" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1762                    <line x1="363.652" y1="8.75" x2="363.652" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1763                    <line x1="368.814" y1="0.75" x2="368.814" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1764                    <line x1="373.977" y1="7.75" x2="373.977" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1765                    <line x1="379.137" y1="5.75" x2="379.137" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1766                    <line x1="384.299" y1="11.75" x2="384.299" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1767                    <line x1="389.459" y1="9.75" x2="389.459" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1768                    <line x1="394.621" y1="9.75" x2="394.621" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1769                    <line x1="398.75" y1="1.75" x2="398.75" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1770                    <line x1="403.912" y1="12.75" x2="403.912" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1771                    <line x1="408.33" y1="10.75" x2="408.33" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1772                    <line x1="413.492" y1="8.75" x2="413.492" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1773                    <line x1="418.654" y1="0.75" x2="418.654" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1774                    <line x1="423.814" y1="7.75" x2="423.814" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1775                    <line x1="428.977" y1="5.75" x2="428.977" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1776                    <line x1="434.137" y1="11.75" x2="434.137" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1777                    <line x1="439.299" y1="9.75" x2="439.299" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1778                    <line x1="444.461" y1="9.75" x2="444.461" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1779                    <line x1="448.59" y1="1.75" x2="448.59" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1780                    <line x1="453.75" y1="12.75" x2="453.75" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1781                    <line x1="458.912" y1="13.75" x2="458.912" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1782                    <line x1="464.072" y1="10.75" x2="464.072" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1783                    <line x1="469.234" y1="8.75" x2="469.234" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1784                    <line x1="474.395" y1="0.75" x2="474.395" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1785                    <line x1="479.557" y1="7.75" x2="479.557" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1786                    <line x1="484.719" y1="5.75" x2="484.719" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1787                    <line x1="489.879" y1="11.75" x2="489.879" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1788                    <line x1="495.041" y1="9.75" x2="495.041" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1789                    <line x1="500.201" y1="9.75" x2="500.201" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1790                    <line x1="504.33" y1="1.75" x2="504.33" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1791                    <line x1="509.492" y1="12.75" x2="509.492" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1792                    <line x1="513.912" y1="10.75" x2="513.912" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1793                    <line x1="519.072" y1="8.75" x2="519.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1794                    <line x1="524.234" y1="0.75" x2="524.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1795                    <line x1="529.395" y1="7.75" x2="529.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1796                    <line x1="534.557" y1="5.75" x2="534.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1797                    <line x1="539.719" y1="11.75" x2="539.719" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1798                    <line x1="544.879" y1="9.75" x2="544.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1799                    <line x1="550.041" y1="9.75" x2="550.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1800                    <line x1="554.17" y1="1.75" x2="554.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1801                    <line x1="559.332" y1="12.75" x2="559.332" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1802                    <line x1="564.492" y1="13.75" x2="564.492" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1803                    <line x1="569.654" y1="10.75" x2="569.654" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1804                    <line x1="574.814" y1="8.75" x2="574.814" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1805                    <line x1="579.977" y1="0.75" x2="579.977" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1806                    <line x1="585.137" y1="7.75" x2="585.137" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1807                    <line x1="590.299" y1="5.75" x2="590.299" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1808                    </g> 
1809                    <defs> 
1810                    <clipPath id="clip0_2625_8152"> 
1811                    <rect width="590" height="30" fill="white"/> 
1812                    </clipPath> 
1813                    </defs> 
1814                </svg> 
1815                <svg class="audio-sondwave-mobile" width="100%" height="100%" viewBox="0 0 102 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 
1816                    <g clip-path="url(#clip0_2625_8922)"> 
1817                    <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1818                    <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1819                    <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1820                    <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1821                    <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1822                    <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1823                    <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1824                    <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1825                    <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1826                    <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1827                    <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1828                    <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1829                    <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1830                    <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1831                    <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1832                    <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1833                    <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1834                    <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1835                    <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1836                    <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1837                    <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1838                    </g> 
1839                    <defs> 
1840                    <clipPath id="clip0_2625_8922"> 
1841                    <rect width="102" height="30" fill="white"/> 
1842                    </clipPath> 
1843                    </defs> 
1844                </svg> 
1845            </div> 
1846            <div class="audio-time paragraph-micro-bold">  </div> 
1847            <div class="audio-button-mute"> 
1848                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none"> 
1849                    <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"/> 
1850                </svg> 
1851            </div> 
1852        </div> 
1853    </div> 
1854     
1855			  <#if categoriesAsssetEntryResponse?? && categoriesAsssetEntryResponse?has_content && categoriesAsssetEntryResponse.taxonomyCategoryBriefs??> 
1856            <@renderNewsTags tagCategoryList NEWS_PAGE_NAME removeStartParameterWhenTagIsClicked includeRequestParams /> 
1857        </#if> 
1858    <style> 
1859 
1860        .ptb-news__read-news .news-content p { 
1861            margin-bottom: var(--space-md, 24px); 
1862
1863 
1864        .ptb-news__read-news .news-content strong { 
1865            font-weight: var(--font-weight-bold); 
1866
1867 
1868        .ptb-news__read-news .news-content em { 
1869            font-style: var(--font-style-italic); 
1870
1871 
1872        .ptb-news__read-news .news-content a:not(.stories-container *) { 
1873            font-family: var(--font-family-base); 
1874            font-style: var(--font-style-normal, normal); 
1875            font-weight: var(--font-weight-bold, 700); 
1876            font-size: var(--font-size-xs, 18px); 
1877            line-height: var(--line-height-xl, 160%); 
1878 
1879            color: #008542; 
1880
1881 
1882        body.high-contrast-active .ptb-news__read-news .news-content a { 
1883            color: #E4F7E8; 
1884
1885 
1886        .ptb-news__read-news .news-content ul { 
1887            padding-left: 27px; 
1888            margin-top: -16px; 
1889
1890 
1891        .ptb-news__read-news .news-content ul li::marker { 
1892            content: "■" !important; 
1893            color: var(--color-secondary-medium) !important; 
1894            font-size: var(--size-xxs); 
1895
1896 
1897        .ptb-news__read-news .news-content ul li { 
1898            color: var(--color-text-primary-default); 
1899            padding: 8px 0; 
1900 
1901            /*paragraph-sm-regular*/ 
1902            font-size: var(--font-size-xxs); 
1903            line-height: var(--line-height-xl); 
1904            font-weight: var(--font-weight-regular); 
1905            font-style: var(--font-style-normal); 
1906            text-decoration: var(--text-decoration-none); 
1907 
1908            margin-left: calc(-1* var(--space-sm)); 
1909            padding-left: var(--space-sm); 
1910
1911 
1912        .ptb-news__read-news .news-content ul li * { 
1913            color: var(--color-text-primary-default); 
1914            padding: 8px 0; 
1915 
1916            /*paragraph-sm-regular*/ 
1917            font-size: var(--font-size-xxs); 
1918            line-height: var(--line-height-xl); 
1919            font-weight: var(--font-weight-regular); 
1920            font-style: var(--font-style-normal); 
1921            text-decoration: var(--text-decoration-none); 
1922        }      
1923 
1924        @media screen and (min-width: 1024px) { 
1925          .ptb-news__read-news .news-content > * { 
1926            grid-column-start: 3; 
1927            grid-column-end: 11; 
1928
1929 
1930          <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" > 
1931            .ptb-news__read-news .news-content > *:has(img) { 
1932                grid-column-start: 2; 
1933                grid-column-end: 12; 
1934
1935
1936 
1937          </#if> 
1938
1939 
1940        .ptb-news__read-news .news-content figure { 
1941            margin-bottom: var(--space-sm, 16px); 
1942
1943 
1944        .ptb-news__read-news .news-content figure figcaption { 
1945            display: flex; 
1946            justify-content: space-between; 
1947            align-items: flex-start; 
1948            align-self: stretch; 
1949            margin-top: var(--space-xxs, 8px); 
1950            text-align: justify; 
1951
1952 
1953        .ptb-news__read-news .news-content figure figcaption, 
1954        .ptb-news__read-news .news-content figure figcaption * { 
1955            color: var(--color-neutral-700, #525252); 
1956            font-family: var(--font-family-base); 
1957            font-size: var(--font-size-xxxs, 14px); 
1958            font-style: var(--font-style-italic, italic); 
1959            font-weight: var(--font-weight-regular, 400); 
1960            line-height: var(--line-height-xl, 160%); 
1961
1962 
1963        body.high-contrast-active .ptb-news__read-news .news-content figure figcaption, 
1964        body.high-contrast-active .ptb-news__read-news .news-content figure figcaption * { 
1965            color: var(--text-secondary-default, #F8F8F8); 
1966
1967         
1968        .ptb-news__read-news .news-content figure figcaption br { 
1969            display: none; 
1970
1971 
1972        .ptb-news__read-news .news-content .embed-responsive { 
1973            width: 100% !important; 
1974            border-radius: var(--border-radius-md, 16px); 
1975            margin-bottom: var(--space-md, 16px); 
1976            aspect-ratio: 16/9; 
1977
1978			 
1979		.ptb-news__read-news .news-content img.first-news-image { 
1980            max-width: 1008px; 
1981			max-height: 567px!important; 
1982            height: 567px !important; 
1983			object-fit: cover 
1984
1985 
1986        .ptb-news__read-news .news-content img { 
1987            width: 100%; 
1988			height: auto; 
1989			max-width: 800px ; 
1990			max-height: 450px; 
1991            display: block !important; 
1992            margin-left: auto !important; 
1993            margin-right: auto !important; 
1994            border-radius: var(--border-radius-md, 16px); 
1995
1996			 
1997        <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Artigo" > 
1998            .ptb-news__read-news .news-content img  { 
1999                aspect-ratio: 16/9; 
2000
2001        </#if> 
2002 
2003        .ptb-news__read-news .news-content .paragraph_separator { 
2004            display: flex; 
2005            width: 100%; 
2006            height: fit-content; 
2007            justify-content: center; 
2008            gap: 6px; 
2009
2010 
2011        .ptb-news__read-news .news-content .paragraph_separator .dot { 
2012            height: var(--size-micro, 4px); 
2013            width: var(--size-micro, 4px); 
2014            background-color: #959595; 
2015            border-radius: 100%; 
2016            display: inline-block; 
2017
2018 
2019        .ptb-news__read-news .news-content *:not(.stories-container *) { 
2020            font-family: var(--font-family-base); 
2021            font-style: var(--font-style-normal, normal); 
2022            font-weight: var(--font-weight-regular, 400); 
2023            font-size: var(--font-size-xs, 18px); 
2024            line-height: var(--line-height-xl, 160%); 
2025            color: var(--color-neutral-800, #373737); 
2026
2027 
2028        body.high-contrast-active .ptb-news__read-news .news-content * { 
2029            color: var(--text-primary-default, var(--color-neutral-100)); 
2030
2031 
2032        .ptb-news__read-news .news-content h1, 
2033        .ptb-news__read-news .news-content h1 *, 
2034        .ptb-news__read-news .news-content h2, 
2035        .ptb-news__read-news .news-content h2 *, 
2036        .ptb-news__read-news .news-content h3, 
2037        .ptb-news__read-news .news-content h3 *, 
2038        .ptb-news__read-news .news-content h4, 
2039        .ptb-news__read-news .news-content h4 *, 
2040        .ptb-news__read-news .news-content h5, 
2041        .ptb-news__read-news .news-content h5 *, 
2042        .ptb-news__read-news .news-content h6, 
2043        .ptb-news__read-news .news-content h6 * { 
2044            color: var(--color-neutral-800, #373737) !important; 
2045
2046 
2047        body.high-contrast-active .ptb-news__read-news .news-content h1, 
2048        body.high-contrast-active .ptb-news__read-news .news-content h1 *, 
2049        body.high-contrast-active .ptb-news__read-news .news-content h2, 
2050        body.high-contrast-active .ptb-news__read-news .news-content h2 *, 
2051        body.high-contrast-active .ptb-news__read-news .news-content h3, 
2052        body.high-contrast-active .ptb-news__read-news .news-content h3 *, 
2053        body.high-contrast-active .ptb-news__read-news .news-content h4, 
2054        body.high-contrast-active .ptb-news__read-news .news-content h4 *, 
2055        body.high-contrast-active .ptb-news__read-news .news-content h5, 
2056        body.high-contrast-active .ptb-news__read-news .news-content h5 *, 
2057        body.high-contrast-active .ptb-news__read-news .news-content h6, 
2058        body.high-contrast-active .ptb-news__read-news .news-content h6 * { 
2059            color: var(--text-primary-default, var(--color-neutral-100)) !important; 
2060
2061 
2062        .ptb-news__read-news .news-content h1:last-child, 
2063        .ptb-news__read-news .news-content h2:last-child, 
2064        .ptb-news__read-news .news-content h3:last-child, 
2065        .ptb-news__read-news .news-content h4:last-child, 
2066        .ptb-news__read-news .news-content h5:last-child, 
2067        .ptb-news__read-news .news-content h5:last-child, 
2068        .ptb-news__read-news .news-content h6:last-child, 
2069        .ptb-news__read-news .news-content p:last-child { 
2070            padding-bottom: 0 !important; 
2071
2072 
2073        .ptb-news__read-news .news-content h1, 
2074        .ptb-news__read-news .news-content h1 * { 
2075            font-size: var(--font-size-xxl) !important; 
2076            line-height: var(--line-height-sm) !important; 
2077            font-weight: var(--font-weight-bold) !important; 
2078            font-style: var(--font-style-normal) !important; 
2079            text-decoration: var(--text-decoration-none) !important; 
2080
2081 
2082        .ptb-news__read-news .news-content h2, 
2083        .ptb-news__read-news .news-content h2 * { 
2084             
2085            font-size: var(--font-size-xl) !important; 
2086            line-height: var(--line-height-sm) !important; 
2087            font-weight: var(--font-weight-bold) !important; 
2088            font-style: var(--font-style-normal) !important; 
2089            text-decoration: var(--text-decoration-none) !important; 
2090 
2091
2092 
2093        .ptb-news__read-news .news-content h2 { 
2094            margin-top: 48px !important; 
2095           margin-bottom: var(--space-xl, 40px) !important; 
2096 
2097
2098 
2099        .ptb-news__read-news .news-content h3, 
2100        .ptb-news__read-news .news-content h3 * { 
2101            font-size: var(--font-size-lg) !important; 
2102            line-height: var(--line-height-sm) !important; 
2103            font-weight: var(--font-weight-bold) !important; 
2104            font-style: var(--font-style-normal) !important; 
2105            text-decoration: var(--text-decoration-none) !important; 
2106
2107 
2108        .ptb-news__read-news .news-content h3 { 
2109            margin-bottom: var(--space-sm, 16px) !important; 
2110            margin-top: 48px !important; 
2111
2112 
2113        .ptb-news__read-news .news-content h4, 
2114        .ptb-news__read-news .news-content h4 * { 
2115            font-size: var(--font-size-md) !important; 
2116            line-height: var(--line-height-md) !important; 
2117            font-weight: var(--font-weight-bold) !important; 
2118            font-style: var(--font-style-normal) !important; 
2119            text-decoration: var(--text-decoration-none) !important; 
2120
2121 
2122        .ptb-news__read-news .news-content h4 { 
2123            margin-top: 48px !important; 
2124            margin-bottom: var(--space-sm, 16px) !important; 
2125
2126 
2127        .ptb-news__read-news .news-content h5, 
2128        .ptb-news__read-news .news-content h5 * { 
2129            font-size: var(--font-size-sm) !important; 
2130            line-height: var(--line-height-md) !important; 
2131            font-weight: var(--font-weight-bold) !important; 
2132            font-style: var(--font-style-normal) !important; 
2133            text-decoration: var(--text-decoration-none) !important; 
2134
2135 
2136        .ptb-news__read-news .news-content h5 { 
2137            margin-top: 48px !important; 
2138            margin-bottom: var(--space-sm, 16px) !important; 
2139
2140 
2141        .ptb-news__read-news .news-content table { 
2142            border-collapse: collapse; 
2143            border: none; 
2144            width: 100% !important; 
2145            margin: var(--space-md, 24px) 0; 
2146
2147 
2148        .ptb-news__read-news .news-content table * { 
2149            font-size: var(--font-size-xxs, 16px); 
2150            font-style: var(--font-style-normal, normal); 
2151            font-weight: var(--font-weight-regular, 400); 
2152            line-height: var(--line-height-xl, 160%); 
2153            color: var(--color-neutral-800, #373737); 
2154            border: 0; 
2155
2156 
2157        body.high-contrast-active .ptb-news__read-news .news-content table * { 
2158            color: var(--text-primary-default, var(--color-neutral-100)); 
2159
2160 
2161        .ptb-news__read-news .news-content table tbody > :first-child, 
2162        .ptb-news__read-news .news-content table tbody > :first-child * { 
2163            font-weight: var(--font-weight-bold, 700); 
2164            flex: 1 0 0; 
2165            background: var(--background-Surface-level-02, #F8F8F8); 
2166
2167 
2168        body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child, 
2169        body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child * { 
2170            background: #373737; 
2171
2172         
2173        .ptb-news__read-news .news-content table tbody { 
2174            display: flex; 
2175            flex-direction: column; 
2176
2177 
2178        .ptb-news__read-news .news-content table tbody * { 
2179            display: flex; 
2180            height: 100%; 
2181            align-items: center; 
2182            flex: 1 0 0; 
2183
2184	             
2185        .ptb-news__read-news .news-content table tbody tr * {          
2186            padding: 23px var(--space-lg, 32px); 
2187        }	 
2188             
2189 
2190        .ptb-news__read-news .news-content table tbody tr { 
2191            border-radius: var(--border-radius-md); 
2192            border: var(--border-width-hairline, 1px) solid #EEEEEE; 
2193
2194 
2195        body.high-contrast-active .ptb-news__read-news .news-content table tbody tr { 
2196            border: var(--border-width-hairline, 1px) solid #525252; 
2197
2198 
2199        .ptb-news__read-news .news-content table tbody tr:not(:last-child) { 
2200            border-bottom-left-radius: 0; 
2201            border-bottom-right-radius: 0; 
2202
2203 
2204        .ptb-news__read-news .news-content table tbody tr:not(:first-child) { 
2205            border-top-left-radius: 0; 
2206            border-top-right-radius: 0; 
2207            border-top: none; 
2208
2209 
2210        .ptb-news__read-news .news-content table tbody tr td:not(:last-child) { 
2211            border-right: var(--border-width-hairline, 1px) solid #EEEEEE; 
2212
2213 
2214        body.high-contrast-active .ptb-news__read-news .news-content table tbody tr td:not(:last-child) { 
2215            border-right: var(--border-width-hairline, 1px) solid #525252; 
2216
2217 
2218        .ptb-news__read-news .news-content table tbody tr:first-child td { 
2219            border-top: var(--border-width-hairline, 1px) solid #EEEEEE; 
2220            border-bottom: var(--border-width-hairline, 1px) solid #EEEEEE; 
2221
2222 
2223        body.high-contrast-active .ptb-news__read-news .news-content table tbody tr:first-child td { 
2224            border-top: var(--border-width-hairline, 1px) solid #525252; 
2225            border-bottom: var(--border-width-hairline, 1px) solid #525252; 
2226
2227 
2228        .ptb-news__read-news .news-content table tbody tr td:first-child { 
2229            padding-left: 0; 
2230
2231 
2232        .ptb-news__read-news .news-content table tbody tr td:last-child{ 
2233            padding-right: 0; 
2234
2235 
2236        .ptb-news__read-news .news-content audio { 
2237            display: none; 
2238
2239 
2240        .ptb-news__read-news .news-content .audio-template { 
2241            display: flex; 
2242            padding: var(--space-sm, 16px); 
2243            align-items: center; 
2244            gap: var(--space-md, 24px); 
2245            align-self: stretch; 
2246            border-radius: var(--border-radius-lg, 16px); 
2247            border: var(--border-width-hairline, 1px) solid var(--border-color-mid); 
2248            background: var(--background-card-default, #FFF); 
2249            max-height: var(--size-giant, 72px); 
2250            margin: 48px 0; 
2251
2252 
2253        body.high-contrast-active .ptb-news__read-news .news-content .audio-template { 
2254            background: var(--background-card-default, #010101); 
2255            border: var(--border-width-hairline, 1px) solid #525252; 
2256
2257 
2258        .ptb-news__read-news .news-content .audio-template .audio-button-play { 
2259            display: flex; 
2260            width: var(--size-xl, 40px); 
2261            height: var(--size-xl, 40px); 
2262            justify-content: center; 
2263            align-items: center; 
2264            flex-grow: 0; 
2265            flex-shrink: 0; 
2266            cursor: pointer; 
2267
2268 
2269        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon, 
2270        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon { 
2271            fill: #FFFFFF; 
2272
2273 
2274        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon path, 
2275        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon path { 
2276            fill: #010101; 
2277
2278 
2279        .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-play-icon { 
2280            display: block; 
2281
2282 
2283        .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-pause-icon { 
2284            display: none; 
2285
2286 
2287        .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-play-icon { 
2288            display: none; 
2289
2290 
2291        .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-pause-icon { 
2292            display: block; 
2293
2294 
2295        .ptb-news__read-news .news-content .audio-template .audio-sondwave { 
2296            display: flex; 
2297            flex-direction: column; 
2298            align-items: flex-start; 
2299            gap: var(--space-xxs, 8px); 
2300            flex: 1 0 0; 
2301            height: 100%; 
2302            flex-grow: 1; 
2303            flex-shrink: 1; 
2304
2305 
2306        .ptb-news__read-news .news-content .audio-template .audio-sondwave line { 
2307            stroke: #008542; 
2308
2309 
2310        .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active { 
2311            stroke: #90EE90; 
2312
2313 
2314        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line { 
2315            stroke: #E4F7E8; 
2316
2317 
2318        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active { 
2319            stroke: #666666; 
2320
2321 
2322        .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile { 
2323            display: none; 
2324
2325 
2326        .ptb-news__read-news .news-content .audio-template .audio-time { 
2327            display: flex; 
2328            flex-direction: column; 
2329            align-items: flex-start; 
2330            gap: var(--space-xxs, 8px); 
2331            flex: 1 0 0; 
2332            color: var(--text-primary-accent, #008542); 
2333            text-align: center; 
2334            font-family: var(--font-family-base); 
2335            line-height: 124% !important;  
2336            flex-grow: 0; 
2337            flex-shrink: 0; 
2338
2339 
2340        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-time {     
2341            color: var(--text-primary-accent, #E4F7E8); 
2342
2343 
2344        .ptb-news__read-news .news-content .audio-template .audio-button-mute { 
2345            width: var(--size-lg, 32px); 
2346            height: var(--size-lg, 32px); 
2347            flex-grow: 0; 
2348            flex-shrink: 0; 
2349            cursor: pointer; 
2350
2351 
2352        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-mute svg path { 
2353            stroke: white; 
2354            fill: none; 
2355
2356 
2357        .ptb-news__read-news .news-content .audio-template.audio-muted .audio-button-mute { 
2358            opacity: 0.6; 
2359
2360 
2361        @media screen and (max-width: 1280px) { 
2362            .ptb-news__read-news .news-content img.first-news-image { 
2363                height: auto!important; 
2364			    object-fit: cover 
2365
2366					 
2367		    .ptb-news__read-news .news-content img { 
2368                width: 100%; 
2369				height: auto; 
2370				max-width: 100% ; 
2371				max-height: auto; 
2372                object-fit: cover; 
2373
2374
2375         
2376        @media screen and (max-width: 1023px) and (min-width: ${MAX_MOBILE_WIDTH}px) { 
2377            .ptb-news__read-news .news-content > * { 
2378                grid-column-start: 1; 
2379                grid-column-end: 9; 
2380            }        
2381
2382         
2383 
2384        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
2385 
2386            .ptb-news__read-news .news-content * { 
2387                font-size: var(--font-size-xxs, 16px); 
2388
2389 
2390             
2391            .ptb-news__read-news .news-content > * { 
2392                grid-column-start: 1; 
2393                grid-column-end: 5; 
2394
2395             
2396 
2397            .ptb-news__read-news .news-content h1, 
2398            .ptb-news__read-news .news-content h1 * { 
2399                font-size: var(--font-size-xl) !important; 
2400                line-height: var(--line-height-sm) !important; 
2401                font-weight: var(--font-weight-bold) !important; 
2402                font-style: var(--font-style-normal) !important; 
2403                text-decoration: var(--text-decoration-none) !important; 
2404 
2405
2406 
2407            .ptb-news__read-news .news-content h2, 
2408            .ptb-news__read-news .news-content h2 * { 
2409                font-size: var(--font-size-lg) !important; 
2410                line-height: var(--line-height-sm) !important; 
2411                font-weight: var(--font-weight-bold) !important; 
2412                font-style: var(--font-style-normal) !important; 
2413                text-decoration: var(--text-decoration-none) !important; 
2414
2415 
2416            .ptb-news__read-news .news-content h2 { 
2417                margin-bottom: var(--space-md, 24px) !important; 
2418
2419 
2420            .ptb-news__read-news .news-content h3, 
2421            .ptb-news__read-news .news-content h3 * { 
2422                font-size: var(--font-size-md) !important; 
2423                line-height: var(--line-height-sm) !important; 
2424                font-weight: var(--font-weight-bold) !important; 
2425                font-style: var(--font-style-normal) !important; 
2426                text-decoration: var(--text-decoration-none) !important; 
2427
2428 
2429            .ptb-news__read-news .news-content h3 { 
2430                margin-top: var(--space-xxs, 8px) !important; 
2431
2432 
2433            .ptb-news__read-news .news-content h4,  
2434            .ptb-news__read-news .news-content h4 * { 
2435                font-size: var(--font-size-sm) !important; 
2436                line-height: var(--line-height-md) !important; 
2437                font-weight: var(--font-weight-bold) !important; 
2438                font-style: var(--font-style-normal) !important; 
2439                text-decoration: var(--text-decoration-none) !important; 
2440
2441 
2442            .ptb-news__read-news .news-content h5, 
2443            .ptb-news__read-news .news-content h5 * { 
2444                font-size: var(--font-size-xs) !important; 
2445                line-height: var(--line-height-md) !important; 
2446                font-weight: var(--font-weight-bold) !important; 
2447                font-style: var(--font-style-normal) !important; 
2448                text-decoration: var(--text-decoration-none) !important; 
2449
2450 
2451            .ptb-news__read-news .news-content figure figcaption { 
2452                flex-direction: column; 
2453                gap: var(--space-xxs, 8px); 
2454
2455 
2456            .ptb-news__read-news .news-content figure figcaption, 
2457            .ptb-news__read-news .news-content figure figcaption * { 
2458                font-size: var(--font-size-micro, 12px); 
2459
2460 
2461            .ptb-news__read-news .news-content table { 
2462                margin-top: var(--space-xxs, 8px); 
2463                margin-bottom: var(--space-lg, 32px); 
2464
2465 
2466            .ptb-news__read-news .news-content table * { 
2467                font-size: var(--font-size-micro, 12px); 
2468                line-height: 19.2%; 
2469
2470 
2471            .ptb-news__read-news .news-content table tbody * { 
2472                height: 43px; 
2473                padding: var(--space-xs, 12px); 
2474
2475 
2476            .ptb-news__read-news .news-content .audio-template { 
2477                margin-top: var(--space-xxs, 8px); 
2478                margin-bottom: var(--space-lg, 32px); 
2479            }            
2480
2481 
2482        @media screen and (max-width: 500px) { 
2483             .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-desktop { 
2484                display: none; 
2485
2486 
2487            .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile { 
2488                display: block; 
2489
2490
2491    </style> 
2492 
2493    <style> 
2494.ws-carousel p { 
2495    margin: var(--space-none, 0) !important; 
2496
2497 
2498.ws-carousel { 
2499    display: flex; 
2500    flex-direction: column; 
2501    gap: var(--space-lg, 32px); 
2502    margin: var(--space-big, 72px) auto; 
2503
2504 
2505.ws-carousel .ws-carousel-header { 
2506    display: flex; 
2507    justify-content: space-between; 
2508
2509 
2510.ws-carousel .ws-carousel-header .h2, 
2511.ws-carousel .ws-carousel-header h2 { 
2512    color: var(--color-neutral-800, #373737) !important; 
2513    font-family: var(--font-family-base), "Petrobras Sans" !important; 
2514    line-height: 100% !important; 
2515    margin: var(--space-none, 0) ! important; 
2516
2517 
2518.ws-carousel .ws-carousel-header .nav-buttons { 
2519    display: flex; 
2520    justify-content: space-between; 
2521    gap: var(--space-xxs, 8px); 
2522
2523 
2524.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.left-arrow { 
2525    transform: scaleX(-1); 
2526
2527 
2528.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow { 
2529    cursor: pointer; 
2530
2531 
2532.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive { 
2533    cursor: not-allowed; 
2534
2535 
2536 
2537.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow path { 
2538    transition: stroke 0.3s ease; 
2539
2540 
2541.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive path { 
2542    stroke: #bababa; 
2543
2544 
2545.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.active path { 
2546    stroke: #008542; 
2547
2548 
2549 
2550.ws-carousel .ws-carousel-body { 
2551    overflow-x: scroll; 
2552    -ms-overflow-style: none; 
2553    -scrollbar-width: none; 
2554
2555 
2556.ws-carousel .ws-carousel-body::-webkit-scrollbar { 
2557    display: none; 
2558
2559 
2560.ws-carousel .ws-carousel-body .ws-container { 
2561    display: flex; 
2562    gap: var(--space-lg, 32px); 
2563
2564 
2565.ws-carousel .ws-carousel-body .ws-container .ws-item { 
2566    min-width: 300px; 
2567    max-width: 300px; 
2568    min-height: 400px; 
2569    max-height: 400px; 
2570    position: relative; 
2571    overflow: hidden; 
2572    border-radius: var(--border-radius-lg); 
2573    box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12); 
2574
2575 
2576.ws-carousel .ws-carousel-body .ws-container .ws-item:hover { 
2577    cursor: pointer; 
2578
2579 
2580.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-image { 
2581    position: absolute; 
2582    top: 50%; 
2583    left: 50%; 
2584    transform: translate(-50%, -50%); 
2585    height: 100%; 
2586
2587 
2588.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-overlay { 
2589    position: absolute; 
2590    background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.8) 100%); 
2591    width: 100%; 
2592    height: 100%; 
2593
2594 
2595.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label { 
2596    position: absolute; 
2597    margin: var(--space-md, 24px) 0 0 var(--space-md, 24px); 
2598    border-radius: var(--border-radius-pill, 100%); 
2599    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); 
2600    box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10); 
2601    padding: var(--space-micro, 2px) var(--space-xs, 12px); 
2602 
2603    color: var(--Default-sup-green-water, #006B65); 
2604    font-family: var(--font-family-base), "Petrobras Sans"; 
2605    font-size: var(--font-size-xxxs, 12px); 
2606    font-style: normal; 
2607    font-weight: var(--font-weight-regular, 400); 
2608    line-height: var(--line-height-sm, 120%); 
2609    color: #006B65; 
2610
2611 
2612.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content { 
2613    position: relative; 
2614    z-index: 1; 
2615    height: 100%; 
2616 
2617    display: flex; 
2618    padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px); 
2619    flex-direction: column; 
2620    justify-content: flex-end; 
2621    align-items: flex-start; 
2622    gap: var(--space-md, 24px); 
2623
2624 
2625.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content .h5 { 
2626    overflow: hidden; 
2627    color: #FFF !important; 
2628    text-overflow: ellipsis; 
2629    margin: 0 !important; 
2630    font-family: var(--font-family-base), "Petrobras Sans" !important; 
2631
2632 
2633@media (max-width: 768px) { 
2634 
2635    .ws-carousel .ws-carousel-header .nav-buttons { 
2636        gap: var(--space-micro, 12px); 
2637
2638 
2639    .ws-carousel .ws-carousel-header .nav-buttons .nav-arrow { 
2640        width: 44px; 
2641        height: 44px; 
2642
2643 
2644    .ws-carousel .ws-carousel-header { 
2645        flex-direction: column; 
2646        align-items: flex-start; 
2647        gap: var(--space-lg, 32px); 
2648
2649 
2650    .ws-carousel .ws-carousel-header .h2 { 
2651        font-size: var(--font-size-lg, 24px) !important; 
2652
2653 
2654    .ws-carousel .ws-carousel-body .ws-container { 
2655        gap: var(--space-lg, 32px); 
2656
2657 
2658    .ws-carousel .ws-carousel-body .ws-container .ws-item { 
2659        min-width: 225px; 
2660        max-width: 225px; 
2661        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; 
2662        box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12); 
2663
2664
2665    </style> 
2666 
2667<#--  Exibição de um único story com naveação direto no conteúdo  --> 
2668<style> 
2669  .stories-container * { 
2670    margin: 0; 
2671    padding: 0; 
2672    box-sizing: border-box; 
2673
2674 
2675  .stories-container { 
2676    position: relative; 
2677    /* 
2678      Largura das duas setas com position absolute: 64px 
2679      Largura das somas margens das setas: 48px 
2680 
2681    */ 
2682    width: calc(100vw - 64px - 48px); 
2683    max-width: 400px; 
2684    height: auto; 
2685    aspect-ratio: 59/105; 
2686    border-radius: 8px; 
2687
2688 
2689  .header-container { 
2690    position: absolute; 
2691    top: 0; 
2692    left: 0; 
2693    right: 0; 
2694    z-index: 3; 
2695    padding: 16px 16px 0 16px; 
2696    display: flex; 
2697    flex-direction: column; 
2698    gap: 24px; 
2699
2700 
2701  .story-header { 
2702    display: flex; 
2703    flex-direction: column; 
2704    gap: 8px; 
2705
2706 
2707  .progress-bars { 
2708    display: flex; 
2709    gap: 5px; 
2710    width: 100%; 
2711
2712 
2713  .progress-bar { 
2714    height: 3px; 
2715    background-color: rgba(255, 255, 255, 0.3); 
2716    flex-grow: 1; 
2717    border-radius: 3px; 
2718    overflow: hidden; 
2719
2720 
2721  .story-progress { 
2722    height: 100%; 
2723    background-color: white; 
2724    width: 0%; 
2725    transition: width 0.2s linear; 
2726
2727 
2728  .story-progress.completed { 
2729    width: 100% !important; 
2730
2731 
2732  .story-progress.active { 
2733    animation: progress 8s linear forwards; 
2734
2735 
2736  @keyframes progress { 
2737    from { 
2738      width: 0%; 
2739
2740 
2741    to { 
2742      width: 100%; 
2743
2744
2745 
2746  .story-slide { 
2747    position: absolute; 
2748    width: 100%; 
2749    height: 100%; 
2750    display: none; 
2751    flex-direction: column; 
2752    justify-content: center; 
2753    align-items: center; 
2754    color: white; 
2755    overflow: hidden; 
2756    border-radius: 8px; 
2757
2758 
2759  .story-slide::before { 
2760    position: absolute; 
2761    z-index: 2; 
2762    content: ''; 
2763    width: 100%; 
2764    height: 100%; 
2765    background: linear-gradient(180deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0) 100%); 
2766
2767 
2768  .story-slide.active { 
2769    display: flex; 
2770
2771 
2772  .story-image { 
2773    width: 100%; 
2774    height: 100% !important; 
2775    object-fit: cover; 
2776    position: absolute; 
2777    top: 0; 
2778    left: 0; 
2779    z-index: 1; 
2780    aspect-ratio: auto !important; 
2781
2782 
2783  .story-content { 
2784    position: relative; 
2785    z-index: 2; 
2786    color: white; 
2787    width: 100%; 
2788    display: flex; 
2789    flex-direction: column; 
2790    justify-content: flex-end; 
2791    height: 100%; 
2792    padding: 16px 24px 64px 24px; 
2793
2794 
2795  .story-content .content-wrapper { 
2796    display: flex; 
2797    flex-direction: column; 
2798    align-items: flex-start; 
2799    gap: 24px; 
2800    align-self: stretch; 
2801    padding: 0 16px; 
2802
2803 
2804  .story-content .content-wrapper.no-padding { 
2805    padding: 0; 
2806
2807 
2808  .story-title { 
2809    display: flex; 
2810    padding: 8px; 
2811    flex-direction: column; 
2812    align-items: flex-start; 
2813    align-self: stretch; 
2814    backdrop-filter: blur(3px); 
2815
2816 
2817  .story-title.button { 
2818    display: none; 
2819
2820 
2821  .story-title.dark-theme, 
2822  .story-description.dark-theme { 
2823    background: rgba(13, 19, 16, 0.80); 
2824    color: #FFF; 
2825
2826 
2827  .story-description.dark-theme p { 
2828    color: #FFF !important; 
2829
2830 
2831  .story-title.light-theme, 
2832  .story-description.light-theme { 
2833    background: rgba(255, 255, 255, 0.90); 
2834    color: #373737; 
2835
2836 
2837  .story-title.green-theme, 
2838  .story-description.green-theme { 
2839    background: rgba(0, 133, 66, 0.80); 
2840    color: #FFF; 
2841
2842 
2843  .story-title .title-text { 
2844    align-self: stretch; 
2845    font-size: 24px; 
2846    font-style: normal; 
2847    font-weight: 700; 
2848    line-height: 100%; 
2849
2850 
2851  .story-title .mischievous { 
2852    color: #FDC82F; 
2853    font-size: 24px; 
2854    font-style: normal; 
2855    font-weight: 700; 
2856    line-height: 100%; 
2857    width: 24px; 
2858
2859 
2860  .description-and-link { 
2861    width: 100%; 
2862    display: flex; 
2863    flex-direction: column; 
2864    gap: 8px; 
2865
2866 
2867  .story-description { 
2868    padding: 8px; 
2869    width: 100%; 
2870
2871 
2872  .story-description p { 
2873    font-size: 16px; 
2874    font-weight: 400; 
2875    line-height: 120%; 
2876    margin-bottom: 0; 
2877
2878 
2879  .story-description.button { 
2880    padding: 0; 
2881    display: flex; 
2882    justify-content: center; 
2883
2884 
2885  .story-description.button p a { 
2886    text-decoration: underline; 
2887    font-weight: bold; 
2888
2889 
2890  .story-description.button p a { 
2891    background: #FFF; 
2892    width: fit-content; 
2893    height: 48px; 
2894    display: flex; 
2895    justify-content: center; 
2896    align-items: center; 
2897    gap: 16px; 
2898    text-decoration: none; 
2899    color: #008542; 
2900    border-radius: 100px; 
2901    padding: 0 24px; 
2902    box-shadow: 0px 4px 16px 0px #00000029; 
2903    font-family: 'Petrobras Sans'; 
2904    font-weight: 700; 
2905    font-size: 16px; 
2906    line-height: 144%; 
2907    letter-spacing: 0%; 
2908
2909 
2910  .story-description.button p a::after { 
2911    content: ''; 
2912    display: inline-block; 
2913    flex-shrink: 0; 
2914    width: 20px; 
2915    height: 20px; 
2916    vertical-align: middle; 
2917    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwLjQ2OTUgMTIuMzU5MkMxMC4zMDk4IDEyLjUxODkgMTAuMzA5OCAxMi43Nzc5IDEwLjQ2OTUgMTIuOTM3N0MxMC42MjkzIDEzLjA5NzUgMTAuODg4MyAxMy4wOTc1IDExLjA0ODEgMTIuOTM3N0wxMC40Njk1IDEyLjM1OTJaTTEzLjQwNzIgMTBMMTMuNjk2NSAxMC4yODkzQzEzLjg1NjMgMTAuMTI5NSAxMy44NTYzIDkuODcwNDkgMTMuNjk2NSA5LjcxMDczTDEzLjQwNzIgMTBaTTExLjA0ODEgNy4wNjIyOUMxMC44ODgzIDYuOTAyNTMgMTAuNjI5MyA2LjkwMjUzIDEwLjQ2OTUgNy4wNjIyOUMxMC4zMDk4IDcuMjIyMDUgMTAuMzA5OCA3LjQ4MTA3IDEwLjQ2OTUgNy42NDA4M0wxMS4wNDgxIDcuMDYyMjlaTTcuMTU3MjMgOS41OTA5MUM2LjkzMTI5IDkuNTkwOTEgNi43NDgxNCA5Ljc3NDA3IDYuNzQ4MTQgMTBDNi43NDgxNCAxMC4yMjU5IDYuOTMxMjkgMTAuNDA5MSA3LjE1NzIzIDEwLjQwOTFWOS41OTA5MVpNMTcuMzczMSAxMEMxNy4zNzMxIDEzLjkxNjIgMTQuMTk4NCAxNy4wOTA5IDEwLjI4MjIgMTcuMDkwOVYxNy45MDkxQzE0LjY1MDMgMTcuOTA5MSAxOC4xOTEzIDE0LjM2ODEgMTguMTkxMyAxMEgxNy4zNzMxWk0xMC4yODIyIDE3LjA5MDlDNi4zNjYwMyAxNy4wOTA5IDMuMTkxMzIgMTMuOTE2MiAzLjE5MTMyIDEwSDIuMzczMTRDMi4zNzMxNCAxNC4zNjgxIDUuOTE0MTYgMTcuOTA5MSAxMC4yODIyIDE3LjkwOTFWMTcuMDkwOVpNMy4xOTEzMiAxMEMzLjE5MTMyIDYuMDgzOCA2LjM2NjAzIDIuOTA5MDkgMTAuMjgyMiAyLjkwOTA5VjIuMDkwOTFDNS45MTQxNiAyLjA5MDkxIDIuMzczMTQgNS42MzE5MyAyLjM3MzE0IDEwSDMuMTkxMzJaTTEwLjI4MjIgMi45MDkwOUMxNC4xOTg0IDIuOTA5MDkgMTcuMzczMSA2LjA4MzggMTcuMzczMSAxMEgxOC4xOTEzQzE4LjE5MTMgNS42MzE5MyAxNC42NTAzIDIuMDkwOTEgMTAuMjgyMiAyLjA5MDkxVjIuOTA5MDlaTTExLjA0ODEgMTIuOTM3N0wxMy42OTY1IDEwLjI4OTNMMTMuMTE4IDkuNzEwNzNMMTAuNDY5NSAxMi4zNTkyTDExLjA0ODEgMTIuOTM3N1pNMTMuNjk2NSA5LjcxMDczTDExLjA0ODEgNy4wNjIyOUwxMC40Njk1IDcuNjQwODNMMTMuMTE4IDEwLjI4OTNMMTMuNjk2NSA5LjcxMDczWk03LjE1NzIzIDEwLjQwOTFIMTMuNDA3MlY5LjU5MDkxSDcuMTU3MjNWMTAuNDA5MVoiIGZpbGw9IiMwMDg1NDIiLz4KPC9zdmc+Cg=="); 
2918    background-size: contain; 
2919    background-repeat: no-repeat; 
2920    background-position: center; 
2921
2922 
2923  .story-description a { 
2924    position: relative; 
2925    z-index: 3; 
2926    color: #FFF; 
2927    text-decoration: underline; 
2928
2929 
2930  .nav-area-container { 
2931    position: absolute; 
2932    top: 0; 
2933    left: 0; 
2934    right: 0; 
2935    bottom: 0; 
2936    display: flex; 
2937    justify-content: space-between; 
2938    align-items: center; 
2939    z-index: 1; 
2940    /* pointer-events: none; */ 
2941
2942 
2943  .nav-area { 
2944    height: 100%; 
2945    width: 50%; 
2946    display: flex; 
2947    align-items: center; 
2948
2949 
2950  .nav-area .arrow, 
2951  .nav-area .restart-icon { 
2952    position: absolute; 
2953
2954 
2955  .nav-area .arrow:hover, 
2956  .nav-area.next .restart-icon { 
2957    cursor: pointer; 
2958
2959 
2960  .nav-area.prev .arrow { 
2961    left: calc(-32px - 24px); 
2962
2963 
2964  .nav-area.next .arrow, 
2965  .nav-area.next .restart-icon { 
2966    right: calc(-32px - 24px); 
2967
2968 
2969  .nav-area .arrow.disabled { 
2970    opacity: 0.4; 
2971
2972 
2973  .nav-area .arrow.disabled:hover { 
2974    cursor: not-allowed; 
2975
2976 
2977  .nav-area .hidden { 
2978    display: none; 
2979
2980 
2981  .action-buttons { 
2982    display: flex; 
2983    gap: 24px; 
2984    justify-content: flex-end; 
2985
2986 
2987  .action-btn { 
2988    background: transparent; 
2989    border-radius: 50%; 
2990    border: none; 
2991    display: flex; 
2992    align-items: center; 
2993    justify-content: center; 
2994    cursor: pointer; 
2995    font-size: 14px; 
2996
2997 
2998  .action-btn.pause::before { 
2999    content: ''; 
3000    display: inline-block; 
3001    width: 15px; 
3002    height: 18px; 
3003    vertical-align: middle; 
3004    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTkiIHZpZXdCb3g9IjAgMCAxNiAxOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuMjY4NTU1IDE4LjI3NzNINS4zNTE0N1YwLjI3NzM0NEgwLjI2ODU1NVYxOC4yNzczWk0xMC40MzQ0IDAuMjc3MzQ0VjE4LjI3NzNIMTUuNTE3M1YwLjI3NzM0NEgxMC40MzQ0WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="); 
3005    background-size: contain; 
3006    background-repeat: no-repeat; 
3007    background-position: center; 
3008
3009 
3010  .action-btn.play::before { 
3011    content: ''; 
3012    display: inline-block; 
3013    width: 18px; 
3014    height: 18px; 
3015    vertical-align: middle; 
3016    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyMiAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwLjUxMjUgMTIuMTQ5OUwyLjUyNSAxLjE0OTg4QzIuMzczNTggMS4wNTY0NyAyLjE5OTk4IDEuMDA1MTYgMi4wMjIxMSAxLjAwMTIyQzEuODQ0MjQgMC45OTcyODcgMS42Njg1NCAxLjA0MDg4IDEuNTEzMTQgMS4xMjc1QzEuMzU3NzQgMS4yMTQxMSAxLjIyODI2IDEuMzQwNjIgMS4xMzgwNSAxLjQ5Mzk3QzEuMDQ3ODUgMS42NDczMiAxLjAwMDIgMS44MjE5NiAxIDEuOTk5ODhWMjMuOTk5OUMxLjAwMDIgMjQuMTc3OCAxLjA0Nzg1IDI0LjM1MjQgMS4xMzgwNSAyNC41MDU4QzEuMjI4MjYgMjQuNjU5MSAxLjM1Nzc0IDI0Ljc4NTYgMS41MTMxNCAyNC44NzIzQzEuNjY4NTQgMjQuOTU4OSAxLjg0NDI0IDI1LjAwMjUgMi4wMjIxMSAyNC45OTg1QzIuMTk5OTggMjQuOTk0NiAyLjM3MzU4IDI0Ljk0MzMgMi41MjUgMjQuODQ5OUwyMC41MTI1IDEzLjg0OTlDMjAuNjYwMiAxMy43NjI1IDIwLjc4MjYgMTMuNjM4MiAyMC44Njc2IDEzLjQ4OTJDMjAuOTUyNiAxMy4zNDAxIDIwLjk5NzQgMTMuMTcxNSAyMC45OTc0IDEyLjk5OTlDMjAuOTk3NCAxMi44MjgzIDIwLjk1MjYgMTIuNjU5NiAyMC44Njc2IDEyLjUxMDZDMjAuNzgyNiAxMi4zNjE1IDIwLjY2MDIgMTIuMjM3MiAyMC41MTI1IDEyLjE0OTlWMTIuMTQ5OVoiIHN0cm9rZT0iI0ZGRiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg=="); 
3017    background-size: contain; 
3018    background-repeat: no-repeat; 
3019    background-position: center; 
3020
3021 
3022  .action-btn.share::before { 
3023    content: ''; 
3024    display: inline-block; 
3025    width: 18px; 
3026    height: 18px; 
3027    vertical-align: middle; 
3028    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTkiIGhlaWdodD0iMTkiIHZpZXdCb3g9IjAgMCAxOSAxOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYuOTA3MDMgMTAuNjYxMkwxNi43NzcgMS4wNjU3MkwxOC4xOTcgMi40NDc2Mkw4LjMzNzAzIDEyLjA1MjlMNi45MDcwMyAxMC42NjEyWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNi43MzQxIDIuNDg4NzdMMTMuMTA3OCAxNS45NTU0QzEzLjA3NDYgMTYuMDc5MyAxMy4wMDM2IDE2LjE5MDQgMTIuOTA0MSAxNi4yNzQyQzEyLjgwNDYgMTYuMzU3OSAxMi42ODEzIDE2LjQxMDMgMTIuNTUwNiAxNi40MjQ0QzEyLjQxOTkgMTYuNDM4NiAxMi4yODc4IDE2LjQxMzggMTIuMTcxOSAxNi4zNTMzQzEyLjA1NjMgMTYuMjkzMSAxMS45NjIyIDE2LjIwMDIgMTEuOTAxOCAxNi4wODdMMTEuOTAxMiAxNi4wODU5TDguODMwNjkgMTAuMjQyMUwyLjc4MTI5IDcuMzAzNjZMMi43Nzg5MiA3LjMwMjUxQzIuNjYwNDcgNy4yNDUzNyAyLjU2Mjc0IDcuMTU0NDUgMi40OTg3NiA3LjA0MTg3QzIuNDM0NzkgNi45MjkyOCAyLjQwNzYxIDYuODAwMzkgMi40MjA4NSA2LjY3MjM4QzIuNDM0MDkgNi41NDQzOCAyLjQ4NzEyIDYuNDIzMzQgMi41NzI4OCA2LjMyNTQzQzIuNjU4NjMgNi4yMjc1MSAyLjc3MzAyIDYuMTU3MzcgMi45MDA3OSA2LjEyNDM2TDE2LjczNDEgMi40ODg3N1pNMTguOTYyMyAxLjUwODUyQzE5LjA3NzIgMS4xMTQ0MyAxOC45MTE2IDAuNzY0OTExIDE4LjcwNzUgMC41NjYzNjFDMTguNTAzNCAwLjM2NzczNyAxOC4yMzc0IDAuMjc3MzQ0IDE3Ljk4NyAwLjI3NzM0NEgxNy44NjFMMi40MTMyNyA0LjMzNzI0TDIuNDExMTEgNC4zMzc3OUMxLjkxMDcxIDQuNDY3NTMgMS40NjI3NSA0Ljc0MjQ3IDEuMTI2ODIgNS4xMjYwNUMwLjc5MDQxIDUuNTEwMTcgMC41ODIzNTMgNS45ODUgMC41MzA0MDUgNi40ODcxN0MwLjQ3ODQ1NiA2Ljk4OTM1IDAuNTg1MDg2IDcuNDk1MDEgMC44MzYwNzEgNy45MzY2OEMxLjA4NjggOC4zNzc5MiAxLjQ2OTY5IDguNzM0MzUgMS45MzM3NCA4Ljk1ODUzTDEuOTM1MTQgOC45NTkyTDcuNDIzMzcgMTEuNjI1MUwxMC4yMTEyIDE2LjkzMDhMMTAuMjEyOCAxNi45MzM5QzEwLjQ0OTUgMTcuMzgwMiAxMC44MTk3IDE3Ljc0NiAxMS4yNzQ2IDE3Ljk4MzJDMTEuNzI5NSAxOC4yMjAzIDEyLjI0NzYgMTguMzE3NiAxMi43NjA0IDE4LjI2MjJDMTMuMjczMyAxOC4yMDY3IDEzLjc1NjggMTguMDAxMSAxNC4xNDcxIDE3LjY3MjZDMTQuNTM3MyAxNy4zNDQxIDE0LjgxNTkgMTYuOTA4MiAxNC45NDYyIDE2LjQyMjRMMTguOTYyMyAxLjUwODUyWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="); 
3029    background-size: contain; 
3030    background-repeat: no-repeat; 
3031    background-position: center; 
3032
3033 
3034  @media (max-width: 768px) { 
3035    .ws-carousel { 
3036      margin: var(--space-lg, 32px) 0; 
3037
3038 
3039    .stories-container { 
3040      /* 
3041        Largura das duas setas com position absolute: 64px 
3042        Largura das somas margens das setas mobile: 16px 
3043        Soma das margens laterais: 48px 
3044      */ 
3045      width: calc(100vw - 64px - 16px - 48px); 
3046
3047 
3048    .header-container { 
3049      padding: 6px; 
3050
3051 
3052    .story-progress { 
3053      height: 2px; 
3054
3055 
3056    .header-container, 
3057    .action-buttons { 
3058      gap: 12px; 
3059
3060 
3061    .action-btn.play::before, 
3062    .action-btn.pause::before, 
3063    .action-btn.share::before { 
3064      width: 10px; 
3065      height: 10px; 
3066
3067 
3068    .nav-area.prev .arrow { 
3069      left: calc(-32px - 8px); 
3070
3071 
3072    .nav-area.next .arrow, 
3073    .nav-area.next .restart-icon { 
3074      right: calc(-32px - 8px); 
3075
3076 
3077    .story-content { 
3078      padding: 16px 16px 32px 16px; 
3079
3080 
3081    .story-content .content-wrapper { 
3082      padding: 0; 
3083
3084 
3085    .story-title .title-text { 
3086      font-size: 16px; 
3087
3088 
3089    .story-description p, 
3090    .story-description p a { 
3091      font-size: 14px !important; 
3092
3093
3094</style> 
3095 
3096<!-- Google tag (gtag.js) --> 
3097<script async src="https://www.googletagmanager.com/gtag/js?id=G-9TG5WL85H3"></script> 
3098<script> 
3099  window.dataLayer = window.dataLayer || []; 
3100  function gtag() { dataLayer.push(arguments); } 
3101  gtag('js', new Date()); 
3102 
3103  // Configuração do Google Analytics 4 
3104  gtag('config', 'G-9TG5WL85H3'); 
3105</script> 
3106 
3107    <script> 
3108			 
3109/* Alteração tamanho primeira imagem */ 
3110document.addEventListener("DOMContentLoaded", function () { 
3111  const firstImg = document.querySelector(".ptb-news__read-news .news-content img"); 
3112  if (firstImg) { 
3113    firstImg.classList.add("first-news-image"); 
3114
3115}); 
3116				 
3117/* CONSTANTS */ 
3118const PUBLISHER_LOGO_INDEX = 0; 
3119const POSTER_PORTRAIT_INDEX = 1; 
3120const PUBLISHER_INDEX = 2; 
3121const COVER_INDEX = 3; 
3122const STORIES_INDEX = 4; 
3123 
3124const COVER_HAS_COVER_INDEX = 0; 
3125const COVER_TITLE_INDEX = 1; 
3126const COVER_TEXT_INDEX = 2; 
3127const COVER_IMAGE_INDEX = 3; 
3128 
3129const STORY_TITLE_INDEX = 0; 
3130const STORY_TEXT_INDEX = 1; 
3131const STORY_COLOR_THEME_INDEX = 2; 
3132const STORY_IMAGE_INDEX = 3; 
3133 
3134const 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`; 
3135 
3136/* Função para criar formatar object*/ 
3137const createStoryObject = (objectContent) => { 
3138  const hasCover = Boolean( 
3139    objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3140      COVER_HAS_COVER_INDEX 
3141    ].contentFieldValue.data 
3142  ); 
3143  return { 
3144    category: objectContent.taxonomyCategoryBriefs[0].taxonomyCategoryName, 
3145    publisherLogoSrc: 
3146      objectContent.contentFields[PUBLISHER_LOGO_INDEX].contentFieldValue.data, 
3147    posterPortraitSrc: 
3148      objectContent.contentFields[POSTER_PORTRAIT_INDEX].contentFieldValue.data, 
3149    publisher: 
3150      objectContent.contentFields[PUBLISHER_INDEX].contentFieldValue.data, 
3151    friendlyUrlPath: objectContent.friendlyUrlPath, 
3152    cover: { 
3153      image: Boolean( 
3154        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3155          COVER_HAS_COVER_INDEX 
3156        ].contentFieldValue.data 
3157      ), 
3158      title: 
3159        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3160          COVER_TITLE_INDEX 
3161        ].contentFieldValue.data, 
3162      description: 
3163        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3164          COVER_TEXT_INDEX 
3165        ].contentFieldValue.data, 
3166      imageUrl: 
3167        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3168          COVER_IMAGE_INDEX 
3169        ].contentFieldValue.image?.contentUrl || null, 
3170      imageAlt: 
3171        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3172          COVER_IMAGE_INDEX 
3173        ].contentFieldValue.image?.description || null, 
3174    }, 
3175    stories: objectContent.contentFields 
3176      .slice(STORIES_INDEX) 
3177      .map((contentField) => { 
3178        return { 
3179          title: 
3180            contentField.nestedContentFields[STORY_TITLE_INDEX] 
3181              ?.contentFieldValue?.data ?? null, 
3182          description: 
3183            contentField.nestedContentFields[STORY_TEXT_INDEX]?.contentFieldValue 
3184              .data ?? null, 
3185          colorTheme: 
3186            contentField.nestedContentFields[STORY_COLOR_THEME_INDEX] 
3187              ?.contentFieldValue?.value ?? null, 
3188          imageUrl: 
3189            contentField.nestedContentFields[STORY_IMAGE_INDEX] 
3190              ?.contentFieldValue?.image?.contentUrl ?? null, 
3191          imageAlt: 
3192            contentField.nestedContentFields[STORY_IMAGE_INDEX] 
3193              ?.contentFieldValue?.image?.description ?? null, 
3194        }; 
3195      }), 
3196  }; 
3197}; 
3198 
3199/* Renderiza os cards */ 
3200const storyCardFrom = (storyData) => { 
3201  const storyCard = document.createElement("div"); 
3202  storyCard.classList.add("ws-item"); 
3203 
3204  let displayPageUrl; 
3205  if (`${themeDisplay.getURLPortal()}`.includes('webserver')) { 
3206    displayPageUrl = `${themeDisplay.getURLPortal()}/web/nossa-energia/w/` + storyData.friendlyUrlPath; 
3207  } else { 
3208    displayPageUrl = `${themeDisplay.getURLPortal()}/w/` + storyData.friendlyUrlPath; 
3209
3210 
3211  storyCard.addEventListener("click", (e) => { 
3212    window.location.href = displayPageUrl; 
3213  }); 
3214 
3215  const image = document.createElement("img"); 
3216  image.classList.add("ws-image"); 
3217  image.src = storyData.cover.imageUrl 
3218    ? storyData.cover.imageUrl 
3219    : storyData.stories[0].imageUrl; 
3220  image.alt = storyData.cover.imageAlt 
3221    ? storyData.cover.imageAlt 
3222    : storyData.stories[0].imageAlt; 
3223 
3224  storyCard.appendChild(image); 
3225 
3226  const overlay = document.createElement("div"); 
3227  overlay.classList.add("ws-overlay"); 
3228  storyCard.appendChild(overlay); 
3229 
3230  const label = document.createElement("span"); 
3231  label.classList.add("ws-label"); 
3232  label.dataset.category = storyData.category; 
3233  label.classList.add((storyData.category || "Categoria").toLowerCase().replace(" ", '-')); 
3234  label.textContent = storyData.category || "Categoria"; 
3235  storyCard.appendChild(label); 
3236 
3237  const content = document.createElement("div"); 
3238  content.classList.add("ws-content"); 
3239 
3240  const title = document.createElement("h5"); 
3241  title.classList.add("h5") 
3242  title.textContent = storyData.cover.title || "Título do Card"; 
3243  content.appendChild(title); 
3244 
3245  const details = document.createElement("div"); 
3246  details.classList.add("ws-details"); 
3247 
3248  details.innerHTML = DETAILS_SVG || `<svg>...</svg>`; 
3249  content.appendChild(details); 
3250 
3251  storyCard.appendChild(content); 
3252 
3253  return storyCard; 
3254}; 
3255 
3256/* Renderiza cores */ 
3257 
3258const getCategoriesColorsStyles = async () => { 
3259    // 
3260    const urlToFetchToGetWebStoriesCategoriesColor = `/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/31841266/taxonomy-categories?fields=name%2CtaxonomyCategoryProperties`; 
3261 
3262  return fetch(urlToFetchToGetWebStoriesCategoriesColor, { 
3263    method: "GET", 
3264    headers: { 
3265      accept: "application/json", 
3266      "x-csrf-token": Liferay.authToken, 
3267    }, 
3268  }) 
3269    .then((response) => { 
3270      if (response.status === 200) { 
3271        return response.json(); 
3272      } else { 
3273        throw new Error("Erro interno. Por favor tente mais tarde."); 
3274
3275    }) 
3276    .then((data) => { 
3277      const styleTag = document.createElement('style'); 
3278      styleTag.id= 'webstories-carousel-labels'; 
3279 
3280      let styleContent = ``; 
3281       
3282      data.items.forEach(item => { 
3283        let textColor = item.taxonomyCategoryProperties.find(taxonomtProp => taxonomtProp.key === "Cor do Texto")?.value; 
3284        let textHighContrastColor = item.taxonomyCategoryProperties.find(taxonomtProp => taxonomtProp.key === "Cor do Texto em Alto Contraste")?.value; 
3285 
3286        if (textColor != undefined) { 
3287            styleContent = styleContent + ` 
3288            .ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label[data-category="` + item.name + `"] { 
3289                color: #` + textColor + `; 
3290
3291
3292
3293 
3294        if (textHighContrastColor != undefined) { 
3295            styleContent = styleContent + ` 
3296            body.high-contrast .ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label[data-category="` + item.name + `"] { 
3297                color: #` + textHighContrastColor + `; 
3298
3299
3300
3301      }); 
3302 
3303      styleTag.textContent = styleContent; 
3304 
3305      document.head.appendChild(styleTag); 
3306    }); 
3307}; 
3308 
3309getCategoriesColorsStyles(); 
3310 
3311/* Renderiza os itens */ 
3312const renderItems = (carouselId, webStoriesObjects) => { 
3313  const carouselElement = document.querySelector(`#` + carouselId); 
3314  const carouselContainer = carouselElement.querySelector(`.ws-container`); 
3315  const carouselBody = carouselElement.querySelector(".ws-carousel-body"); 
3316  const navButtons = carouselElement.querySelector(".nav-buttons"); 
3317  const leftArrow = navButtons.querySelector(".left-arrow"); 
3318  const rightArrow = navButtons.querySelector(".right-arrow"); 
3319 
3320  // Adiciona Cards 
3321  webStoriesObjects.forEach((storyObject, index) => { 
3322    const storyCard = storyCardFrom(storyObject); 
3323    storyCard.dataset.index = index; 
3324    carouselContainer.appendChild(storyCard); 
3325  }); 
3326 
3327  // Altera o Layout 
3328  function updateLayout() { 
3329    if (webStoriesObjects.length < 3) { 
3330      if (window.matchMedia("(min-width: 769px)").matches) { 
3331        carouselContainer.style.justifyContent = "center"; 
3332        navButtons.style.display = "none"; 
3333      } else { 
3334        carouselContainer.style.justifyContent = "flex-start"; 
3335        navButtons.style.display = "flex"; 
3336
3337    } else { 
3338      carouselContainer.style.justifyContent = ""; 
3339      carouselContainer.style.gap = window.matchMedia("(max-width: 768px)") 
3340        .matches 
3341        ? "32px" 
3342        : "16px"; 
3343      navButtons.style.display = ""; 
3344
3345
3346  updateLayout(); 
3347  window.addEventListener("resize", updateLayout); 
3348 
3349  // Configura Scroll das setas 
3350  leftArrow.addEventListener("click", () => { 
3351    const items = carouselBody.querySelectorAll(".ws-item"); 
3352    const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16; 
3353    const pageSize = items[0].offsetWidth + gap; 
3354    const currentScroll = carouselBody.scrollLeft; 
3355    const currentPageReal = carouselBody.scrollLeft / pageSize; 
3356    const currentPage = parseInt(currentPageReal); 
3357    const rest = currentPage - currentPageReal; 
3358    const nextPage = rest !== 0 ? currentPage : currentPage - 1; 
3359    carouselBody.scrollLeft = nextPage * pageSize; 
3360  }); 
3361 
3362  rightArrow.addEventListener("click", () => { 
3363    const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16; 
3364    const items = carouselBody.querySelectorAll(".ws-item"); 
3365    carouselBody.scrollLeft += items[0].offsetWidth + gap; 
3366  }); 
3367 
3368  const updateArrows = () => { 
3369    const scrollLeft = carouselBody.scrollLeft; 
3370    const maxScrollLeft = carouselBody.scrollWidth - carouselBody.clientWidth; 
3371 
3372    // Regra 1: A seta esquerda fica cinza se scrollLeft for 0 
3373    if (scrollLeft === 0) { 
3374      leftArrow.classList.remove("active"); 
3375      leftArrow.classList.add("inactive"); 
3376    } else { 
3377      leftArrow.classList.remove("inactive"); 
3378      leftArrow.classList.add("active"); 
3379
3380 
3381    // Regra 2: A seta direita fica cinza se o scroll for máximo 
3382    if (scrollLeft >= maxScrollLeft) { 
3383      rightArrow.classList.remove("active"); 
3384      rightArrow.classList.add("inactive"); 
3385    } else { 
3386      rightArrow.classList.remove("inactive"); 
3387      rightArrow.classList.add("active"); 
3388
3389  }; 
3390 
3391  carouselBody.addEventListener("scroll", updateArrows); 
3392}; 
3393 
3394/* Fetch Things */ 
3395async function getWebStoriesDataSectionFromNews(webContentId) { 
3396  const ID_INDEX = 0; 
3397  const WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT = 2; 
3398  const urlToFetchToGetWebStoriesGroup = 
3399    `/o/headless-delivery/v1.0/structured-contents/` + 
3400    webContentId + 
3401    `?fields=contentFields`; 
3402 
3403  return fetch(urlToFetchToGetWebStoriesGroup, { 
3404    method: "GET", 
3405    headers: { 
3406      accept: "application/json", 
3407      "x-csrf-token": Liferay.authToken, 
3408    }, 
3409  }) 
3410    .then((response) => { 
3411      if (response.status === 200) { 
3412        return response.json(); 
3413      } else { 
3414        throw new Error("Erro interno. Por favor tente mais tarde."); 
3415
3416    }) 
3417    .then((data) => { 
3418      const webStoriesGroups = Array.from(data.contentFields).filter( 
3419        (contentField) => contentField.label === "Web Stories" 
3420      ); 
3421 
3422      const webStoriesDataMapped = webStoriesGroups.map((webStoryGroup) => { 
3423        const webStoryGroupId = 
3424          webStoryGroup.nestedContentFields[ID_INDEX].contentFieldValue.data; 
3425        const webStoriesStrucutredContentNodes = 
3426          webStoryGroup.nestedContentFields.slice( 
3427            WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT 
3428          ); 
3429        const webStoriesIds = Array.from(webStoriesStrucutredContentNodes).map( 
3430          (webStoryNode) => { 
3431            const webStoryId = 
3432              webStoryNode.contentFieldValue.structuredContentLink.id; 
3433            return { 
3434              webStoryId: webStoryId, 
3435            }; 
3436
3437        ); 
3438        return { 
3439          webStoryGroupId: webStoryGroupId, 
3440          webStoriesIds: webStoriesIds, 
3441        }; 
3442      }); 
3443 
3444      return webStoriesDataMapped; 
3445    }) 
3446    .then((webStoriesDataMapped) => { 
3447      // Mapeia os dados recebidos 
3448      return Promise.all( 
3449        webStoriesDataMapped.map(async (group) => { 
3450          const updatedWebStoriesIds = await Promise.all( 
3451            group.webStoriesIds.map(async (story) => { 
3452              // Faz o fetch para obter os dados do webStoryId 
3453              const response = await fetch( 
3454                `/o/headless-delivery/v1.0/structured-contents/` + 
3455                  story.webStoryId, 
3456
3457                  method: "GET", 
3458                  headers: { 
3459                    accept: "application/json", 
3460                    "x-csrf-token": Liferay.authToken, 
3461                  }, 
3462
3463              ); 
3464              if (!response.ok) { 
3465                throw new Error( 
3466                  `Erro ao buscar dados para webStoryId` + story.webStoryId 
3467                ); 
3468
3469              const webStoryData = await response.json(); 
3470              return { webStoryData: webStoryData }; 
3471            }) 
3472          ); 
3473 
3474          // Retorna o objeto transformado 
3475          return { 
3476            webStoryGroupId: group.webStoryGroupId, 
3477            webStoriesData: updatedWebStoriesIds, 
3478          }; 
3479        }) 
3480      ); 
3481    }) 
3482    .then((webStoriesDataFetched) => { 
3483      return webStoriesDataFetched.map((data) => { 
3484        return { 
3485          webStoryGroupId: data.webStoryGroupId, 
3486          webStoryObjects: data.webStoriesData.map((data) => 
3487            createStoryObject(data.webStoryData) 
3488          ), 
3489        }; 
3490      }); 
3491    }) 
3492    .catch((error) => { 
3493      console.error("Erro ao buscar coleção: ", error); 
3494    }); 
3495
3496 
3497async function getWebStoriesData(webStoriesIds) { 
3498  // Mapeia os IDs para criar um array de promessas 
3499  const fetchPromises = webStoriesIds.map((webStoryId) => { 
3500    //const urlToFetch = `/o/headless-delivery/v1.0/structured-contents/` + webStoryId + `?fields=contentFields`; 
3501    const urlToFetch = 
3502      `/o/headless-delivery/v1.0/structured-contents/` + 
3503      webStoryId + 
3504      `?fields=contentFields%2CtaxonomyCategoryBriefs`; 
3505    return fetch(urlToFetch, { 
3506      method: "GET", 
3507      headers: { 
3508        accept: "application/json", 
3509        "x-csrf-token": Liferay.authToken, 
3510      }, 
3511    }).then((response) => { 
3512      if (!response.ok) { 
3513        throw new Error(`Erro ao buscar ID`); 
3514
3515      return response.json(); // Transforma a resposta em JSON 
3516    }); 
3517  }); 
3518 
3519  // Aguarda todas as promessas e preserva a ordem 
3520  try { 
3521    const results = await Promise.all(fetchPromises); 
3522    return results; // Retorna os resultados em ordem 
3523  } catch (error) { 
3524    console.error("Erro ao buscar Web Stories:", error); 
3525    throw error; // Relança o erro para tratamento posterior 
3526
3527
3528 
3529<#noparse> 
3530const scriptForStoryInNews = (storyData, containerId) => { 
3531 
3532  storyData.stories = storyData.stories.filter(story => story.imageUrl !== null) 
3533  
3534  const storiesContainer = document.getElementById(`stories-container-${containerId}`); 
3535  const prevArrow = storiesContainer.querySelector('.nav-area.prev svg.arrow'); 
3536  const nextArrow = storiesContainer.querySelector('.nav-area.next svg.arrow'); 
3537  const restartIcon = storiesContainer.querySelector('.nav-area.next svg.restart-icon'); 
3538  const progressBars = storiesContainer.querySelector('.progress-bars'); 
3539  const pauseBtn = storiesContainer.querySelector('.pause-btn'); 
3540  const shareBtn = storiesContainer.querySelector('.share-btn'); 
3541 
3542  let currentStoryIndex = 0; 
3543  let progressTimeout; 
3544  let touchStartX = 0; 
3545  let touchEndX = 0; 
3546  let isPaused = false; 
3547  let viewedStories = new Set(); 
3548  let progressStartTime = 0; 
3549  let remainingTime = 8000; 
3550 
3551  // Tagueamento com Google Analytics 
3552  const trackStoryPageView = (pageId) => { 
3553    gtag("event", `web_story_page_view_${pageId}`, { 
3554      story_title: document.title, 
3555      canonical_url: window.location.href, 
3556      source_url: document.referrer 
3557    }); 
3558
3559 
3560  // Cria slides dos stories 
3561  function createStorySlides() { 
3562    // Cria barras de progresso 
3563    storyData.stories.forEach((story, index) => { 
3564      const progressContainer = document.createElement('div'); 
3565      progressContainer.className = 'progress-bar'; 
3566      progressContainer.dataset.index = index; 
3567 
3568      const progress = document.createElement('div'); 
3569      progress.className = 'story-progress'; 
3570      progressContainer.appendChild(progress); 
3571 
3572      progressBars.appendChild(progressContainer); 
3573    }); 
3574 
3575    // Cria slides 
3576    storyData.stories.forEach((story, index) => { 
3577      const slide = document.createElement('div'); 
3578      slide.className = `story-slide ${index === 0 ? 'active' : ''}`; 
3579      slide.dataset.index = index; 
3580 
3581      let imageHtml = ''; 
3582      if (story.imageUrl) { 
3583        imageHtml = `<img src="${story.imageUrl}" alt="${story.imageAlt || ''}" class="story-image" loading="lazy">`; 
3584
3585 
3586      slide.innerHTML = ` 
3587        ${imageHtml} 
3588        <div class="story-content"> 
3589          <div class="content-wrapper"> 
3590          ${story.title && ( 
3591            `<div class="story-title ${story.colorTheme}"> 
3592              <p class="title-text">${story.title}</p> 
3593              <div class="mischievous">—</div> 
3594            </div>` 
3595          )} 
3596            ${story.description && `<div class="story-description description-text ${story.colorTheme}">${story.description}</div>`} 
3597          </div> 
3598        </div> 
3599      `; 
3600      storiesContainer.insertBefore(slide, storiesContainer.querySelector('.nav-area-container')); 
3601    }); 
3602 
3603    updateArrows(); 
3604    updateProgressBars(); 
3605    startProgressBar(); 
3606
3607 
3608  // Atualiza o estado das setas de navegação 
3609  function updateArrows() { 
3610    // Seta anterior 
3611    if (currentStoryIndex === 0) { 
3612      prevArrow.classList.add('disabled'); 
3613    } else { 
3614      prevArrow.classList.remove('disabled'); 
3615
3616 
3617    // Próxima seta 
3618    if (currentStoryIndex === storyData.stories.length - 1) { 
3619      nextArrow.classList.add('hidden'); 
3620      restartIcon.classList.remove('hidden'); 
3621    } else { 
3622      nextArrow.classList.remove('hidden'); 
3623      restartIcon.classList.add('hidden'); 
3624
3625
3626 
3627  // Atualiza as barras de progresso conforme navegação 
3628  function updateProgressBars() { 
3629    const allProgressBars = storiesContainer.querySelectorAll('.progress-bar .story-progress'); 
3630 
3631    allProgressBars.forEach((bar, index) => { 
3632      bar.classList.remove('completed', 'active'); 
3633      bar.style.width = '0%'; 
3634      bar.style.animation = 'none'; 
3635 
3636      if (index < currentStoryIndex) { 
3637        // Stories já vistos - barra completa 
3638        bar.classList.add('completed'); 
3639        bar.style.width = '100%'; 
3640      } else if (index === currentStoryIndex) { 
3641        // Story atual - barra em progresso 
3642        bar.classList.add('active'); 
3643      } else { 
3644        // Stories não vistos - barra vazia 
3645        bar.style.width = '0%'; 
3646
3647    }); 
3648
3649 
3650  function nextStory() { 
3651    if (currentStoryIndex < storyData.stories.length - 1) { 
3652      viewedStories.add(currentStoryIndex); 
3653      goToStory(currentStoryIndex + 1); 
3654
3655
3656 
3657  function prevStory() { 
3658    if (currentStoryIndex > 0) { 
3659      viewedStories.delete(currentStoryIndex); 
3660      goToStory(currentStoryIndex - 1); 
3661
3662
3663 
3664  function goToStory(index) { 
3665    // Pausa a animação atual 
3666    clearTimeout(progressTimeout); 
3667 
3668    storiesContainer.querySelector('.story-slide.active').classList.remove('active'); 
3669    currentStoryIndex = index; 
3670    storiesContainer.querySelector(`.story-slide[data-index="${index}"]`).classList.add('active'); 
3671 
3672    updateArrows(); 
3673    updateProgressBars(); 
3674 
3675    isPaused = false; 
3676    pauseBtn.classList.replace('play', 'pause'); 
3677    startProgressBar(); 
3678
3679 
3680  function startProgressBar() { 
3681    const currentProgressBar = storiesContainer.querySelector(`.progress-bar[data-index="${currentStoryIndex}"] .story-progress`); 
3682 
3683    // Resetar e iniciar animação 
3684    currentProgressBar.style.animation = 'none'; 
3685    currentProgressBar.offsetHeight; // Trigger reflow 
3686    currentProgressBar.style.animation = 'progress 8s linear forwards'; 
3687 
3688    progressStartTime = Date.now(); 
3689 
3690    progressTimeout = setTimeout(() => { 
3691      nextStory(); 
3692    }, remainingTime); 
3693
3694 
3695  // Pausar/continuar story 
3696  function togglePause() { 
3697    isPaused = !isPaused; 
3698 
3699    const currentProgressBar = storiesContainer.querySelector(`.progress-bar[data-index="${currentStoryIndex}"] .story-progress`); 
3700 
3701    if (isPaused) { 
3702      // Pausar 
3703      currentProgressBar.style.animationPlayState = 'paused'; 
3704      clearTimeout(progressTimeout); 
3705 
3706      // Calcular tempo restante 
3707      const elapsed = Date.now() - progressStartTime; 
3708      remainingTime = Math.max(0, 8000 - elapsed); 
3709 
3710      pauseBtn.classList.remove('pause'); 
3711      pauseBtn.classList.add('play'); 
3712    } else { 
3713      // Retomar 
3714      currentProgressBar.style.animationPlayState = 'running'; 
3715      pauseBtn.classList.remove('play'); 
3716      pauseBtn.classList.add('pause'); 
3717 
3718      // Reiniciar com tempo restante 
3719      progressStartTime = Date.now(); 
3720      progressTimeout = setTimeout(() => { 
3721        nextStory(); 
3722      }, remainingTime); 
3723
3724
3725 
3726  function shareStory() { 
3727    const currentStory = storyData.stories[currentStoryIndex]; 
3728    const baseUrl = window.location.origin; 
3729    let displayPageUrl; 
3730    if (baseUrl.includes('webserver')) { 
3731      displayPageUrl = `${baseUrl}/web/nossa-energia/w/${storyData.friendlyUrlPath}`; 
3732    } else { 
3733      displayPageUrl = `${baseUrl}/w/${storyData.friendlyUrlPath}`; 
3734
3735     
3736    const shareData = { 
3737      title: currentStory.title || 'Story', 
3738      text: currentStory.description ? currentStory.description.replace(/<[^>]*>/g, '') : '', 
3739      url: displayPageUrl 
3740    }; 
3741 
3742    if (navigator.share) { 
3743      navigator.share(shareData) 
3744        .then(() => console.log('Compartilhado com sucesso')) 
3745        .catch((error) => console.log('Erro ao compartilhar:', error)); 
3746    } else { 
3747      // Fallback para navegadores que não suportam a API de compartilhamento 
3748      alert('Compartilhar: ' + shareData.title + '\n' + shareData.text + '\n' + shareData.url); 
3749
3750
3751 
3752  // Event Listeners 
3753  prevArrow.addEventListener('click', (e) => { 
3754    e.stopPropagation(); 
3755    prevStory(); 
3756  }); 
3757 
3758  nextArrow.addEventListener('click', (e) => { 
3759    e.stopPropagation(); 
3760    nextStory(); 
3761  }); 
3762 
3763  restartIcon.addEventListener('click', (e) => { 
3764    e.stopPropagation(); 
3765    goToStory(0); 
3766  }); 
3767 
3768  pauseBtn.addEventListener('click', e => { 
3769    e.stopPropagation(); 
3770    togglePause(); 
3771  }); 
3772   
3773  shareBtn.addEventListener('click', e => { 
3774    e.stopPropagation(); 
3775    shareStory(); 
3776  }); 
3777 
3778  // Navegação por clique na tela 
3779  storiesContainer.addEventListener('click', (e) => { 
3780    const containerWidth = storiesContainer.offsetWidth; 
3781    const clickX = e.clientX - storiesContainer.getBoundingClientRect().left; 
3782 
3783    // Se clicou na metade esquerda 
3784    if (clickX < containerWidth / 2) { 
3785      prevStory(); 
3786
3787    // Se clicou na metade direita 
3788    else if (clickX > containerWidth / 2) { 
3789      nextStory(); 
3790
3791  }); 
3792 
3793  // Inicializar 
3794  createStorySlides(); 
3795 
3796  // Envia evento de click em links 
3797  storiesContainer.addEventListener('click', e => { 
3798    if (e.target.classList.contains('a')) { 
3799      gtag("event", `web_story_link_click_${storyData.friendlyUrlPath}`); 
3800
3801  }); 
3802 
3803  const lastPage = storiesContainer.querySelector(".story-slide:last-of-type"); 
3804 
3805  // Observa a mudança das páginas do story 
3806  const observer = new MutationObserver((mutationsList) => { 
3807    mutationsList.forEach((mutation) => { 
3808      if (mutation.type === "attributes" && mutation.attributeName === "active") { 
3809        const target = mutation.target; 
3810        if (target.tagName.toLowerCase() === "story-slide" && target.hasAttribute("active")) { 
3811          trackStoryPageView(target.getAttribute('data-index')); 
3812          target === lastPage && gtag("event", 'web_story_complete'); 
3813
3814
3815    }); 
3816  }); 
3817 
3818  const activePage = storiesContainer.querySelector('.story-slide.active'); 
3819  if (activePage && activePage.getAttribute('data-index') === '0') { 
3820    trackStoryPageView(0); 
3821
3822 
3823  const pages = storiesContainer.querySelectorAll(".story-slide"); 
3824  pages.forEach(page => { 
3825    observer.observe(page, { attributes: true, attributeFilter: ["active"] }); 
3826  }); 
3827
3828</#noparse> 
3829 
3830async function fetchAndLogWebStories() { 
3831  const webStoriesCarouselDataList = await getWebStoriesDataSectionFromNews( 
3832    "${newsJournalArticle.getResourcePrimKey()}" 
3833  ); 
3834 
3835  webStoriesCarouselDataList.forEach((webStoriesCarouselData) => { 
3836    const onlyOneWebstory = webStoriesCarouselData.webStoryObjects.length === 1; 
3837 
3838    if (onlyOneWebstory) { 
3839      // renderiza um único story com navegação dentro da notícia 
3840      const carouselElement = document.querySelector(`#` + webStoriesCarouselData.webStoryGroupId); 
3841      carouselElement.style.alignItems = 'center'; 
3842      <#noparse> 
3843      carouselElement.innerHTML = 
3844      ` <div class="stories-container" id="stories-container-${webStoriesCarouselData.webStoryGroupId}"> 
3845          <div class="header-container"> 
3846            <div class="story-header"> 
3847              <div class="progress-bars"></div> 
3848            </div> 
3849            <div class="action-buttons"> 
3850              <button class="action-btn pause pause-btn"></button> 
3851              <button class="action-btn share share-btn"></button> 
3852            </div> 
3853          </div> 
3854 
3855          <!-- Os stories serão inseridas aqui via JavaScript --> 
3856 
3857          <div class="nav-area-container"> 
3858            <div class="nav-area prev"> 
3859              <svg class="arrow disabled" width="32" height="32" viewBox="0 0 34 33" fill="none" 
3860                xmlns="http://www.w3.org/2000/svg"> 
3861                <g> 
3862                  <path 
3863                    d="M1 16.5C1 7.66344 8.16344 0.5 17 0.5C25.8366 0.5 33 7.66344 33 16.5C33 25.3366 25.8366 32.5 17 32.5C8.16344 32.5 1 25.3366 1 16.5Z" 
3864                    stroke="#959595" /> 
3865                  <path d="M19 21.5L14 16.5L19 11.5" stroke="#525252" stroke-width="1.5" stroke-linecap="round" 
3866                    stroke-linejoin="round" /> 
3867                </g> 
3868              </svg> 
3869            </div> 
3870            <div class="nav-area next"> 
3871              <svg class="arrow" width="32" height="32" viewBox="0 0 34 33" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3872                <path 
3873                  d="M1 16.5C1 7.66344 8.16344 0.5 17 0.5C25.8366 0.5 33 7.66344 33 16.5C33 25.3366 25.8366 32.5 17 32.5C8.16344 32.5 1 25.3366 1 16.5Z" 
3874                  stroke="#008542" /> 
3875                <path d="M15 11.5L20 16.5L15 21.5" stroke="#008542" stroke-width="1.5" stroke-linecap="round" 
3876                  stroke-linejoin="round" /> 
3877              </svg> 
3878              <svg class="restart-icon hidden" width="32" height="32" viewBox="0 0 34 33" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3879                <path 
3880                  d="M1 16.5C1 7.66344 8.16344 0.5 17 0.5C25.8366 0.5 33 7.66344 33 16.5C33 25.3366 25.8366 32.5 17 32.5C8.16344 32.5 1 25.3366 1 16.5Z" 
3881                  stroke="#008542" /> 
3882                <path 
3883                  d="M13.9875 14.7313H10.9875M10.9875 14.7313V11.7313M10.9875 14.7313L13.1125 12.6125C13.8816 11.8429 14.8616 11.3186 15.9286 11.106C16.9956 10.8934 18.1017 11.0021 19.1069 11.4182C20.1122 11.8344 20.9714 12.5393 21.576 13.4439C22.1805 14.3485 22.5032 15.412 22.5032 16.5C22.5032 17.588 22.1805 18.6515 21.576 19.5561C20.9714 20.4607 20.1122 21.1656 19.1069 21.5818C18.1017 21.9979 16.9956 22.1066 15.9286 21.894C14.8616 21.6814 13.8816 21.1571 13.1125 20.3875" 
3884                  stroke="#008542" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> 
3885              </svg> 
3886            </div> 
3887          </div> 
3888        </div> 
3889      `; 
3890      </#noparse> 
3891      const singleWebstoryData = webStoriesCarouselData.webStoryObjects[0]; 
3892      scriptForStoryInNews(singleWebstoryData, webStoriesCarouselData.webStoryGroupId); 
3893    } else { 
3894      // Carrossel 
3895      renderItems( 
3896        webStoriesCarouselData.webStoryGroupId, 
3897        webStoriesCarouselData.webStoryObjects 
3898      ); 
3899
3900  }); 
3901
3902 
3903fetchAndLogWebStories(); 
3904 
3905</script> 
3906 
3907    <script> 
3908        <#assign configureLinkTab = "configureLinkTab_" + randomNumber(5)> 
3909 
3910        function ${configureLinkTab}() { 
3911            const root = document.querySelector(".ptb-news__read-news"); 
3912            const newsContentElement = root.querySelector(".news-content div:first-child"); 
3913            const pList = newsContentElement.querySelectorAll("p"); 
3914            pList.forEach((pElement) => { 
3915                const cont = pElement.innerHTML.trim(); 
3916                if (cont == "" || cont == "&nbsp;") { 
3917                    newsContentElement?.removeChild(pElement); 
3918
3919            }); 
3920
3921 
3922        ${configureLinkTab}(); 
3923 
3924        <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" > 
3925 
3926            function resizeMediaInfographic() { 
3927                if (window.innerWidth > 1024) { 
3928                    const contents = document.querySelectorAll(".ptb-news__read-news .news-content p"); 
3929                    contents.forEach((content) => {        
3930                        content.querySelector("img") && (content.style.gridColumn = "2 / 12"); 
3931                    }); 
3932
3933                else { 
3934                    const contents = document.querySelectorAll(".ptb-news__read-news .news-content p"); 
3935                    contents.forEach((content) => {        
3936                        content.querySelector("img") && (content.style.gridColumn = ""); 
3937                    }); 
3938 
3939                }           
3940
3941            resizeMediaInfographic(); 
3942        </#if> 
3943 
3944         
3945 
3946        document.addEventListener("DOMContentLoaded", () => { 
3947            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"); 
3948 
3949            headers.forEach((header) => { 
3950                 
3951                const currentLevel = parseInt(header.tagName.charAt(1)); 
3952 
3953                if (currentLevel >= 1 && currentLevel <= 5) { 
3954                     
3955                    const newLevel = currentLevel + 1; 
3956                    const newTagName = "h" + newLevel; 
3957 
3958                    // Criar a nova tag e transferir o conteúdo 
3959                    const newHeader = document.createElement(newTagName); 
3960                    newHeader.innerHTML = header.innerHTML; 
3961 
3962                    // Substituir a tag antiga pela nova 
3963                    header.parentNode.replaceChild(newHeader, header); 
3964
3965            }); 
3966             
3967            <#assign typeOfNews = getFirstCategoryOfVocabulary(assetEntry, typeOfNewsVocabulary) /> 
3968                 
3969            <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" > 
3970                resizeMediaInfographic(); 
3971                window.addEventListener("resize", resizeMediaInfographic); 
3972            </#if>           
3973        }); 
3974 
3975        AUI().ready(()=>{ 
3976            const audiosContainer = document.querySelectorAll(".ptb-news__read-news .news-content .audio-content"); 
3977            const audioTemplate = document.querySelector(".ptb-news__read-news .news-content .audio-template"); 
3978 
3979            audiosContainer.forEach((audioContainer)=>{ 
3980                 
3981                const audio = audioContainer.querySelector("audio"); 
3982                const audioInterface = audioTemplate.cloneNode(true); 
3983 
3984                const sondwave = audioInterface.querySelector(".audio-sondwave"); 
3985                const linesDesktop = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-desktop line"); 
3986                const linesMobile = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-mobile line"); 
3987                 
3988                const playPauseButtonAudioInterface = audioInterface.querySelector(".audio-button-play"); 
3989 
3990                playPauseButtonAudioInterface.addEventListener("click", ()=>{ 
3991                    if(audioInterface.classList.contains("audio-play")) { 
3992                        audioInterface.classList.replace("audio-play", "audio-pause"); 
3993                        audio.pause(); 
3994
3995                    else { 
3996 
3997                        audiosContainer.forEach((audioContainer)=>{ 
3998                            const otherAudio = audioContainer.querySelector("audio"); 
3999                            const otherAudioInterface = audioContainer.querySelector(".audio-button-play"); 
4000                            !otherAudio.paused && otherAudioInterface.click(); 
4001                        }); 
4002 
4003                        audioInterface.classList.replace("audio-pause", "audio-play"); 
4004                        audio.play(); 
4005
4006                }); 
4007 
4008                const audioMuteButton = audioInterface.querySelector(".audio-button-mute"); 
4009 
4010                audioMuteButton.addEventListener("click", ()=>{ 
4011                    if(audioInterface.classList.contains("audio-unmuted")) { 
4012                        audioInterface.classList.replace("audio-unmuted", "audio-muted"); 
4013                        audio.muted = true; 
4014
4015                    else { 
4016                        audioInterface.classList.replace("audio-muted", "audio-unmuted"); 
4017                        audio.muted = false; 
4018
4019                }); 
4020 
4021                const audioTime = audioInterface.querySelector(".audio-time"); 
4022                audioTime.textContent = Math.floor(audio.duration / 60) + ":" + Math.floor(audio.duration % 60); 
4023 
4024 
4025                audio.addEventListener("timeupdate", ()=>{ 
4026                    let minutes = Math.floor((audio.duration - audio.currentTime) / 60);  
4027                    let seconds = Math.floor((audio.duration - audio.currentTime) % 60); 
4028 
4029                    minutes = minutes < 10? "0" + minutes : minutes; 
4030                    seconds = seconds < 10? "0" + seconds : seconds; 
4031                     
4032                    audioTime.textContent = minutes + ":" + seconds; 
4033 
4034                    const progress = (audio.currentTime / audio.duration) * 100; 
4035 
4036                    linesDesktop.forEach(function(line, index) { 
4037                        const lineProgress = (index / linesDesktop.length) * 100; 
4038                        if (progress >= lineProgress) { 
4039                            !line.classList.contains("line-active") && line.classList.add("line-active"); 
4040                        } else { 
4041                            line.classList.contains("line-active") && line.classList.remove("line-active"); 
4042
4043                    }); 
4044 
4045                    linesMobile.forEach(function(line, index) { 
4046                        const lineProgress = (index / linesMobile.length) * 100; 
4047                        if (progress >= lineProgress) { 
4048                            !line.classList.contains("line-active") && line.classList.add("line-active"); 
4049                        } else { 
4050                            line.classList.contains("line-active") && line.classList.remove("line-active"); 
4051
4052                    });                    
4053                }); 
4054 
4055                
4056                sondwave.addEventListener("click", (event)=>{                     
4057                    const distanceLeft = (event.clientX - sondwave.getBoundingClientRect().left)/sondwave.offsetWidth; 
4058                    audio.currentTime = audio.duration * distanceLeft; 
4059                }); 
4060                
4061                audioInterface.style.display = ""; 
4062                audioContainer.appendChild(audioInterface); 
4063            }); 
4064 
4065        }); 
4066    </script> 
4067</#macro> 
4068 
4069<#macro renderShareAndCopyNews> 
4070    <#--        <div class="share_news_container">--> 
4071        <div class="social-media-container"> 
4072 
4073            <#assign emailMsg = "Veja o conteúdo do post no link "> 
4074            <#if locale == "en_US"> 
4075                <#assign emailMsg = "See the content of the post in the link "> 
4076            </#if> 
4077            <a class="social-media-share" href="mailto:?subject=${newsInfo.mainHeadlineOfTheNews}&amp;body=${emailMsg}${newsInfo.url}" 
4078                target="_blank"> 
4079                <svg class="email" width="37" height="36" viewBox="0 0 37 36" fill="none" 
4080                        xmlns="http://www.w3.org/2000/svg"> 
4081                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
4082                    <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" 
4083                            fill="#008542"/> 
4084                </svg> 
4085                <span >send e-mail</span> 
4086            </a> 
4087 
4088            <a class="social-media-share"  href="https://www.facebook.com/sharer/sharer.php?u=${newsInfo.url}" target="_blank"> 
4089                <svg class="facebook" width="37" height="36" viewBox="0 0 37 36" fill="none" 
4090                        xmlns="http://www.w3.org/2000/svg"> 
4091                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
4092                    <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" 
4093                            fill="#008542"/> 
4094                </svg> 
4095                    <span >Facebook</span> 
4096            </a> 
4097 
4098            <#assign mobileShareButtonId = "mobile-share-" + randomNumber(5)> 
4099            <div class="mobile-share" id="${mobileShareButtonId}"> 
4100                <svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4101                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
4102                    <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" 
4103                            fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/> 
4104                    <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" 
4105                            fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/> 
4106                    <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" 
4107                            fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/> 
4108                    <path d="M20.2546 14.0784L15.9036 16.8879" stroke="#008542" stroke-linecap="round" 
4109                            stroke-linejoin="round"/> 
4110                    <path d="M15.9036 19.4871L20.2546 22.2966" stroke="#008542" stroke-linecap="round" 
4111                            stroke-linejoin="round"/> 
4112                </svg> 
4113            </div> 
4114 
4115            <a class="social-media-share"  href="https://twitter.com/intent/tweet?url=${newsInfo.url}" target="_blank" data-size="large"> 
4116                <svg class="twitter" width="37" height="36" viewBox="0 0 37 36" fill="none" 
4117                        xmlns="http://www.w3.org/2000/svg"> 
4118                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
4119                    <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"/> 
4120                </svg> 
4121                        <span >twitter</span> 
4122            </a> 
4123 
4124            <a class="social-media-share"  href="https://api.whatsapp.com/send?text=${newsInfo.url}" data-action="share/whatsapp/share" 
4125                target="_blank"> 
4126                <svg class="whatsapp" width="37" height="36" viewBox="0 0 37 36" fill="none" 
4127                        xmlns="http://www.w3.org/2000/svg"> 
4128                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
4129                    <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" 
4130                            fill="#008542"/> 
4131                    <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" 
4132                            fill="white"/> 
4133                </svg> 
4134                <span >Share to WhatsApp </span> 
4135            </a> 
4136 
4137            <div class="copy-text-container"> 
4138                <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4139                    <path d="M10.5 10.5H13.5V2.5H5.5V5.5" stroke="#008542" stroke-linecap="round" 
4140                            stroke-linejoin="round"/> 
4141                    <path d="M10.5 5.5H2.5V13.5H10.5V5.5Z" stroke="#008542" stroke-linecap="round" 
4142                            stroke-linejoin="round"/> 
4143                </svg> 
4144 
4145                <#if locale == "pt_BR"> 
4146                    <p class="text">Copiar texto <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p> 
4147                <#else > 
4148                    <p class="text">Copy text <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p> 
4149                </#if> 
4150            </div> 
4151 
4152        </div> 
4153 
4154        <#if locale == "pt_BR"> 
4155            <span class="copy-message">Texto copiado!</span> 
4156        <#else > 
4157            <span class="copy-message">Text copied!</span> 
4158        </#if> 
4159    <#--        </div>--> 
4160</#macro> 
4161 
4162<#-- ################################################################################################################## --> 
4163 
4164<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# --> 
4165<#macro renderLinks newsInfo> 
4166    <#if newsInfo.links?size != 0> 
4167    <#--videos "escondidos" que serão unidos a .ptb-news__read-content --> 
4168 
4169        <div class="ptb-news__links-container d-none "> 
4170            <div id="ptb-news__links-identifiers"> 
4171                <#assign separator = ""> 
4172                <#list newsInfo.links as link> 
4173                    ${link.id}; 
4174                    <#assign separator = ";"> 
4175                </#list> 
4176            </div> 
4177            <#list newsInfo.links as link> 
4178                <#assign link_index = link?index> 
4179                <#assign linkUrl = "#"> 
4180                <#assign target = "_blank"> 
4181                <#assign linkClass = ""> 
4182 
4183                <div id="ptb-news__link-container-${link_index}"> 
4184                    <#if link.externalLink?has_content> 
4185                        <#assign linkUrl = link.externalLink> 
4186                        <#assign target = "_blank"> 
4187                        <#assign linkClass = "external-link"> 
4188                    <#elseif link.pageLink?has_content> 
4189                        <#assign linkUrl = link.pageLink> 
4190                        <#assign target = "_self"> 
4191                        <#assign linkClass = "internal-page-link"> 
4192                    <#elseif link.file.mimeType?has_content> 
4193                        <#assign linkUrl = link.file.url> 
4194                        <#assign target = "_blank"> 
4195                        <#assign linkClass = "file-link"> 
4196                    </#if> 
4197 
4198                    <#-- PDF icon --> 
4199                    <#if link.iconType == "Opção78730408" > 
4200                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" 
4201                             xmlns="http://www.w3.org/2000/svg"> 
4202                            <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" 
4203                                  fill="#008542"/> 
4204                            <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" 
4205                                  fill="#008542"/> 
4206                            <path d="M17.2695 20.654V11.894H22.2735V13.358H18.9735V15.59H21.9015V17.054H18.9735V20.654H17.2695Z" 
4207                                  fill="#008542"/> 
4208                            <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" 
4209                                  stroke="#008542" stroke-width="1.5" stroke-linecap="round" 
4210                                  stroke-linejoin="round"/> 
4211                        </svg> 
4212 
4213                    <#-- JPG icon --> 
4214                    <#elseif link.iconType == "Opção89889679" > 
4215                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" 
4216                             xmlns="http://www.w3.org/2000/svg"> 
4217                            <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" 
4218                                  fill="#008542"/> 
4219                            <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" 
4220                                  fill="#008542"/> 
4221                            <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" 
4222                                  fill="#008542"/> 
4223                            <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" 
4224                                  stroke="#008542" stroke-width="1.5" stroke-linecap="round" 
4225                                  stroke-linejoin="round"/> 
4226                        </svg> 
4227                    <#-- DOC icon --> 
4228                    <#elseif link.iconType == "Opção15480314" > 
4229                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" 
4230                             xmlns="http://www.w3.org/2000/svg"> 
4231                            <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" 
4232                                  fill="#008542"/> 
4233                            <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" 
4234                                  fill="#008542"/> 
4235                            <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" 
4236                                  fill="#008542"/> 
4237                            <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" 
4238                                  stroke="#008542" stroke-width="1.5" stroke-linecap="round" 
4239                                  stroke-linejoin="round"/> 
4240                        </svg> 
4241                    <#-- External link icon --> 
4242                    <#elseif link.iconType == "Opção43823553" > 
4243                        <svg width="24" height="24" viewBox="0 0 32 32" fill="none" 
4244                             xmlns="http://www.w3.org/2000/svg"> 
4245                            <path opacity="0.98" 
4246                                  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" 
4247                                  stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
4248                        </svg> 
4249                    <#-- Internal page link icon --> 
4250                    <#elseif link.iconType == "Opção64212757" > 
4251                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#008542" viewBox="0 0 256 256"> 
4252                        <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"> 
4253                        </path> 
4254                    </svg> 
4255                    <#-- Download link icon --> 
4256                    <#elseif link.iconType == "Opção20766606" > 
4257                        <svg width="24" height="24" viewBox="0 0 32 32" fill="none" 
4258                             xmlns="http://www.w3.org/2000/svg"> 
4259                            <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" 
4260                                  stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
4261                        </svg> 
4262                    </#if> 
4263<#if link.title?? && link.title?has_content> 
4264                    <a href="${linkUrl}" class="link ${linkClass}" target="${target}">${link.title}</a> 
4265	</#if> 
4266                </div> 
4267            </#list> 
4268        </div> 
4269 
4270        <script> 
4271            var newsContent_code = document.querySelector(".news-content").innerHTML; 
4272 
4273            var linksIdentifiers = document.querySelector("#ptb-news__links-identifiers").innerHTML.trim().split(";"); 
4274            linksIdentifiers.forEach((linkIdentifier, index) => { 
4275                const linkIdentifierContent = document.querySelector("#ptb-news__link-container-" + index); 
4276                if (linkIdentifierContent) { 
4277                    const tag = "#[" + linkIdentifier.trim() + "]"; 
4278                    const splitContent = newsContent_code.split(tag); 
4279                    newsContent_code = splitContent.join(linkIdentifierContent.innerHTML); 
4280                    //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent); 
4281
4282            }); 
4283 
4284 
4285            var ptb_news__read_content = document.querySelector(".news-content"); 
4286            ptb_news__read_content.innerHTML = newsContent_code; 
4287             
4288            const links_ptb_news = document.querySelectorAll(".news-content a"); 
4289            links_ptb_news.forEach((link) => { 
4290                link.classList.add("link-ptb-news"); 
4291            }); 
4292 
4293        </script> 
4294 
4295        <style> 
4296            .ptb-news__read-news .ptb-news__link a { 
4297                font-family: var(--font-family-base); 
4298                font-style: var(--font-style-normal, normal); 
4299                font-weight: var(--font-weight-bold, 700); 
4300                font-size: var(--font-size-xxs, 16px); 
4301                line-height: var(--line-height-xl, 160%); 
4302                text-decoration-line: var(--text-decoration-underline, underline); 
4303                color: #008542; 
4304
4305 
4306            body.high-contrast-active .ptb-news__read-news .ptb-news__link a { 
4307                color: #E4F7E8; 
4308            }           
4309 
4310            .ptb-news__read-news .news-content .link { 
4311                font-family: var(--font-family-base); 
4312                font-style: var(--font-style-normal, normal); 
4313                font-weight: var(--font-weight-bold, 700); 
4314                font-size: var(--font-size-xs, 18px); 
4315                line-height: var(--line-height-xl, 160%); 
4316 
4317                text-decoration-line: var(--text-decoration-underline, underline); 
4318                color: #008542; 
4319
4320 
4321            body.high-contrast-active .ptb-news__read-news .news-content .link { 
4322                color: #E4F7E8; 
4323
4324 
4325            body.high-contrast-active .ptb-news__read-news .news-content svg path { 
4326                stroke: var(--color-neutral-500, #D7D7D7); 
4327                fill: rgba(255, 255, 255, 0.32); 
4328
4329 
4330            .ptb-news__read-news .news-content .ptb-link__wrapper { 
4331                display: flex; 
4332                flex-direction: column; 
4333                gap: 0; 
4334                margin-top: -24px; 
4335
4336 
4337            .ptb-news__read-news .news-content .ptb-link__wrapper svg { 
4338                margin-right: var(--space-sm, 16px); 
4339
4340 
4341            .ptb-news__read-news .news-content .ptb-link__wrapper .first { 
4342                gap: 0 !important; 
4343
4344 
4345            @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
4346                .ptb-news__read-news .news-content .link { 
4347                    font-size: var(--font-size-xxs, 16px); 
4348
4349
4350        </style> 
4351    </#if> 
4352</#macro> 
4353 
4354<#-- ################################################################################################################## --> 
4355 
4356<#-- ################################################################################################################## --> 
4357 
4358<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# --> 
4359<#macro renderCite> 
4360    <div class="ptb-news__cite-container"> 
4361        <div class="ptb-news__cite-container-breakpoint breakpoint"> 
4362            <div class="ptb-news__cite-container-col col-1-12 md-col-1-8 sm-col-1-4"> 
4363                <div class="ptb-news__cite-title"> 
4364                    <#if locale?lower_case == "pt_br"> 
4365                        Notas 
4366                    <#else> 
4367                        Notes 
4368                    </#if> 
4369                </div> 
4370 
4371                <div class="ptb-news__cites-elements"> 
4372                </div> 
4373            </div> 
4374        </div> 
4375    </div> 
4376 
4377    <script> 
4378        function positionCitesText(parentNodeCitesText) { 
4379             
4380            parentNodeCitesText.forEach((parentNodeCiteText)=>{ 
4381                if(window.innerWidth > 1024) { 
4382                    parentNodeCiteText.style.display=""; 
4383                    parentNodeCiteText.style.gridColumnStart = "11"; 
4384                    parentNodeCiteText.style.gridColumnEnd = "13"; 
4385                }  
4386                else { 
4387                    parentNodeCiteText.style.display="none"; 
4388                    parentNodeCiteText.style.gridColumnStart = ""; 
4389                    parentNodeCiteText.style.gridColumnEnd = "";                  
4390
4391            }); 
4392
4393 
4394        function addCitesTextMobile(citesText) { 
4395            const citesContainer = document.querySelector(".ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements"); 
4396 
4397            if(citesContainer.children.length === 0) { 
4398                citesContainer && citesText.forEach((citeText)=>{                         
4399                    citesContainer.appendChild(citeText.cloneNode(true)); 
4400                }); 
4401            }         
4402
4403 
4404        const citesText = document.querySelectorAll(".news-content cite"); 
4405         
4406        if (citesText.length > 0) { 
4407            const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode); 
4408            positionCitesText(parentNodeCitesText); 
4409            addCitesTextMobile(citesText);     
4410
4411        else { 
4412            const citesContainer = document.querySelector(".ptb-news__cite-container"); 
4413            citesContainer && (citesContainer.style.display="none"); 
4414
4415         
4416        document.addEventListener('DOMContentLoaded', ()=>{ 
4417             
4418            const citesText = document.querySelectorAll(".news-content cite"); 
4419             
4420            if (citesText.length > 0) { 
4421                const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode);            
4422 
4423                positionCitesText(parentNodeCitesText); 
4424                addCitesTextMobile(citesText); 
4425 
4426                window.addEventListener('resize', ()=>{positionCitesText(parentNodeCitesText)}); 
4427
4428            else { 
4429                const citesContainer = document.querySelector(".ptb-news__cite-container"); 
4430                citesContainer && (citesContainer.style.display="none"); 
4431
4432        }); 
4433 
4434    </script> 
4435 
4436    <style> 
4437     
4438        .ptb-news__read-news-post cite { 
4439            color: var(--color-neutral-800, #373737); 
4440            font-family: var(--font-family-base); 
4441            font-size: var(--font-size-xxxs, 14px) !important; 
4442            font-style: var(--font-style-normal, normal); 
4443            font-weight: var(--font-weight-regular, 400); 
4444            line-height: var(--line-height-xl, 160%); 
4445
4446 
4447        .ptb-news__read-news-post cite  a{ 
4448            font-size: var(--font-size-xxxs, 14px) !important; 
4449
4450 
4451        body.high-contrast-active .ptb-news__read-news-post cite { 
4452        color: var(--text-primary-default, var(--color-neutral-100)); 
4453        }  
4454 
4455        .ptb-news__read-news-post .news-content cite, 
4456        .ptb-news__read-news-post .ptb-news__cite-container cite { 
4457            display: block; 
4458            padding-left: var(--space-md); 
4459            border-left: var(--border-width-hairline, 1px) solid var(--color-neutral-500, #D7D7D7); 
4460
4461 
4462        @media screen and (min-width: 1025px) { 
4463            .ptb-news__read-news-post .ptb-news__cite-container { 
4464                display: none;                
4465            }         
4466
4467 
4468        @media screen and (max-width: 1025px) { 
4469            .ptb-news__read-news .ptb-news__cite-container .link { 
4470                text-decoration-line: var(--text-decoration-underline, underline); 
4471                color: #008542; 
4472
4473 
4474            body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container .link { 
4475                color: #E4F7E8; 
4476
4477 
4478            body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container svg path { 
4479                stroke: var(--color-neutral-500, #D7D7D7); 
4480                fill: rgba(255, 255, 255, 0.32); 
4481
4482             
4483            .ptb-news__read-news-post .ptb-news__cite-container { 
4484                display: grid; 
4485                background: var(--background-surface-level-03, #EEE); 
4486
4487 
4488            body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container { 
4489                background: var(--background-surface-level-03, #525252); 
4490
4491 
4492            .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col { 
4493                padding: var(--space-xxl) 0; 
4494                display: flex; 
4495                flex-direction: column; 
4496                gap: var(--space-lg, 32px); 
4497
4498 
4499            .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements { 
4500                display: flex; 
4501                flex-direction: column; 
4502                gap: var(--space-lg, 32px);  
4503            }       
4504 
4505            .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title { 
4506                color: var(--color-neutral-800, #373737); 
4507                font-size: var(--font-size-sm, 20px); 
4508                font-style: var(--font-style-normal, normal); 
4509                font-weight: var(--font-weight-bold, 700); 
4510                line-height: var(--line-height-xl, 160%); 
4511
4512 
4513            body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title { 
4514                color: var(--text-primary-default, var(--color-neutral-100)); 
4515
4516        }         
4517    </style> 
4518     
4519</#macro> 
4520 
4521<#-- ################################################################################################################## --> 
4522 
4523 
4524<#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### --> 
4525<#macro renderGallery newsInfo> 
4526    <#if newsInfo.galleryItems?size == 0> 
4527        <#return /> 
4528    </#if> 
4529 
4530    <div class="gallery-breakpoint breakpoint"> 
4531        <div class="gallery col-3-11 md-col-1-8 sm-col-1-4"> 
4532 
4533            <div class="title-container"> 
4534                <svg class="icon" viewBox="0 0 26 23" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4535                    <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" 
4536                            stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
4537                    <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" 
4538                            stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
4539                </svg> 
4540                <p class="title"> 
4541                    <#if locale == "pt_BR"> Galeria de Imagens <#else > Image gallery </#if> 
4542                </p> 
4543            </div> 
4544 
4545            <div class="image-container"> 
4546				<#assign index = 0 /> 
4547				<#assign index = 0 /> 
4548                <#list newsInfo.galleryItems as gItem> 
4549                    <div class="modal-image-fragment" index="${index}"> 
4550                        <div class="modal-image-container" index="${index}"> 
4551                            <span class="click-image" ></span> 
4552 
4553                            <div class="image-player-container"> 
4554                                <span class="close-image"> 
4555                                    <svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4556                                        <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"/> 
4557                                        <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"/> 
4558                                    </svg> 
4559                                </span> 
4560                                <div class="image-player-session"> 
4561                                    <#-- Midias adaptativas de imagem para desktop e mobile --> 
4562                                    <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${gItem.image.fileEntryId}") /> 
4563                                    <#assign urlAdaptativeMediaMobile = gItem.image.url/> 
4564                                    <#assign urlAdaptativeMediaDesktop = gItem.image.url/> 
4565                                     
4566                                    <#if fileDataRequest?? && fileDataRequest.adaptedImages?? > 
4567                                        <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages /> 
4568                                        <#list dataAdaptativeMedia as data> 
4569                                            <#if data.resolutionName == adaptativeMediaDesktopResolutionName> 
4570                                                <#assign urlAdaptativeMediaDesktop = data.contentUrl/> 
4571                                            </#if> 
4572                                            <#if data.resolutionName == adaptativeMediaMobileResolutionName> 
4573                                                <#assign urlAdaptativeMediaMobile = data.contentUrl/> 
4574                                            </#if>      
4575                                        </#list> 
4576                                    </#if> 
4577																																				 
4578                                    <picture> 
4579                                        <source media="(max-width:767px)" srcset="${urlAdaptativeMediaMobile}"  > 
4580                                        <img width="274px" height="152px" loading="lazy" src="${urlAdaptativeMediaDesktop}" alt="${gItem.image.alt}"/> 
4581                                    </picture>		   
4582                                </div> 
4583                            </div> 
4584                        </div> 
4585                    </div> 
4586                    <#assign index = index + 1 /> 
4587                    <#assign index = index + 1 /> 
4588                </#list> 
4589                <div class="control-arrow left-arrow"> 
4590                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4591                        <path d="M20 26L10 16L20 6" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
4592                    </svg> 
4593                </div> 
4594                <div class="control-arrow right-arrow"> 
4595                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4596                        <path d="M12 6L22 16L12 26" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
4597                    </svg> 
4598                </div> 
4599                <div class="image-bullets"> 
4600                    <#list 0..(newsInfo.galleryItems?size-1) as index> 
4601                        <div index="${index}" class="bullet"></div> 
4602                    </#list> 
4603                </div> 
4604            </div> 
4605                <div class="control-arrow left-arrow"> 
4606                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4607                        <path d="M20 26L10 16L20 6" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
4608                    </svg> 
4609                </div> 
4610                <div class="control-arrow right-arrow"> 
4611                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4612                        <path d="M12 6L22 16L12 26" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
4613                    </svg> 
4614                </div> 
4615                <div class="image-bullets"> 
4616                    <#list 0..(newsInfo.galleryItems?size-1) as index> 
4617                        <div index="${index}" class="bullet"></div> 
4618                    </#list> 
4619                </div> 
4620            </div> 
4621        </div> 
4622    </div> 
4623 
4624    <style> 
4625 
4626        .ptb-news__read-news .gallery { 
4627            padding-top: 42px; 
4628
4629 
4630        .ptb-news__read-news .gallery * { 
4631            margin: 0; 
4632            padding: 0; 
4633
4634 
4635        .ptb-news__read-news .gallery { 
4636            display: flex; 
4637            gap: var(--space-xl, 40px); 
4638            flex-direction: column; 
4639
4640			 
4641        .ptb-news__read-news .gallery .control-arrow { 
4642            position: fixed; 
4643            height: 100%; 
4644            align-items: center; 
4645            display: flex; 
4646            justify-content: center; 
4647            display: none; 
4648            z-index: 9999; 
4649
4650 
4651        .ptb-news__read-news .gallery .control-arrow svg { 
4652          cursor: pointer; 
4653
4654 
4655        .ptb-news__read-news .gallery .left-arrow { 
4656            top: 0; 
4657            left: 5vw; 
4658
4659 
4660        .ptb-news__read-news .gallery .right-arrow { 
4661            top: 0; 
4662            right: 5vw; 
4663
4664 
4665        .ptb-news__read-news .gallery .lefg-arrow svg { 
4666          margin-left: 16px !important; 
4667
4668 
4669        .ptb-news__read-news .gallery .right-arrow svg { 
4670          margin-right: 16px !important; 
4671
4672 
4673        .ptb-news__read-news .gallery .image-bullets { 
4674          display: none; 
4675          gap: var(--space-sm, 16px); 
4676          position: fixed; 
4677          left: 0; 
4678          bottom: calc(10vh + 24px); 
4679          width: 100vw; 
4680          z-index: 9999; 
4681          justify-content: center; 
4682
4683 
4684        .ptb-news__read-news .gallery .image-bullets .bullet { 
4685          width: var(--size-xs, 16px); 
4686          height: var(--size-xs, 16px); 
4687          border-radius: 50%; 
4688          border: 1px solid var(--color-neutral-100, #FFFFFF); 
4689          z-index: 9999; 
4690          cursor: pointer; 
4691
4692 
4693        .ptb-news__read-news .gallery .image-bullets .bullet.current-item { 
4694          background: var(--color-neutral-100, #FFFFFF); 
4695
4696			 
4697        .ptb-news__read-news .gallery .control-arrow { 
4698            position: fixed; 
4699            height: 100%; 
4700            align-items: center; 
4701            display: flex; 
4702            justify-content: center; 
4703            display: none; 
4704            z-index: 9999; 
4705
4706 
4707        .ptb-news__read-news .gallery .left-arrow { 
4708            top: 0; 
4709            left: 5vw; 
4710
4711 
4712        .ptb-news__read-news .gallery .right-arrow { 
4713            top: 0; 
4714            right: 5vw; 
4715
4716 
4717        .ptb-news__read-news .gallery .lefg-arrow svg { 
4718          margin-left: 16px !important; 
4719
4720 
4721        .ptb-news__read-news .gallery .right-arrow svg { 
4722          margin-right: 16px !important; 
4723
4724 
4725        .ptb-news__read-news .gallery .image-bullets { 
4726          display: none; 
4727          gap: var(--space-sm, 16px); 
4728          position: fixed; 
4729          left: 0; 
4730          bottom: calc(10vh + 24px); 
4731          width: 100vw; 
4732          z-index: 9999; 
4733          justify-content: center; 
4734
4735 
4736        .ptb-news__read-news .gallery .image-bullets .bullet { 
4737          width: var(--size-xs, 16px); 
4738          height: var(--size-xs, 16px); 
4739          border-radius: 50%; 
4740          border: 1px solid var(--color-neutral-100, #FFFFFF); 
4741          z-index: 9999; 
4742
4743 
4744        .ptb-news__read-news .gallery .image-bullets .bullet.current-item { 
4745          background: var(--color-neutral-100, #FFFFFF); 
4746
4747 
4748        .ptb-news__read-news .gallery .title-container { 
4749            display: flex; 
4750            align-items: center; 
4751            gap: var(--space-sm, 16px); 
4752
4753 
4754        .ptb-news__read-news .gallery .title-container svg { 
4755            width: var(--size-md, 24px); 
4756            height: 21px; 
4757
4758 
4759        .ptb-news__read-news .gallery .title-container .title { 
4760            color: var(--color-neutral-800, #373737); 
4761            font-family: var(--font-family-base); 
4762            font-size: var(--font-size-lg); 
4763            font-style: var(--font-style-normal); 
4764            font-weight: var(--font-weight-bold); 
4765            line-height: var(--line-height-md); 
4766
4767 
4768        body.high-contrast-active .ptb-news__read-news .gallery .title-container .title { 
4769            color: var(--color-neutral-100); 
4770
4771 
4772        .ptb-news__read-news .gallery .image-container { 
4773            display: flex; 
4774            gap: var(--space-sm, 16px); 
4775            flex-wrap: wrap; 
4776
4777 
4778         .ptb-news__read-news .gallery .image-container .modal-image-fragment { 
4779            width: inherit; 
4780            height: inherit; 
4781            max-height: calc(100vw/2); 
4782            padding: 0; 
4783            margin: 0; 
4784            overflow: hidden; 
4785
4786 
4787        .ptb-news__read-news .gallery .image-container .modal-image-fragment * { 
4788            box-sizing: border-box; 
4789            margin: 0; 
4790            padding: 0; 
4791
4792 
4793        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container { 
4794            width: 100%; 
4795            height: inherit; 
4796            display: flex; 
4797            justify-content: center; 
4798            align-items: center; 
4799            position: relative; 
4800
4801 
4802        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing {     
4803            position: fixed; 
4804            top: 0; 
4805            left: 0; 
4806            width: 100vw !important; 
4807            height: 100vh !important; 
4808            z-index: 9999 !important; 
4809            background-color: rgba(0, 0, 0, 0.75); 
4810            max-height: 100vh; 
4811
4812 
4813        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .click-image { 
4814            height: 100%; 
4815            width: 100%; 
4816            position: absolute; 
4817            z-index: 3; 
4818            cursor: pointer; 
4819
4820 
4821        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container { 
4822            width: 100%; 
4823            height: 100%; 
4824
4825 
4826        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing { 
4827            position: relative; 
4828            width: 90vw !important; 
4829            height: 80vh !important; 
4830            z-index: 9999 !important; 
4831            background-color: rgba(0, 0, 0, 0.75); 
4832            border-radius: var(--border-radius-card); 
4833
4834 
4835        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image { 
4836            display: none; 
4837            position: absolute; 
4838            top: 0; 
4839	        right: 0; 
4840            transform: translate(100%, -100%); 
4841            z-index: 99999; 
4842
4843 
4844        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) { 
4845           fill: var(--background-Surface-level-01, #010101); 
4846
4847 
4848        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) { 
4849           stroke: #E4F7E8; 
4850
4851 
4852        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image.image-active { 
4853            display: block; 
4854
4855 
4856        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session { 
4857            width: 100%; 
4858            height: 100%; 
4859
4860 
4861        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session { 
4862            width: 90vw !important; 
4863            height: 80vh !important; 
4864            z-index: 9999 !important; 
4865            background-color: rgba(0, 0, 0, 0.75); 
4866            border-radius: var(--border-radius-card); 
4867            overflow: hidden; 
4868
4869 
4870        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session img { 
4871            object-fit: cover; 
4872
4873 
4874        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session img { 
4875            width: 100%; 
4876            height: 100%; 
4877            margin-left: 0 !important; 
4878            max-height: 100vh; 
4879
4880 
4881        .ptb-news__read-news .gallery .image-container img { 
4882            width: 274px; 
4883            height: 152px; 
4884            border-radius: var(--border-radius-md, 8px); 
4885
4886 
4887        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
4888 
4889            .ptb-news__read-news .gallery { 
4890                padding-top: var(--space-xl, 40px); 
4891
4892 
4893            .ptb-news__read-news .gallery .image-container { 
4894                gap: var(--space-xxs, 8px); 
4895
4896 
4897            .ptb-news__read-news .gallery .image-container img { 
4898                width: 296px; 
4899                height: 180px; 
4900
4901 
4902            .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing { 
4903                transform: rotate(90deg); 
4904                transform-origin: center; 
4905                width: 80vh !important; 
4906                height: 90vw !important; 
4907
4908 
4909            .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing img{ 
4910                cursor: pointer; 
4911
4912 
4913            .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session { 
4914                width: 80vh !important; 
4915                height: 90vw !important; 
4916
4917 
4918            .ptb-news__read-news .gallery .lefg-arrow svg { 
4919                margin-left: 4px !important; 
4920
4921 
4922            .ptb-news__read-news .gallery .right-arrow svg { 
4923                margin-right: 4px !important; 
4924
4925 
4926            .ptb-news__read-news .gallery .image-bullets { 
4927              gap: 14px; 
4928
4929 
4930            .ptb-news__read-news .gallery .image-bullets .bullet { 
4931              width: var(--size-xxs, 12px); 
4932              height: var(--size-xxs, 12px); 
4933
4934 
4935            .ptb-news__read-news .gallery .lefg-arrow svg { 
4936                margin-left: 4px !important; 
4937
4938 
4939            .ptb-news__read-news .gallery .right-arrow svg { 
4940                margin-right: 4px !important; 
4941
4942 
4943            .ptb-news__read-news .gallery .image-bullets { 
4944              gap: 14px; 
4945
4946 
4947            .ptb-news__read-news .gallery .image-bullets .bullet { 
4948              width: var(--size-xxs, 12px); 
4949              height: var(--size-xxs, 12px); 
4950
4951
4952 
4953    </style> 
4954 
4955    <script> 
4956     
4957     
4958        const allModalImagesFragment = document.querySelectorAll(".ptb-news__read-news .gallery .modal-image-fragment"); 
4959        const totalItems = allModalImagesFragment.length; 
4960        const bulletsContainer = document.querySelector(".ptb-news__read-news .gallery .image-bullets"); 
4961        const bullets = bulletsContainer.querySelectorAll(".bullet"); 
4962        let currentItem = 0; 
4963        const nextImage = document.querySelector(".ptb-news__read-news .gallery .right-arrow"); 
4964        const previousImage = document.querySelector(".ptb-news__read-news .gallery .left-arrow"); 
4965 
4966        const stopImage = (getImageClick, imagePlayerContainer, imageContainer, closeImage) => { 
4967            getImageClick.classList.remove('image-playing'); 
4968            imagePlayerContainer.classList.remove('image-playing'); 
4969            imageContainer.classList.remove('image-playing'); 
4970 
4971            const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem +  '"]') 
4972            currentBullet && currentBullet.classList.remove('current-item'); 
4973             
4974            closeImage.classList.remove('image-active'); 
4975             
4976            document.querySelector("body").style.overflow = 'initial'; 
4977            [nextImage, previousImage].forEach(item => { 
4978                item.style.display = "none"; 
4979            }); 
4980            bulletsContainer.style.display = "none"; 
4981
4982 
4983        const playImage = (index, getImageClick, imagePlayerContainer, imageContainer, closeImage) => { 
4984            getImageClick.classList.add('image-playing'); 
4985            imagePlayerContainer.classList.add('image-playing'); 
4986            imageContainer.classList.add('image-playing'); 
4987            closeImage.classList.add('image-active'); 
4988 
4989             
4990            document.querySelector("body").style.overflow = 'hidden'; 
4991            [nextImage, previousImage].forEach(item => { 
4992                item.style.display = "flex"; 
4993            }); 
4994            bulletsContainer.style.display = "flex"; 
4995            bullets[index].classList.add('current-item'); 
4996
4997 
4998        const changeImage = (next) => { 
4999          if(next == currentItem || next < 0 || next >= totalItems) return; 
5000 
5001          const getImageClick = allModalImagesFragment[currentItem].querySelector('.click-image'); 
5002          const imageContainer = allModalImagesFragment[currentItem].querySelector('.modal-image-container'); 
5003          const imagePlayerContainer = allModalImagesFragment[currentItem].querySelector('.image-player-container'); 
5004          const image = imagePlayerContainer.querySelector('img'); 
5005          const closeImage = imagePlayerContainer.querySelector('.close-image'); 
5006 
5007          const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem +  '"]') 
5008          currentBullet.classList.remove('current-item'); 
5009 
5010          stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);  
5011          allModalImagesFragment[next].querySelector('.click-image')?.click(); 
5012           
5013          const nextBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + next +  '"]') 
5014          nextBullet.classList.add('current-item'); 
5015          currentItem = next; 
5016
5017 
5018        nextImage.addEventListener('click', () => { 
5019          changeImage(currentItem + 1); 
5020        }); 
5021 
5022        previousImage.addEventListener('click', () => { 
5023          changeImage(currentItem - 1); 
5024        }); 
5025 
5026        bullets.forEach((bullet, bulletIndex) => { 
5027          bullet.addEventListener('click', (_) => changeImage(bulletIndex)) ; 
5028        }); 
5029 
5030        allModalImagesFragment.forEach((modalImageFragment, index)=>{ 
5031        const totalItems = allModalImagesFragment.length; 
5032        const bulletsContainer = document.querySelector(".ptb-news__read-news .gallery .image-bullets"); 
5033        const bullets = bulletsContainer.querySelectorAll(".bullet"); 
5034        let currentItem = 0; 
5035        const nextImage = document.querySelector(".ptb-news__read-news .gallery .right-arrow"); 
5036        const previousImage = document.querySelector(".ptb-news__read-news .gallery .left-arrow"); 
5037      }); 
5038 
5039        allModalImagesFragment.forEach((modalImageFragment, index)=>{ 
5040            const getImageClick = modalImageFragment.querySelector('.click-image'); 
5041            const imageContainer = modalImageFragment.querySelector('.modal-image-container'); 
5042            const imagePlayerContainer = modalImageFragment.querySelector('.image-player-container'); 
5043 
5044            const image = imagePlayerContainer.querySelector('img'); 
5045            const closeImage = imagePlayerContainer.querySelector('.close-image'); 
5046            const body = document.body; 
5047 
5048            const toTopButton = document.querySelector(".fragment_88038 .petro-button"); 
5049 
5050            getImageClick.addEventListener('click', () => { 
5051                if (document.body.classList.contains('has-edit-mode-menu')) { 
5052                    return; 
5053
5054                currentItem = index; 
5055                if (imagePlayerContainer.classList.contains('image-playing')) { 
5056                    toTopButton && (toTopButton.style.zIndex = ""); 
5057                    stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage); 
5058                } else { 
5059                    playImage(index, getImageClick, imagePlayerContainer, imageContainer, closeImage); 
5060                    toTopButton && (toTopButton.style.zIndex = "1"); 
5061
5062            }) 
5063 
5064            closeImage.addEventListener('click', () => { 
5065                if (imagePlayerContainer.classList.contains('image-playing')) { 
5066                    toTopButton && (toTopButton.style.zIndex = ""); 
5067                    stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage); 
5068                    const bulletToClose = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + index +  '"]') 
5069                    bulletToClose?.classList.remove('current-item'); 
5070                }  
5071            }) 
5072        });             
5073    </script> 
5074 
5075</#macro> 
5076 
5077 
5078<#-- ################################################################################################################## --> 
5079	 
5080	 
5081	 
5082	 
5083	 
5084	 
5085	 
5086	 
5087	 
5088	 
5089	 
5090	 
5091	 
5092	<#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### --> 
5093<#macro renderQuotes newsInfo> 
5094    <#if newsInfo.quotes?size != 0> 
5095    <#--quotes "escondidas" que serão unidas a .ptb-news__read-content --> 
5096 
5097        <div class="ptb-news__quotes-container d-none "> 
5098            <div id="ptb-news__quotes-identifiers"> 
5099                <#assign separator = ""> 
5100                <#list newsInfo.quotes as quote> 
5101                    ${quote.id}; 
5102                    <#assign separator = ";"> 
5103                </#list> 
5104            </div> 
5105            <#list newsInfo.quotes as quote> 
5106                <#assign quotes_index = quote?index> 
5107                <div id="ptb-news__quotes-container-${quote_index}"> 
5108                    <#assign noAuthorWrapper = !((quote.image.url?? && quote.image.url?has_content) || (quote.author?has_content)) /> 
5109                    <div class="quote <#if noAuthorWrapper>no-author-wrapper</#if>"> 
5110                        <div class="text-wrapper"> 
5111                            <blockquote class="text">${quote.content}</blockquote > 
5112                        </div> 
5113                        <#if !noAuthorWrapper>   
5114                            <div class="author-wrapper"> 
5115                                <#if quote.image.url?? && quote.image.url?has_content> 
5116                                    <#assign imageUrl = "/o/adaptive-media/image/" + quote.image.fileEntryId +"/Thumbnail-300x300/image"/> 
5117                                    <img src="${imageUrl}" loading="lazy" alt="${quote.image.alt}">		 
5118                                </#if> 
5119                                <#if quote.author?? && quote?has_content>                             
5120                                    <p class="author">${quote.author}</p> 
5121                                </#if> 
5122                            </div> 
5123                        </#if> 
5124                    </div> 
5125                </div> 
5126            </#list> 
5127        </div> 
5128 
5129        <script> 
5130            var newsContent_code = document.querySelector(".news-content").innerHTML; 
5131 
5132            var quotesIdentifiers = document.querySelector("#ptb-news__quotes-identifiers").innerHTML.trim().split(";"); 
5133            quotesIdentifiers.forEach((quoteIdentifier, index) => { 
5134                const quoteIdentifierContent = document.querySelector("#ptb-news__quotes-container-" + index); 
5135                if (quoteIdentifierContent) { 
5136                    const tag = "#[" + quoteIdentifier.trim() + "]"; 
5137                    const splitContent = newsContent_code.split(tag); 
5138                    newsContent_code = splitContent.join(quoteIdentifierContent.innerHTML); 
5139                    //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent); 
5140
5141            }); 
5142 
5143 
5144            var ptb_news__read_content = document.querySelector(".news-content"); 
5145            ptb_news__read_content.innerHTML = newsContent_code; 
5146 
5147        </script> 
5148 
5149        <style> 
5150            
5151            .ptb-news__read-news .quote { 
5152                display: flex; 
5153                flex-direction: column; 
5154                gap: var(--space-md, 24px); 
5155
5156 
5157            .ptb-news__read-news .quote.no-author-wrapper{ 
5158                gap: 0; 
5159
5160 
5161            .ptb-news__read-news .quote .text-wrapper { 
5162                padding-left: var(--space-xl, 40px); 
5163
5164 
5165            .ptb-news__read-news .quote .text-wrapper .text { 
5166                font-style: var(--font-style-italic) !important; 
5167                padding-left: var(--space-md, 24px); 
5168                margin-bottom: 0; 
5169                border-left: 1px solid var(--border-color-mid, #d7d7d7); 
5170							  font-size: var(--font-size-xxs, 16px); 
5171
5172 
5173            .ptb-news__read-news .quote .author-wrapper {  
5174                display: flex; 
5175                flex-direction: row; 
5176                gap: var(--space-md, 24px); 
5177
5178 
5179            .ptb-news__read-news .news-content .quote .author-wrapper img { 
5180                height: var(--size-xxxl, 56px); 
5181                width: var(--size-xxxl, 56px); 
5182                border-radius: 100px; 
5183                border: var(--size-nano, 2px) solid var(--border-color-mid) !important; 
5184
5185 
5186            .ptb-news__read-news .news-content .quote .author-wrapper p { 
5187                margin: 0; 
5188                align-self: center; 
5189                font-size: var(--font-size-xs, 18px); 
5190                font-style: var(--font-style-normal, normal); 
5191                font-weight: var(--font-weight-bold, 700); 
5192                line-height: var(--line-height-xs, 100%); 
5193
5194 
5195            @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
5196                .ptb-news__read-news .quote .text-wrapper { 
5197                    padding-left: 0; 
5198
5199							 
5200							  .ptb-news__read-news .quote .text-wrapper .text { 
5201							      font-size: var(--font-size-xxxs, 14px); 
5202
5203 
5204                .ptb-news__read-news .news-content .quote .author-wrapper p { 
5205                    font-size: var(--font-size-xxs, 16px); 
5206
5207
5208        </style> 
5209    </#if> 
5210</#macro> 
5211 
5212 
5213					 
5214					 
5215<#-- ################################################################################################################## --> 
5216	 
5217	 
5218	 
5219	 
5220	 
5221	 
5222 
5223 
5224<#-- ############# Site de Crise - Notícia - Extrair dados de Notícias ################################################ --> 
5225<#-- 
5226Add elements from the sidebar to define your template. Type "${" to use the 
5227autocomplete feature. 
5228--> 
5229<#function extractFeaturedNewsHeadline fieldList xmlArticle> 
5230    <#return getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia")> 
5231</#function> 
5232 
5233<#function extractNewsSummary fieldList xmlArticle> 
5234    <#return getFieldValue(fieldList, xmlArticle, "Resumo da notícia")> 
5235</#function> 
5236 
5237<#function extractPublishDate journalArticle> 
5238    <#assign lastPublishDate = journalArticle.getModifiedDate()> 
5239    <#if journalArticle.getLastPublishDate()??> 
5240        <#assign lastPublishDate = journalArticle.getLastPublishDate()> 
5241    <#else> 
5242        <#assign lastPublishDate = journalArticle.getModifiedDate()> 
5243    </#if> 
5244    <#return lastPublishDate /> 
5245</#function> 
5246 
5247<#-- Seção da imagem de destaque ----------------------------------------------------------------------> 
5248<#function extractNewsMedia fieldList xmlArticle  fileEntryService> 
5249    <#-- Tentando pegar Imagem --> 
5250    <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) /> 
5251    <#assign media = {} /> 
5252    <#list mediasGroup as mediaGroup > 
5253        <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) />  
5254        <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "fileEntryId" : media.fileEntryId} /> 
5255 
5256        <#-- Se não tiver imagem, tentar pegar vídeo --> 
5257        <#if !media.imageSrc?has_content>               
5258            <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") /> 
5259            <#if youtubeID?? && youtubeID?has_content>  
5260                <#assign media = {"videoYotubeID": youtubeID} /> 
5261            <#else> 
5262                <#-- Tentar pegar vídeo Interno --> 
5263                <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) /> 
5264                <#if internalVideo?? && internalVideo?has_content> 
5265                    <#assign media = {"internalVideo": internalVideo} /> 
5266                </#if> 
5267            </#if>          
5268        </#if> 
5269 
5270        <#assign referenceMediasGroup = getNodes(getIdFromFieldName(fieldList, "Referências"), mediaGroup) /> 
5271        <#list referenceMediasGroup as referenciaMediaGroup > 
5272            <#assign credits = getFieldValue(fieldList, referenceMediasGroup, "Crédito da mídia de destaque da notícia") /> 
5273            <#assign legend = getFieldValue(fieldList, referenceMediasGroup, "Legenda da mídia de destaque da notícia") /> 
5274        </#list> 
5275 
5276        <#assign media = media + {"credits": credits, "legend": legend} /> 
5277         
5278    </#list> 
5279 
5280    <#return media> 
5281</#function> 
5282 
5283 
5284<#--------------------- Renderização de Lista de Cards -----------------------------------------------> 
5285 
5286<#-- Root Css -> Para poder instanciar dois elementos e não dar confusão no JS --> 
5287<#assign rootCss = "card-news-list-container_" + randomNumber(4586) /> 
5288 
5289<#attempt> 
5290    <#assign ourEnergyStyles = [] /> 
5291    <#list ourEnergyVocabulary.getCategories() as ourEnergyCategory > 
5292        <#assign shadowColorCategory = "" /> 
5293        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra")??)> 
5294            <#assign categoryShadowColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra") /> 
5295            <#assign shadowColorCategory = categoryShadowColorByService.value /> 
5296        </#if> 
5297 
5298        <#assign backgroundColorCategory = "" /> 
5299        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo")??)> 
5300            <#assign categoryBackgroundColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo") /> 
5301            <#assign backgroundColorCategory = categoryBackgroundColorByService.value /> 
5302        </#if> 
5303 
5304        <#assign textColorCategory = "" /> 
5305        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto")??)> 
5306            <#assign categoryTextColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto") /> 
5307            <#assign textColorCategory = categoryTextColorByService.value /> 
5308        </#if> 
5309 
5310        <#assign textColorHighContrastCategory = "" /> 
5311        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste")??)> 
5312            <#assign categoryTextColorHighContrastByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste") /> 
5313            <#assign textColorHighContrastCategory = categoryTextColorHighContrastByService.value /> 
5314        </#if> 
5315 
5316        <#assign ourEnergyStyles += [{"titleLocale": ourEnergyCategory.getTitle(locale),"shadowColor": shadowColorCategory, "backgroundColor": backgroundColorCategory, "textColor": textColorCategory, "textColorHighContrast": textColorHighContrastCategory}] /> 
5317    </#list> 
5318 
5319    <#recover> 
5320        <#assign ourEnergyStyles = [] /> 
5321     
5322</#attempt> 
5323 
5324<#-- Função para obter a primeira categoria associonada a um Vocabulário o qual está associado a um Jornal Article --> 
5325<#function getFirstCategoryTitleLocaleOfVocabulary journalArticle vocabulary > 
5326    <#attempt> 
5327        <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) /> 
5328         
5329        <#list categories as category> 
5330            <#if vocabulary.getVocabularyId() == category.getVocabularyId()> 
5331                <#return category.getTitle(locale)> 
5332            </#if> 
5333        </#list> 
5334 
5335        <#return ""> 
5336 
5337        <#recover> 
5338            <#return "" /> 
5339 
5340    </#attempt> 
5341</#function> 
5342 
5343<#-- Função para obter os dados de um card no Web Content (Journal Article) --> 
5344<#function getDataForCard entry > 
5345    <#attempt> 
5346        <#assign journalArticle = journalArticleLocalService.getLatestArticle(entry.getClassPK()) /> 
5347        <#assign ddmStructure = journalArticle.getDDMStructure() /> 
5348        <#assign fieldList = getFieldListByStructure(ddmStructure) /> 
5349        <#assign xmlArticle = journalArticle.getDocument().getRootElement() /> 
5350 
5351        <#-- Tentando pegar Imagem --> 
5352        <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) /> 
5353        <#assign media = "" /> 
5354        <#list mediasGroup as mediaGroup > 
5355            <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) /> 
5356 
5357            <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${media.fileEntryId}") /> 
5358 
5359            <#assign urlAdaptativeMediaDesktop = ""/> 
5360            <#assign urlAdaptativeMediaMobile = ""/> 
5361            <#if media.url?? && media.url?has_content && fileDataRequest?? && fileDataRequest.adaptedImages?? > 
5362                <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages /> 
5363                <#list dataAdaptativeMedia as data> 
5364                    <#if data.resolutionName == adaptativeMediaDesktopResolutionName> 
5365                        <#assign urlAdaptativeMediaDesktop = data.contentUrl/> 
5366                    </#if> 
5367                    <#if data.resolutionName == adaptativeMediaMobileResolutionName> 
5368                        <#assign urlAdaptativeMediaMobile = data.contentUrl/> 
5369                    </#if>      
5370                </#list> 
5371            </#if> 
5372            <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "imageFileEntryId": media.fileEntryId, "urlAdaptativeMedia": {"mobile": urlAdaptativeMediaMobile, "desktop": urlAdaptativeMediaDesktop}} />  
5373             
5374            <#-- Se não tiver imagem, tentar pegar vídeo --> 
5375            <#if !media.imageSrc?? || !media.imageSrc?has_content>               
5376                <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") /> 
5377                <#if youtubeID?? && youtubeID?has_content>  
5378                    <#assign media = {"videoYotubeID": youtubeID} /> 
5379                <#else> 
5380                    <#-- Tentar pegar vídeo Interno --> 
5381                    <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) /> 
5382                    <#if internalVideo?? && internalVideo?has_content> 
5383                        <#assign media = {"internalVideo": internalVideo} /> 
5384                    </#if> 
5385                </#if>          
5386            </#if> 
5387        </#list> 
5388 
5389        <#assign title = getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia") /> 
5390 
5391        <#assign timeRead = getFieldValue(fieldList, xmlArticle, "Tempo de Leitura") /> 
5392 
5393        <#assign ourEnergyCategory = getFirstCategoryTitleLocaleOfVocabulary(entry, ourEnergyVocabulary) /> 
5394 
5395        <#assign typeOfNews = getFirstCategoryTitleLocaleOfVocabulary(entry, typeOfNewsVocabulary) /> 
5396 
5397        <#if themeDisplay.getPortalURL()?contains("webserver")> 
5398					<#assign urlNews = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + journalArticle.getUrlTitle()> 
5399				<#else> 
5400						<#assign urlNews = themeDisplay.getPortalURL() + "/w/" + journalArticle.getUrlTitle()> 
5401				</#if> 
5402         
5403        <#assign cardData = {"media": media, "title": title, "timeRead": timeRead, "ourEnergyCategory": ourEnergyCategory, "typeOfNews": typeOfNews, "urlNews": urlNews} /> 
5404         
5405        <#return cardData> 
5406 
5407        <#recover> 
5408            <#return {} /> 
5409    </#attempt> 
5410 
5411    <#-- cardData ->    image: url, alt 
5412                        title 
5413                        timeRead 
5414                        ourEnergyCategory 
5415                        typeOfNews 
5416                        urlNews 
5417    --> 
5418</#function> 
5419 
5420 
5421<#-- Macro para renderizar os arrows--> 
5422<#macro renderArrows> 
5423    <div class="card-news-list-arrows-breakpoint"> 
5424        <div class="card-news-list-arrows"> 
5425            <div class="card-news-arrow-left arrow-disable">  
5426                <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg"> 
5427                    <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"/> 
5428                    <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"/> 
5429                </svg> 
5430            </div> 
5431            <div class="card-news-arrow-right">  
5432                <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg"> 
5433                    <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"/> 
5434                    <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"/> 
5435                </svg> 
5436 
5437            </div> 
5438        </div> 
5439    </div> 
5440 
5441    <style> 
5442 
5443        .${rootCss} .card-news-list-arrows-breakpoint { 
5444            position: relative; 
5445            z-index: 1; 
5446					width: 100%; 
5447
5448 
5449        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows { 
5450            display: flex; 
5451            align-items: flex-start; 
5452            justify-self: flex-end; 
5453            gap: var(--space-xxs, 8px); 
5454
5455         
5456        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left, 
5457        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right { 
5458            cursor: pointer; 
5459
5460 
5461        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(1), 
5462        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(1) { 
5463            fill: rgb(0, 133, 66); 
5464
5465 
5466        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), 
5467        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) { 
5468            fill: white; 
5469
5470 
5471        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(2), 
5472        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(2) { 
5473            stroke: #fff; 
5474
5475 
5476        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), 
5477        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) { 
5478            stroke: #010101; 
5479
5480 
5481        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable, 
5482        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable { 
5483            opacity: 0.4; 
5484            cursor: auto; 
5485
5486 
5487        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path, 
5488        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path { 
5489            stroke: rgb(0, 133, 66); 
5490            transition: all 300ms ease-in-out; 
5491
5492 
5493        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path, 
5494        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path { 
5495            stroke: rgba(228, 247, 232, 1); 
5496
5497 
5498        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1), 
5499        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) { 
5500            stroke: rgb(149, 149, 149); 
5501
5502 
5503        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1), 
5504        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) { 
5505            stroke: rgba(215, 215, 215, 1); 
5506
5507 
5508        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2), 
5509        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) { 
5510            stroke: rgb(82, 82, 82); 
5511
5512 
5513        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2), 
5514        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) { 
5515            stroke: rgba(149, 149, 149, 1); 
5516
5517 
5518        @media screen and (min-width: 1440px) { 
5519            .${rootCss} .card-news-list-arrows-breakpoint { 
5520                width: 100%; 
5521
5522
5523 
5524        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
5525 
5526            .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows { 
5527                justify-self: flex-start; 
5528                margin-top: var(--space-lg); 
5529
5530
5531 
5532    </style> 
5533 
5534</#macro> 
5535 
5536 
5537<#-- Macro para renderizar um Card --> 
5538<#macro renderCard cardData> 
5539    <#-- cardData ->    image: url, alt 
5540                        title 
5541                        timeRead 
5542                        ourEnergyCategory 
5543                        typeOfNews 
5544                        urlNews 
5545    --> 
5546 
5547    <div class="card-news-container"> 
5548        <a class="news-page-see-more-link card-news-link" href="${cardData.urlNews}">  Link da Notícia ${cardData.title}  </a> 
5549        <div class="card-news-thumb"> 
5550            <#assign noImage = "" /> 
5551            <#if cardData.media.imageSrc?? && cardData.media.imageSrc?has_content> 
5552                <#assign imageSrcDesktop = cardData.media.imageSrc /> 
5553                <#assign imageSrcMobile = cardData.media.imageSrc /> 
5554                <#if cardData.media.urlAdaptativeMedia?? && cardData.media.urlAdaptativeMedia?has_content> 
5555                    <#assign imageSrcDesktop = cardData.media.urlAdaptativeMedia.desktop /> 
5556                    <#assign imageSrcMobile = cardData.media.urlAdaptativeMedia.mobile /> 
5557                </#if> 
5558                <picture> 
5559                    <source media="(max-width:767px)" srcset="${imageSrcMobile}"> 
5560                    <img class="card-news-image" loading="lazy" src="${imageSrcDesktop}" alt="${cardData.media.imageAlt}"/> 
5561                </picture>		 
5562            <#else> 
5563                <#if cardData.media.videoYotubeID?? && cardData.media.videoYotubeID?has_content> 
5564                <picture> 
5565                    <source media="(max-width:767px)" srcset="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/mqdefault.jpg"> 
5566                    <img class="card-news-image" loading="lazy" src="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/maxresdefault.jpg" alt="YouTube Thumbnail"/> 
5567                </picture>  
5568                <#else> 
5569                    <#if (cardData.media.internalVideo?? && cardData.media.internalVideo.url?has_content) > 
5570                        <video class="card-news-image" loading="lazy"> 
5571                            <source src="${cardData.media.internalVideo.url}"> 
5572                            Your browser does not support the video tag. 
5573                        </video> 
5574                    <#else> 
5575                        <#assign noImage = "no-image" /> 
5576                    </#if> 
5577                </#if> 
5578                <svg class="thumb-play-icon" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
5579                    <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"/> 
5580                    <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"/> 
5581                </svg>        
5582            </#if>         
5583        </div> 
5584         
5585        <div class="card-news-category-container ${noImage}">  
5586            <div data-category="${cardData.ourEnergyCategory}" class="card-news-category paragraph-micro-regular"> ${cardData.ourEnergyCategory} </div> 
5587        </div>  
5588 
5589        <div class="card-news-text-content ${noImage}">  
5590            <div class="card-news-title h5"> ${cardData.title} </div> 
5591 
5592             <div class="card-news-info">  
5593                <div class="card-news-type">  
5594                    <#if getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default(""))?? > 
5595												<#assign postTypeIconUrl = getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default("")) /> 
5596												<img src="${postTypeIconUrl}" loading="lazy" alt="post type icon" /> 
5597                        <div class="card-news-type-text paragraph-micro-regular">${cardData.typeOfNews}</div> 
5598												<#else/> 
5599                            <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 
5600                                <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"/> 
5601                            </svg>										 
5602                            <div class="card-news-type-text paragraph-micro-regular">Artigo</div> 
5603										</#if> 
5604                </div> 
5605 
5606								<#if cardData.timeRead?? && cardData.timeRead?has_content> 
5607									<div class="card-news-time-read">  
5608											<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"> 
5609													<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"/> 
5610											</svg> 
5611 
5612											<div class="card-news-time-read-text paragraph-micro-regular">${cardData.timeRead} min</div> 
5613									</div> 
5614								</#if> 
5615            </div> 
5616        </div> 
5617    </div> 
5618</#macro> 
5619 
5620<style> 
5621    .${rootCss} .card-news-container { 
5622        width: 300px; 
5623        height: 370px; 
5624        display: flex; 
5625        flex-direction: column; 
5626        flex-shrink: 0; 
5627        align-items: flex-start; 
5628        border-radius: var(--border-radius-lg); 
5629        border: var(--border-width-hairline) solid var(--border-card-default, #EEE); 
5630        background: var(--background-surface-level-01, #FFF); 
5631        box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12); 
5632        overflow: hidden; 
5633        scroll-snap-align: start; 
5634        cursor: pointer; 
5635        transition: border 300ms ease-in-out; 
5636        text-decoration: none; 
5637        position: relative; 
5638
5639 
5640    body.high-contrast-active .${rootCss} .card-news-container {      
5641        border: var(--border-width-hairline) solid var(--border-card-default, #525252); 
5642        background: var(--background-surface-level-01, #010101); 
5643
5644 
5645    .${rootCss} .card-news-container:hover { 
5646        border: var(--border-width-hairline) solid rgb(0, 133, 66); 
5647
5648 
5649    body.high-contrast-active .${rootCss} .card-news-container:hover { 
5650        border: var(--border-width-hairline) solid var(--border-card-default, #E4F7E8); 
5651
5652 
5653    .${rootCss} .card-news-container .card-news-link { 
5654        position: absolute; 
5655        top: 0; 
5656        width: 100%; 
5657        height: 100%; 
5658        z-index: 1; 
5659        opacity: 0; 
5660
5661 
5662    .${rootCss} .card-news-container .card-news-thumb { 
5663        position: relative; 
5664
5665 
5666    .${rootCss} .card-news-container .card-news-image { 
5667        width: 298px; 
5668        height: 168px; 
5669        object-fit: cover; 
5670
5671 
5672 
5673    .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon { 
5674        position: absolute; 
5675        left: 50%; 
5676        top: 50%; 
5677        transform: translate(-50%, -50%); 
5678
5679 
5680    body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(1) { 
5681        fill: black;   
5682
5683 
5684    body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(2) { 
5685        fill: white;   
5686
5687 
5688    .${rootCss} .card-news-container .card-news-category-container { 
5689        position: relative; 
5690
5691 
5692    .${rootCss} .card-news-container .card-news-category-container .card-news-category { 
5693        display: flex; 
5694        justify-content: center; 
5695        align-items: center;  
5696        padding: var(--space-micro) var(--space-xs); 
5697        position: absolute; 
5698        z-index: 2; 
5699        left: var(--space-md); 
5700        top: -13px; 
5701        border-radius: var(--border-radius-pill); 
5702        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); 
5703        box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10); 
5704        line-height: var(--line-height-lg, 144%); 
5705        color: var(--default-sup-green-water, #006B65); 
5706			  white-space: nowrap; 
5707
5708 
5709    body.high-contrast-active .${rootCss} .card-news-container .card-news-category-container .card-news-category { 
5710        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); 
5711        color: var(--default-sup-green-water, #99E0DD);  
5712
5713 
5714    .${rootCss} .card-news-container .card-news-category-container.no-image .card-news-category { 
5715        position: relative; 
5716        top: 0; 
5717        left: 0; 
5718        margin-left: var(--space-md); 
5719        margin-top: var(--space-md); 
5720
5721 
5722    .${rootCss} .card-news-container .card-news-text-content { 
5723        display: flex; 
5724        padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px); 
5725        flex-direction: column; 
5726        justify-content: space-between; 
5727        align-items: flex-start; 
5728        flex: 1 0 0; 
5729        align-self: stretch; 
5730
5731 
5732    .${rootCss} .card-news-container .card-news-text-content.no-image { 
5733        padding-top: var(--space-sm); 
5734
5735 
5736    .${rootCss} .card-news-container .card-news-text-content .card-news-title { 
5737        display: -webkit-box; 
5738        -webkit-box-orient: vertical; 
5739        -webkit-line-clamp: 4; 
5740        align-self: stretch; 
5741        overflow: hidden; 
5742        color: var(--text-primary-default, #373737); 
5743        text-overflow: ellipsis; 
5744        margin: 0; 
5745
5746 
5747    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-title { 
5748        color: var(--text-primary-default, #FFF); 
5749
5750 
5751    .${rootCss} .card-news-container .card-news-text-content .card-news-info { 
5752        display: flex; 
5753        align-items: center; 
5754        align-content: center; 
5755        gap: var(--space-sm, 16px); 
5756        align-self: stretch; 
5757        flex-wrap: wrap; 
5758
5759 
5760    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type, 
5761    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read { 
5762        display: flex; 
5763        align-items: center; 
5764        gap: var(--space-xxs, 8px); 
5765
5766 
5767    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type path { 
5768        stroke: #D7D7D7; 
5769
5770 
5771    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text, 
5772    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text { 
5773        color: var(--text-tertiary-default, #959595); 
5774        line-height: var(--line-height-lg, 144%); 
5775
5776 
5777    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text, 
5778    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text { 
5779        color: var(--text-tertiary-default, #EEE); 
5780
5781 
5782    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-icon-time-read { 
5783        transform: translateY(-0.5px); 
5784
5785 
5786    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 { 
5787        fill: #D7D7D7; 
5788
5789</style> 
5790 
5791<#assign maxNumberOfCards = 9/> 
5792<#assign className = "com.liferay.journal.model.JournalArticle" /> 
5793<#assign classNameId = PortalUtil.getClassNameId(className) /> 
5794${AssetEntryQuery.setClassNameIds([classNameId]) } 
5795${AssetEntryQuery.setEnd(maxNumberOfCards)} 
5796 
5797<#assign entries = []/> 
5798<#assign ourEnergyCategoriesIds = getAllCategoryIdOfVocabulary(assetEntry, ourEnergyVocabulary) /> 
5799<#list ourEnergyCategoriesIds as ourEnergyCategoryId> 
5800    ${AssetEntryQuery.setAllCategoryIds([ourEnergyCategoryId])} 
5801    <#assign ents = AssetEntryQueryService.getEntries(AssetEntryQuery) /> 
5802    <#assign entries = entries + ents /> 
5803</#list> 
5804 
5805 
5806<#-- Renderizar Lista de cards --> 
5807<#if entries?has_content> 
5808    <div class="${rootCss}"> 
5809        <div class="list-of-news-title breakpoint"> 
5810            <div class="list-of-news-title-col col-1-12 md-col-1-8 sm-col-1-4"> 
5811                <div class="list-title fragment_85017"> 
5812                    <div class="petro-title"> 
5813                        <h2 id="title" class="display-sm" style="color: var(--color-neutral-800)"> 
5814                            <#if locale?lower_case == "pt_br"> Leia também <#else> Read also </#if> 
5815                        </h2> 
5816                        <div class="yellow-bar-container">   
5817                            <div class="yellow-bar bar-display-sm" style="background-color: var(--color-secondary-medium)"></div> 
5818                               <@renderArrows /> 
5819                        </div> 
5820                    </div> 
5821                </div> 
5822            </div>  
5823        </div> 
5824         
5825        <div class="card-news-list-breakpoint breakpoint"> 
5826            <div class="card-news-list col-1-12 md-col-1-8 sm-col-1-4">  
5827                <#if entries?size gt maxNumberOfCards> 
5828                    <#assign entries = entries[0..maxNumberOfCards] /> 
5829                </#if> 
5830                <#list entries as entry> 
5831                    <#if assetEntry.getClassPK() != entry.getClassPK() > 
5832                        <#assign cardData = getDataForCard(entry) /> 
5833                        <@renderCard cardData/> 
5834                    </#if> 
5835                </#list> 
5836            </div> 
5837        </div>   
5838    </div> 
5839</#if> 
5840 
5841 
5842<style> 
5843    .portlet { 
5844        margin: 0; 
5845
5846     
5847    .${rootCss} { 
5848        padding: var(--space-giant, 80px) 0; 
5849        background: var(--background-surface-level-01, #FFF); 
5850        width: 100%; 
5851        position: relative; 
5852        font-family: var(--font-family-base, "Petrobras Sans"); 
5853        display: flex; 
5854        flex-direction: column; 
5855        gap: var(--space-lg); 
5856
5857 
5858    body.high-contrast-active .${rootCss} { 
5859        background: var(--background-surface-level-01, #010101); 
5860
5861 
5862    .${rootCss} .list-of-news-title { 
5863        position: relative; 
5864        z-index: 1; 
5865
5866 
5867    .${rootCss} body.high-contrast-active .fragment_614685 .petro-title .yellow-bar { 
5868        background-color: #FFEEB3 !important; 
5869
5870 
5871    .${rootCss} .petro-title > div:has(> .yellow-bar, > .card-news-list-arrows-breakpoint) { 
5872        display: flex;     
5873
5874 
5875    .${rootCss} .card-news-list { 
5876        display: flex; 
5877        gap: var(--space-lg); 
5878        overflow: auto; 
5879        position: relative; 
5880        z-index: 1; 
5881        scroll-snap-type: x mandatory; 
5882        scrollbar-width: none; 
5883
5884 
5885    .${rootCss} .card-news-list::-webkit-scrollbar { 
5886        display: none; 
5887
5888 
5889    @media screen and (min-width: 1441px) { 
5890        .${rootCss} .card-news-list-breakpoint { 
5891            width: 100%;            
5892
5893 
5894        .${rootCss} .list-of-news-title { 
5895            width: 100%; 
5896
5897
5898 
5899    @media screen and (max-width: 1024px) { 
5900        .${rootCss} .fragment_614685 { 
5901            padding: var(--space-xxl, 56px) 0; 
5902
5903
5904    
5905    @media screen and (max-width: 768px) { 
5906				.${rootCss} .petro-title > div:has(> .yellow-bar, > .card-news-list-arrows-breakpoint) { 
5907						flex-direction: column; 
5908
5909
5910 
5911 
5912</style> 
5913 
5914<#list ourEnergyStyles as ourEnergyStyle> 
5915    <style> 
5916        .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] { 
5917            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; 
5918            box-shadow: 0px 2px 6px 0px #${ourEnergyStyle.shadowColor} !important; 
5919            color: #${ourEnergyStyle.textColor} !important; 
5920
5921 
5922        body.high-contrast-active .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] { 
5923             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; 
5924            color: #${ourEnergyStyle.textColorHighContrast} !important; 
5925
5926 
5927    </style> 
5928</#list> 
5929 
5930<script> 
5931 
5932    function disableEnableArrow(arrow, scrollBar, maxDistance, direction) 
5933
5934        if(direction === "left") { 
5935            if (scrollBar.scrollLeft > 0) { 
5936                arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable"); 
5937
5938            else { 
5939                !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable"); 
5940
5941        }  
5942        else if(direction === "right") { 
5943            if (Math.ceil(scrollBar.scrollLeft + scrollBar.clientWidth) < maxDistance) { 
5944                arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable"); 
5945
5946            else { 
5947                !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable"); 
5948
5949
5950
5951 
5952    function scrollCarousel() 
5953
5954        const root = document.querySelector(".${rootCss}"); 
5955        if(root) { 
5956            const scrollBar = root.querySelector(".${rootCss} .card-news-list"); 
5957            const gap = 32;// var(--space-lg); 
5958            const stepLength = scrollBar.querySelector(".card-news-container").offsetWidth + gap; 
5959            const arrowLeftBtn = root.querySelector(".card-news-arrow-left") 
5960            const arrowRightBtn = root.querySelector(".card-news-arrow-right") 
5961 
5962            let maxDistance = scrollBar.scrollWidth; 
5963 
5964            arrowLeftBtn.addEventListener('click', () => { 
5965                if (scrollBar.scrollLeft > 0) { 
5966                    scrollBar.scroll({ 
5967                        left: scrollBar.scrollLeft - stepLength, 
5968                        behavior: "smooth", 
5969                    });	 
5970
5971            }); 
5972 
5973            arrowRightBtn.addEventListener('click', () => { 
5974                if (scrollBar.scrollLeft < maxDistance) { 
5975                    scrollBar.scroll({ 
5976                        left: scrollBar.scrollLeft + stepLength, 
5977                        behavior: "smooth", 
5978                    }); 
5979
5980            }); 
5981             
5982            scrollBar.addEventListener("scroll", ()=>{ 
5983                disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left"); 
5984                disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right"); 
5985            }); 
5986 
5987            disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left"); 
5988            disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right"); 
5989 
5990        }        
5991
5992 
5993    document.addEventListener('DOMContentLoaded', scrollCarousel); 
5994 
5995</script> 
5996	 
5997<style> 
5998 
5999 
6000.ptb-news__read-news .news-content .embed-responsive-youtube::before { 
6001    padding-top: 0; 
6002
6003	 
6004.ptb-news__read-news .news-content .embed-responsive-liferay::before { 
6005    padding-top: calc(9/16 *100% - 64px); 
6006
6007 
6008.ptb-news__read-news .news-content .thumnail-play-button { 
6009
6010 
6011.ptb-news__read-news .news-content .thumnail-play-button { 
6012    position: relative; 
6013    z-index: 100; 
6014    height: 64px; 
6015    width: 64px; 
6016    background-repeat: no-repeat; 
6017    top: calc(50%); 
6018    left: calc(50% - 32px); 
6019
6020	 
6021	 
6022.ptb-news__read-news .news-content .thumnail-play-button-youtube { 
6023    position: absolute; 
6024    z-index: 100; 
6025    height: 64px; 
6026    width: 64px; 
6027    background-repeat: no-repeat; 
6028	top: calc(50% - 135px); 
6029    left: calc(50% - 32px); 
6030
6031 
6032.ptb-news__read-news .news-content .thumnail-play-button-liferay { 
6033    position: relative; 
6034    z-index: 100; 
6035    height: 64px; 
6036    width: 64px; 
6037    top: calc(-50% + 32px); 
6038    left: calc(50% - 32px); 
6039    background-repeat: no-repeat; 
6040
6041 
6042	 
6043	.ptb-news__read-news .news-content .embed-responsive-youtube img { 
6044	width: 100%; 
6045		height: 100%; 
6046
6047	 
6048</style> 
6049 
6050	<script> 
6051	<#assign createYoutubeThumbnails = "createYoutubeThumbnails_"+ randomNumber(5952) />  
6052	 
6053	function ${createYoutubeThumbnails}(){ 
6054 
6055        const newsContent = document.querySelector(".news-content"); 
6056 
6057        const getYoutubeId = (youtubeUrl) => { 
6058 
6059            const url = new URL(youtubeUrl); 
6060            const splittedPathName = url.pathname.split("/"); 
6061 
6062            if (splittedPathName.length <= 0){ 
6063                return ""; 
6064
6065 
6066            return splittedPathName[splittedPathName.length-1]; 
6067        }; 
6068		 
6069		    window.addEventListener("resize", (event) => { 
6070				const iframeList = newsContent.querySelectorAll('iframe'); 
6071           iframeList.forEach((iframe) => { 
6072                const src = iframe.src; 
6073                if (!src){ 
6074                    return; 
6075
6076 
6077                const isYoutube = src.toLowerCase().includes("youtube"); 
6078                if (!isYoutube){ 
6079                    return; 
6080
6081						  
6082						    const iframeParent = iframe.parentNode; 
6083						  
6084						    const thumbnail = iframeParent.querySelector("img"); 
6085                if (thumbnail){ 
6086					         // thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px"; 
6087
6088				   }); 
6089				 
6090				}); 
6091         
6092        const iframeList = newsContent.querySelectorAll('iframe'); 
6093        iframeList.forEach((iframe) => { 
6094                const src = iframe.src; 
6095                if (!src){ 
6096                    return; 
6097
6098 
6099                const isYoutube = src.toLowerCase().includes("youtube"); 
6100                if (!isYoutube){ 
6101                    return; 
6102
6103 
6104                const iframeParent = iframe.parentNode; 
6105 
6106                const thumbnail = document.createElement("img"); 
6107                thumbnail.src = 'https://img.youtube.com/vi/' + getYoutubeId(src) +'/hqdefault.jpg'; 
6108                thumbnail.alt = "Youtube"; 
6109                thumbnail.loading = "lazy"; 
6110					      //thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px"; 
6111 
6112                const playButton = document.createElement("div"); 
6113                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")'; 
6114                playButton.classList.add("thumnail-play-button-youtube"); 
6115                const children = iframeParent.children; 
6116 
6117                if (children.length > 0) { 
6118                    iframeParent.insertBefore(thumbnail, children.firstChild); 
6119                    iframeParent.insertBefore(playButton, thumbnail); 
6120                    iframe.classList.add("hide"); 
6121                    iframeParent.classList.add("embed-responsive-youtube"); 
6122
6123 
6124                playButton.addEventListener("click", () => { 
6125                    thumbnail.click(); 
6126                }); 
6127 
6128                thumbnail.addEventListener("click", () => { 
6129                    thumbnail.classList.add("hide"); 
6130                    playButton.classList.add("hide"); 
6131                    iframe.classList.remove("hide"); 
6132                    iframeParent.classList.remove("embed-responsive-youtube"); 
6133                    const url = new URL(src); 
6134                    const searchParams = url.searchParams; 
6135                    searchParams.set("rel", "0"); 
6136                    //searchParams.set("modestbranding", "0"); 
6137                    //searchParams.set("mute", "0"); 
6138                    //searchParams.set("color", "white"); 
6139                    searchParams.set("controls", "1"); 
6140                    //searchParams.set("playsinline", "1"); 
6141                    //searchParams.set("enablejsapi", "1"); 
6142                    searchParams.set("autoplay", "1"); 
6143                    //searchParams.set("logo", "0"); 
6144                    iframeParent.setAttribute("data-embed-id", url.toString()); 
6145                    iframe.setAttribute("src", url.toString()); 
6146                }); 
6147        }); 
6148  
6149
6150		 
6151	${createYoutubeThumbnails}(); 
6152		 
6153    <#assign createLRThumbnails = "createLRThumbnails"+ randomNumber(5952) />  
6154	 
6155	function ${createLRThumbnails}(){ 
6156 
6157        const newsContent = document.querySelector(".news-content"); 
6158        const iframeList = newsContent.querySelectorAll("iframe[data-video-liferay]"); 
6159 
6160        iframeList.forEach(iframe => {                       
6161 
6162            const playButton = document.createElement("div"); 
6163            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")'; 
6164            playButton.classList.add("thumnail-play-button-liferay"); 
6165            const children = iframe.parentNode.children; 
6166            if (children.length > 0) {                
6167                iframe.parentNode.insertBefore(playButton, children.firstChild);                 
6168
6169 
6170            iframe.addEventListener("load", () => { 
6171                if (iframe.contentDocument){ 
6172                    const video = iframe.contentDocument.body.querySelector("video"); 
6173                    video.removeAttribute("controls"); 
6174
6175            }); 
6176					 
6177					iframe.parentNode.classList.add("embed-responsive-liferay"); 
6178             
6179 
6180            playButton.addEventListener("click", () => { 
6181                playButton.classList.add("hide"); 
6182                playButton.classList.remove("thumnail-play-button-liferay");     
6183							iframe.parentNode.classList.remove("embed-responsive-liferay"); 
6184                if (iframe.contentDocument){ 
6185                    const video = iframe.contentDocument.body.querySelector("video"); 
6186                    video.setAttribute("controls", ""); 
6187                    video.play(); 
6188
6189            }); 
6190        }); 
6191
6192 
6193    ${createLRThumbnails}(); 
6194	 
6195    document.querySelectorAll(".news-content img").forEach(img => img.loading = "lazy"); 
6196 
6197  </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: