{"id":42594,"date":"2025-03-12T10:04:06","date_gmt":"2025-03-12T08:04:06","guid":{"rendered":"https:\/\/www.serviscomplet.com\/thank-you-very-much\/"},"modified":"2026-09-07T12:12:43","modified_gmt":"2026-09-07T10:12:43","slug":"thank-you-very-much","status":"publish","type":"page","link":"https:\/\/www.serviscomplet.com\/en\/thank-you-very-much\/","title":{"rendered":"TYP: Google Ads (Dise\u00f1o)"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"42594\" class=\"elementor elementor-42594 elementor-42238\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c119154 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"c119154\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-67c2ef0 elementor-fixed elementor-widget elementor-widget-template\" data-id=\"67c2ef0\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;fixed&quot;}\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"container\" data-elementor-id=\"61812\" class=\"elementor elementor-61812 elementor-54135\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6a28cfa e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"6a28cfa\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-687177a elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"687177a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SERVIS \u00b7 MEN\u00da \u00b7 INGL\u00c9S\n     Generado por traducir-menu-en.py a partir del men\u00fa espa\u00f1ol publicado.\n     Mismo CSS y mismo JavaScript, letra por letra: lo \u00fanico que cambia son los\n     textos, los enlaces y las etiquetas de accesibilidad.\n\n     D\u00d3NDE SE PEGA\n       Elementor \u2192 Plantillas \u2192 Theme Builder \u2192 Cabecera \u2192 NUEVA cabecera, un\n       solo widget HTML, y dentro todo este archivo.\n\n       CONDICI\u00d3N DE VISUALIZACI\u00d3N: aqu\u00ed est\u00e1 la diferencia con la espa\u00f1ola. NO\n       se pone \u00abTodo el sitio\u00bb. Se limita al idioma ingl\u00e9s, o saldr\u00e1 el men\u00fa\n       ingl\u00e9s tambi\u00e9n en las p\u00e1ginas espa\u00f1olas. Con WPML, la cabecera se crea\n       desde la versi\u00f3n inglesa del sitio y queda atada a ese idioma; si tu\n       Theme Builder no ofrece la condici\u00f3n por idioma, sirve limitarla a las\n       p\u00e1ginas que cuelgan de \/en\/.\n\n       Y la cabecera espa\u00f1ola hay que dejarla limitada al espa\u00f1ol, no en \u00abTodo\n       el sitio\u00bb, o se pisar\u00e1n la una a la otra.\n\n     LOS ENLACES\n       Salen del <link rel=\"alternate\" hreflang=\"en\"> que WPML declara en cada\n       p\u00e1gina espa\u00f1ola, no de traducir el slug: \/stands-en-barcelona\/ es\n       \/en\/trade-show-booths-barcelona\/ y \/nuestros-proyectos-servis\/ es\n       \/en\/projects\/. Si alguna vez se cambia un slug ingl\u00e9s, se cambia en\n       traducir-menu-en.py y se vuelve a lanzar.\n\n     EL ES\/EN\n       Funciona solo, igual que en el espa\u00f1ol: los dos enlaces se rellenan\n       leyendo los \u00abalternate\u00bb de WPML, y el idioma activo se marca a partir de\n       <html lang>, que en este sitio es correcto (es-ES \/ en-US).\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n\n<!-- La misma Poppins de la muestra. Si el tema ya la carga, el navegador no\n     la pide dos veces: es la misma direcci\u00f3n. Y si no la carga, sin esto el\n     men\u00fa sale con la letra del tema \u2014mismas medidas en p\u00edxeles, otra letra\u2014 y\n     se ve m\u00e1s grande y m\u00e1s ancho que la muestra. -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     ARRIBA DEL TODO: \u00bfTRANSPARENTE O CRISTAL?\n     Se cambia la palabra de la l\u00ednea de abajo. Nada m\u00e1s.\n\n       claro   \u00b7 SIEMPRE TRANSPARENTE arriba del todo, con el logo en blanco,\n                 y cristal en cuanto se baja. Es lo que trae puesto y lo que\n                 hace la muestra: id\u00e9ntico.\n       solido  \u00b7 siempre cristal, desde el principio. Para una p\u00e1gina que\n                 empiece en blanco, donde un men\u00fa blanco no se ver\u00eda.\n       auto    \u00b7 lo decide mirando qu\u00e9 hay detr\u00e1s de la cabecera. Suena bien y\n                 en una web de tres cajas funciona, pero en Elementor la barra\n                 va dentro de un widget, dentro de un contenedor, dentro de la\n                 plantilla, y acertar qu\u00e9 es \u00ablo de detr\u00e1s\u00bb no siempre sale.\n                 Por eso NO viene puesto: solo si te hace falta una cabecera\n                 que sirva a p\u00e1ginas con foto y a p\u00e1ginas en blanco.\n\n     Si \u00abauto\u00bb se equivoca, en el inspector el <header> lleva escrito por qu\u00e9:\n     data-nv-fondo vale foto, oscuro, claro o nada. Con ese dato se arregla.\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<script>window.SERVIS_MENU_FONDO = 'auto';<\/script>\n\n<style>\n\/* Lo \u00fanico que se queda fuera de la sombra, porque tiene que hablar con la\n   p\u00e1gina: que la barra pueda salirse a todo el ancho sin abrir un scroll\n   horizontal, y que el widget de Elementor no le meta relleno.\n\n   El recorte va SOLO EN BODY. Nunca en html: el sitio trae de serie un\n   \u00abbody{overflow-y:auto;overflow-x:hidden!important}\u00bb (sale del CSS propio de\n   una plantilla de Elementor, post-23764.css). Mientras html se quede en\n   \u00abvisible\u00bb, ese valor de body sube al viewport y body se comporta como si no\n   tuviera overflow: una sola barra, la de la p\u00e1gina. En cuanto se le pone algo\n   a html \u2014aunque sea este clip\u2014 la subida deja de ocurrir, body se queda con\n   su overflow-y:auto puesto y aparece una SEGUNDA barra vertical pegada a la\n   primera. *\/\nbody:has(.servis-menu){overflow-x:clip}\n.elementor-widget-html:has(> .servis-menu){padding:0}\n<\/style>\n<div class=\"servis-menu\"><\/div>\n\n<template id=\"servis-menu-molde\">\n<style>\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   MEN\u00da SERVIS \u00b7 el mismo cristal que la barra de las p\u00e1ginas de gracias\n   P\u00edldora flotante con el blanco al 80% y el desenfoque de la landing. Lo que\n   cambia es que aqu\u00ed hay men\u00fa: cinco entradas, tres desplegables, el bot\u00f3n y\n   el idioma. Al bajar se recoge en la \u00abs\u00bb del logotipo.\n\n   Las entradas y los enlaces son los del men\u00fa de serviscomplet.com. Lo \u00fanico\n   que se ha movido de sitio es \u00abD\u00f3nde estamos\u00bb, que ha pasado a ser la\n   segunda columna de \u00abSobre nosotros\u00bb.\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n:host{\n  --g:#43B02A; --gd:#2E7D1B; --gl:#BEE0B8;\n  --gray:#6c6c6c; --body:#4C4C4C; --light:#999;\n  --off:#F5F7F4; --tint:#F3F9F1; --bd:#E0E8DC;\n  --e:cubic-bezier(.23,1,.32,1); --e-spr:cubic-bezier(.16,1,.3,1);\n  --w:1240px;\n  --amb:0 2px 4px -2px rgba(16,33,12,.05), 0 18px 40px -24px rgba(16,33,12,.16);\n  --corte:1040px;   \/* por debajo, hamburguesa. Con la p\u00edldora ajustada a su\n                       contenido son unos 900px de barra: por encima de 1.040\n                       cabe de sobra con aire a los lados *\/\n}\n*,*::before,*::after{box-sizing:border-box}\n\n:host{display:block;color:var(--body);\n  font-family:'Poppins',system-ui,sans-serif;font-size:16px;line-height:1.6;\n  text-align:left;letter-spacing:normal;text-transform:none;\n  \/* Se pega arriba y se sale a todo el ancho DESDE AQU\u00cd, que es la caja que\n     est\u00e1 en la p\u00e1gina. Puesto en un hijo, el pegado se quedar\u00eda dentro de una\n     caja del alto de la barra: sin nada por lo que deslizarse. *\/\n  position:sticky;top:0;z-index:60;\n  \/* Esto es solo el respaldo. El ancho bueno lo pone encajar(), abajo, con\n     un estilo en linea que gana a esta regla. En CSS no sale: 100vw incluye\n     la barra de desplazamiento vertical, y el 50% cuelga de un contenedor de\n     Elementor que se encoge a su contenido, asi que el porcentaje se resuelve\n     contra una caja cuyo ancho depende de este mismo elemento. Cambiarlo aqui\n     manda la barra 700px a la izquierda. *\/\n  width:100vw;max-width:100vw;margin-inline:calc(50% - 50vw)}\nh1,h2,h3,p,ul,li{margin:0;padding:0}\nul{list-style:none}\na{color:inherit;text-decoration:none}\n\n\/* \u2500\u2500 La p\u00edldora \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.nv{padding:14px 0 0}\n\/* El cristal, copiado tal cual de la barra de la landing (.ln__topin):\n   blanco al 80%, desenfoque de 16px con saturaci\u00f3n 1.8, un filo de 1px en el\n   gris de la casa y una sombra muy baja. Nada m\u00e1s.\n\n   Antes ten\u00eda aqu\u00ed un invento: degradado diagonal, desenfoque de 22 con\n   brillo, filos blancos por dentro y un reflejo que segu\u00eda al rat\u00f3n. Se ve\u00eda\n   distinto de la landing, que es justo lo contrario de lo que buscamos. *\/\n.nv__in{position:relative;\n  \/* La p\u00edldora ocupa el ancho de la p\u00e1gina, con un margen a los lados para\n     que se siga leyendo como una pieza flotando y no como una franja pegada\n     al borde.\n\n     Dentro va todo a los extremos: la marca a la izquierda y el resto \u2014men\u00fa,\n     bot\u00f3n e idioma\u2014 en bloque a la derecha. El hueco que sobra se acumula en\n     el medio, que es lo que separa la identidad de la navegaci\u00f3n.\n\n     El ancho es el de siempre: 1240 en cuanto la pantalla da para ello, y si\n     no, lo que haya menos 32px de margen. NO se toca.\n\n     Lo que se sal\u00eda de la pantalla no era esto \u2014era el 100vw del :host, que\n     incluye la barra de desplazamiento, y un margin-inline que no llegaba a\n     aplicarse\u2014. Eso lo arregla encajar(), abajo. Probado a estrechar la\n     p\u00edldora y no era el camino: en un monitor grande se quedaba peque\u00f1a. *\/\n  width:min(1240px,calc(100% - 32px));margin:0 auto;\n  padding:8px 9px 8px 24px;border-radius:999px;\n  display:flex;align-items:center;gap:clamp(10px,1.3vw,18px);\n\n  \/* El cristal. Va menos opaco que antes y con m\u00e1s desenfoque a prop\u00f3sito:\n     lo que hace que un cristal parezca cristal no es el blanco, es que se\n     adivine lo que pasa por detr\u00e1s. Con .8 de blanco el fondo desaparec\u00eda y\n     quedaba un pl\u00e1stico claro.\n\n     Las tres sombras interiores son el volumen: un filo de luz arriba \u2014donde\n     dar\u00eda la luz en un canto biselado\u2014, un aro tenue por todo el borde, y una\n     penumbra abajo, que es lo que hunde la pieza y la separa del fondo. *\/\n  background:linear-gradient(176deg,rgba(255,255,255,.74),rgba(255,255,255,.62) 48%,\n             rgba(255,255,255,.7));\n  backdrop-filter:saturate(1.9) blur(18px);\n  -webkit-backdrop-filter:saturate(1.9) blur(18px);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.8),\n             inset 0 0 0 1px rgba(255,255,255,.3),\n             inset 0 -10px 18px -16px rgba(16,33,12,.12),\n             0 0 0 1px rgba(76,76,76,.08),\n             0 14px 38px -26px rgba(76,76,76,.55);\n  transform-origin:center;\n  transition:box-shadow .4s var(--e),background .4s var(--e),padding .4s var(--e),\n             opacity .3s var(--e),transform .45s var(--e-spr)}\n\/* El reflejo. Es el brillo que cae desde el canto de arriba a la izquierda,\n   como en un cristal de verdad, y se apaga antes de la mitad. En \u00abscreen\u00bb\n   para que solo sume luz y nunca ensucie lo que hay debajo. *\/\n.nv__in::before{content:\"\";position:absolute;inset:0;border-radius:inherit;\n  pointer-events:none;mix-blend-mode:screen;\n  background:radial-gradient(120% 180% at 16% -60%,rgba(255,255,255,.45),\n             rgba(255,255,255,0) 44%)}\n\n\/* Al bajar solo se cierra un poco el cristal: ni se aprieta ni encoge la\n   marca. Sigue trasl\u00facido \u2014el contenido se intuye al pasar por debajo\u2014 pero\n   con blanco suficiente para que el texto se lea sobre cualquier cosa. *\/\n.nv.baja .nv__in{background:linear-gradient(176deg,rgba(255,255,255,.88),\n             rgba(255,255,255,.8) 48%,rgba(255,255,255,.86));\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),\n             inset 0 0 0 1px rgba(255,255,255,.35),\n             inset 0 -10px 18px -16px rgba(16,33,12,.1),\n             0 0 0 1px rgba(76,76,76,.09),\n             0 18px 44px -26px rgba(76,76,76,.7)}\n\/* El archivo del logo es 300x150 pero la marca solo ocupa la banda central,\n   de y=43 a y=108: 65px de 150, un 57% de aire. Por eso a 32px de alto se\n   ve\u00eda a 14. Con la caja en 300\/65 y object-fit:cover se recorta ese aire\n   \u2014el recorte es sim\u00e9trico, 43 arriba y 42 abajo\u2014 y la marca ocupa de verdad\n   los 26px. Sin tocar el archivo ni subir otro. *\/\n\/* El alto de la marca. Los dos logos cuelgan de aqu\u00ed, as\u00ed que se cambia en\n   un sitio: el de color se recorta a esa altura y el blanco va a 63\/65 de\n   ella, que es lo que los deja iguales en pantalla.\n\n   No cambia al bajar: la barra mide siempre lo mismo. Lo \u00fanico que cambia al\n   bajar es que aparece el cristal. *\/\n.nv{--logo:22px}\n.nv__marca{position:relative;display:block;flex:none;line-height:0}\n.nv__logo{height:var(--logo);width:auto;aspect-ratio:300\/65;object-fit:cover;\n  display:block;transition:height .4s var(--e),opacity .35s var(--e)}\n\/* El logo blanco es otro archivo (300x63) y ese no tiene aire: se ve entero.\n   Va a 63\/65 del alto del otro para que los dos midan lo mismo en pantalla y\n   el cambio no d\u00e9 un salto de 3px. Encima y en absoluto, as\u00ed que se cruzan\n   sin mover nada de sitio. *\/\n.nv__logo--blanco{position:absolute;left:0;top:0;height:calc(var(--logo) * 63 \/ 65);\n  width:auto;aspect-ratio:auto;opacity:0;\n  transition:height .4s var(--e),opacity .35s var(--e)}\n\n\/* \u2500\u2500 Arriba del todo, sin cristal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   Mientras no se ha bajado, la barra no pinta nada \u2014ni fondo, ni filo, ni\n   sombra\u2014 y la marca pasa al logo blanco. Al bajar de 20px entra el cristal.\n\n   Esto es lo normal. En las p\u00e1ginas que arrancan en blanco \u2014donde un men\u00fa\n   blanco sobre blanco no se ver\u00eda\u2014 se apaga poni\u00e9ndole al <header> la clase\n   nv--solido, y entonces el cristal est\u00e1 desde el principio. *\/\n.nv:not(.nv--solido):not(.baja) .nv__in{background:transparent;box-shadow:none;\n  backdrop-filter:none;-webkit-backdrop-filter:none}\n.nv:not(.nv--solido):not(.baja) .nv__logo{opacity:0}\n.nv:not(.nv--solido):not(.baja) .nv__logo--blanco{opacity:1}\n\/* La sombra del texto no es decoraci\u00f3n: es lo que salva la legibilidad cuando\n   detr\u00e1s cae una zona clara de la foto. *\/\n.nv:not(.nv--solido):not(.baja) .nv__link{color:#fff;text-shadow:0 1px 14px rgba(8,18,6,.5)}\n.nv:not(.nv--solido):not(.baja) .nv__link:hover,\n.nv:not(.nv--solido):not(.baja) .nv__it.abierto>.nv__link{background:rgba(255,255,255,.18);\n  color:#fff}\n.nv:not(.nv--solido):not(.baja) .nv__idioma{background:rgba(255,255,255,.14);\n  box-shadow:inset 0 0 0 1px rgba(255,255,255,.3)}\n.nv:not(.nv--solido):not(.baja) .nv__idioma a{color:rgba(255,255,255,.75)}\n.nv:not(.nv--solido):not(.baja) .nv__idioma a[aria-current]{background:rgba(255,255,255,.22);\n  color:#fff;box-shadow:none}\n.nv:not(.nv--solido):not(.baja) .nv__idioma a+a::before{background:rgba(255,255,255,.3)}\n\/* El bot\u00f3n, arriba del todo, tampoco es verde. Sobre una foto, un verde\n   macizo con su sombra verde debajo se lee como un anuncio pegado encima:\n   es la \u00fanica pieza que no acompa\u00f1aba al resto cuando la barra desaparece.\n   Aqu\u00ed pasa a ser el mismo cristal que el selector de idioma \u2014un plano de\n   blanco transl\u00facido con su filo\u2014 y recupera el verde al bajar, que es\n   cuando hay barra que lo sostenga. La transici\u00f3n ya estaba puesta en\n   .nv__cta, as\u00ed que el cambio de un estado a otro va suave.\n\n   Va con .nv__dcha delante a prop\u00f3sito: el bot\u00f3n del panel de m\u00f3vil se\n   llama igual y vive sobre fondo blanco. Sin ese acotado, al abrir la\n   hamburguesa arriba del todo saldr\u00eda blanco sobre blanco. *\/\n.nv:not(.nv--solido):not(.baja) .nv__dcha .nv__cta{background:rgba(255,255,255,.18);\n  color:#fff;text-shadow:0 1px 14px rgba(8,18,6,.5);\n  box-shadow:inset 0 0 0 1px rgba(255,255,255,.45)}\n.nv:not(.nv--solido):not(.baja) .nv__dcha .nv__cta:hover{background:rgba(255,255,255,.3);\n  box-shadow:inset 0 0 0 1px rgba(255,255,255,.65)}\n\n.nv:not(.nv--solido):not(.baja) .nv__ham{color:#fff}\n.nv:not(.nv--solido):not(.baja) .nv__ham:hover{background:rgba(255,255,255,.18)}\n\n\/* \u2500\u2500 Men\u00fa \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.nv__menu{display:flex;align-items:center;gap:4px;min-width:0;flex:none;\n  margin-left:auto}\n.nv__it{position:relative}\n.nv__link{display:inline-flex;align-items:center;gap:6px;height:44px;padding:0 16px;\n  border-radius:99px;font-size:15px;font-weight:500;color:var(--gray);\n  white-space:nowrap;cursor:pointer;background:transparent;border:0;font-family:inherit;\n  transition:background .25s var(--e),color .25s var(--e)}\n\/* Ni al pasar ni al pulsar se pinta nada de blanco: sobre un cristal, un\n   blanco s\u00f3lido tapa el cristal y la pieza deja de ser vidrio. En su lugar se\n   hunde \u2014un gris verdoso muy bajo, como una huella en el cristal\u2014 y el texto\n   se va al verde oscuro. *\/\n.nv__link:hover,.nv__link:focus-visible{background:rgba(16,33,12,.06);color:var(--gd)}\n.nv__link:focus-visible{outline:2px solid var(--g);outline-offset:2px}\n.nv__it.abierto > .nv__link{background:rgba(16,33,12,.09);color:var(--gd)}\n.nv__flecha{width:8px;height:8px;flex:none;margin-left:1px;\n  border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;\n  transform:translateY(-2px) rotate(45deg);transition:transform .3s var(--e)}\n.nv__it.abierto .nv__flecha{transform:translateY(1px) rotate(-135deg)}\n\n\/* \u2500\u2500 Desplegable \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.nv__caja{position:absolute;top:calc(100% + 10px);left:50%;translate:-50% 0;\n  min-width:252px;padding:10px;border-radius:20px;\n  background:linear-gradient(176deg,rgba(255,255,255,.95),rgba(255,255,255,.9));\n  backdrop-filter:saturate(1.9) blur(18px);\n  -webkit-backdrop-filter:saturate(1.9) blur(18px);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),\n             inset 0 0 0 1px rgba(255,255,255,.35),\n             0 0 0 1px rgba(76,76,76,.08), var(--amb);\n  opacity:0;visibility:hidden;transform:translateY(-8px) scale(.98);\n  transform-origin:center;\n  transition:opacity .28s var(--e),transform .34s var(--e-spr),visibility 0s linear .28s}\n.nv__it.abierto .nv__caja{opacity:1;visibility:visible;transform:none;transition-delay:0s}\n\/* Puente invisible: sin \u00e9l, el rat\u00f3n cruza los 12px de aire y el men\u00fa se cierra. *\/\n.nv__caja::before{content:\"\";position:absolute;left:0;right:0;top:-14px;height:14px}\n\/* Dos columnas cuando el desplegable agrupa dos cosas: \u00abSobre nosotros\u00bb se\n   queda con la empresa a la izquierda y las tres ciudades a la derecha. As\u00ed\n   la barra pierde una entrada y las ciudades siguen a un clic, que es lo que\n   importa: son p\u00e1ginas que se buscan por su nombre. *\/\n.nv__caja--doble{min-width:436px;display:grid;grid-template-columns:1fr 1fr;gap:8px}\n.nv__grupo h5{margin:0 0 4px;padding:9px 13px 5px;font-size:9.5px;font-weight:700;\n  letter-spacing:.18em;text-transform:uppercase;color:var(--light)}\n.nv__grupo+.nv__grupo{border-left:1px solid var(--bd);padding-left:8px}\n.nv__caja a{display:flex;align-items:center;gap:10px;padding:10px 13px;border-radius:12px;\n  font-size:13px;line-height:1.35;color:var(--body);\n  transition:background .2s var(--e),color .2s var(--e)}\n.nv__caja a:hover,.nv__caja a:focus-visible{background:rgba(16,33,12,.05);\n  color:var(--gd)}\n.nv__caja a::before{content:\"\";width:5px;height:5px;border-radius:50%;flex:none;\n  background:var(--bd);transition:background .2s var(--e),transform .3s var(--e-spr)}\n.nv__caja a:hover::before{background:var(--g);transform:scale(1.5)}\n\n\/* \u2500\u2500 Lo de la derecha \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.nv__dcha{display:flex;align-items:center;gap:clamp(8px,1vw,12px);flex:none}\n\/* El idioma se queda como estaba antes de la tanda de encoger: la p\u00edldora\n   con 3px de aire y el r\u00f3tulo a 12.5px. Por debajo de eso el ES\/EN se le\u00eda\n   como dos letras sueltas y dejaba de parecer un interruptor. *\/\n.nv__idioma{display:inline-flex;padding:4px;border-radius:99px;background:var(--off);\n  box-shadow:inset 0 0 0 1px var(--bd)}\n.nv__idioma a{padding:0 14px;height:36px;display:inline-flex;align-items:center;\n  border-radius:99px;font-size:13.5px;font-weight:600;color:var(--light);\n  transition:background .25s var(--e),color .25s var(--e)}\n.nv__idioma a[aria-current]{background:#fff;color:var(--gray);\n  box-shadow:0 1px 2px rgba(16,33,12,.12)}\n\/* El bot\u00f3n. Es el de la landing (.ln__btn) a escala de barra: el mismo verde\n   y la doble sombra \u2014una de contacto a 1px y otra larga y verde por debajo\u2014,\n   pero sin el disco del icono y con el texto en blanco.\n\n   AVISO de contraste: blanco sobre el 361 C da 2,81:1, por debajo del 4,5:1\n   que pide una letra de este cuerpo. La landing usa por eso el casi negro\n   #04220A, que da 7,1:1. Si el blanco se queda, lo suyo es bajar el fondo a\n   #2E7D1B, que con blanco da 5,4:1 y sigue siendo verde de la casa. *\/\n.nv__cta{display:inline-flex;align-items:center;height:44px;padding:0 22px;\n  border-radius:999px;background:var(--g);color:#fff;font-size:14.5px;\n  font-weight:600;letter-spacing:-.01em;white-space:nowrap;flex:none;\n  box-shadow:0 1px 2px rgba(19,99,0,.18), 0 10px 22px -14px rgba(19,99,0,.9);\n  transition:transform .5s cubic-bezier(.34,1.56,.64,1),background .45s var(--e),\n             box-shadow .45s var(--e)}\n.nv__cta:hover{background:var(--gd);\n  box-shadow:0 1px 2px rgba(19,99,0,.2), 0 14px 26px -14px rgba(19,99,0,.95)}\n.nv__cta:active{transform:scale(.975)}\n\n\/* \u2500\u2500 Hamburguesa y panel de m\u00f3vil \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.nv__ham{display:none}\n.nv__ham span{display:block;width:18px;height:1.8px;border-radius:2px;background:currentColor;\n  transition:transform .35s var(--e),opacity .25s var(--e)}\n.nv__ham span + span{margin-top:5px}\n.nv.panel .nv__ham span:nth-child(1){transform:translateY(6.8px) rotate(45deg)}\n.nv.panel .nv__ham span:nth-child(2){opacity:0}\n.nv.panel .nv__ham span:nth-child(3){transform:translateY(-6.8px) rotate(-45deg)}\n\n.nv__panel{display:none}\n\n@media(max-width:1040px){\n  .nv__in{width:calc(100% - 32px)}\n  .nv__menu,.nv__idioma{display:none}\n  \/* Con la barra a todo el ancho y el men\u00fa fuera, lo que queda \u2014hamburguesa\u2014\n     se pega a la derecha. Sin esto se quedaba junto al logo, porque el margen\n     autom\u00e1tico se quit\u00f3 cuando la p\u00edldora pas\u00f3 a medir su contenido. *\/\n  .nv__dcha{margin-left:auto}\n  .nv__ham{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;\n    background:transparent;border:0;cursor:pointer;color:var(--gray)}\n  .nv__ham:hover{background:rgba(16,33,12,.06)}\n\n  .nv__panel{display:block;position:fixed;left:16px;right:16px;z-index:59;\n    top:calc(14px + var(--alto-barra, 74px) + 10px);\n    max-height:calc(100dvh - 96px);overflow:auto;padding:12px;border-radius:26px;\n    background:rgba(255,255,255,.97);backdrop-filter:blur(18px);\n    box-shadow:0 0 0 1px var(--bd), 0 30px 60px -30px rgba(16,33,12,.5);\n    opacity:0;visibility:hidden;transform:translateY(-10px);\n    transition:opacity .3s var(--e),transform .38s var(--e-spr),visibility 0s linear .3s}\n  .nv.panel .nv__panel{opacity:1;visibility:visible;transform:none;transition-delay:0s}\n  .nv__panel details{border-bottom:1px solid var(--bd)}\n  .nv__panel details:last-of-type{border-bottom:0}\n  .nv__panel summary{list-style:none;cursor:pointer;display:flex;align-items:center;\n    justify-content:space-between;padding:15px 14px;font-size:16px;font-weight:600;\n    color:var(--gray)}\n  .nv__panel summary::-webkit-details-marker{display:none}\n  .nv__panel summary::after{content:\"\";width:9px;height:9px;\n    border-right:1.8px solid var(--light);border-bottom:1.8px solid var(--light);\n    transform:translateY(-2px) rotate(45deg);transition:transform .3s var(--e)}\n  .nv__panel details[open] summary::after{transform:translateY(2px) rotate(-135deg)}\n  .nv__panel details a{display:block;padding:11px 14px 11px 26px;font-size:15px;\n    color:var(--body)}\n  .nv__panel details a:active{background:var(--off);border-radius:12px}\n  .nv__panel > a{display:block;padding:15px 14px;font-size:16px;font-weight:600;\n    color:var(--gray);border-bottom:1px solid var(--bd)}\n  \/* En hamburguesa el bot\u00f3n sale de la barra: ah\u00ed arriba solo quedan la marca\n     y el men\u00fa, y el bot\u00f3n vive dentro del panel, que es donde se decide. *\/\n  .nv__dcha .nv__cta{display:none}\n  \/* Y en el panel va centrado y arriba del idioma: es la acci\u00f3n, no un pie. *\/\n  .nv__pie{display:flex;flex-direction:column-reverse;align-items:center;gap:14px;\n    padding:18px 14px 8px}\n  .nv__pie .nv__idioma{display:inline-flex}\n  .nv__cta--movil{display:inline-flex;align-self:center;margin:0;height:42px;\n    padding:0 26px;font-size:13.5px}\n  .nv__in{padding-left:16px}\n}\n@media(min-width:1041px){.nv__cta--movil{display:none}}\n\n@media (prefers-reduced-motion:reduce){\n  html{scroll-behavior:auto}\n  .nv__in,.nv__logo,.nv__caja,.nv__panel,.nv__cta,.nv__cta i,.nv__flecha,\n  .nv__ham span{transition:none}\n}\n\n<\/style>\n\n<header class=\"nv\" data-nv>\n  <div class=\"nv__in\">\n\n    <a class=\"nv__marca\" href=\"https:\/\/www.serviscomplet.com\/en\/\" aria-label=\"Servis \u00b7 home\">\n      <img decoding=\"async\" class=\"nv__logo\" alt=\"Servis\"\n           src=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/08\/LOGO-Servis-PhotoRoom.png-PhotoRoom-300x150.png\">\n      <img decoding=\"async\" class=\"nv__logo--blanco\" alt=\"\" aria-hidden=\"true\"\n           src=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/logo-servis-blanco-300x63.png\">\n    <\/a>\n\n    <nav class=\"nv__menu\" aria-label=\"Main\">\n      <div class=\"nv__it\" data-it>\n        <button class=\"nv__link\" aria-expanded=\"false\">Services<i class=\"nv__flecha\"><\/i><\/button>\n        <div class=\"nv__caja\">\n          <a href=\"https:\/\/www.serviscomplet.com\/en\/exhibition-stand-design\/\">Exhibition stand design<\/a>\n          <a href=\"https:\/\/www.serviscomplet.com\/en\/manufacturing-and-assembly-of-booths\/\">Manufacture and assembly of booths<\/a>\n          <a href=\"https:\/\/www.serviscomplet.com\/en\/the-ideal-partner-for-conference-organizers\/\">The ideal partner for conference organizers<\/a>\n          <a href=\"https:\/\/www.serviscomplet.com\/en\/boutique-online-servis\/\">Boutique online Servis<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"nv__it\" data-it>\n        <button class=\"nv__link\" aria-expanded=\"false\">About us<i class=\"nv__flecha\"><\/i><\/button>\n        <div class=\"nv__caja nv__caja--doble\">\n          <div class=\"nv__grupo\">\n            <h5>The company<\/h5>\n            <a href=\"https:\/\/www.serviscomplet.com\/en\/who-are-we-servis\/\">Who are we<\/a>\n            <a href=\"https:\/\/www.serviscomplet.com\/en\/servis-sustainability\/\">Servis Sustainability<\/a>\n          <\/div>\n          <div class=\"nv__grupo\">\n            <h5>Where we are<\/h5>\n            <a href=\"https:\/\/www.serviscomplet.com\/en\/trade-show-booths-barcelona\/\">Barcelona<\/a>\n            <a href=\"https:\/\/www.serviscomplet.com\/en\/stands-in-madrid\/\">Madrid<\/a>\n            <a href=\"https:\/\/www.serviscomplet.com\/en\/design-assembly-of-stands-in-zaragoza\/\">Zaragoza<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"nv__it\" data-it>\n        <button class=\"nv__link\" aria-expanded=\"false\">Resources<i class=\"nv__flecha\"><\/i><\/button>\n        <div class=\"nv__caja\">\n          <a href=\"https:\/\/www.serviscomplet.com\/en\/servis-blog\/\">Blog<\/a>\n          <a href=\"https:\/\/www.serviscomplet.com\/en\/trade-show-resources\/\">Downloads<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"nv__it\">\n        <a class=\"nv__link\" href=\"https:\/\/www.serviscomplet.com\/en\/projects\/\">Projects<\/a>\n      <\/div>\n      <div class=\"nv__it\">\n        <a class=\"nv__link\" href=\"https:\/\/www.serviscomplet.com\/en\/servis-contact\/\">Contact<\/a>\n      <\/div>\n    <\/nav>\n\n    <div class=\"nv__dcha\">\n      <a class=\"nv__cta\" href=\"https:\/\/www.serviscomplet.com\/en\/exhibition-stand-quote\/\">Get a stand<\/a>\n\n      <div class=\"nv__idioma\">\n        <a data-idioma=\"es\" href=\"https:\/\/www.serviscomplet.com\/\">ES<\/a>\n        <a data-idioma=\"en\" href=\"https:\/\/www.serviscomplet.com\/en\/\">EN<\/a>\n      <\/div>\n\n\n      <button class=\"nv__ham\" data-ham aria-expanded=\"false\" aria-label=\"Menu\">\n        <span><\/span><span><\/span><span><\/span>\n      <\/button>\n    <\/div>\n\n  <\/div>\n\n  <!-- Panel de m\u00f3vil. Con <details>: si el JS no llega, los desplegables se\n       abren igual porque es HTML. -->\n  <div class=\"nv__panel\" data-panel>\n    <details>\n      <summary>Services<\/summary>\n      <a href=\"https:\/\/www.serviscomplet.com\/en\/exhibition-stand-design\/\">Exhibition stand design<\/a>\n      <a href=\"https:\/\/www.serviscomplet.com\/en\/manufacturing-and-assembly-of-booths\/\">Manufacture and assembly of booths<\/a>\n      <a href=\"https:\/\/www.serviscomplet.com\/en\/the-ideal-partner-for-conference-organizers\/\">The ideal partner for conference organizers<\/a>\n      <a href=\"https:\/\/www.serviscomplet.com\/en\/boutique-online-servis\/\">Boutique online Servis<\/a>\n    <\/details>\n    <details>\n      <summary>About us<\/summary>\n      <a href=\"https:\/\/www.serviscomplet.com\/en\/who-are-we-servis\/\">Who are we<\/a>\n      <a href=\"https:\/\/www.serviscomplet.com\/en\/servis-sustainability\/\">Servis Sustainability<\/a>\n      <a href=\"https:\/\/www.serviscomplet.com\/en\/trade-show-booths-barcelona\/\">Barcelona<\/a>\n      <a href=\"https:\/\/www.serviscomplet.com\/en\/stands-in-madrid\/\">Madrid<\/a>\n      <a href=\"https:\/\/www.serviscomplet.com\/en\/design-assembly-of-stands-in-zaragoza\/\">Zaragoza<\/a>\n    <\/details>\n    <details>\n      <summary>Resources<\/summary>\n      <a href=\"https:\/\/www.serviscomplet.com\/en\/servis-blog\/\">Blog<\/a>\n      <a href=\"https:\/\/www.serviscomplet.com\/en\/trade-show-resources\/\">Downloads<\/a>\n    <\/details>\n    <a href=\"https:\/\/www.serviscomplet.com\/en\/projects\/\">Projects<\/a>\n    <a href=\"https:\/\/www.serviscomplet.com\/en\/servis-contact\/\">Contact<\/a>\n    <div class=\"nv__pie\">\n      <div class=\"nv__idioma\">\n        <a data-idioma=\"es\" href=\"https:\/\/www.serviscomplet.com\/\">ES<\/a>\n        <a data-idioma=\"en\" href=\"https:\/\/www.serviscomplet.com\/en\/\">EN<\/a>\n      <\/div>\n      <a class=\"nv__cta nv__cta--movil\" href=\"https:\/\/www.serviscomplet.com\/en\/exhibition-stand-quote\/\">Get a stand<\/a>\n    <\/div>\n  <\/div>\n<\/header>\n<\/template>\n\n<script>\n(function () {\n  'use strict';\n  var caja = document.querySelector('.servis-menu');\n  var molde = document.getElementById('servis-menu-molde');\n  if (!caja || !molde) return;\n\n  \/* LA SOMBRA. Aqu\u00ed est\u00e1 la diferencia con la versi\u00f3n anterior: el men\u00fa deja\n     de vivir en la p\u00e1gina y pasa a vivir en su propio \u00e1rbol. Dentro no entra\n     ni una regla del tema ni de Elementor \u2014ni las que ponen may\u00fasculas a los\n     enlaces, ni las que le dan alto m\u00ednimo a los botones, ni el\n     img{height:auto} que reventaba el logo\u2014, y lo de dentro tampoco sale.\n     Es lo que hace que se vea EXACTAMENTE igual que la muestra.\n\n     Si el navegador fuera tan viejo que no tuviera sombra, se inyecta tal\n     cual: se ver\u00e1 lo que el tema deje, pero se ver\u00e1. *\/\n  var raiz;\n  if (caja.attachShadow) {\n    raiz = caja.attachShadow({ mode: 'open' });\n    raiz.appendChild(molde.content.cloneNode(true));\n  } else {\n    caja.innerHTML = molde.innerHTML;\n    raiz = caja;\n  }\n  molde.remove();\n\n  var HOST = caja;\n  var RAIZ = raiz;\n\n  \/* \u2500\u2500 Encajar la barra con el ancho real de la pagina \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     La barra se sale del contenedor de Elementor para pintar de borde a\n     borde, y en CSS eso no sale bien (ver el comentario del :host). Medido\n     si: se anulan los margenes, se mira donde cae el borde izquierdo y se\n     tira de el hasta 0, con el ancho del documento \u2014clientWidth ya descuenta\n     la barra de scroll\u2014. Sin porcentajes y sin 100vw, que son las dos cosas\n     que fallaban: la barra salia 25px mas ancha que la pagina y 10px corrida\n     a la derecha, se comia el boton de la derecha y no cuadraba con el\n     contenido de debajo.\n\n     El orden importa: margin-inline a 0 PRIMERO, que es lo que devuelve el\n     borde izquierdo a su sitio, y solo entonces se mide. Asi la funcion se\n     puede llamar las veces que haga falta.\n\n     Si esto no llegara a correr, manda el CSS del :host y la barra se ve\n     igual que antes: descuadrada, pero se ve. *\/\n  function encajar() {\n    HOST.style.marginInline = '0px';\n    HOST.style.maxWidth = 'none';\n    HOST.style.width = document.documentElement.clientWidth + 'px';\n    HOST.style.marginLeft = (-HOST.getBoundingClientRect().left) + 'px';\n  }\n  encajar();\n  addEventListener('resize', encajar, { passive: true });\n  addEventListener('load', encajar);\n\n(function () {\n  'use strict';\n  var nv = RAIZ.querySelector('[data-nv]');\n  if (!nv) return;\n\n  \/* \u2500\u2500 \u00bfHay algo detr\u00e1s que aguante una barra transparente? \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     Arriba del todo la barra no pinta fondo y el texto sale en blanco. Eso\n     solo funciona si detr\u00e1s hay una foto o un fondo oscuro. Sobre una p\u00e1gina\n     que empieza en blanco es texto blanco sobre blanco, y el halo que llevan\n     las letras para poder leerse sobre una imagen se ve como una mancha gris.\n\n     Con una sola cabecera para todo el sitio no se puede decidir a mano\n     p\u00e1gina por p\u00e1gina, as\u00ed que se mira: se coge lo que hay justo debajo de la\n     barra y se sube por sus padres hasta encontrar qui\u00e9n pinta el fondo. Si\n     es una imagen, o un color oscuro, se queda transparente. Si no, se pone\n     el cristal desde el principio.\n\n     Para forzarlo a mano est\u00e1 la l\u00ednea SERVIS_MENU_FONDO que va justo encima\n     del men\u00fa: 'auto' lo decide solo, 'claro' es siempre transparente y\n     'solido' es siempre cristal. *\/\n  var decideFondo = function () {\n    \/* El interruptor manda sobre todo lo dem\u00e1s. Est\u00e1 declarado justo encima\n       del men\u00fa, en una l\u00ednea suelta, para poder cambiarlo sin tocar nada. *\/\n    var modo = window.SERVIS_MENU_FONDO || 'auto';\n    if (modo === 'claro')  { nv.classList.remove('nv--solido'); marca('forzado-claro'); return; }\n    if (modo === 'solido') { nv.classList.add('nv--solido');    marca('forzado-solido'); return; }\n\n    \/* Medir solo estando arriba del todo: m\u00e1s abajo, lo que hay detr\u00e1s de la\n       barra ya no es la portada. *\/\n    if (window.scrollY > 5) return;\n\n    \/* EL BLOQUE DE CABECERA. Aqu\u00ed estaba el fallo: en Elementor la barra va\n       dentro de un widget, dentro de un contenedor, dentro de la plantilla de\n       cabecera, y todos ellos ocupan alto. Midiendo justo debajo de la p\u00edldora\n       el punto ca\u00eda DENTRO de la propia cabecera, y de ah\u00ed para arriba solo se\n       encuentran contenedores transparentes hasta el <body>, que es blanco.\n       Por eso sal\u00eda siempre el cristal, hubiera foto o no.\n\n       Se sube hasta el ancestro m\u00e1s externo que siga pegado al borde de\n       arriba: ese es todo el bloque de cabecera, y se mide por debajo de \u00e9l. *\/\n    var bloque = HOST, sube = HOST.parentElement;\n    while (sube && sube !== document.body && sube !== document.documentElement) {\n      var c = sube.getBoundingClientRect();\n      \/* Pegado arriba y con pinta de cabecera. El tope de altura es lo que\n         impide subir hasta el <div> que envuelve la p\u00e1gina entera: ese\n         tambi\u00e9n empieza en cero, y midiendo por debajo de \u00e9l el punto caer\u00eda\n         al final del documento, fuera de la pantalla, y no se leer\u00eda nada. *\/\n      if (c.top <= 2 && c.height < innerHeight * 0.4) bloque = sube;\n      sube = sube.parentElement;\n    }\n\n    var y = Math.min(Math.round(bloque.getBoundingClientRect().bottom + 12),\n                     innerHeight - 4);\n    var x = Math.round(innerWidth \/ 2);\n\n    \/* elementsFromPoint devuelve TODA la pila de ese punto, no solo lo de\n       arriba. Hace falta porque encima de la portada suele haber un velo, y\n       con elementFromPoint a secas se le\u00eda el velo y se paraba ah\u00ed. *\/\n    var pila = document.elementsFromPoint\n      ? document.elementsFromPoint(x, y)\n      : [document.elementFromPoint(x, y)];\n\n    var veredicto = null;\n    for (var i = 0; i < pila.length && !veredicto; i++) {\n      var el = pila[i];\n      if (!el || bloque.contains(el)) continue;\n      veredicto = mira(el);\n    }\n\n    \/* Si el punto no dio nada \u2014una portada que empieza m\u00e1s abajo, un hueco\u2014,\n       se pregunta al DOM: lo que viene justo despu\u00e9s de la cabecera. *\/\n    if (!veredicto) {\n      var sig = bloque.nextElementSibling;\n      for (var n = 0; n < 3 && sig && !veredicto; n++) {\n        veredicto = mira(sig) || (sig.firstElementChild ? mira(sig.firstElementChild) : null);\n        sig = sig.firstElementChild;\n      }\n    }\n\n    nv.classList.toggle('nv--solido', veredicto !== 'foto' && veredicto !== 'oscuro');\n    marca(veredicto || 'nada');\n  };\n\n  \/* Mira un elemento y sus padres hasta dar con quien pinta el fondo de\n     verdad. Devuelve qu\u00e9 encontr\u00f3, o null si nadie de esa rama pinta nada. *\/\n  function mira(el) {\n    while (el && el !== document.documentElement) {\n      \/* Una foto puesta como <img> no tiene background-image: es la imagen.\n         Sin esto, una portada hecha con <img> \u2014que es lo normal\u2014 se leer\u00eda\n         como fondo blanco y saldr\u00eda el cristal justo donde no toca. *\/\n      if (\/^(IMG|PICTURE|VIDEO|CANVAS|SVG|IFRAME)$\/.test(el.tagName)) return 'foto';\n\n      var e = getComputedStyle(el);\n      if (e.backgroundImage && e.backgroundImage !== 'none') return 'foto';\n\n      var c = (e.backgroundColor || '').match(\/[\\d.]+\/g);\n      \/* El cuarto n\u00famero es la opacidad: si es baja, ese elemento no tapa y\n         hay que seguir subiendo. Sin esto, el primer <div> transparente\n         contar\u00eda como blanco. *\/\n      if (c && c.length >= 3 && (c.length < 4 || Number(c[3]) > 0.5)) {\n        \/* Luminancia a ojo, la f\u00f3rmula de siempre. Por debajo de la mitad, el\n           blanco se lee encima. *\/\n        return (0.299 * c[0] + 0.587 * c[1] + 0.114 * c[2]) \/ 255 < 0.5\n          ? 'oscuro' : 'claro';\n      }\n      el = el.parentElement;\n    }\n    return null;\n  }\n\n  \/* Deja escrito en el <header> por qu\u00e9 decidi\u00f3 lo que decidi\u00f3. No pinta\n     nada; sirve para poder preguntarlo desde el inspector cuando la barra\n     no hace lo que se espera. *\/\n  function marca(que) { nv.setAttribute('data-nv-fondo', que); }\n\n  \/* \u2500\u2500 La p\u00edldora se aprieta al bajar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     De paso publica su alto en una variable: el panel de m\u00f3vil cuelga de ah\u00ed\n     y as\u00ed no hay que repetir el n\u00famero en el CSS ni recordarlo si cambia. *\/\n  var pildora = nv.querySelector('.nv__in');\n  var baja = function () {\n    nv.classList.toggle('baja', window.scrollY > 20);\n    nv.style.setProperty('--alto-barra',\n                         Math.round(pildora.getBoundingClientRect().height) + 'px');\n  };\n\n  \/* \u2500\u2500 Desplegables \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     Con rat\u00f3n se abren al pasar por encima; con teclado y con dedo, al pulsar.\n     Un solo abierto a la vez. *\/\n  var items = [].slice.call(nv.querySelectorAll('[data-it]'));\n  var cerrarTodos = function (menos) {\n    items.forEach(function (it) {\n      if (it === menos) return;\n      it.classList.remove('abierto');\n      var b = it.querySelector('.nv__link');\n      if (b.tagName === 'BUTTON') b.setAttribute('aria-expanded', 'false');\n    });\n  };\n\n  items.forEach(function (it) {\n    var boton = it.querySelector('.nv__link');\n    var abrir = function (si) {\n      it.classList.toggle('abierto', si);\n      boton.setAttribute('aria-expanded', String(si));\n      if (si) cerrarTodos(it);\n    };\n    it.addEventListener('mouseenter', function () {\n      if (matchMedia('(hover:hover)').matches) abrir(true);\n    });\n    it.addEventListener('mouseleave', function () {\n      if (matchMedia('(hover:hover)').matches) abrir(false);\n    });\n    boton.addEventListener('click', function (e) {\n      e.preventDefault();\n      abrir(!it.classList.contains('abierto'));\n    });\n    it.addEventListener('focusout', function (e) {\n      if (!it.contains(e.relatedTarget)) abrir(false);\n    });\n  });\n\n  decideFondo();\n  baja();\n  addEventListener('scroll', baja, { passive: true });\n  addEventListener('resize', function () { baja(); decideFondo(); }, { passive: true });\n  \/* Y otra vez al terminar de cargar: hay temas que pintan el fondo de la\n     primera secci\u00f3n desde una hoja que llega despu\u00e9s de este script, y con la\n     primera lectura saldr\u00eda el cristal donde tocaba transparente. *\/\n  addEventListener('load', function () {\n    decideFondo();\n    setTimeout(decideFondo, 600);\n  });\n\n  \/* \u2500\u2500 El ES\/EN, con WPML \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     WPML deja en el <head> de cada p\u00e1gina un <link rel=\"alternate\" hreflang>\n     con la direcci\u00f3n de su traducci\u00f3n \u2014comprobado: en \/stands-en-madrid\/\n     apunta a \/en\/stands-in-madrid\/, y en \/gracias-presupuesto\/ a\n     \/en\/thanks-quote\/\u2014. De ah\u00ed salen los dos enlaces, as\u00ed que cambiar de\n     idioma lleva a la MISMA p\u00e1gina y no a la portada.\n\n     El idioma en curso sale de <html lang>, que WPML tambi\u00e9n rellena. Sin\n     esto, el ES saldr\u00eda marcado como actual incluso en las p\u00e1ginas inglesas.\n\n     Si una p\u00e1gina no est\u00e1 traducida no hay \u00abalternate\u00bb: entonces el enlace se\n     queda como est\u00e1 en el HTML, que es la portada de ese idioma. *\/\n  var actual = (document.documentElement.lang || 'es').slice(0, 2).toLowerCase();\n  [].slice.call(nv.querySelectorAll('[data-idioma]')).forEach(function (a) {\n    var codigo = a.dataset.idioma;\n    var alt = document.querySelector(\n      'link[rel=\"alternate\"][hreflang=\"' + codigo + '\"],' +\n      'link[rel=\"alternate\"][hreflang^=\"' + codigo + '-\"]');\n    if (alt && alt.href) a.href = alt.href;\n    if (codigo === actual) a.setAttribute('aria-current', 'true');\n    else a.removeAttribute('aria-current');\n  });\n\n  \/* \u2500\u2500 Hamburguesa \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  var ham = nv.querySelector('[data-ham]');\n  ham.addEventListener('click', function () {\n    var si = !nv.classList.contains('panel');\n    nv.classList.toggle('panel', si);\n    ham.setAttribute('aria-expanded', String(si));\n  });\n\n  \/* \u2500\u2500 Escape y clic fuera \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  addEventListener('keydown', function (e) {\n    if (e.key !== 'Escape') return;\n    cerrarTodos(null);\n    nv.classList.remove('panel');\n    ham.setAttribute('aria-expanded', 'false');\n  });\n  addEventListener('click', function (e) {\n    if (e.composedPath ? e.composedPath().indexOf(nv) >= 0 : HOST.contains(e.target)) return;\n    cerrarTodos(null);\n    nv.classList.remove('panel');\n    ham.setAttribute('aria-expanded', 'false');\n  });\n})();\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-59f1735 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"59f1735\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2188a90 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"2188a90\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n     SERVIS \u00b7 P\u00c1GINA DE GRACIAS \u2014 PROPUESTA \u00b7 INGL\u00c9S\r\n     Destino: \/en\/thank-you-very-much\/\r\n     ESTE ES EL FICHERO INGL\u00c9S. Si lo pegas en \/muchas-gracias\/, esa\r\n     p\u00e1gina saldr\u00e1 en ingl\u00e9s y la inglesa se quedar\u00e1 sin traducir.\r\n     Para \/muchas-gracias\/ usa servis-typ-propuesta-EMBED.html.\r\n\r\n     GENERADO AUTOM\u00c1TICAMENTE por construir-typ.py. No editar aqu\u00ed: los\r\n     cambios van a esa plantilla y se vuelve a lanzar el script, o las dos\r\n     p\u00e1ginas se desincronizan.\r\n\r\n     C\u00d3MO SE PEGA \u2014 igual que la landing:\r\n       1. Plantilla \u00abElemental lienzo\u00bb (Elementor Canvas).\r\n       2. Un solo widget HTML. Se sale sola del contenedor, no hay que\r\n          configurar ancho completo.\r\n       3. Pega todo este archivo.\r\n\r\n     La p\u00e1gina va con noindex: es una URL de conversi\u00f3n, no de captaci\u00f3n.\r\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n\r\n<div class=\"tg\" lang=\"en\">\r\n<style>\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   Mismos tokens que la landing (.ln): misma paleta, mismas curvas, mismo\r\n   revelado, mismo ancho. Lo \u00fanico que cambia es el ritmo vertical: la landing\r\n   respira a clamp(120px,16vh,200px) porque tiene diez secciones largas; aqu\u00ed\r\n   son seis y cortas, y con ese aire la p\u00e1gina se le\u00eda como un p\u00e1ramo.\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n.tg{--g:#43B02A;          \/* verde de Servis \u00b7 Pantone 361 C *\/\r\n  --gd:#2E7D1B;           \/* el mismo, oscurecido, para TEXTO peque\u00f1o *\/\r\n  --gl:#BEE0B8;\r\n  --gray:#6c6c6c;         \/* TITULARES \u00b7 la firma de la casa, no es casi negro *\/\r\n  --body:#4C4C4C;         \/* texto corrido *\/\r\n  --light:#999;\r\n  --off:#F5F7F4;          \/* fondo alterno *\/\r\n  --bd:#E0E8DC;           \/* l\u00edneas *\/\r\n  --dark:#0E1A0C;         \/* la franja de cumbres, como la escena de la landing *\/\r\n  --e:cubic-bezier(.23,1,.32,1);\r\n  --e-spr:cubic-bezier(.16,1,.3,1);\r\n  --e-mass:cubic-bezier(.34,1.56,.64,1);\r\n  --w:1200px;\r\n  --sec:clamp(76px,10vh,124px);\r\n  --hueco:clamp(12px,1.5vw,20px);\r\n  --amb:0 2px 4px -2px rgba(16,33,12,.05), 0 18px 40px -24px rgba(16,33,12,.16);\r\n  font-family:'Poppins',system-ui,sans-serif;font-size:16px;line-height:1.6;\r\n  color:var(--body);text-align:left;letter-spacing:normal;text-transform:none;\r\n  background:#fff}\r\n\r\n\/* Se sale del contenedor de Elementor sin tocar ajustes del widget.\r\n\r\n   Si, 100vw cuenta tambien el ancho de la barra de desplazamiento vertical y\r\n   el bloque queda ~15px mas ancho que el hueco real. Se deja asi A PROPOSITO:\r\n   el sobrante lo recorta el body de aqui abajo y en pantalla no se nota,\r\n   porque lo que sobra cae justo debajo de la barra de scroll.\r\n\r\n   Se probo a medir la barra en el navegador y restarla con una propiedad\r\n   propia. Cuadraba al pixel, pero la medida solo vale DESPUES de que la\r\n   pagina tenga alto: al correr el script durante el analisis todavia no hay\r\n   barra, sale 0, y en \u00abload\u00bb el bloque encogia de 1440 a 1425 a la vista. Se\r\n   veia dar un salto y quedarse mas pequenio. Un desajuste que nadie ve es\r\n   mejor que un salto que se ve, asi que el ancho no se toca: se toca solo el\r\n   overflow. *\/\r\n.tg.tg{width:100vw;max-width:100vw;margin-inline:calc(50% - 50vw);overflow-x:clip}\r\n\/* Red de seguridad, no el arreglo, y SOLO en body. Nunca en html.\r\n\r\n   El sitio trae de serie un \u00abbody{overflow-y:auto;overflow-x:hidden!important}\u00bb\r\n   (sale de wp-content\/uploads\/elementor\/css\/post-23764.css, el CSS propio de\r\n   una plantilla de Elementor). Mientras html se quede en \u00abvisible\u00bb, ese valor\r\n   de body SUBE al viewport y body se comporta como si no tuviera overflow: una\r\n   sola barra, la de la p\u00e1gina. En cuanto se le pone algo a html \u2014aunque sea\r\n   este clip\u2014 la subida deja de ocurrir, body se queda con su overflow-y:auto\r\n   puesto y se convierte en contenedor de scroll de verdad: aparece una SEGUNDA\r\n   barra vertical pegada a la primera. Medido: html.clientWidth 1425 contra\r\n   body.clientWidth 1409, esos 16px son la barra de m\u00e1s.\r\n\r\n   Con \u00abclip\u00bb y no con \u00abhidden\u00bb: hidden convertir\u00eda el documento en contenedor\r\n   de scroll y la barra del logo dejar\u00eda de quedarse pegada arriba. *\/\r\nbody:has(.tg){overflow-x:clip}\r\n.tg *,.tg *::before,.tg *::after{box-sizing:border-box}\r\n:where(.tg) :where(h1,h2,h3,p,ul,li,figure){margin:0;padding:0;font:inherit;\r\n  color:inherit;letter-spacing:inherit;text-transform:none;text-align:inherit}\r\n:where(.tg) :where(ul){list-style:none}\r\n:where(.tg) :where(a){text-decoration:none;color:inherit;box-shadow:none;border:0}\r\n:where(.tg) :where(img){max-width:100%;display:block;border:0;border-radius:0}\r\n.elementor-widget-html:has(> .tg){padding:0}\r\n\r\n.tg__wrap{max-width:var(--w);margin:0 auto;padding:0 clamp(28px,4vw,52px)}\r\n.tg__sec{padding:var(--sec) 0}\r\n.tg__sec--off{background:var(--off)}\r\n\r\n\/* Titular y antet\u00edtulo: los mismos de la landing (.ln__h, .ln__certc b). *\/\r\n.tg__h{font-size:clamp(30px,4vw,46px);font-weight:700;letter-spacing:-.04em;\r\n  line-height:1.04;color:var(--gray);margin:0 0 18px;text-wrap:balance}\r\n.tg__p{font-size:clamp(15.5px,1.7vw,18px);line-height:1.65;color:var(--body);\r\n  margin:0;max-width:58ch;text-wrap:pretty}\r\n\/* Los antet\u00edtulos en verde salieron de la maqueta: cada secci\u00f3n empieza\r\n   directamente por su titular. Con cinco de ellos (\u00abQU\u00c9 PASA AHORA\u00bb,\r\n   \u00abREFERENCIAS\u00bb\u2026) la p\u00e1gina se le\u00eda como un \u00edndice, y ninguno dec\u00eda nada que\r\n   el titular de debajo no dijera ya. *\/\r\n.tg__head{margin-bottom:clamp(34px,4.6vw,58px)}\r\n.tg__head--c{text-align:center}\r\n.tg__head--c .tg__h{margin-inline:auto}\r\n\r\n\/* Revelado \u00b7 mejora progresiva: el contenido nunca depende del JS. *\/\r\n\/* Lo que se mueve, se para cuando no se ve. El mosaico de la portada y la\r\n   cinta de stands son animaciones infinitas: si siguen corriendo con la\r\n   p\u00e1gina bajada, el navegador sigue componiendo fotogramas de algo que no\r\n   mira nadie. En un port\u00e1til se traduce en ventilador, y en un m\u00f3vil en\r\n   bater\u00eda. La clase la pone el JS al salir de pantalla. *\/\r\n.tg-fuera .tg__cintain,.tg-fuera .tg__pista{animation-play-state:paused}\r\n\r\n.tg .rv{transition:opacity .7s var(--e),transform .7s var(--e-spr),filter .7s var(--e);\r\n  transition-delay:calc(var(--i,0) * 80ms)}\r\n.tg.js-rv .rv{opacity:0;transform:translateY(16px);filter:blur(6px)}\r\n.tg.js-rv .rv.is-in{opacity:1;transform:none;filter:blur(0)}\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   PORTADA \u00b7 el mosaico de la landing, a cara descubierta\r\n   Es la misma pieza y las mismas doce fotos, a prop\u00f3sito: quien acaba de\r\n   convertir reconoce las im\u00e1genes y la p\u00e1gina se lee como continuaci\u00f3n, no\r\n   como un salto a otra web.\r\n\r\n   Antes el mosaico iba desenfocado, en gris y bajo un velo casi opaco: se\r\n   ve\u00eda el movimiento y poco m\u00e1s. Ahora se ve entero \u2014fotos en color, sin\r\n   recorte por los bordes y en cuatro columnas anchas en vez de seis\r\n   estrechas\u2014 y el texto se lee porque va sobre un cristal, el mismo recurso\r\n   de la barra flotante de la landing. La legibilidad la resuelve el panel,\r\n   no el velo: as\u00ed las fotos pueden estar casi limpias.\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n.tg__port{position:relative;min-height:min(760px,92vh);display:grid;\r\n  place-items:center;overflow:hidden;background:#fff}\r\n\/* La cabecera la pone la plantilla del sitio, no esta p\u00e1gina. Si esa cabecera\r\n   va superpuesta \u2014transparente sobre la foto\u2014, la portada tiene que empezar\r\n   por debajo de ella: se le quita el comentario a esta l\u00ednea y se ajusta el\r\n   n\u00famero al alto real de la barra. *\/\r\n\/* .tg__port{margin-top:-68px} *\/\r\n\/* inset:0 y sin escala: el mosaico empieza y acaba donde acaba la secci\u00f3n, as\u00ed\r\n   que no se corta ninguna columna por los lados.\r\n\r\n   Y por abajo se disuelve en vez de cortarse: la m\u00e1scara lo apaga en el\r\n   \u00faltimo tercio. El corte a media foto era lo que delataba que la secci\u00f3n\r\n   acababa ah\u00ed; con el degradado la portada entra en la siguiente secci\u00f3n sin\r\n   filo. La secci\u00f3n va en blanco, no en --off, para que el final del degradado\r\n   y el fondo de lo que viene despu\u00e9s sean el mismo color. *\/\r\n.tg__fondo{position:absolute;inset:0;z-index:0;display:grid;gap:var(--hueco);\r\n  padding:var(--hueco);grid-template-columns:repeat(2,1fr);\r\n  filter:grayscale(.08);opacity:.94;\r\n  -webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 58%,transparent 96%);\r\n  mask-image:linear-gradient(to bottom,#000 0%,#000 58%,transparent 96%)}\r\n@media(min-width:700px) {.tg__fondo{grid-template-columns:repeat(3,1fr)}}\r\n@media(min-width:1100px){.tg__fondo{grid-template-columns:repeat(4,1fr)}}\r\n@media(min-width:1700px){.tg__fondo{grid-template-columns:repeat(5,1fr)}}\r\n.tg__col{position:relative;overflow:hidden}\r\n.tg__pista{display:grid;gap:var(--hueco);padding-bottom:var(--hueco);will-change:transform}\r\n.tg__pista img{width:100%;aspect-ratio:4\/3;object-fit:cover;border-radius:16px}\r\n@keyframes tg-sube{from{transform:translateY(0)}    to{transform:translateY(-50%)}}\r\n@keyframes tg-baja{from{transform:translateY(-50%)} to{transform:translateY(0)}}\r\n.tg__col:nth-child(odd)  .tg__pista{animation:tg-sube var(--t,150s) linear infinite}\r\n.tg__col:nth-child(even) .tg__pista{animation:tg-baja var(--t,150s) linear infinite}\r\n\/* Velo: ya no tapa, solo calma. Un blanco muy bajo para que las fotos de los\r\n   bordes no compitan con el panel del centro. *\/\r\n.tg__velo{position:absolute;inset:0;z-index:1;\r\n  background:radial-gradient(120% 90% at 50% 45%,\r\n    rgba(255,255,255,.30) 0%, rgba(255,255,255,.16) 45%,\r\n    rgba(255,255,255,0) 100%)}\r\n\r\n\/* El margen lateral va aqu\u00ed y no se hereda de .tg__wrap: este padding en\r\n   atajo lo pisaba \u2014misma especificidad, y va despu\u00e9s\u2014, y en m\u00f3vil el cristal\r\n   llegaba de canto a canto con las esquinas redondeadas cortadas. *\/\r\n.tg__msg{position:relative;z-index:2;text-align:center;\r\n  padding:118px clamp(20px,4vw,52px) 60px}\r\n\/* El cristal. Mismo recurso que la barra, llevado m\u00e1s lejos: blanco al 66% y\r\n   28px de desenfoque. Lo que sostiene el contraste del titular ya no es la\r\n   opacidad, es el desenfoque: aplana el contenido de detr\u00e1s y deja una base\r\n   uniforme, as\u00ed que se puede bajar el blanco sin perder legibilidad. Debajo\r\n   de ~.62 el titular en --gray empieza a pelearse con las fotos de mucho\r\n   contraste; ese es el suelo. *\/\r\n.tg__panel{max-width:720px;margin-inline:auto;border-radius:36px;\r\n  padding:clamp(34px,4.4vw,58px) clamp(24px,3.6vw,56px);\r\n  background:rgba(255,255,255,.66);backdrop-filter:saturate(1.6) blur(28px);\r\n  box-shadow:0 0 0 1px rgba(255,255,255,.55), 0 34px 80px -46px rgba(16,33,12,.5)}\r\n\/* Sin backdrop-filter (Firefox con la opci\u00f3n desactivada, navegadores viejos)\r\n   el blanco al 66% no basta: se sube al 88% solo en ese caso. *\/\r\n@supports not ((backdrop-filter:blur(2px)) or (-webkit-backdrop-filter:blur(2px))){\r\n  .tg__panel{background:rgba(255,255,255,.88)}\r\n}\r\n.tg__tic{width:58px;height:58px;border-radius:50%;background:var(--g);margin:0 auto 30px;\r\n  display:grid;place-items:center;box-shadow:0 12px 34px -14px rgba(19,99,0,.75);\r\n  animation:tg-tic .55s var(--e-mass) both}\r\n.tg__tic svg{width:27px;height:27px;stroke:#fff;fill:none;stroke-width:2.8;\r\n  stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:32;stroke-dashoffset:32;\r\n  animation:tg-traza .5s var(--e) .3s forwards}\r\n@keyframes tg-tic{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:none}}\r\n@keyframes tg-traza{to{stroke-dashoffset:0}}\r\n\/* Mismo cuerpo y mismo interletrado que los titulares de la landing. *\/\r\n.tg__h1{font-size:clamp(34px,5.6vw,68px);font-weight:700;letter-spacing:-.045em;\r\n  line-height:1.02;color:var(--gray);margin:0 0 22px;\r\n  animation:tg-sube-txt .8s var(--e) .1s both}\r\n.tg__sub{font-size:clamp(16px,1.8vw,19.5px);line-height:1.6;color:var(--body);\r\n  max-width:52ch;margin:0 auto;animation:tg-sube-txt .8s var(--e) .25s both}\r\n.tg__sub b{font-weight:600;color:var(--gd)}\r\n@keyframes tg-sube-txt{from{opacity:0;transform:translateY(18px);filter:blur(6px)}\r\n  to{opacity:1;transform:none;filter:blur(0)}}\r\n\/* Reclamo de bajada: una p\u00e1gina de gracias que no invita a seguir se cierra\r\n   en el primer pantallazo, y todo lo que tranquiliza est\u00e1 m\u00e1s abajo. *\/\r\n.tg__baja{display:inline-flex;align-items:center;gap:10px;margin-top:40px;\r\n  height:44px;padding:0 8px 0 22px;border-radius:999px;background:rgba(255,255,255,.75);\r\n  box-shadow:0 0 0 1px var(--bd);font-size:13.5px;font-weight:500;color:var(--gray);\r\n  animation:tg-sube-txt .8s var(--e) .45s both;\r\n  transition:box-shadow .3s var(--e),transform .3s var(--e)}\r\n.tg__baja:hover{box-shadow:0 0 0 1px var(--gl);transform:translateY(2px)}\r\n.tg__baja i{flex:none;width:28px;height:28px;border-radius:50%;background:var(--off);\r\n  display:grid;place-items:center}\r\n.tg__baja svg{width:14px;height:14px;stroke:var(--g);fill:none;stroke-width:2;\r\n  stroke-linecap:round;stroke-linejoin:round}\r\n\r\n\/* \u2500\u2500 Qu\u00e9 pasa ahora \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   El recorrido de la landing (.ln__ruta): hito, l\u00ednea y texto. Se reutiliza\r\n   tal cual porque es la pieza con la que ya han le\u00eddo el proceso quince\r\n   segundos antes, en el formulario. *\/\r\n.tg__ruta{display:grid}\r\n.tg__ruta li{position:relative;padding:0 0 clamp(26px,3vw,34px) 34px}\r\n.tg__ruta li:last-child{padding-bottom:0}\r\n.tg__ruta li::before{content:\"\";position:absolute;left:0;top:5px;z-index:2;\r\n  width:15px;height:15px;border-radius:50%;background:var(--g);\r\n  box-shadow:0 0 0 4px #fff}\r\n.tg__ruta li::after{content:\"\";position:absolute;left:7px;top:14px;width:1px;height:100%;\r\n  background:var(--bd)}\r\n.tg__ruta li:last-child::after{display:none}\r\n.tg__txt b{display:block;font-size:clamp(17px,1.9vw,21px);font-weight:700;\r\n  letter-spacing:-.035em;color:var(--gray);margin-bottom:7px;line-height:1.2}\r\n.tg__txt span{display:block;font-size:15px;line-height:1.65;color:var(--body);\r\n  max-width:52ch}\r\n\r\n\r\n\r\n\r\n\/* Bot\u00f3n con icono anidado \u00b7 el de la landing (.ln__btn). Texto en el casi\r\n   negro de la casa sobre el 361 C: 7,1:1. *\/\r\n.tg__btn{display:inline-flex;align-items:center;gap:14px;padding:0 8px 0 26px;height:56px;\r\n  border-radius:999px;background:var(--g);color:#04220A;font-size:15.5px;font-weight:600;\r\n  white-space:nowrap;box-shadow:0 14px 30px -18px rgba(19,99,0,.9);\r\n  transition:background .4s var(--e),transform .4s var(--e),box-shadow .4s var(--e)}\r\n.tg__btn:hover{background:var(--gd);color:#fff;transform:translateY(-2px);\r\n  box-shadow:0 18px 34px -18px rgba(19,99,0,.95)}\r\n.tg__btn:active{transform:scale(.978)}\r\n.tg__btn i{flex:none;width:38px;height:38px;border-radius:50%;background:rgba(4,34,10,.12);\r\n  display:grid;place-items:center;transition:transform .4s var(--e),background .4s var(--e)}\r\n.tg__btn:hover i{transform:translate(3px,-1px) scale(1.06);background:rgba(4,34,10,.19)}\r\n.tg__btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}\r\n.tg__btn:focus-visible{outline:2px solid var(--gd);outline-offset:3px}\r\n\/* Variante de l\u00ednea, para la acci\u00f3n secundaria. En la p\u00e1gina ya hay dos\r\n   botones verdes \u2014la v\u00eda cruzada y el tel\u00e9fono\u2014; un tercero en verde los\r\n   pondr\u00eda a competir y ninguno ser\u00eda \u00abel\u00bb bot\u00f3n. *\/\r\n.tg__btn--linea{background:#fff;color:var(--gray);\r\n  box-shadow:0 0 0 1px var(--bd), 0 10px 26px -20px rgba(76,76,76,.6)}\r\n.tg__btn--linea:hover{background:#fff;color:var(--gd);\r\n  box-shadow:0 0 0 1px var(--gl), 0 14px 28px -20px rgba(19,99,0,.5)}\r\n.tg__btn--linea i{background:var(--off)}\r\n.tg__btn--linea:hover i{background:var(--tint,#F3F9F1)}\r\n.tg__btn--linea svg{stroke:var(--g)}\r\n.tg__centro{margin-top:clamp(30px,3.6vw,46px);text-align:center}\r\n\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   REFERENCIAS \u00b7 dos bloques con dos efectos\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n\r\n\/* \u2500\u2500 Cinta de stands \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   La marquesina de logos de la landing, con fotos en vez de logos: la pista\r\n   se duplica y se traslada un -50%, as\u00ed que el bucle no tiene salto.\r\n\r\n   Una sola fila y las fotos grandes \u2014hasta 440px de alto, en 3\/2 y a sangre,\r\n   sin la caja de 1200px\u2014: caben dos y media en pantalla, que es lo que hace\r\n   que cada una se lea como una foto y no como un icono.\r\n\r\n   930s para las cuarenta y una: la media vuelta son 27.962px, as\u00ed que van a\r\n   unos 30px por segundo. La duraci\u00f3n se calcula midiendo la pista, no a ojo;\r\n   cuando se pas\u00f3 de doce fotos a cuarenta y una sin tocarla, la cinta se puso\r\n   a 144px por segundo y no daba tiempo a ver nada.\r\n\r\n   El hueco va en margin y no en gap: con gap, el -50% deja medio hueco de\r\n   desfase en cada vuelta y la cinta da un tir\u00f3n. *\/\r\n.tg__cinta{position:relative;overflow:hidden;\r\n  -webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);\r\n  mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}\r\n.tg__cintain{display:flex;width:max-content;animation:tg-cinta 930s linear infinite}\r\n.tg__cinta:hover .tg__cintain{animation-play-state:paused}\r\n\/* Cada foto es un bot\u00f3n, con la misma pieza que el mosaico de la landing\r\n   (.ln__mosc): mano y no lupa \u2014se entiende antes que aqu\u00ed se hace clic\u2014, la\r\n   foto que se acerca un 7%, un velo que sube desde abajo y el bot\u00f3n redondo\r\n   de vidrio que entra con muelle. *\/\r\n.tg__cintabtn{flex:none;position:relative;display:block;padding:0;border:0;\r\n  background:none;cursor:pointer;overflow:hidden;border-radius:24px;\r\n  margin-right:clamp(14px,1.8vw,22px)}\r\n.tg__cintabtn img{height:clamp(230px,30vw,440px);width:auto;aspect-ratio:3\/2;\r\n  object-fit:cover;display:block;transition:transform .7s var(--e)}\r\n\/* El velo entra desde abajo, no plano: as\u00ed la foto no se apaga entera y el\r\n   bot\u00f3n aparece sobre la zona m\u00e1s oscura. *\/\r\n.tg__cintabtn::after{content:\"\";position:absolute;inset:0;opacity:0;\r\n  background:radial-gradient(120% 100% at 50% 100%,rgba(8,18,6,.72),\r\n    rgba(8,18,6,.18) 70%,rgba(8,18,6,0));\r\n  transition:opacity .45s var(--e)}\r\n\/* Filo interior: define la pieza sin pintar un borde encima de la foto. *\/\r\n.tg__cintabtn::before{content:\"\";position:absolute;z-index:3;inset:0;\r\n  border-radius:inherit;pointer-events:none;\r\n  box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)}\r\n.tg__cintabtn:hover img,.tg__cintabtn:focus-visible img{transform:scale(1.07)}\r\n.tg__cintabtn:hover::after,.tg__cintabtn:focus-visible::after{opacity:1}\r\n.tg__cintabtn:focus-visible{outline:3px solid var(--g);outline-offset:3px}\r\n\r\n\/* El bot\u00f3n: vidrio centrado, no un disco blanco en la esquina. Entra con\r\n   muelle y un pel\u00edn de rotaci\u00f3n \u2014es el gesto que dice \u00abesto se abre\u00bb\u2014 y al\r\n   pulsar se hunde. *\/\r\n.tg__cintalupa{position:absolute;z-index:4;left:50%;top:50%;width:54px;height:54px;\r\n  border-radius:50%;display:grid;place-items:center;\r\n  background:rgba(255,255,255,.16);box-shadow:inset 0 0 0 1px rgba(255,255,255,.42);\r\n  -webkit-backdrop-filter:blur(9px) saturate(1.25);\r\n  backdrop-filter:blur(9px) saturate(1.25);\r\n  opacity:0;transform:translate(-50%,-50%) scale(.55) rotate(-22deg);\r\n  transition:opacity .3s var(--e),\r\n             transform .55s cubic-bezier(.34,1.56,.64,1),\r\n             background .3s var(--e)}\r\n.tg__cintabtn:hover .tg__cintalupa,.tg__cintabtn:focus-visible .tg__cintalupa{\r\n  opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}\r\n.tg__cintabtn:active .tg__cintalupa{transform:translate(-50%,-50%) scale(.9) rotate(0);\r\n  background:rgba(255,255,255,.3)}\r\n.tg__cintalupa svg{width:20px;height:20px;stroke:#fff;fill:none;stroke-width:1.9;\r\n  stroke-linecap:round}\r\n\/* En t\u00e1ctil no hay hover: se deja visible y discreto para que se vea que las\r\n   fotos se abren. *\/\r\n@media(hover:none){\r\n  .tg__cintalupa{opacity:.85;transform:translate(-50%,-50%);width:44px;height:44px}\r\n  .tg__cintabtn::after{opacity:.55}\r\n}\r\n@media (prefers-reduced-motion:reduce){\r\n  .tg__cintalupa{transition:opacity .2s linear;transform:translate(-50%,-50%)}\r\n  .tg__cintabtn:hover .tg__cintalupa,\r\n  .tg__cintabtn:focus-visible .tg__cintalupa{transform:translate(-50%,-50%)}\r\n  .tg__cintabtn:hover img,.tg__cintabtn:focus-visible img{transform:none}\r\n}\r\n@keyframes tg-cinta{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}\r\n\/* Sin JS no hay cinta \u2014la construye el script\u2014, as\u00ed que la secci\u00f3n no puede\r\n   quedarse vac\u00eda: se reserva el alto y no colapsa la maqueta. *\/\r\n.tg__cinta{min-height:clamp(230px,30vw,440px)}\r\n\r\n\/* \u2500\u2500 La foto ampliada \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   La misma capa que el mosaico de la landing (.ln__fich), con sus nombres:\r\n   fondo casi negro con desenfoque, la foto centrada y los controles en\r\n   vidrio claro. Lo que <dialog> dar\u00eda de balde \u2014bloquear el scroll, atrapar\r\n   el foco, Escape\u2014 se hace a mano en el script, porque dentro de Elementor\r\n   el elemento nativo se porta mal. *\/\r\n.tg__fich{display:none;position:fixed;inset:0;z-index:2147483000;\r\n  place-items:center;padding:clamp(14px,3vw,56px);\r\n  background:rgba(6,12,6,.88);-webkit-backdrop-filter:blur(10px);\r\n  backdrop-filter:blur(10px)}\r\n.tg__fich.is-abierta{display:grid;animation:tg-fich .34s var(--e-spr)}\r\n@keyframes tg-fich{from{opacity:0}to{opacity:1}}\r\n.tg__fichpanel{position:relative;max-width:min(1240px,92vw);max-height:92vh}\r\n.tg__fichcaja{border-radius:18px;overflow:hidden;line-height:0;\r\n  box-shadow:0 40px 90px -40px rgba(0,0,0,.8);\r\n  animation:tg-fichsube .4s var(--e-spr)}\r\n@keyframes tg-fichsube{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}\r\n.tg__fichimg{display:block;width:100%;max-height:84vh;object-fit:contain;\r\n  background:#0B1508}\r\n.tg__fichpie{position:absolute;z-index:2;top:-50px;left:0;margin:0;font-size:13px;\r\n  font-weight:500;letter-spacing:.04em;color:rgba(255,255,255,.62);\r\n  font-variant-numeric:tabular-nums}\r\n.tg__fichpie b{font-weight:600;color:#fff}\r\n.tg__fichbtn{position:absolute;z-index:2;border:0;cursor:pointer;display:grid;\r\n  place-items:center;border-radius:999px;color:#fff;\r\n  background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.22);\r\n  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);\r\n  transition:background .22s ease,border-color .22s ease,transform .22s var(--e-spr)}\r\n.tg__fichbtn svg{fill:none;stroke:currentColor;stroke-width:1.9;\r\n  stroke-linecap:round;stroke-linejoin:round}\r\n.tg__fichbtn:hover{background:rgba(255,255,255,.26);border-color:rgba(255,255,255,.4)}\r\n.tg__fichbtn:active{transform:scale(.94)}\r\n.tg__fichbtn:focus-visible{outline:2px solid #fff;outline-offset:3px}\r\n.tg__fichx{top:-58px;right:0;width:42px;height:42px}\r\n.tg__fichx svg{width:16px;height:16px}\r\n.tg__fichnav{top:50%;margin-top:-27px;width:54px;height:54px}\r\n.tg__fichnav svg{width:20px;height:20px}\r\n.tg__fichnav--ant{left:-74px}\r\n.tg__fichnav--sig{right:-74px}\r\n\/* Sin sitio fuera de la foto: los controles se meten dentro. *\/\r\n@media(max-width:1120px){\r\n  .tg__fichnav--ant{left:10px}\r\n  .tg__fichnav--sig{right:10px}\r\n  .tg__fichnav{width:46px;height:46px;margin-top:-23px}\r\n}\r\n@media(max-width:700px){\r\n  .tg__fichx{top:10px;right:10px}\r\n  .tg__fichpie{top:auto;bottom:12px;left:50%;transform:translateX(-50%);\r\n    background:rgba(6,12,6,.6);padding:5px 12px;border-radius:999px}\r\n}\r\n\r\n\/* \u2500\u2500 Cumbres \u00b7 franja oscura y filas alternas \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   Las tarjetas con el r\u00f3tulo encima de la foto val\u00edan para stands de feria,\r\n   pero para una cumbre de la OTAN no: la foto se quedaba peque\u00f1a y el dato\r\n   \u2014los metros, los d\u00edas, la gente\u2014 no cab\u00eda en dos l\u00edneas sobre la imagen.\r\n\r\n   Aqu\u00ed cada cumbre es una fila: foto grande a un lado, y al otro el sitio, el\r\n   a\u00f1o, qu\u00e9 se mont\u00f3 y LA CIFRA. Las filas alternan el lado, que es lo que\r\n   hace que se lean de una en una en vez de como una rejilla.\r\n\r\n   Sobre oscuro, como la escena de v\u00eddeo de la landing. Es el mismo recurso\r\n   por el mismo motivo: separar lo institucional del resto de la p\u00e1gina. *\/\r\n.tg__cumbres{background:var(--dark);color:#C8D6C4}\r\n.tg__cumbres .tg__h{color:#fff}\r\n.tg__ops{display:grid;gap:clamp(44px,5.5vw,84px)}\r\n.tg__op{display:grid;gap:clamp(20px,3vw,52px);grid-template-columns:1fr;align-items:center}\r\n@media(min-width:900px){\r\n  \/* La foto se lleva m\u00e1s ancho que el texto: es lo que se ha venido a ver.\r\n     En las filas pares se invierte la REJILLA adem\u00e1s del orden. Con solo el\r\n     order, la foto se iba a la columna estrecha y esas fotos sal\u00edan un tercio\r\n     m\u00e1s peque\u00f1as que las de las filas impares. Ahora la columna ancha\r\n     acompa\u00f1a a la foto y las tres miden exactamente lo mismo. *\/\r\n  .tg__op{grid-template-columns:1.35fr 1fr}\r\n  .tg__op:nth-child(even){grid-template-columns:1fr 1.35fr}\r\n  .tg__op:nth-child(even) .tg__opfoto{order:2}\r\n}\r\n.tg__opfoto{margin:0;overflow:hidden;border-radius:24px;aspect-ratio:3\/2;background:#0A140A}\r\n\r\n\/* \u2500\u2500 Entrada \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   La fila entera es el disparador \u2014lleva .rv, as\u00ed que el observador de la\r\n   p\u00e1gina la marca al asomar\u2014, pero la fila NO se desvanece: lo hacen sus\r\n   partes, cada una a su tiempo. Con el desvanecido general puesto encima se\r\n   perd\u00eda todo esto.\r\n\r\n   La foto entra por un tel\u00f3n: se descubre de abajo arriba con clip-path\r\n   mientras la imagen desanda un 6% de zoom. Es lo que hace que parezca que se\r\n   abre el espacio y no que aparece una tarjeta.\r\n\r\n   El texto va detr\u00e1s, l\u00ednea a l\u00ednea. La cifra llega la \u00faltima y contando. *\/\r\n.tg.js-rv .tg__op{opacity:1;transform:none;filter:none}\r\n.tg .tg__opfoto{clip-path:inset(0 0 0 0)}\r\n.tg.js-rv .tg__op .tg__opfoto{clip-path:inset(0 0 100% 0);\r\n  transition:clip-path 1.05s var(--e)}\r\n.tg.js-rv .tg__op.is-in .tg__opfoto{clip-path:inset(0 0 0 0)}\r\n.tg.js-rv .tg__op .tg__opfoto img{transform:scale(1.06);\r\n  transition:transform 1.5s var(--e-spr)}\r\n.tg.js-rv .tg__op.is-in .tg__opfoto img{transform:scale(1)}\r\n\/* El zoom del rat\u00f3n vuelve a mandar una vez ha entrado. *\/\r\n.tg__op.is-in:hover .tg__opfoto img{transform:scale(1.045)}\r\n\r\n.tg.js-rv .tg__op > div > *{opacity:0;transform:translateY(14px);filter:blur(5px);\r\n  transition:opacity .7s var(--e),transform .7s var(--e-spr),filter .7s var(--e);\r\n  transition-delay:calc(var(--k,0) * 95ms + 260ms)}\r\n.tg.js-rv .tg__op.is-in > div > *{opacity:1;transform:none;filter:blur(0)}\r\n\/* Un filo verde que crece bajo el bloque de la cifra: el remate de la fila.\r\n   Sustituye al borde fijo, que llegaba antes que el texto y lo destripaba. *\/\r\n.tg__opdato{position:relative}\r\n.tg__opdato::before{content:\"\";position:absolute;top:0;left:0;height:1px;width:100%;\r\n  background:linear-gradient(90deg,var(--g),rgba(255,255,255,.12));\r\n  transform:scaleX(0);transform-origin:left;transition:transform 1s var(--e) .55s}\r\n.tg.js-rv .tg__op.is-in .tg__opdato::before{transform:scaleX(1)}\r\n.tg__opfoto img{width:100%;height:100%;object-fit:cover;\r\n  transition:transform .9s var(--e)}\r\n.tg__op:hover .tg__opfoto img{transform:scale(1.045)}\r\n.tg__opsitio{margin:0 0 16px;font-size:13px;font-weight:500;color:#8E9E8A;\r\n  letter-spacing:.01em}\r\n.tg__op h3{margin:0 0 8px;font-size:clamp(24px,2.8vw,34px);font-weight:700;\r\n  letter-spacing:-.04em;line-height:1.05;color:#fff;text-wrap:balance}\r\n.tg__opq{margin:0;font-size:15px;line-height:1.65;color:#9FB09B;max-width:46ch}\r\n\/* La cifra, separada por un filo: es el remate de la fila y tiene que leerse\r\n   sola aunque no se lea el p\u00e1rrafo. *\/\r\n.tg__opdato{margin:clamp(20px,2.4vw,28px) 0 0;padding-top:clamp(18px,2.2vw,24px)}\r\n.tg__opdato strong{display:block;font-size:clamp(30px,3.4vw,42px);font-weight:700;\r\n  letter-spacing:-.045em;line-height:1;color:#fff}\r\n.tg__opdato strong i{font-style:normal;font-size:.45em;margin-left:4px;color:var(--g)}\r\n.tg__opdato span{display:block;margin-top:9px;font-size:13.5px;line-height:1.5;\r\n  color:#9FB09B;max-width:34ch}\r\n\/* El bot\u00f3n de l\u00ednea, sobre oscuro: el filo gris claro desaparecer\u00eda. *\/\r\n.tg__cumbres .tg__btn--linea{background:transparent;color:#fff;\r\n  box-shadow:0 0 0 1px rgba(255,255,255,.28)}\r\n.tg__cumbres .tg__btn--linea:hover{background:rgba(255,255,255,.06);color:#fff;\r\n  box-shadow:0 0 0 1px rgba(190,224,184,.55)}\r\n.tg__cumbres .tg__btn--linea i{background:rgba(255,255,255,.1)}\r\n.tg__cumbres .tg__btn--linea:hover i{background:rgba(255,255,255,.16)}\r\n\r\n\/* Sin movimiento. Va al final del bloque a prop\u00f3sito: las reglas de entrada\r\n   est\u00e1n arriba y, a igual especificidad, gana la \u00faltima. *\/\r\n@media (prefers-reduced-motion:reduce){\r\n  .tg.js-rv .tg__op .tg__opfoto{clip-path:none;transition:none}\r\n  .tg.js-rv .tg__op .tg__opfoto img{transform:none;transition:none}\r\n  .tg.js-rv .tg__op > div > *{opacity:1;transform:none;filter:none;transition:none}\r\n  .tg__opdato::before{transform:scaleX(1);transition:none}\r\n  .tg__op.is-in:hover .tg__opfoto img{transform:none}\r\n}\r\n\r\n\/* Sin pie legal: lo pone la plantilla de Elementor. Este bloque tra\u00eda el suyo\r\n   \u2014\u00a9 y los tres enlaces legales\u2014 y sal\u00edan dos, uno debajo del otro. *\/\r\n\r\n@media (prefers-reduced-motion:reduce){\r\n  .tg__pista{animation:none !important}\r\n  .tg__op:hover .tg__opfoto img{transform:none}\r\n  .tg__tic,.tg__tic svg,.tg__h1,.tg__sub,.tg__baja{animation:none;stroke-dashoffset:0}\r\n  .tg.js-rv .rv{opacity:1;transform:none;filter:none}\r\n  .tg .rv{transition:none}\r\n}\r\n<\/style>\r\n\r\n<section class=\"tg__port\">\r\n  <div class=\"tg__fondo\" data-fondo aria-hidden=\"true\"><\/div>\r\n  <div class=\"tg__velo\" aria-hidden=\"true\"><\/div>\r\n  <div class=\"tg__msg tg__wrap\">\r\n    <div class=\"tg__panel\">\r\n      <div class=\"tg__tic\"><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg><\/div>\r\n      <h1 class=\"tg__h1\">We have your<br>project<\/h1>\r\n      <p class=\"tg__sub\">We'll be in touch <b>as soon as we can<\/b>. What you've told us is already with an account manager.<\/p>\r\n    <\/div>\r\n    <a class=\"tg__baja\" href=\"#pasos\">What happens now\r\n      <i><svg viewBox=\"0 0 24 24\"><path d=\"M12 5v14M6 13l6 6 6-6\"\/><\/svg><\/i><\/a>\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<section class=\"tg__sec\" id=\"pasos\">\r\n  <div class=\"tg__wrap\">\r\n    <div class=\"tg__head rv\">\r\n      <h2 class=\"tg__h\">Three steps to seeing<br>your stand drawn<\/h2>\r\n    <\/div>\r\n    <ul class=\"tg__ruta\">\r\n      <li class=\"rv\">\r\n        <span class=\"tg__txt\"><b>We look at your case<\/b><span>We read what you've told us, look at the show and the space you've been given, and work out what can really be done there.<\/span><\/span>\r\n      <\/li>\r\n      <li class=\"rv\">\r\n        <span class=\"tg__txt\"><b>We call you to pin it down<\/b><span>Half an hour to understand what you want to happen on the stand. It's the part that changes the outcome most, and a form can't do it.<\/span><\/span>\r\n      <\/li>\r\n      <li class=\"rv\">\r\n        <span class=\"tg__txt\"><b>You get the proposal<\/b><span>A design made for your space, with the price and what it covers in writing. Free and with no commitment: if it doesn't convince you, we change it.<\/span><\/span>\r\n      <\/li>\r\n    <\/ul>\r\n\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<section class=\"tg__sec tg__sec--off\">\r\n  <div class=\"tg__wrap\">\r\n    <div class=\"tg__head tg__head--c rv\">\r\n      <h2 class=\"tg__h\">A few of the stands<br>we've built<\/h2>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"tg__cinta\"><div class=\"tg__cintain\" data-cinta><\/div><\/div>\r\n  <div class=\"tg__fich\" data-ficha hidden role=\"dialog\" aria-modal=\"true\"\r\n       aria-label=\"Stand photo enlarged\">\r\n    <div class=\"tg__fichpanel\">\r\n      <p class=\"tg__fichpie\"><b data-fnum>1<\/b> \/ <span data-ftot>0<\/span>        \u00b7 <span data-falt><\/span><\/p>\r\n      <button class=\"tg__fichbtn tg__fichx\" data-cerrar aria-label=\"Close\">\r\n        <svg viewBox=\"0 0 24 24\"><path d=\"M18 6 6 18M6 6l12 12\"\/><\/svg><\/button>\r\n      <button class=\"tg__fichbtn tg__fichnav tg__fichnav--ant\" data-mover=\"-1\"              aria-label=\"Previous stand\">\r\n        <svg viewBox=\"0 0 24 24\"><path d=\"M15 18l-6-6 6-6\"\/><\/svg><\/button>\r\n      <button class=\"tg__fichbtn tg__fichnav tg__fichnav--sig\" data-mover=\"1\"              aria-label=\"Next stand\">\r\n        <svg viewBox=\"0 0 24 24\"><path d=\"M9 18l6-6-6-6\"\/><\/svg><\/button>\r\n      <div class=\"tg__fichcaja\"><img class=\"tg__fichimg\" decoding=\"async\" data-fimg alt=\"\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"tg__wrap\">\r\n    <div class=\"tg__centro rv\">\r\n      <a class=\"tg__btn tg__btn--linea\" href=\"https:\/\/www.serviscomplet.com\/en\/projects\/\"\r\n         target=\"_blank\" rel=\"noopener\">See more stands\r\n        <i><svg viewBox=\"0 0 24 24\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg><\/i><\/a>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<section class=\"tg__sec tg__cumbres\">\r\n  <div class=\"tg__wrap\">\r\n    <div class=\"tg__head tg__head--c rv\">\r\n      <h2 class=\"tg__h\">The same team that builds<br>your stand, builds these<\/h2>\r\n    <\/div>\r\n    <ul class=\"tg__ops\">\r\n      <li class=\"tg__op rv\">\r\n        <figure class=\"tg__opfoto\">\r\n          <img loading=\"lazy\" decoding=\"async\" alt=\"COP25. IFEMA Madrid \u00b7 2019\" src=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/09\/lp-cumbre-cop25.webp\">\r\n        <\/figure>\r\n        <div>\r\n          <h3 style=\"--k:0\">COP25<\/h3>\r\n          <p class=\"tg__opsitio\" style=\"--k:1\">IFEMA Madrid \u00b7 2019<\/p>\r\n          <p class=\"tg__opq\" style=\"--k:2\">The climate summit changed country a month before it opened. Two plenary halls, fifteen meeting rooms and 1,800 bespoke tables, built in the time the drawings alone usually take.<\/p>\r\n          <p class=\"tg__opdato\" style=\"--k:3\"><strong data-cuenta=\"30\" data-fmt=\"llano\">30<i> days<\/i><\/strong>\r\n            <span>from plan to full build, with 190 people and 13,000 m\u00b2<\/span><\/p>\r\n        <\/div>\r\n      <\/li>\r\n      <li class=\"tg__op rv\">\r\n        <figure class=\"tg__opfoto\">\r\n          <img loading=\"lazy\" decoding=\"async\" alt=\"NATO Summit. IFEMA Madrid \u00b7 2022\" src=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/09\/lp-proyecto-otan.jpg\">\r\n        <\/figure>\r\n        <div>\r\n          <h3 style=\"--k:0\">NATO Summit<\/h3>\r\n          <p class=\"tg__opsitio\" style=\"--k:1\">IFEMA Madrid \u00b7 2022<\/p>\r\n          <p class=\"tg__opq\" style=\"--k:2\">Forty heads of state in one building and two thousand journalists next door. Every room, every office and every route exactly where protocol said, and on time.<\/p>\r\n          <p class=\"tg__opdato\" style=\"--k:3\"><strong data-cuenta=\"40\" data-fmt=\"llano\">40<i>+<\/i><\/strong>\r\n            <span>heads of state, and a press area for over 2,000 journalists<\/span><\/p>\r\n        <\/div>\r\n      <\/li>\r\n      <li class=\"tg__op rv\">\r\n        <figure class=\"tg__opfoto\">\r\n          <img loading=\"lazy\" decoding=\"async\" alt=\"UN \u00b7 FfD4 Conference. Seville \u00b7 2025\" src=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/09\/lp-cumbre-onu-ffd4.webp\">\r\n        <\/figure>\r\n        <div>\r\n          <h3 style=\"--k:0\">UN \u00b7 FfD4 Conference<\/h3>\r\n          <p class=\"tg__opsitio\" style=\"--k:1\">Seville \u00b7 2025<\/p>\r\n          <p class=\"tg__opq\" style=\"--k:2\">The United Nations brought a COP-sized conference to Seville. We took care of all of it: design, production, logistics, build and dismantle, inside the venue and out.<\/p>\r\n          <p class=\"tg__opdato\" style=\"--k:3\"><strong data-cuenta=\"60000\" data-fmt=\"miles\">60,000<i> m\u00b2<\/i><\/strong>\r\n            <span>produced, with more than twenty-five rooms running daily programme<\/span><\/p>\r\n        <\/div>\r\n      <\/li>\r\n    <\/ul>\r\n    <div class=\"tg__centro rv\">\r\n      <a class=\"tg__btn tg__btn--linea\" href=\"https:\/\/www.serviscomplet.com\/en\/projects\/\"\r\n         target=\"_blank\" rel=\"noopener\">See all our projects\r\n        <i><svg viewBox=\"0 0 24 24\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg><\/i><\/a>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  'use strict';\r\n  var raiz   = document.querySelector('.tg');\r\n  var quieto = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n  if (!raiz) return;\r\n\r\n  \/* \u2500\u2500 Revelados \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n     La clase la pone el JS: si no se ejecuta, todo queda visible. *\/\r\n  if (!quieto && 'IntersectionObserver' in window) {\r\n    raiz.classList.add('js-rv');\r\n    var piezas = raiz.querySelectorAll('.rv');\r\n    var obs = new IntersectionObserver(function (es) {\r\n      es.forEach(function (e) {\r\n        if (!e.isIntersecting) return;\r\n        e.target.classList.add('is-in');\r\n        obs.unobserve(e.target);\r\n      });\r\n    }, { rootMargin: '0px 0px -12% 0px', threshold: 0.08 });\r\n    for (var p = 0; p < piezas.length; p++) obs.observe(piezas[p]);\r\n    \/* Red de seguridad: hay entornos donde el observador existe y no dispara. *\/\r\n    setTimeout(function () {\r\n      var ocultas = 0;\r\n      for (var i = 0; i < piezas.length; i++)\r\n        if (!piezas[i].classList.contains('is-in')) ocultas++;\r\n      if (ocultas === piezas.length && piezas.length)\r\n        for (var j = 0; j < piezas.length; j++) piezas[j].classList.add('is-in');\r\n    }, 2500);\r\n  }\r\n\r\n  \/* \u2500\u2500 Parar lo que no se ve \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n     El margen de 200px es para que arranque un poco antes de asomar: si se\r\n     reanudara justo al entrar, se ver\u00eda el tir\u00f3n del arranque. *\/\r\n  var mueve = [].slice.call(raiz.querySelectorAll('[data-fondo], .tg__cinta'));\r\n  if ('IntersectionObserver' in window && mueve.length) {\r\n    var obsM = new IntersectionObserver(function (es) {\r\n      es.forEach(function (e) {\r\n        e.target.classList.toggle('tg-fuera', !e.isIntersecting);\r\n      });\r\n    }, { rootMargin: '200px 0px' });\r\n    for (var m = 0; m < mueve.length; m++) obsM.observe(mueve[m]);\r\n  }\r\n\r\n\r\n  \/* \u2500\u2500 Cinta de stands \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n     Una pista, duplicada: es lo que hace continuo el bucle a -50%. Cada foto\r\n     va dentro de un bot\u00f3n para que se pueda ampliar tambi\u00e9n con el teclado.\r\n     La segunda vuelta es la misma foto otra vez, as\u00ed que va sin alt y oculta\r\n     al lector de pantalla \u2014si no, leer\u00eda ochenta y dos stands\u2014 y sin bot\u00f3n,\r\n     con tabindex -1, para no duplicar las paradas del tabulador. *\/\r\n  var LUPA = '<span class=\"tg__cintalupa\"><svg viewBox=\"0 0 24 24\" stroke-linecap=\"round\">' +\r\n             '<circle cx=\"11\" cy=\"11\" r=\"7\"\/><path d=\"M20 20l-3.5-3.5M11 8v6M8 11h6\"\/>' +\r\n             '<\/svg><\/span>';\r\n  var pista = raiz.querySelector('[data-cinta]');\r\n  var CINTA = [\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/05\/VKFIRA090-ADVANCEDFACTORY2025-1-768x531.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/05\/VKFIRA090-ADVANCEDFACTORY2025-1-1024x708.jpg','Servitron \u00b7 Advanced Factories 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2013\/10\/BARCELONA-BRIDAL-WEEK-servis-3-768x512.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2013\/10\/BARCELONA-BRIDAL-WEEK-servis-3-1024x683.jpg','Barcelona Bridal Week'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/VKFIRA-072-ALIMENTARIA2024-768x476.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/VKFIRA-072-ALIMENTARIA2024-1024x635.jpg','Estrella Damm \u00b7 Alimentaria'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/10\/DSC7410-768x511.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/10\/DSC7410-1024x682.jpg','HIP \u00b7 Horeca Professional Expo'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA110-MWC2025-1-scaled-r31cvthskedcezhfl7r6fiuws3xbg29k3o3pbrkqrs.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/03\/VKFIRA110-MWC2025-1-scaled.jpg','MWC 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/2025-03-04_08-14-15_716-768x432.jpeg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/2025-03-04_08-14-15_716-1024x576.jpeg','Frans Bonhomme \u00b7 SMAGUA'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/VKFIRA159-KUBECON2025LONDON-768x512.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/VKFIRA159-KUBECON2025LONDON-1024x683.jpg','JFrog \u00b7 KubeCon Europe'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/VKFIRA103-KUBECON2025LONDON-768x528.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/VKFIRA103-KUBECON2025LONDON-1024x704.jpg','Datadog \u00b7 KubeCon Europe'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/VKFIRA-048-ALIMENTARIA2024-768x559.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/VKFIRA-048-ALIMENTARIA2024-1024x746.jpg','Calconut \u00b7 Alimentaria'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA075-ADVANCEDFACTORY2025-scaled-r61kn5un8qes7ye5lwfuylfi2mme22hvnkh7dxfxc8.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/05\/VKFIRA075-ADVANCEDFACTORY2025-scaled.jpg','Advanced Factories 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/05\/VK027-SEAFOOD25-1-768x512.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/05\/VK027-SEAFOOD25-1-1024x683.jpg','Mercamadrid \u00b7 Seafood'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/VKFIRA319-SBC2023-768x512.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/VKFIRA319-SBC2023-1024x683.jpg','Digitain \u00b7 SBC Summit'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/10\/AMM4354-768x512.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/10\/AMM4354-1024x683.jpg','HP \u00b7 Labelexpo'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/baxi-climatizacion-refrigeracion-madrid-2025-stand-vista-01-768x393.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/baxi-climatizacion-refrigeracion-madrid-2025-stand-vista-01-1024x524.jpg','Baxi \u00b7 C&R Madrid'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA101-KUBECON2025LONDON-scaled-r46vncm0mmasqf8e1jnawdddhxqkyubai0p5i4okug.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/VKFIRA101-KUBECON2025LONDON-scaled.jpg','KubeCon London 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/baywa-climatizacion-refrigeracion-madrid-2025-stand-vista-01-768x412.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/baywa-climatizacion-refrigeracion-madrid-2025-stand-vista-01-1024x549.jpg','BayWa \u00b7 C&R Madrid'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/05\/hp-fespa-2026-stand-vista-01-768x514.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/05\/hp-fespa-2026-stand-vista-01-1024x685.jpg','HP \u00b7 FESPA 2026'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/05\/fiery-fespa-2026-stand-vista-01-768x649.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/05\/fiery-fespa-2026-stand-vista-01-1024x865.jpg','Fiery \u00b7 FESPA 2026'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/05\/australia-seafood-2026-stand-vista-01-768x557.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/05\/australia-seafood-2026-stand-vista-01-1024x742.jpg','Australia \u00b7 Seafood 2026'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA055-MWC2025-scaled-r3t2gsfwpuiq9vw22altcidyi7gp0x9q0dd4w9216w.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/VKFIRA055-MWC2025-scaled.jpg','MWC 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/05\/golden-fresh-seafood-2026-stand-vista-01-768x576.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/05\/golden-fresh-seafood-2026-stand-vista-01-1024x768.jpg','Golden Fresh \u00b7 Seafood 2026'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/alnea-alimentaria-2026-stand-vista-01-768x288.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/alnea-alimentaria-2026-stand-vista-01-1024x385.jpg','Alnea \u00b7 Alimentaria 2026'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/nestea-alimentaria-2026-stand-vista-01-768x565.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/nestea-alimentaria-2026-stand-vista-01-1024x754.jpg','Nestea \u00b7 Alimentaria 2026'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/damm-alimentaria-2026-stand-vista-01-768x512.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/damm-alimentaria-2026-stand-vista-01-1024x683.jpg','Damm \u00b7 Alimentaria 2026'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA-050-ALIMENTARIA2024-scaled-r4vji8koa730m5cs86h4j5btteqdedrgnmj7nezngo.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/VKFIRA-050-ALIMENTARIA2024-scaled.jpg','Alimentaria 2024'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/airzone-climatizacion-refrigeracion-madrid-2025-stand-vista-04-768x412.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2026\/03\/airzone-climatizacion-refrigeracion-madrid-2025-stand-vista-04-1024x549.jpg','Airzone \u00b7 C&R Madrid 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/01\/VKFIRA114-FRUITS2023IFEMA-768x710.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/01\/VKFIRA114-FRUITS2023IFEMA-1024x947.jpg','Mercamadrid \u00b7 Fruit Attraction'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/11\/SORIGUE-SMART-CITY-3-768x576.png','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/11\/SORIGUE-SMART-CITY-3-1024x768.png','Sorigu\u00e9 \u00b7 Smart City 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/02\/VKFIRA27-ALIMFOODT2023-1-768x512.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/02\/VKFIRA27-ALIMFOODT2023-1-1024x683.jpg','Handtmann \u00b7 Alimentaria FoodTech'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA158-KUBECON2025LONDON-scaled-r4s0o454n8elj9wj6g4o3e5opokliekjjexp9p85mw.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/VKFIRA158-KUBECON2025LONDON-scaled.jpg','KubeCon London 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/02\/VKFIRA002-ISE2025-768x512.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/02\/VKFIRA002-ISE2025-1024x683.jpg','Airzone \u00b7 ISE 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/01\/IMG_20231024_090105-768x574.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/01\/IMG_20231024_090105-1024x766.jpg','Galenicum \u00b7 CPHI'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/06\/VK10-EULAR2025-768x512.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/06\/VK10-EULAR2025-1024x683.jpg','EULAR 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/03\/VKFIRA013-MWC2025-1-scaled-1-768x486.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/03\/VKFIRA013-MWC2025-1-scaled-1-1024x648.jpg','CSG \u00b7 MWC 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/AIRZONE-ISE-2024-scaled-r01pyuonrrjezgm0wdtnwlifi4pwnfz5dsdicr4ayw.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/01\/AIRZONE-ISE-2024-scaled.jpg','Airzone \u00b7 ISE 2024'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/02\/VKFIRA-158-SEAFOOD2024-768x521.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/02\/VKFIRA-158-SEAFOOD2024-1024x694.jpg','Ventisqueros \u00b7 Seafood'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/03\/NANTA-FIGAN-768x432.png','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/03\/NANTA-FIGAN-1024x576.png','Nanta \u00b7 FIGAN 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/03\/VKFIRA108-MWC2025-1-768x748.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/03\/VKFIRA108-MWC2025-1-1024x998.jpg','SUSE \u00b7 MWC 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/01\/STAND-AMAZON-WEB-SERVICES-768x512.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/01\/STAND-AMAZON-WEB-SERVICES-1024x683.jpg','AWS \u00b7 Gartner IT Symposium'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA001-MWC2025-scaled-r3t2gi3omo4kq6b2qo4x32zvyyvno94oay6sm7hd3c.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/04\/VKFIRA001-MWC2025-scaled.jpg','MWC 2025'],\r\n      ['https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/IMG_2178-scaled-r6hcqe9za8lwddu1rk56xappmz3bsjh7rs1spw6z60.jpg','https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2025\/01\/IMG_2178-scaled.jpg','Bespoke stand']\r\n    ];\r\n  if (pista) {\r\n    var htmlc = '';\r\n    for (var v = 0; v < 2; v++) {\r\n      for (var s = 0; s < CINTA.length; s++) {\r\n        htmlc += '<button class=\"tg__cintabtn\" type=\"button\" data-abrir=\"' + s + '\"' +\r\n                 (v ? ' tabindex=\"-1\" aria-hidden=\"true\"' :\r\n                      ' aria-label=\"View this photo larger \u00b7 ' + CINTA[s][2] + '\"') + '>' +\r\n                 '<img loading=\"lazy\" decoding=\"async\" src=\"' + CINTA[s][0] + '\"' +\r\n                 (v ? ' alt=\"\"' : ' alt=\"' + CINTA[s][2] + '\"') + '>' + LUPA + '<\/button>';\r\n      }\r\n    }\r\n    pista.innerHTML = htmlc;\r\n  }\r\n\r\n  \/* \u2500\u2500 La foto ampliada \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n     Portada tal cual del mosaico de la landing. Lo que <dialog> dar\u00eda de\r\n     balde y aqu\u00ed se hace a mano: bloquear el scroll de detr\u00e1s, atrapar el\r\n     foco dentro de la capa, cerrar con Escape y devolver el foco a la foto\r\n     desde la que se abri\u00f3. *\/\r\n  var ficha = raiz.querySelector('[data-ficha]');\r\n  if (ficha && CINTA.length) {\r\n    var fimg = ficha.querySelector('[data-fimg]');\r\n    var fnum = ficha.querySelector('[data-fnum]');\r\n    var falt = ficha.querySelector('[data-falt]');\r\n    ficha.querySelector('[data-ftot]').textContent = CINTA.length;\r\n\r\n    var actual = 0, abierta = false, volverA = null, scrollAntes = '';\r\n\r\n    var pintaF = function (i) {\r\n      actual = (i + CINTA.length) % CINTA.length;\r\n      fimg.src = CINTA[actual][1];\r\n      fimg.alt = CINTA[actual][2];\r\n      fnum.textContent = actual + 1;\r\n      falt.textContent = CINTA[actual][2];\r\n\r\n      \/* La grande de al lado, pedida por lo bajo. Quien abre una foto suele\r\n         pasar a la siguiente, y sin esto cada flecha son 100 KB de espera con\r\n         el hueco en blanco. Solo las dos vecinas: precargar las cuarenta y una\r\n         ser\u00eda peor que no precargar ninguna. *\/\r\n      for (var lado = -1; lado <= 1; lado += 2) {\r\n        var vecina = new Image();\r\n        vecina.decoding = 'async';\r\n        vecina.src = CINTA[(actual + lado + CINTA.length) % CINTA.length][1];\r\n      }\r\n    };\r\n\r\n    var abrir = function (i, origen) {\r\n      pintaF(i);\r\n      if (abierta) return;\r\n      abierta = true;\r\n      volverA = origen || null;\r\n      scrollAntes = document.body.style.overflow;\r\n      document.body.style.overflow = 'hidden';\r\n      ficha.hidden = false;\r\n      ficha.classList.add('is-abierta');\r\n      var primero = ficha.querySelector('[data-cerrar]');\r\n      if (primero) primero.focus();\r\n    };\r\n\r\n    var cerrar = function () {\r\n      if (!abierta) return;\r\n      abierta = false;\r\n      ficha.classList.remove('is-abierta');\r\n      ficha.hidden = true;\r\n      document.body.style.overflow = scrollAntes;\r\n      if (volverA && document.contains(volverA)) volverA.focus();\r\n      volverA = null;\r\n    };\r\n\r\n    document.addEventListener('click', function (ev) {\r\n      var b = ev.target.closest('[data-abrir]');\r\n      if (b) { abrir(Number(b.dataset.abrir), b); return; }\r\n      if (!abierta) return;\r\n      if (ev.target.closest('[data-cerrar]')) { cerrar(); return; }\r\n      var m = ev.target.closest('[data-mover]');\r\n      if (m) { pintaF(actual + Number(m.dataset.mover)); return; }\r\n      \/* Clic fuera del panel = cerrar. Se comprueba contra el panel y no\r\n         contra la capa: la capa tiene relleno, y ese relleno es \u00abfuera\u00bb. *\/\r\n      if (!ev.target.closest('.tg__fichpanel')) cerrar();\r\n    });\r\n\r\n    document.addEventListener('keydown', function (ev) {\r\n      if (!abierta) return;\r\n      if (ev.key === 'Escape')     { cerrar(); return; }\r\n      if (ev.key === 'ArrowLeft')  { pintaF(actual - 1); return; }\r\n      if (ev.key === 'ArrowRight') { pintaF(actual + 1); return; }\r\n      if (ev.key !== 'Tab') return;\r\n      var f = ficha.querySelectorAll('button, [href], [tabindex]:not([tabindex=\"-1\"])');\r\n      if (!f.length) return;\r\n      var pri = f[0], ult = f[f.length - 1];\r\n      if (ev.shiftKey && document.activeElement === pri) { ev.preventDefault(); ult.focus(); }\r\n      else if (!ev.shiftKey && document.activeElement === ult) { ev.preventDefault(); pri.focus(); }\r\n    });\r\n  }\r\n\r\n  \/* \u2500\u2500 Cifras que cuentan \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n     Igual que en la landing: el n\u00famero sube al asomar. Se pinta sobre el\r\n     primer nodo de texto para no tocar la unidad, que va en un <i> al lado. *\/\r\n  var cifras = raiz.querySelectorAll('[data-cuenta]');\r\n  if (!quieto && 'IntersectionObserver' in window && cifras.length) {\r\n    var pinta = function (el, v) {\r\n      el.childNodes[0].nodeValue = el.getAttribute('data-fmt') === 'miles'\r\n        ? v.toLocaleString('en-GB') : String(v);\r\n    };\r\n    var obsC = new IntersectionObserver(function (es) {\r\n      es.forEach(function (e) {\r\n        if (!e.isIntersecting) return;\r\n        var el = e.target, fin = parseInt(el.getAttribute('data-cuenta'), 10), t0 = null;\r\n        (function paso(t) {\r\n          if (t0 === null) t0 = t;\r\n          var q = Math.min((t - t0) \/ 1250, 1);\r\n          pinta(el, Math.round(fin * (1 - Math.pow(1 - q, 3))));\r\n          if (q < 1) requestAnimationFrame(paso);\r\n        })(performance.now());\r\n        obsC.unobserve(el);\r\n      });\r\n    }, { threshold: 0.6 });\r\n    for (var c = 0; c < cifras.length; c++) obsC.observe(cifras[c]);\r\n  }\r\n\r\n  \/* \u2500\u2500 Mosaico del fondo de la portada \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  var F = [\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA002-ISE2025-1-scaled-r1sgzt2w2d9t1hkra1k9110plad61feu6y0yizspl4.jpg',\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/STAND-AMAZON-WEB-SERVICES-scaled-r001pixuwlw89fog8oibe0p8kp1w2zwggmbtn7ln60.jpg',\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA110-MWC2025-1-scaled-r31cvthskedcezhfl7r6fiuws3xbg29k3o3pbrkqrs.jpg',\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA101-KUBECON2025LONDON-scaled-r46vncm0mmasqf8e1jnawdddhxqkyubai0p5i4okug.jpg',\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA075-ADVANCEDFACTORY2025-scaled-r61kn5un8qes7ye5lwfuylfi2mme22hvnkh7dxfxc8.jpg',\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA158-KUBECON2025LONDON-scaled-r4s0o454n8elj9wj6g4o3e5opokliekjjexp9p85mw.jpg',\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA-050-ALIMENTARIA2024-scaled-r4vji8koa730m5cs86h4j5btteqdedrgnmj7nezngo.jpg',\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA090-ADVANCEDFACTORY2025-1-scaled-r6igc8mgdyh9v0puudyvpzohdlakzoz4t1od1c2yko.jpg',\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA055-MWC2025-scaled-r3t2gsfwpuiq9vw22altcidyi7gp0x9q0dd4w9216w.jpg',\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/VKFIRA001-MWC2025-scaled-r3t2gi3omo4kq6b2qo4x32zvyyvno94oay6sm7hd3c.jpg',\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/IMG_2178-scaled-r6hcqe9za8lwddu1rk56xappmz3bsjh7rs1spw6z60.jpg',\r\n    'https:\/\/www.serviscomplet.com\/wp-content\/uploads\/elementor\/thumbs\/AIRZONE-ISE-2024-scaled-r01pyuonrrjezgm0wdtnwlifi4pwnfz5dsdicr4ayw.jpg'\r\n  ];\r\n  var rejilla = raiz.querySelector('[data-fondo]');\r\n  if (!rejilla || quieto) return;\r\n\r\n  \/* El n\u00famero de columnas lo manda el CSS. Se lee lo que haya decidido en vez\r\n     de fijarlo aqu\u00ed, que es como se quedaban columnas vac\u00edas en pantallas\r\n     anchas. *\/\r\n  function columnas() {\r\n    var t = getComputedStyle(rejilla).gridTemplateColumns;\r\n    return Math.max(1, t.split(' ').filter(Boolean).length);\r\n  }\r\n\r\n  var COLS = 0, ALTO = 0;\r\n  function construir() {\r\n    var caja = rejilla.getBoundingClientRect();\r\n    if (caja.width < 1 || caja.height < 1) return;      \/* a\u00fan sin maqueta *\/\r\n    var n = columnas(), alto = Math.round(caja.height);\r\n    if (n === COLS && alto === ALTO) return;\r\n    COLS = n; ALTO = alto;\r\n\r\n    \/* Cu\u00e1ntas fotos necesita cada columna: el bucle traslada el \u221250%, as\u00ed que\r\n       el juego \u00fanico tiene que medir al menos lo que la columna. Si mide\r\n       menos, al llegar al final queda hueco. *\/\r\n    var hueco = parseFloat(getComputedStyle(rejilla).columnGap) || 16;\r\n    var ancho = (caja.width - (n - 1) * hueco) \/ n;\r\n    var paso = ancho * 3 \/ 4 + hueco;\r\n    var porCol = Math.min(F.length, Math.max(2, Math.ceil(alto \/ paso) + 1));\r\n\r\n    var html = '';\r\n    for (var c = 0; c < n; c++) {\r\n      var t = '';\r\n      for (var k = 0; k < porCol; k++) {\r\n        \/* Paso de 5, coprimo con 12: dentro de una columna no se repite\r\n           ninguna hasta haber pasado por las doce. *\/\r\n        t += '<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"' + F[(c + k * 5) % F.length] + '\">';\r\n      }\r\n      \/* Muy lento a prop\u00f3sito: aqu\u00ed el mosaico es fondo, no contenido. Si\r\n         corre, compite con el mensaje en vez de acompa\u00f1arlo. *\/\r\n      var dur = Math.round(porCol * paso \/ 2.2 * (0.9 + (c % 3) * 0.12));\r\n      html += '<div class=\"tg__col\" style=\"--t:' + dur + 's\"><div class=\"tg__pista\">' +\r\n              t + t + '<\/div><\/div>';\r\n    }\r\n    rejilla.innerHTML = html;\r\n  }\r\n\r\n  construir();\r\n  var espera;\r\n  function replantear() { clearTimeout(espera); espera = setTimeout(construir, 180); }\r\n  if ('ResizeObserver' in window) new ResizeObserver(replantear).observe(rejilla);\r\n  addEventListener('resize', replantear, { passive: true });\r\n})();\r\n<\/script>\r\n\r\n<!-- Google Ads \u00b7 conversi\u00f3n de esta p\u00e1gina de gracias -->\r\n<script>\r\n  (function () {\r\n    var ENVIAR = 'AW-743254376\/__KoCLKXqswaEOjStOIC';\r\n    function dispara() {\r\n      if (typeof gtag !== 'function') return false;\r\n      gtag('event', 'conversion', {'send_to': ENVIAR});\r\n      return true;\r\n    }\r\n    if (dispara()) return;\r\n    var intentos = 0;\r\n    var reloj = setInterval(function () {\r\n      if (dispara() || ++intentos > 20) clearInterval(reloj);\r\n    }, 250);\r\n  })();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4521517 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"4521517\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bde9755 elementor-widget elementor-widget-template\" data-id=\"bde9755\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"section\" data-elementor-id=\"31960\" class=\"elementor elementor-31960 elementor-30863\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-499ea30 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"499ea30\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-67b3513 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"67b3513\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0126cc6 elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"0126cc6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"300\" height=\"63\" src=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/logo-servis-blanco-300x63.png\" class=\"attachment-medium size-medium wp-image-30781\" alt=\"\" srcset=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/logo-servis-blanco-300x63.png 300w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/logo-servis-blanco-1024x213.png 1024w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/logo-servis-blanco-768x160.png 768w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/logo-servis-blanco-1536x320.png 1536w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/logo-servis-blanco-700x146.png 700w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/logo-servis-blanco.png 1848w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ec598d7 elementor-widget elementor-widget-elementskit-social-media\" data-id=\"ec598d7\" data-element_type=\"widget\" data-widget_type=\"elementskit-social-media.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"ekit-wid-con\" >\t\t\t <ul class=\"ekit_social_media\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"elementor-repeater-item-8f886e8\">\n\t\t\t\t\t    <a href=\"https:\/\/www.linkedin.com\/company\/grup-servis\/\" aria-label=\"LinkedIn\" class=\"in\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-linkedin-in\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\"><\/path><\/svg>\n                                                                                                            <\/a>\n                    <\/li>\n                    \t\t\t\t\t\t\t<\/ul>\n\t\t<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-523110f e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"523110f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b50ba51 elementor-widget-mobile__width-initial elementor-widget elementor-widget-heading\" data-id=\"b50ba51\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Our services<\/p>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9b82eff elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"9b82eff\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9233d39 elementor-align-left elementor-widget elementor-widget-elementskit-page-list\" data-id=\"9233d39\" data-element_type=\"widget\" data-widget_type=\"elementskit-page-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"ekit-wid-con\" >\t\t<div class=\"elementor-icon-list-items \">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-01d06f0 ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/trade-show-booth-design\/\" target=\"_blank\" rel=\"nofollow\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Design and assembly of stands<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-752b92b ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/manufacturing-and-assembly-of-booths\/\" target=\"_blank\" rel=\"nofollow\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Manufacture and assembly of booths<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-462331b ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/the-ideal-partner-for-conference-organizers\/\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Ideal conference partner<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-553f0e9 ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/boutique-online-servis\/\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Online Boutique <\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-f53fc6f ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/exhibition-stand-quote\/\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Quote your stand<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-377cc69 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"377cc69\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c76506b elementor-widget elementor-widget-heading\" data-id=\"c76506b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Where we are<\/p>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43caf76 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"43caf76\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-632015c elementor-align-left elementor-widget elementor-widget-elementskit-page-list\" data-id=\"632015c\" data-element_type=\"widget\" data-widget_type=\"elementskit-page-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"ekit-wid-con\" >\t\t<div class=\"elementor-icon-list-items \">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-01d06f0 ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/trade-show-booths-barcelona\/\" target=\"_blank\" rel=\"nofollow\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Barcelona<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-462331b ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/stands-in-madrid\/\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Madrid<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-2c35681 ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/design-assembly-of-stands-in-zaragoza\/\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Zaragoza<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8a58f89 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"8a58f89\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-30d8d2e elementor-widget elementor-widget-heading\" data-id=\"30d8d2e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Resources for you<\/p>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0c6f5c6 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"0c6f5c6\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fced3ee elementor-align-left elementor-widget elementor-widget-elementskit-page-list\" data-id=\"fced3ee\" data-element_type=\"widget\" data-widget_type=\"elementskit-page-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"ekit-wid-con\" >\t\t<div class=\"elementor-icon-list-items \">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-462331b ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/trade-show-resources\/\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Blog<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-01d06f0 ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/trade-show-resources\/\" target=\"_blank\" rel=\"nofollow\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Free ebooks<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-553f0e9 ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/success-projects-servis\/\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Projects by sector<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c838b1f e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"c838b1f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4e1d49c elementor-widget elementor-widget-heading\" data-id=\"4e1d49c\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">About us<\/p>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9971dde elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"9971dde\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6148d15 elementor-align-left elementor-widget elementor-widget-elementskit-page-list\" data-id=\"6148d15\" data-element_type=\"widget\" data-widget_type=\"elementskit-page-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"ekit-wid-con\" >\t\t<div class=\"elementor-icon-list-items \">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-01d06f0 ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/who-are-we-servis\/\" target=\"_blank\" rel=\"nofollow\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Who we are<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-icon-list-item   \">\n\t\t\t\t\t\t<a class=\"elementor-repeater-item-462331b ekit_badge_left\" href=\"https:\/\/www.serviscomplet.com\/en\/servis-sustainability\/\">\n\t\t\t\t\t\t\t<div class=\"ekit_page_list_content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\n\t\t\t\t\t\t\t\t\t<span class=\"ekit_page_list_title_title\">Sustainability<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6adb1b7 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"6adb1b7\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9b8b35f elementor-widget elementor-widget-heading\" data-id=\"9b8b35f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Contact<\/p>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-97ffc2f elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"97ffc2f\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e7aad7e e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"e7aad7e\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-f655a53 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"f655a53\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;background_motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;background_motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1dfba61 elementor-widget elementor-widget-heading\" data-id=\"1dfba61\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Email<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2914538 elementor-widget elementor-widget-heading\" data-id=\"2914538\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">info@serviscomplet.com<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5c40a4d e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"5c40a4d\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;background_motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;background_motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c614cd6 elementor-widget elementor-widget-heading\" data-id=\"c614cd6\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Barcelona<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c005da elementor-widget elementor-widget-heading\" data-id=\"4c005da\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Phone: +34 93 423 31 07<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-16a0533 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"16a0533\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;background_motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;background_motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-736ee65 elementor-widget elementor-widget-heading\" data-id=\"736ee65\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Madrid<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5938bc7 elementor-widget elementor-widget-heading\" data-id=\"5938bc7\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Phone: +34 91 669 94 80<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b8fd232 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"b8fd232\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;background_motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;background_motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f88b783 elementor-widget elementor-widget-heading\" data-id=\"f88b783\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Zaragoza<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d8f12b3 elementor-widget elementor-widget-heading\" data-id=\"d8f12b3\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Phone: +34 976 33 05 98<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fb0832e e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"fb0832e\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0ea5738 elementor-widget elementor-widget-template\" data-id=\"0ea5738\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"container\" data-elementor-id=\"33146\" class=\"elementor elementor-33146 elementor-30866\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4d4b69b9 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"4d4b69b9\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-44f792d0 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"44f792d0\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7b675e3c elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"7b675e3c\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3ceadec7 e-grid e-con-full wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"3ceadec7\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-160d204c elementor-widget-mobile__width-initial elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"160d204c\" data-element_type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><img fetchpriority=\"high\" decoding=\"async\" width=\"300\" height=\"194\" src=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/ISO-14001-Fondo-negro-300x194.png\" class=\"attachment-medium size-medium wp-image-32225\" alt=\"Certificaci\u00f3n ISO 149001: 2015 Y 14001:2015\" srcset=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/ISO-14001-Fondo-negro-300x194.png 300w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/ISO-14001-Fondo-negro-768x496.png 768w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/ISO-14001-Fondo-negro-400x260.png 400w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/ISO-14001-Fondo-negro-700x452.png 700w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/ISO-14001-Fondo-negro.png 960w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/figure><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\">ISO 9001 and 14001 certified<\/h3><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-35b376b5 elementor-widget-mobile__width-initial elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"35b376b5\" data-element_type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><img decoding=\"async\" width=\"960\" height=\"620\" src=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/CERTIFICADO-SOSTENIBILIDAD.png\" class=\"attachment-full size-full wp-image-54077\" alt=\"\" srcset=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/CERTIFICADO-SOSTENIBILIDAD.png 960w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/CERTIFICADO-SOSTENIBILIDAD-300x194.png 300w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/CERTIFICADO-SOSTENIBILIDAD-768x496.png 768w\" sizes=\"(max-width: 960px) 100vw, 960px\" \/><\/figure><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\">Certified for CO2 offsetting<\/h3><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3f930739 elementor-widget-mobile__width-initial elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"3f930739\" data-element_type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"620\" src=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/Certificados-sin-fondo-960-x-620-px.png\" class=\"attachment-full size-full wp-image-30811\" alt=\"Certificados EVENTSOFT SIN FONDO\" srcset=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/Certificados-sin-fondo-960-x-620-px.png 960w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/Certificados-sin-fondo-960-x-620-px-300x194.png 300w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/Certificados-sin-fondo-960-x-620-px-768x496.png 768w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/Certificados-sin-fondo-960-x-620-px-700x452.png 700w\" sizes=\"(max-width: 960px) 100vw, 960px\" \/><\/figure><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\">Eventsoft certified<\/h3><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-99cc982 elementor-widget-mobile__width-initial elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"99cc982\" data-element_type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"620\" src=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/Certificados-sin-fondo-960-x-620-px-4.png\" class=\"attachment-full size-full wp-image-35630\" alt=\"Certificado AFE (Proveedor recomendado)\" srcset=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/Certificados-sin-fondo-960-x-620-px-4.png 960w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/Certificados-sin-fondo-960-x-620-px-4-300x194.png 300w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/Certificados-sin-fondo-960-x-620-px-4-768x496.png 768w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/Certificados-sin-fondo-960-x-620-px-4-700x452.png 700w\" sizes=\"(max-width: 960px) 100vw, 960px\" \/><\/figure><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\">AFE Seal (Recommended supplier)<\/h3><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-162b44a elementor-widget-mobile__width-initial elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"162b44a\" data-element_type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><img loading=\"lazy\" decoding=\"async\" width=\"470\" height=\"330\" src=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/ICCA-MEMBER.png\" class=\"attachment-full size-full wp-image-52758\" alt=\"\" srcset=\"https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/ICCA-MEMBER.png 470w, https:\/\/www.serviscomplet.com\/wp-content\/uploads\/2024\/09\/ICCA-MEMBER-300x211.png 300w\" sizes=\"(max-width: 470px) 100vw, 470px\" \/><\/figure><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\">ICCA Member<\/h3><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2710a72 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"2710a72\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d3614c elementor-widget elementor-widget-html\" data-id=\"5d3614c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<footer class=\"footer\">\r\n    <span style=\"color: #FFFFFF;\">\u00a9 Copyright Servis Group<\/span>\r\n    <span style=\"color: #FFFFFF;\"> | <\/span>\r\n    <span>\r\n        <a href=\"https:\/\/www.serviscomplet.com\/en\/legal-notice-servis\/\" style=\"color:#FFFFFF\">Legal Notice<\/a>\r\n    <\/span>\r\n    <span style=\"color: #FFFFFF;\"> | <\/span>\r\n    <span>\r\n        <a href=\"https:\/\/25882232.fs1.hubspotusercontent-eu1.net\/hubfs\/25882232\/Quality%20policy.pdf\" style=\"color:#FFFFFF\" target=\"_blank\" rel=\"noopener\">Quality and Sustainability Policy<\/a>\r\n    <\/span>\r\n    <span style=\"color: #FFFFFF;\"> | <\/span>\r\n    <span>\r\n        <a href=\"https:\/\/www.serviscomplet.com\/en\/cookies-policy-servis\/\" style=\"color:#FFFFFF\" target=\"_blank\">Cookies Policy<\/a>\r\n    <\/span>\r\n\r\n    <span style=\"color: #FFFFFF;\"> | <\/span>\r\n    <span>\r\n        <a href=\"https:\/\/www.serviscomplet.com\/en\/servis-privacy-policy\/\" style=\"color:#FFFFFF\" target=\"_blank\"> Privacy Policy<\/a>\r\n    <\/span>\r\n<\/footer>\r\n\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>We have yourproject We&#8217;ll be in touch as soon as we can. What you&#8217;ve told us is already with an account manager. What happens now Three steps to seeingyour stand drawn We look at your caseWe read what you&#8217;ve told us, look at the show and the space you&#8217;ve been given, and work out what can really be done there. We call you to pin it downHalf an hour to understand what you want to happen on the stand. It&#8217;s the part that changes the outcome most, and a form can&#8217;t do it. You get the proposalA design made for your space, with the price and what it covers in writing. Free and with no commitment: if it doesn&#8217;t convince you, we change it. A few of the standswe&#8217;ve built 1 \/ 0 \u00b7 See more stands The same team that buildsyour stand, builds these COP25 IFEMA Madrid \u00b7 2019 The climate summit changed country a month before it opened. Two plenary halls, fifteen meeting rooms and 1,800 bespoke tables, built in the time the drawings alone usually take. 30 days from plan to full build, with 190 people and 13,000 m\u00b2 NATO Summit IFEMA Madrid \u00b7 2022 Forty heads of state in one building and two thousand journalists next door. Every room, every office and every route exactly where protocol said, and on time. 40+ heads of state, and a press area for over 2,000 journalists UN \u00b7 FfD4 Conference Seville \u00b7 2025 The United Nations brought a COP-sized conference to Seville. We took care of all of it: design, production, logistics, build and dismantle, inside the venue and out. 60,000 m\u00b2 produced, with more than twenty-five rooms running daily programme See all our projects<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"content-type":"","footnotes":""},"class_list":["post-42594","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.serviscomplet.com\/en\/wp-json\/wp\/v2\/pages\/42594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.serviscomplet.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.serviscomplet.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.serviscomplet.com\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.serviscomplet.com\/en\/wp-json\/wp\/v2\/comments?post=42594"}],"version-history":[{"count":55,"href":"https:\/\/www.serviscomplet.com\/en\/wp-json\/wp\/v2\/pages\/42594\/revisions"}],"predecessor-version":[{"id":62749,"href":"https:\/\/www.serviscomplet.com\/en\/wp-json\/wp\/v2\/pages\/42594\/revisions\/62749"}],"wp:attachment":[{"href":"https:\/\/www.serviscomplet.com\/en\/wp-json\/wp\/v2\/media?parent=42594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}