The following has evaluated to null or missing:
==> cur_cardGroup.cardIcon.getAttribute('alt') [in template "776318#776366#PP_NEW_MODAL_HEADER" at line 39, column 77]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${cur_cardGroup.cardIcon.getAttribute... [in template "776318#776366#PP_NEW_MODAL_HEADER" at line 39, column 75]
----
1<div class="c-calc-modal">
2 <div class="container-fluid c-calc-header__container">
3 <div class="container">
4 <header class="c-calc-header">
5 <a href="/" class="c-calc-header__logo">
6 <#if headerLogo?? && headerLogo.getData()?? && headerLogo.getData() != "">
7 <img alt="${headerLogo.getAttribute('alt')}" data-fileentryid="${headerLogo.getAttribute('fileEntryId')}" src="${headerLogo.getData()}" />
8 </#if>
9 </a>
10 <#if closeButtonText?? && closeButtonText.getData()?? && closeButtonText.getData() != "">
11 <a href="#" class="c-calc-header__close js-close-header"> <span class="icon-arrow-right"></span> ${htmlUtil.unescape(closeButtonText.getData())}</a>
12 </#if>
13 </header>
14 </div>
15 </div>
16
17
18 <div class="section-wrapper">
19 <div class="c-buttons-text c-buttons-text--seg section-wrapper">
20 <#if title?? && title.getData()?? && title.getData() != "">
21
22 <p class="c-buttons-text__title c-buttons-text__title--insuranceCard">
23 ${htmlUtil.unescape(title.getData())}
24 </p>
25 </#if>
26 <p class="c-buttons-text__subtitle c-buttons-text__subtitle--insuranceCard">
27 <#if subtitle?? && subtitle.getData()?? && subtitle.getData() != "">
28 ${htmlUtil.unescape(subtitle.getData())}
29 </#if>
30 </p>
31 </div>
32
33 <div id="insuranceCard--slider">
34 <div class="owl-slider js-modal-carousel owl-carousel owl-theme owl-loaded owl-drag" id="carouselTipoSeguros">
35 <#if cardGroup.getSiblings()?has_content>
36 <#list cardGroup.getSiblings() as cur_cardGroup>
37 <div class="c-insuranceCard">
38 <div class="c-insuranceCard__image">
39 <img alt="${cur_cardGroup.cardIcon.getAttribute('alt')}" data-fileentryid="${cur_cardGroup.cardIcon.getAttribute('fileEntryId')}" src="${cur_cardGroup.cardIcon.getData()}" />
40 </div>
41 <p>
42 <#if cur_cardGroup.cardTitle?? && cur_cardGroup.cardTitle.getData()?? && cur_cardGroup.cardTitle.getData() != "">
43 ${htmlUtil.unescape(cur_cardGroup.cardTitle.getData())}
44 </#if>
45 </p>
46 <#assign linkTarget = "_self">
47 <#assign link = "#">
48 <#if cur_cardGroup.buttonLink?? && cur_cardGroup.buttonLink.getData()?? && cur_cardGroup.buttonLink.getData() != "">
49 <#assign link = cur_cardGroup.buttonLink.getData()>
50 </#if>
51 <#if cur_cardGroup.buttonTarget?? && cur_cardGroup.buttonTarget.getData()?? && cur_cardGroup.buttonTarget.getData() != "">
52 <#assign linkTarget = cur_cardGroup.buttonTarget.getData()>
53 </#if>
54 <a target="${linkTarget}" class="button variant-contained color-blue" href="${link}">
55 <span class="button__text">
56 <#if cur_cardGroup.cardButtonText?? && cur_cardGroup.cardButtonText.getData()?? && cur_cardGroup.cardButtonText.getData() != "">
57 ${htmlUtil.unescape(cur_cardGroup.cardButtonText.getData())}
58 </#if>
59 </span>
60 </a>
61 </div>
62 </#list>
63 </#if>
64 </div>
65 </div>
66 <div class="c-insuranceContent">
67 <p class="c-insuranceContent__text--small">
68 <#if middleText?? && middleText.getData()?? && middleText.getData() != "">
69 ${htmlUtil.unescape(middleText.getData())}
70 </#if>
71 </p>
72 <#if secondMiddleText?? && secondMiddleText.getData()?? && secondMiddleText.getData() != "" && middleLink?? && middleLink.getData()?? && middleLink.getData() != "" >
73 <#assign linkTarget = "_self">
74 <#if middleLinkTarget?? && middleLinkTarget.getData()?? && middleLinkTarget.getData() != "">
75 <#assign linkTarget = middleLinkTarget.getData()>
76 </#if>
77 <a class="button-transparent blue" href="${middleLink.getData()}" target="${linkTarget}">
78 ${htmlUtil.unescape(secondMiddleText.getData())}
79 <span class="icon-arrow-right icon-chevron-right c-insurance-card__srrow-icon"></span>
80 </a>
81 </#if>
82 </div>
83 <div class="container-fluid">
84 <div class="c-insuranceContentCard">
85 <div class="c-insuranceContentCard__content">
86 <#if phoneCallGroup.callTitle?? && phoneCallGroup.callTitle.getData()?? && phoneCallGroup.callTitle.getData() != "">
87 <p class="c-insuranceContentCard__title">
88 ${htmlUtil.unescape(phoneCallGroup.callTitle.getData())}
89 </p>
90 </#if>
91
92 <#if phoneCallGroup.callSubtitle?? && phoneCallGroup.callSubtitle.getData()?? && phoneCallGroup.callSubtitle.getData() != "">
93 <p class="c-insuranceContentCard__text">
94 ${htmlUtil.unescape(phoneCallGroup.callSubtitle.getData())}
95 </p>
96 </#if>
97 </div>
98 <#assign CallLinkTarget = "_self">
99 <#assign callLink = "#">
100 <#if phoneCallGroup.callButtonLink?? && phoneCallGroup.callButtonLink.getData()?? && phoneCallGroup.callButtonLink.getData() != "">
101 <#assign callLink = phoneCallGroup.callButtonLink.getData()>
102 </#if>
103 <#if phoneCallGroup.callButtonTarget?? && phoneCallGroup.callButtonTarget.getData()?? && phoneCallGroup.callButtonTarget.getData() != "">
104 <#assign CallLinkTarget = phoneCallGroup.callButtonTarget.getData()>
105 </#if>
106 <#if phoneCallGroup.callButtonText?? && phoneCallGroup.callButtonText.getData()?? && phoneCallGroup.callButtonText.getData() != "">
107 <a class="button variant-outlined color-blue" href="${callLink}" target="${CallLinkTarget}">
108 <span class="button__text">
109 <svg fill="none" height="12" viewbox="0 0 12 12" width="12" xmlns="http://www.w3.org/2000/svg"> <path d="M2.41 5.19C3.37614 7.07795 4.91206 8.61386 6.8 9.58L8.27 8.11C8.46816 7.92795 8.757 7.88442 9 8C9.76807 8.25245 10.5715 8.38073 11.38 8.38C11.712 8.40397 11.976 8.66802 12 9V11.33C12 11.7 11.7 12 11.33 12C5.07261 12 0 6.92739 0 0.67C0 0.299969 0.299969 0 0.67 0H3C3.37003 0 3.67 0.299969 3.67 0.67C3.65787 1.45912 3.76921 2.24528 4 3C4.07587 3.2406 4.01017 3.50341 3.83 3.68L2.41 5.19Z" fill="#00008F"></path> </svg>
110 ${htmlUtil.unescape(phoneCallGroup.callButtonText.getData())}
111 </span>
112 </a>
113 </#if>
114 </div>
115
116 <div class="c-insuranceContentCard">
117 <div class="c-insuranceContentCard__content">
118 <#if officeGroup.officeTitle?? && officeGroup.officeTitle.getData()?? && officeGroup.officeTitle.getData() != "">
119 <p class="c-insuranceContentCard__title">
120 ${htmlUtil.unescape(officeGroup.officeTitle.getData())}
121 </p>
122 </#if>
123 <#if officeGroup.officeSubtitle?? && officeGroup.officeSubtitle.getData()?? && officeGroup.officeSubtitle.getData() != "">
124 <p class="c-insuranceContentCard__text">
125 ${htmlUtil.unescape(officeGroup.officeSubtitle.getData())}
126 </p>
127 </#if>
128 </div>
129 <#assign officeLinkTarget = "_self">
130 <#assign officeLink = "#">
131 <#if officeGroup.officeButtonLink?? && officeGroup.officeButtonLink.getData()?? && officeGroup.officeButtonLink.getData() != "">
132 <#assign officeLink = officeGroup.officeButtonLink.getData()>
133 </#if>
134 <#if officeGroup.officeButtonTarget?? && officeGroup.officeButtonTarget.getData()?? && officeGroup.officeButtonTarget.getData() != "">
135 <#assign officeLinkTarget = officeGroup.officeButtonTarget.getData()>
136 </#if>
137 <#if officeGroup.officeButtonText?? && officeGroup.officeButtonText.getData()?? && officeGroup.officeButtonText.getData() != "">
138 <a target="${officeLinkTarget}" class="button variant-outlined color-blue" href="${officeLink}">
139 <span class="button__text">
140 ${htmlUtil.unescape(officeGroup.officeButtonText.getData())}
141 </span>
142 </a>
143 </#if>
144 </div>
145 </div>
146</div>
147 </div>
148
149
150
151
152<script>
153
154 $( document ).ready(function() {
155 //let abNavPrev = '<svg class="ab-nav-prev" width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g transform="translate(-883.000000, -605.000000)"> <g transform="translate(883.000000, 605.000000)"> <g transform="translate(16.000000, 16.000000) scale(-1, 1) translate(-16.000000, -16.000000) "> <polygon points="0 0 32 0 32 32 0 32"></polygon> <polygon fill="#00008F" fill-rule="nonzero" points="13.2733333 2 10.4533333 4.82 19.6133333 14 10.4533333 23.18 13.2733333 26 25.2733333 14"></polygon> </g> </g> </g> </g></svg>';
156 //let abNavNext ='<svg class="ab-nav-next" width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g transform="translate(-883.000000, -605.000000)"><g transform="translate(883.000000, 605.000000)"> <g transform="translate(16.000000, 16.000000) scale(-1, 1) translate(-16.000000, -16.000000) "> <polygon points="0 0 32 0 32 32 0 32"></polygon><polygon fill="#00008F" fill-rule="nonzero" points="13.2733333 2 10.4533333 4.82 19.6133333 14 10.4533333 23.18 13.2733333 26 25.2733333 14"></polygon> </g> </g> </g> </g></svg>';
157
158 let abNavPrev = '<svg width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 15L2 8L9 1" stroke="#00008F" stroke-width="1.5" stroke-linecap="round"/></svg>';
159 let abNavNext = '<svg width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L8 8L1 15" stroke="#00008F" stroke-width="1.5" stroke-linecap="round"/></svg>';
160
161 let chevron_l = '<svg xmlns="http://www.w3.org/2000/svg" width="35px" height="35px" viewBox="0 0 24 24"><path fill="#00008F" d="M14.41 18.16L8.75 12.5l5.66-5.66l.7.71l-4.95 4.95l4.95 4.95z"/></svg>';
162 let chevron_r = '<svg xmlns="http://www.w3.org/2000/svg" width="35px" height="35px" viewBox="0 0 24 24"><path fill="#00008F" d="M14.41 18.16L8.75 12.5l5.66-5.66l.7.71l-4.95 4.95l4.95 4.95z"/></svg>';
163
164
165 let detener;
166 let ind = 0;
167 let tiempo = 3000;
168 let activarAuto = false;
169
170 let modd = document.getElementsByClassName("c-calc-modal");
171 let carr = document.getElementsByClassName('js-modal-carousel');
172
173 let evnts = ["scroll", "touchmove", "touchstart", "touchend", "mousedown", "mouseup", "dragstart", "drag", "dragend", "dragenter", "dragover", "dragleave", "drop"];
174
175
176 window.addEventListener('resize', carouselResponsive);
177
178 evnts.forEach(e => {
179 modd[0].addEventListener(e, stopcarrousel);
180 carr[0].addEventListener(e, stopcarrousel);
181 })
182
183
184 let observer = new MutationObserver(function(mutations){
185 mutations.forEach(function(mutation){
186 if(mutation.type == 'attributes' && mutation.attributeName == 'class'){
187 $('.js-modal-carousel').trigger('stop.owl.autoplay');
188 changeIco();
189 waiting();
190 }
191 })
192 })
193
194 let config = {
195 attributes: true,
196 }
197
198 observer.observe(modd[0], config);
199
200
201 carouselResponsive();
202
203 function stopcarrousel(){
204 $('.js-modal-carousel').trigger('stop.owl.autoplay');
205 waiting();
206 }
207
208 function waiting(){
209 setTimeout(function(){
210 $('.js-modal-carousel').trigger('stop.owl.autoplay');
211 },tiempo)
212 }
213
214
215 /*
216 function activeAuto(){
217
218 if(!activarAuto){
219 $('.js-modal-carousel').trigger('play.owl.autoplay', [tiempo]);
220 $('.js-modal-carousel').addClass('autoplay-enabled');
221 activarAuto = true;
222 }
223
224 } */
225
226
227 function carouselResponsive () {
228
229 let wi = window.innerWidth;
230
231 $('.js-modal-carousel').owlCarousel({
232
233 autoplay:false,
234 autoplayTimeout:tiempo,
235 autoplayHoverPause:true,
236 navText: [abNavPrev, abNavNext],
237 margin:10,
238 loop:true,
239 responsive:{
240 0:{
241 items:1,
242 center:true,
243 stagePadding: 74,
244 slideBy: 1,
245 nav:false,
246 margin: 8
247 },
248 600:{
249 items:3,
250 slideBy:1,
251 nav:false,
252 margin: 16
253 },
254 1000:{nav:true,
255 items:4,
256 slideBy:1,
257 margin: 21,
258 stagePadding: 1 //5 muestra la card completa
259 }
260 }
261 })
262
263 $('.js-modal-carousel').trigger('stop.owl.autoplay');
264 waiting();
265
266
267 }
268
269 function tinyCarouselPaging() {
270 }
271
272 function changeIco(){
273
274 $(".owl-prev").empty();
275 $(".owl-next").empty();
276
277 $(".owl-next").append(chevron_r);
278 $(".owl-prev").append(chevron_l);
279 }
280
281 });
282</script>

Special phone line for those affected by fires
If you are an AXA client and have suffered any damage as a result of the fires, we will assist you on the phone number 900 901 282.
A macro cannot be called in an expression. (Functions can be.)
----
FTL stack trace ("~" means nesting-related):
- Failed at: label = btnText.getData()?has_content... [in template "776318#776366#PP_PA_HERO_AGENT" at line 523, column 17]
----
1<style>
2.presencia-agente-card {
3background-color: #4976BA;
4color: #FFFFFF;
5padding-top: 80px;
6padding-bottom: 80px;
7text-align: center !important;
8font-weight: 400;
9font-size: 1rem;
10}
11.presencia-agente-card h1 {
12font-weight: 700;
13font-size: 2rem;
14}
15
16.presencia-agente-card h1 .subtext {
17font-size: 1.5rem;
18}
19
20/* Forzar fuente legible si Publico no está disponible */
21.presencia-agente-card h1,
22.presencia-agente-card .subtext {
23 font-family: "Source Sans Pro", Arial, sans-serif;
24}
25
26.presencia-agente-card .time-box {
27padding: 2px 8px;
28
29border-radius: 4px;
30display: inline-block;
31
32font-weight: 600;
33text-align: center;
34font-size: 1rem;
35}
36
37.presencia-agente-card .time-open {
38background-color: #007A4C;
39}
40
41.presencia-agente-card .time-close {
42background-color: #5f5f5f;
43}
44
45.time-box-detalle {
46position: relative;
47display: inline-block;
48width: auto;
49vertical-align: top;
50padding: 0;
51background: transparent;
52}
53
54/* summary centrado y con altura fija */
55.time-box-detalle summary {
56display: flex;
57align-items: center;
58justify-content: center;
59padding: 0 0px;
60margin: 0;
61cursor: pointer;
62background: transparent;
63border: 0;
64position: relative;
65z-index: 2;
66height: 24px;
67width: 100%;
68white-space: nowrap;
69}
70
71/* ocultar marcador nativo */
72.time-box-detalle summary::-webkit-details-marker,
73.time-box-detalle summary::marker {
74display: none;
75content: "";
76}
77
78/* caret: elemento real dentro del summary para que sea clicable */
79.time-box-detalle summary {
80 position: relative;
81 padding: 0 48px 0 0; /* espacio a la derecha para la caret */
82}
83
84.time-box-detalle summary .caret {
85 position: absolute;
86 right: 12px;
87 top: 50%;
88 transform: translateY(-50%) rotate(180deg);
89 display: inline-block;
90 width: 16px;
91 height: 16px;
92 background-color: currentColor;
93 -webkit-mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M12.5694 10.3211C12.2999 10.6356 11.8264 10.672 11.5119 10.4024L7.99999 7.39223L4.48808 10.4024C4.17359 10.672 3.70011 10.6356 3.43054 10.3211C3.16098 10.0066 3.1974 9.53312 3.51189 9.26355L7.99999 5.41661L12.4881 9.26355C12.8026 9.53312 12.839 10.0066 12.5694 10.3211Z'/%3E%3C/svg%3E");
94 mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M12.5694 10.3211C12.2999 10.6356 11.8264 10.672 11.5119 10.4024L7.99999 7.39223L4.48808 10.4024C4.17359 10.672 3.70011 10.6356 3.43054 10.3211C3.16098 10.0066 3.1974 9.53312 3.51189 9.26355L7.99999 5.41661L12.4881 9.26355C12.8026 9.53312 12.839 10.0066 12.5694 10.3211Z'/%3E%3C/svg%3E");
95 -webkit-mask-repeat: no-repeat;
96 mask-repeat: no-repeat;
97 -webkit-mask-size: contain;
98 mask-size: contain;
99 transition: transform 0.25s ease;
100 pointer-events: auto; /* permitir click en el icono */
101}
102
103/* rotación al abrir */
104.time-box-detalle[open] summary .caret {
105 transform: translateY(-50%) rotate(0deg);
106}
107
108.time-box-detalle-contenido {
109 transition: max-height 0.28s ease, margin-top 0.28s ease, padding 0.28s ease;
110 margin-top: -24px;
111 max-height: 0;
112 overflow: hidden;
113 padding: 0;
114 /* permitir que el contenido haga wrap en móviles y usar ancho fluido */
115 white-space: normal;
116 width: 100%;
117 min-width: 0;
118}
119
120/* overlay clickable en la columna izquierda para garantizar que clicks en cualquier parte se capturan */
121.time-box-col { position: relative; }
122
123/* cuando el details está abierto empujamos el contenido hacia abajo para evitar que el caret se sobreponga */
124.time-box-detalle[open] .time-box-detalle-contenido {
125 margin-top: 6px;
126 max-height: 400px; /* suficiente para mostrar horarios; ajusta si es necesario */
127 overflow: visible;
128}
129
130/* Forzamos que la primera columna sea siempre igual de ancha */
131.col-dia {
132width: 80px; /* Ajusta este valor según la fuente de tu proyecto */
133flex: 0 0 80px; /* No crece, no encoge, mide 80px */
134}
135
136/* Evita que los horarios se partan en dos líneas si hay poco espacio */
137.text-nowrap {
138white-space: nowrap;
139}
140
141/* Asegura que las filas no intenten saltar de línea */
142.flex-nowrap {
143display: flex;
144flex-wrap: nowrap !important;
145}
146
147/* si ocultas texto, usa visibility para mantener centrado */
148.time-box-detalle[open] .hide-on-open {
149display: none;
150}
151
152.enlace-defecto,
153.enlace-defecto:hover,
154.enlace-defecto:focus,
155.enlace-defecto:active {
156color: inherit !important;
157text-decoration: none !important;
158outline: none !important;
159box-shadow: none !important;
160}
161
162/* Opcional: Si quieres que cambie un poco al pasar el ratón (feedback visual) */
163.enlace-defecto:hover {
164opacity: 0.8;
165text-decoration: none !important;
166}
167
168.link-location, .link-phone, .link-mail {
169 display: inline-flex;
170 align-items: center;
171 gap: 8px; /* Espacio entre icono y texto */
172 text-decoration: none;
173 white-space: nowrap; /* evitar quiebres indeseados */
174 word-break: keep-all;
175}
176
177.link-location::before {
178content: "";
179display: inline-block;
180width: 10px;
181height: 14px;
182background-color: currentColor; /* El icono tomará el color del texto automáticamente */
183
184/* Tu SVG optimizado como máscara */
185-webkit-mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 14'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5 14C5 14 10 7.76142 10 5C10 2.23858 7.76142 0 5 0C2.23858 0 0 2.23858 0 5C0 7.76142 5 14 5 14ZM5 7C6.10457 7 7 6.10457 7 5C7 3.89543 6.10457 3 5 3C3.89543 3 3 3.89543 3 5C3 6.10457 3.89543 7 5 7Z'/%3E%3C/svg%3E");
186 mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 14'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5 14C5 14 10 7.76142 10 5C10 2.23858 7.76142 0 5 0C2.23858 0 0 2.23858 0 5C0 7.76142 5 14 5 14ZM5 7C6.10457 7 7 6.10457 7 5C7 3.89543 6.10457 3 5 3C3.89543 3 3 3.89543 3 5C3 6.10457 3.89543 7 5 7Z'/%3E%3C/svg%3E");
187
188 mask-repeat: no-repeat;
189 -webkit-mask-repeat: no-repeat;
190 mask-size: contain;
191 -webkit-mask-size: contain;
192 }
193
194.link-phone::before {
195content: "";
196display: inline-block;
197margin-top: 3px;
198width: 16px;
199height: 16px;
200background-color: currentColor; /* El icono tomará el color del texto automáticamente */
201
202-webkit-mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5125 6.9875C4.72017 9.34743 6.64007 11.2673 9 12.475L10.8375 10.6375C11.0852 10.4099 11.4462 10.3555 11.75 10.5C12.7101 10.8156 13.7144 10.9759 14.725 10.975C15.14 11.005 15.47 11.335 15.5 11.75V14.6625C15.5 15.125 15.125 15.5 14.6625 15.5C6.84077 15.5 0.5 9.15923 0.5 1.3375C0.5 0.874962 0.874962 0.5 1.3375 0.5H4.25C4.71254 0.5 5.0875 0.874962 5.0875 1.3375C5.07234 2.3239 5.21152 3.3066 5.5 4.25C5.59484 4.55074 5.51271 4.87927 5.2875 5.1L3.5125 6.9875Z'/%3E%3C/svg%3E");
203 mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5125 6.9875C4.72017 9.34743 6.64007 11.2673 9 12.475L10.8375 10.6375C11.0852 10.4099 11.4462 10.3555 11.75 10.5C12.7101 10.8156 13.7144 10.9759 14.725 10.975C15.14 11.005 15.47 11.335 15.5 11.75V14.6625C15.5 15.125 15.125 15.5 14.6625 15.5C6.84077 15.5 0.5 9.15923 0.5 1.3375C0.5 0.874962 0.874962 0.5 1.3375 0.5H4.25C4.71254 0.5 5.0875 0.874962 5.0875 1.3375C5.07234 2.3239 5.21152 3.3066 5.5 4.25C5.59484 4.55074 5.51271 4.87927 5.2875 5.1L3.5125 6.9875Z'/%3E%3C/svg%3E");
204
205 mask-repeat: no-repeat;
206 -webkit-mask-repeat: no-repeat;
207 mask-size: contain;
208 -webkit-mask-size: contain;
209 }
210
211.link-mail::before {
212content: "";
213display: inline-block;
214margin-top: 3px;
215width: 16px;
216height: 16px;
217background-color: currentColor;
218
219/* Máscara del SVG de Email */
220-webkit-mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.397 2h11.196c.773 0 1.401.668 1.407 1.497v9.006c-.006.829-.634 1.497-1.407 1.497H2.397c-.77-.006-1.391-.673-1.397-1.497V3.497C1 2.67 1.625 2 2.397 2Zm5.598 6.754 5.597-3.748V3.497L7.995 7.246 2.397 3.497v1.498l5.598 3.76Z'/%3E%3C/svg%3E");
221 mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.397 2h11.196c.773 0 1.401.668 1.407 1.497v9.006c-.006.829-.634 1.497-1.407 1.497H2.397c-.77-.006-1.391-.673-1.397-1.497V3.497C1 2.67 1.625 2 2.397 2Zm5.598 6.754 5.597-3.748V3.497L7.995 7.246 2.397 3.497v1.498l5.598 3.76Z'/%3E%3C/svg%3E");
222
223 mask-repeat: no-repeat;
224 -webkit-mask-repeat: no-repeat;
225 mask-size: contain;
226 -webkit-mask-size: contain;
227 }
228
229.contenedor-contacto {
230display: inline-flex;
231align-items: center;
232width: unset;
233}
234
235.icono-redsocial {
236 display: inline-block;
237 width: 25px;
238 height: 25px;
239 /* usar el color actual del link para rellenar la máscara (evita bloques blancos inesperados) */
240 background-color: currentColor;
241 color: white; /* por defecto, queremos iconos blancos sobre fondo azul */
242 -webkit-mask-repeat: no-repeat;
243 mask-repeat: no-repeat;
244 -webkit-mask-size: contain;
245 mask-size: contain;
246 -webkit-mask-position: center;
247 mask-position: center;
248 margin-left: 10px;
249 margin-right: 10px;
250}
251
252.icono-redsocial:hover {
253 /* cambiar el color del icono en hover (la máscara usa currentColor) */
254 color: #0056b3;
255}
256
257.icono-facebook {
258-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMCAyMSIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTIuNDgwODYgN0gwVjEwLjVIMi40ODA4NlYyMUg2LjY0NjI1VjEwLjVIOS43MDkwM0wxMCA3SDYuNjQ2MjVWNS41ODA2NUM2LjY0NjI1IDQuNzQxOTQgNi43OTkzOSA0LjQxOTM1IDcuNTY1MDggNC40MTkzNUg5Ljk2OTM3VjBINi43OTkzOUMzLjczNjYgMCAyLjQ4MDg2IDEuMzg3MSAyLjQ4MDg2IDQuMDMyMjZWN5oiIGZpbGw9ImJsYWNrIi8+PC9zdmc+");
259mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMCAyMSIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTIuNDgwODYgN0gwVjEwLjVIMi40ODA4NlYyMUg2LjY0NjI1VjEwLjVIOS43MDkwM0wxMCA3SDYuNjQ2MjVWNS41ODA2NUM2LjY0NjI1IDQuNzQxOTQgNi43OTkzOSA0LjQxOTM1IDcuNTY1MDggNC40MTkzNUg5Ljk2OTM3VjBINi43OTkzOUMzLjczNjYgMCAyLjQ4MDg2IDEuMzg3MSAyLjQ4MDg2IDQuMDMyMjZWN5oiIGZpbGw9ImJsYWNrIi8+PC9zdmc+");
260}
261
262.icono-twitter {
263-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyMSIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04Ljk1NTA1IDExLjEyNzZMMCAwSDcuMDkzMDNMMTIuNjIwOSA2Ljg3NzY0TDE4LjUyNjYgMC4wMzA5NjY2SDIyLjQzM0wxNC41MDk3IDkuMjI3NjRMMjMuOTA0NiAyMC45MTY1SDE2LjgzMjdMMTAuODQ3MiAxMy40Nzg4TDQuNDU2OTYgMjAuODk1OUgwLjUyOTMzMUw4Ljk1NTA1IDExLjEyNzZabTE3Ljg2MzUgMTguODU0N0w0LjM0OTIxIDIuMDYxNzVINi4wNjE0NkwxOS41NTg3IDE4Ljg1NDdIMTcuODYzNVoiIGZpbGw9ImJsYWNrIi8+PC9zdmc+");
264mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyMSIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04Ljk1NTA1IDExLjEyNzZMMCAwSDcuMDkzMDNMMTIuNjIwOSA2Ljg3NzY0TDE4LjUyNjYgMC4wMzA5NjY2SDIyLjQzM0wxNC41MDk3IDkuMjI3NjRMMjMuOTA0NiAyMC45MTY1SDE2LjgzMjdMMTAuODQ3MiAxMy40Nzg4TDQuNDU2OTYgMjAuODk1OUgwLjUyOTMzMUw4Ljk1NTA1IDExLjEyNzZabTE3Ljg2MzUgMTguODU0N0w0LjM0OTIxIDIuMDYxNzVINi4wNjE0NkwxOS41NTg3IDE4Ljg1NDdIMTcuODYzNVoiIGZpbGw9ImJsYWNrIi8+PC9zdmc+");
265}
266
267/* LinkedIn */
268.icono-linkedin {
269-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjIwODc1IDIuMTI4NzVDNC4xOTA4NyAzLjI4MjA4IDMuMjQ0NTcgNC4yMDQyNyAyLjA5MTE3IDQuMTkyMzlDMC45Mzc3NjQgNC4xODA1MSAwLjAxMDY2MDIgMy4yMzkwMyAwLjAxNjUyOTEgMi4wODU1OEMwLjAyMjM5NzkgMC45MzIxMzQgMC45NTkwMzQgMC4wMDAxMzg2NjggMi4xMTI1IDEuNTE1NzVlLTA4QzIuNjc0MTQgLTYuNzQ3NDJlLTA1IDMuMjEyMzEgMC4yMjUyNDMgMy42MDYzOCAwLjYyNTQyM0M0LjAwMDQ1IDEuMDI1NiA0LjIxNzQ2IDEuNTY3MTggNC4yMDg3NSAyLjEyODc1Wk00LjIwODc1IDUuOTMxMjVIMFYxOS41SDQuMjI1TDQuMjA4NzUgNS45MzEyNVpNNi43NiA1LjkzMTI1SDEwLjkzNjNMMTAuOTUyNSA3Ljc2NzVDMTIuNzIzOCA0LjQwMzc1IDIwLjI0NzUgNC4yNDEyNSAyMC4yNDc1IDEwLjkwMzdWMTkuNUgxNi4wMzg3VjEyLjM4MjVDMTYuMDM4NyA4LjEwODc1IDEwLjk1MjUgOC40MzM3NSAxMC45NTI1IDEyLjM4MjVWMTkuNUg2Ljc2VjUuOTMxMjVaIiBmaWxsPSJibGFjayIvPjwvc3ZnPg==");
270 mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjIwODc1IDIuMTI4NzVDNC4xOTA4NyAzLjI4MjA4IDMuMjQ0NTcgNC4yMDQyNyAyLjA5MTE3IDQuMTkyMzlDMC45Mzc3NjQgNC4xODA1MSAwLjAxMDY2MDIgMy4yMzkwMyAwLjAxNjUyOTEgMi4wODU1OEMwLjAyMjM5NzkgMC45MzIxMzQgMC45NTkwMzQgMC4wMDAxMzg2NjggMi4xMTI1IDEuNTE1NzVlLTA4QzIuNjc0MTQgLTYuNzQ3NDJlLTA1IDMuMjEyMzEgMC4yMjUyNDMgMy42MDYzOCAwLjYyNTQyM0M0LjAwMDQ1IDEuMDI1NiA0LjIxNzQ2IDEuNTY3MTggNC4yMDg3NSAyLjEyODc1Wk00LjIwODc1IDUuOTMxMjVIMFYxOS41SDQuMjI1TDQuMjA4NzUgNS45MzEyNVpNNi43NiA1LjkzMTI1SDEwLjkzNjNMMTAuOTUyNSA3Ljc2NzVDMTIuNzIzOCA0LjQwMzc1IDIwLjI0NzUgNC4yNDEyNSAyMC4yNDc1IDEwLjkwMzdWMTkuNUgxNi4wMzg3VjEyLjM4MjVDMTYuMDM4NyA4LjEwODc1IDEwLjk1MjUgOC40MzM3NSAxMC45NTI1IDEyLjM4MjVWMTkuNUg2Ljc2VjUuOTMxMjVaIiBmaWxsPSJibGFjayIvPjwvc3ZnPg==");
271}
272
273/* Instagram */
274.icono-instagram {
275-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEwLjUwOTkgMS44OTY1MkMxMy4zMTUxIDEuODk2NTIgMTMuNjQ2IDEuODk2NTIgMTQuNzUyMyAxLjk1NTc5QzE1LjQyNjYgMS45NjIwMyAxNi4wOTQ5IDIuMDgzOTggMTYuNzI3OSAyLjMxNjMyQzE3LjE3NjUgMi40OTAwNCAxNy41ODM5IDIuNzU1NDcgMTcuOTI0MSAzLjA5NTY1QzE4LjI2NDMgMy40MzU4MiAxOC41Mjk3IDMuODQzMjQgMTguNzAzNCA0LjI5MTg2QzE4LjkzNTggNC45MjQ4OSAxOS4wNTc3IDUuNTkzMTEgMTkuMDY0IDYuMjY3NEMxOS4xMTM0IDcuMzczNzEgMTkuMTIzMiA3LjcwNDYxIDE5LjEyMzIgMTAuNTA5OUMxOS4xMjMyIDEzLjMxNTEgMTkuMTIzMiAxMy42NDYgMTkuMDY0IDE0Ljc1MjRDMTkuMDU1MSAxNS40MTY4IDE4LjkzMzIgMTYuMDc0OCAxOC43MDM0IDE2LjY5ODNDMTguNTM1IDE3LjE1NSAxOC4yNjY3IDE3LjU2ODQgMTcuOTE4MiAxNy45MDgzQzE3LjU3NjcgMTguMjU0OCAxNy4xNjM3IDE4LjUyMjggMTYuNzA4MSAxOC42OTM2QzE2LjA3NTggMTguOTI4NCAxNS40MDcxIDE5LjA1MDQgMTQuNzMyNiAxOS4wNTQxQzEzLjYyNjMgMTkuMTAzNSAxMy4yOTU0IDE5LjExODMgMTAuNDkwMSAxOS4xMTgzQzcuNjg0ODUgMTkuMTE4MyA3LjM1Mzk1IDE5LjExODMgNi4yNDc2NSAxOS4wNTQxQzUuNTczMTcgMTkuMDQ5OCA0LjkwNDYxIDE4LjkyNzggNC4yNzIxMSAxOC42OTM2QzMuODIzNDkgMTguNTE5OCAzLjQxNjA2IDE4LjI1NDQgMy4wNzU4OSAxNy45MTQyQzIuNzM1NzIgMTcuNTc0MSAyLjQ3MDI4IDE3LjE2NjYgMi4yOTY1NyAxNi43MThDMi4wNjQzMiAxNi4wOTUyIDEuOTQyMzIgMTUuNDM2OCAxLjkzNjAzIDE0Ljc3MjFDMS44ODY2NCAxMy42NjU4IDEuODcxODMgMTMuMzMgMS44NzE4MyAxMC41Mjk2QzEuODcxODMgNy43MjkzIDEuODcxODMgNy4zOTM0NiAxLjkzNjAzIDYuMjg3MTZDMS45Mzk2OCA1LjYxMjYyIDIuMDYxNzEgNC45NDM5NiAyLjI5NjU3IDQuMzExNjJDMi40NjczMSAzLjg1NjAyIDIuNzM1MjkgMy40NDMxIDMuMDgxODQgMy4xMDE2QzMuNDIwNjkgMi43NTQxNCAzLjgzMjIyIDIuNDg1OTcgNC4yODY5MiAyLjMxNjMyQzQuOTIwMTMgMi4wODQ2NCA1LjU4ODI0IDEuOTYyNzEgNi4yNjI0NiAxLjk1NTc5QzcuMzY4NzcgMS45MDY0IDcuNzA0NjEgMS44OTY1MiAxMC41MDQ5IDEuODk2NTJIMTAuNTA5OU0xMC41MDQ5IDAuMDA0OTM4OTdDNy42NTUyMiAwLjAwNDkzODk3IDcuMjk5NjIgMC4wMDQ5Mzg5MSA2LjE3ODUgMC4wNjQyMDUxQzUuMzA3NDYgMC4wODU5NDg3IDQuNDQ2MTYgMC4yNTI4NjkgMy42MzAwNiAwLjU1ODA5QzIuOTMxNiAwLjgyNjc0OSAyLjI5NzMgMS4yMzg5OCAxLjc2ODE0IDEuNzY4MTRDMS4yMzg5OCAyLjI5NzMgMC44MjY3NDkgMi45MzE2IDAuNTU4MDkxIDMuNjMwMDZDMC4yNDg2NDQgNC40NDQ5NiAwLjA4MTU4MjggNS4zMDcgMC4wNjQyMDU2IDYuMTc4NUMwLjAxNDgxNzEgNy4yOTk2MiAwIDcuNjYwMTYgMCAxMC41MDk5QzAgMTMuMzU5NiA1LjI4OTkxZS0wNyAxMy43MTUyIDAuMDY0MjA1NiAxNC44MzYzQzAuMDgxNTgyOCAxNS43MDc4IDAuMjQ4NjQ0IDE2LjU2OTkgMC41NTgwOTEgMTcuMzg0OEMwLjgyNjc0OSAxOC4wODMyIDEuMjM4OTggMTguNzE3NSAxLjc2ODE0IDE5LjI0NjdDMi4yOTczIDE5Ljc3NTggMi45MzE2IDIwLjE4ODEgMy42MzAwNiAyMC40NTY3QzQuNDQ1NDkgMjAuNzY0MyA1LjMwNzIgMjAuOTMxMyA2LjE3ODUgMjAuOTUwNkM3LjI5OTYyIDIxIDcuNjYwMTYgMjEuMDE0OCAxMC41MDQ5IDIxLjAxNDhDMTMuMzQ5NyAyMS4wMTQ4IDEzLjcxNTIgMjEuMDE0OCAxNC44MzYzIDIwLjk1MDZDMTUuNzA3NiAyMC45MzA3IDE2LjU2OTIgMjAuNzYzOCAxNy4zODQ4IDIwLjQ1NjdDMTguMDgyMSAyMC4xODYyIDE4LjcxNTUgMTkuNzczMyAxOS4yNDQ0IDE5LjI0NDRDMTkuNzczMyAxOC43MTU1IDIwLjE4NjIgMTguMDgyMSAyMC40NTY3IDE3LjM4NDhDMjAuNzYzNSAxNi41NjkxIDIwLjkzMDUgMTUuNzA3NSAyMC45NTA2IDE0LjgzNjNDMjEuMDA0OSAxMy43MTUyIDIxLjAxNDggMTMuMzU0NyAyMS4wMTQ4IDEwLjUwOTlDMjEuMDE0OCA3LjY2NTEgMjEuMDE0OCA3LjI5OTYyIDIwLjk1MDYgNi4xNzg1QzIwLjkzMDUgNS4zMDcyOSAyMC43NjM1IDQuNDQ1NzMgMjAyNDU2NyAzLjYzMDA2QzIwLjE4NzMgMi45MzIyNSAxOS43NzU0IDIuMjk4MjUgMTkuMjQ3NCAxLjc2ODQ4QzE4LjcxOTMgMS4yMzg3MSAxOC4wODY2IDAuODI0OCAxNy4zODk3IDAuNTUzMTUxQzE2LjU3MzQgMC4yNDg0NjMgMTUuNzEyMiAwLjA4MTU2MDEgMTQuODQxMiAwLjA1OTI2NjJDMTMuNzIwMSAwLjAwOTg3NzY0IDEzLjM1OTYgMCAxMC41MDk5IDBMMTAuNTA0OSAwLjAwNDkzODk3Wk0xMC41MDk5IDUuMTExODJDOS40NDMyNSA1LjExMTgyIDguNDAwNTIgNS40MjgxMyA3LjUxMzYxIDYuMDIwNzRDNi42MjY3IDYuNjEzMzYgNS45MzU0NCA3LjQ1NTY2IDUuNTI3MjQgOC40NDExNUM1LjExOTA0IDkuNDI2NjMgNS4wMTIyMyAxMC41MTEgNS4yMjAzMyAxMS41NTcyQzUuNDI4NDMgMTIuNjAzNCA1Ljk0MjA5IDEzLjU2NDQgNi42OTYzNCAxNC4zMTg2QzcuNDUwNiAxNS4wNzI5IDguNDExNTggMTUuNTg2NSA5LjQ1Nzc2IDE1Ljc5NDZDMTAuNTAzOSAxNi4wMDI3IDExLjU4ODMgMTUuODk1OSAxMi41NzM4IDE1LjQ4NzdDMTMuNTU5MyAxNS4wNzk1IDE0LjQwMTYgMTQuMzg4MyAxNC45OTQyIDEzLjUwMTRDMTUuNTg2OCAxMi42MTQ1IDE1LjkwMzIgMTEuNTcxNyAxNS45MDMyIDEwLjUwNUMxNS45MDM4IDkuNzk2NjIgMTUuNzY0NyA5LjA5NTAxIDE1LjQ5MzkgOC40NDAzOEMxNS4yMjMxIDcuNzg1NzUgMTQuODI1OSA3LjE5MDk1IDE0LjMyNSA2LjY5MDAxQzEzLjgyNCA2LjE4OTA3IDEzLjIyOTIgNS43OTE4NCAxMi41NzQ2IDUuNTIxMDNDMTEuOTIgNS4yNTAyMyAxMS4yMTg0IDUuMTExMTcgMTAuNTA5OSA1LjExMTgyWk0xMC41MDk5IDE0LjAwMThDOS44MTcxNiAxNC4wMDE4IDkuMTM5OTYgMTMuNzk2MyA4LjU2NDAxIDEzLjQxMTNDNy45ODgwNiAxMy4wMjYzIDcuNTM5MjUgMTIuNDc5MSA3LjI3NDM2IDExLjgzOTBDNy4wMDk0NyAxMS4xOTg5IDYuOTQwNDIgMTAuNDk0NSA3LjA3NTkzIDkuODE1MTVDNy4yMTE0NCA5LjEzNTc2IDcuNTQ1NDMgOC41MTE4NCA4LjAzNTY0IDguMDIyMzJDOC41MjU4NSA3LjUzMjgxIDkuMTUwMjUgNy4xOTk3IDkuODI5ODIgNy4wNjUxNEMxMC41MDk0IDYuOTMwNTkgMTEuMjEzNiA3LjAwMDY0IDExLjg1MzQgNy4yNjY0M0MxMi40OTMxIDcuNTMyMjIgMTMuMDM5NyA3Ljk4MTggMTMuNDIzOCA4LjU1ODI5QzEzLjgwOCA5LjEzNDc4IDE0LjAxMjYgOS44MTIyOCAxNC4wMTE2IDEwLjUwNUMxNC4wMTE2IDEwLjk2NDcgMTMuOTIxIDExLjQxOTggMTMuNzQ0OSAxMS44NDQzQzEzLjU2ODkgMTIuMjY4OSAxMy4zMTA5IDEyLjY1NDYgMTIuOTg1NyAxMi45NzkzQzEyLjY2MDQgMTMuMzA0MSAxMi4yNzQ0IDEzLjU2MTYgMTEuODQ5NiAxMy43MzdDMTEuNDI0OCAxMy45MTI0IDEwLjk2OTUgMTQuMDAyNCAxMC41MDk5IDE0LjAwMThaTTE3LjM3NDggNC44OTkyMUMxNy4zNzQ3IDUuMTQ3NDUgMTcuMzAxNCA1LjM5MDE0IDE3LjE2MzggNS41OTY4MEMxNy4wMjYzIDUuODAzNDYgMTYuODMwNyA1Ljk2NDg3IDE2LjYwMTggNi4wNjA3NEMxNi4zNzI4IDYuMTU2NjIgMTYuMTIwNiA2LjE4MjY4IDE1Ljg3NjggNi4xMzU2N0MxNS42MzMxIDYuMDg4NjUgMTUuNDA4NyA1Ljk3MDY1IDE1LjIzMTggNS43OTY0OUMxNS4wNTQ5IDUuNjIyMzMgMTQuOTMzNCA1LjM5OTc4IDE0Ljg4MjYgNS4xNTY4MEMxNC44MzE4IDQuOTEzODEgMTQuODU0IDQuNjYxMjMgMTQuOTQ2MyA0LjQzMDc5QzE1LjAzODYgNC4yMDAzNSAxNS4xOTY5IDQuMDAyMzIgMTUuNDAxNCAzLjg2MTU5QzE1LjYwNTkgMy43MjA4NiAxNS44NDc0IDMuNjQzNyAxNi4wOTU2IDMuNjM5ODBDMTYuMjYyNyAzLjYzNzE4IDE2LjQyODUgMy42Njc4MiAxNi41ODM2IDMuNzI5OTRDMTYuNzM4NyAzLjc5MjA2IDE2LjU2OTkgMy44ODQ0MSAxNi45OTg5IDQuMDAxNjJDMTcuMTE4IDQuMTE4ODMgMTcuMjEyNSA0LjI1ODU1IDE3LjI3NzEgNC40MTI2NUMxNy4zNDE2IDQuNTY2NzUgMTcuMzc0OCA0LjczMjE1IDE3LjM3NDggNC44OTkyMVoiIGZpbGw9ImJsYWNrIi8+PC9zdmc+");
276}
277
278/* YouTube */
279.icono-youtube {
280-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxNyIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjgzOTczIDAuMTcyMTMxQzYuOTk1MzkgLTAuMDU3Mzc3IDE0LjAwNDYgLTAuMDU3Mzc3IDE3LjE2MDMgMC4xNzIxMzFDMjAuNTczOCAwLjQxODAzMyAyMS4wMjkgMi42NDc1NCAyMC45OTg2IDguNUMyMC45NjgzIDE0LjM1MjUgMjAuNTczOCAxNi41ODIgMTcuMTYwMyAxNi44Mjc5QzE0LjAwNDYgMTcuMDU3NCA2Ljk4MDIyIDE3LjA1NzQgMy44Mzk3MyAxNi44Mjc5QzAuNDI2MTU1IDE2LjU4MiAtMC4wMjg5ODgzIDE0LjM1MjUgMC4wMDEzNTQ2NSA4LjVDMC4wMzE2OTc2IDIuNjQ3NTQgMC40MjYxNTUgMC40MTgwMzMgMy44Mzk3MyAwLjE3MjEzMVpNMTUgOC41TDggNVYxMkwxNSA4LjVaIiBmaWxsPSJibGFjayIvPjwvc3ZnPg==");
281mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxNyIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjgzOTczIDAuMTcyMTMxQzYuOTk1MzkgLTAuMDU3Mzc3IDE0LjAwNDYgLTAuMDU3Mzc3IDE3LjE2MDMgMC4xNzIxMzFDMjAuNTczOCAwLjQxODAzMyAyMS4wMjkgMi42NDc1NCAyMC45OTg2IDguNUMyMC45NjgzIDE0LjM1MjUgMjAuNTczOCAxNi41ODIgMTcuMTYwMyAxNi44Mjc5QzE0LjAwNDYgMTcuMDU3NCA2Ljk4MDIyIDE3LjA1NzQgMy44Mzk3MyAxNi44Mjc5QzAuNDI2MTU1IDE2LjU4MiAtMC4wMjg5ODgzIDE0LjM1MjUgMC4wMDEzNTQ2NSA4LjVDMC4wMzE2OTc2IDIuNjQ3NTQgMC40MjYxNTUgMC40MTgwMzMgMy44Mzk3MyAwLjE3MjEzMVpNMTUgOC41TDggNVYxMkwxNSA4LjVaIiBmaWxsPSJibGFjayIvPjwvc3ZnPg==");
282}
283
284/* Share */
285.icono-share {
286mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS45Ljk1MmEuOTUyLjk1MiAwIDAgMSAuMTEyIDEuODk5bC0uMTExLjAwNkgyLjY1N2EuNzA1LjcwNSAwIDAgMC0uNTEyLjIzMS45MDMuOTAzIDAgMCAwLS4yMzMuNTA5bC0uMDA3LjExOHYxMy41MjJjMCAuMjQuMDg4LjQ2Ni4yNC42MjdhLjcyLjcyIDAgMCAwIC40LjIyMmwuMTEyLjAxaDE0LjY4NmMuMDkxIDAgLjE4My0uMDIuMjY5LS4wNThhLjc1Ljc1IDAgMCAwIC4yNDMtLjE3NC44Ny44NyAwIDAgMCAuMTc2LS4yOC45NDcuOTQ3IDAgMCAwIC4wNTctLjIyOGwuMDA3LS4xMTl2LTcuNDRhLjk1Mi45NTIgMCAwIDEgMS44OTktLjExMWwuMDA2LjExdjcuNDQxYzAgLjM1Ni0uMDY2LjcwOS0uMTk1IDEuMDQtLjEzLjMzMi0uMzIuNjM2LS41NjMuODkzLS4yNDYuMjYtLjUzOS40NjktLjg2My42MTItLjI2Mi4xMTUtLjU0LjE4NS0uODIzLjIxbC0uMjEzLjAwOEgyLjY1N2MtLjcxNyAwLTEuNC0uMy0xLjg5OC0uODNhMi44MTMgMi44MTMgMCAwIDEtLjc1Mi0xLjczN0wwIDE3LjIzN1YzLjcxNWMwLS43Mi4yNzEtMS40MTUuNzU4LTEuOTMzQTIuNjE1IDIuNjE1IDAgMCAxIDIuNDYzLjk2bC4xOTQtLjAwOGgzLjI0NFpNMTMuNzI4IDBsNS4zMiA1LjgzNy01LjMyIDUuODRWOC41MTNjLTQuNTM1IDAtNS43NjUgMi4yNDYtNy4wNiAzLjg2OCAwLTUuODYyIDIuMzM4LTkuMDExIDcuMDYtOS4wMTFWMFoiPjwvcGF0aD48L3N2Zz4=");
287-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS45Ljk1MmEuOTUyLjk1MiAwIDAgMSAuMTEyIDEuODk5bC0uMTExLjAwNkgyLjY1N2EuNzA1LjcwNSAwIDAgMC0uNTEyLjIzMS45MDMuOTAzIDAgMCAwLS4yMzMuNTA5bC0uMDA3LjExOHYxMy41MjJjMCAuMjQuMDg4LjQ2Ni4yNC42MjdhLjcyLjcyIDAgMCAwIC40LjIyMmwuMTEyLjAxaDE0LjY4NmMuMDkxIDAgLjE4My0uMDIuMjY5LS4wNThhLjc1Ljc1IDAgMCAwIC4yNDMtLjE3NC44Ny44NyAwIDAgMCAuMTc2LS4yOC45NDcuOTQ3IDAgMCAwIC4wNTctLjIyOGwuMDA3LS4xMTl2LTcuNDRhLjk1Mi45NTIgMCAwIDEgMS44OTktLjExMWwuMDA2LjExdjcuNDQxYzAgLjM1Ni0uMDY2LjcwOS0uMTk1IDEuMDQtLjEzLjMzMi0uMzIuNjM2LS41NjMuODkzLS4yNDYuMjYtLjUzOS40NjktLjg2My42MTItLjI2Mi4xMTUtLjU0LjE4NS0uODIzLjIxbC0uMjEzLjAwOEgyLjY1N2MtLjcxNyAwLTEuNC0uMy0xLjg5OC0uODNhMi44MTMgMi44MTMgMCAwIDEtLjc1Mi0xLjczN0wwIDE3LjIzN1YzLjcxNWMwLS43Mi4yNzEtMS40MTUuNzU4LTEuOTMzQTIuNjE1IDIuNjE1IDAgMCAxIDIuNDYzLjk2bC4xOTQtLjAwOGgzLjI0NFpNMTMuNzI4IDBsNS4zMiA1LjgzNy01LjMyIDUuODRWOC41MTNjLTQuNTM1IDAtNS43NjUgMi4yNDYtNy4wNiAzLjg2OCAwLTUuODYyIDIuMzM4LTkuMDExIDcuMDYtOS4wMTFWMFoiPjwvcGF0aD48L3N2Zz4=");
288}
289
290
291</style>
292
293<#assign presenciaAgenteService = (serviceLocator.findService("es.axa.portales.presenciaagente.service.PresenciaAgenteService"))!"" />
294<#assign placesService = (serviceLocator.findService("es.axa.apiclient.google.places.service.PlacesService"))!"" />
295
296<#assign agent = (presenciaAgenteService.getAgente(request))!"" />
297<#assign agenteSimple = (agent?is_hash)?then(presenciaAgenteService.getAgenteSimple(agent)!{}, {})!{} />
298<#assign place = (agent?is_hash && placesService?is_hash)?then(placesService.getPlaceByMedofi(agent.medofi!"")!{}, {})!{} />
299
300<#assign presenciaAgentePublicService = (serviceLocator.findService("es.axa.publicportals.service.api.PresenciaAgenteService"))!"" />
301
302<#assign journalArticleService = (serviceLocator.findService("com.liferay.journal.service.JournalArticleService"))!"" />
303<#assign customAnalyticsProperties = (journalArticleService.getArticle(groupId, .vars["reserved-article-id"].data).getExpandoBridge().getAttribute("Campos Personalizados Analítica"))!"" />
304
305<#if agent?has_content>
306<#-- Hay presencia de agente -->
307<div class="presencia-agente-card">
308<div class="container">
309 <div class="row">
310 <div class="col-12">
311 <@liferay.language key="publicportals.agents.agencia"/>
312 </div>
313 </div>
314 <h1>
315 <div class="row">
316 <div class="col-12">
317 ${agent.seoFriend}
318 </div>
319 <#if agenteSimple.direccion.ciudad?has_content>
320 <div class="col-12 subtext">
321 (${agenteSimple.direccion.ciudad?lower_case?cap_first})
322 </div>
323 </#if>
324 </div>
325 </h1>
326 <script>
327 document.addEventListener("DOMContentLoaded", function() {
328 if (window.location.href.includes("oficina/agencia-seguros-")) {
329 // Cambiar canonical
330 var link = !!document.querySelector("link[rel='canonical']") ? document.querySelector("link[rel='canonical']") : document.createElement('link');
331 link.setAttribute('rel', 'canonical');
332 link.setAttribute('href', location.protocol + '//' + location.host + location.pathname);
333 document.head.appendChild(link);
334
335 <#if agent?? && agent?has_content && agent.seoFriend?? && agent.seoFriend?has_content && agent.city?? && agent.city?has_content>
336 // Cambiar el título de la página
337 document.title = "${languageUtil.format(locale, "publicportals.title.mediadores", [agent.seoFriend,agent.city?lower_case?capitalize])}";
338
339 // Cambiar la descripción meta
340 var metaDescription = document.querySelector('meta[name="description"]');
341 if (metaDescription) {
342 metaDescription.setAttribute("content", "${languageUtil.format(locale, "publicportals.descripcion.mediadores", [agent.seoFriend,agent.city?lower_case?capitalize])}");
343 } else {
344 // Si no existe la meta descripción, crearla
345 metaDescription = document.createElement('meta');
346 metaDescription.name = "description";
347 metaDescription.content = "${languageUtil.format(locale, "publicportals.descripcion.mediadores", [agent.seoFriend,agent.city?lower_case?capitalize])}";
348 document.head.appendChild(metaDescription);
349 }
350 </#if>
351 }
352 });
353 </script>
354 <script>
355 // Guardamos en sesión todos los utm_* de la url concatenados por comas
356 document.addEventListener("DOMContentLoaded", function () {
357 var searchParams = window.location.search;
358
359 if (!searchParams) {
360 return;
361 }
362
363 var params = new URLSearchParams(searchParams);
364 var traceabilityParams = [];
365
366 for (var entryParams of params.entries()) {
367 var key = entryParams[0];
368 var value = entryParams[1];
369
370 if (key.startsWith("utm_")) {
371 traceabilityParams.push(key + "=" + value);
372 }
373 }
374
375 var traceabilityString = traceabilityParams.join(",");
376
377 if (traceabilityString) {
378 sessionStorage.setItem("leadTraceabilityParams", traceabilityString);
379 }
380 });
381 </script>
382 <#if agenteSimple.direccion?has_content>
383 <div class="row">
384 <div class="col-12">
385 <a href="https://www.google.com/maps/search/?api=1&query=${agenteSimple.direccion}, españa" class="link-location enlace-defecto"
386 onclick="${randomNamespace}analyticsInteraccionAyuda('direccion', '${customAnalyticsProperties?js_string}'); checkWebviewLink(this, event)" target="_blank">
387 ${agenteSimple.direccion}
388 </a>
389 </div>
390 </div>
391 </#if>
392
393 <#if agenteSimple.contactoList?has_content>
394 <div class="row justify-content-center mt-3">
395 <#list agenteSimple.contactoList as contacto>
396 <div class="col-12 col-sm-6 col-lg-5 mb-3 d-flex justify-content-center">
397 <div class="d-flex justify-content-center justify-content-sm-start contenedor-contacto">
398 <#if contacto.isEmail()>
399 <a href="${contacto.href}" class="link-mail enlace-defecto" target="_blank"
400 onclick="${randomNamespace}analyticsInteraccionAyuda('email', '${customAnalyticsProperties?js_string}')">
401 ${contacto.contacto}
402 </a>
403 <#elseif contacto.isTelefono()>
404 <a href="${contacto.href}" class="link-phone enlace-defecto" target="_blank"
405 data-elemento-interaccion="${agent.seoFriend} - ${contacto.contacto}" data-custom-properties='${customAnalyticsProperties}'
406 onclick="${randomNamespace}analyticsInteraccionAyuda('telefono', '${customAnalyticsProperties?js_string}')">
407 ${contacto.contacto}
408 </a>
409 </#if>
410 </div>
411 </div>
412 </#list>
413 </div>
414 </#if>
415
416 <#if place?has_content && place.currentOpeningHours?has_content>
417 <div class="row align-items-start time-box-row" role="button" tabindex="0" aria-expanded="false">
418 <div class="col-12 col-sm-6 d-flex justify-content-sm-end justify-content-center mb-2 time-box-col">
419 <#if place.currentOpeningHours.openNow?? && place.currentOpeningHours.openNow>
420 <div class="time-box time-open" role="button" tabindex="0">
421 ${presenciaAgentePublicService.formatCurrentOpenStatus (request, place)}
422 </div>
423 <#else>
424 <div class="time-box time-close" role="button" tabindex="0">
425 ${presenciaAgentePublicService.formatCurrentOpenStatus (request, place)}
426 </div>
427 </#if>
428 </div>
429 <div class="col-12 col-sm-6 d-flex justify-content-sm-start justify-content-center mb-2">
430 <details class="time-box-detalle"
431 ontoggle="${randomNamespace}analyticsInteraccionHorario(this.open ? 'abrir contenido' : 'cerrar contenido')">
432 <summary>
433 <span class="hide-on-open">
434 ${presenciaAgentePublicService.formatCurrentOpenHours (request, place)}
435 </span>
436 <span class="caret" aria-hidden="true"></span>
437 </summary>
438
439 <div class="time-box-detalle-contenido">
440 ${presenciaAgentePublicService.formatPeriodList (request, place)}
441 </div>
442 </details>
443 <script>
444 document.addEventListener('DOMContentLoaded', function(){
445 // Hacer clickable toda la fila .time-box-row pero sólo actúa si no se clicó en elementos interactivos
446 document.querySelectorAll('.time-box-row').forEach(function(row){
447 try{
448 var details = row.querySelector('.time-box-detalle');
449 // establecer estado inicial aria-expanded
450 if(details){
451 var initialOpen = !!details.hasAttribute('open');
452 row.setAttribute('aria-expanded', initialOpen);
453 }
454
455 // Hacemos clickable toda la fila: un único listener en captura
456 row.style.cursor = 'pointer';
457
458 // Listener directo sobre la caja .time-box para asegurar que clicks allí siempre disparan el <summary>
459 var boxEl = row.querySelector('.time-box');
460 if(boxEl){
461 boxEl.style.cursor = 'pointer';
462 boxEl.addEventListener('click', function(ev){
463 try{
464 if(ev.target.closest('a, button, input, summary, .time-box-detalle')) return;
465 var summaryEl = row.querySelector('.time-box-detalle > summary');
466 if(summaryEl){ summaryEl.click(); var d = row.querySelector('.time-box-detalle'); if(d) row.setAttribute('aria-expanded', d.hasAttribute('open')); }
467 else if(details){ details.open = !details.open; row.setAttribute('aria-expanded', details.open); }
468 }catch(err){ /* no crítico */ }
469 }, true);
470 boxEl.addEventListener('keydown', function(ev){ if(ev.key === 'Enter' || ev.key === ' '){ ev.preventDefault(); boxEl.click(); } });
471 }
472
473 row.addEventListener('click', function(e){
474 try{
475 // Si el click vino desde la propia caja .time-box, lo maneja su listener (evitamos doble toggle)
476 if(e.target.closest('.time-box')) return;
477 // ignorar clicks en otros elementos interactivos para no interferir
478 if(e.target.closest('a, button, input, summary, .time-box-detalle')) return;
479
480 // preferimos usar el comportamiento nativo del <summary> si existe
481 var summaryEl = row.querySelector('.time-box-detalle > summary');
482 if(summaryEl){ summaryEl.click(); var d = row.querySelector('.time-box-detalle'); if(d) row.setAttribute('aria-expanded', d.hasAttribute('open')); return; }
483
484 // fallback: togglear directamente
485 if(details){ details.open = !details.open; row.setAttribute('aria-expanded', details.open); }
486 }catch(err){ /* no crítico */ }
487 }, true);
488
489 // teclado para la fila -> simular click en summary para comportamiento nativo
490 row.addEventListener('keydown', function(e){
491 if(e.key === 'Enter' || e.key === ' '){
492 e.preventDefault();
493 try{
494 var summaryEl = row.querySelector('.time-box-detalle > summary');
495 if(summaryEl){ summaryEl.click(); var d = row.querySelector('.time-box-detalle'); if(d) row.setAttribute('aria-expanded', d.hasAttribute('open')); }
496 else { row.click(); }
497 }catch(err){ /* no crítico */ }
498 }
499 });
500
501 }catch(err){ /* no crítico */ }
502 });
503 });
504 </script>
505 </div>
506 </div>
507 <#else>
508 <div class="row">
509 <div class="col-12 d-flex justify-content-center mb-2">
510 <div class="time-box time-close" role="status">
511 Horario no disponible
512 </div>
513 </div>
514 </div>
515 </#if>
516
517 <div class="row">
518 <div class="col-12 d-flex justify-content-center">
519 <#assign
520 btnUrl = (btnText.btnLink.getData()?has_content)?then(btnText.btnLink.getData(), agenteSimple.urlOficina!"")
521 btnTarget = (btnText.btnLink.selectTarget2.getData()?has_content)?then(btnText.btnLink.selectTarget2.getData(), "_self")
522 isHidden = !btnUrl?has_content
523 label = btnText.getData()?has_content?then(btnText.getData(), liferay.language("publicportals.agents.informacion"))
524 />
525 <div class="c-agent-variant__buttons mx-5">
526 <a href="${btnUrl}"
527 target="${btnTarget}"
528 class="rounded button button--outlined button--white ${isHidden?then('d-none', '')}"
529 onclick="${randomNamespace}analyticsInteraccionCTA('${label?js_string}','${customAnalyticsProperties?js_string}'); checkWebviewLink(this, event)"
530 data-custom-properties='${customAnalyticsProperties}'>
531
532 <span class="button__text">${label}</span>
533 </a>
534 </div>
535 </div>
536 </div>
537
538 <div class="row mb-5">
539 <div class="col-12 align-items-center">
540 <#if ((agenteSimple.redSocialList?size?int) > 0)>
541 <#list agenteSimple.redSocialList as redSocial>
542 <a href="${redSocial.url}" onclick="${randomNamespace}analyticsInteraccionRedSocial(${redSocial.nombreRed}, '${customAnalyticsProperties?js_string}'); openWebviewLink(this, event, 'externalLink')"
543 class="icono-redsocial icono-${redSocial.nombreRed?lower_case}" target="_blank" rel="noopener noreferrer" aria-label="${redSocial.nombreRed?cap_first}" title="${redSocial.nombreRed?cap_first}">
544 <span class="${redSocial.nombreRed}" aria-hidden="true"></span>
545 </a>
546 </#list>
547 </#if>
548 <#assign urlHome = themeDisplay.getPortalURL()>
549 <#if urlHome?? && urlHome?has_content>
550 <#if agenteSimple.urlOficina?? && agenteSimple.urlOficina?has_content>
551 <a data-a2a-url="${urlHome}${agenteSimple.urlOficina}" data-a2a-title="${agent.seoFriend}" href="${agenteSimple.urlOficina}"
552 onclick="${randomNamespace}analyticsInteraccionRedSocial('Share', '${customAnalyticsProperties?js_string}'); openWebviewLink(this, event, 'externalLink')" class="icono-redsocial icono-share"
553 target="_blank" rel="noopener noreferrer"
554 aria-label="Share" title="Share">
555 <span class="Share" aria-hidden="true"></span>
556 </a>
557 </#if>
558 </#if>
559 <script>
560 var a2a_config = a2a_config || {};
561 a2a_config.onclick = 1;
562 a2a_config.locale = "es";
563 </script>
564 <script async src="https://static.addtoany.com/menu/page.js"></script>
565 </div>
566 </div>
567
568 <#assign finalPhotoUri = "" />
569 <#if placesService?is_hash && agent?is_hash && agent.medofi?has_content>
570 <#attempt>
571 <#assign finalPhotoUri = (placesService.getFotoByMedofi(agent.medofi))!"" />
572 <#recover>
573 <#-- Se ignoró la excepción al obtener la foto -->
574 <#assign finalPhotoUri = "/documents/776357/34305893/defaultMedofi.jpg" />
575 </#attempt>
576 </#if>
577 <#if finalPhotoUri?has_content>
578 <div class="row">
579 <div class="col-12 d-flex justify-content-center">
580 <img class="rounded" src="${finalPhotoUri}" alt="${agent.seoFriend}" />
581 </div>
582 </div>
583 </#if>
584</div>
585</div>
586<#else>
587<#-- No hay presencia de agente -->
588<section class="hero updater">
589 <#if picture_desktop?? && picture_desktop.getData()?? && picture_desktop.getData() != "">
590 <picture class="hero__image">
591 <source media="(max-width: 1009px)" srcset="${picture_desktop.getData()}"/>
592 <img alt="${picture_desktop.getAttribute('alt')}" src="${picture_desktop.getData()}"/>
593 </picture>
594</#if>
595<#if video_desktop?? && video_desktop.getData()?? && video_desktop.getData() != "">
596<video autoplay="" class="hero__video" muted="" loop="" playsinline=""
597<#if picture_desktop?? && picture_desktop.getData()?? && picture_desktop.getData() != "">
598poster="${picture_desktop.getData()}"
599</#if>
600>
601<source src="${video_desktop.getData()}" type="video/mp4"/> <@liferay.language key="publicportals.carousel.video"/>
602</video>
603</#if>
604<#if picture_mobile?? && picture_mobile.getData()?? && picture_mobile.getData() != "">
605<video autoplay="" muted="" class="hero__video is-mobile" loop="" playsinline=""
606<#if picture_mobile?? && picture_mobile.getData()?? && picture_mobile.getData() != "">
607poster="${picture_mobile.getData()}"
608</#if>
609>
610<source src="${video_mobile.getData()}" type="video/mp4"/> <@liferay.language key="publicportals.carousel.video"/>
611</video>
612</#if>
613<div class="stroke-overlay">
614 <div class="stroke-overlay__layer is-top"></div>
615 <div class="stroke-overlay__layer is-right"></div>
616 <div class="stroke-overlay__layer is-bottom"></div>
617 <div class="stroke-overlay__layer is-left"></div>
618</div>
619<div class="section-wrapper">
620 <#if titleSize?? && titleSize.getData()?has_content && titleSize.getData()!='' >
621 <#assign titleSize = titleSize.getData() />
622 <#else>
623 <#assign titleSize = "h1"/>
624</#if>
625<#if title?? && title.getData()?? && title.getData() != "">
626<#if (titleSizeDesktop.getData())??>
627<#assign desktopTitleSize = "${titleSizeDesktop.getData()}"/>
628</#if>
629<#if (titleSizeTablet.getData())??>
630<#assign tabletTitleSize = "${titleSizeTablet.getData()}"/>
631</#if>
632<#if (titleSizeMobile.getData())??>
633<#assign mobileTitleSize = "${titleSizeMobile.getData()}"/>
634</#if>
635<#if (titleColor.getData())??>
636<#assign colorTitle = "${titleColor.getData()}"/>
637</#if>
638<${titleSize}
639class="hero__title ${desktopTitleSize!''} ${tabletTitleSize!''} ${mobileTitleSize!''}"
640style="color: ${colorTitle!'rgb()'};"
641>
642${title.getData()}
643</${titleSize}>
644</#if>
645<#if subtitle?? && subtitle.getData()?? && subtitle.getData() != "">
646<#if (subtitleColor.getData())??>
647<#assign colorSubtitle = "${subtitleColor.getData()}"/>
648</#if>
649<span class="hero__subtitle" style="color: ${colorSubtitle!'rgb()'};">${subtitle.getData()}</span>
650</#if>
651<#if buttonText?? && buttonText.getData()?? && buttonText.getData()!="" >
652<#if (buttonTextFieldSet.buttonStyle.getData())??>
653<#assign styleButton = "${buttonTextFieldSet.buttonStyle.getData()}"/>
654</#if>
655<#if (buttonTextFieldSet.buttonColor.getData())??>
656<#assign colorButton = "${buttonTextFieldSet.buttonColor.getData()}"/>
657</#if>
658<#if buttonText.button_link?? && buttonText.button_link.getData()?? && buttonText.button_link.getData()!="" >
659<#assign linkTarget = "_blank" />
660<#if buttonText.button_link.selectTarget?? && buttonText.button_link.selectTarget.getData()?has_content>
661<#assign linkTarget = buttonText.button_link.selectTarget.getData() />
662</#if>
663<a href="${buttonText.button_link.getData()}"
664 class="button ${styleButton!''} ${colorButton!''} analytics_interaccion_boton"
665 name="button"
666 title="${buttonText.getData()}"
667 target="${linkTarget}"
668 tabindex="0"
669 onclick="checkWebviewLink(this, event)"
670 data-custom-properties='${customAnalyticsProperties}'
671>
672 <span class="button__text">${buttonText.getData()}</span>
673</a>
674<#else>
675<button
676 class="button ${styleButton!''} ${colorButton!''} analytics_interaccion_boton"
677 name="button"
678 title="${buttonText.getData()}"
679 tabindex="0"
680 data-custom-properties='${customAnalyticsProperties}'
681>
682 <span class="button__text">${buttonText.getData()}</span>
683</button>
684</#if>
685</#if>
686<#if secondaryButtonText?? && secondaryButtonText.getData()?? && secondaryButtonText.getData()!="" >
687<#if (secondaryButtonTextFieldSet.secondaryButtonStyle.getData())??>
688<#assign secondaryStyleButton = "${secondaryButtonTextFieldSet.secondaryButtonStyle.getData()}"/>
689</#if>
690<#if (secondaryButtonTextFieldSet.secondaryButtonColor.getData())??>
691<#assign secondaryColorButton = "${secondaryButtonTextFieldSet.secondaryButtonColor.getData()}"/>
692</#if>
693<#if secondaryButtonText.secondaryButton_link?? && secondaryButtonText.secondaryButton_link.getData()?? && secondaryButtonText.secondaryButton_link.getData()!="" >
694<#assign linkTarget = "_blank" />
695<#if secondaryButtonText.secondaryButton_link.secondarySelectTarget?? && secondaryButtonText.secondaryButton_link.secondarySelectTarget.getData()?has_content>
696<#assign linkTarget = secondaryButtonText.secondaryButton_link.secondarySelectTarget.getData() />
697</#if>
698<a href="${secondaryButtonText.secondaryButton_link.getData()}"
699 class="button secondaryButton ${secondaryStyleButton!''} ${secondaryColorButton!''} analytics_interaccion_boton"
700 name="button"
701 title="${secondaryButtonText.getData()}"
702 target="${linkTarget}"
703 tabindex="0"
704 onclick="checkWebviewLink(this, event)"
705 data-custom-properties='${customAnalyticsProperties}'
706>
707 <span class="button__text">${secondaryButtonText.getData()}</span>
708</a>
709<#else>
710<button
711 class="button secondaryButton ${secondaryStyleButton!''} ${secondaryColorButton!''} analytics_interaccion_boton"
712 name="button"
713 title="${secondaryButtonText.getData()}"
714 tabindex="0"
715 data-custom-properties='${customAnalyticsProperties}'
716>
717 <span class="button__text">${secondaryButtonText.getData()}</span>
718</button>
719</#if>
720</#if>
721</div>
722</section>
723</#if>
724
725<script>
726 function ${randomNamespace}analyticsInteraccionAyuda(tipoContacto, customProperties) {
727 PublicPortalsAnalyticsFactory
728 .getInstance()
729 .publicPortalsAnalyticsInteractionInstance()
730 .accion_evento("contacto")
731 .elemento_interaccion(tipoContacto)
732 .detalle_interaccion("contrato un seguro")
733 .component_name("PP_PA_HERO_AGENT")
734 .customProperties(customProperties)
735 .push();
736 }
737
738 function ${randomNamespace}analyticsInteraccionCTA(textoBoton, customProperties) {
739 PublicPortalsAnalyticsFactory
740 .getInstance()
741 .publicPortalsAnalyticsInteractionInstance()
742 .accion_evento("click boton")
743 .elemento_interaccion(textoBoton)
744 .detalle_interaccion("contrato un seguro")
745 .component_name("PP_PA_HERO_AGENT")
746 .customProperties(customProperties)
747 .push();
748 }
749
750 function ${randomNamespace}analyticsInteraccionRedSocial(nombreRedSocial, customProperties) {
751 PublicPortalsAnalyticsFactory
752 .getInstance()
753 .publicPortalsAnalyticsInteractionInstance()
754 .accion_evento("click red social")
755 .elemento_interaccion(nombreRedSocial)
756 .detalle_interaccion("me informo")
757 .component_name("PP_PA_HERO_AGENT")
758 .customProperties(customProperties)
759 .push();
760 }
761
762 function ${randomNamespace}analyticsInteraccionHorario(accionEvento) {
763 PublicPortalsAnalyticsFactory
764 .getInstance()
765 .publicPortalsAnalyticsInteractionInstance()
766 .accion_evento(accionEvento)
767 .elemento_interaccion("horario")
768 .detalle_interaccion("contrato un seguro")
769 .component_name("PP_PA_HERO_AGENT")
770 .push();
771 }
772</script>
Move forward with ease
Discover our insurance products
Mobility
Health
Home
Life
Investment
We inform you about our insurance products. If you need more information, we can call you when you indicate or you can write to us through any of the forms available on the website.
Medical directory
Find the medical professional you need
Nearly 44,000 medical services and over 4,000 wellness services at your disposal, to offer you the best medical care.
Find your doctorMobility
Locate your trusted workshop with us
Discover the great advantages of repairing your vehicle in our AXA Quality Workshops.
You will be in the hands of the best professionals.

ONLINE MEDICAL CONSULTATION
Always by your side, wherever you are
You can contact a medical professional 24 hours a day or, if you prefer, schedule a video consultation. And if you have a quick query or want to share reports or photos, you can use the chat to resolve your doubts.

SHARING IS HEALTH
Learn to take better care of yourself
Discover with AXA Health how to prevent illnesses and improve your well-being, because we believe that sharing is health. Your well-being is our priority.
¿Necesitas más información?
-
El riesgo de accidentes con animales en España
¿Cómo extremar la precaución al volante?
Más información -
El 33% de los españoles cree que tiene un problema de salud mental
Más información -
Y tú, ¿quieres dejar un Legado Activo?
AXA presenta un seguro de vida único que incluye servicios de sepelio.
MÁS INFORMACIÓN