.elementor-4275 .elementor-element.elementor-element-1d17854{--display:flex;}:root{--page-title-display:none;}@media(min-width:768px){.elementor-4275 .elementor-element.elementor-element-1d17854{--width:100vw;}}/* Start custom CSS for html, class: .elementor-element-d5bf235 *//* TECH SHOW ECUADOR 2026 — UBICACION v5 (blink zones + responsive fix) */

.tsl-section {
  position: relative;
  background: #04050f;
  padding: 100px 24px 80px;
  overflow: hidden;
  font-family: 'Barlow', sans-serif;
}
.tsl-bg {
  position: fixed; inset: -6%; z-index: 0;
  background-image: url('https://techshowecuador.com/wp-content/uploads/2026/02/BANNER-ULTIMO-FERIA.jpg.jpeg');
  background-size: cover; background-position: center center;
  animation: tslKenBurns 24s ease-in-out infinite alternate;
  will-change: transform;
}
@keyframes tslKenBurns {
  0%   { transform: scale(1.0)  translate(0%,0%); }
  50%  { transform: scale(1.07) translate(-1%,-0.5%); }
  100% { transform: scale(1.0)  translate(1%, 0.5%); }
}
.tsl-overlay {
  position: fixed; inset: 0; z-index: 1;
  background: linear-gradient(to bottom, rgba(3,4,16,0.88), rgba(3,4,16,0.82)),
              linear-gradient(135deg, rgba(155,93,229,0.06) 0%, transparent 60%);
}
.tsl-overlay::after {
  content: ''; position: absolute; inset: 0;
  background-image: linear-gradient(rgba(58,181,255,.022) 1px, transparent 1px),
    linear-gradient(90deg, rgba(58,181,255,.022) 1px, transparent 1px);
  background-size: 56px 56px;
}
.tsl-inner { position: relative; z-index: 2; max-width: 1100px; margin: 0 auto; }

