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>