Bussola per custodire il futuro. La leadership femminile che rigenera le imprese familiari

Si è verificato un errore nell'elaborarazione del modello.
Java method "it.ariadne.tool.JournalTemplateTool.sortLongFormFields(long, Locale)" threw an exception when invoked on it.ariadne.tool.JournalTemplateTool object "it.ariadne.tool.JournalTemplateTool@1e99be98"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign jsonOrderableFields = journal...  [in template "51632#51678#LONG-FORM" at line 397, column 1]
----
1<#include "${templatesPath}/2023-SELLA-MACRO" /> 
2<#include "${templatesPath}/SOCIAL-SHARE-MACRO" /> 
3 
4<#assign articleId = .vars['reserved-article-id'].data /> 
5<#assign article = journalService.getArticle(getterUtil.getLong(scopeGroupId),articleId) /> 
6<#assign asset = assetService.getEntry('com.liferay.journal.model.JournalArticle',article.resourcePrimKey) /> 
7<#assign formatCategory = sella_tool.getCategoryFromVocabularyId(asset.getCategories(),formatVocabulary.vocabularyId, articleLocale) /> 
8<#assign topicsCategory = sella_tool.getCategoryFromVocabularyId(asset.getCategories(),topicsVocabulary.vocabularyId, articleLocale) /> 
9<#assign title = .vars['reserved-article-title'].data /> 
10<#assign absoluteURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()  /> 
11 
12<#assign localizedArticle = journal_template_tool.toMap(journal_template_tool.parseContent(article.resourcePrimKey,articleLocale)) /> 
13 
14<#assign localizedBigImageCardInsights = localizedArticle.BigImageCardInsights /> 
15<#assign localizedWhatsAppImg = localizedArticle.whatsappImg /> 
16 
17<#assign localizedHeroTitle = localizedArticle.heroTitle /> 
18<#assign localizedAuthor = localizedArticle.AuthorFullNameInsights /> 
19<#assign localizedReadTimeInsights = localizedArticle.ReadTimeInsights /> 
20<#assign localizedAuthorFullNameInsights = localizedArticle.AuthorFullNameInsights /> 
21<#assign localizedAuthorImageInsights = localizedArticle.AuthorImageInsights /> 
22<#assign localizedAuthorDescriptionInsights = localizedArticle.AuthorDescriptionInsights /> 
23<#assign localizedBodyInsightsFieldSet = localizedArticle.BodyInsightsFieldSet /> 
24<#assign localizedAbstractInsights = localizedArticle.abstractInsights /> 
25<#assign localizedDate = localizedArticle.date /> 
26<#assign localizedBkgColor = localizedArticle.colors.backgroundColor /> 
27<#assign localizedHeroOverlayColor = localizedArticle.colors.heroOverlayColor /> 
28<#assign localizedMainTextColor = localizedArticle.colors.mainTextColor /> 
29<#assign localizedSecondaryTextColor = localizedArticle.colors.secondaryTextColor /> 
30<#assign localizedSellaColorColor = localizedArticle.colors.sellaColor /> 
31<#assign localizedDownload = localizedArticle.downloadDocument /> 
32 
33<#assign localizedHeroImage = "" /> 
34<#if (localizedArticle.heroImage)?is_string> 
35    <#assign localizedHeroImage = localizedArticle.heroImage /> 
36<#elseif (localizedArticle.heroImage.url)?has_content> 
37    <#assign localizedHeroImage = localizedArticle.heroImage.url /> 
38</#if> 
39 
40<#assign localizedDownloadLink = "" /> 
41<#if (localizedArticle.link)?has_content> 
42    <#assign localizedDownloadLink = localizedArticle.link /> 
43</#if> 
44 
45<#-- ja title --> 
46<#if (localizedHeroTitle)?has_content > 
47    <#assign title = localizedHeroTitle /> 
48</#if> 
49 
50<#-- social media --> 
51<#assign socialImg = ""/> 
52<#assign whatsAppImg = ""/> 
53<#assign jaAbstract = ""/> 
54 
55<#if localizedBigImageCardInsights?? && localizedBigImageCardInsights?has_content> 
56    <#if localizedBigImageCardInsights.fileEntryId?? && localizedBigImageCardInsights.fileEntryId != ""> 
57        <#assign socialImg = themeDisplay.getPortalURL() + sella_tool.getAdaptiveMediaSrc("800-x-533-px",localizedBigImageCardInsights.fileEntryId?number,localizedBigImageCardInsights.name) /> 
58    </#if> 
59</#if> 
60 
61<#if localizedWhatsAppImg?? && localizedWhatsAppImg?has_content > 
62    <#if localizedWhatsAppImg.fileEntryId?? && localizedWhatsAppImg.fileEntryId != ""> 
63        <#assign whatsAppImg = themeDisplay.getPortalURL() + sella_tool.getAdaptiveMediaSrc("300-x-300-px",localizedWhatsAppImg.fileEntryId?number,localizedWhatsAppImg.name) /> 
64    </#if> 
65</#if> 
66 
67<#if localizedAbstractInsights?? && localizedAbstractInsights != "" > 
68    <#assign jaAbstract = localizedAbstractInsights /> 
69</#if> 
70 
71<#assign LONG_FORM_LANGUAGE_KEYS_IT = { 
72    "si-longform-kpi-show-details-on-mouse-hover": "Scopri di più passando con il mouse sui key numbers", 
73    "si-longform-kpi-show-details-interacting-with-headings": "Scopri di più cliccando sui titoli", 
74    "si-longform-kpi-show-details-interacting-with-markers": "Scopri di più cliccando sulle immagini", 
75    "si-longform-kpi-scroll-infographic": "Scorri per scoprire tutta l'infografica ", 
76    "si-longform-kpi-show-more-interacting-with-markers": "Scopri di più cliccando sulle icone", 
77    "si-longform-kpi-show-more-interacting-with-markers-or-tags": "Scopri di più cliccando sulle icone o la legenda", 
78    "__": "__" 
79} /> 
80 
81<#assign LONG_FORM_LANGUAGE_KEYS_EN = { 
82    "si-longform-kpi-show-details-on-mouse-hover": "Show details on mouse over", 
83    "si-longform-kpi-show-details-interacting-with-headings": "Find out more by clicking on the titles", 
84    "si-longform-kpi-show-details-interacting-with-markers": "Find out more by clicking on the images", 
85    "si-longform-kpi-scroll-infographic": "Scroll horizontally to explore the infographic", 
86    "si-longform-kpi-show-more-interacting-with-markers": "Find out more by clicking on the pins", 
87    "si-longform-kpi-show-more-interacting-with-markers-or-tags": "Find out more by clicking on the pins or tags", 
88    "__": "__" 
89} /> 
90 
91<#function translateKey locale key> 
92    <#-- This function is an hack --> 
93    <#-- Please remove as soon as possible --> 
94 
95    <#assign keys = LONG_FORM_LANGUAGE_KEYS_IT /> 
96 
97    <#if locale?string?starts_with("en")> 
98        <#assign keys = LONG_FORM_LANGUAGE_KEYS_EN /> 
99    </#if> 
100 
101    <#return keys[key] ! languageUtil.get(locale, key) /> 
102</#function> 
103 
104<@shareContent title="${title}" summary="${jaAbstract}" detailURL="${absoluteURL}" imageURL="${socialImg}" whatsAppImgURL="${whatsAppImg}"  twitterImgURL="${socialImg}" /> 
105 
106<#if !localizedHeroOverlayColor?has_content || localizedHeroOverlayColor == "#"> 
107    <#assign localizedHeroOverlayColor = "#32323299" /> 
108</#if> 
109 
110<#if localizedHeroOverlayColor?matches("\\p{XDigit}{3,8}")> 
111    <#assign localizedHeroOverlayColor = "#" + localizedHeroOverlayColor /> 
112</#if> 
113 
114<!-- custom hero --> 
115<div class="hero_section activate-on-scroll" style="background-image: url('${localizedHeroImage}');"> 
116    <div class="hero_overlay" style="background-color: ${localizedHeroOverlayColor};"></div> 
117    <div class="hero_wrapper"> 
118        <div class="hero_intro"> 
119            <span class="d-md-flex justify-content-start" style="flex: 1 1 0px"> 
120                <#if (localizedDate)?has_content> 
121                    <time class="article-detail__date"> 
122                        ${localizedDate} 
123                    </time> 
124                </#if> 
125            </span> 
126 
127            <#assign pulseParts = [] /> 
128 
129            <#if (formatCategory)?has_content> 
130              <#assign pulseParts += [formatCategory] /> 
131            </#if> 
132 
133            <#if (topicsCategory)?has_content> 
134              <#assign pulseParts += [topicsCategory] /> 
135            </#if> 
136 
137            <#if (pulseParts)?has_content> 
138                <div class="hero_pulse"> 
139                    <div class="pulse_wrapper pulse-with-shimmer"> 
140                        <div class="pulse_cursor"></div> 
141                        <div class="pulse_container-ext"> 
142                            <div class="pulse_container"> 
143                                <#list pulseParts as pulsePart> 
144                                    <#assign pulsePartIndex = pulsePart?index * 2 /> 
145 
146                                    <#assign pulseCssClass = "pulse_part" /> 
147 
148                                    <#if pulsePartIndex == 0> 
149                                        <#assign pulseCssClass += " pulse_format" /> 
150                                    </#if> 
151 
152                                    <div 
153                                        style="--pulse-part-index: ${pulsePartIndex}" 
154                                        class="${pulseCssClass}" 
155
156                                        ${pulsePart} 
157                                    </div> 
158 
159                                    <#sep> 
160                                        <div 
161                                            style="--pulse-part-index: ${pulsePartIndex + 1}" 
162                                            class="pulse_part pulse_part_separator" 
163
164
165                                        </div> 
166                                    </#sep> 
167                                </#list> 
168                            </div> 
169                        </div> 
170                    </div> 
171                </div> 
172            </#if> 
173 
174            <span class="d-md-flex justify-content-end" style="flex: 1 1 0px"> 
175                <a 
176                    href="${localizedDetailUrl}" 
177                    title='${translateKey(articleLocale, "article-change-language")}' 
178                    class="article-detail__lang" data-senna-off="true" 
179
180                    ${translateKey(articleLocale, "article-change-language")} 
181                </a> 
182            </span> 
183        </div> 
184 
185        <div class="hero_title_container"> 
186            <div class="hero_title"> 
187                <#assign characterIndex = 0 /> 
188 
189                <h1 class="word-appear" aria-description="${localizedHeroTitle?html}"> 
190                    <#list (localizedHeroTitle)?word_list as word> 
191                        <span class="word-appear_word" aria-hidden="true"><#-- 
192                            REMOVE WHITESPACE 
193                              --><#list word?split("") as character><#-- 
194                                  REMOVE WHITESPACE 
195                                  --><span 
196                                      class="word-appear_part" 
197                                      style="--word-appear-part-index: ${characterIndex}" 
198                                  >${character}</span><#-- 
199                                  REMOVE WHITESPACE 
200                              --><#assign characterIndex += 1 /></#list><#-- 
201                            REMOVE WHITESPACE 
202                        --></span> 
203                    </#list> 
204                </h1> 
205            </div> 
206 
207            <#if (localizedAuthor)?has_content > 
208                <div class="hero_credits"> 
209                    <h2>di ${localizedAuthor}</h2> 
210                </div> 
211            </#if> 
212        </div> 
213 
214        <svg 
215            class="hero_arrow" 
216            width="26" 
217            height="14" 
218            viewBox="0 0 26 14" 
219            fill="none" 
220            xmlns="http://www.w3.org/2000/svg" 
221
222            <path 
223                d="M 25 1 L 13 13 L 1 1" 
224                stroke="#82D0F6" 
225                stroke-width="2" 
226                stroke-linejoin="bevel" 
227            /> 
228        </svg> 
229    </div> 
230</div> 
231 
232<article class="article-detail-first-text"> 
233    <div class="container"> 
234        <div class="row"> 
235            <div class="col-12 col-lg-8 offset-lg-2"> 
236                <#if localizedAbstractInsights?? && localizedAbstractInsights != ""> 
237                    <#assign localizedAbstract = journal_template_tool.getBodyWithFirstLetterStyled(localizedAbstractInsights)/> 
238                    <div class="article-detail__abstract-longform">${localizedAbstract}</div> 
239                </#if> 
240                <#if localizedAuthorFullNameInsights?? && localizedAuthorFullNameInsights != "" 
241                    && localizedAuthorImageInsights.url?? && localizedAuthorImageInsights.url?has_content> 
242                    <div class="article-detail__info"> 
243                        <div class="d-md-flex justify-content-md-between align-items-md-center"> 
244                            <div class="d-md-flex"> 
245                                <#if localizedDate?? && localizedDate != "" > 
246                                    <div class="article-detail__date">${localizedDate}</div> 
247                                </#if> 
248                                <#if asset.getTags()?size gt 0> 
249                                    <div class="article-detail__tags d-flex"> 
250                                        <#list asset.getTags() as tag> 
251                                            <a href="${htmlUtil.escape(layout.getGroup().getDisplayURL(themeDisplay, false))}/risultati-ricerca?q=${tag.name}" title="${tag.name}">#${tag.name}</a> 
252                                        </#list> 
253                                    </div> 
254                                </#if> 
255                            </div> 
256                            <#if localizedReadTimeInsights?? && localizedReadTimeInsights != ""> 
257                                <div class="article-detail__time"><span>Tempo di lettura </span>${localizedReadTimeInsights}</div> 
258                            </#if> 
259                        </div> 
260                    </div> 
261                    <#--  Author  --> 
262                    <#assign imgSrc = "" /> 
263                    <#if localizedAuthorImageInsights?? && localizedAuthorImageInsights?has_content> 
264                        <#if localizedAuthorImageInsights.url?? && localizedAuthorImageInsights.url != ""> 
265                            <#assign imgSrc = localizedAuthorImageInsights.url /> 
266                        <#elseif journal_template_tool.getFileObjectUrl(localizedAuthorImageInsights, themeDisplay) != ""> 
267                            <#assign imgSrc = journal_template_tool.getFileObjectUrl(localizedAuthorImageInsights, themeDisplay) /> 
268                        </#if> 
269 
270                        <#if imgSrc != ""> 
271                            <div class="article-detail__author d-flex"> 
272                                <div> 
273                                    <img src="${imgSrc}" alt="${localizedAuthorFullNameInsights}" class="article-detail__author-img" /> 
274                                </div> 
275 
276                                <div class="article-detail__author-info d-flex"> 
277                                    <div class="article-detail__author-name">${localizedAuthorFullNameInsights}</div> 
278                                    <#if localizedAuthorDescriptionInsights?? && localizedAuthorDescriptionInsights != "" > 
279                                        <div class="article-detail__author-desc"> 
280                                            <p>${localizedAuthorDescriptionInsights}</p> 
281                                        </div> 
282                                    </#if> 
283                                </div> 
284                            </div> 
285                        </#if> 
286                    </#if> 
287                </#if> 
288            </div> 
289        </div> 
290    </div> 
291 
292    <#if localizedBodyInsightsFieldSet?has_content> 
293        <#if localizedBodyInsightsFieldSet?? && localizedBodyInsightsFieldSet?has_content> 
294            <#assign localizedQuoteInsightsFieldSet = localizedBodyInsightsFieldSet.QuoteInsightsFieldSet! /> 
295            <#assign localizedQuoteInsights = localizedQuoteInsightsFieldSet.QuoteInsights! /> 
296            <#assign localizedQuotePosition = localizedQuoteInsightsFieldSet.QuotePosition! /> 
297 
298            <#assign localizedBodyInsights = localizedBodyInsightsFieldSet.BodyInsights /> 
299        </#if> 
300 
301        <#if (localizedQuoteInsights?? && localizedQuoteInsights != "") || (localizedBodyInsights?? && localizedBodyInsights != "") > 
302            <div class="article-detail__text"> 
303 
304                <#--  Quote  --> 
305                <#if localizedQuoteInsights?? && localizedQuoteInsights != ""> 
306                    <div class="container"> 
307                        <div class="row"> 
308                            <div class="col-12 col-lg-8 offset-lg-2"> 
309                                <#assign quotePositionClass = "article-detail__blockquote" /> 
310                                <#if localizedQuotePosition == "Left"> 
311                                    <#assign quotePositionClass += " article-detail__blockquote--left" /> 
312                                </#if> 
313                                <blockquote class="${quotePositionClass}"> 
314                                    <svg class="ico-svg d-print-none" aria-hidden="true"> 
315                                        <use xlink:href="${themeDisplay.getPathThemeImages()}/icons.svg#sella-quote"></use> 
316                                    </svg> 
317                                    ${localizedQuoteInsights} 
318                                </blockquote> 
319                            </div> 
320                        </div> 
321                    </div> 
322                </#if> 
323 
324                <#--  Text + Social  --> 
325                <#if localizedBodyInsights?? && localizedBodyInsights != ""> 
326                    <div class="container"> 
327                        <div class="row"> 
328                            <#assign bodyClass = "col-12" /> 
329                            <#if socialShareActive.data == "true"> 
330                                <#assign bodyClass += " col-lg-7 order-lg-2" /> 
331                            <#else> 
332                                <#assign bodyClass += " col-lg-8 offset-lg-2" /> 
333                            </#if> 
334                            <div class="${bodyClass}"> 
335                                <#assign localizedBody = journal_template_tool.getBodyWithFirstLetterStyled(localizedBodyInsights)/> 
336                                ${localizedBody} 
337                            </div> 
338                            <#if socialShareActive.data == "true"> 
339                                <div class="col-12 col-lg-3 order-lg-1"> 
340                                    <div class="box-share"> 
341                                        <div class="box-share__title">${translateKey(articleLocale, "share-and-participate")}</div> 
342                                        <ul class="box-share__list d-flex"> 
343                                            <li class="box-share__item"> 
344                                                <a href="https://www.facebook.com/sharer/sharer.php?u=${absoluteURL}" title="Facebook" class="box-share__link d-flex"> 
345                                                    <svg class="ico-svg" aria-hidden="true"> 
346                                                        <use xlink:href="${themeDisplay.getPathThemeImages()}/icons.svg#facebook-f"></use> 
347                                                    </svg> 
348                                                </a> 
349                                            </li> 
350                                            <li class="box-share__item"> 
351                                                <a href="https://twitter.com/intent/tweet?text=${absoluteURL}" title="Twitter" class="box-share__link d-flex"> 
352                                                    <svg class="ico-svg" aria-hidden="true"> 
353                                                        <use xlink:href="${themeDisplay.getPathThemeImages()}/icons.svg#square-x-twitter"></use> 
354                                                    </svg> 
355                                                </a> 
356                                            </li> 
357                                            <li class="box-share__item"> 
358                                                <a href="https://www.linkedin.com/sharing/share-offsite/?url=${absoluteURL}" title="LinkedIn" class="box-share__link d-flex"> 
359                                                    <svg class="ico-svg" aria-hidden="true"> 
360                                                        <use xlink:href="${themeDisplay.getPathThemeImages()}/icons.svg#linkedin-in"></use> 
361                                                    </svg> 
362                                                </a> 
363                                            </li> 
364                                            <li class="box-share__item"> 
365                                                <a href="https://api.whatsapp.com/send?text=${absoluteURL}" title="WhatsApp" class="box-share__link d-flex"> 
366                                                    <svg class="ico-svg" aria-hidden="true"> 
367                                                        <use xlink:href="${themeDisplay.getPathThemeImages()}/icons.svg#whatsapp"></use> 
368                                                    </svg> 
369                                                </a> 
370                                            </li> 
371                                        </ul> 
372                                        <div class="box-share__download"> 
373                                            <#if localizedDownloadLink?? && localizedDownloadLink != ""> 
374                                                <a href="${localizedDownloadLink?replace('<[^>]+>','','r')}" title="${translateKey(articleLocale, 'download-article')}" class="d-flex justify-content-between align-items-center"> 
375                                            <#else> 
376                                                <a href="javascript:window.print();" title="${translateKey(articleLocale, 'download-article')}" class="d-flex justify-content-between align-items-center"> 
377                                            </#if> 
378                                                <span>${translateKey(articleLocale, "download-article")}</span> 
379                                                <svg class="ico-svg" aria-hidden="true"> 
380                                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/icons.svg#sella-download"></use> 
381                                                </svg> 
382                                            </a> 
383                                        </div> 
384                                    </div> 
385                                </div> 
386                            </#if> 
387                        </div> 
388                    </div> 
389                </#if> 
390            </div> 
391        </#if> 
392    </#if> 
393</article> 
394 
395 
396<#assign jsonAllFields = journal_template_tool.toMap(journal_template_tool.parseContent(article.resourcePrimKey, articleLocale)) /> 
397<#assign jsonOrderableFields = journal_template_tool.toMap(journal_template_tool.sortLongFormFields(article.resourcePrimKey, articleLocale)).orderableFields /> 
398 
399<#list jsonOrderableFields as item> 
400 
401    <#switch item.fieldSetType> 
402        <#case "SliderImageInsightsFieldSet"> 
403            <#if item.image?? && item.image?has_content> 
404 
405                <#assign firstElement = item.image[0] /> 
406                <#if firstElement.SliderImageInsights?? && firstElement.SliderImageInsights?has_content > 
407                    <div class="slider slider-longform-photogallery-detail"> 
408                        <#list item.image as image> 
409                            <#assign imageText = image.ImageTextInsights /> 
410 
411                            <#if image.SliderImageInsights.url?? && image.SliderImageInsights.url != ""> 
412                                <#assign imageUrl = image.SliderImageInsights.url /> 
413                            </#if> 
414 
415                            <#if imageUrl?? && imageUrl != ""> 
416                                <div> 
417                                    <img src="${imageUrl}" loading="lazy" class="img-slider" alt="Immagine ${image?index}" /> 
418                                </div> 
419                            </#if> 
420                        </#list> 
421                    </div> 
422                </#if> 
423            </#if> 
424            <#break> 
425        <#case "text"> 
426            <#if item.richText?? && item.richText?has_content> 
427                <article class="article-detail"> 
428                    <div class="container"> 
429                        <div class="row"> 
430                            <div class="col-12 col-lg-8 offset-lg-2"> 
431                                <p>${item.richText}</p> 
432                            </div> 
433                        </div> 
434                    </div> 
435                </article> 
436            </#if> 
437            <#break> 
438        <#case "quote"> 
439            <#if item.quoteText?? && item.quoteText?has_content> 
440                <div class="article-detail__text"> 
441                    <div class="container"> 
442                        <div class="row"> 
443                            <div class="col-12 col-lg-8 offset-lg-2"> 
444                                <blockquote class="article-detail__blockquote"> 
445                                    <svg class="ico-svg d-print-none" aria-hidden="true"> 
446                                        <use xlink:href="${themeDisplay.getPathThemeImages()}/icons.svg#sella-quote"></use> 
447                                    </svg> 
448                                    ${item.quoteText} 
449                                </blockquote> 
450                            </div> 
451                        </div> 
452                    </div> 
453                </div> 
454            </#if> 
455            <#break> 
456        <#case "kpi"> 
457            <#if item.singleKPI?? && item.singleKPI?has_content> 
458                <#assign firstKPI = item.singleKPI[0] /> 
459                <#if firstKPI.title?has_content && firstKPI.abstract?has_content && firstKPI.body?has_content> 
460                    <div class="activate-on-scroll"> 
461                        <div class="pulse_wrapper d-none d-md-flex" style="margin-bottom: 30px"> 
462                            <div class="pulse_container-ext"> 
463                                <div class="pulse_container"> 
464                                    <div class="pulse_part"> 
465                                        ${translateKey(articleLocale, "si-longform-kpi-show-details-on-mouse-hover")} 
466                                    </div> 
467                                </div> 
468                            </div> 
469                        </div> 
470                        <div class="container"> 
471                            <div class="article-kpi"> 
472                                <#list item.singleKPI as singleKPI> 
473 
474                                    <#assign title = singleKPI.title /> 
475                                    <#assign abstract = singleKPI.abstract /> 
476                                    <#assign body = singleKPI.body /> 
477 
478                                    <#if title?has_content && abstract?has_content && body?has_content> 
479                                        <div class="article-kpi__card"> 
480                                            <div class="article-kpi__wrapper"> 
481                                                <div class="article-kpi__card__header"> 
482                                                    <h1 class="article-kpi__card__header__title">${title}</h1> 
483                                                    <p>${abstract}</p> 
484                                                </div> 
485                                                <div class="article-kpi__card__body"> 
486                                                    <p>${body}</p> 
487                                                </div> 
488                                            </div> 
489                                        </div> 
490                                    </#if> 
491                                </#list> 
492                            </div> 
493                        </div> 
494                    </div> 
495                </#if> 
496            </#if> 
497 
498            <#break> 
499        <#case "map"> 
500            <#if item.mapName != ""> 
501                <#assign mapName = item.mapName /> 
502                <#assign latitudine = item.mapLatitude> 
503                <#assign longitudine = item.mapLongitude> 
504                <#assign zoom = item.mapZoom> 
505                <#assign mapType = (orderableFields.map.mapType.getData()) ! ""> 
506                <#assign sideMenuColor = (orderableFields.map.sideMenuColor.getData()) ! ""> 
507 
508                <#if !sideMenuColor?has_content> 
509                    <#assign sideMenuColor = "default" /> 
510                </#if> 
511 
512                <#-- Verifica se è necessario mostrare map_chip --> 
513                <#assign showTagsLegend = getterUtil.getBoolean((orderableFields.map.showTagsLegend.getData()) ! "false") /> 
514                <#assign hasMarkers = item.marker?? && item.marker?size gt 0 /> 
515 
516                <div class="section_map activate-on-scroll"> 
517                    <div class="pulse_wrapper" style="position: absolute; z-index: 1; width: 100%; margin-top: 30px;"> 
518                        <div class="pulse_container-ext"> 
519                            <div class="pulse_container"> 
520                                <div class="pulse_part"> 
521                                    <#if (showTagsLegend && hasMarkers)> 
522                                        ${translateKey(articleLocale, "si-longform-kpi-show-more-interacting-with-markers-or-tags")} 
523                                    <#else> 
524                                        ${translateKey(articleLocale, "si-longform-kpi-show-more-interacting-with-markers")} 
525                                    </#if> 
526                                </div> 
527                            </div> 
528                        </div> 
529                    </div> 
530 
531                    <#if (mapName)?has_content || (showTagsLegend && hasMarkers)> 
532                        <div class="map_chip"> 
533                            <#-- Mostra mapName se disponibile --> 
534                            <#if (mapName)?has_content> 
535                                <div class="map_chip_title"> 
536                                    ${mapName} 
537                                </div> 
538                            </#if> 
539 
540                            <#-- Mostra i bottoni dei marker solo se il booleano è attivato e ci sono marker --> 
541                            <#if showTagsLegend && hasMarkers> 
542                                <div class="map_chip_buttons"> 
543                                    <#list item.marker as marker> 
544                                        <button 
545                                            class="map_chip_button" 
546                                            data-chip-map="map1" 
547                                            data-chip-index="${marker?index}" 
548                                            data-lat="${marker.lat}" 
549                                            data-lng="${marker.long}" 
550
551                                            ${marker.titleMarker} 
552                                        </button> 
553                                    </#list> 
554                                </div> 
555                            </#if> 
556                        </div> 
557                    </#if> 
558 
559                    <div class="position-relative"> 
560 
561                        <div class="map-container" id="map1"></div> 
562 
563                        <#list item.marker as marker> 
564                            <#assign latMarker = marker.lat /> 
565                            <#assign longMarker = marker.long /> 
566                            <#assign titleMarker = marker.titleMarker /> 
567                            <#assign textMarker = marker.textMarker /> 
568                            <#assign videoMarker = marker.markerVideo /> 
569                            <#assign placeholderVideoMarker = marker.markerPlaceholder /> 
570                            <#assign images = marker.markerImage /> 
571 
572                            <div 
573                                data-lat="${latMarker}" 
574                                data-lng="${longMarker}" 
575                                class="map_sidemenu map_sidemenu-${sideMenuColor}" 
576                                data-sidemenu-map="map1" 
577                                data-sidemenu-index="${marker?index}" 
578
579                                <div class="map_header"> 
580                                    <div class="map_close"> 
581                                        <svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg"> 
582                                            <g clip-path="url(#clip0_707_448)"> 
583                                                <path d="M0 0L12.5 12.5" stroke="white" stroke-width="3" stroke-linecap="round"/> 
584                                                <path d="M12.5 0L0 12.5" stroke="white" stroke-width="3" stroke-linecap="round"/> 
585                                            </g> 
586                                            <defs> 
587                                                <clipPath id="clip0_707_448"> 
588                                                    <rect width="12.5" height="12.5" fill="white"/> 
589                                                </clipPath> 
590                                            </defs> 
591                                        </svg> 
592                                    </div> 
593                                    <h2>${titleMarker}</h2> 
594                                    <p>${textMarker}</p> 
595 
596                                    <#if marker.ctaFieldset.ctaText?? && marker.ctaFieldset.ctaLink?? 
597                                        && marker.ctaFieldset.ctaText?has_content && marker.ctaFieldset.ctaLink?has_content> 
598                                        <div class="longform_cta"> 
599                                            <a href="${marker.ctaFieldset.ctaLink}">${marker.ctaFieldset.ctaText}<i> 
600                                                    <svg width="11" height="11" viewBox="0 0 11 11" fill="none" xmlns="http://www.w3.org/2000/svg"> 
601                                                        <path d="M9.33601 2.84518L2.16386 10.0173L0.985352 8.83883L8.15751 1.66667H1.83603V0H11.0027V9.16667H9.33601V2.84518Z" fill="#323232" /> 
602                                                    </svg> 
603                                                </i> 
604                                            </a> 
605                                        </div> 
606                                    </#if> 
607 
608                                    <#if images?? && images?has_content > 
609 
610                                        <#if images?size == 1 > 
611                                            <#assign imgUrl = "" /> 
612                                            <#assign imgAlt = "" /> 
613 
614                                            <#if images[0].url?? && images[0].url != ""> 
615                                                <#assign imgUrl = images[0].url /> 
616                                            </#if> 
617 
618                                            <#if images[0].alt?? && images[0].alt != ""> 
619                                                <#assign imgAlt = images[0].alt /> 
620                                            </#if> 
621 
622                                            <#if imgUrl != "" && imgAlt != ""> 
623                                                <div class="longform_lightbox"> 
624                                                    <div data-fancybox="id_lightbox_${titleMarker}" data-src="${imgUrl}"> 
625                                                        <img src="${imgUrl}" /> 
626                                                    </div> 
627                                                </div> 
628                                            </#if> 
629                                        <#elseif images?size gt 1> 
630                                            <div id="id_slideshow_${titleMarker}" class="longform_slideshow"> 
631                                                <#list images as img> 
632                                                    <#assign imgUrl = "" /> 
633 
634                                                    <#if img.url?? && img.url != ""> 
635                                                        <#assign imgUrl = img.url /> 
636                                                    </#if> 
637 
638                                                    <#if imgUrl != ""> 
639                                                        <div data-fancybox="id_slideshow_${titleMarker}" data-src="${imgUrl}" > 
640                                                            <img src="${imgUrl}" /> 
641                                                        </div> 
642                                                    </#if> 
643                                                </#list> 
644                                            </div> 
645                                        </#if> 
646                                    </#if> 
647 
648                                    <#if videoMarker?? && videoMarker?has_content > 
649                                        <div class="longform_video"> 
650                                            <div data-fancybox="id_video_${titleMarker}" data-width="640" data-height="360" href="${videoMarker}"  class="longform_video-container"> 
651                                                <#if placeholderVideoMarker?? && placeholderVideoMarker?has_content > 
652                                                    <#assign placeholderImg = placeholderVideoMarker.url /> 
653                                                <#else> 
654                                                    <#assign placeholderImg = "/webdav/sella-insights/document_library/600x400.svg"> 
655                                                </#if> 
656                                                <img src="${placeholderImg}" alt="Video poster" class="video-poster"> 
657                                                <div class="video-overlay"> 
658                                                    <svg width="21" height="26" viewBox="0 0 21 26" fill="none" xmlns="http://www.w3.org/2000/svg"> 
659                                                        <path d="M0 23.9271V2.07179C0 1.02455 1.15193 0.386088 2.04 0.941128L19.5243 11.8688C20.3599 12.391 20.3599 13.6079 19.5243 14.1302L2.04 25.0578C1.15193 25.6128 0 24.9744 0 23.9271Z" fill="white"/> 
660                                                    </svg> 
661                                                </div> 
662                                            </div> 
663                                        </div> 
664                                    </#if> 
665 
666                                </div> 
667 
668                                <#assign subMarkers = marker.subMarker?filter( 
669                                    subMarker -> 
670                                        (subMarker.numberSubMarker)?has_content || 
671                                        (subMarker.textSubMarker)?has_content) /> 
672 
673                                <#if subMarkers?has_content> 
674                                    <div class="map_footer"> 
675                                        <#list marker.subMarker as subMarker> 
676                                            <div class="map_kpi"> 
677                                                <h5>${subMarker.numberSubMarker}</h5> 
678                                                <p>${subMarker.textSubMarker}</p> 
679                                            </div> 
680                                        </#list> 
681                                    </div> 
682                                </#if> 
683                            </div> 
684                        </#list> 
685                    </div> 
686                </div> 
687            </#if> 
688            <#break> 
689        <#case "timeline"> 
690            <#if item.event?? && item.event?has_content> 
691                <#assign firstEvent = item.event[0] /> 
692                <#if firstEvent.year?has_content && firstEvent.titleEvent?has_content> 
693                    <div class="container activate-on-scroll"> 
694                        <div class="pulse_wrapper" style="margin-bottom: 30px"> 
695                            <div class="pulse_container-ext"> 
696                              <div class="pulse_container"> 
697                                  <div class="pulse_part"> 
698                                    ${translateKey(articleLocale, "si-longform-kpi-show-details-interacting-with-headings")} 
699                                  </div> 
700                              </div> 
701                            </div> 
702                        </div> 
703 
704                        <div class="accordion"> 
705                            <#list item.event as event> 
706                                <#assign yearEvent = event.year /> 
707                                <#assign titleEvent = event.titleEvent /> 
708                                <#assign textEvent = event.textEvent /> 
709                                <#assign imageUrl = (event.imageEvent.url) ! "" /> 
710                                <#assign imageAlt = (event.imageEvent.alt) ! "" /> 
711 
712                                <div class="accordion-item"> 
713                                    <div class="accordion-header"> 
714                                        <div class="accordion-header__year">${yearEvent}</div> 
715 
716                                        <div class="accordion-header__arrow"> 
717                                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 
718                                                <path d="M12.48 6.71997L22.08 12.48L12.48 18.24" stroke="#323232" stroke-width="2.304" stroke-linejoin="bevel" /> 
719                                                <path fill-rule="evenodd" clip-rule="evenodd" 
720                                                d="M4.79994 11.3281H1.43994V13.6321H4.79994V11.3281ZM7.67994 13.6321H21.5999V11.3281H7.67994V13.6321Z" 
721                                                fill="#323232" /> 
722                                            </svg> 
723                                        </div> 
724 
725                                        <div class="accordion-header__info">${titleEvent}</div> 
726 
727                                        <div class="accordion-header__button"> 
728                                            <div class="accordion-header__button-icon"> 
729                                                <svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg"> 
730                                                <g clip-path="url(#clip0_978_49)"> 
731                                                    <path d="M6.25 -2.58887V15.0888" stroke="white" stroke-linecap="round" /> 
732                                                    <path d="M-2.58887 6.25H15.0888" stroke="white" stroke-linecap="round" /> 
733                                                </g> 
734                                                <defs> 
735                                                    <clipPath id="clip0_978_49"> 
736                                                    <rect width="12.5" height="12.5" fill="white" /> 
737                                                    </clipPath> 
738                                                </defs> 
739                                                </svg> 
740                                            </div> 
741                                        </div> 
742                                    </div> 
743 
744                                    <div class="accordion-content"> 
745                                        <div class="accordion-content__wrapper"> 
746 
747                                            <div class="accordion-header__info_mobile">${titleEvent}</div> 
748 
749                                            <div class="accordion-content__image"> 
750                                                <img src="${imageUrl}" alt="${imageAlt}"> 
751                                            </div> 
752                                            <div class="accordion-content__text"> 
753                                                <p>${textEvent}</p> 
754                                            </div> 
755                                        </div> 
756                                    </div> 
757                                </div> 
758                            </#list> 
759                        </div> 
760                    </div> 
761                </#if> 
762            </#if> 
763            <#break> 
764        <#case "info"> 
765            <#assign title = "" /> 
766            <#assign subtitle = "" /> 
767            <#assign text = "" /> 
768            <#assign imageUrl = "" /> 
769            <#assign backgroundImageColor = "E5F6FD" /> 
770            <#assign backgroundTextColor = "FFFFFF" /> 
771 
772            <#if item.boxTitle?? && item.boxTitle != ""> 
773                <#assign title = item.boxTitle /> 
774            </#if> 
775 
776            <#if item.boxAbstract?? && item.boxAbstract != ""> 
777                <#assign subtitle = item.boxAbstract /> 
778            </#if> 
779 
780            <#if item.boxText?? && item.boxText != ""> 
781                <#assign text = item.boxText /> 
782            </#if> 
783 
784            <#if (item.boxImage)?is_string> 
785                <#assign imageUrl = item.boxImage /> 
786            <#elseif item.boxImage.url?? && item.boxImage.url != ""> 
787                <#assign imageUrl = item.boxImage.url /> 
788            </#if> 
789 
790            <#if item.colorImage?? && item.colorImage != ""> 
791                <#assign backgroundImageColor = item.colorImage /> 
792            </#if> 
793 
794            <#if item.colorText?? && item.colorText != ""> 
795                <#assign backgroundTextColor = item.colorText /> 
796            </#if> 
797 
798            <#if title != "" && imageUrl != ""> 
799                <div class="container"> 
800                    <div class="infographic"> 
801 
802                        <#if item.isTextRight != "true"> 
803                            <div class="infographic__text-column"> 
804                                <div class="infographic__header"> 
805                                    <h2 class="infographic__title">${title}</h2> 
806                                    <h4 class="infographic__subtitle">${subtitle}</h4> 
807                                </div> 
808                                <p class="infographic__text">${text}</p> 
809                            </div> 
810                            <div class="infographic_divider"></div> 
811                            <div style="background-image: url('${imageUrl}'); background-color: #${backgroundImageColor};" class="infographic__image-column"></div> 
812                        <#else> 
813                            <!-- allineamento con immagine a sx --> 
814                            <div style="background-image: url('${imageUrl}'); background-color: #${backgroundImageColor};" class="infographic__image-column"></div> 
815                            <div class="infographic_divider"></div> 
816                            <div class="infographic__text-column"> 
817                                <div class="infographic__header"> 
818                                    <h2 class="infographic__title">${title}</h2> 
819                                    <h4 class="infographic__subtitle">${subtitle}</h4> 
820                                </div> 
821                                <p class="infographic__text">${text}</p> 
822                            </div> 
823                        </#if> 
824                    </div> 
825                </div> 
826            </#if> 
827            <#break> 
828        <#case "carousel"> 
829            <#if item.carouselImageFieldset?? && item.carouselImageFieldset?has_content> 
830                <#assign startCounter = 0 /> 
831                <#assign imageCounter = 0 /> 
832                <#assign itemCounter = 0 /> 
833 
834                <#assign carouselHTML> 
835                    <div class="section_longform_gallery activate-on-scroll"> 
836                        <div class="pulse_wrapper" style="margin-bottom: 30px"> 
837                            <div class="pulse_container-ext"> 
838                                <div class="pulse_container"> 
839                                    <div class="pulse_part"> 
840                                        ${translateKey(articleLocale, "si-longform-kpi-show-details-interacting-with-markers")} 
841                                    </div> 
842                                </div> 
843                            </div> 
844                        </div> 
845 
846                        <div class="longform_gallery__container"> 
847                            <div class="longform_gallery"> 
848                                <#list item.carouselImageFieldset as img> 
849                                    <#assign carouselImageUrl = "" /> 
850                                    <#assign carouselImageAlt = "" /> 
851 
852                                    <#if (img.carouselImage)?is_string> 
853                                        <#assign carouselImageUrl = img.carouselImage /> 
854                                    <#elseif (img.carouselImage.url)?has_content> 
855                                        <#assign carouselImageUrl = img.carouselImage.url /> 
856 
857                                        <#if (img.carouselImage.alt)?has_content> 
858                                            <#assign carouselImageAlt = img.carouselImage.alt /> 
859                                        </#if> 
860                                    </#if> 
861 
862                                    <#if carouselImageUrl?has_content> 
863                                        <#assign itemCounter = itemCounter + 1 /> 
864 
865                                        <div class="longform_gallery-item"> 
866                                            <#if img.hotspot?has_content> 
867                                                <#list img.hotspot as hotspotFieldset> 
868                                                    <#assign hotspotImageUrl = "" /> 
869 
870                                                    <#if hotspotFieldset.hotspotImage.url?has_content> 
871                                                        <#assign hotspotImageUrl = hotspotFieldset.hotspotImage.url /> 
872                                                    </#if> 
873 
874                                                    <#if hotspotImageUrl?has_content && hotspotFieldset.hotspotX?has_content && hotspotFieldset.hotspotY?has_content> 
875                                                        <div class="hotspot" data-fancybox="gallery" data-src="${hotspotImageUrl}" data-start="${startCounter}" style="top: ${hotspotFieldset.hotspotY}%; left: ${hotspotFieldset.hotspotX}%;"></div> 
876                                                        <#assign startCounter = startCounter + 1 /> 
877                                                        <#assign imageCounter = imageCounter + 1 /> 
878                                                    </#if> 
879                                                </#list> 
880                                            </#if> 
881                                            <img src="${carouselImageUrl}" alt="${carouselImageAlt}"/> 
882                                        </div> 
883                                    </#if> 
884                                </#list> 
885                            </div> 
886 
887                            <#if imageCounter gt 1> 
888                                <div class="custom-scrollbar"> 
889                                    <div class="custom-scrollbar-handle"></div> 
890                                </div> 
891                            </#if> 
892                        </div> 
893 
894                        <svg id="custom-icons" xmlns="http://www.w3.org/2000/svg" style="display: none;"> 
895                            <symbol id="icon-close" viewBox="0 0 24 24"> 
896                                <g clip-path="url(#clip0_1330_1317)"> 
897                                    <path d="M1.33398 1.33203L8.87646 8.8745" stroke="white" stroke-width="1.70667" stroke-linecap="round"/> 
898                                    <path d="M12.001 11.998L22.6676 22.6647" stroke="white" stroke-width="1.70667" stroke-linecap="round"/> 
899                                    <path d="M22.667 1.33203L1.33366 22.6654" stroke="white" stroke-width="1.70667" stroke-linecap="round"/> 
900                                </g> 
901                                <defs> 
902                                    <clipPath id="clip0_1330_1317"> 
903                                    <rect width="24" height="24" fill="white"/> 
904                                    </clipPath> 
905                                </defs> 
906                            </symbol> 
907                            <symbol id="icon-arrow-left" viewBox="0 0 22 22"> 
908                                <path id="arrow-left-path" d="M10.5732 15.6934L2.03991 10.5734L10.5732 5.45336" stroke="#323232" stroke-width="2.048" stroke-linejoin="bevel"/> 
909                                <path fill-rule="evenodd" clip-rule="evenodd" d="M17.401 11.5977L20.3877 11.5977L20.3877 9.54966L17.401 9.54966L17.401 11.5977ZM14.841 9.54966L2.46769 9.54965L2.46769 11.5977L14.841 11.5977L14.841 9.54966Z" fill="#323232"/> 
910                            </symbol> 
911                            <symbol id="icon-arrow-right" viewBox="0 0 22 22"> 
912                                <path id="arrow-right-path" d="M11.4268 6.30664L19.9601 11.4266L11.4268 16.5466" stroke="#323232" stroke-width="2.048" stroke-linejoin="bevel"/> 
913                                <path fill-rule="evenodd" clip-rule="evenodd" d="M4.59897 10.4023H1.6123L1.6123 12.4503H4.59897V10.4023ZM7.15897 12.4503L19.5323 12.4503V10.4023L7.15897 10.4023V12.4503Z" fill="#323232"/> 
914                            </symbol> 
915                        </svg> 
916                    </div> 
917                </#assign> 
918 
919                <#if itemCounter gt 0> 
920                    ${carouselHTML} 
921                </#if> 
922            </#if> 
923            <#break> 
924 
925            <#case "secondInfo"> 
926                <#if item.infoImage?? && item.infoImage?has_content> 
927                    <#assign imgUrl = "" /> 
928                    <#assign imgAlt = "" /> 
929 
930                    <#if item.infoImage.url?has_content> 
931                        <#assign imgUrl = item.infoImage.url /> 
932                    </#if> 
933 
934                    <#if item.infoImage.alt?has_content> 
935                        <#assign imgAlt = item.infoImage.alt /> 
936                    </#if> 
937 
938                    <#if imgUrl?has_content && imgAlt?has_content> 
939                        <div class="activate-on-scroll"> 
940                            <div class="pulse_wrapper" style="margin-bottom: -13px"> 
941                                <div class="pulse_container-ext"> 
942                                    <div class="pulse_container"> 
943                                        <div class="pulse_part"> 
944                                            ${translateKey(articleLocale, "si-longform-kpi-scroll-infographic")} 
945                                        </div> 
946                                    </div> 
947                                </div> 
948                            </div> 
949                            <section class="infografica-scroll"> 
950                                <div class="infografica-scroll_container"> 
951                                    <img src="${imgUrl}" alt="${imgAlt}"> 
952                                </div> 
953                            </section> 
954                        </div> 
955                    </#if> 
956                </#if> 
957            <#break> 
958            <#case "embed"> 
959                <#if (item.embeddedArticle)?has_content> 
960                    <#assign embeddedArticle = jsonFactoryUtil.createJSONObject(item.embeddedArticle) /> 
961                    <#assign embeddedArticleUUID = embeddedArticle.getString("uuid") /> 
962                    <#assign embeddedAssetEntryId = embeddedArticle.getLong("assetEntryId") /> 
963                    <#assign embeddedClassPK = embeddedArticle.getLong("classPK") /> 
964                    <#assign embeddedClassName = embeddedArticle.getString("className") /> 
965 
966                    <#if (embeddedClassPK > 0) && embeddedClassName?has_content> 
967                        <#-- Most common case --> 
968 
969                        <#assign embeddedAssetEntry = assetService.getEntry(embeddedClassName, embeddedClassPK) /> 
970                        <#assign embeddedAssetRenderer = embeddedAssetEntry.getAssetRenderer() /> 
971                        <#assign embeddedJournalArticle = embeddedAssetRenderer.getAssetObject() /> 
972 
973                        <@liferay_journal["journal-article"] 
974                            article=(embeddedJournalArticle) 
975                            languageId=(articleLocale?string) 
976                        /> 
977                    <#elseif (embeddedArticleUUID)?has_content> 
978                        <#-- Fallback when staging IS enabled --> 
979 
980                        <#assign embeddedJournalArticle = 
981                            journalService.getJournalArticleByUuidAndGroupId( 
982                                embeddedArticleUUID, themeDisplay.getScopeGroupId()) /> 
983 
984                        <@liferay_journal["journal-article"] 
985                            article=(embeddedJournalArticle) 
986                            languageId=(articleLocale?string) 
987                        /> 
988                    <#elseif (embeddedAssetEntryId > 0)> 
989                        <#-- Fallback when staging IS NOT enabled --> 
990 
991                        <#assign embeddedAssetEntry = assetService.getEntry(embeddedAssetEntryId) /> 
992                        <#assign embeddedAssetRenderer = embeddedAssetEntry.getAssetRenderer() /> 
993                        <#assign embeddedJournalArticle = embeddedAssetRenderer.getAssetObject() /> 
994 
995                        <@liferay_journal["journal-article"] 
996                            article=(embeddedJournalArticle) 
997                            languageId=(articleLocale?string) 
998                        /> 
999                    </#if> 
1000                <#else> 
1001                    <!-- Cannot find load method for "${((embeddedArticle.getString("title")) ! "N/A")?html}" --> 
1002                </#if> 
1003            <#break> 
1004            <#default> 
1005    </#switch> 
1006</#list> 
1007 
1008<#if localizedArticle.downloadText?? && localizedArticle.downloadText?has_content> 
1009    <#assign localizedDownloadText = localizedArticle.downloadText/> 
1010<#else> 
1011    <#assign localizedDownloadText = "Scarica il report" /> 
1012</#if> 
1013 
1014<#if localizedDownload?? && localizedDownload == "true"> 
1015    <div class="container"> 
1016        <div class="cta"> 
1017            <#if localizedDownloadLink?? && localizedDownloadLink != ""> 
1018                <a class="cta_link" href="${localizedDownloadLink?replace('<[^>]+>','','r')}"> 
1019            <#else> 
1020                <a class="cta_link" href="javascript:window.print();"> 
1021            </#if> 
1022                <span class="cta_icon"> 
1023                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 
1024                        <g clip-path="url(#clip0_894_1479)"> 
1025                            <circle cx="12" cy="12" r="12" fill="white"/> 
1026                            <path d="M14.2002 10.6001L11.8002 14.6001L9.4002 10.6001" stroke="#323232" stroke-width="0.96" stroke-linejoin="bevel"/> 
1027                            <path fill-rule="evenodd" clip-rule="evenodd" d="M11.3203 14.6L11.3203 7L12.2803 7L12.2803 14.6L11.3203 14.6Z" fill="#323232"/> 
1028                            <rect x="7" y="15.7998" width="10" height="0.96" fill="#323232"/> 
1029                        </g> 
1030                        <defs> 
1031                            <clipPath id="clip0_894_1479"> 
1032                                <rect width="24" height="24" fill="white"/> 
1033                            </clipPath> 
1034                        </defs> 
1035                    </svg> 
1036                </span> 
1037                <span class="cta_text">${localizedDownloadText?replace('<[^>]+>','','r')}</span> 
1038            </a> 
1039        </div> 
1040    </div> 
1041</#if> 
1042 
1043<style> 
1044    body { 
1045        background-color: #${localizedBkgColor} !important; 
1046
1047    p { 
1048	    color: #${localizedMainTextColor} !important; 
1049
1050 
1051    .wrapper .hero_title h1 { 
1052        font-family: 'SellaStencil-Regular', sans-serif; 
1053        line-height: 1em; 
1054
1055 
1056    .article-detail__tags a { 
1057	    color: #${localizedSecondaryTextColor} !important; 
1058
1059    .article-detail__author-name, 
1060    .article-detail__blockquote p { 
1061	    color: #${localizedSellaColorColor} !important; 
1062
1063    .article-detail__blockquote { 
1064        background-color: #e8f4fc !important; 
1065
1066    @media (max-width: 991.98px) { 
1067        body { 
1068            padding-top: 0px !important; 
1069
1070
1071    @media (max-width: 991.98px) { 
1072        .wrapper .header__nav-wrap { 
1073            background-color: #ededed !important; 
1074
1075
1076    @media (max-width: 991.98px) { 
1077        .wrapper .header-long-form.custom_header .navigation__link, 
1078        .wrapper .header-long-form.custom_header .nav-topic__link, 
1079        .wrapper .header-long-form.custom_header .box-utils__link { 
1080		    color: var(--color-link) !important; 
1081
1082
1083    @media (min-width: 0px) { 
1084        .accordion-header__year { 
1085		    font-size: 24px !important; 
1086
1087
1088    @media (min-width: 410px) { 
1089        .accordion-header__year { 
1090		    font-size: 24px !important; 
1091
1092
1093    @media (min-width: 651px) { 
1094        .accordion-header__year { 
1095            font-size: 33px !important; 
1096
1097
1098    @media (min-width: 725px) { 
1099        .accordion-header__year { 
1100            font-size: 40px !important; 
1101
1102
1103    .wrapper .article-kpi__card__header { 
1104        text-wrap: balance; 
1105
1106    .wrapper .article-kpi__card__header__title { 
1107        font-size: 4vw; 
1108        font-size: max(2rem, 4vw); 
1109
1110    .wrapper .article-kpi__card__header__title * { 
1111        color: inherit; 
1112
1113    .wrapper .article-kpi__card__header__title small { 
1114        font-size: 0.5em; 
1115
1116    .infographic{ 
1117        margin-bottom: 0px !important; 
1118
1119    .article-detail { 
1120        padding-top: 30px !important; 
1121        padding-bottom: 30px !important; 
1122
1123    .article-detail-first-text { 
1124        padding-top: 30px !important; 
1125        padding-bottom: 0px !important; 
1126
1127    .cta { 
1128        padding-top: 30px !important; 
1129        padding-bottom: 15px !important; 
1130
1131    .infographic__text-column { 
1132        background-color: #${backgroundTextColor} !important; 
1133
1134 
1135    .map_sidemenu.map_sidemenu-default {} 
1136 
1137    .map_sidemenu.map_sidemenu-blue, 
1138    .map_sidemenu.map_sidemenu-blue-with-stripes { 
1139        background-color: var(--blue); 
1140
1141 
1142    <#assign mapSidemenuStripesHTML><#compress> 
1143        <#assign stripesWidth = 280 /> 
1144        <#assign stripesHeight = 280 /> 
1145        <svg 
1146            xmlns="http://www.w3.org/2000/svg" 
1147            viewBox="0 0 ${stripesWidth} ${stripesHeight}" 
1148            width="${stripesWidth}" 
1149            height="${stripesHeight}" 
1150
1151            <#assign stripesCount = 7 /> 
1152            <#list (0..*stripesCount) as n> 
1153                <#assign stripeStepStart = n * 25 /> 
1154                <#assign stripeStepEnd = stripeStepStart + 5 /> 
1155                <path opacity="0.3" fill="white" stroke="none" d=" 
1156                    M ${stripesWidth}, ${stripeStepStart} 
1157                    L ${stripesWidth}, ${stripeStepEnd} 
1158                    L ${stripeStepEnd}, ${stripesHeight} 
1159                    L ${stripeStepStart}, ${stripesHeight} 
1160
1161                " /> 
1162            </#list> 
1163        </svg> 
1164    </#compress></#assign> 
1165 
1166    .map_sidemenu.map_sidemenu-blue-with-stripes { 
1167        background-image: url("data:image/svg+xml,${mapSidemenuStripesHTML?url("UTF-8")}"); 
1168        background-position: bottom right; 
1169        background-repeat: no-repeat; 
1170
1171 
1172    .map_kpi p, 
1173    .map_header p, 
1174    .hero_intro p { 
1175        color: white !important; 
1176
1177    .slider + .section_map { 
1178        margin-top: 30px; 
1179
1180    :root { 
1181        <#-- 
1182        The following property is required because the minifier removes the "ms" 
1183        unit from the value in the theme's CSS. 
1184        --> 
1185        --pulse-cursor-duration: 0ms; 
1186
1187    @media not (max-width: 768px) { 
1188        .section_map:has(.map_sidemenu.active) .pulse_container-ext { 
1189            margin-right: 600px; 
1190
1191        .section_map:has(.map_sidemenu.active) .map-container { 
1192            width: calc(100% - 600px); 
1193
1194
1195    @property --pulse-border-shimmer-angle { 
1196        syntax: "<angle>"; 
1197        initial-value: 0deg; 
1198        inherits: false; 
1199
1200</style> 
1201 
1202<script> 
1203    function checkMapModuleAndInit() { 
1204        const mapModuleEventTarget = new EventTarget(); 
1205        mapModuleEventTarget.addEventListener('mapModuleReady', initializeMap); 
1206 
1207        const mapModuleProxy = new Proxy( 
1208            { mapModuleLoaded: false, mappaLoaded: false }, 
1209
1210                set(target, prop, value) { 
1211                    target[prop] = value; 
1212 
1213                    if (target.mapModuleLoaded && target.mappaLoaded) { 
1214                        mapModuleEventTarget.dispatchEvent(new Event('mapModuleReady')); 
1215
1216                    return true; 
1217
1218
1219        ); 
1220 
1221        // Monitoriamo l'oggetto `window.mapModule` 
1222        Object.defineProperty(window, 'mapModule', { 
1223            configurable: true, 
1224            enumerable: true, 
1225            get() { 
1226                return this._mapModule; 
1227            }, 
1228            set(value) { 
1229                this._mapModule = value; 
1230                if (value) { 
1231                    mapModuleProxy.mapModuleLoaded = true; 
1232                    mapModuleProxy.mappaLoaded = !!window.mappa; 
1233
1234
1235        }); 
1236 
1237        // Monitoriamo `window.mappa` 
1238        Object.defineProperty(window, 'mappa', { 
1239            configurable: true, 
1240            enumerable: true, 
1241            get() { 
1242                return this._mappa; 
1243            }, 
1244            set(value) { 
1245                this._mappa = value; 
1246                if (value) { 
1247                    mapModuleProxy.mappaLoaded = true; 
1248
1249
1250        }); 
1251
1252 
1253    function initializeMap() { 
1254        const latFromTemplate = parseFloat("${latitudine!""}"); 
1255        const lngFromTemplate = parseFloat("${longitudine!""}"); 
1256        const zoomFromTemplate = parseFloat("${zoom!""}"); 
1257        const typeFromTemplate = "${mapType!""}"; 
1258 
1259        if (!isNaN(latFromTemplate) && !isNaN(lngFromTemplate)) { 
1260            window.mappa.setCenter( 
1261                new google.maps.LatLng(latFromTemplate, lngFromTemplate) 
1262            ); 
1263
1264 
1265        if (!isNaN(zoomFromTemplate)) { 
1266            window.mappa.setZoom(zoomFromTemplate); 
1267
1268 
1269        if (typeFromTemplate && google.maps.MapTypeId[typeFromTemplate]) { 
1270            window.mappa.setMapTypeId(google.maps.MapTypeId[typeFromTemplate]); 
1271
1272
1273 
1274    checkMapModuleAndInit(); 
1275</script>