/* ── HERO ── */
.tsl-hero { text-align: center; margin-bottom: 52px; }
.tsl-eyebrow {
  display: flex; align-items: center; justify-content: center; gap: 14px;
  font-family: 'Barlow Condensed', sans-serif;
  font-size: .72rem; font-weight: 700; letter-spacing: .22em; text-transform: uppercase;
  color: #3ab5ff; margin-bottom: 16px;
}
.tsl-line { display: inline-block; width: 36px; height: 1px; background: #3ab5ff; box-shadow: 0 0 8px #3ab5ff; }
.tsl-heading {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: clamp(2.2rem, 5.5vw, 4rem); font-weight: 900; text-transform: uppercase;
  color: #fff; line-height: 1.05; margin-bottom: 14px;
}
.tsl-heading em { font-style: normal; background: linear-gradient(90deg,#3ab5ff,#9b5de5); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
.tsl-heading--sm { font-size: clamp(1.7rem, 3.5vw, 2.8rem); }
.tsl-subhead {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: .85rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
  color: rgba(160,185,230,.45);
}

/* ── VENUE SPLIT ── */
.tsl-venue-split {
  display: grid; grid-template-columns: 1fr 1.4fr;
  gap: 24px; align-items: stretch; margin-bottom: 28px;
}
@media(max-width:860px){ .tsl-venue-split { grid-template-columns: 1fr; } }

.tsl-venue-left {
  display: flex; flex-direction: column; gap: 0;
  background: rgba(6,8,22,.88); border: 1px solid rgba(58,181,255,.12);
  border-radius: 6px; overflow: hidden;
}
.tsl-venue-info-stack { flex: 1; display: flex; flex-direction: column; }
.tsl-vinfo-item {
  display: flex; align-items: center; gap: 16px; padding: 20px 24px;
  border-bottom: 1px solid rgba(58,181,255,.07); transition: background .25s;
}
.tsl-vinfo-item:last-child { border-bottom: none; }
.tsl-vinfo-item:hover { background: rgba(58,181,255,.04); }
.tsl-ibar-icon {
  width: 50px; height: 50px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: rgba(58,181,255,.07); border: 1px solid rgba(58,181,255,.16);
  border-radius: 5px; padding: 11px; transition: background .3s, border-color .3s, transform .3s;
}
.tsl-ibar-icon svg { width: 100%; height: 100%; stroke: rgba(200,220,255,.45); filter: drop-shadow(0 0 6px rgba(58,181,255,.15)); transition: stroke .3s, filter .3s; }
.tsl-vinfo-item:hover .tsl-ibar-icon { background: rgba(58,181,255,.13); border-color: rgba(58,181,255,.35); transform: translateY(-2px); }
.tsl-vinfo-item:hover .tsl-ibar-icon svg { stroke: rgba(200,225,255,.85); filter: drop-shadow(0 0 10px rgba(58,181,255,.4)); }
.tsl-vinfo-item strong { display: block; font-family: 'Barlow Condensed', sans-serif; font-size: .68rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: #3ab5ff; margin-bottom: 4px; }
.tsl-vinfo-item span { font-size: .82rem; font-weight: 400; color: rgba(200,220,255,.82); display: block; line-height: 1.4; }

.tsl-maps-btn {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  padding: 16px 24px; margin: 0;
  background: rgba(58,181,255,.08); border: none; border-top: 1px solid rgba(58,181,255,.15);
  font-family: 'Barlow Condensed', sans-serif; font-size: .78rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
  color: #3ab5ff !important; text-decoration: none !important; transition: background .3s, color .3s;
}
.tsl-maps-btn:hover { background: rgba(58,181,255,.16); color: #fff !important; }
.tsl-maps-btn svg { stroke: currentColor; flex-shrink: 0; }

.tsl-venue-photo { position: relative; border-radius: 6px; overflow: hidden; border: 1px solid rgba(58,181,255,.15); min-height: 300px; }
.tsl-venue-photo img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 8s ease; }
.tsl-venue-photo:hover img { transform: scale(1.04); }
.tsl-cinematic-vignette { position: absolute; inset: 0; background: linear-gradient(to bottom, transparent 40%, rgba(3,4,16,.85) 100%), linear-gradient(to right, rgba(3,4,16,.2) 0%, transparent 25%, transparent 75%, rgba(3,4,16,.2) 100%); }
.tsl-cinematic-badge { position: absolute; bottom: 18px; left: 20px; display: flex; align-items: center; gap: 8px; padding: 7px 16px; border-radius: 3px; background: rgba(3,4,16,.85); border: 1px solid rgba(58,181,255,.3); font-family: 'Barlow Condensed', sans-serif; font-size: .68rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: #3ab5ff; }
.tsl-badge-dot { width: 7px; height: 7px; border-radius: 50%; background: #3ab5ff; box-shadow: 0 0 8px #3ab5ff; animation: tslPulse 1.8s ease-in-out infinite; }
@keyframes tslPulse { 0%,100%{opacity:1;} 50%{opacity:.25;} }

/* ── MAPA GOOGLE ── */
.tsl-mapblock { margin-bottom: 20px; }
.tsl-maplabel { display: flex; align-items: center; gap: 10px; font-family: 'Barlow Condensed', sans-serif; font-size: .68rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: rgba(130,155,200,.4); margin-bottom: 10px; }
.tsl-map-dot { width: 7px; height: 7px; border-radius: 50%; background: #3ab5ff; box-shadow: 0 0 8px #3ab5ff; flex-shrink: 0; animation: tslPulse 2s ease-in-out infinite; }
.tsl-mapframe { width: 100%; height: 400px; border-radius: 6px; overflow: hidden; border: 1px solid rgba(58,181,255,.15); box-shadow: 0 8px 48px rgba(0,0,0,.5); }
@media(max-width:600px){ .tsl-mapframe { height: 260px; } }

/* ── DIVISOR ── */
.tsl-divider { width: 100%; height: 1px; margin: 60px 0; background: linear-gradient(90deg, transparent, rgba(58,181,255,.25), rgba(155,93,229,.2), transparent); }

/* ── PLANO ── */
.tsl-floor { text-align: center; margin-bottom: 0; }
.tsl-floor-hint { font-size: .78rem; font-weight: 300; color: rgba(140,165,205,.38); margin: 10px 0 28px; }

/* Desktop: mapa izq | tabs der — ambas columnas misma altura */
.tsl-floor-split {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 24px;
  align-items: stretch;   /* ← columnas igualan la altura del elemento más alto */
}

/* floor-photo: columna flex para apilar visor + badge */
.tsl-floor-photo {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* floor-right ocupa toda la altura disponible */
.tsl-floor-right {
  display: flex;
  flex-direction: column;
  height: 100%;           /* ← iguala la altura del mapa */
  gap: 0;
  background: rgba(6,8,22,.88);
  border: 1px solid rgba(58,181,255,.12);
  border-radius: 6px;
  overflow: hidden;
}

/* Los tabs crecen para llenar el espacio restante */
.tsl-floor-tabs {
  flex: 1;
  display: flex;
  flex-direction: column;
}

/* Cada tab ocupa espacio proporcional */
.tsl-ftab {
  flex: 1;   /* ← distribuye altura uniformemente */
}

/* ── BADGE — barra debajo del mapa ── */
.tsl-visor-badge {
  /* Fuera del visor: barra completa pegada bajo el mapa */
  position: static;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 16px;
  background: rgba(3,4,16,.92);
  border: 1px solid rgba(58,181,255,.2);
  border-top: none;
  border-radius: 0 0 6px 6px;
  backdrop-filter: none;
  max-width: 100%;
}
.tsl-map-info-badge {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: .65rem; font-weight: 700; letter-spacing: .2em;
  text-transform: uppercase; white-space: nowrap; flex-shrink: 0;
  color: #3ab5ff;
}
.tsl-map-info-badge--a { color: #3ab5ff; }
.tsl-map-info-badge--b { color: #9b5de5; }
.tsl-map-info-badge--c { color: #f5a623; }
.tsl-map-info-badge--s { color: rgba(220,80,80,.9); }
.tsl-map-info-desc {
  font-size: .78rem; font-weight: 300;
  color: rgba(160,185,230,.6);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* También ajustar border-radius del visor para conectar con el badge */
.tsl-mapvisor {
  border-radius: 6px 6px 0 0;
}

/* Tablet */
@media(max-width:860px){
  .tsl-floor-split {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .tsl-floor-right {
    order: -1;
    height: auto;  /* en mobile no necesita estirarse */
  }
  .tsl-floor-photo {
    order: 1;
    width: 100%;
    padding: 0;
  }
  /* En mobile el mapvisor vuelve a tener border-radius completo
     si no hay badge visible — pero sí hay badge, se mantiene 0 0 6 6 */
  .tsl-ftab { flex: unset; }  /* en mobile no queremos flex:1 vertical */
}

/* ── VISOR DEL MAPA ── */
.tsl-floor-photo { position: relative; }

/* Desktop: ratio portrait con tope de altura */
.tsl-mapvisor-wrap {
  position: relative;
  width: 100%;
  aspect-ratio: 2148 / 3428;
  max-height: 720px;
}

/* Mobile: columna única — usa aspect-ratio real de la imagen para
   que el contenedor sea exactamente tan alto como necesita la imagen.
   Así object-fit:contain llena el 100% sin barras vacías. */
@media(max-width:860px){
  .tsl-mapvisor-wrap {
    width: 100%;
    /* Ratio portrait → a 360px de ancho = ~575px alto. Perfecto. */
    aspect-ratio: 2148 / 3428 !important;
    max-height: none !important;
    height: auto !important;
  }
}

.tsl-mapvisor {
  width: 100%; height: 100%;
  background: rgba(4,6,18,.95);
  border: 1px solid rgba(58,181,255,.15);
  border-radius: 6px;
  overflow: hidden;
  box-shadow: 0 12px 60px rgba(0,0,0,.6);
  cursor: grab;
  position: relative;
}
.tsl-mapvisor:active { cursor: grabbing; }

.tsl-mapvisor-stage {
  position: absolute;
  /*
    ANTI-PIXELACIÓN REAL:
    El stage mide 3× el visor. La imagen se renderiza a ~1200px de ancho
    dentro de un contenedor de 400px. Scale inicial = 0.333 → cabe justo.
    Al hacer zoom hacia scale(1), mostramos píxeles ya renderizados a alta
    resolución — nunca upscaling de un bitmap pequeño.
  */
  width: 300%;
  height: 300%;
  top: -100%;
  left: -100%;
  display: flex;
  align-items: center;
  justify-content: center;
  transform-origin: center center;
  will-change: transform;
}

/*
  CLAVE ANTI-PIXELACIÓN:
  La imagen ocupa el 100% del contenedor (object-fit: contain).
  Así el transform scale() hace zoom sobre píxeles reales de la fuente
  en vez de escalar una versión ya reducida.
  image-rendering: high-quality fuerza interpolación bicúbica en GPU.
*/
.tsl-mapvisor-stage img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  user-select: none;
  pointer-events: none;
  border-radius: 2px;
  /* Interpolación de alta calidad al hacer zoom */
  image-rendering: -webkit-optimize-contrast; /* Safari */
  image-rendering: auto;                       /* Chrome/FF – bicúbico */
  -ms-interpolation-mode: bicubic;             /* IE fallback */
  transform: translateZ(0);                    /* Forzar capa GPU */
  will-change: transform;
}

/* En mobile: cover para que llene el área y no queden franjas */
@media(max-width:860px){
  .tsl-mapvisor-stage img {
    object-fit: contain;
    object-position: center top;
  }
}

@media(max-width:600px){ .tsl-map-info-desc { display: none; } }

/* ── ZONE BLINK ANIMATION ── */
@keyframes tslZoneBlink {
  0%   { opacity: 1; }
  45%  { opacity: 0.25; }
  55%  { opacity: 0.25; }
  100% { opacity: 1; }
}
@keyframes tslZoneBlinkGlow {
  0%   { opacity: 1; filter: blur(3px) drop-shadow(0 0 6px currentColor); }
  45%  { opacity: 0; }
  55%  { opacity: 0; }
  100% { opacity: 1; filter: blur(3px) drop-shadow(0 0 12px currentColor); }
}

/* SVG zone overlay */
#tslZoneSvg { transition: opacity .35s ease; }

/* Polígonos de relleno activos → parpadean */
#tslZoneSvg polygon.tsl-zone-fill-active {
  animation: tslZoneBlink 1.6s ease-in-out infinite;
}
/* Polígonos de glow activos → parpadean en sync */
#tslZoneSvg polygon.tsl-zone-glow-active {
  animation: tslZoneBlinkGlow 1.6s ease-in-out infinite;
}

.tsl-floor-right-label {
  font-family: 'Barlow Condensed', sans-serif; font-size: .68rem; font-weight: 700;
  letter-spacing: .2em; text-transform: uppercase; color: rgba(130,155,200,.4);
  padding: 16px 24px 12px; border-bottom: 1px solid rgba(58,181,255,.07); margin: 0;
}

.tsl-ftab {
  display: flex; align-items: center; gap: 16px; padding: 18px 24px;
  border-bottom: 1px solid rgba(58,181,255,.07);
  background: transparent; border-left: none; border-right: none; border-top: none;
  cursor: pointer; text-align: left; width: 100%;
  transition: background .25s; position: relative;
}
.tsl-ftab:last-child { border-bottom: none; }
.tsl-ftab:hover { background: rgba(58,181,255,.04); }
.tsl-ftab--active { background: rgba(58,181,255,.07) !important; border-left: 2px solid #3ab5ff !important; }
.tsl-ftab--active.tsl-ftab--b { border-left-color: #9b5de5 !important; background: rgba(155,93,229,.07) !important; }
.tsl-ftab--active.tsl-ftab--c { border-left-color: #f5a623 !important; background: rgba(245,166,35,.06) !important; }

.tsl-ftab-icon { width: 48px; height: 48px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; background: rgba(58,181,255,.07); border: 1px solid rgba(58,181,255,.16); border-radius: 5px; padding: 11px; transition: background .3s, border-color .3s; }
.tsl-ftab-icon svg { width: 100%; height: 100%; stroke: rgba(200,220,255,.45); transition: stroke .3s; }
.tsl-ftab-icon--b { background: rgba(155,93,229,.07); border-color: rgba(155,93,229,.16); }
.tsl-ftab-icon--b svg { stroke: rgba(195,170,255,.45); }
.tsl-ftab-icon--c { background: rgba(245,166,35,.06); border-color: rgba(245,166,35,.14); }
.tsl-ftab-icon--c svg { stroke: rgba(245,200,140,.45); }
.tsl-ftab--active .tsl-ftab-icon { border-color: rgba(58,181,255,.45); background: rgba(58,181,255,.14); }
.tsl-ftab--active .tsl-ftab-icon svg { stroke: rgba(200,225,255,.9); }
.tsl-ftab--active.tsl-ftab--b .tsl-ftab-icon { border-color: rgba(155,93,229,.45); background: rgba(155,93,229,.14); }
.tsl-ftab--active.tsl-ftab--b .tsl-ftab-icon svg { stroke: rgba(210,185,255,.9); }
.tsl-ftab--active.tsl-ftab--c .tsl-ftab-icon { border-color: rgba(245,166,35,.45); background: rgba(245,166,35,.12); }
.tsl-ftab--active.tsl-ftab--c .tsl-ftab-icon svg { stroke: rgba(255,215,130,.9); }
.tsl-ftab:hover .tsl-ftab-icon { background: rgba(58,181,255,.12); border-color: rgba(58,181,255,.35); }
.tsl-ftab:hover .tsl-ftab-icon svg { stroke: rgba(200,225,255,.85); }

.tsl-ftab-text { flex: 1; }
.tsl-ftab-text strong { display: block; font-family: 'Barlow Condensed', sans-serif; font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: rgba(200,215,255,.75); margin-bottom: 4px; }
.tsl-ftab--active .tsl-ftab-text strong { color: #fff; }
.tsl-ftab-text span { font-size: .8rem; font-weight: 300; color: rgba(160,185,220,.5); display: block; }
.tsl-ftab--active .tsl-ftab-text span { color: rgba(180,205,240,.75); }

.tsl-ftab-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.tsl-ftab-dot--a { background: #3ab5ff; box-shadow: 0 0 6px #3ab5ff; }
.tsl-ftab-dot--b { background: #9b5de5; box-shadow: 0 0 6px #9b5de5; }
.tsl-ftab-dot--c { background: #f5a623; box-shadow: 0 0 6px #f5a623; }

.tsl-floor-legend { padding: 16px 24px; border-top: 1px solid rgba(58,181,255,.07); display: flex; flex-direction: column; gap: 8px; }
.tsl-fleg { display: flex; align-items: center; gap: 8px; font-family: 'Barlow Condensed', sans-serif; font-size: .65rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: rgba(120,145,190,.4); }
.tsl-fleg-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.tsl-fleg-dot--a { background: #3ab5ff; box-shadow: 0 0 6px #3ab5ff; }
.tsl-fleg-dot--b { background: #9b5de5; box-shadow: 0 0 6px #9b5de5; }
.tsl-fleg-dot--c { background: #f5a623; box-shadow: 0 0 6px #f5a623; }
.tsl-fleg-dot--s { background: rgba(130,155,200,.35); }

/* ── REVEAL ── */
.tsl-reveal { opacity: 0; transform: translateY(20px); transition: opacity .65s ease, transform .65s ease; }
.tsl-reveal.tsl-visible { opacity: 1; transform: none; }

/* Tab locked */
.tsl-ftab--locked { background: rgba(58,181,255,.1) !important; border-left: 2px solid #3ab5ff !important; }
.tsl-ftab--locked.tsl-ftab--b { border-left-color: #9b5de5 !important; background: rgba(155,93,229,.1) !important; }
.tsl-ftab--locked.tsl-ftab--c { border-left-color: #f5a623 !important; background: rgba(245,166,35,.08) !important; }
.tsl-ftab--locked .tsl-ftab-text strong::after { content: ' 🔒'; font-size: .55rem; opacity: .5; }

/* ── MOBILE (≤860px) — tabs 3 arriba + 2 abajo centradas ── */
@media(max-width:860px){
  .tsl-floor-right {
    background: rgba(6,8,22,.88);
    border: 1px solid rgba(58,181,255,.12);
    border-radius: 6px;
    overflow: hidden;
  }
  .tsl-floor-right-label { display: none; }
  .tsl-floor-legend { display: none; }

  /* Grid de 6 columnas: fila 1 = 3 tabs de 2 cols c/u | fila 2 = 2 tabs centradas */
  .tsl-floor-tabs {
    display: grid !important;
    grid-template-columns: repeat(6, 1fr) !important;
    flex-direction: unset !important;
    width: 100%;
  }
  .tsl-ftab:nth-child(1) { grid-column: 1 / 3; }
  .tsl-ftab:nth-child(2) { grid-column: 3 / 5; }
  .tsl-ftab:nth-child(3) { grid-column: 5 / 7; }
  /* Fila 2: centrar las 2 tabs restantes */
  .tsl-ftab:nth-child(4) { grid-column: 2 / 4; border-top: 1px solid rgba(58,181,255,.07) !important; }
  .tsl-ftab:nth-child(5) { grid-column: 4 / 6; border-top: 1px solid rgba(58,181,255,.07) !important; }

  .tsl-ftab {
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    padding: 14px 6px !important;
    border-bottom: none !important;
    border-right: 1px solid rgba(58,181,255,.07) !important;
    border-left: none !important;
    border-top: none !important;
    gap: 7px !important;
    box-sizing: border-box;
    min-height: 72px;
  }
  /* Quitar borde derecho en la última de cada fila */
  .tsl-ftab:nth-child(3) { border-right: none !important; }
  .tsl-ftab:nth-child(5) { border-right: none !important; }
  /* Tab 4 sí lleva borde derecho */
  .tsl-ftab:nth-child(4) { border-right: 1px solid rgba(58,181,255,.07) !important; }

  .tsl-ftab--active,
  .tsl-ftab--locked {
    border-top: 3px solid #3ab5ff !important;
    border-left: none !important;
    background: rgba(58,181,255,.07) !important;
  }
  .tsl-ftab--active.tsl-ftab--b,
  .tsl-ftab--locked.tsl-ftab--b { border-top: 3px solid #9b5de5 !important; background: rgba(155,93,229,.07) !important; }
  .tsl-ftab--active.tsl-ftab--c,
  .tsl-ftab--locked.tsl-ftab--c { border-top: 3px solid #f5a623 !important; background: rgba(245,166,35,.06) !important; }

  .tsl-ftab-icon { width: 36px !important; height: 36px !important; padding: 8px !important; }
  .tsl-ftab-text strong { font-size: .6rem !important; letter-spacing: .08em !important; }
  .tsl-ftab-text span { display: none !important; }
  .tsl-ftab-dot { display: none !important; }
}

/* ── EXTRA SMALL (≤480px) ── */
@media(max-width:480px){
  .tsl-section { padding: 80px 12px 60px; }
}/* End custom CSS */