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 { 
1980            width: 100%; 
1981					  height: auto; 
1982            object-fit: cover; 
1983            border-radius: var(--border-radius-md, 16px); 
1984
1985 
1986        <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Artigo" > 
1987            .ptb-news__read-news .news-content img  { 
1988                aspect-ratio: 16/9; 
1989
1990        </#if> 
1991 
1992        .ptb-news__read-news .news-content .paragraph_separator { 
1993            display: flex; 
1994            width: 100%; 
1995            height: fit-content; 
1996            justify-content: center; 
1997            gap: 6px; 
1998
1999 
2000        .ptb-news__read-news .news-content .paragraph_separator .dot { 
2001            height: var(--size-micro, 4px); 
2002            width: var(--size-micro, 4px); 
2003            background-color: #959595; 
2004            border-radius: 100%; 
2005            display: inline-block; 
2006
2007 
2008        .ptb-news__read-news .news-content *:not(.stories-container *) { 
2009            font-family: var(--font-family-base); 
2010            font-style: var(--font-style-normal, normal); 
2011            font-weight: var(--font-weight-regular, 400); 
2012            font-size: var(--font-size-xs, 18px); 
2013            line-height: var(--line-height-xl, 160%); 
2014            color: var(--color-neutral-800, #373737); 
2015
2016 
2017        body.high-contrast-active .ptb-news__read-news .news-content * { 
2018            color: var(--text-primary-default, var(--color-neutral-100)); 
2019
2020 
2021        .ptb-news__read-news .news-content h1, 
2022        .ptb-news__read-news .news-content h1 *, 
2023        .ptb-news__read-news .news-content h2, 
2024        .ptb-news__read-news .news-content h2 *, 
2025        .ptb-news__read-news .news-content h3, 
2026        .ptb-news__read-news .news-content h3 *, 
2027        .ptb-news__read-news .news-content h4, 
2028        .ptb-news__read-news .news-content h4 *, 
2029        .ptb-news__read-news .news-content h5, 
2030        .ptb-news__read-news .news-content h5 *, 
2031        .ptb-news__read-news .news-content h6, 
2032        .ptb-news__read-news .news-content h6 * { 
2033            color: var(--color-neutral-800, #373737) !important; 
2034
2035 
2036        body.high-contrast-active .ptb-news__read-news .news-content h1, 
2037        body.high-contrast-active .ptb-news__read-news .news-content h1 *, 
2038        body.high-contrast-active .ptb-news__read-news .news-content h2, 
2039        body.high-contrast-active .ptb-news__read-news .news-content h2 *, 
2040        body.high-contrast-active .ptb-news__read-news .news-content h3, 
2041        body.high-contrast-active .ptb-news__read-news .news-content h3 *, 
2042        body.high-contrast-active .ptb-news__read-news .news-content h4, 
2043        body.high-contrast-active .ptb-news__read-news .news-content h4 *, 
2044        body.high-contrast-active .ptb-news__read-news .news-content h5, 
2045        body.high-contrast-active .ptb-news__read-news .news-content h5 *, 
2046        body.high-contrast-active .ptb-news__read-news .news-content h6, 
2047        body.high-contrast-active .ptb-news__read-news .news-content h6 * { 
2048            color: var(--text-primary-default, var(--color-neutral-100)) !important; 
2049
2050 
2051        .ptb-news__read-news .news-content h1:last-child, 
2052        .ptb-news__read-news .news-content h2:last-child, 
2053        .ptb-news__read-news .news-content h3:last-child, 
2054        .ptb-news__read-news .news-content h4:last-child, 
2055        .ptb-news__read-news .news-content h5:last-child, 
2056        .ptb-news__read-news .news-content h5:last-child, 
2057        .ptb-news__read-news .news-content h6:last-child, 
2058        .ptb-news__read-news .news-content p:last-child { 
2059            padding-bottom: 0 !important; 
2060
2061 
2062        .ptb-news__read-news .news-content h1, 
2063        .ptb-news__read-news .news-content h1 * { 
2064            font-size: var(--font-size-xxl) !important; 
2065            line-height: var(--line-height-sm) !important; 
2066            font-weight: var(--font-weight-bold) !important; 
2067            font-style: var(--font-style-normal) !important; 
2068            text-decoration: var(--text-decoration-none) !important; 
2069
2070 
2071        .ptb-news__read-news .news-content h2, 
2072        .ptb-news__read-news .news-content h2 * { 
2073             
2074            font-size: var(--font-size-xl) !important; 
2075            line-height: var(--line-height-sm) !important; 
2076            font-weight: var(--font-weight-bold) !important; 
2077            font-style: var(--font-style-normal) !important; 
2078            text-decoration: var(--text-decoration-none) !important; 
2079 
2080
2081 
2082        .ptb-news__read-news .news-content h2 { 
2083            margin-top: 48px !important; 
2084           margin-bottom: var(--space-xl, 40px) !important; 
2085 
2086
2087 
2088        .ptb-news__read-news .news-content h3, 
2089        .ptb-news__read-news .news-content h3 * { 
2090            font-size: var(--font-size-lg) !important; 
2091            line-height: var(--line-height-sm) !important; 
2092            font-weight: var(--font-weight-bold) !important; 
2093            font-style: var(--font-style-normal) !important; 
2094            text-decoration: var(--text-decoration-none) !important; 
2095
2096 
2097        .ptb-news__read-news .news-content h3 { 
2098            margin-bottom: var(--space-sm, 16px) !important; 
2099            margin-top: 48px !important; 
2100
2101 
2102        .ptb-news__read-news .news-content h4, 
2103        .ptb-news__read-news .news-content h4 * { 
2104            font-size: var(--font-size-md) !important; 
2105            line-height: var(--line-height-md) !important; 
2106            font-weight: var(--font-weight-bold) !important; 
2107            font-style: var(--font-style-normal) !important; 
2108            text-decoration: var(--text-decoration-none) !important; 
2109
2110 
2111        .ptb-news__read-news .news-content h4 { 
2112            margin-top: 48px !important; 
2113            margin-bottom: var(--space-sm, 16px) !important; 
2114
2115 
2116        .ptb-news__read-news .news-content h5, 
2117        .ptb-news__read-news .news-content h5 * { 
2118            font-size: var(--font-size-sm) !important; 
2119            line-height: var(--line-height-md) !important; 
2120            font-weight: var(--font-weight-bold) !important; 
2121            font-style: var(--font-style-normal) !important; 
2122            text-decoration: var(--text-decoration-none) !important; 
2123
2124 
2125        .ptb-news__read-news .news-content h5 { 
2126            margin-top: 48px !important; 
2127            margin-bottom: var(--space-sm, 16px) !important; 
2128
2129 
2130        .ptb-news__read-news .news-content table { 
2131            border-collapse: collapse; 
2132            border: none; 
2133            width: 100% !important; 
2134            margin: var(--space-md, 24px) 0; 
2135
2136 
2137        .ptb-news__read-news .news-content table * { 
2138            font-size: var(--font-size-xxs, 16px); 
2139            font-style: var(--font-style-normal, normal); 
2140            font-weight: var(--font-weight-regular, 400); 
2141            line-height: var(--line-height-xl, 160%); 
2142            color: var(--color-neutral-800, #373737); 
2143            border: 0; 
2144
2145 
2146        body.high-contrast-active .ptb-news__read-news .news-content table * { 
2147            color: var(--text-primary-default, var(--color-neutral-100)); 
2148
2149 
2150        .ptb-news__read-news .news-content table tbody > :first-child, 
2151        .ptb-news__read-news .news-content table tbody > :first-child * { 
2152            font-weight: var(--font-weight-bold, 700); 
2153            flex: 1 0 0; 
2154            background: var(--background-Surface-level-02, #F8F8F8); 
2155
2156 
2157        body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child, 
2158        body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child * { 
2159            background: #373737; 
2160
2161         
2162        .ptb-news__read-news .news-content table tbody { 
2163            display: flex; 
2164            flex-direction: column; 
2165
2166 
2167        .ptb-news__read-news .news-content table tbody * { 
2168            display: flex; 
2169            height: 100%; 
2170            align-items: center; 
2171            flex: 1 0 0; 
2172
2173	             
2174        .ptb-news__read-news .news-content table tbody tr * {          
2175            padding: 23px var(--space-lg, 32px); 
2176        }	 
2177             
2178 
2179        .ptb-news__read-news .news-content table tbody tr { 
2180            border-radius: var(--border-radius-md); 
2181            border: var(--border-width-hairline, 1px) solid #EEEEEE; 
2182
2183 
2184        body.high-contrast-active .ptb-news__read-news .news-content table tbody tr { 
2185            border: var(--border-width-hairline, 1px) solid #525252; 
2186
2187 
2188        .ptb-news__read-news .news-content table tbody tr:not(:last-child) { 
2189            border-bottom-left-radius: 0; 
2190            border-bottom-right-radius: 0; 
2191
2192 
2193        .ptb-news__read-news .news-content table tbody tr:not(:first-child) { 
2194            border-top-left-radius: 0; 
2195            border-top-right-radius: 0; 
2196            border-top: none; 
2197
2198 
2199        .ptb-news__read-news .news-content table tbody tr td:not(:last-child) { 
2200            border-right: var(--border-width-hairline, 1px) solid #EEEEEE; 
2201
2202 
2203        body.high-contrast-active .ptb-news__read-news .news-content table tbody tr td:not(:last-child) { 
2204            border-right: var(--border-width-hairline, 1px) solid #525252; 
2205
2206 
2207        .ptb-news__read-news .news-content table tbody tr:first-child td { 
2208            border-top: var(--border-width-hairline, 1px) solid #EEEEEE; 
2209            border-bottom: var(--border-width-hairline, 1px) solid #EEEEEE; 
2210
2211 
2212        body.high-contrast-active .ptb-news__read-news .news-content table tbody tr:first-child td { 
2213            border-top: var(--border-width-hairline, 1px) solid #525252; 
2214            border-bottom: var(--border-width-hairline, 1px) solid #525252; 
2215
2216 
2217        .ptb-news__read-news .news-content table tbody tr td:first-child { 
2218            padding-left: 0; 
2219
2220 
2221        .ptb-news__read-news .news-content table tbody tr td:last-child{ 
2222            padding-right: 0; 
2223
2224 
2225        .ptb-news__read-news .news-content audio { 
2226            display: none; 
2227
2228 
2229        .ptb-news__read-news .news-content .audio-template { 
2230            display: flex; 
2231            padding: var(--space-sm, 16px); 
2232            align-items: center; 
2233            gap: var(--space-md, 24px); 
2234            align-self: stretch; 
2235            border-radius: var(--border-radius-lg, 16px); 
2236            border: var(--border-width-hairline, 1px) solid var(--border-color-mid); 
2237            background: var(--background-card-default, #FFF); 
2238            max-height: var(--size-giant, 72px); 
2239            margin: 48px 0; 
2240
2241 
2242        body.high-contrast-active .ptb-news__read-news .news-content .audio-template { 
2243            background: var(--background-card-default, #010101); 
2244            border: var(--border-width-hairline, 1px) solid #525252; 
2245
2246 
2247        .ptb-news__read-news .news-content .audio-template .audio-button-play { 
2248            display: flex; 
2249            width: var(--size-xl, 40px); 
2250            height: var(--size-xl, 40px); 
2251            justify-content: center; 
2252            align-items: center; 
2253            flex-grow: 0; 
2254            flex-shrink: 0; 
2255            cursor: pointer; 
2256
2257 
2258        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon, 
2259        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon { 
2260            fill: #FFFFFF; 
2261
2262 
2263        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon path, 
2264        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon path { 
2265            fill: #010101; 
2266
2267 
2268        .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-play-icon { 
2269            display: block; 
2270
2271 
2272        .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-pause-icon { 
2273            display: none; 
2274
2275 
2276        .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-play-icon { 
2277            display: none; 
2278
2279 
2280        .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-pause-icon { 
2281            display: block; 
2282
2283 
2284        .ptb-news__read-news .news-content .audio-template .audio-sondwave { 
2285            display: flex; 
2286            flex-direction: column; 
2287            align-items: flex-start; 
2288            gap: var(--space-xxs, 8px); 
2289            flex: 1 0 0; 
2290            height: 100%; 
2291            flex-grow: 1; 
2292            flex-shrink: 1; 
2293
2294 
2295        .ptb-news__read-news .news-content .audio-template .audio-sondwave line { 
2296            stroke: #008542; 
2297
2298 
2299        .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active { 
2300            stroke: #90EE90; 
2301
2302 
2303        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line { 
2304            stroke: #E4F7E8; 
2305
2306 
2307        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active { 
2308            stroke: #666666; 
2309
2310 
2311        .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile { 
2312            display: none; 
2313
2314 
2315        .ptb-news__read-news .news-content .audio-template .audio-time { 
2316            display: flex; 
2317            flex-direction: column; 
2318            align-items: flex-start; 
2319            gap: var(--space-xxs, 8px); 
2320            flex: 1 0 0; 
2321            color: var(--text-primary-accent, #008542); 
2322            text-align: center; 
2323            font-family: var(--font-family-base); 
2324            line-height: 124% !important;  
2325            flex-grow: 0; 
2326            flex-shrink: 0; 
2327
2328 
2329        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-time {     
2330            color: var(--text-primary-accent, #E4F7E8); 
2331
2332 
2333        .ptb-news__read-news .news-content .audio-template .audio-button-mute { 
2334            width: var(--size-lg, 32px); 
2335            height: var(--size-lg, 32px); 
2336            flex-grow: 0; 
2337            flex-shrink: 0; 
2338            cursor: pointer; 
2339
2340 
2341        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-mute svg path { 
2342            stroke: white; 
2343            fill: none; 
2344
2345 
2346        .ptb-news__read-news .news-content .audio-template.audio-muted .audio-button-mute { 
2347            opacity: 0.6; 
2348
2349 
2350         
2351        @media screen and (max-width: 1023px) and (min-width: ${MAX_MOBILE_WIDTH}px) { 
2352            .ptb-news__read-news .news-content > * { 
2353                grid-column-start: 1; 
2354                grid-column-end: 9; 
2355            }        
2356
2357         
2358 
2359        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
2360 
2361            .ptb-news__read-news .news-content * { 
2362                font-size: var(--font-size-xxs, 16px); 
2363
2364 
2365             
2366            .ptb-news__read-news .news-content > * { 
2367                grid-column-start: 1; 
2368                grid-column-end: 5; 
2369
2370             
2371 
2372            .ptb-news__read-news .news-content h1, 
2373            .ptb-news__read-news .news-content h1 * { 
2374                font-size: var(--font-size-xl) !important; 
2375                line-height: var(--line-height-sm) !important; 
2376                font-weight: var(--font-weight-bold) !important; 
2377                font-style: var(--font-style-normal) !important; 
2378                text-decoration: var(--text-decoration-none) !important; 
2379 
2380
2381 
2382            .ptb-news__read-news .news-content h2, 
2383            .ptb-news__read-news .news-content h2 * { 
2384                font-size: var(--font-size-lg) !important; 
2385                line-height: var(--line-height-sm) !important; 
2386                font-weight: var(--font-weight-bold) !important; 
2387                font-style: var(--font-style-normal) !important; 
2388                text-decoration: var(--text-decoration-none) !important; 
2389
2390 
2391            .ptb-news__read-news .news-content h2 { 
2392                margin-bottom: var(--space-md, 24px) !important; 
2393
2394 
2395            .ptb-news__read-news .news-content h3, 
2396            .ptb-news__read-news .news-content h3 * { 
2397                font-size: var(--font-size-md) !important; 
2398                line-height: var(--line-height-sm) !important; 
2399                font-weight: var(--font-weight-bold) !important; 
2400                font-style: var(--font-style-normal) !important; 
2401                text-decoration: var(--text-decoration-none) !important; 
2402
2403 
2404            .ptb-news__read-news .news-content h3 { 
2405                margin-top: var(--space-xxs, 8px) !important; 
2406
2407 
2408            .ptb-news__read-news .news-content h4,  
2409            .ptb-news__read-news .news-content h4 * { 
2410                font-size: var(--font-size-sm) !important; 
2411                line-height: var(--line-height-md) !important; 
2412                font-weight: var(--font-weight-bold) !important; 
2413                font-style: var(--font-style-normal) !important; 
2414                text-decoration: var(--text-decoration-none) !important; 
2415
2416 
2417            .ptb-news__read-news .news-content h5, 
2418            .ptb-news__read-news .news-content h5 * { 
2419                font-size: var(--font-size-xs) !important; 
2420                line-height: var(--line-height-md) !important; 
2421                font-weight: var(--font-weight-bold) !important; 
2422                font-style: var(--font-style-normal) !important; 
2423                text-decoration: var(--text-decoration-none) !important; 
2424
2425 
2426            .ptb-news__read-news .news-content figure figcaption { 
2427                flex-direction: column; 
2428                gap: var(--space-xxs, 8px); 
2429
2430 
2431            .ptb-news__read-news .news-content figure figcaption, 
2432            .ptb-news__read-news .news-content figure figcaption * { 
2433                font-size: var(--font-size-micro, 12px); 
2434
2435 
2436            .ptb-news__read-news .news-content table { 
2437                margin-top: var(--space-xxs, 8px); 
2438                margin-bottom: var(--space-lg, 32px); 
2439
2440 
2441            .ptb-news__read-news .news-content table * { 
2442                font-size: var(--font-size-micro, 12px); 
2443                line-height: 19.2%; 
2444
2445 
2446            .ptb-news__read-news .news-content table tbody * { 
2447                height: 43px; 
2448                padding: var(--space-xs, 12px); 
2449
2450 
2451            .ptb-news__read-news .news-content .audio-template { 
2452                margin-top: var(--space-xxs, 8px); 
2453                margin-bottom: var(--space-lg, 32px); 
2454            }            
2455
2456 
2457        @media screen and (max-width: 500px) { 
2458             .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-desktop { 
2459                display: none; 
2460
2461 
2462            .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile { 
2463                display: block; 
2464
2465
2466    </style> 
2467 
2468    <style> 
2469.ws-carousel p { 
2470    margin: var(--space-none, 0) !important; 
2471
2472 
2473.ws-carousel { 
2474    display: flex; 
2475    flex-direction: column; 
2476    gap: var(--space-lg, 32px); 
2477    margin: var(--space-big, 72px) auto; 
2478
2479 
2480.ws-carousel .ws-carousel-header { 
2481    display: flex; 
2482    justify-content: space-between; 
2483
2484 
2485.ws-carousel .ws-carousel-header .h2, 
2486.ws-carousel .ws-carousel-header h2 { 
2487    color: var(--color-neutral-800, #373737) !important; 
2488    font-family: var(--font-family-base), "Petrobras Sans" !important; 
2489    line-height: 100% !important; 
2490    margin: var(--space-none, 0) ! important; 
2491
2492 
2493.ws-carousel .ws-carousel-header .nav-buttons { 
2494    display: flex; 
2495    justify-content: space-between; 
2496    gap: var(--space-xxs, 8px); 
2497
2498 
2499.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.left-arrow { 
2500    transform: scaleX(-1); 
2501
2502 
2503.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow { 
2504    cursor: pointer; 
2505
2506 
2507.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive { 
2508    cursor: not-allowed; 
2509
2510 
2511 
2512.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow path { 
2513    transition: stroke 0.3s ease; 
2514
2515 
2516.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive path { 
2517    stroke: #bababa; 
2518
2519 
2520.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.active path { 
2521    stroke: #008542; 
2522
2523 
2524 
2525.ws-carousel .ws-carousel-body { 
2526    overflow-x: scroll; 
2527    -ms-overflow-style: none; 
2528    -scrollbar-width: none; 
2529
2530 
2531.ws-carousel .ws-carousel-body::-webkit-scrollbar { 
2532    display: none; 
2533
2534 
2535.ws-carousel .ws-carousel-body .ws-container { 
2536    display: flex; 
2537    gap: var(--space-lg, 32px); 
2538
2539 
2540.ws-carousel .ws-carousel-body .ws-container .ws-item { 
2541    min-width: 300px; 
2542    max-width: 300px; 
2543    min-height: 400px; 
2544    max-height: 400px; 
2545    position: relative; 
2546    overflow: hidden; 
2547    border-radius: var(--border-radius-lg); 
2548    box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12); 
2549
2550 
2551.ws-carousel .ws-carousel-body .ws-container .ws-item:hover { 
2552    cursor: pointer; 
2553
2554 
2555.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-image { 
2556    position: absolute; 
2557    top: 50%; 
2558    left: 50%; 
2559    transform: translate(-50%, -50%); 
2560    height: 100%; 
2561
2562 
2563.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-overlay { 
2564    position: absolute; 
2565    background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.8) 100%); 
2566    width: 100%; 
2567    height: 100%; 
2568
2569 
2570.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label { 
2571    position: absolute; 
2572    margin: var(--space-md, 24px) 0 0 var(--space-md, 24px); 
2573    border-radius: var(--border-radius-pill, 100%); 
2574    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); 
2575    box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10); 
2576    padding: var(--space-micro, 2px) var(--space-xs, 12px); 
2577 
2578    color: var(--Default-sup-green-water, #006B65); 
2579    font-family: var(--font-family-base), "Petrobras Sans"; 
2580    font-size: var(--font-size-xxxs, 12px); 
2581    font-style: normal; 
2582    font-weight: var(--font-weight-regular, 400); 
2583    line-height: var(--line-height-sm, 120%); 
2584    color: #006B65; 
2585
2586 
2587.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content { 
2588    position: relative; 
2589    z-index: 1; 
2590    height: 100%; 
2591 
2592    display: flex; 
2593    padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px); 
2594    flex-direction: column; 
2595    justify-content: flex-end; 
2596    align-items: flex-start; 
2597    gap: var(--space-md, 24px); 
2598
2599 
2600.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content .h5 { 
2601    overflow: hidden; 
2602    color: #FFF !important; 
2603    text-overflow: ellipsis; 
2604    margin: 0 !important; 
2605    font-family: var(--font-family-base), "Petrobras Sans" !important; 
2606
2607 
2608@media (max-width: 768px) { 
2609 
2610    .ws-carousel .ws-carousel-header .nav-buttons { 
2611        gap: var(--space-micro, 12px); 
2612
2613 
2614    .ws-carousel .ws-carousel-header .nav-buttons .nav-arrow { 
2615        width: 44px; 
2616        height: 44px; 
2617
2618 
2619    .ws-carousel .ws-carousel-header { 
2620        flex-direction: column; 
2621        align-items: flex-start; 
2622        gap: var(--space-lg, 32px); 
2623
2624 
2625    .ws-carousel .ws-carousel-header .h2 { 
2626        font-size: var(--font-size-lg, 24px) !important; 
2627
2628 
2629    .ws-carousel .ws-carousel-body .ws-container { 
2630        gap: var(--space-lg, 32px); 
2631
2632 
2633    .ws-carousel .ws-carousel-body .ws-container .ws-item { 
2634        min-width: 225px; 
2635        max-width: 225px; 
2636        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; 
2637        box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12); 
2638
2639
2640    </style> 
2641 
2642<#--  Exibição de um único story com naveação direto no conteúdo  --> 
2643<style> 
2644  .stories-container * { 
2645    margin: 0; 
2646    padding: 0; 
2647    box-sizing: border-box; 
2648
2649 
2650  .stories-container { 
2651    position: relative; 
2652    /* 
2653      Largura das duas setas com position absolute: 64px 
2654      Largura das somas margens das setas: 48px 
2655 
2656    */ 
2657    width: calc(100vw - 64px - 48px); 
2658    max-width: 400px; 
2659    height: auto; 
2660    aspect-ratio: 59/105; 
2661    border-radius: 8px; 
2662
2663 
2664  .header-container { 
2665    position: absolute; 
2666    top: 0; 
2667    left: 0; 
2668    right: 0; 
2669    z-index: 3; 
2670    padding: 16px 16px 0 16px; 
2671    display: flex; 
2672    flex-direction: column; 
2673    gap: 24px; 
2674
2675 
2676  .story-header { 
2677    display: flex; 
2678    flex-direction: column; 
2679    gap: 8px; 
2680
2681 
2682  .progress-bars { 
2683    display: flex; 
2684    gap: 5px; 
2685    width: 100%; 
2686
2687 
2688  .progress-bar { 
2689    height: 3px; 
2690    background-color: rgba(255, 255, 255, 0.3); 
2691    flex-grow: 1; 
2692    border-radius: 3px; 
2693    overflow: hidden; 
2694
2695 
2696  .story-progress { 
2697    height: 100%; 
2698    background-color: white; 
2699    width: 0%; 
2700    transition: width 0.2s linear; 
2701
2702 
2703  .story-progress.completed { 
2704    width: 100% !important; 
2705
2706 
2707  .story-progress.active { 
2708    animation: progress 8s linear forwards; 
2709
2710 
2711  @keyframes progress { 
2712    from { 
2713      width: 0%; 
2714
2715 
2716    to { 
2717      width: 100%; 
2718
2719
2720 
2721  .story-slide { 
2722    position: absolute; 
2723    width: 100%; 
2724    height: 100%; 
2725    display: none; 
2726    flex-direction: column; 
2727    justify-content: center; 
2728    align-items: center; 
2729    color: white; 
2730    overflow: hidden; 
2731    border-radius: 8px; 
2732
2733 
2734  .story-slide::before { 
2735    position: absolute; 
2736    z-index: 2; 
2737    content: ''; 
2738    width: 100%; 
2739    height: 100%; 
2740    background: linear-gradient(180deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0) 100%); 
2741
2742 
2743  .story-slide.active { 
2744    display: flex; 
2745
2746 
2747  .story-image { 
2748    width: 100%; 
2749    height: 100% !important; 
2750    object-fit: cover; 
2751    position: absolute; 
2752    top: 0; 
2753    left: 0; 
2754    z-index: 1; 
2755    aspect-ratio: auto !important; 
2756
2757 
2758  .story-content { 
2759    position: relative; 
2760    z-index: 2; 
2761    color: white; 
2762    width: 100%; 
2763    display: flex; 
2764    flex-direction: column; 
2765    justify-content: flex-end; 
2766    height: 100%; 
2767    padding: 16px 24px 64px 24px; 
2768
2769 
2770  .story-content .content-wrapper { 
2771    display: flex; 
2772    flex-direction: column; 
2773    align-items: flex-start; 
2774    gap: 24px; 
2775    align-self: stretch; 
2776    padding: 0 16px; 
2777
2778 
2779  .story-content .content-wrapper.no-padding { 
2780    padding: 0; 
2781
2782 
2783  .story-title { 
2784    display: flex; 
2785    padding: 8px; 
2786    flex-direction: column; 
2787    align-items: flex-start; 
2788    align-self: stretch; 
2789    backdrop-filter: blur(3px); 
2790
2791 
2792  .story-title.button { 
2793    display: none; 
2794
2795 
2796  .story-title.dark-theme, 
2797  .story-description.dark-theme { 
2798    background: rgba(13, 19, 16, 0.80); 
2799    color: #FFF; 
2800
2801 
2802  .story-description.dark-theme p { 
2803    color: #FFF !important; 
2804
2805 
2806  .story-title.light-theme, 
2807  .story-description.light-theme { 
2808    background: rgba(255, 255, 255, 0.90); 
2809    color: #373737; 
2810
2811 
2812  .story-title.green-theme, 
2813  .story-description.green-theme { 
2814    background: rgba(0, 133, 66, 0.80); 
2815    color: #FFF; 
2816
2817 
2818  .story-title .title-text { 
2819    align-self: stretch; 
2820    font-size: 24px; 
2821    font-style: normal; 
2822    font-weight: 700; 
2823    line-height: 100%; 
2824
2825 
2826  .story-title .mischievous { 
2827    color: #FDC82F; 
2828    font-size: 24px; 
2829    font-style: normal; 
2830    font-weight: 700; 
2831    line-height: 100%; 
2832    width: 24px; 
2833
2834 
2835  .description-and-link { 
2836    width: 100%; 
2837    display: flex; 
2838    flex-direction: column; 
2839    gap: 8px; 
2840
2841 
2842  .story-description { 
2843    padding: 8px; 
2844    width: 100%; 
2845
2846 
2847  .story-description p { 
2848    font-size: 16px; 
2849    font-weight: 400; 
2850    line-height: 120%; 
2851    margin-bottom: 0; 
2852
2853 
2854  .story-description.button { 
2855    padding: 0; 
2856    display: flex; 
2857    justify-content: center; 
2858
2859 
2860  .story-description.button p a { 
2861    text-decoration: underline; 
2862    font-weight: bold; 
2863
2864 
2865  .story-description.button p a { 
2866    background: #FFF; 
2867    width: fit-content; 
2868    height: 48px; 
2869    display: flex; 
2870    justify-content: center; 
2871    align-items: center; 
2872    gap: 16px; 
2873    text-decoration: none; 
2874    color: #008542; 
2875    border-radius: 100px; 
2876    padding: 0 24px; 
2877    box-shadow: 0px 4px 16px 0px #00000029; 
2878    font-family: 'Petrobras Sans'; 
2879    font-weight: 700; 
2880    font-size: 16px; 
2881    line-height: 144%; 
2882    letter-spacing: 0%; 
2883
2884 
2885  .story-description.button p a::after { 
2886    content: ''; 
2887    display: inline-block; 
2888    flex-shrink: 0; 
2889    width: 20px; 
2890    height: 20px; 
2891    vertical-align: middle; 
2892    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwLjQ2OTUgMTIuMzU5MkMxMC4zMDk4IDEyLjUxODkgMTAuMzA5OCAxMi43Nzc5IDEwLjQ2OTUgMTIuOTM3N0MxMC42MjkzIDEzLjA5NzUgMTAuODg4MyAxMy4wOTc1IDExLjA0ODEgMTIuOTM3N0wxMC40Njk1IDEyLjM1OTJaTTEzLjQwNzIgMTBMMTMuNjk2NSAxMC4yODkzQzEzLjg1NjMgMTAuMTI5NSAxMy44NTYzIDkuODcwNDkgMTMuNjk2NSA5LjcxMDczTDEzLjQwNzIgMTBaTTExLjA0ODEgNy4wNjIyOUMxMC44ODgzIDYuOTAyNTMgMTAuNjI5MyA2LjkwMjUzIDEwLjQ2OTUgNy4wNjIyOUMxMC4zMDk4IDcuMjIyMDUgMTAuMzA5OCA3LjQ4MTA3IDEwLjQ2OTUgNy42NDA4M0wxMS4wNDgxIDcuMDYyMjlaTTcuMTU3MjMgOS41OTA5MUM2LjkzMTI5IDkuNTkwOTEgNi43NDgxNCA5Ljc3NDA3IDYuNzQ4MTQgMTBDNi43NDgxNCAxMC4yMjU5IDYuOTMxMjkgMTAuNDA5MSA3LjE1NzIzIDEwLjQwOTFWOS41OTA5MVpNMTcuMzczMSAxMEMxNy4zNzMxIDEzLjkxNjIgMTQuMTk4NCAxNy4wOTA5IDEwLjI4MjIgMTcuMDkwOVYxNy45MDkxQzE0LjY1MDMgMTcuOTA5MSAxOC4xOTEzIDE0LjM2ODEgMTguMTkxMyAxMEgxNy4zNzMxWk0xMC4yODIyIDE3LjA5MDlDNi4zNjYwMyAxNy4wOTA5IDMuMTkxMzIgMTMuOTE2MiAzLjE5MTMyIDEwSDIuMzczMTRDMi4zNzMxNCAxNC4zNjgxIDUuOTE0MTYgMTcuOTA5MSAxMC4yODIyIDE3LjkwOTFWMTcuMDkwOVpNMy4xOTEzMiAxMEMzLjE5MTMyIDYuMDgzOCA2LjM2NjAzIDIuOTA5MDkgMTAuMjgyMiAyLjkwOTA5VjIuMDkwOTFDNS45MTQxNiAyLjA5MDkxIDIuMzczMTQgNS42MzE5MyAyLjM3MzE0IDEwSDMuMTkxMzJaTTEwLjI4MjIgMi45MDkwOUMxNC4xOTg0IDIuOTA5MDkgMTcuMzczMSA2LjA4MzggMTcuMzczMSAxMEgxOC4xOTEzQzE4LjE5MTMgNS42MzE5MyAxNC42NTAzIDIuMDkwOTEgMTAuMjgyMiAyLjA5MDkxVjIuOTA5MDlaTTExLjA0ODEgMTIuOTM3N0wxMy42OTY1IDEwLjI4OTNMMTMuMTE4IDkuNzEwNzNMMTAuNDY5NSAxMi4zNTkyTDExLjA0ODEgMTIuOTM3N1pNMTMuNjk2NSA5LjcxMDczTDExLjA0ODEgNy4wNjIyOUwxMC40Njk1IDcuNjQwODNMMTMuMTE4IDEwLjI4OTNMMTMuNjk2NSA5LjcxMDczWk03LjE1NzIzIDEwLjQwOTFIMTMuNDA3MlY5LjU5MDkxSDcuMTU3MjNWMTAuNDA5MVoiIGZpbGw9IiMwMDg1NDIiLz4KPC9zdmc+Cg=="); 
2893    background-size: contain; 
2894    background-repeat: no-repeat; 
2895    background-position: center; 
2896
2897 
2898  .story-description a { 
2899    position: relative; 
2900    z-index: 3; 
2901    color: #FFF; 
2902    text-decoration: underline; 
2903
2904 
2905  .nav-area-container { 
2906    position: absolute; 
2907    top: 0; 
2908    left: 0; 
2909    right: 0; 
2910    bottom: 0; 
2911    display: flex; 
2912    justify-content: space-between; 
2913    align-items: center; 
2914    z-index: 1; 
2915    /* pointer-events: none; */ 
2916
2917 
2918  .nav-area { 
2919    height: 100%; 
2920    width: 50%; 
2921    display: flex; 
2922    align-items: center; 
2923
2924 
2925  .nav-area .arrow, 
2926  .nav-area .restart-icon { 
2927    position: absolute; 
2928
2929 
2930  .nav-area .arrow:hover, 
2931  .nav-area.next .restart-icon { 
2932    cursor: pointer; 
2933
2934 
2935  .nav-area.prev .arrow { 
2936    left: calc(-32px - 24px); 
2937
2938 
2939  .nav-area.next .arrow, 
2940  .nav-area.next .restart-icon { 
2941    right: calc(-32px - 24px); 
2942
2943 
2944  .nav-area .arrow.disabled { 
2945    opacity: 0.4; 
2946
2947 
2948  .nav-area .arrow.disabled:hover { 
2949    cursor: not-allowed; 
2950
2951 
2952  .nav-area .hidden { 
2953    display: none; 
2954
2955 
2956  .action-buttons { 
2957    display: flex; 
2958    gap: 24px; 
2959    justify-content: flex-end; 
2960
2961 
2962  .action-btn { 
2963    background: transparent; 
2964    border-radius: 50%; 
2965    border: none; 
2966    display: flex; 
2967    align-items: center; 
2968    justify-content: center; 
2969    cursor: pointer; 
2970    font-size: 14px; 
2971
2972 
2973  .action-btn.pause::before { 
2974    content: ''; 
2975    display: inline-block; 
2976    width: 15px; 
2977    height: 18px; 
2978    vertical-align: middle; 
2979    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTkiIHZpZXdCb3g9IjAgMCAxNiAxOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuMjY4NTU1IDE4LjI3NzNINS4zNTE0N1YwLjI3NzM0NEgwLjI2ODU1NVYxOC4yNzczWk0xMC40MzQ0IDAuMjc3MzQ0VjE4LjI3NzNIMTUuNTE3M1YwLjI3NzM0NEgxMC40MzQ0WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="); 
2980    background-size: contain; 
2981    background-repeat: no-repeat; 
2982    background-position: center; 
2983
2984 
2985  .action-btn.play::before { 
2986    content: ''; 
2987    display: inline-block; 
2988    width: 18px; 
2989    height: 18px; 
2990    vertical-align: middle; 
2991    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyMiAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwLjUxMjUgMTIuMTQ5OUwyLjUyNSAxLjE0OTg4QzIuMzczNTggMS4wNTY0NyAyLjE5OTk4IDEuMDA1MTYgMi4wMjIxMSAxLjAwMTIyQzEuODQ0MjQgMC45OTcyODcgMS42Njg1NCAxLjA0MDg4IDEuNTEzMTQgMS4xMjc1QzEuMzU3NzQgMS4yMTQxMSAxLjIyODI2IDEuMzQwNjIgMS4xMzgwNSAxLjQ5Mzk3QzEuMDQ3ODUgMS42NDczMiAxLjAwMDIgMS44MjE5NiAxIDEuOTk5ODhWMjMuOTk5OUMxLjAwMDIgMjQuMTc3OCAxLjA0Nzg1IDI0LjM1MjQgMS4xMzgwNSAyNC41MDU4QzEuMjI4MjYgMjQuNjU5MSAxLjM1Nzc0IDI0Ljc4NTYgMS41MTMxNCAyNC44NzIzQzEuNjY4NTQgMjQuOTU4OSAxLjg0NDI0IDI1LjAwMjUgMi4wMjIxMSAyNC45OTg1QzIuMTk5OTggMjQuOTk0NiAyLjM3MzU4IDI0Ljk0MzMgMi41MjUgMjQuODQ5OUwyMC41MTI1IDEzLjg0OTlDMjAuNjYwMiAxMy43NjI1IDIwLjc4MjYgMTMuNjM4MiAyMC44Njc2IDEzLjQ4OTJDMjAuOTUyNiAxMy4zNDAxIDIwLjk5NzQgMTMuMTcxNSAyMC45OTc0IDEyLjk5OTlDMjAuOTk3NCAxMi44MjgzIDIwLjk1MjYgMTIuNjU5NiAyMC44Njc2IDEyLjUxMDZDMjAuNzgyNiAxMi4zNjE1IDIwLjY2MDIgMTIuMjM3MiAyMC41MTI1IDEyLjE0OTlWMTIuMTQ5OVoiIHN0cm9rZT0iI0ZGRiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg=="); 
2992    background-size: contain; 
2993    background-repeat: no-repeat; 
2994    background-position: center; 
2995
2996 
2997  .action-btn.share::before { 
2998    content: ''; 
2999    display: inline-block; 
3000    width: 18px; 
3001    height: 18px; 
3002    vertical-align: middle; 
3003    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTkiIGhlaWdodD0iMTkiIHZpZXdCb3g9IjAgMCAxOSAxOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYuOTA3MDMgMTAuNjYxMkwxNi43NzcgMS4wNjU3MkwxOC4xOTcgMi40NDc2Mkw4LjMzNzAzIDEyLjA1MjlMNi45MDcwMyAxMC42NjEyWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNi43MzQxIDIuNDg4NzdMMTMuMTA3OCAxNS45NTU0QzEzLjA3NDYgMTYuMDc5MyAxMy4wMDM2IDE2LjE5MDQgMTIuOTA0MSAxNi4yNzQyQzEyLjgwNDYgMTYuMzU3OSAxMi42ODEzIDE2LjQxMDMgMTIuNTUwNiAxNi40MjQ0QzEyLjQxOTkgMTYuNDM4NiAxMi4yODc4IDE2LjQxMzggMTIuMTcxOSAxNi4zNTMzQzEyLjA1NjMgMTYuMjkzMSAxMS45NjIyIDE2LjIwMDIgMTEuOTAxOCAxNi4wODdMMTEuOTAxMiAxNi4wODU5TDguODMwNjkgMTAuMjQyMUwyLjc4MTI5IDcuMzAzNjZMMi43Nzg5MiA3LjMwMjUxQzIuNjYwNDcgNy4yNDUzNyAyLjU2Mjc0IDcuMTU0NDUgMi40OTg3NiA3LjA0MTg3QzIuNDM0NzkgNi45MjkyOCAyLjQwNzYxIDYuODAwMzkgMi40MjA4NSA2LjY3MjM4QzIuNDM0MDkgNi41NDQzOCAyLjQ4NzEyIDYuNDIzMzQgMi41NzI4OCA2LjMyNTQzQzIuNjU4NjMgNi4yMjc1MSAyLjc3MzAyIDYuMTU3MzcgMi45MDA3OSA2LjEyNDM2TDE2LjczNDEgMi40ODg3N1pNMTguOTYyMyAxLjUwODUyQzE5LjA3NzIgMS4xMTQ0MyAxOC45MTE2IDAuNzY0OTExIDE4LjcwNzUgMC41NjYzNjFDMTguNTAzNCAwLjM2NzczNyAxOC4yMzc0IDAuMjc3MzQ0IDE3Ljk4NyAwLjI3NzM0NEgxNy44NjFMMi40MTMyNyA0LjMzNzI0TDIuNDExMTEgNC4zMzc3OUMxLjkxMDcxIDQuNDY3NTMgMS40NjI3NSA0Ljc0MjQ3IDEuMTI2ODIgNS4xMjYwNUMwLjc5MDQxIDUuNTEwMTcgMC41ODIzNTMgNS45ODUgMC41MzA0MDUgNi40ODcxN0MwLjQ3ODQ1NiA2Ljk4OTM1IDAuNTg1MDg2IDcuNDk1MDEgMC44MzYwNzEgNy45MzY2OEMxLjA4NjggOC4zNzc5MiAxLjQ2OTY5IDguNzM0MzUgMS45MzM3NCA4Ljk1ODUzTDEuOTM1MTQgOC45NTkyTDcuNDIzMzcgMTEuNjI1MUwxMC4yMTEyIDE2LjkzMDhMMTAuMjEyOCAxNi45MzM5QzEwLjQ0OTUgMTcuMzgwMiAxMC44MTk3IDE3Ljc0NiAxMS4yNzQ2IDE3Ljk4MzJDMTEuNzI5NSAxOC4yMjAzIDEyLjI0NzYgMTguMzE3NiAxMi43NjA0IDE4LjI2MjJDMTMuMjczMyAxOC4yMDY3IDEzLjc1NjggMTguMDAxMSAxNC4xNDcxIDE3LjY3MjZDMTQuNTM3MyAxNy4zNDQxIDE0LjgxNTkgMTYuOTA4MiAxNC45NDYyIDE2LjQyMjRMMTguOTYyMyAxLjUwODUyWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="); 
3004    background-size: contain; 
3005    background-repeat: no-repeat; 
3006    background-position: center; 
3007
3008 
3009  @media (max-width: 768px) { 
3010    .ws-carousel { 
3011      margin: var(--space-lg, 32px) 0; 
3012
3013 
3014    .stories-container { 
3015      /* 
3016        Largura das duas setas com position absolute: 64px 
3017        Largura das somas margens das setas mobile: 16px 
3018        Soma das margens laterais: 48px 
3019      */ 
3020      width: calc(100vw - 64px - 16px - 48px); 
3021
3022 
3023    .header-container { 
3024      padding: 6px; 
3025
3026 
3027    .story-progress { 
3028      height: 2px; 
3029
3030 
3031    .header-container, 
3032    .action-buttons { 
3033      gap: 12px; 
3034
3035 
3036    .action-btn.play::before, 
3037    .action-btn.pause::before, 
3038    .action-btn.share::before { 
3039      width: 10px; 
3040      height: 10px; 
3041
3042 
3043    .nav-area.prev .arrow { 
3044      left: calc(-32px - 8px); 
3045
3046 
3047    .nav-area.next .arrow, 
3048    .nav-area.next .restart-icon { 
3049      right: calc(-32px - 8px); 
3050
3051 
3052    .story-content { 
3053      padding: 16px 16px 32px 16px; 
3054
3055 
3056    .story-content .content-wrapper { 
3057      padding: 0; 
3058
3059 
3060    .story-title .title-text { 
3061      font-size: 16px; 
3062
3063 
3064    .story-description p, 
3065    .story-description p a { 
3066      font-size: 14px !important; 
3067
3068
3069</style> 
3070 
3071<!-- Google tag (gtag.js) --> 
3072<script async src="https://www.googletagmanager.com/gtag/js?id=G-9TG5WL85H3"></script> 
3073<script> 
3074  window.dataLayer = window.dataLayer || []; 
3075  function gtag() { dataLayer.push(arguments); } 
3076  gtag('js', new Date()); 
3077 
3078  // Configuração do Google Analytics 4 
3079  gtag('config', 'G-9TG5WL85H3'); 
3080</script> 
3081 
3082    <script> 
3083/* CONSTANTS */ 
3084const PUBLISHER_LOGO_INDEX = 0; 
3085const POSTER_PORTRAIT_INDEX = 1; 
3086const PUBLISHER_INDEX = 2; 
3087const COVER_INDEX = 3; 
3088const STORIES_INDEX = 4; 
3089 
3090const COVER_HAS_COVER_INDEX = 0; 
3091const COVER_TITLE_INDEX = 1; 
3092const COVER_TEXT_INDEX = 2; 
3093const COVER_IMAGE_INDEX = 3; 
3094 
3095const STORY_TITLE_INDEX = 0; 
3096const STORY_TEXT_INDEX = 1; 
3097const STORY_COLOR_THEME_INDEX = 2; 
3098const STORY_IMAGE_INDEX = 3; 
3099 
3100const 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`; 
3101 
3102/* Função para criar formatar object*/ 
3103const createStoryObject = (objectContent) => { 
3104  const hasCover = Boolean( 
3105    objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3106      COVER_HAS_COVER_INDEX 
3107    ].contentFieldValue.data 
3108  ); 
3109  return { 
3110    category: objectContent.taxonomyCategoryBriefs[0].taxonomyCategoryName, 
3111    publisherLogoSrc: 
3112      objectContent.contentFields[PUBLISHER_LOGO_INDEX].contentFieldValue.data, 
3113    posterPortraitSrc: 
3114      objectContent.contentFields[POSTER_PORTRAIT_INDEX].contentFieldValue.data, 
3115    publisher: 
3116      objectContent.contentFields[PUBLISHER_INDEX].contentFieldValue.data, 
3117    friendlyUrlPath: objectContent.friendlyUrlPath, 
3118    cover: { 
3119      image: Boolean( 
3120        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3121          COVER_HAS_COVER_INDEX 
3122        ].contentFieldValue.data 
3123      ), 
3124      title: 
3125        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3126          COVER_TITLE_INDEX 
3127        ].contentFieldValue.data, 
3128      description: 
3129        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3130          COVER_TEXT_INDEX 
3131        ].contentFieldValue.data, 
3132      imageUrl: 
3133        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3134          COVER_IMAGE_INDEX 
3135        ].contentFieldValue.image?.contentUrl || null, 
3136      imageAlt: 
3137        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
3138          COVER_IMAGE_INDEX 
3139        ].contentFieldValue.image?.description || null, 
3140    }, 
3141    stories: objectContent.contentFields 
3142      .slice(STORIES_INDEX) 
3143      .map((contentField) => { 
3144        return { 
3145          title: 
3146            contentField.nestedContentFields[STORY_TITLE_INDEX] 
3147              ?.contentFieldValue?.data ?? null, 
3148          description: 
3149            contentField.nestedContentFields[STORY_TEXT_INDEX]?.contentFieldValue 
3150              .data ?? null, 
3151          colorTheme: 
3152            contentField.nestedContentFields[STORY_COLOR_THEME_INDEX] 
3153              ?.contentFieldValue?.value ?? null, 
3154          imageUrl: 
3155            contentField.nestedContentFields[STORY_IMAGE_INDEX] 
3156              ?.contentFieldValue?.image?.contentUrl ?? null, 
3157          imageAlt: 
3158            contentField.nestedContentFields[STORY_IMAGE_INDEX] 
3159              ?.contentFieldValue?.image?.description ?? null, 
3160        }; 
3161      }), 
3162  }; 
3163}; 
3164 
3165/* Renderiza os cards */ 
3166const storyCardFrom = (storyData) => { 
3167  const storyCard = document.createElement("div"); 
3168  storyCard.classList.add("ws-item"); 
3169 
3170  let displayPageUrl; 
3171  if (`${themeDisplay.getURLPortal()}`.includes('webserver')) { 
3172    displayPageUrl = `${themeDisplay.getURLPortal()}/web/nossa-energia/w/` + storyData.friendlyUrlPath; 
3173  } else { 
3174    displayPageUrl = `${themeDisplay.getURLPortal()}/w/` + storyData.friendlyUrlPath; 
3175
3176 
3177  storyCard.addEventListener("click", (e) => { 
3178    window.location.href = displayPageUrl; 
3179  }); 
3180 
3181  const image = document.createElement("img"); 
3182  image.classList.add("ws-image"); 
3183  image.src = storyData.cover.imageUrl 
3184    ? storyData.cover.imageUrl 
3185    : storyData.stories[0].imageUrl; 
3186  image.alt = storyData.cover.imageAlt 
3187    ? storyData.cover.imageAlt 
3188    : storyData.stories[0].imageAlt; 
3189 
3190  storyCard.appendChild(image); 
3191 
3192  const overlay = document.createElement("div"); 
3193  overlay.classList.add("ws-overlay"); 
3194  storyCard.appendChild(overlay); 
3195 
3196  const label = document.createElement("span"); 
3197  label.classList.add("ws-label"); 
3198  label.dataset.category = storyData.category; 
3199  label.classList.add((storyData.category || "Categoria").toLowerCase().replace(" ", '-')); 
3200  label.textContent = storyData.category || "Categoria"; 
3201  storyCard.appendChild(label); 
3202 
3203  const content = document.createElement("div"); 
3204  content.classList.add("ws-content"); 
3205 
3206  const title = document.createElement("h5"); 
3207  title.classList.add("h5") 
3208  title.textContent = storyData.cover.title || "Título do Card"; 
3209  content.appendChild(title); 
3210 
3211  const details = document.createElement("div"); 
3212  details.classList.add("ws-details"); 
3213 
3214  details.innerHTML = DETAILS_SVG || `<svg>...</svg>`; 
3215  content.appendChild(details); 
3216 
3217  storyCard.appendChild(content); 
3218 
3219  return storyCard; 
3220}; 
3221 
3222/* Renderiza cores */ 
3223 
3224const getCategoriesColorsStyles = async () => { 
3225    // 
3226    const urlToFetchToGetWebStoriesCategoriesColor = `/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/31841266/taxonomy-categories?fields=name%2CtaxonomyCategoryProperties`; 
3227 
3228  return fetch(urlToFetchToGetWebStoriesCategoriesColor, { 
3229    method: "GET", 
3230    headers: { 
3231      accept: "application/json", 
3232      "x-csrf-token": Liferay.authToken, 
3233    }, 
3234  }) 
3235    .then((response) => { 
3236      if (response.status === 200) { 
3237        return response.json(); 
3238      } else { 
3239        throw new Error("Erro interno. Por favor tente mais tarde."); 
3240
3241    }) 
3242    .then((data) => { 
3243      const styleTag = document.createElement('style'); 
3244      styleTag.id= 'webstories-carousel-labels'; 
3245 
3246      let styleContent = ``; 
3247       
3248      data.items.forEach(item => { 
3249        let textColor = item.taxonomyCategoryProperties.find(taxonomtProp => taxonomtProp.key === "Cor do Texto")?.value; 
3250        let textHighContrastColor = item.taxonomyCategoryProperties.find(taxonomtProp => taxonomtProp.key === "Cor do Texto em Alto Contraste")?.value; 
3251 
3252        if (textColor != undefined) { 
3253            styleContent = styleContent + ` 
3254            .ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label[data-category="` + item.name + `"] { 
3255                color: #` + textColor + `; 
3256
3257
3258
3259 
3260        if (textHighContrastColor != undefined) { 
3261            styleContent = styleContent + ` 
3262            body.high-contrast .ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label[data-category="` + item.name + `"] { 
3263                color: #` + textHighContrastColor + `; 
3264
3265
3266
3267      }); 
3268 
3269      styleTag.textContent = styleContent; 
3270 
3271      document.head.appendChild(styleTag); 
3272    }); 
3273}; 
3274 
3275getCategoriesColorsStyles(); 
3276 
3277/* Renderiza os itens */ 
3278const renderItems = (carouselId, webStoriesObjects) => { 
3279  const carouselElement = document.querySelector(`#` + carouselId); 
3280  const carouselContainer = carouselElement.querySelector(`.ws-container`); 
3281  const carouselBody = carouselElement.querySelector(".ws-carousel-body"); 
3282  const navButtons = carouselElement.querySelector(".nav-buttons"); 
3283  const leftArrow = navButtons.querySelector(".left-arrow"); 
3284  const rightArrow = navButtons.querySelector(".right-arrow"); 
3285 
3286  // Adiciona Cards 
3287  webStoriesObjects.forEach((storyObject, index) => { 
3288    const storyCard = storyCardFrom(storyObject); 
3289    storyCard.dataset.index = index; 
3290    carouselContainer.appendChild(storyCard); 
3291  }); 
3292 
3293  // Altera o Layout 
3294  function updateLayout() { 
3295    if (webStoriesObjects.length < 3) { 
3296      if (window.matchMedia("(min-width: 769px)").matches) { 
3297        carouselContainer.style.justifyContent = "center"; 
3298        navButtons.style.display = "none"; 
3299      } else { 
3300        carouselContainer.style.justifyContent = "flex-start"; 
3301        navButtons.style.display = "flex"; 
3302
3303    } else { 
3304      carouselContainer.style.justifyContent = ""; 
3305      carouselContainer.style.gap = window.matchMedia("(max-width: 768px)") 
3306        .matches 
3307        ? "32px" 
3308        : "16px"; 
3309      navButtons.style.display = ""; 
3310
3311
3312  updateLayout(); 
3313  window.addEventListener("resize", updateLayout); 
3314 
3315  // Configura Scroll das setas 
3316  leftArrow.addEventListener("click", () => { 
3317    const items = carouselBody.querySelectorAll(".ws-item"); 
3318    const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16; 
3319    const pageSize = items[0].offsetWidth + gap; 
3320    const currentScroll = carouselBody.scrollLeft; 
3321    const currentPageReal = carouselBody.scrollLeft / pageSize; 
3322    const currentPage = parseInt(currentPageReal); 
3323    const rest = currentPage - currentPageReal; 
3324    const nextPage = rest !== 0 ? currentPage : currentPage - 1; 
3325    carouselBody.scrollLeft = nextPage * pageSize; 
3326  }); 
3327 
3328  rightArrow.addEventListener("click", () => { 
3329    const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16; 
3330    const items = carouselBody.querySelectorAll(".ws-item"); 
3331    carouselBody.scrollLeft += items[0].offsetWidth + gap; 
3332  }); 
3333 
3334  const updateArrows = () => { 
3335    const scrollLeft = carouselBody.scrollLeft; 
3336    const maxScrollLeft = carouselBody.scrollWidth - carouselBody.clientWidth; 
3337 
3338    // Regra 1: A seta esquerda fica cinza se scrollLeft for 0 
3339    if (scrollLeft === 0) { 
3340      leftArrow.classList.remove("active"); 
3341      leftArrow.classList.add("inactive"); 
3342    } else { 
3343      leftArrow.classList.remove("inactive"); 
3344      leftArrow.classList.add("active"); 
3345
3346 
3347    // Regra 2: A seta direita fica cinza se o scroll for máximo 
3348    if (scrollLeft >= maxScrollLeft) { 
3349      rightArrow.classList.remove("active"); 
3350      rightArrow.classList.add("inactive"); 
3351    } else { 
3352      rightArrow.classList.remove("inactive"); 
3353      rightArrow.classList.add("active"); 
3354
3355  }; 
3356 
3357  carouselBody.addEventListener("scroll", updateArrows); 
3358}; 
3359 
3360/* Fetch Things */ 
3361async function getWebStoriesDataSectionFromNews(webContentId) { 
3362  const ID_INDEX = 0; 
3363  const WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT = 2; 
3364  const urlToFetchToGetWebStoriesGroup = 
3365    `/o/headless-delivery/v1.0/structured-contents/` + 
3366    webContentId + 
3367    `?fields=contentFields`; 
3368 
3369  return fetch(urlToFetchToGetWebStoriesGroup, { 
3370    method: "GET", 
3371    headers: { 
3372      accept: "application/json", 
3373      "x-csrf-token": Liferay.authToken, 
3374    }, 
3375  }) 
3376    .then((response) => { 
3377      if (response.status === 200) { 
3378        return response.json(); 
3379      } else { 
3380        throw new Error("Erro interno. Por favor tente mais tarde."); 
3381
3382    }) 
3383    .then((data) => { 
3384      const webStoriesGroups = Array.from(data.contentFields).filter( 
3385        (contentField) => contentField.label === "Web Stories" 
3386      ); 
3387 
3388      const webStoriesDataMapped = webStoriesGroups.map((webStoryGroup) => { 
3389        const webStoryGroupId = 
3390          webStoryGroup.nestedContentFields[ID_INDEX].contentFieldValue.data; 
3391        const webStoriesStrucutredContentNodes = 
3392          webStoryGroup.nestedContentFields.slice( 
3393            WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT 
3394          ); 
3395        const webStoriesIds = Array.from(webStoriesStrucutredContentNodes).map( 
3396          (webStoryNode) => { 
3397            const webStoryId = 
3398              webStoryNode.contentFieldValue.structuredContentLink.id; 
3399            return { 
3400              webStoryId: webStoryId, 
3401            }; 
3402
3403        ); 
3404        return { 
3405          webStoryGroupId: webStoryGroupId, 
3406          webStoriesIds: webStoriesIds, 
3407        }; 
3408      }); 
3409 
3410      return webStoriesDataMapped; 
3411    }) 
3412    .then((webStoriesDataMapped) => { 
3413      // Mapeia os dados recebidos 
3414      return Promise.all( 
3415        webStoriesDataMapped.map(async (group) => { 
3416          const updatedWebStoriesIds = await Promise.all( 
3417            group.webStoriesIds.map(async (story) => { 
3418              // Faz o fetch para obter os dados do webStoryId 
3419              const response = await fetch( 
3420                `/o/headless-delivery/v1.0/structured-contents/` + 
3421                  story.webStoryId, 
3422
3423                  method: "GET", 
3424                  headers: { 
3425                    accept: "application/json", 
3426                    "x-csrf-token": Liferay.authToken, 
3427                  }, 
3428
3429              ); 
3430              if (!response.ok) { 
3431                throw new Error( 
3432                  `Erro ao buscar dados para webStoryId` + story.webStoryId 
3433                ); 
3434
3435              const webStoryData = await response.json(); 
3436              return { webStoryData: webStoryData }; 
3437            }) 
3438          ); 
3439 
3440          // Retorna o objeto transformado 
3441          return { 
3442            webStoryGroupId: group.webStoryGroupId, 
3443            webStoriesData: updatedWebStoriesIds, 
3444          }; 
3445        }) 
3446      ); 
3447    }) 
3448    .then((webStoriesDataFetched) => { 
3449      return webStoriesDataFetched.map((data) => { 
3450        return { 
3451          webStoryGroupId: data.webStoryGroupId, 
3452          webStoryObjects: data.webStoriesData.map((data) => 
3453            createStoryObject(data.webStoryData) 
3454          ), 
3455        }; 
3456      }); 
3457    }) 
3458    .catch((error) => { 
3459      console.error("Erro ao buscar coleção: ", error); 
3460    }); 
3461
3462 
3463async function getWebStoriesData(webStoriesIds) { 
3464  // Mapeia os IDs para criar um array de promessas 
3465  const fetchPromises = webStoriesIds.map((webStoryId) => { 
3466    //const urlToFetch = `/o/headless-delivery/v1.0/structured-contents/` + webStoryId + `?fields=contentFields`; 
3467    const urlToFetch = 
3468      `/o/headless-delivery/v1.0/structured-contents/` + 
3469      webStoryId + 
3470      `?fields=contentFields%2CtaxonomyCategoryBriefs`; 
3471    return fetch(urlToFetch, { 
3472      method: "GET", 
3473      headers: { 
3474        accept: "application/json", 
3475        "x-csrf-token": Liferay.authToken, 
3476      }, 
3477    }).then((response) => { 
3478      if (!response.ok) { 
3479        throw new Error(`Erro ao buscar ID`); 
3480
3481      return response.json(); // Transforma a resposta em JSON 
3482    }); 
3483  }); 
3484 
3485  // Aguarda todas as promessas e preserva a ordem 
3486  try { 
3487    const results = await Promise.all(fetchPromises); 
3488    return results; // Retorna os resultados em ordem 
3489  } catch (error) { 
3490    console.error("Erro ao buscar Web Stories:", error); 
3491    throw error; // Relança o erro para tratamento posterior 
3492
3493
3494 
3495<#noparse> 
3496const scriptForStoryInNews = (storyData, containerId) => { 
3497 
3498  storyData.stories = storyData.stories.filter(story => story.imageUrl !== null) 
3499  
3500  const storiesContainer = document.getElementById(`stories-container-${containerId}`); 
3501  const prevArrow = storiesContainer.querySelector('.nav-area.prev svg.arrow'); 
3502  const nextArrow = storiesContainer.querySelector('.nav-area.next svg.arrow'); 
3503  const restartIcon = storiesContainer.querySelector('.nav-area.next svg.restart-icon'); 
3504  const progressBars = storiesContainer.querySelector('.progress-bars'); 
3505  const pauseBtn = storiesContainer.querySelector('.pause-btn'); 
3506  const shareBtn = storiesContainer.querySelector('.share-btn'); 
3507 
3508  let currentStoryIndex = 0; 
3509  let progressTimeout; 
3510  let touchStartX = 0; 
3511  let touchEndX = 0; 
3512  let isPaused = false; 
3513  let viewedStories = new Set(); 
3514  let progressStartTime = 0; 
3515  let remainingTime = 8000; 
3516 
3517  // Tagueamento com Google Analytics 
3518  const trackStoryPageView = (pageId) => { 
3519    gtag("event", `web_story_page_view_${pageId}`, { 
3520      story_title: document.title, 
3521      canonical_url: window.location.href, 
3522      source_url: document.referrer 
3523    }); 
3524
3525 
3526  // Cria slides dos stories 
3527  function createStorySlides() { 
3528    // Cria barras de progresso 
3529    storyData.stories.forEach((story, index) => { 
3530      const progressContainer = document.createElement('div'); 
3531      progressContainer.className = 'progress-bar'; 
3532      progressContainer.dataset.index = index; 
3533 
3534      const progress = document.createElement('div'); 
3535      progress.className = 'story-progress'; 
3536      progressContainer.appendChild(progress); 
3537 
3538      progressBars.appendChild(progressContainer); 
3539    }); 
3540 
3541    // Cria slides 
3542    storyData.stories.forEach((story, index) => { 
3543      const slide = document.createElement('div'); 
3544      slide.className = `story-slide ${index === 0 ? 'active' : ''}`; 
3545      slide.dataset.index = index; 
3546 
3547      let imageHtml = ''; 
3548      if (story.imageUrl) { 
3549        imageHtml = `<img src="${story.imageUrl}" alt="${story.imageAlt || ''}" class="story-image" loading="lazy">`; 
3550
3551 
3552      slide.innerHTML = ` 
3553        ${imageHtml} 
3554        <div class="story-content"> 
3555          <div class="content-wrapper"> 
3556          ${story.title && ( 
3557            `<div class="story-title ${story.colorTheme}"> 
3558              <p class="title-text">${story.title}</p> 
3559              <div class="mischievous">—</div> 
3560            </div>` 
3561          )} 
3562            ${story.description && `<div class="story-description description-text ${story.colorTheme}">${story.description}</div>`} 
3563          </div> 
3564        </div> 
3565      `; 
3566      storiesContainer.insertBefore(slide, storiesContainer.querySelector('.nav-area-container')); 
3567    }); 
3568 
3569    updateArrows(); 
3570    updateProgressBars(); 
3571    startProgressBar(); 
3572
3573 
3574  // Atualiza o estado das setas de navegação 
3575  function updateArrows() { 
3576    // Seta anterior 
3577    if (currentStoryIndex === 0) { 
3578      prevArrow.classList.add('disabled'); 
3579    } else { 
3580      prevArrow.classList.remove('disabled'); 
3581
3582 
3583    // Próxima seta 
3584    if (currentStoryIndex === storyData.stories.length - 1) { 
3585      nextArrow.classList.add('hidden'); 
3586      restartIcon.classList.remove('hidden'); 
3587    } else { 
3588      nextArrow.classList.remove('hidden'); 
3589      restartIcon.classList.add('hidden'); 
3590
3591
3592 
3593  // Atualiza as barras de progresso conforme navegação 
3594  function updateProgressBars() { 
3595    const allProgressBars = storiesContainer.querySelectorAll('.progress-bar .story-progress'); 
3596 
3597    allProgressBars.forEach((bar, index) => { 
3598      bar.classList.remove('completed', 'active'); 
3599      bar.style.width = '0%'; 
3600      bar.style.animation = 'none'; 
3601 
3602      if (index < currentStoryIndex) { 
3603        // Stories já vistos - barra completa 
3604        bar.classList.add('completed'); 
3605        bar.style.width = '100%'; 
3606      } else if (index === currentStoryIndex) { 
3607        // Story atual - barra em progresso 
3608        bar.classList.add('active'); 
3609      } else { 
3610        // Stories não vistos - barra vazia 
3611        bar.style.width = '0%'; 
3612
3613    }); 
3614
3615 
3616  function nextStory() { 
3617    if (currentStoryIndex < storyData.stories.length - 1) { 
3618      viewedStories.add(currentStoryIndex); 
3619      goToStory(currentStoryIndex + 1); 
3620
3621
3622 
3623  function prevStory() { 
3624    if (currentStoryIndex > 0) { 
3625      viewedStories.delete(currentStoryIndex); 
3626      goToStory(currentStoryIndex - 1); 
3627
3628
3629 
3630  function goToStory(index) { 
3631    // Pausa a animação atual 
3632    clearTimeout(progressTimeout); 
3633 
3634    storiesContainer.querySelector('.story-slide.active').classList.remove('active'); 
3635    currentStoryIndex = index; 
3636    storiesContainer.querySelector(`.story-slide[data-index="${index}"]`).classList.add('active'); 
3637 
3638    updateArrows(); 
3639    updateProgressBars(); 
3640 
3641    isPaused = false; 
3642    pauseBtn.classList.replace('play', 'pause'); 
3643    startProgressBar(); 
3644
3645 
3646  function startProgressBar() { 
3647    const currentProgressBar = storiesContainer.querySelector(`.progress-bar[data-index="${currentStoryIndex}"] .story-progress`); 
3648 
3649    // Resetar e iniciar animação 
3650    currentProgressBar.style.animation = 'none'; 
3651    currentProgressBar.offsetHeight; // Trigger reflow 
3652    currentProgressBar.style.animation = 'progress 8s linear forwards'; 
3653 
3654    progressStartTime = Date.now(); 
3655 
3656    progressTimeout = setTimeout(() => { 
3657      nextStory(); 
3658    }, remainingTime); 
3659
3660 
3661  // Pausar/continuar story 
3662  function togglePause() { 
3663    isPaused = !isPaused; 
3664 
3665    const currentProgressBar = storiesContainer.querySelector(`.progress-bar[data-index="${currentStoryIndex}"] .story-progress`); 
3666 
3667    if (isPaused) { 
3668      // Pausar 
3669      currentProgressBar.style.animationPlayState = 'paused'; 
3670      clearTimeout(progressTimeout); 
3671 
3672      // Calcular tempo restante 
3673      const elapsed = Date.now() - progressStartTime; 
3674      remainingTime = Math.max(0, 8000 - elapsed); 
3675 
3676      pauseBtn.classList.remove('pause'); 
3677      pauseBtn.classList.add('play'); 
3678    } else { 
3679      // Retomar 
3680      currentProgressBar.style.animationPlayState = 'running'; 
3681      pauseBtn.classList.remove('play'); 
3682      pauseBtn.classList.add('pause'); 
3683 
3684      // Reiniciar com tempo restante 
3685      progressStartTime = Date.now(); 
3686      progressTimeout = setTimeout(() => { 
3687        nextStory(); 
3688      }, remainingTime); 
3689
3690
3691 
3692  function shareStory() { 
3693    const currentStory = storyData.stories[currentStoryIndex]; 
3694    const baseUrl = window.location.origin; 
3695    let displayPageUrl; 
3696    if (baseUrl.includes('webserver')) { 
3697      displayPageUrl = `${baseUrl}/web/nossa-energia/w/${storyData.friendlyUrlPath}`; 
3698    } else { 
3699      displayPageUrl = `${baseUrl}/w/${storyData.friendlyUrlPath}`; 
3700
3701     
3702    const shareData = { 
3703      title: currentStory.title || 'Story', 
3704      text: currentStory.description ? currentStory.description.replace(/<[^>]*>/g, '') : '', 
3705      url: displayPageUrl 
3706    }; 
3707 
3708    if (navigator.share) { 
3709      navigator.share(shareData) 
3710        .then(() => console.log('Compartilhado com sucesso')) 
3711        .catch((error) => console.log('Erro ao compartilhar:', error)); 
3712    } else { 
3713      // Fallback para navegadores que não suportam a API de compartilhamento 
3714      alert('Compartilhar: ' + shareData.title + '\n' + shareData.text + '\n' + shareData.url); 
3715
3716
3717 
3718  // Event Listeners 
3719  prevArrow.addEventListener('click', (e) => { 
3720    e.stopPropagation(); 
3721    prevStory(); 
3722  }); 
3723 
3724  nextArrow.addEventListener('click', (e) => { 
3725    e.stopPropagation(); 
3726    nextStory(); 
3727  }); 
3728 
3729  restartIcon.addEventListener('click', (e) => { 
3730    e.stopPropagation(); 
3731    goToStory(0); 
3732  }); 
3733 
3734  pauseBtn.addEventListener('click', e => { 
3735    e.stopPropagation(); 
3736    togglePause(); 
3737  }); 
3738   
3739  shareBtn.addEventListener('click', e => { 
3740    e.stopPropagation(); 
3741    shareStory(); 
3742  }); 
3743 
3744  // Navegação por clique na tela 
3745  storiesContainer.addEventListener('click', (e) => { 
3746    const containerWidth = storiesContainer.offsetWidth; 
3747    const clickX = e.clientX - storiesContainer.getBoundingClientRect().left; 
3748 
3749    // Se clicou na metade esquerda 
3750    if (clickX < containerWidth / 2) { 
3751      prevStory(); 
3752
3753    // Se clicou na metade direita 
3754    else if (clickX > containerWidth / 2) { 
3755      nextStory(); 
3756
3757  }); 
3758 
3759  // Inicializar 
3760  createStorySlides(); 
3761 
3762  // Envia evento de click em links 
3763  storiesContainer.addEventListener('click', e => { 
3764    if (e.target.classList.contains('a')) { 
3765      gtag("event", `web_story_link_click_${storyData.friendlyUrlPath}`); 
3766
3767  }); 
3768 
3769  const lastPage = storiesContainer.querySelector(".story-slide:last-of-type"); 
3770 
3771  // Observa a mudança das páginas do story 
3772  const observer = new MutationObserver((mutationsList) => { 
3773    mutationsList.forEach((mutation) => { 
3774      if (mutation.type === "attributes" && mutation.attributeName === "active") { 
3775        const target = mutation.target; 
3776        if (target.tagName.toLowerCase() === "story-slide" && target.hasAttribute("active")) { 
3777          trackStoryPageView(target.getAttribute('data-index')); 
3778          target === lastPage && gtag("event", 'web_story_complete'); 
3779
3780
3781    }); 
3782  }); 
3783 
3784  const activePage = storiesContainer.querySelector('.story-slide.active'); 
3785  if (activePage && activePage.getAttribute('data-index') === '0') { 
3786    trackStoryPageView(0); 
3787
3788 
3789  const pages = storiesContainer.querySelectorAll(".story-slide"); 
3790  pages.forEach(page => { 
3791    observer.observe(page, { attributes: true, attributeFilter: ["active"] }); 
3792  }); 
3793
3794</#noparse> 
3795 
3796async function fetchAndLogWebStories() { 
3797  const webStoriesCarouselDataList = await getWebStoriesDataSectionFromNews( 
3798    "${newsJournalArticle.getResourcePrimKey()}" 
3799  ); 
3800 
3801  webStoriesCarouselDataList.forEach((webStoriesCarouselData) => { 
3802    const onlyOneWebstory = webStoriesCarouselData.webStoryObjects.length === 1; 
3803 
3804    if (onlyOneWebstory) { 
3805      // renderiza um único story com navegação dentro da notícia 
3806      const carouselElement = document.querySelector(`#` + webStoriesCarouselData.webStoryGroupId); 
3807      carouselElement.style.alignItems = 'center'; 
3808      <#noparse> 
3809      carouselElement.innerHTML = 
3810      ` <div class="stories-container" id="stories-container-${webStoriesCarouselData.webStoryGroupId}"> 
3811          <div class="header-container"> 
3812            <div class="story-header"> 
3813              <div class="progress-bars"></div> 
3814            </div> 
3815            <div class="action-buttons"> 
3816              <button class="action-btn pause pause-btn"></button> 
3817              <button class="action-btn share share-btn"></button> 
3818            </div> 
3819          </div> 
3820 
3821          <!-- Os stories serão inseridas aqui via JavaScript --> 
3822 
3823          <div class="nav-area-container"> 
3824            <div class="nav-area prev"> 
3825              <svg class="arrow disabled" width="32" height="32" viewBox="0 0 34 33" fill="none" 
3826                xmlns="http://www.w3.org/2000/svg"> 
3827                <g> 
3828                  <path 
3829                    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" 
3830                    stroke="#959595" /> 
3831                  <path d="M19 21.5L14 16.5L19 11.5" stroke="#525252" stroke-width="1.5" stroke-linecap="round" 
3832                    stroke-linejoin="round" /> 
3833                </g> 
3834              </svg> 
3835            </div> 
3836            <div class="nav-area next"> 
3837              <svg class="arrow" width="32" height="32" viewBox="0 0 34 33" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3838                <path 
3839                  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" 
3840                  stroke="#008542" /> 
3841                <path d="M15 11.5L20 16.5L15 21.5" stroke="#008542" stroke-width="1.5" stroke-linecap="round" 
3842                  stroke-linejoin="round" /> 
3843              </svg> 
3844              <svg class="restart-icon hidden" width="32" height="32" viewBox="0 0 34 33" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3845                <path 
3846                  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" 
3847                  stroke="#008542" /> 
3848                <path 
3849                  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" 
3850                  stroke="#008542" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> 
3851              </svg> 
3852            </div> 
3853          </div> 
3854        </div> 
3855      `; 
3856      </#noparse> 
3857      const singleWebstoryData = webStoriesCarouselData.webStoryObjects[0]; 
3858      scriptForStoryInNews(singleWebstoryData, webStoriesCarouselData.webStoryGroupId); 
3859    } else { 
3860      // Carrossel 
3861      renderItems( 
3862        webStoriesCarouselData.webStoryGroupId, 
3863        webStoriesCarouselData.webStoryObjects 
3864      ); 
3865
3866  }); 
3867
3868 
3869fetchAndLogWebStories(); 
3870 
3871</script> 
3872 
3873    <script> 
3874        <#assign configureLinkTab = "configureLinkTab_" + randomNumber(5)> 
3875 
3876        function ${configureLinkTab}() { 
3877            const root = document.querySelector(".ptb-news__read-news"); 
3878            const newsContentElement = root.querySelector(".news-content div:first-child"); 
3879            const pList = newsContentElement.querySelectorAll("p"); 
3880            pList.forEach((pElement) => { 
3881                const cont = pElement.innerHTML.trim(); 
3882                if (cont == "" || cont == "&nbsp;") { 
3883                    newsContentElement?.removeChild(pElement); 
3884
3885            }); 
3886
3887 
3888        ${configureLinkTab}(); 
3889 
3890        <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" > 
3891 
3892            function resizeMediaInfographic() { 
3893                if (window.innerWidth > 1024) { 
3894                    const contents = document.querySelectorAll(".ptb-news__read-news .news-content p"); 
3895                    contents.forEach((content) => {        
3896                        content.querySelector("img") && (content.style.gridColumn = "2 / 12"); 
3897                    }); 
3898
3899                else { 
3900                    const contents = document.querySelectorAll(".ptb-news__read-news .news-content p"); 
3901                    contents.forEach((content) => {        
3902                        content.querySelector("img") && (content.style.gridColumn = ""); 
3903                    }); 
3904 
3905                }           
3906
3907            resizeMediaInfographic(); 
3908        </#if> 
3909 
3910         
3911 
3912        document.addEventListener("DOMContentLoaded", () => { 
3913            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"); 
3914 
3915            headers.forEach((header) => { 
3916                 
3917                const currentLevel = parseInt(header.tagName.charAt(1)); 
3918 
3919                if (currentLevel >= 1 && currentLevel <= 5) { 
3920                     
3921                    const newLevel = currentLevel + 1; 
3922                    const newTagName = "h" + newLevel; 
3923 
3924                    // Criar a nova tag e transferir o conteúdo 
3925                    const newHeader = document.createElement(newTagName); 
3926                    newHeader.innerHTML = header.innerHTML; 
3927 
3928                    // Substituir a tag antiga pela nova 
3929                    header.parentNode.replaceChild(newHeader, header); 
3930
3931            }); 
3932             
3933            <#assign typeOfNews = getFirstCategoryOfVocabulary(assetEntry, typeOfNewsVocabulary) /> 
3934                 
3935            <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" > 
3936                resizeMediaInfographic(); 
3937                window.addEventListener("resize", resizeMediaInfographic); 
3938            </#if>           
3939        }); 
3940 
3941        AUI().ready(()=>{ 
3942            const audiosContainer = document.querySelectorAll(".ptb-news__read-news .news-content .audio-content"); 
3943            const audioTemplate = document.querySelector(".ptb-news__read-news .news-content .audio-template"); 
3944 
3945            audiosContainer.forEach((audioContainer)=>{ 
3946                 
3947                const audio = audioContainer.querySelector("audio"); 
3948                const audioInterface = audioTemplate.cloneNode(true); 
3949 
3950                const sondwave = audioInterface.querySelector(".audio-sondwave"); 
3951                const linesDesktop = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-desktop line"); 
3952                const linesMobile = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-mobile line"); 
3953                 
3954                const playPauseButtonAudioInterface = audioInterface.querySelector(".audio-button-play"); 
3955 
3956                playPauseButtonAudioInterface.addEventListener("click", ()=>{ 
3957                    if(audioInterface.classList.contains("audio-play")) { 
3958                        audioInterface.classList.replace("audio-play", "audio-pause"); 
3959                        audio.pause(); 
3960
3961                    else { 
3962 
3963                        audiosContainer.forEach((audioContainer)=>{ 
3964                            const otherAudio = audioContainer.querySelector("audio"); 
3965                            const otherAudioInterface = audioContainer.querySelector(".audio-button-play"); 
3966                            !otherAudio.paused && otherAudioInterface.click(); 
3967                        }); 
3968 
3969                        audioInterface.classList.replace("audio-pause", "audio-play"); 
3970                        audio.play(); 
3971
3972                }); 
3973 
3974                const audioMuteButton = audioInterface.querySelector(".audio-button-mute"); 
3975 
3976                audioMuteButton.addEventListener("click", ()=>{ 
3977                    if(audioInterface.classList.contains("audio-unmuted")) { 
3978                        audioInterface.classList.replace("audio-unmuted", "audio-muted"); 
3979                        audio.muted = true; 
3980
3981                    else { 
3982                        audioInterface.classList.replace("audio-muted", "audio-unmuted"); 
3983                        audio.muted = false; 
3984
3985                }); 
3986 
3987                const audioTime = audioInterface.querySelector(".audio-time"); 
3988                audioTime.textContent = Math.floor(audio.duration / 60) + ":" + Math.floor(audio.duration % 60); 
3989 
3990 
3991                audio.addEventListener("timeupdate", ()=>{ 
3992                    let minutes = Math.floor((audio.duration - audio.currentTime) / 60);  
3993                    let seconds = Math.floor((audio.duration - audio.currentTime) % 60); 
3994 
3995                    minutes = minutes < 10? "0" + minutes : minutes; 
3996                    seconds = seconds < 10? "0" + seconds : seconds; 
3997                     
3998                    audioTime.textContent = minutes + ":" + seconds; 
3999 
4000                    const progress = (audio.currentTime / audio.duration) * 100; 
4001 
4002                    linesDesktop.forEach(function(line, index) { 
4003                        const lineProgress = (index / linesDesktop.length) * 100; 
4004                        if (progress >= lineProgress) { 
4005                            !line.classList.contains("line-active") && line.classList.add("line-active"); 
4006                        } else { 
4007                            line.classList.contains("line-active") && line.classList.remove("line-active"); 
4008
4009                    }); 
4010 
4011                    linesMobile.forEach(function(line, index) { 
4012                        const lineProgress = (index / linesMobile.length) * 100; 
4013                        if (progress >= lineProgress) { 
4014                            !line.classList.contains("line-active") && line.classList.add("line-active"); 
4015                        } else { 
4016                            line.classList.contains("line-active") && line.classList.remove("line-active"); 
4017
4018                    });                    
4019                }); 
4020 
4021                
4022                sondwave.addEventListener("click", (event)=>{                     
4023                    const distanceLeft = (event.clientX - sondwave.getBoundingClientRect().left)/sondwave.offsetWidth; 
4024                    audio.currentTime = audio.duration * distanceLeft; 
4025                }); 
4026                
4027                audioInterface.style.display = ""; 
4028                audioContainer.appendChild(audioInterface); 
4029            }); 
4030 
4031        }); 
4032    </script> 
4033</#macro> 
4034 
4035<#macro renderShareAndCopyNews> 
4036    <#--        <div class="share_news_container">--> 
4037        <div class="social-media-container"> 
4038 
4039            <#assign emailMsg = "Veja o conteúdo do post no link "> 
4040            <#if locale == "en_US"> 
4041                <#assign emailMsg = "See the content of the post in the link "> 
4042            </#if> 
4043            <a class="social-media-share" href="mailto:?subject=${newsInfo.mainHeadlineOfTheNews}&amp;body=${emailMsg}${newsInfo.url}" 
4044                target="_blank"> 
4045                <svg class="email" width="37" height="36" viewBox="0 0 37 36" fill="none" 
4046                        xmlns="http://www.w3.org/2000/svg"> 
4047                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
4048                    <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" 
4049                            fill="#008542"/> 
4050                </svg> 
4051                <span >send e-mail</span> 
4052            </a> 
4053 
4054            <a class="social-media-share"  href="https://www.facebook.com/sharer/sharer.php?u=${newsInfo.url}" target="_blank"> 
4055                <svg class="facebook" width="37" height="36" viewBox="0 0 37 36" fill="none" 
4056                        xmlns="http://www.w3.org/2000/svg"> 
4057                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
4058                    <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" 
4059                            fill="#008542"/> 
4060                </svg> 
4061                    <span >Facebook</span> 
4062            </a> 
4063 
4064            <#assign mobileShareButtonId = "mobile-share-" + randomNumber(5)> 
4065            <div class="mobile-share" id="${mobileShareButtonId}"> 
4066                <svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4067                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
4068                    <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" 
4069                            fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/> 
4070                    <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" 
4071                            fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/> 
4072                    <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" 
4073                            fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/> 
4074                    <path d="M20.2546 14.0784L15.9036 16.8879" stroke="#008542" stroke-linecap="round" 
4075                            stroke-linejoin="round"/> 
4076                    <path d="M15.9036 19.4871L20.2546 22.2966" stroke="#008542" stroke-linecap="round" 
4077                            stroke-linejoin="round"/> 
4078                </svg> 
4079            </div> 
4080 
4081            <a class="social-media-share"  href="https://twitter.com/intent/tweet?url=${newsInfo.url}" target="_blank" data-size="large"> 
4082                <svg class="twitter" width="37" height="36" viewBox="0 0 37 36" fill="none" 
4083                        xmlns="http://www.w3.org/2000/svg"> 
4084                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
4085                    <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"/> 
4086                </svg> 
4087                        <span >twitter</span> 
4088            </a> 
4089 
4090            <a class="social-media-share"  href="https://api.whatsapp.com/send?text=${newsInfo.url}" data-action="share/whatsapp/share" 
4091                target="_blank"> 
4092                <svg class="whatsapp" width="37" height="36" viewBox="0 0 37 36" fill="none" 
4093                        xmlns="http://www.w3.org/2000/svg"> 
4094                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
4095                    <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" 
4096                            fill="#008542"/> 
4097                    <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" 
4098                            fill="white"/> 
4099                </svg> 
4100                <span >Share to WhatsApp </span> 
4101            </a> 
4102 
4103            <div class="copy-text-container"> 
4104                <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4105                    <path d="M10.5 10.5H13.5V2.5H5.5V5.5" stroke="#008542" stroke-linecap="round" 
4106                            stroke-linejoin="round"/> 
4107                    <path d="M10.5 5.5H2.5V13.5H10.5V5.5Z" stroke="#008542" stroke-linecap="round" 
4108                            stroke-linejoin="round"/> 
4109                </svg> 
4110 
4111                <#if locale == "pt_BR"> 
4112                    <p class="text">Copiar texto <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p> 
4113                <#else > 
4114                    <p class="text">Copy text <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p> 
4115                </#if> 
4116            </div> 
4117 
4118        </div> 
4119 
4120        <#if locale == "pt_BR"> 
4121            <span class="copy-message">Texto copiado!</span> 
4122        <#else > 
4123            <span class="copy-message">Text copied!</span> 
4124        </#if> 
4125    <#--        </div>--> 
4126</#macro> 
4127 
4128<#-- ################################################################################################################## --> 
4129 
4130<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# --> 
4131<#macro renderLinks newsInfo> 
4132    <#if newsInfo.links?size != 0> 
4133    <#--videos "escondidos" que serão unidos a .ptb-news__read-content --> 
4134 
4135        <div class="ptb-news__links-container d-none "> 
4136            <div id="ptb-news__links-identifiers"> 
4137                <#assign separator = ""> 
4138                <#list newsInfo.links as link> 
4139                    ${link.id}; 
4140                    <#assign separator = ";"> 
4141                </#list> 
4142            </div> 
4143            <#list newsInfo.links as link> 
4144                <#assign link_index = link?index> 
4145                <#assign linkUrl = "#"> 
4146                <#assign target = "_blank"> 
4147                <#assign linkClass = ""> 
4148 
4149                <div id="ptb-news__link-container-${link_index}"> 
4150                    <#if link.externalLink?has_content> 
4151                        <#assign linkUrl = link.externalLink> 
4152                        <#assign target = "_blank"> 
4153                        <#assign linkClass = "external-link"> 
4154                    <#elseif link.pageLink?has_content> 
4155                        <#assign linkUrl = link.pageLink> 
4156                        <#assign target = "_self"> 
4157                        <#assign linkClass = "internal-page-link"> 
4158                    <#elseif link.file.mimeType?has_content> 
4159                        <#assign linkUrl = link.file.url> 
4160                        <#assign target = "_blank"> 
4161                        <#assign linkClass = "file-link"> 
4162                    </#if> 
4163 
4164                    <#-- PDF icon --> 
4165                    <#if link.iconType == "Opção78730408" > 
4166                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" 
4167                             xmlns="http://www.w3.org/2000/svg"> 
4168                            <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" 
4169                                  fill="#008542"/> 
4170                            <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" 
4171                                  fill="#008542"/> 
4172                            <path d="M17.2695 20.654V11.894H22.2735V13.358H18.9735V15.59H21.9015V17.054H18.9735V20.654H17.2695Z" 
4173                                  fill="#008542"/> 
4174                            <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" 
4175                                  stroke="#008542" stroke-width="1.5" stroke-linecap="round" 
4176                                  stroke-linejoin="round"/> 
4177                        </svg> 
4178 
4179                    <#-- JPG icon --> 
4180                    <#elseif link.iconType == "Opção89889679" > 
4181                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" 
4182                             xmlns="http://www.w3.org/2000/svg"> 
4183                            <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" 
4184                                  fill="#008542"/> 
4185                            <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" 
4186                                  fill="#008542"/> 
4187                            <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" 
4188                                  fill="#008542"/> 
4189                            <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" 
4190                                  stroke="#008542" stroke-width="1.5" stroke-linecap="round" 
4191                                  stroke-linejoin="round"/> 
4192                        </svg> 
4193                    <#-- DOC icon --> 
4194                    <#elseif link.iconType == "Opção15480314" > 
4195                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" 
4196                             xmlns="http://www.w3.org/2000/svg"> 
4197                            <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" 
4198                                  fill="#008542"/> 
4199                            <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" 
4200                                  fill="#008542"/> 
4201                            <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" 
4202                                  fill="#008542"/> 
4203                            <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" 
4204                                  stroke="#008542" stroke-width="1.5" stroke-linecap="round" 
4205                                  stroke-linejoin="round"/> 
4206                        </svg> 
4207                    <#-- External link icon --> 
4208                    <#elseif link.iconType == "Opção43823553" > 
4209                        <svg width="24" height="24" viewBox="0 0 32 32" fill="none" 
4210                             xmlns="http://www.w3.org/2000/svg"> 
4211                            <path opacity="0.98" 
4212                                  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" 
4213                                  stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
4214                        </svg> 
4215                    <#-- Internal page link icon --> 
4216                    <#elseif link.iconType == "Opção64212757" > 
4217                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#008542" viewBox="0 0 256 256"> 
4218                        <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"> 
4219                        </path> 
4220                    </svg> 
4221                    <#-- Download link icon --> 
4222                    <#elseif link.iconType == "Opção20766606" > 
4223                        <svg width="24" height="24" viewBox="0 0 32 32" fill="none" 
4224                             xmlns="http://www.w3.org/2000/svg"> 
4225                            <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" 
4226                                  stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
4227                        </svg> 
4228                    </#if> 
4229<#if link.title?? && link.title?has_content> 
4230                    <a href="${linkUrl}" class="link ${linkClass}" target="${target}">${link.title}</a> 
4231	</#if> 
4232                </div> 
4233            </#list> 
4234        </div> 
4235 
4236        <script> 
4237            var newsContent_code = document.querySelector(".news-content").innerHTML; 
4238 
4239            var linksIdentifiers = document.querySelector("#ptb-news__links-identifiers").innerHTML.trim().split(";"); 
4240            linksIdentifiers.forEach((linkIdentifier, index) => { 
4241                const linkIdentifierContent = document.querySelector("#ptb-news__link-container-" + index); 
4242                if (linkIdentifierContent) { 
4243                    const tag = "#[" + linkIdentifier.trim() + "]"; 
4244                    const splitContent = newsContent_code.split(tag); 
4245                    newsContent_code = splitContent.join(linkIdentifierContent.innerHTML); 
4246                    //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent); 
4247
4248            }); 
4249 
4250 
4251            var ptb_news__read_content = document.querySelector(".news-content"); 
4252            ptb_news__read_content.innerHTML = newsContent_code; 
4253             
4254            const links_ptb_news = document.querySelectorAll(".news-content a"); 
4255            links_ptb_news.forEach((link) => { 
4256                link.classList.add("link-ptb-news"); 
4257            }); 
4258 
4259        </script> 
4260 
4261        <style> 
4262            .ptb-news__read-news .ptb-news__link a { 
4263                font-family: var(--font-family-base); 
4264                font-style: var(--font-style-normal, normal); 
4265                font-weight: var(--font-weight-bold, 700); 
4266                font-size: var(--font-size-xxs, 16px); 
4267                line-height: var(--line-height-xl, 160%); 
4268                text-decoration-line: var(--text-decoration-underline, underline); 
4269                color: #008542; 
4270
4271 
4272            body.high-contrast-active .ptb-news__read-news .ptb-news__link a { 
4273                color: #E4F7E8; 
4274            }           
4275 
4276            .ptb-news__read-news .news-content .link { 
4277                font-family: var(--font-family-base); 
4278                font-style: var(--font-style-normal, normal); 
4279                font-weight: var(--font-weight-bold, 700); 
4280                font-size: var(--font-size-xs, 18px); 
4281                line-height: var(--line-height-xl, 160%); 
4282 
4283                text-decoration-line: var(--text-decoration-underline, underline); 
4284                color: #008542; 
4285
4286 
4287            body.high-contrast-active .ptb-news__read-news .news-content .link { 
4288                color: #E4F7E8; 
4289
4290 
4291            body.high-contrast-active .ptb-news__read-news .news-content svg path { 
4292                stroke: var(--color-neutral-500, #D7D7D7); 
4293                fill: rgba(255, 255, 255, 0.32); 
4294
4295 
4296            .ptb-news__read-news .news-content .ptb-link__wrapper { 
4297                display: flex; 
4298                flex-direction: column; 
4299                gap: 0; 
4300                margin-top: -24px; 
4301
4302 
4303            .ptb-news__read-news .news-content .ptb-link__wrapper svg { 
4304                margin-right: var(--space-sm, 16px); 
4305
4306 
4307            .ptb-news__read-news .news-content .ptb-link__wrapper .first { 
4308                gap: 0 !important; 
4309
4310 
4311            @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
4312                .ptb-news__read-news .news-content .link { 
4313                    font-size: var(--font-size-xxs, 16px); 
4314
4315
4316        </style> 
4317    </#if> 
4318</#macro> 
4319 
4320<#-- ################################################################################################################## --> 
4321 
4322<#-- ################################################################################################################## --> 
4323 
4324<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# --> 
4325<#macro renderCite> 
4326    <div class="ptb-news__cite-container"> 
4327        <div class="ptb-news__cite-container-breakpoint breakpoint"> 
4328            <div class="ptb-news__cite-container-col col-1-12 md-col-1-8 sm-col-1-4"> 
4329                <div class="ptb-news__cite-title"> 
4330                    <#if locale?lower_case == "pt_br"> 
4331                        Notas 
4332                    <#else> 
4333                        Notes 
4334                    </#if> 
4335                </div> 
4336 
4337                <div class="ptb-news__cites-elements"> 
4338                </div> 
4339            </div> 
4340        </div> 
4341    </div> 
4342 
4343    <script> 
4344        function positionCitesText(parentNodeCitesText) { 
4345             
4346            parentNodeCitesText.forEach((parentNodeCiteText)=>{ 
4347                if(window.innerWidth > 1024) { 
4348                    parentNodeCiteText.style.display=""; 
4349                    parentNodeCiteText.style.gridColumnStart = "11"; 
4350                    parentNodeCiteText.style.gridColumnEnd = "13"; 
4351                }  
4352                else { 
4353                    parentNodeCiteText.style.display="none"; 
4354                    parentNodeCiteText.style.gridColumnStart = ""; 
4355                    parentNodeCiteText.style.gridColumnEnd = "";                  
4356
4357            }); 
4358
4359 
4360        function addCitesTextMobile(citesText) { 
4361            const citesContainer = document.querySelector(".ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements"); 
4362 
4363            if(citesContainer.children.length === 0) { 
4364                citesContainer && citesText.forEach((citeText)=>{                         
4365                    citesContainer.appendChild(citeText.cloneNode(true)); 
4366                }); 
4367            }         
4368
4369 
4370        const citesText = document.querySelectorAll(".news-content cite"); 
4371         
4372        if (citesText.length > 0) { 
4373            const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode); 
4374            positionCitesText(parentNodeCitesText); 
4375            addCitesTextMobile(citesText);     
4376
4377        else { 
4378            const citesContainer = document.querySelector(".ptb-news__cite-container"); 
4379            citesContainer && (citesContainer.style.display="none"); 
4380
4381         
4382        document.addEventListener('DOMContentLoaded', ()=>{ 
4383             
4384            const citesText = document.querySelectorAll(".news-content cite"); 
4385             
4386            if (citesText.length > 0) { 
4387                const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode);            
4388 
4389                positionCitesText(parentNodeCitesText); 
4390                addCitesTextMobile(citesText); 
4391 
4392                window.addEventListener('resize', ()=>{positionCitesText(parentNodeCitesText)}); 
4393
4394            else { 
4395                const citesContainer = document.querySelector(".ptb-news__cite-container"); 
4396                citesContainer && (citesContainer.style.display="none"); 
4397
4398        }); 
4399 
4400    </script> 
4401 
4402    <style> 
4403     
4404        .ptb-news__read-news-post cite { 
4405            color: var(--color-neutral-800, #373737); 
4406            font-family: var(--font-family-base); 
4407            font-size: var(--font-size-xxxs, 14px) !important; 
4408            font-style: var(--font-style-normal, normal); 
4409            font-weight: var(--font-weight-regular, 400); 
4410            line-height: var(--line-height-xl, 160%); 
4411
4412 
4413        .ptb-news__read-news-post cite  a{ 
4414            font-size: var(--font-size-xxxs, 14px) !important; 
4415
4416 
4417        body.high-contrast-active .ptb-news__read-news-post cite { 
4418        color: var(--text-primary-default, var(--color-neutral-100)); 
4419        }  
4420 
4421        .ptb-news__read-news-post .news-content cite, 
4422        .ptb-news__read-news-post .ptb-news__cite-container cite { 
4423            display: block; 
4424            padding-left: var(--space-md); 
4425            border-left: var(--border-width-hairline, 1px) solid var(--color-neutral-500, #D7D7D7); 
4426
4427 
4428        @media screen and (min-width: 1025px) { 
4429            .ptb-news__read-news-post .ptb-news__cite-container { 
4430                display: none;                
4431            }         
4432
4433 
4434        @media screen and (max-width: 1025px) { 
4435            .ptb-news__read-news .ptb-news__cite-container .link { 
4436                text-decoration-line: var(--text-decoration-underline, underline); 
4437                color: #008542; 
4438
4439 
4440            body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container .link { 
4441                color: #E4F7E8; 
4442
4443 
4444            body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container svg path { 
4445                stroke: var(--color-neutral-500, #D7D7D7); 
4446                fill: rgba(255, 255, 255, 0.32); 
4447
4448             
4449            .ptb-news__read-news-post .ptb-news__cite-container { 
4450                display: grid; 
4451                background: var(--background-surface-level-03, #EEE); 
4452
4453 
4454            body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container { 
4455                background: var(--background-surface-level-03, #525252); 
4456
4457 
4458            .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col { 
4459                padding: var(--space-xxl) 0; 
4460                display: flex; 
4461                flex-direction: column; 
4462                gap: var(--space-lg, 32px); 
4463
4464 
4465            .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements { 
4466                display: flex; 
4467                flex-direction: column; 
4468                gap: var(--space-lg, 32px);  
4469            }       
4470 
4471            .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title { 
4472                color: var(--color-neutral-800, #373737); 
4473                font-size: var(--font-size-sm, 20px); 
4474                font-style: var(--font-style-normal, normal); 
4475                font-weight: var(--font-weight-bold, 700); 
4476                line-height: var(--line-height-xl, 160%); 
4477
4478 
4479            body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title { 
4480                color: var(--text-primary-default, var(--color-neutral-100)); 
4481
4482        }         
4483    </style> 
4484     
4485</#macro> 
4486 
4487<#-- ################################################################################################################## --> 
4488 
4489 
4490<#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### --> 
4491<#macro renderGallery newsInfo> 
4492    <#if newsInfo.galleryItems?size == 0> 
4493        <#return /> 
4494    </#if> 
4495 
4496    <div class="gallery-breakpoint breakpoint"> 
4497        <div class="gallery col-3-11 md-col-1-8 sm-col-1-4"> 
4498 
4499            <div class="title-container"> 
4500                <svg class="icon" viewBox="0 0 26 23" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4501                    <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" 
4502                            stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
4503                    <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" 
4504                            stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
4505                </svg> 
4506                <p class="title"> 
4507                    <#if locale == "pt_BR"> Galeria de Imagens <#else > Image gallery </#if> 
4508                </p> 
4509            </div> 
4510 
4511            <div class="image-container"> 
4512				<#assign index = 0 /> 
4513				<#assign index = 0 /> 
4514                <#list newsInfo.galleryItems as gItem> 
4515                    <div class="modal-image-fragment" index="${index}"> 
4516                        <div class="modal-image-container" index="${index}"> 
4517                    <div class="modal-image-fragment" index="${index}"> 
4518                        <div class="modal-image-container" index="${index}"> 
4519                            <span class="click-image" ></span> 
4520 
4521                            <div class="image-player-container"> 
4522                                <span class="close-image"> 
4523                                    <svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4524                                        <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"/> 
4525                                        <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"/> 
4526                                    </svg> 
4527                                </span> 
4528                                <div class="image-player-session"> 
4529                                    <#-- Midias adaptativas de imagem para desktop e mobile --> 
4530                                    <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${gItem.image.fileEntryId}") /> 
4531                                    <#assign urlAdaptativeMediaMobile = gItem.image.url/> 
4532                                    <#assign urlAdaptativeMediaDesktop = gItem.image.url/> 
4533                                     
4534                                    <#if fileDataRequest?? && fileDataRequest.adaptedImages?? > 
4535                                        <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages /> 
4536                                        <#list dataAdaptativeMedia as data> 
4537                                            <#if data.resolutionName == adaptativeMediaDesktopResolutionName> 
4538                                                <#assign urlAdaptativeMediaDesktop = data.contentUrl/> 
4539                                            </#if> 
4540                                            <#if data.resolutionName == adaptativeMediaMobileResolutionName> 
4541                                                <#assign urlAdaptativeMediaMobile = data.contentUrl/> 
4542                                            </#if>      
4543                                        </#list> 
4544                                    </#if> 
4545																																				 
4546                                    <picture > 
4547                                        <source media="(max-width:767px)" srcset="${urlAdaptativeMediaMobile}"  > 
4548                                        <img width="274px" height="152px" loading="lazy" src="${urlAdaptativeMediaDesktop}" alt="${gItem.image.alt}"/> 
4549                                    </picture>		   
4550                                </div> 
4551                            </div> 
4552                        </div> 
4553                    </div> 
4554                    <#assign index = index + 1 /> 
4555                    <#assign index = index + 1 /> 
4556                </#list> 
4557                <div class="control-arrow left-arrow"> 
4558                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4559                        <path d="M20 26L10 16L20 6" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
4560                    </svg> 
4561                </div> 
4562                <div class="control-arrow right-arrow"> 
4563                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4564                        <path d="M12 6L22 16L12 26" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
4565                    </svg> 
4566                </div> 
4567                <div class="image-bullets"> 
4568                    <#list 0..(newsInfo.galleryItems?size-1) as index> 
4569                        <div index="${index}" class="bullet"></div> 
4570                    </#list> 
4571                </div> 
4572            </div> 
4573                <div class="control-arrow left-arrow"> 
4574                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4575                        <path d="M20 26L10 16L20 6" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
4576                    </svg> 
4577                </div> 
4578                <div class="control-arrow right-arrow"> 
4579                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4580                        <path d="M12 6L22 16L12 26" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
4581                    </svg> 
4582                </div> 
4583                <div class="image-bullets"> 
4584                    <#list 0..(newsInfo.galleryItems?size-1) as index> 
4585                        <div index="${index}" class="bullet"></div> 
4586                    </#list> 
4587                </div> 
4588            </div> 
4589        </div> 
4590    </div> 
4591 
4592    <style> 
4593 
4594        .ptb-news__read-news .gallery { 
4595            padding-top: 42px; 
4596
4597 
4598        .ptb-news__read-news .gallery * { 
4599            margin: 0; 
4600            padding: 0; 
4601
4602 
4603        .ptb-news__read-news .gallery { 
4604            display: flex; 
4605            gap: var(--space-xl, 40px); 
4606            flex-direction: column; 
4607
4608			 
4609        .ptb-news__read-news .gallery .control-arrow { 
4610            position: fixed; 
4611            height: 100%; 
4612            align-items: center; 
4613            display: flex; 
4614            justify-content: center; 
4615            display: none; 
4616            z-index: 9999; 
4617
4618 
4619        .ptb-news__read-news .gallery .left-arrow { 
4620            top: 0; 
4621            left: 5vw; 
4622
4623 
4624        .ptb-news__read-news .gallery .right-arrow { 
4625            top: 0; 
4626            right: 5vw; 
4627
4628 
4629        .ptb-news__read-news .gallery .lefg-arrow svg { 
4630          margin-left: 16px !important; 
4631
4632 
4633        .ptb-news__read-news .gallery .right-arrow svg { 
4634          margin-right: 16px !important; 
4635
4636 
4637        .ptb-news__read-news .gallery .image-bullets { 
4638          display: none; 
4639          gap: var(--space-sm, 16px); 
4640          position: fixed; 
4641          left: 0; 
4642          bottom: calc(10vh + 24px); 
4643          width: 100vw; 
4644          z-index: 9999; 
4645          justify-content: center; 
4646
4647 
4648        .ptb-news__read-news .gallery .image-bullets .bullet { 
4649          width: var(--size-xs, 16px); 
4650          height: var(--size-xs, 16px); 
4651          border-radius: 50%; 
4652          border: 1px solid var(--color-neutral-100, #FFFFFF); 
4653          z-index: 9999; 
4654
4655 
4656        .ptb-news__read-news .gallery .image-bullets .bullet.current-item { 
4657          background: var(--color-neutral-100, #FFFFFF); 
4658
4659			 
4660        .ptb-news__read-news .gallery .control-arrow { 
4661            position: fixed; 
4662            height: 100%; 
4663            align-items: center; 
4664            display: flex; 
4665            justify-content: center; 
4666            display: none; 
4667            z-index: 9999; 
4668
4669 
4670        .ptb-news__read-news .gallery .left-arrow { 
4671            top: 0; 
4672            left: 5vw; 
4673
4674 
4675        .ptb-news__read-news .gallery .right-arrow { 
4676            top: 0; 
4677            right: 5vw; 
4678
4679 
4680        .ptb-news__read-news .gallery .lefg-arrow svg { 
4681          margin-left: 16px !important; 
4682
4683 
4684        .ptb-news__read-news .gallery .right-arrow svg { 
4685          margin-right: 16px !important; 
4686
4687 
4688        .ptb-news__read-news .gallery .image-bullets { 
4689          display: none; 
4690          gap: var(--space-sm, 16px); 
4691          position: fixed; 
4692          left: 0; 
4693          bottom: calc(10vh + 24px); 
4694          width: 100vw; 
4695          z-index: 9999; 
4696          justify-content: center; 
4697
4698 
4699        .ptb-news__read-news .gallery .image-bullets .bullet { 
4700          width: var(--size-xs, 16px); 
4701          height: var(--size-xs, 16px); 
4702          border-radius: 50%; 
4703          border: 1px solid var(--color-neutral-100, #FFFFFF); 
4704          z-index: 9999; 
4705
4706 
4707        .ptb-news__read-news .gallery .image-bullets .bullet.current-item { 
4708          background: var(--color-neutral-100, #FFFFFF); 
4709
4710 
4711        .ptb-news__read-news .gallery .title-container { 
4712            display: flex; 
4713            align-items: center; 
4714            gap: var(--space-sm, 16px); 
4715
4716 
4717        .ptb-news__read-news .gallery .title-container svg { 
4718            width: var(--size-md, 24px); 
4719            height: 21px; 
4720
4721 
4722        .ptb-news__read-news .gallery .title-container .title { 
4723            color: var(--color-neutral-800, #373737); 
4724            font-family: var(--font-family-base); 
4725            font-size: var(--font-size-lg); 
4726            font-style: var(--font-style-normal); 
4727            font-weight: var(--font-weight-bold); 
4728            line-height: var(--line-height-md); 
4729
4730 
4731        body.high-contrast-active .ptb-news__read-news .gallery .title-container .title { 
4732            color: var(--color-neutral-100); 
4733
4734 
4735        .ptb-news__read-news .gallery .image-container { 
4736            display: flex; 
4737            gap: var(--space-sm, 16px); 
4738            flex-wrap: wrap; 
4739
4740 
4741         .ptb-news__read-news .gallery .image-container .modal-image-fragment { 
4742            width: inherit; 
4743            height: inherit; 
4744            max-height: calc(100vw/2); 
4745            padding: 0; 
4746            margin: 0; 
4747            overflow: hidden; 
4748
4749 
4750        .ptb-news__read-news .gallery .image-container .modal-image-fragment * { 
4751            box-sizing: border-box; 
4752            margin: 0; 
4753            padding: 0; 
4754
4755 
4756        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container { 
4757            width: 100%; 
4758            height: inherit; 
4759            display: flex; 
4760            justify-content: center; 
4761            align-items: center; 
4762            cursor: pointer; 
4763            position: relative; 
4764
4765 
4766        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing {     
4767            position: fixed; 
4768            top: 0; 
4769            left: 0; 
4770            width: 100vw !important; 
4771            height: 100vh !important; 
4772            z-index: 9999 !important; 
4773            background-color: rgba(0, 0, 0, 0.75); 
4774            max-height: 100vh; 
4775
4776 
4777        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .click-image { 
4778            height: 100%; 
4779            width: 100%; 
4780            position: absolute; 
4781            z-index: 3; 
4782
4783 
4784        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container { 
4785            width: 100%; 
4786            height: 100%; 
4787
4788 
4789        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing { 
4790            position: relative; 
4791            width: 90vw !important; 
4792            height: 80vh !important; 
4793            z-index: 9999 !important; 
4794            background-color: rgba(0, 0, 0, 0.75); 
4795            border-radius: var(--border-radius-card); 
4796
4797 
4798        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image { 
4799            display: none; 
4800            position: absolute; 
4801            top: 0; 
4802	        right: 0; 
4803            transform: translate(100%, -100%); 
4804            z-index: 99999; 
4805
4806 
4807        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) { 
4808           fill: var(--background-Surface-level-01, #010101); 
4809
4810 
4811        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) { 
4812           stroke: #E4F7E8; 
4813
4814 
4815        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image.image-active { 
4816            display: block; 
4817
4818 
4819        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session { 
4820            width: 100%; 
4821            height: 100%; 
4822
4823 
4824        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session { 
4825            width: 90vw !important; 
4826            height: 80vh !important; 
4827            z-index: 9999 !important; 
4828            background-color: rgba(0, 0, 0, 0.75); 
4829            border-radius: var(--border-radius-card); 
4830            overflow: hidden; 
4831
4832 
4833        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session img { 
4834            object-fit: cover; 
4835
4836 
4837        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session img { 
4838            width: 100%; 
4839            height: 100%; 
4840            margin-left: 0 !important; 
4841            max-height: 100vh; 
4842
4843 
4844        .ptb-news__read-news .gallery .image-container img { 
4845            width: 274px; 
4846            height: 152px; 
4847            border-radius: var(--border-radius-md, 8px); 
4848            cursor: pointer; 
4849
4850 
4851        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
4852 
4853            .ptb-news__read-news .gallery { 
4854                padding-top: var(--space-xl, 40px); 
4855
4856 
4857            .ptb-news__read-news .gallery .image-container { 
4858                gap: var(--space-xxs, 8px); 
4859
4860 
4861            .ptb-news__read-news .gallery .image-container img { 
4862                width: 296px; 
4863                height: 180px; 
4864
4865 
4866            .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing { 
4867                transform: rotate(90deg); 
4868                transform-origin: center; 
4869                width: 80vh !important; 
4870                height: 90vw !important; 
4871
4872 
4873            .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing img{ 
4874                cursor: pointer; 
4875
4876 
4877            .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session { 
4878                width: 80vh !important; 
4879                height: 90vw !important; 
4880
4881 
4882            .ptb-news__read-news .gallery .lefg-arrow svg { 
4883                margin-left: 4px !important; 
4884
4885 
4886            .ptb-news__read-news .gallery .right-arrow svg { 
4887                margin-right: 4px !important; 
4888
4889 
4890            .ptb-news__read-news .gallery .image-bullets { 
4891              gap: 14px; 
4892
4893 
4894            .ptb-news__read-news .gallery .image-bullets .bullet { 
4895              width: var(--size-xxs, 12px); 
4896              height: var(--size-xxs, 12px); 
4897
4898 
4899            .ptb-news__read-news .gallery .lefg-arrow svg { 
4900                margin-left: 4px !important; 
4901
4902 
4903            .ptb-news__read-news .gallery .right-arrow svg { 
4904                margin-right: 4px !important; 
4905
4906 
4907            .ptb-news__read-news .gallery .image-bullets { 
4908              gap: 14px; 
4909
4910 
4911            .ptb-news__read-news .gallery .image-bullets .bullet { 
4912              width: var(--size-xxs, 12px); 
4913              height: var(--size-xxs, 12px); 
4914
4915
4916 
4917    </style> 
4918 
4919    <script> 
4920     
4921     
4922        const allModalImagesFragment = document.querySelectorAll(".ptb-news__read-news .gallery .modal-image-fragment"); 
4923        const totalItems = allModalImagesFragment.length; 
4924        const bulletsContainer = document.querySelector(".ptb-news__read-news .gallery .image-bullets"); 
4925        const bullets = bulletsContainer.querySelectorAll(".bullet"); 
4926        let currentItem = 0; 
4927        const nextImage = document.querySelector(".ptb-news__read-news .gallery .right-arrow"); 
4928        const previousImage = document.querySelector(".ptb-news__read-news .gallery .left-arrow"); 
4929 
4930        const stopImage = (getImageClick, imagePlayerContainer, imageContainer, closeImage) => { 
4931            getImageClick.classList.remove('image-playing'); 
4932            imagePlayerContainer.classList.remove('image-playing'); 
4933            imageContainer.classList.remove('image-playing'); 
4934 
4935					  const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem +  '"]') 
4936            currentBullet && currentBullet.classList.remove('current-item'); 
4937						 
4938            closeImage.classList.remove('image-active'); 
4939             
4940            document.querySelector("body").style.overflow = 'initial'; 
4941            [nextImage, previousImage].forEach(item => { 
4942                item.style.display = "none"; 
4943            }); 
4944            bulletsContainer.style.display = "none"; 
4945
4946 
4947        const playImage = (index, getImageClick, imagePlayerContainer, imageContainer, closeImage) => { 
4948            getImageClick.classList.add('image-playing'); 
4949            imagePlayerContainer.classList.add('image-playing'); 
4950            imageContainer.classList.add('image-playing'); 
4951            closeImage.classList.add('image-active'); 
4952 
4953             
4954            document.querySelector("body").style.overflow = 'hidden'; 
4955            [nextImage, previousImage].forEach(item => { 
4956                item.style.display = "flex"; 
4957            }); 
4958            bulletsContainer.style.display = "flex"; 
4959            bullets[index].classList.add('current-item'); 
4960
4961 
4962        const changeImage = (next) => { 
4963          if(next == currentItem || next < 0 || next >= totalItems) return; 
4964 
4965          const getImageClick = allModalImagesFragment[currentItem].querySelector('.click-image'); 
4966          const imageContainer = allModalImagesFragment[currentItem].querySelector('.modal-image-container'); 
4967          const imagePlayerContainer = allModalImagesFragment[currentItem].querySelector('.image-player-container'); 
4968          const image = imagePlayerContainer.querySelector('img'); 
4969          const closeImage = imagePlayerContainer.querySelector('.close-image'); 
4970 
4971          const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem +  '"]') 
4972          currentBullet.classList.remove('current-item'); 
4973 
4974          stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);  
4975          allModalImagesFragment[next].querySelector('.click-image')?.click(); 
4976           
4977          const nextBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + next +  '"]') 
4978          nextBullet.classList.add('current-item'); 
4979          currentItem = next; 
4980
4981 
4982        nextImage.addEventListener('click', () => { 
4983          changeImage(currentItem + 1); 
4984        }); 
4985 
4986        previousImage.addEventListener('click', () => { 
4987          changeImage(currentItem - 1); 
4988        }); 
4989 
4990        bullets.forEach((bullet, bulletIndex) => { 
4991          bullet.addEventListener('click', (_) => changeImage(bulletIndex)) ; 
4992        }); 
4993 
4994        allModalImagesFragment.forEach((modalImageFragment, index)=>{ 
4995        const totalItems = allModalImagesFragment.length; 
4996        const bulletsContainer = document.querySelector(".ptb-news__read-news .gallery .image-bullets"); 
4997        const bullets = bulletsContainer.querySelectorAll(".bullet"); 
4998        let currentItem = 0; 
4999        const nextImage = document.querySelector(".ptb-news__read-news .gallery .right-arrow"); 
5000        const previousImage = document.querySelector(".ptb-news__read-news .gallery .left-arrow"); 
5001 
5002        const stopImage = (getImageClick, imagePlayerContainer, imageContainer, closeImage) => { 
5003            getImageClick.classList.remove('image-playing'); 
5004            imagePlayerContainer.classList.remove('image-playing'); 
5005            imageContainer.classList.remove('image-playing'); 
5006 
5007					  const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem +  '"]') 
5008            currentBullet && currentBullet.classList.remove('current-item'); 
5009						 
5010            closeImage.classList.remove('image-active'); 
5011             
5012            document.querySelector("body").style.overflow = 'initial'; 
5013            [nextImage, previousImage].forEach(item => { 
5014                item.style.display = "none"; 
5015            }); 
5016            bulletsContainer.style.display = "none"; 
5017
5018 
5019        const playImage = (index, getImageClick, imagePlayerContainer, imageContainer, closeImage) => { 
5020            getImageClick.classList.add('image-playing'); 
5021            imagePlayerContainer.classList.add('image-playing'); 
5022            imageContainer.classList.add('image-playing'); 
5023            closeImage.classList.add('image-active'); 
5024 
5025             
5026            document.querySelector("body").style.overflow = 'hidden'; 
5027            [nextImage, previousImage].forEach(item => { 
5028                item.style.display = "flex"; 
5029            }); 
5030            bulletsContainer.style.display = "flex"; 
5031            bullets[index].classList.add('current-item'); 
5032
5033 
5034        const changeImage = (next) => { 
5035          if(next == currentItem || next < 0 || next >= totalItems) return; 
5036 
5037          const getImageClick = allModalImagesFragment[currentItem].querySelector('.click-image'); 
5038          const imageContainer = allModalImagesFragment[currentItem].querySelector('.modal-image-container'); 
5039          const imagePlayerContainer = allModalImagesFragment[currentItem].querySelector('.image-player-container'); 
5040          const image = imagePlayerContainer.querySelector('img'); 
5041          const closeImage = imagePlayerContainer.querySelector('.close-image'); 
5042 
5043          const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem +  '"]') 
5044          currentBullet.classList.remove('current-item'); 
5045 
5046          stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);  
5047          allModalImagesFragment[next].querySelector('.click-image')?.click(); 
5048           
5049          const nextBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + next +  '"]') 
5050          nextBullet.classList.add('current-item'); 
5051          currentItem = next; 
5052
5053 
5054        nextImage.addEventListener('click', () => { 
5055          changeImage(currentItem + 1); 
5056        }); 
5057 
5058        previousImage.addEventListener('click', () => { 
5059          changeImage(currentItem - 1); 
5060        }); 
5061 
5062        bullets.forEach((bullet, bulletIndex) => { 
5063          bullet.addEventListener('click', (_) => changeImage(bulletIndex)) ; 
5064        }); 
5065 
5066        allModalImagesFragment.forEach((modalImageFragment, index)=>{ 
5067            const getImageClick = modalImageFragment.querySelector('.click-image'); 
5068            const imageContainer = modalImageFragment.querySelector('.modal-image-container'); 
5069            const imagePlayerContainer = modalImageFragment.querySelector('.image-player-container'); 
5070 
5071            const image = imagePlayerContainer.querySelector('img'); 
5072            const closeImage = imagePlayerContainer.querySelector('.close-image'); 
5073            const body = document.body; 
5074 
5075            const toTopButton = document.querySelector(".fragment_88038 .petro-button"); 
5076 
5077            getImageClick.addEventListener('click', () => { 
5078                if (document.body.classList.contains('has-edit-mode-menu')) { 
5079                    return; 
5080
5081                currentItem = index; 
5082                currentItem = index; 
5083                if (imagePlayerContainer.classList.contains('image-playing')) { 
5084                    toTopButton && (toTopButton.style.zIndex = ""); 
5085                    stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImagegetImageClick, imagePlayerContainer, imageContainer, closeImage); 
5086                } else { 
5087                    playImage(index, getImageClick, imagePlayerContainer, imageContainer, closeImageindex, getImageClick, imagePlayerContainer, imageContainer, closeImage); 
5088                    toTopButton && (toTopButton.style.zIndex = "1"); 
5089
5090            }) 
5091 
5092            closeImage.addEventListener('click', () => { 
5093                if (imagePlayerContainer.classList.contains('image-playing')) { 
5094                    toTopButton && (toTopButton.style.zIndex = ""); 
5095                    stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage); 
5096                    const bulletToClose = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + index +  '"]') 
5097                    bulletToClose?.classList.remove('current-item'); 
5098                }  
5099            }) 
5100        });             
5101    </script> 
5102 
5103</#macro> 
5104 
5105 
5106<#-- ################################################################################################################## --> 
5107	 
5108	 
5109	 
5110	 
5111	 
5112	 
5113	 
5114	 
5115	 
5116	 
5117	 
5118	 
5119	 
5120	<#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### --> 
5121<#macro renderQuotes newsInfo> 
5122    <#if newsInfo.quotes?size != 0> 
5123    <#--quotes "escondidas" que serão unidas a .ptb-news__read-content --> 
5124 
5125        <div class="ptb-news__quotes-container d-none "> 
5126            <div id="ptb-news__quotes-identifiers"> 
5127                <#assign separator = ""> 
5128                <#list newsInfo.quotes as quote> 
5129                    ${quote.id}; 
5130                    <#assign separator = ";"> 
5131                </#list> 
5132            </div> 
5133            <#list newsInfo.quotes as quote> 
5134                <#assign quotes_index = quote?index> 
5135                <div id="ptb-news__quotes-container-${quote_index}"> 
5136                    <#assign noAuthorWrapper = !((quote.image.url?? && quote.image.url?has_content) || (quote.author?has_content)) /> 
5137                    <div class="quote <#if noAuthorWrapper>no-author-wrapper</#if>"> 
5138                        <div class="text-wrapper"> 
5139                            <blockquote class="text">${quote.content}</blockquote > 
5140                        </div> 
5141                        <#if !noAuthorWrapper>   
5142                            <div class="author-wrapper"> 
5143                                <#if quote.image.url?? && quote.image.url?has_content> 
5144                                    <#assign imageUrl = "/o/adaptive-media/image/" + quote.image.fileEntryId +"/Thumbnail-300x300/image"/> 
5145                                    <img src="${imageUrl}" loading="lazy" alt="${quote.image.alt}">		 
5146                                </#if> 
5147                                <#if quote.author?? && quote?has_content>                             
5148                                    <p class="author">${quote.author}</p> 
5149                                </#if> 
5150                            </div> 
5151                        </#if> 
5152                    </div> 
5153                </div> 
5154            </#list> 
5155        </div> 
5156 
5157        <script> 
5158            var newsContent_code = document.querySelector(".news-content").innerHTML; 
5159 
5160            var quotesIdentifiers = document.querySelector("#ptb-news__quotes-identifiers").innerHTML.trim().split(";"); 
5161            quotesIdentifiers.forEach((quoteIdentifier, index) => { 
5162                const quoteIdentifierContent = document.querySelector("#ptb-news__quotes-container-" + index); 
5163                if (quoteIdentifierContent) { 
5164                    const tag = "#[" + quoteIdentifier.trim() + "]"; 
5165                    const splitContent = newsContent_code.split(tag); 
5166                    newsContent_code = splitContent.join(quoteIdentifierContent.innerHTML); 
5167                    //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent); 
5168
5169            }); 
5170 
5171 
5172            var ptb_news__read_content = document.querySelector(".news-content"); 
5173            ptb_news__read_content.innerHTML = newsContent_code; 
5174 
5175        </script> 
5176 
5177        <style> 
5178            
5179            .ptb-news__read-news .quote { 
5180                display: flex; 
5181                flex-direction: column; 
5182                gap: var(--space-md, 24px); 
5183
5184 
5185            .ptb-news__read-news .quote.no-author-wrapper{ 
5186                gap: 0; 
5187
5188 
5189            .ptb-news__read-news .quote .text-wrapper { 
5190                padding-left: var(--space-xl, 40px); 
5191
5192 
5193            .ptb-news__read-news .quote .text-wrapper .text { 
5194                font-style: var(--font-style-italic) !important; 
5195                padding-left: var(--space-md, 24px); 
5196                margin-bottom: 0; 
5197                border-left: 1px solid var(--border-color-mid, #d7d7d7); 
5198							  font-size: var(--font-size-xxs, 16px); 
5199
5200 
5201            .ptb-news__read-news .quote .author-wrapper {  
5202                display: flex; 
5203                flex-direction: row; 
5204                gap: var(--space-md, 24px); 
5205
5206 
5207            .ptb-news__read-news .news-content .quote .author-wrapper img { 
5208                height: var(--size-xxxl, 56px); 
5209                width: var(--size-xxxl, 56px); 
5210                border-radius: 100px; 
5211                border: var(--size-nano, 2px) solid var(--border-color-mid) !important; 
5212
5213 
5214            .ptb-news__read-news .news-content .quote .author-wrapper p { 
5215                margin: 0; 
5216                align-self: center; 
5217                font-size: var(--font-size-xs, 18px); 
5218                font-style: var(--font-style-normal, normal); 
5219                font-weight: var(--font-weight-bold, 700); 
5220                line-height: var(--line-height-xs, 100%); 
5221
5222 
5223            @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
5224                .ptb-news__read-news .quote .text-wrapper { 
5225                    padding-left: 0; 
5226
5227							 
5228							  .ptb-news__read-news .quote .text-wrapper .text { 
5229							      font-size: var(--font-size-xxxs, 14px); 
5230
5231 
5232                .ptb-news__read-news .news-content .quote .author-wrapper p { 
5233                    font-size: var(--font-size-xxs, 16px); 
5234
5235
5236        </style> 
5237    </#if> 
5238</#macro> 
5239 
5240 
5241					 
5242					 
5243<#-- ################################################################################################################## --> 
5244	 
5245	 
5246	 
5247	 
5248	 
5249	 
5250 
5251 
5252<#-- ############# Site de Crise - Notícia - Extrair dados de Notícias ################################################ --> 
5253<#-- 
5254Add elements from the sidebar to define your template. Type "${" to use the 
5255autocomplete feature. 
5256--> 
5257<#function extractFeaturedNewsHeadline fieldList xmlArticle> 
5258    <#return getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia")> 
5259</#function> 
5260 
5261<#function extractNewsSummary fieldList xmlArticle> 
5262    <#return getFieldValue(fieldList, xmlArticle, "Resumo da notícia")> 
5263</#function> 
5264 
5265<#function extractPublishDate journalArticle> 
5266    <#assign lastPublishDate = journalArticle.getModifiedDate()> 
5267    <#if journalArticle.getLastPublishDate()??> 
5268        <#assign lastPublishDate = journalArticle.getLastPublishDate()> 
5269    <#else> 
5270        <#assign lastPublishDate = journalArticle.getModifiedDate()> 
5271    </#if> 
5272    <#return lastPublishDate /> 
5273</#function> 
5274 
5275<#-- Seção da imagem de destaque ----------------------------------------------------------------------> 
5276<#function extractNewsMedia fieldList xmlArticle  fileEntryService> 
5277    <#-- Tentando pegar Imagem --> 
5278    <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) /> 
5279    <#assign media = {} /> 
5280    <#list mediasGroup as mediaGroup > 
5281        <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) />  
5282        <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "fileEntryId" : media.fileEntryId} /> 
5283 
5284        <#-- Se não tiver imagem, tentar pegar vídeo --> 
5285        <#if !media.imageSrc?has_content>               
5286            <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") /> 
5287            <#if youtubeID?? && youtubeID?has_content>  
5288                <#assign media = {"videoYotubeID": youtubeID} /> 
5289            <#else> 
5290                <#-- Tentar pegar vídeo Interno --> 
5291                <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) /> 
5292                <#if internalVideo?? && internalVideo?has_content> 
5293                    <#assign media = {"internalVideo": internalVideo} /> 
5294                </#if> 
5295            </#if>          
5296        </#if> 
5297 
5298        <#assign referenceMediasGroup = getNodes(getIdFromFieldName(fieldList, "Referências"), mediaGroup) /> 
5299        <#list referenceMediasGroup as referenciaMediaGroup > 
5300            <#assign credits = getFieldValue(fieldList, referenceMediasGroup, "Crédito da mídia de destaque da notícia") /> 
5301            <#assign legend = getFieldValue(fieldList, referenceMediasGroup, "Legenda da mídia de destaque da notícia") /> 
5302        </#list> 
5303 
5304        <#assign media = media + {"credits": credits, "legend": legend} /> 
5305         
5306    </#list> 
5307 
5308    <#return media> 
5309</#function> 
5310 
5311 
5312<#--------------------- Renderização de Lista de Cards -----------------------------------------------> 
5313 
5314<#-- Root Css -> Para poder instanciar dois elementos e não dar confusão no JS --> 
5315<#assign rootCss = "card-news-list-container_" + randomNumber(4586) /> 
5316 
5317<#attempt> 
5318    <#assign ourEnergyStyles = [] /> 
5319    <#list ourEnergyVocabulary.getCategories() as ourEnergyCategory > 
5320        <#assign shadowColorCategory = "" /> 
5321        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra")??)> 
5322            <#assign categoryShadowColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra") /> 
5323            <#assign shadowColorCategory = categoryShadowColorByService.value /> 
5324        </#if> 
5325 
5326        <#assign backgroundColorCategory = "" /> 
5327        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo")??)> 
5328            <#assign categoryBackgroundColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo") /> 
5329            <#assign backgroundColorCategory = categoryBackgroundColorByService.value /> 
5330        </#if> 
5331 
5332        <#assign textColorCategory = "" /> 
5333        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto")??)> 
5334            <#assign categoryTextColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto") /> 
5335            <#assign textColorCategory = categoryTextColorByService.value /> 
5336        </#if> 
5337 
5338        <#assign textColorHighContrastCategory = "" /> 
5339        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste")??)> 
5340            <#assign categoryTextColorHighContrastByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste") /> 
5341            <#assign textColorHighContrastCategory = categoryTextColorHighContrastByService.value /> 
5342        </#if> 
5343 
5344        <#assign ourEnergyStyles += [{"titleLocale": ourEnergyCategory.getTitle(locale),"shadowColor": shadowColorCategory, "backgroundColor": backgroundColorCategory, "textColor": textColorCategory, "textColorHighContrast": textColorHighContrastCategory}] /> 
5345    </#list> 
5346 
5347    <#recover> 
5348        <#assign ourEnergyStyles = [] /> 
5349     
5350</#attempt> 
5351 
5352<#-- Função para obter a primeira categoria associonada a um Vocabulário o qual está associado a um Jornal Article --> 
5353<#function getFirstCategoryTitleLocaleOfVocabulary journalArticle vocabulary > 
5354    <#attempt> 
5355        <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) /> 
5356         
5357        <#list categories as category> 
5358            <#if vocabulary.getVocabularyId() == category.getVocabularyId()> 
5359                <#return category.getTitle(locale)> 
5360            </#if> 
5361        </#list> 
5362 
5363        <#return ""> 
5364 
5365        <#recover> 
5366            <#return "" /> 
5367 
5368    </#attempt> 
5369</#function> 
5370 
5371<#-- Função para obter os dados de um card no Web Content (Journal Article) --> 
5372<#function getDataForCard entry > 
5373    <#attempt> 
5374        <#assign journalArticle = journalArticleLocalService.getLatestArticle(entry.getClassPK()) /> 
5375        <#assign ddmStructure = journalArticle.getDDMStructure() /> 
5376        <#assign fieldList = getFieldListByStructure(ddmStructure) /> 
5377        <#assign xmlArticle = journalArticle.getDocument().getRootElement() /> 
5378 
5379        <#-- Tentando pegar Imagem --> 
5380        <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) /> 
5381        <#assign media = "" /> 
5382        <#list mediasGroup as mediaGroup > 
5383            <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) /> 
5384 
5385            <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${media.fileEntryId}") /> 
5386 
5387            <#assign urlAdaptativeMediaDesktop = ""/> 
5388            <#assign urlAdaptativeMediaMobile = ""/> 
5389            <#if media.url?? && media.url?has_content && fileDataRequest?? && fileDataRequest.adaptedImages?? > 
5390                <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages /> 
5391                <#list dataAdaptativeMedia as data> 
5392                    <#if data.resolutionName == adaptativeMediaDesktopResolutionName> 
5393                        <#assign urlAdaptativeMediaDesktop = data.contentUrl/> 
5394                    </#if> 
5395                    <#if data.resolutionName == adaptativeMediaMobileResolutionName> 
5396                        <#assign urlAdaptativeMediaMobile = data.contentUrl/> 
5397                    </#if>      
5398                </#list> 
5399            </#if> 
5400            <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "imageFileEntryId": media.fileEntryId, "urlAdaptativeMedia": {"mobile": urlAdaptativeMediaMobile, "desktop": urlAdaptativeMediaDesktop}} />  
5401             
5402            <#-- Se não tiver imagem, tentar pegar vídeo --> 
5403            <#if !media.imageSrc?? || !media.imageSrc?has_content>               
5404                <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") /> 
5405                <#if youtubeID?? && youtubeID?has_content>  
5406                    <#assign media = {"videoYotubeID": youtubeID} /> 
5407                <#else> 
5408                    <#-- Tentar pegar vídeo Interno --> 
5409                    <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) /> 
5410                    <#if internalVideo?? && internalVideo?has_content> 
5411                        <#assign media = {"internalVideo": internalVideo} /> 
5412                    </#if> 
5413                </#if>          
5414            </#if> 
5415        </#list> 
5416 
5417        <#assign title = getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia") /> 
5418 
5419        <#assign timeRead = getFieldValue(fieldList, xmlArticle, "Tempo de Leitura") /> 
5420 
5421        <#assign ourEnergyCategory = getFirstCategoryTitleLocaleOfVocabulary(entry, ourEnergyVocabulary) /> 
5422 
5423        <#assign typeOfNews = getFirstCategoryTitleLocaleOfVocabulary(entry, typeOfNewsVocabulary) /> 
5424 
5425        <#if themeDisplay.getPortalURL()?contains("webserver")> 
5426					<#assign urlNews = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + journalArticle.getUrlTitle()> 
5427				<#else> 
5428						<#assign urlNews = themeDisplay.getPortalURL() + "/w/" + journalArticle.getUrlTitle()> 
5429				</#if> 
5430         
5431        <#assign cardData = {"media": media, "title": title, "timeRead": timeRead, "ourEnergyCategory": ourEnergyCategory, "typeOfNews": typeOfNews, "urlNews": urlNews} /> 
5432         
5433        <#return cardData> 
5434 
5435        <#recover> 
5436            <#return {} /> 
5437    </#attempt> 
5438 
5439    <#-- cardData ->    image: url, alt 
5440                        title 
5441                        timeRead 
5442                        ourEnergyCategory 
5443                        typeOfNews 
5444                        urlNews 
5445    --> 
5446</#function> 
5447 
5448 
5449<#-- Macro para renderizar os arrows--> 
5450<#macro renderArrows> 
5451    <div class="card-news-list-arrows-breakpoint"> 
5452        <div class="card-news-list-arrows"> 
5453            <div class="card-news-arrow-left arrow-disable">  
5454                <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg"> 
5455                    <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"/> 
5456                    <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"/> 
5457                </svg> 
5458            </div> 
5459            <div class="card-news-arrow-right">  
5460                <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg"> 
5461                    <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"/> 
5462                    <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"/> 
5463                </svg> 
5464 
5465            </div> 
5466        </div> 
5467    </div> 
5468 
5469    <style> 
5470 
5471        .${rootCss} .card-news-list-arrows-breakpoint { 
5472            position: relative; 
5473            z-index: 1; 
5474					width: 100%; 
5475
5476 
5477        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows { 
5478            display: flex; 
5479            align-items: flex-start; 
5480            justify-self: flex-end; 
5481            gap: var(--space-xxs, 8px); 
5482
5483         
5484        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left, 
5485        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right { 
5486            cursor: pointer; 
5487
5488 
5489        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(1), 
5490        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(1) { 
5491            fill: rgb(0, 133, 66); 
5492
5493 
5494        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), 
5495        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) { 
5496            fill: white; 
5497
5498 
5499        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(2), 
5500        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(2) { 
5501            stroke: #fff; 
5502
5503 
5504        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), 
5505        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) { 
5506            stroke: #010101; 
5507
5508 
5509        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable, 
5510        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable { 
5511            opacity: 0.4; 
5512            cursor: auto; 
5513
5514 
5515        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path, 
5516        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path { 
5517            stroke: rgb(0, 133, 66); 
5518            transition: all 300ms ease-in-out; 
5519
5520 
5521        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path, 
5522        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path { 
5523            stroke: rgba(228, 247, 232, 1); 
5524
5525 
5526        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1), 
5527        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) { 
5528            stroke: rgb(149, 149, 149); 
5529
5530 
5531        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1), 
5532        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) { 
5533            stroke: rgba(215, 215, 215, 1); 
5534
5535 
5536        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2), 
5537        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) { 
5538            stroke: rgb(82, 82, 82); 
5539
5540 
5541        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2), 
5542        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) { 
5543            stroke: rgba(149, 149, 149, 1); 
5544
5545 
5546        @media screen and (min-width: 1440px) { 
5547            .${rootCss} .card-news-list-arrows-breakpoint { 
5548                width: 100%; 
5549
5550
5551 
5552        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
5553 
5554            .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows { 
5555                justify-self: flex-start; 
5556                margin-top: var(--space-lg); 
5557
5558
5559 
5560    </style> 
5561 
5562</#macro> 
5563 
5564 
5565<#-- Macro para renderizar um Card --> 
5566<#macro renderCard cardData> 
5567    <#-- cardData ->    image: url, alt 
5568                        title 
5569                        timeRead 
5570                        ourEnergyCategory 
5571                        typeOfNews 
5572                        urlNews 
5573    --> 
5574 
5575    <div class="card-news-container"> 
5576        <a class="news-page-see-more-link card-news-link" href="${cardData.urlNews}">  Link da Notícia ${cardData.title}  </a> 
5577        <div class="card-news-thumb"> 
5578            <#assign noImage = "" /> 
5579            <#if cardData.media.imageSrc?? && cardData.media.imageSrc?has_content> 
5580                <#assign imageSrcDesktop = cardData.media.imageSrc /> 
5581                <#assign imageSrcMobile = cardData.media.imageSrc /> 
5582                <#if cardData.media.urlAdaptativeMedia?? && cardData.media.urlAdaptativeMedia?has_content> 
5583                    <#assign imageSrcDesktop = cardData.media.urlAdaptativeMedia.desktop /> 
5584                    <#assign imageSrcMobile = cardData.media.urlAdaptativeMedia.mobile /> 
5585                </#if> 
5586                <picture > 
5587                    <source media="(max-width:767px)" srcset="${imageSrcMobile}"> 
5588                    <img class="card-news-image" loading="lazy" src="${imageSrcDesktop}" alt="${cardData.media.imageAlt}"/> 
5589                </picture>		 
5590            <#else> 
5591                <#if cardData.media.videoYotubeID?? && cardData.media.videoYotubeID?has_content> 
5592                <picture > 
5593                    <source media="(max-width:767px)" srcset="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/mqdefault.jpg"> 
5594                    <img class="card-news-image" loading="lazy" src="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/maxresdefault.jpg" alt="YouTube Thumbnail"/> 
5595                </picture>  
5596                <#else> 
5597                    <#if (cardData.media.internalVideo?? && cardData.media.internalVideo.url?has_content) > 
5598                        <video class="card-news-image" loading="lazy"> 
5599                            <source src="${cardData.media.internalVideo.url}"> 
5600                            Your browser does not support the video tag. 
5601                        </video> 
5602                    <#else> 
5603                        <#assign noImage = "no-image" /> 
5604                    </#if> 
5605                </#if> 
5606                <svg class="thumb-play-icon" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
5607                    <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"/> 
5608                    <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"/> 
5609                </svg>        
5610            </#if>         
5611        </div> 
5612         
5613        <div class="card-news-category-container ${noImage}">  
5614            <div data-category="${cardData.ourEnergyCategory}" class="card-news-category paragraph-micro-regular"> ${cardData.ourEnergyCategory} </div> 
5615        </div>  
5616 
5617        <div class="card-news-text-content ${noImage}">  
5618            <div class="card-news-title h5"> ${cardData.title} </div> 
5619 
5620             <div class="card-news-info">  
5621                <div class="card-news-type">  
5622                    <#if getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default(""))?? > 
5623												<#assign postTypeIconUrl = getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default("")) /> 
5624												<img src="${postTypeIconUrl}" loading="lazy" alt="post type icon" /> 
5625                        <div class="card-news-type-text paragraph-micro-regular">${cardData.typeOfNews}</div> 
5626												<#else/> 
5627                            <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 
5628                                <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"/> 
5629                            </svg>										 
5630                            <div class="card-news-type-text paragraph-micro-regular">Artigo</div> 
5631										</#if> 
5632                </div> 
5633 
5634								<#if cardData.timeRead?? && cardData.timeRead?has_content> 
5635									<div class="card-news-time-read">  
5636											<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"> 
5637													<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"/> 
5638											</svg> 
5639 
5640											<div class="card-news-time-read-text paragraph-micro-regular">${cardData.timeRead} min</div> 
5641									</div> 
5642								</#if> 
5643            </div> 
5644        </div> 
5645    </div> 
5646</#macro> 
5647 
5648<style> 
5649    .${rootCss} .card-news-container { 
5650        width: 300px; 
5651        height: 370px; 
5652        display: flex; 
5653        flex-direction: column; 
5654        flex-shrink: 0; 
5655        align-items: flex-start; 
5656        border-radius: var(--border-radius-lg); 
5657        border: var(--border-width-hairline) solid var(--border-card-default, #EEE); 
5658        background: var(--background-surface-level-01, #FFF); 
5659        box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12); 
5660        overflow: hidden; 
5661        scroll-snap-align: start; 
5662        cursor: pointer; 
5663        transition: border 300ms ease-in-out; 
5664        text-decoration: none; 
5665        position: relative; 
5666
5667 
5668    body.high-contrast-active .${rootCss} .card-news-container {      
5669        border: var(--border-width-hairline) solid var(--border-card-default, #525252); 
5670        background: var(--background-surface-level-01, #010101); 
5671
5672 
5673    .${rootCss} .card-news-container:hover { 
5674        border: var(--border-width-hairline) solid rgb(0, 133, 66); 
5675
5676 
5677    body.high-contrast-active .${rootCss} .card-news-container:hover { 
5678        border: var(--border-width-hairline) solid var(--border-card-default, #E4F7E8); 
5679
5680 
5681    .${rootCss} .card-news-container .card-news-link { 
5682        position: absolute; 
5683        top: 0; 
5684        width: 100%; 
5685        height: 100%; 
5686        z-index: 1; 
5687        opacity: 0; 
5688
5689 
5690    .${rootCss} .card-news-container .card-news-thumb { 
5691        position: relative; 
5692
5693 
5694    .${rootCss} .card-news-container .card-news-image { 
5695        width: 298px; 
5696        height: 168px; 
5697        object-fit: cover; 
5698
5699 
5700 
5701    .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon { 
5702        position: absolute; 
5703        left: 50%; 
5704        top: 50%; 
5705        transform: translate(-50%, -50%); 
5706
5707 
5708    body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(1) { 
5709        fill: black;   
5710
5711 
5712    body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(2) { 
5713        fill: white;   
5714
5715 
5716    .${rootCss} .card-news-container .card-news-category-container { 
5717        position: relative; 
5718
5719 
5720    .${rootCss} .card-news-container .card-news-category-container .card-news-category { 
5721        display: flex; 
5722        justify-content: center; 
5723        align-items: center;  
5724        padding: var(--space-micro) var(--space-xs); 
5725        position: absolute; 
5726        z-index: 2; 
5727        left: var(--space-md); 
5728        top: -13px; 
5729        border-radius: var(--border-radius-pill); 
5730        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); 
5731        box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10); 
5732        line-height: var(--line-height-lg, 144%); 
5733        color: var(--default-sup-green-water, #006B65); 
5734			  white-space: nowrap; 
5735
5736 
5737    body.high-contrast-active .${rootCss} .card-news-container .card-news-category-container .card-news-category { 
5738        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); 
5739        color: var(--default-sup-green-water, #99E0DD);  
5740
5741 
5742    .${rootCss} .card-news-container .card-news-category-container.no-image .card-news-category { 
5743        position: relative; 
5744        top: 0; 
5745        left: 0; 
5746        margin-left: var(--space-md); 
5747        margin-top: var(--space-md); 
5748
5749 
5750    .${rootCss} .card-news-container .card-news-text-content { 
5751        display: flex; 
5752        padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px); 
5753        flex-direction: column; 
5754        justify-content: space-between; 
5755        align-items: flex-start; 
5756        flex: 1 0 0; 
5757        align-self: stretch; 
5758
5759 
5760    .${rootCss} .card-news-container .card-news-text-content.no-image { 
5761        padding-top: var(--space-sm); 
5762
5763 
5764    .${rootCss} .card-news-container .card-news-text-content .card-news-title { 
5765        display: -webkit-box; 
5766        -webkit-box-orient: vertical; 
5767        -webkit-line-clamp: 4; 
5768        align-self: stretch; 
5769        overflow: hidden; 
5770        color: var(--text-primary-default, #373737); 
5771        text-overflow: ellipsis; 
5772        margin: 0; 
5773
5774 
5775    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-title { 
5776        color: var(--text-primary-default, #FFF); 
5777
5778 
5779    .${rootCss} .card-news-container .card-news-text-content .card-news-info { 
5780        display: flex; 
5781        align-items: center; 
5782        align-content: center; 
5783        gap: var(--space-sm, 16px); 
5784        align-self: stretch; 
5785        flex-wrap: wrap; 
5786
5787 
5788    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type, 
5789    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read { 
5790        display: flex; 
5791        align-items: center; 
5792        gap: var(--space-xxs, 8px); 
5793
5794 
5795    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type path { 
5796        stroke: #D7D7D7; 
5797
5798 
5799    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text, 
5800    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text { 
5801        color: var(--text-tertiary-default, #959595); 
5802        line-height: var(--line-height-lg, 144%); 
5803
5804 
5805    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text, 
5806    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text { 
5807        color: var(--text-tertiary-default, #EEE); 
5808
5809 
5810    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-icon-time-read { 
5811        transform: translateY(-0.5px); 
5812
5813 
5814    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 { 
5815        fill: #D7D7D7; 
5816
5817</style> 
5818 
5819<#assign maxNumberOfCards = 9/> 
5820<#assign className = "com.liferay.journal.model.JournalArticle" /> 
5821<#assign classNameId = PortalUtil.getClassNameId(className) /> 
5822${AssetEntryQuery.setClassNameIds([classNameId]) } 
5823${AssetEntryQuery.setEnd(maxNumberOfCards)} 
5824 
5825<#assign entries = []/> 
5826<#assign ourEnergyCategoriesIds = getAllCategoryIdOfVocabulary(assetEntry, ourEnergyVocabulary) /> 
5827<#list ourEnergyCategoriesIds as ourEnergyCategoryId> 
5828    ${AssetEntryQuery.setAllCategoryIds([ourEnergyCategoryId])} 
5829    <#assign ents = AssetEntryQueryService.getEntries(AssetEntryQuery) /> 
5830    <#assign entries = entries + ents /> 
5831</#list> 
5832 
5833 
5834<#-- Renderizar Lista de cards --> 
5835<#if entries?has_content> 
5836    <div class="${rootCss}"> 
5837        <div class="list-of-news-title breakpoint"> 
5838            <div class="list-of-news-title-col col-1-12 md-col-1-8 sm-col-1-4"> 
5839                <div class="list-title fragment_85017"> 
5840                    <div class="petro-title"> 
5841                        <h2 id="title" class="display-sm" style="color: var(--color-neutral-800)"> 
5842                            <#if locale?lower_case == "pt_br"> Leia também <#else> Read also </#if> 
5843                        </h2> 
5844                        <div class="yellow-bar-container">   
5845                            <div class="yellow-bar bar-display-sm" style="background-color: var(--color-secondary-medium)"></div> 
5846                               <@renderArrows /> 
5847                        </div> 
5848                    </div> 
5849                </div> 
5850            </div>  
5851        </div> 
5852         
5853        <div class="card-news-list-breakpoint breakpoint"> 
5854            <div class="card-news-list col-1-12 md-col-1-8 sm-col-1-4">  
5855                <#if entries?size gt maxNumberOfCards> 
5856                    <#assign entries = entries[0..maxNumberOfCards] /> 
5857                </#if> 
5858                <#list entries as entry> 
5859                    <#if assetEntry.getClassPK() != entry.getClassPK() > 
5860                        <#assign cardData = getDataForCard(entry) /> 
5861                        <@renderCard cardData/> 
5862                    </#if> 
5863                </#list> 
5864            </div> 
5865        </div>   
5866    </div> 
5867</#if> 
5868 
5869 
5870<style> 
5871    .portlet { 
5872        margin: 0; 
5873
5874     
5875    .${rootCss} { 
5876        padding: var(--space-giant, 80px) 0; 
5877        background: var(--background-surface-level-01, #FFF); 
5878        width: 100%; 
5879        position: relative; 
5880        font-family: var(--font-family-base, "Petrobras Sans"); 
5881        display: flex; 
5882        flex-direction: column; 
5883        gap: var(--space-lg); 
5884
5885 
5886    body.high-contrast-active .${rootCss} { 
5887        background: var(--background-surface-level-01, #010101); 
5888
5889 
5890    .${rootCss} .list-of-news-title { 
5891        position: relative; 
5892        z-index: 1; 
5893
5894 
5895    .${rootCss} body.high-contrast-active .fragment_614685 .petro-title .yellow-bar { 
5896        background-color: #FFEEB3 !important; 
5897
5898 
5899    .${rootCss} .petro-title > div:has(> .yellow-bar, > .card-news-list-arrows-breakpoint) { 
5900        display: flex;     
5901
5902 
5903    .${rootCss} .card-news-list { 
5904        display: flex; 
5905        gap: var(--space-lg); 
5906        overflow: auto; 
5907        position: relative; 
5908        z-index: 1; 
5909        scroll-snap-type: x mandatory; 
5910        scrollbar-width: none; 
5911
5912 
5913    .${rootCss} .card-news-list::-webkit-scrollbar { 
5914        display: none; 
5915
5916 
5917    @media screen and (min-width: 1441px) { 
5918        .${rootCss} .card-news-list-breakpoint { 
5919            width: 100%;            
5920
5921 
5922        .${rootCss} .list-of-news-title { 
5923            width: 100%; 
5924
5925
5926 
5927    @media screen and (max-width: 1024px) { 
5928        .${rootCss} .fragment_614685 { 
5929            padding: var(--space-xxl, 56px) 0; 
5930
5931
5932    
5933    @media screen and (max-width: 768px) { 
5934				.${rootCss} .petro-title > div:has(> .yellow-bar, > .card-news-list-arrows-breakpoint) { 
5935						flex-direction: column; 
5936
5937
5938 
5939 
5940</style> 
5941 
5942<#list ourEnergyStyles as ourEnergyStyle> 
5943    <style> 
5944        .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] { 
5945            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; 
5946            box-shadow: 0px 2px 6px 0px #${ourEnergyStyle.shadowColor} !important; 
5947            color: #${ourEnergyStyle.textColor} !important; 
5948
5949 
5950        body.high-contrast-active .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] { 
5951             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; 
5952            color: #${ourEnergyStyle.textColorHighContrast} !important; 
5953
5954 
5955    </style> 
5956</#list> 
5957 
5958<script> 
5959 
5960    function disableEnableArrow(arrow, scrollBar, maxDistance, direction) 
5961
5962        if(direction === "left") { 
5963            if (scrollBar.scrollLeft > 0) { 
5964                arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable"); 
5965
5966            else { 
5967                !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable"); 
5968
5969        }  
5970        else if(direction === "right") { 
5971            if (Math.ceil(scrollBar.scrollLeft + scrollBar.clientWidth) < maxDistance) { 
5972                arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable"); 
5973
5974            else { 
5975                !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable"); 
5976
5977
5978
5979 
5980    function scrollCarousel() 
5981
5982        const root = document.querySelector(".${rootCss}"); 
5983        if(root) { 
5984            const scrollBar = root.querySelector(".${rootCss} .card-news-list"); 
5985            const gap = 32;// var(--space-lg); 
5986            const stepLength = scrollBar.querySelector(".card-news-container").offsetWidth + gap; 
5987            const arrowLeftBtn = root.querySelector(".card-news-arrow-left") 
5988            const arrowRightBtn = root.querySelector(".card-news-arrow-right") 
5989 
5990            let maxDistance = scrollBar.scrollWidth; 
5991 
5992            arrowLeftBtn.addEventListener('click', () => { 
5993                if (scrollBar.scrollLeft > 0) { 
5994                    scrollBar.scroll({ 
5995                        left: scrollBar.scrollLeft - stepLength, 
5996                        behavior: "smooth", 
5997                    });	 
5998
5999            }); 
6000 
6001            arrowRightBtn.addEventListener('click', () => { 
6002                if (scrollBar.scrollLeft < maxDistance) { 
6003                    scrollBar.scroll({ 
6004                        left: scrollBar.scrollLeft + stepLength, 
6005                        behavior: "smooth", 
6006                    }); 
6007
6008            }); 
6009             
6010            scrollBar.addEventListener("scroll", ()=>{ 
6011                disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left"); 
6012                disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right"); 
6013            }); 
6014 
6015            disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left"); 
6016            disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right"); 
6017 
6018        }        
6019
6020 
6021    document.addEventListener('DOMContentLoaded', scrollCarousel); 
6022 
6023</script> 
6024	 
6025<style> 
6026 
6027 
6028.ptb-news__read-news .news-content .embed-responsive-youtube::before { 
6029    padding-top: 0; 
6030
6031	 
6032.ptb-news__read-news .news-content .embed-responsive-liferay::before { 
6033    padding-top: calc(9/16 *100% - 64px); 
6034
6035 
6036.ptb-news__read-news .news-content .thumnail-play-button { 
6037
6038 
6039.ptb-news__read-news .news-content .thumnail-play-button { 
6040    position: relative; 
6041    z-index: 100; 
6042    height: 64px; 
6043    width: 64px; 
6044    background-repeat: no-repeat; 
6045    top: calc(50%); 
6046    left: calc(50% - 32px); 
6047
6048	 
6049	 
6050.ptb-news__read-news .news-content .thumnail-play-button-youtube { 
6051    position: absolute; 
6052    z-index: 100; 
6053    height: 64px; 
6054    width: 64px; 
6055    background-repeat: no-repeat; 
6056    top: calc(50% - 64px); 
6057    left: calc(50% - 32px); 
6058
6059 
6060.ptb-news__read-news .news-content .thumnail-play-button-liferay { 
6061    position: relative; 
6062    z-index: 100; 
6063    height: 64px; 
6064    width: 64px; 
6065    top: calc(-50% + 32px); 
6066    left: calc(50% - 32px); 
6067    background-repeat: no-repeat; 
6068
6069 
6070	 
6071	.ptb-news__read-news .news-content .embed-responsive-youtube img { 
6072	width: 100%; 
6073		height: 100%; 
6074
6075	 
6076</style> 
6077 
6078	<script> 
6079	<#assign createYoutubeThumbnails = "createYoutubeThumbnails_"+ randomNumber(5952) />  
6080	 
6081	function ${createYoutubeThumbnails}(){ 
6082 
6083        const newsContent = document.querySelector(".news-content"); 
6084 
6085        const getYoutubeId = (youtubeUrl) => { 
6086 
6087            const url = new URL(youtubeUrl); 
6088            const splittedPathName = url.pathname.split("/"); 
6089 
6090            if (splittedPathName.length <= 0){ 
6091                return ""; 
6092
6093 
6094            return splittedPathName[splittedPathName.length-1]; 
6095        }; 
6096		 
6097		    window.addEventListener("resize", (event) => { 
6098				const iframeList = newsContent.querySelectorAll('iframe'); 
6099           iframeList.forEach((iframe) => { 
6100                const src = iframe.src; 
6101                if (!src){ 
6102                    return; 
6103
6104 
6105                const isYoutube = src.toLowerCase().includes("youtube"); 
6106                if (!isYoutube){ 
6107                    return; 
6108
6109						  
6110						    const iframeParent = iframe.parentNode; 
6111						  
6112						    const thumbnail = iframeParent.querySelector("img"); 
6113                if (thumbnail){ 
6114					         // thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px"; 
6115
6116				   }); 
6117				 
6118				}); 
6119         
6120        const iframeList = newsContent.querySelectorAll('iframe'); 
6121        iframeList.forEach((iframe) => { 
6122                const src = iframe.src; 
6123                if (!src){ 
6124                    return; 
6125
6126 
6127                const isYoutube = src.toLowerCase().includes("youtube"); 
6128                if (!isYoutube){ 
6129                    return; 
6130
6131 
6132                const iframeParent = iframe.parentNode; 
6133 
6134                const thumbnail = document.createElement("img"); 
6135                thumbnail.src = 'https://img.youtube.com/vi/' + getYoutubeId(src) +'/hqdefault.jpg'; 
6136                thumbnail.alt = "Youtube"; 
6137                thumbnail.loading = "lazy"; 
6138					      //thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px"; 
6139 
6140                const playButton = document.createElement("div"); 
6141                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")'; 
6142                playButton.classList.add("thumnail-play-button-youtube"); 
6143                const children = iframeParent.children; 
6144 
6145                if (children.length > 0) { 
6146                    iframeParent.insertBefore(thumbnail, children.firstChild); 
6147                    iframeParent.insertBefore(playButton, thumbnail); 
6148                    iframe.classList.add("hide"); 
6149                    iframeParent.classList.add("embed-responsive-youtube"); 
6150
6151 
6152                playButton.addEventListener("click", () => { 
6153                    thumbnail.click(); 
6154                }); 
6155 
6156                thumbnail.addEventListener("click", () => { 
6157                    thumbnail.classList.add("hide"); 
6158                    playButton.classList.add("hide"); 
6159                    iframe.classList.remove("hide"); 
6160                    iframeParent.classList.remove("embed-responsive-youtube"); 
6161                    const url = new URL(src); 
6162                    const searchParams = url.searchParams; 
6163                    searchParams.set("rel", "0"); 
6164                    //searchParams.set("modestbranding", "0"); 
6165                    //searchParams.set("mute", "0"); 
6166                    //searchParams.set("color", "white"); 
6167                    searchParams.set("controls", "1"); 
6168                    //searchParams.set("playsinline", "1"); 
6169                    //searchParams.set("enablejsapi", "1"); 
6170                    searchParams.set("autoplay", "1"); 
6171                    //searchParams.set("logo", "0"); 
6172                    iframeParent.setAttribute("data-embed-id", url.toString()); 
6173                    iframe.setAttribute("src", url.toString()); 
6174                }); 
6175        }); 
6176  
6177
6178		 
6179	${createYoutubeThumbnails}(); 
6180		 
6181    <#assign createLRThumbnails = "createLRThumbnails"+ randomNumber(5952) />  
6182	 
6183	function ${createLRThumbnails}(){ 
6184 
6185        const newsContent = document.querySelector(".news-content"); 
6186        const iframeList = newsContent.querySelectorAll("iframe[data-video-liferay]"); 
6187 
6188        iframeList.forEach(iframe => {                       
6189 
6190            const playButton = document.createElement("div"); 
6191            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")'; 
6192            playButton.classList.add("thumnail-play-button-liferay"); 
6193            const children = iframe.parentNode.children; 
6194            if (children.length > 0) {                
6195                iframe.parentNode.insertBefore(playButton, children.firstChild);                 
6196
6197 
6198            iframe.addEventListener("load", () => { 
6199                if (iframe.contentDocument){ 
6200                    const video = iframe.contentDocument.body.querySelector("video"); 
6201                    video.removeAttribute("controls"); 
6202
6203            }); 
6204					 
6205					iframe.parentNode.classList.add("embed-responsive-liferay"); 
6206             
6207 
6208            playButton.addEventListener("click", () => { 
6209                playButton.classList.add("hide"); 
6210                playButton.classList.remove("thumnail-play-button-liferay");     
6211							iframe.parentNode.classList.remove("embed-responsive-liferay"); 
6212                if (iframe.contentDocument){ 
6213                    const video = iframe.contentDocument.body.querySelector("video"); 
6214                    video.setAttribute("controls", ""); 
6215                    video.play(); 
6216
6217            }); 
6218        }); 
6219
6220 
6221    ${createLRThumbnails}(); 
6222	 
6223    document.querySelectorAll(".news-content img").forEach(img => img.loading = "lazy"); 
6224 
6225  </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: