<!doctype html><html lang="es" class="light-theme">  <head>    <meta charset="UTF-8" />    <link rel="preconnect" href="https://fonts.googleapis.com" />    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&family=Inter+Tight:wght@700;800&display=swap" rel="stylesheet" />    <link rel="preconnect" href="https://firebasestorage.googleapis.com" crossorigin />    <link rel="dns-prefetch" href="https://firebasestorage.googleapis.com" />    <link rel="preconnect" href="https://lh3.googleusercontent.com" crossorigin />    <link rel="preload" as="image" href="/DARK%20LOGO%20(1).png" fetchpriority="low" />    <!-- Favicon Google/SEO: llave negra sobre fondo blanco (48Ã—48+ obligatorio para Search) -->                            <link rel="apple-touch-icon" href="/brand/icons/apple-touch-icon.png?v=cs260822" sizes="180x180" />        <meta name="msapplication-TileImage" content="/brand/icons/favicon-192.png?v=cs260822" />    <meta name="msapplication-TileColor" content="#ffffff" />        <!-- viewport-fit=cover: content extends into safe areas; iOS Safari bottom bar -->    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />    <meta http-equiv="Cross-Origin-Opener-Policy" content="same-origin-allow-popups" />    <meta name="mobile-web-app-capable" content="yes" />    <meta name="apple-mobile-web-app-capable" content="yes" />    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />    <meta name="color-scheme" content="light" />    <meta name="theme-color" content="#ffffff" />    <script>
    (function () {
      try {
        var root = document.documentElement;
        var tab = null;
        var saved = null;
        try { tab = sessionStorage.getItem('clubsive_theme'); } catch (e0) {}
        try { saved = localStorage.getItem('clubsive_theme'); } catch (e1) {}
        var theme = (tab === 'dark' || tab === 'light') ? tab
          : (saved === 'dark' || saved === 'light') ? saved
          : 'light';
        root.classList.add(theme === 'light' ? 'light-theme' : 'dark-theme');
        root.classList.remove(theme === 'light' ? 'dark-theme' : 'light-theme');
        root.style.colorScheme = theme;
        root.style.backgroundColor = theme === 'light' ? '#ffffff' : '#121212';
        root.style.setProperty('--app-bg', theme === 'light' ? '#ffffff' : '#121212');
        root.style.setProperty('--app-chrome-bg', theme === 'light' ? '#f3f4f6' : '#121212');
        var meta = document.querySelector('meta[name="theme-color"]');
        if (meta) meta.setAttribute('content', theme === 'light' ? '#ffffff' : '#121212');
        var cs = document.querySelector('meta[name="color-scheme"]');
        if (cs) cs.setAttribute('content', theme);
        try { sessionStorage.setItem('clubsive_theme', theme); } catch (e2) {}
      } catch (e) {
        var r = document.documentElement;
        r.classList.add('light-theme');
        r.classList.remove('dark-theme');
        r.style.colorScheme = 'light';
        r.style.backgroundColor = '#ffffff';
        r.style.setProperty('--app-bg', '#ffffff');
      }
    })();
    </script>        <!-- CLUBSIVE_SEO_HEAD_START -->
    <!-- SEO clubsive.com (build-time) -->
    <title>Clubsive — El ecosistema nightlife que conecta personas, discotecas y DJs</title>
    <meta name="description" content="Descubre dónde salir, sigue discotecas y DJs, escucha música, lee reseñas y conecta con la comunidad nightlife. Descubre eventos en Clubsive; las entradas de pago se completan en Fourvenues u otro proveedor externo." />
    <meta name="keywords" content="Clubsive, app nightlife, discotecas y eventos, red social de discotecas, comunidad nightlife, DJs y música electrónica, reseñas de discotecas, planes para salir" />
    <meta name="author" content="Clubsive" />
    <meta name="publisher" content="Clubsive" />
    <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
    <meta name="googlebot" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
    <meta name="theme-color" content="#0a0e18" />
    <meta name="application-name" content="Clubsive" />
    <meta name="apple-mobile-web-app-title" content="Clubsive" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="mobile-web-app-capable" content="yes" />
    <link rel="canonical" href="https://clubsive.com/" />
    <link rel="manifest" href="https://clubsive.com/manifest.webmanifest" />
    <!-- Google favicon: 48×48 PNG primero (sin duplicados); cache-bust forzado -->
    <link rel="icon" type="image/png" sizes="48x48" href="https://clubsive.com/brand/icons/favicon-48.png?v=cs26091616" />
    <link rel="icon" type="image/png" sizes="192x192" href="https://clubsive.com/brand/icons/favicon-192.png?v=cs26091616" />
    <link rel="icon" type="image/png" sizes="512x512" href="https://clubsive.com/brand/icons/favicon-512.png?v=cs26091616" />
    <link rel="apple-touch-icon" sizes="180x180" href="https://clubsive.com/brand/icons/apple-touch-icon.png?v=cs26091616" />
    <link rel="shortcut icon" href="https://clubsive.com/brand/icons/favicon.ico?v=cs26091616" />
    <link rel="icon" href="https://clubsive.com/brand/icons/favicon.ico?v=cs26091616" sizes="any" />
    <link rel="alternate" hreflang="es-ES" href="https://clubsive.com/" />
    <link rel="alternate" hreflang="es-app" href="https://clubsive.app/app" />
    <link rel="alternate" hreflang="es-events" href="https://clubsive.events/events" />
    <link rel="alternate" hreflang="es-club" href="https://clubsive.club/club" />
    <link rel="alternate" hreflang="es-social" href="https://clubsive.social/social" />
    <link rel="alternate" hreflang="x-default" href="https://clubsive.com/" />

    <meta property="og:type" content="website" />
    <meta property="og:site_name" content="Clubsive" />
    <meta property="og:locale" content="es_ES" />
    <meta property="og:url" content="https://clubsive.com/" />
    <meta property="og:title" content="Clubsive — El ecosistema nightlife que conecta personas, discotecas y DJs" />
    <meta property="og:description" content="Descubre dónde salir, sigue discotecas y DJs, escucha música, lee reseñas y conecta con la comunidad nightlife. Descubre eventos en Clubsive; las entradas de pago se completan en Fourvenues u otro proveedor externo." />
    <meta property="og:image" content="https://clubsive.com/images/marketing/og-default.png" />
    <meta property="og:image:secure_url" content="https://clubsive.com/images/marketing/og-default.png" />
    <meta property="og:image:type" content="image/png" />
    <meta property="og:image:width" content="1200" />
    <meta property="og:image:height" content="630" />
    <meta property="og:image:alt" content="Clubsive — ecosistema nightlife" />

    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:site" content="@clubsive" />
    <meta name="twitter:creator" content="@clubsive" />
    <meta name="twitter:url" content="https://clubsive.com/" />
    <meta name="twitter:title" content="Clubsive — El ecosistema nightlife que conecta personas, discotecas y DJs" />
    <meta name="twitter:description" content="Descubre dónde salir, sigue discotecas y DJs, escucha música, lee reseñas y conecta con la comunidad nightlife. Descubre eventos en Clubsive; las entradas de pago se completan en Fourvenues u otro proveedor externo." />
    <meta name="twitter:image" content="https://clubsive.com/images/marketing/og-default.png" />
    <meta name="twitter:image:alt" content="Clubsive — ecosistema nightlife" />

    <link rel="sitemap" type="application/xml" href="https://clubsive.com/sitemap-index.xml" />
    <script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://clubsive.com/#organization","name":"Clubsive","legalName":"Clubsive","url":"https://clubsive.com/","logo":{"@type":"ImageObject","contentUrl":"https://clubsive.com/brand/clubsive-logo.png","url":"https://clubsive.com/brand/clubsive-logo.png","name":"Logo Clubsive","caption":"Logotipo oficial Clubsive: llave negra sobre fondo blanco","width":512,"height":512,"representativeOfPage":true,"creditText":"Clubsive","copyrightNotice":"© 2026 Clubsive"},"image":[{"@type":"ImageObject","contentUrl":"https://clubsive.com/images/marketing/og-default.png","url":"https://clubsive.com/images/marketing/og-default.png","name":"Clubsive Open Graph","width":1200,"height":630,"representativeOfPage":true,"creditText":"Clubsive","copyrightNotice":"© 2026 Clubsive"},"https://clubsive.com/brand/clubsive-key-mark.png","https://clubsive.com/images/marketing/magazine-launch.png"],"description":"Descubre dónde salir, sigue discotecas y DJs, escucha música, lee reseñas y conecta con la comunidad nightlife. Descubre eventos en Clubsive; las entradas de pago se completan en Fourvenues u otro proveedor externo.","slogan":"El ecosistema que conecta la noche","knowsAbout":["nightlife","discotecas","eventos","eventos hoy","dónde salir esta noche","planes","planes esta noche","DJs","música electrónica","comunidad nightlife","fiesta Madrid","fiesta Barcelona","discotecas España"],"areaServed":{"@type":"Country","name":"Spain"},"sameAs":["https://clubsive.com","https://clubsive.app","https://clubsive.events","https://clubsive.club","https://clubsive.social","https://instagram.com/clubsive","https://www.youtube.com/@clubsive","https://www.tiktok.com/@clubsive"],"contactPoint":[{"@type":"ContactPoint","contactType":"customer support","email":"clubsive.info@gmail.com","url":"https://clubsive.com/contact","availableLanguage":["Spanish","English"]}],"brand":{"@type":"Brand","name":"Clubsive","logo":"https://clubsive.com/brand/clubsive-logo.png","url":"https://clubsive.com/"},"alternateName":["Clubsive Nightlife"]},{"@type":"WebSite","@id":"https://clubsive.com/#website","name":"Clubsive","url":"https://clubsive.com/","description":"Descubre dónde salir, sigue discotecas y DJs, escucha música, lee reseñas y conecta con la comunidad nightlife. Descubre eventos en Clubsive; las entradas de pago se completan en Fourvenues u otro proveedor externo.","inLanguage":"es-ES","publisher":{"@id":"https://clubsive.com/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://clubsive.com/search?q={search_term_string}"},"query-input":"required name=search_term_string"}},{"@context":"https://schema.org","@type":"FAQPage","url":"https://clubsive.com/faq","mainEntity":[{"@type":"Question","name":"¿Cómo compro entradas desde Clubsive?","acceptedAnswer":{"@type":"Answer","text":"Te redirigimos a Fourvenues para completar la compra. Clubsive no cobra ni emite la entrada de pago."}},{"@type":"Question","name":"¿Qué diferencia hay entre .com, .app, .events, .club y .social?","acceptedAnswer":{"@type":"Answer","text":"Misma marca, cinco productos: identidad, app, descubrimiento de eventos, SaaS para salas y capa social."}}]}]}</script>
    <!-- CLUBSIVE_SEO_HEAD_END -->        <!-- PWA Meta Tags -->    <meta name="application-name" content="Clubsive" />    <meta name="apple-mobile-web-app-title" content="Clubsive" />    <meta name="format-detection" content="telephone=no" />    <meta name="msapplication-TileColor" content="#ffffff" />    <meta name="msapplication-tap-highlight" content="no" />        <!-- Critical Resource Hints para Performance -->    <link rel="dns-prefetch" href="//fonts.googleapis.com" />    <link rel="dns-prefetch" href="//fonts.gstatic.com" />    <link rel="dns-prefetch" href="//firestore.googleapis.com" />    <link rel="dns-prefetch" href="//firebasestorage.googleapis.com" />    <link rel="dns-prefetch" href="//www.google-analytics.com" />    <link rel="dns-prefetch" href="//www.googletagmanager.com" />    <link rel="dns-prefetch" href="//maps.googleapis.com" />    <link rel="dns-prefetch" href="//api.mapbox.com" />        <link rel="preconnect" href="https://firestore.googleapis.com" />    <link rel="preconnect" href="https://firebasestorage.googleapis.com" />        <!-- Additional Links for SEO -->    <link rel="sitemap" type="application/xml" href="/sitemap.xml" />        <style>      /* Consistente con tailwind: negro base, gradiente lo pinta la capa fija (Tailwind) */      :root {        --app-top-bg: #0b1f4b;        --app-bg: #ffffff;        --safe-bottom: env(safe-area-inset-bottom, 0px);        --screen-pad-bottom: calc(16px + var(--safe-bottom));        --screen-pad-top: env(safe-area-inset-top, 0px);      }      html, body {        margin: 0;        padding: 0;        min-height: 100%;        min-height: 100dvh;        min-height: 100svh;        min-height: -webkit-fill-available;        overscroll-behavior-y: contain; background: transparent;      }      #root {        background: transparent;        min-height: 100%;        min-height: 100dvh;        min-height: -webkit-fill-available;        padding: 0;        margin: 0;      }      /* iOS Safari: pinta env(safe-area-inset-bottom) con #000 (negro mÃ¡ximo) por defecto */  #ios-safe-bottom {        position: fixed;        bottom: 0;        left: 0;        right: 0;        height: env(safe-area-inset-bottom, 0px);        min-height: env(safe-area-inset-bottom, 0px);        background: #ffffff;        pointer-events: none;        z-index: 1;      }      /* iOS notch: solo blur (sin tinte ni lÃ­nea) para fundir la barra de estado con la pantalla */      #ios-safe-top {        position: fixed;        top: 0; left: 0; right: 0;        height: env(safe-area-inset-top);        min-height: env(safe-area-inset-top);        background: transparent;        border-bottom: none;        backdrop-filter: blur(20px) saturate(140%);        -webkit-backdrop-filter: blur(20px) saturate(140%);        transform: translateZ(0);        -webkit-transform: translateZ(0);        z-index: 2147483647;        pointer-events: none;      }      @supports not (backdrop-filter: blur(1px)) {        #ios-safe-top {          background: rgba(10, 18, 35, 0.85);        }      }            /* Favicon con esquinas redondeadas */      link[rel="icon"] {        border-radius: 25% !important;        clip-path: inset(0 round 25%) !important;      }            link[rel*="icon"] {        border-radius: 8px !important;      }      /* Boot loading: ClubsiveBusyChip (= avatar/banner). NUNCA la llave. */
      .app-loading {
        position: fixed;
        inset: 0;
        z-index: 2147483000;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
        box-sizing: border-box;
        background: var(--app-bg, #ffffff);
      }
      .app-loading__chip {
        width: 5.5rem;
        height: 5.5rem;
        border-radius: 9999px;
        display: flex;
        align-items: center;
        justify-content: center;
        background: #e8eaed;
        color: #1a1d23;
      }
      html.dark-theme .app-loading__chip {
        background: #353840;
        color: rgba(255, 255, 255, 0.92);
      }
      .app-loading__spinner {
        position: relative;
        width: 84%;
        height: 84%;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      .app-loading__wave {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        color: rgba(26, 29, 35, 0.62);
        transform-origin: center;
        animation: clubsive-boot-wave 2.6s linear infinite;
      }
      html.dark-theme .app-loading__wave { color: rgba(255, 255, 255, 0.72); }
      .app-loading__loader {
        position: relative;
        width: 46%;
        height: 46%;
        animation: clubsive-boot-spin 0.8s linear infinite;
      }
      @keyframes clubsive-boot-wave { to { transform: rotate(360deg); } }
      @keyframes clubsive-boot-spin { to { transform: rotate(360deg); } }
      @media (prefers-reduced-motion: reduce) {
        .app-loading__wave, .app-loading__loader { animation: none; }
      }    </style>    <!-- App version: bump on deploy. Cleanup runs ONLY when version changes. -->    <script>
    (function() {
      'use strict';
      var CACHE_VERSION = '2026092001';
      function needsUpdate() {
        try {
          return localStorage.getItem('appCacheVersion') !== CACHE_VERSION;
        } catch (e) {
          return true;
        }
      }
      function stripCvFromUrl() {
        try {
          var u = new URL(window.location.href);
          if (!u.searchParams.has('_cv')) return;
          u.searchParams.delete('_cv');
          var qs = u.searchParams.toString();
          history.replaceState(null, '', u.pathname + (qs ? '?' + qs : '') + u.hash);
        } catch (e) {}
      }
      function performUpdate() {
        var reloadKey = 'reloaded_' + CACHE_VERSION;
        try {
          if (sessionStorage.getItem(reloadKey) === '1') {
            try { localStorage.setItem('appCacheVersion', CACHE_VERSION); } catch (e) {}
            try {
              var keep = { appCacheVersion:1, clubsive_theme:1, clubsive_language:1, theme:1, locale:1, language:1 };
              for (var i = localStorage.length - 1; i >= 0; i--) {
                var k = localStorage.key(i);
                if (!k) continue;
                if (k.indexOf('firebase:') === 0) continue;
                if (keep[k]) continue;
                localStorage.removeItem(k);
              }
            } catch (e3) {}
            stripCvFromUrl();
            return;
          }
        } catch (e) {}
        if ('serviceWorker' in navigator) {
          navigator.serviceWorker.getRegistrations().then(function(regs) {
            regs.forEach(function(r) { r.unregister(); });
          });
        }
        if (window.caches) {
          caches.keys().then(function(names) {
            names.forEach(function(n) { caches.delete(n); });
          });
        }
        try {
          localStorage.setItem('appCacheVersion', CACHE_VERSION);
        } catch (e) {}
        try {
          sessionStorage.setItem(reloadKey, '1');
        } catch (e) {}
        try {
          stripCvFromUrl();
          window.location.reload();
        } catch (e2) {
          window.location.reload();
        }
      }
      stripCvFromUrl();
      if (needsUpdate()) {
        performUpdate();
      } else if (window.caches) {
        try {
          caches.keys().then(function(names) {
            if (!names.length) return;
            var clean = function() { names.forEach(function(n) { caches.delete(n); }); };
            if (window.requestIdleCallback) requestIdleCallback(clean); else setTimeout(clean, 4000);
          });
        } catch (e) {}
      }
    })();
    </script>    <script type="module" crossorigin src="/index-tMD1M4Qb.js"></script>
    <link rel="modulepreload" crossorigin href="/vendor-DyyV7WNO.js">
    <link rel="modulepreload" crossorigin href="/ui-CrHX7nyS.js">
    <link rel="modulepreload" crossorigin href="/router-oMf1eoCB.js">
    <link rel="stylesheet" crossorigin href="/index-fAz3L-o1.css">
  </head>  <body>    <!-- iOS notch overlay: fills status bar area -->    <div id="ios-safe-top" aria-hidden="true"></div>    <!-- iOS Safari: pinta env(safe-area-inset-bottom) con #000 (cambia a #0f172a solo en Share/Selector cuenta) -->    <div id="ios-safe-bottom" aria-hidden="true"></div>    <!-- App Root -->    <div id="root">      <!-- CLUBSIVE_PRERENDER_START -->      <div class="app-loading" role="status" aria-label="Cargando Clubsive">
          <div class="app-loading__chip" aria-hidden="true">
            <div class="app-loading__spinner">
              <svg class="app-loading__wave" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid meet"><path d="M 50.000 11.400 L 51.899 11.345 L 53.823 11.186 L 55.793 10.947 L 57.825 10.660 L 59.927 10.370 L 62.095 10.127 L 64.317 9.985 L 66.571 9.995 L 68.823 10.202 L 71.038 10.641 L 73.172 11.339 L 75.187 12.306 L 77.042 13.538 L 78.709 15.018 L 80.164 16.719 L 81.398 18.602 L 82.415 20.621 L 83.229 22.729 L 83.869 24.881 L 84.370 27.035 L 84.778 29.155 L 85.138 31.218 L 85.499 33.210 L 85.901 35.129 L 86.378 36.984 L 86.954 38.790 L 87.636 40.573 L 88.420 42.358 L 89.287 44.172 L 90.203 46.040 L 91.124 47.980 L 92.000 50.000 L 92.775 52.101 L 93.393 54.274 L 93.804 56.498 L 93.966 58.745 L 93.847 60.983 L 93.429 63.174 L 92.711 65.282 L 91.705 67.275 L 90.436 69.125 L 88.943 70.815 L 87.271 72.340 L 85.473 73.702 L 83.601 74.920 L 81.704 76.018 L 79.825 77.032 L 77.998 77.998 L 76.247 78.959 L 74.580 79.951 L 72.996 81.007 L 71.481 82.149 L 70.012 83.388 L 68.560 84.723 L 67.091 86.137 L 65.575 87.601 L 63.981 89.075 L 62.289 90.510 L 60.483 91.852 L 58.562 93.046 L 56.532 94.037 L 54.411 94.782 L 52.223 95.244 L 50.000 95.400 L 47.777 95.244 L 45.589 94.782 L 43.468 94.037 L 41.438 93.046 L 39.517 91.852 L 37.711 90.510 L 36.019 89.075 L 34.425 87.601 L 32.909 86.137 L 31.440 84.723 L 29.988 83.388 L 28.519 82.149 L 27.004 81.007 L 25.420 79.951 L 23.753 78.959 L 22.002 77.998 L 20.175 77.032 L 18.296 76.018 L 16.399 74.920 L 14.527 73.702 L 12.729 72.340 L 11.057 70.815 L 9.564 69.125 L 8.295 67.275 L 7.289 65.282 L 6.571 63.174 L 6.153 60.983 L 6.034 58.745 L 6.196 56.498 L 6.607 54.274 L 7.225 52.101 L 8.000 50.000 L 8.876 47.980 L 9.797 46.040 L 10.713 44.172 L 11.580 42.358 L 12.364 40.573 L 13.046 38.790 L 13.622 36.984 L 14.099 35.129 L 14.501 33.210 L 14.862 31.218 L 15.222 29.155 L 15.630 27.035 L 16.131 24.881 L 16.771 22.729 L 17.585 20.621 L 18.602 18.602 L 19.836 16.719 L 21.291 15.018 L 22.958 13.538 L 24.813 12.306 L 26.828 11.339 L 28.962 10.641 L 31.177 10.202 L 33.429 9.995 L 35.683 9.985 L 37.905 10.127 L 40.073 10.370 L 42.175 10.660 L 44.207 10.947 L 46.177 11.186 L 48.101 11.345 L 50.000 11.400 Z" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linejoin="round" stroke-linecap="round"></path></svg>
              <svg class="app-loading__loader" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>
            </div>
          </div>
        </div>      <!-- CLUBSIVE_PRERENDER_END -->    </div>        <!-- Main App Entry Point -->        <script>
    (function(){
      var BOOT_KEY = 'clubsive-boot-reload';
      var FAIL_MS = 45000;
      setTimeout(function(){
        if (window.__CLUBSIVE_MOUNTED__) return;
        try {
          if (sessionStorage.getItem(BOOT_KEY) !== '1') {
            sessionStorage.setItem(BOOT_KEY, '1');
            location.reload();
            return;
          }
        } catch (e) {}
        var root = document.getElementById('root');
        if (!root) return;
        var boot = root.querySelector('.app-loading');
        if (!boot) return;
        var ink = '#111';
        var chipBg = '#e8eaed';
        try {
          if (!document.documentElement.classList.contains('light-theme')) {
            ink = '#f5f5f5';
            chipBg = '#353840';
          }
        } catch (e) {}
        boot.innerHTML = '<div style="font-family:system-ui,sans-serif;text-align:center;padding:24px;color:'+ink+';max-width:20rem;margin:0 auto">'
          + '<div style="width:5.5rem;height:5.5rem;border-radius:9999px;background:'+chipBg+';margin:0 auto 16px"></div>'
          + '<p style="font-weight:600;margin:0 0 8px">No se pudo cargar</p>'
          + '<p style="opacity:.65;font-size:14px;margin:0 0 16px">Comprueba tu conexion e intentalo de nuevo.</p>'
          + '<button type="button" onclick="location.reload()" style="padding:10px 20px;border-radius:10px;border:0;font-weight:700;background:#2563eb;color:#fff">Reintentar</button>'
          + '</div>';
      }, FAIL_MS);
    })();
    </script>  </body></html>