Se ha producido un error al procesar la plantilla.
Java method "jdk.proxy13.$Proxy235.getFileEntry(long, long, String)" threw an exception when invoked on jdk.proxy13.$Proxy235 object "com.liferay.document.library.internal.service.SubscriptionDLAppLocalServiceWrapper@438a52e7"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign file = DLAppServiceUtil.getFi...  [in template "66001289349745#6531871#3628711" at line 7, column 1]
----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
2<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId),.vars['reserved-article-id'].data) /> 
3 
4<#assign articleId = journalArticle.getId() /> 
5 
6<#assign DLAppServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService") > 
7<#assign file = DLAppServiceUtil.getFileEntry(getterUtil.getLong(groupId), 0, "flecha_SimpleWrap") > 
8<#assign default_text_size = "h3" > 
9 
10<#assign page = layout> 
11<#assign the_title = languageUtil.get(locale, the_title, page.getName(locale)) > 
12 
13<#function fileUrl file > 
14    <#local backslash = "/" > 
15    <#local furl = "/documents/" + file.getGroupId() + backslash + file.getFolderId() + backslash + file.getTitle() + backslash + file.getUuid() > 
16    <#return furl > 
17</#function> 
18 
19<#-- SE ESTABLECEN LOS MARGENES EN LINEA PARA QUE CADA COMPONENTE PUEDA APLICAR SU MARGENES PROPIOS --> 
20<#attempt> 
21	<#if (Margenes.MargenSuperior.getData())?? && Margenes.MargenSuperior.getData() != "" && Margenes.MargenSuperior.getData() != "0"> 
22       <#assign marginTop = " margin-top: ${Margenes.MargenSuperior.getData()}px;" /> 
23    </#if> 
24 
25    <#if (Margenes.MargenInferior.getData())?? && Margenes.MargenInferior.getData() != "" > 
26        <#assign marginBottom = "margin-bottom: ${Margenes.MargenInferior.getData()}px;" /> 
27    </#if> 
28<#recover> 
29    <#-- SE DEJA VACIO PARA QUE APLIQUE LOS ESTILOS POR DEFECTO SI NO CARGAN LOS MARGENES --> 
30</#attempt> 
31 
32<#-- *** CAMBIO 1: TÍTULO DE SECCIÓN - parseo de etiqueta y clase visual *** --> 
33<#if (TituloSeccion.AtributoTituloSeccion.getData())?? && TituloSeccion.AtributoTituloSeccion.getData() != ""> 
34    <#assign raw_seccion_value = TituloSeccion.AtributoTituloSeccion.getData()> 
35    <#if raw_seccion_value?contains("Estilos")> 
36        <#assign titulo_seccion_size = raw_seccion_value?keep_before("Estilos")?lower_case> 
37        <#assign titulo_seccion_class = ' class="' + raw_seccion_value + '"'> 
38    <#else> 
39        <#assign titulo_seccion_size = raw_seccion_value> 
40        <#assign titulo_seccion_class = ""> 
41    </#if> 
42<#else> 
43    <#assign titulo_seccion_size = default_text_size> 
44    <#assign titulo_seccion_class = ""> 
45</#if> 
46 
47<#if (TituloSeccion.AnclaTitulo.getData())?? && TituloSeccion.AnclaTitulo.getData() != ""> 
48    <#assign anclaTitulo = TituloSeccion.AnclaTitulo.getData()> 
49<#else> 
50    <#assign anclaTitulo = "" > 
51</#if> 
52 
53<div id="simple_wrap" class="row content normalized-acordeon-group" style="${marginBottom!}${marginTop!}"> 
54    <#-- TITULO DE SECCION--> 
55    <#if (TituloSeccion.getData())?? && TituloSeccion.getData() != "" > 
56        <div id="simple-wrap-main" class="tituloseccion col-lg-12 col-md-12 col-sm-12 col-12" style="margin-bottom: 40px !important;"> 
57            <#-- *** CAMBIO 2: añadido ${titulo_seccion_class} al tag de apertura *** --> 
58            <${titulo_seccion_size}${titulo_seccion_class} <@anclaH anclaTitulo/>>${TituloSeccion.getData()}</${titulo_seccion_size}> 
59        </div> 
60    </#if> 
61 
62    <#-- INFORMACION DE WRAP --> 
63    <#if InformacionWrap.getSiblings()?has_content> 
64 
65        <#assign  numColum = 'col-sm-11' /> 
66        <#if (numeroColumnas.getData())?? && numeroColumnas.getData() != ""> 
67            <#assign numColum = numeroColumnas.getData() /> 
68        </#if> 
69 
70        <#list InformacionWrap.getSiblings() as item> 
71            <#assign id_item_simple_wrap = "espacioFlecha_" + item?index > 
72            <#assign id_simple_wrap = "simple_wrap_" + articleId + "_" + item?index > 
73            <#assign reclamacion_item_target = "reclamacion_" + articleId + "_" + item?index > 
74            <#assign titulo_principal_size = ""> 
75 
76            <#if (item.Titulo.AnclaWrap.getData())?? && item.Titulo.AnclaWrap.getData() != ""> 
77                <#assign anclaWrap = item.Titulo.AnclaWrap.getData()> 
78            <#else> 
79                <#assign anclaWrap = "" > 
80            </#if> 
81 
82            <#-- *** CAMBIO 3: TÍTULO DE ITEM - parseo de etiqueta y clase visual *** --> 
83            <#if (item.Titulo.AtributoTitulo.getData())?? && item.Titulo.AtributoTitulo.getData() != ""> 
84                <#assign raw_titulo_value = item.Titulo.AtributoTitulo.getData()> 
85                <#if raw_titulo_value?contains("Estilos")> 
86                    <#assign titulo_principal_size = raw_titulo_value?keep_before("Estilos")?lower_case> 
87                    <#assign titulo_principal_class = ' class="' + raw_titulo_value + '"'> 
88                <#else> 
89                    <#assign titulo_principal_size = raw_titulo_value> 
90                    <#assign titulo_principal_class = ""> 
91                </#if> 
92            <#else> 
93                <#assign titulo_principal_size = default_text_size> 
94                <#assign titulo_principal_class = ""> 
95            </#if> 
96 
97            <#if (item.TituloURL.eventoLabelGTAG.getData())?? && item.TituloURL.eventoLabelGTAG.getData() != ""> 
98                <#assign eventLabel = item.TituloURL.eventoLabelGTAG.getData()> 
99            <#else> 
100              <#if (item.TituloURL.TextoURL.getData())?? && item.TituloURL.TextoURL.getData() != ""> 
101                  <#assign eventLabel = item.TituloURL.TextoURL.getData() > 
102              <#else> 
103                  <#assign eventLabel = "" > 
104              </#if> 
105            </#if> 
106 
107            <#assign contenidodesplegableClass = "contenidodesplegableSinIcono" /> 
108 
109            <#-- CARD CERRADA --> 
110            <div id="${id_simple_wrap}" class="simple-wrap flex col-12 ${numColum} collapsed acordeon-card" data-toggle="collapse" data-target="#${reclamacion_item_target}" aria-expanded="false" 
111                onclick="alturaAcordeon('${id_simple_wrap}', event)"> 
112                <#-- ICONO + TITULO + FLECHA --> 
113                <div class="contenedor-small col-12 titulodesplegable justify-content-center onclick="gtag('event', '${the_title}', {'event_category' : '${item.Titulo.getData()}','event_label' : '${item.Titulo.getData()}'});"> 
114                    <div class="d-flex" style="padding: 10px;"> 
115                        <#-- ICONO FLECHA IZQUIERDA --> 
116                        <#if (item.Icono.PosicionIcono.getData())?? && item.Icono.PosicionIcono.getData() == "1" > 
117                            <div class="flecha-izq col-lg-1 col-md-1 col-sm-1 col-2"> 
118                                <div id="${id_item_simple_wrap}" class="icono24 icono_flecha_abajo"> 
119                                </div> 
120                            </div> 
121                        </#if> 
122                         
123                        <#-- INCIO ICONO PRINCIPAL IZQUIERDA --> 
124                        <#if item.Icono.PosicionIcono.getData() == "0" || validator.isNull(item.Icono.PosicionIcono.getData()) > 
125                            <#if (item.Icono.getData())?? && item.Icono.getData() != ""> 
126                                <#assign contenidodesplegableClass = "contenidodesplegable" /> 
127                                <div class="icono-izq col-lg-1 col-md-1 col-sm-1 col-2"> 
128                                    <img class="nuevoIcono40_" alt="${item.Icono.getAttribute("alt")}" src="${item.Icono.getData()}" /> 
129                                </div> 
130                            </#if> 
131                        </#if> 
132                         
133                        <#-- TITULO PRINCIPAL DESKTOP --> 
134                        <div class="titulo"> 
135                            <#-- *** CAMBIO 4: añadido ${titulo_principal_class} al tag de apertura *** --> 
136                            <${titulo_principal_size}${titulo_principal_class} <@anclaH anclaWrap/>>${item.Titulo.getData()}</${titulo_principal_size}> 
137                        </div> 
138                        <#-- FIN ICONO PRINCIPAL IZQUIERDA --> 
139                         
140                        <#-- ICONO FLECHA DERECHA --> 
141                        <#if item.Icono.PosicionIcono.getData() == "0" || validator.isNull(item.Icono.PosicionIcono.getData()) > 
142                            <div class="flecha-dcha"> 
143                                <div id="${id_item_simple_wrap}" class="icono24 icono_flecha_abajo"> 
144                                </div> 
145                            </div> 
146                        </#if> 
147                         
148                        <#-- ICONO PRINCIPAL DERECHA --> 
149                        <#if (item.Icono.PosicionIcono.getData())?? && item.Icono.PosicionIcono.getData() == "1" > 
150                            <#if (item.Icono.getData())?? && item.Icono.getData() != ""> 
151                                <div class="icono-dcha col-lg-1 col-md-1 col-sm-1 col-2"> 
152                                    <img class="nuevoIcono40_" alt="${item.Icono.getAttribute("alt")}" src="${item.Icono.getData()}" /> 
153                                </div> 
154                            </#if> 
155                        </#if> 
156                    </div> 
157                     
158                    <div class="row contenido-oculto" style="margin: 0;"> 
159                        <#-- SUBTITULO MOBILE--> 
160                        <#if (item.Subtitulo.getData())?? && item.Subtitulo.getData() != ""> 
161                            <div class="subtitulo col-md-10 col-sm-10 col-12"> 
162                                ${item.Subtitulo.getData()} 
163                            </div> 
164                        </#if> 
165                         
166                        <#-- INICIO COLLAPSE --> 
167                        <div id="${reclamacion_item_target}" class="col-12 col-sm-10 ${contenidodesplegableClass} collapse"> 
168                            <#-- INICIO BODY --> 
169                            <#if (item.Body.getData())?? && item.Body.getData() != "" >  
170                                <div class="body" data-body-index="${item?index}"> 
171                                    ${item.Body.getData()} 
172                                </div> 
173                            </#if> 
174                            <#-- FIN BODY --> 
175                            <#-- INICIO BOTON --> 
176                            <#if (item.tituloBoton.getData())?? && item.tituloBoton.getData() != "" >  
177                                <#assign pestania = "_self"/> 
178                                <#if (item.tituloBoton.botonPestania.getData())?? && item.tituloBoton.botonPestania.getData() != "" >  
179                                    <#assign pestania = item.tituloBoton.botonPestania.getData()/> 
180                                </#if> 
181                                 
182                                <#assign eventoLabelButtonGtag = item.tituloBoton.getData()/> 
183                                 
184                                <#if (item.tituloBoton.EventoLabelButtonGtag.getData())?? && item.tituloBoton.EventoLabelButtonGtag.getData() != "" >  
185                                    <#assign eventoLabelButtonGtag = item.tituloBoton.EventoLabelButtonGtag.getData()/> 
186                                </#if> 
187                                 
188 
189                                <div class="boton col-md-6 col-sm-12" onclick="handleButtonClick(event); gtag('event', '${the_title}', {'event_category' : '${item.Titulo.getData()}','event_label' : '${eventoLabelButtonGtag}'})"> 
190                                    <a href="${item.tituloBoton.URLBoton.getData()}" target="${pestania}" rel="noopener noreferrer"> 
191                                        <button class="${item.tituloBoton.botonType.getData()} heightbtnnav col-md-12 col-sm-12 cta"> 
192                                            ${item.tituloBoton.getData()} 
193                                        </button> 
194                                    </a> 
195                                </div> 
196                            </#if> 
197                            <#-- FIN BOTON --> 
198                             
199                            <#-- INICIO VIDEO --> 
200                            <#if (item.urlVideo.getData())?? && item.urlVideo.getData() != "" >  
201                                 
202                                <#if (item.urlVideo.posicinVdeo.getData())?? && item.urlVideo.posicinVdeo.getData() != "" >  
203                                    <#assign justifyContentValue = item.urlVideo.posicinVdeo.getData()> 
204                                <#else> 
205                                    <#assign justifyContentValue = "flex-start"> 
206                                </#if> 
207                                 
208                                <#if (item.urlVideo.Controls.getData())?? && item.urlVideo.Controls.getData() != "false" && item.urlVideo.Controls.getData() != "" >  
209                                    <#assign controls = "controls"> 
210                                <#else> 
211                                    <#assign controls = ""> 
212                                </#if> 
213                                 
214                                <#if (item.urlVideo.Autoplay.getData())?? && item.urlVideo.Autoplay.getData() != "false" && item.urlVideo.Autoplay.getData() != "" >  
215                                    <#assign autoplay = "autoplay"> 
216                                <#else> 
217                                    <#assign autoplay = ""> 
218                                </#if> 
219                                 
220                                <#if (item.urlVideo.ReproducirEnBucle.getData())?? && item.urlVideo.ReproducirEnBucle.getData() != "false" && item.urlVideo.ReproducirEnBucle.getData() != "" >  
221                                    <#assign loop = "loop"> 
222                                <#else> 
223                                    <#assign loop = ""> 
224                                </#if> 
225                                 
226                                <#if (item.urlVideo.AnchoVdeo.getData())?? && item.urlVideo.AnchoVdeo.getData() != "" >  
227                                    <#assign anchoVideo = item.urlVideo.AnchoVdeo.getData() + '%'> 
228                                <#else> 
229                                    <#assign anchoVideo = "320"> 
230                                </#if> 
231                                 
232                                <#if (item.urlVideo.AltoVdeo.getData())?? && item.urlVideo.AltoVdeo.getData() != "" >  
233                                    <#assign altoVideo = item.urlVideo.AltoVdeo.getData() + '%'> 
234                                <#else> 
235                                    <#assign altoVideo = "240"> 
236                                </#if> 
237                                 
238                                <div style="display: flex; justify-content: ${justifyContentValue}; margin: 20px 0;"> 
239                                    <video ${autoplay} ${controls} ${loop} height="${altoVideo}" width="${anchoVideo}"> 
240                                        <source src="${item.urlVideo.getData()}" type="video/mp4" />  
241                                        Your browser does not support the video tag. 
242                                    </video> 
243                                </div> 
244                            </#if> 
245                             
246                            <#-- INICIO URL --> 
247                            <#assign url = "#"> 
248                            <#if (item.TituloURL.URL.getData())?? && item.TituloURL.URL.getData() != "" >  
249                                <#assign url = item.TituloURL.URL.getData()> 
250                            </#if> 
251                            <#assign targetURL = "_self"> 
252                            <#if (item.TituloURL.URL.urlPestania.getData())?? && item.TituloURL.URL.urlPestania.getData() != ""  > 
253                                <#assign targetURL = item.TituloURL.URL.urlPestania.getData() > 
254                            </#if> 
255                             
256                            <#if (item.TituloURL.getData())?? && item.TituloURL.getData() != "" >  
257                                <#if (item.TituloURL.TextoURL.getData())?? && item.TituloURL.TextoURL.getData() != "" >  
258                                    <div class="divEnlace"> 
259                                        ${item.TituloURL.getData()} 
260                                        <a class="enlaces enlacesUrl" style="color: #008F60; text-decoration: underline;" href ="${url}"  
261                                            target="${targetURL}" rel="noopener noreferrer"  
262                                        onclick="gtag('event', '${the_title}', {'event_category' : '${item.Titulo.getData()}','event_label' : '${eventLabel}'})"> ${item.TituloURL.TextoURL.getData()} 
263                                        </a> 
264                                    </div> 
265                                <#elseif (item.TituloURL.getData())?? && iitem.TituloURL.getData() != ""> 
266                                    <div class="divEnlace"> 
267                                        <a class="enlaces enlacesUrl" style="color: #008F60; text-decoration: underline;" href ="${url}" target="${targetURL}" rel="noopener noreferrer" onclick="gtag('event', '${the_title}', {'event_category' : '${item.Titulo.getData()}','event_label' : '${eventLabel}}'})">${item.TituloURL.getData()} 
268                                        </a> 
269                                    </div> 
270                                </#if> 
271                            <#elseif (item.TituloURL.TextoURL.getData())?? && item.TituloURL.TextoURL.getData() != ""> 
272                                <div class="divEnlace"> 
273                                    <a class="enlaces enlacesUrl" style="color: #008F60; text-decoration: underline;" href ="${url}" target="${targetURL}" rel="noopener noreferrer"  
274                                        onclick="gtag('event', '${the_title}', {'event_category' : '${item.Titulo.getData()}','event_label' : '${eventLabel}'})"> 
275                                        ${item.TituloURL.TextoURL.getData()} 
276                                    </a> 
277                                </div> 
278                            </#if> 
279                            <#-- FIN URL --> 
280                        </div> 
281                        <#-- FIN COLLAPSE --> 
282                    </div> 
283                </div> 
284            </div> 
285        </#list> 
286    </#if> 
287</div> 
288 
289<#if getterUtil.getBoolean(ScrollHorizontal.getData())> 
290    <div style="display:none"> 
291        <div class="mensajeScroll"> 
292            <#if (AvisoScrollHorizontal.ImagenAvisoScroll.getData())?? && AvisoScrollHorizontal.ImagenAvisoScroll.getData() != ""> 
293                <img alt="${AvisoScrollHorizontal.ImagenAvisoScroll.getAttribute("alt")}" data-fileentryid="${AvisoScrollHorizontal.ImagenAvisoScroll.getAttribute("fileEntryId")}" src="${AvisoScrollHorizontal.ImagenAvisoScroll.getData()}" /> 
294            </#if> 
295            <span>${AvisoScrollHorizontal.TextoAvisoScroll.getData()}</span> 
296        </div> 
297    </div> 
298</#if> 
299 
300<#macro anclaH ancla> 
301    <#if ancla?? && ancla != ""> 
302        id="${ancla}" 
303    </#if> 
304</#macro> 
305 
306<script> 
307 
308    $(document).ready(function() { 
309        const enlacesAnclados = document.querySelectorAll("a[href*='#ancla']"); 
310        enlacesAnclados.forEach((enlace) => { 
311            enlace.addEventListener("click", redireccionar); 
312        }); 
313    }); 
314 
315    //Ajusta la altura en funciona de si esta abierto o no 
316    function alturaAcordeon(id, event) { 
317        console.log(id); 
318        const contenidoOculto = $(event.target).closest('.contenido-oculto'); 
319 
320        // Detiene la propagacion del evento si se hace clic dentro de contenido-oculto 
321        if (contenidoOculto.length > 0) { 
322            event.stopPropagation(); 
323            return; 
324
325 
326        if ($('#' + id).hasClass('collapsed')) { 
327            $('#' + id).css({ 'height': 'auto' }); 
328            $('#' + id + ' .contenido-oculto').css({ 'height': 'calc(100% - 40px)' }); 
329 
330        } else { 
331            $('#' + id).css({ 'height': 'fit-content' }); 
332            $('#' + id + ' .contenido-oculto').css({ 'height': 'auto' }); 
333
334
335 
336    //Evita que se haga el efecto de cerrar al pulsar el boton 
337    function handleButtonClick(event) { 
338        event.stopPropagation(); 
339
340     
341    function redireccionar(event) { 
342        event.preventDefault(); 
343        var idAncla = event.target.getAttribute("href").split("#")[1]; 
344        const elementoRedirectAncla = document.getElementById(idAncla); 
345         
346        <#-- Verificar si se encontro el elemento antes de ajustar la altura y hacer el scroll --> 
347        if (elementoRedirectAncla) { 
348            const padreConClase = elementoRedirectAncla.closest(".titulodesplegable "); 
349     
350            if(padreConClase){ 
351                const padreDelPadre = padreConClase.parentNode; 
352     
353                if($('#'+padreDelPadre.id).hasClass('collapsed')){ 
354                    padreDelPadre.click(); <#-- Llama a una funcion para que se abra el desplegable --> 
355
356                 
357
358         
359            <#-- Obtener la posición del ancla --> 
360            const rect = elementoRedirectAncla.getBoundingClientRect(); 
361            const offsetX = Math.floor(rect.x); 
362             
363            var posicionAncla = Math.floor(rect.y) ; 
364            var scrollY = window.scrollY; 
365            var pantallaTamanio = window.innerHeight / 2; 
366            //Caja donde se pulsa el ancla 
367            var tamianioPadreEnlanceAncla = event.target.offsetParent.offsetHeight; 
368            var menuTamanio = 100; 
369             
370            //elementoRedirectAncla.scrollIntoView({behavior: 'smooth',  block: 'start'}); 
371            var offsetY ; 
372             
373            posicionAncla >= tamianioPadreEnlanceAncla ? offsetY = posicionAncla  - menuTamanio - tamianioPadreEnlanceAncla : offsetY = posicionAncla  - menuTamanio; 
374                         
375            window.scrollBy(0, offsetY); 
376
377
378     
379    // Accesibilidad: sustituir iframes de YouTube en .body por thumbnail + enlace accesible 
380    document.addEventListener("DOMContentLoaded", function () { 
381        document.querySelectorAll(".body iframe").forEach(function (iframe) { 
382            var src = iframe.src || iframe.getAttribute("src") || ""; 
383            if (!src.includes("youtube.com/embed/")) return; 
384 
385            // Extraer videoId del src embed 
386            var videoId = src.split("/embed/")[1]; 
387            if (videoId) videoId = videoId.split("?")[0]; 
388            if (!videoId) return; 
389 
390            var youtubeUrl = "https://www.youtube.com/watch?v=" + videoId; 
391 
392            // Contenedor original (div.embed-responsive si existe, o el padre del iframe) 
393            var container = iframe.closest(".embed-responsive") || iframe.parentNode; 
394 
395            // Calcular el ancho del contenedor original para respetarlo 
396            var containerWidth = container.style.width || "100%"; 
397 
398            // Crear thumbnail con div + background-image (evita restricciones CSP sobre <img> externo) 
399            var thumb = document.createElement("div"); 
400            thumb.className = "youtube-body-thumbnail"; 
401            thumb.style.backgroundImage = "url('https://i.ytimg.com/vi/" + videoId + "/hqdefault.jpg')"; 
402 
403            // Crear icono de play superpuesto 
404            var playIcon = document.createElement("span"); 
405            playIcon.className = "youtube-body-play-icon"; 
406            playIcon.setAttribute("aria-hidden", "true"); 
407 
408            // Crear wrapper con el ancho del contenedor original 
409            var wrapper = document.createElement("div"); 
410            wrapper.className = "youtube-body-wrapper"; 
411            wrapper.style.width = containerWidth; 
412            wrapper.appendChild(thumb); 
413            wrapper.appendChild(playIcon); 
414 
415            // Crear enlace accesible 
416            var link = document.createElement("a"); 
417            link.href = youtubeUrl; 
418            link.target = "_blank"; 
419            link.rel = "noopener noreferrer"; 
420            link.className = "youtube-body-link"; 
421            link.setAttribute("aria-label", "Ver vídeo en YouTube (abre en nueva pestaña)"); 
422            link.appendChild(wrapper); 
423 
424            // Añadir texto sr-only 
425            var srOnly = document.createElement("span"); 
426            srOnly.className = "sr-only"; 
427            srOnly.textContent = "(abre en nueva pestaña)"; 
428            link.appendChild(srOnly); 
429 
430            // Sustituir el contenedor original (con el iframe) por el enlace con thumbnail 
431            container.parentNode.replaceChild(link, container); 
432        }); 
433    }); 
434 
435    <#if getterUtil.getBoolean(ScrollHorizontal.getData())> 
436        window.onload = function() { 
437            var textCards = document.querySelectorAll('.contenido-oculto'); 
438 
439            textCards.forEach(function(textCard) { 
440                var parrafosConImagen = textCard.querySelectorAll('p:has(picture)'); 
441 
442                if (parrafosConImagen.length > 0) { 
443                     
444                    parrafosConImagen.forEach(function(parrafoConImagen) { 
445                        var divImageContainer = document.createElement('div'); 
446                        divImageContainer.className = 'image-container'; 
447 
448                        parrafoConImagen.parentNode.insertBefore(divImageContainer, parrafoConImagen); 
449 
450                        divImageContainer.appendChild(parrafoConImagen); 
451 
452                        var imagenesEnPicture = divImageContainer.querySelectorAll('picture img'); 
453                        imagenesEnPicture.forEach(function(imagen) { 
454                            imagen.classList.add('imgScroll'); 
455                        }); 
456 
457                        var mensajeScrollDiv = document.querySelector('.mensajeScroll'); 
458 
459                        if (mensajeScrollDiv) { 
460                            var mensajeScrollClone = mensajeScrollDiv.cloneNode(true); 
461                            divImageContainer.parentNode.insertBefore(mensajeScrollClone, divImageContainer.nextSibling); 
462
463                    }); 
464
465            }); 
466        }; 
467    </#if> 
468 
469</script> 
470 
471<style> 
472    #simple_wrap .boton { 
473        margin-top: 35px; 
474        max-width: 347px; 
475        padding: 0; 
476
477     
478    .icon48{ 
479        width: 48px; 
480        height: 48px; 
481
482     
483    .divEnlace{ 
484        min-height: 40px; 
485        margin-top: 30px; 
486        display: flex; 
487        align-items: center; 
488        padding: 0; 
489
490     
491    .enlacesUrl{ 
492        margin-left: 5px; 
493
494 
495    .youtube-body-link { 
496        display: block; 
497        cursor: pointer; 
498        text-decoration: none; 
499
500 
501    .youtube-body-link:focus-visible { 
502        outline: 3px solid #005fcc; 
503        outline-offset: 2px; 
504
505 
506    .youtube-body-wrapper { 
507        position: relative; 
508        display: block; 
509        line-height: 0; 
510        border-radius: 4px; 
511        overflow: hidden; 
512
513 
514    /* Thumbnail: div con background-image manteniendo ratio 16:9 */ 
515    .youtube-body-thumbnail { 
516        width: 100%; 
517        padding-bottom: 56.25%; 
518        background-size: cover; 
519        background-position: center; 
520        background-repeat: no-repeat; 
521        background-color: #000; 
522        border-radius: 4px; 
523
524 
525    .youtube-body-play-icon { 
526        position: absolute; 
527        top: 50%; 
528        left: 50%; 
529        transform: translate(-50%, -50%); 
530        width: 64px; 
531        height: 64px; 
532        background-color: rgba(255, 0, 0, 0.85); 
533        border-radius: 50%; 
534        display: flex; 
535        align-items: center; 
536        justify-content: center; 
537        pointer-events: none; 
538
539 
540    .youtube-body-play-icon::after { 
541        content: ""; 
542        display: block; 
543        width: 0; 
544        height: 0; 
545        border-style: solid; 
546        border-width: 12px 0 12px 22px; 
547        border-color: transparent transparent transparent #ffffff; 
548        margin-left: 4px; 
549
550 
551    .youtube-body-link:hover .youtube-body-play-icon, 
552    .youtube-body-link:focus-visible .youtube-body-play-icon { 
553        background-color: rgba(200, 0, 0, 1); 
554
555 
556    .sr-only { 
557        position: absolute; 
558        width: 1px; 
559        height: 1px; 
560        padding: 0; 
561        margin: -1px; 
562        overflow: hidden; 
563        clip: rect(0, 0, 0, 0); 
564        white-space: nowrap; 
565        border: 0; 
566
567 
568    .acordeon-card:not(:last-child){ 
569        margin-bottom: 20px !important; 
570
571 
572    .titulodesplegable{ 
573        padding: 0px !important; 
574        margin-bottom: 0px !important; 
575
576 
577    .nuevoIcono40_{ 
578        width: 40px !important; 
579        height: 40px !important; 
580        min-width: 40px; 
581
582 
583    #simple_wrap .show { 
584        margin-bottom: 20px; 
585
586 
587    #simple_wrap .titulo { 
588        min-height: 40px; 
589        display: flex; 
590        align-items: center; 
591
592 
593    #simple_wrap .flecha-dcha { 
594        display: flex	; 
595        align-items: center; 
596
597    #simple_wrap .contenidodesplegableSinIcono { 
598        padding-left: 15px; 
599
600 
601    @media (min-width: 992px) { 
602        .icono-izq { 
603            flex: 0 0 7.333333%; 
604
605
606 
607    @media only screen and (max-width: 575px) { 
608        .contenidodesplegable { 
609            padding-left: 15px !important; 
610
611
612</style> 
613 
614<#if getterUtil.getBoolean(ScrollHorizontal.getData())> 
615    <style> 
616 
617        .mensajeScroll{ 
618            display: flex; 
619            justify-content: center; 
620            align-items: center; 
621            margin-top: 2em; 
622            margin-bottom: 2em; 
623
624 
625         @media only screen and (min-width: 992px){ 
626            .mensajeScroll{ 
627                display: none; 
628
629
630 
631        @media (min-width: 769px){ 
632            div.image-container{ 
633                max-width: 100%; 
634                display: flex;  
635                justify-content: center;  
636                align-items: center;  
637                overflow-x: auto; 
638
639
640     
641        @media (max-width: 768px){ 
642            div.image-container{ 
643              max-width: none!important;  
644              overflow-x: auto;  
645              white-space: nowrap; 
646            }  
647            .portlet-journal-content .journal-content-article img.imgScroll{ 
648                max-width: none!important; 
649
650     
651            .textCard{ 
652                width: 100%; 
653
654
655    </style> 
656</#if>