/* ==========================================================================
   Portafolio Â· DiseÃ±ador GrÃ¡fico
   Split screen (DiseÃ±o Web | Publicidad Digital) â€” dos mundos en una pÃ¡gina
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Quicksand:wght@400;500;600;700&family=Nunito:wght@400;500;600;700;800&family=Archivo+Black&display=swap');

:root {
  --font-head: 'Archivo Black', sans-serif; /* tipografÃ­a gruesa y angular */
  --font-body: 'Nunito', sans-serif;

  /* Negro elegante â€” acentos cian (DiseÃ±o Web) */
  --web-bg: #07070b;
  --web-bg2: #0d0d15;
  --web-card: #10101a;
  --web-cyan: #22d3ee;
  --web-blue: #3b82f6;
  --web-text: #e2e8f0;
  --web-muted: #94a3b8;

  /* Negro elegante â€” acentos magenta (Publicidad Digital) */
  --ads-bg: #07070b;
  --ads-bg2: #0d0d15;
  --ads-card: #10101a;
  --ads-fuchsia: #e879f9;
  --ads-violet: #a855f7;
  --ads-text: #f3e8ff;
  --ads-muted: #c4b5fd;

  --radius: 18px;
  --ease: cubic-bezier(.22, 1, .36, 1);
}

* { margin: 0; padding: 0; box-sizing: border-box; }

/* Lenis ya hace el scroll suave: NO usar scroll-behavior:smooth en html
   (conflicta con Lenis y causa doble suavizado = retraso al scrollear) */

body {
  font-family: var(--font-body);
  background: #06060a;
  color: #fff;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

a { text-decoration: none; color: inherit; }
button { font-family: inherit; cursor: pointer; border: none; background: none; color: inherit; }

/* ==========================================================================
   SPLIT SCREEN (Vista de bienvenida)
   ========================================================================== */
.split-screen {
  position: fixed;
  inset: 0;
  display: flex;
  z-index: 50;
  transition: opacity .45s ease, visibility .45s ease;
}

.split-screen.hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* BotÃ³n de sonido que sigue al mouse ELIMINADO (31-08, pedido de Manuel:
   "ok elimina la musica y boton de sonido" — imagen de empresa seria) */

.split-half {
  position: relative;
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  cursor: pointer;
  color: #ffffff;
  transition: flex 0.6s var(--ease);
}

/* Degradados del split: negro elegante con halo sutil (el ferrofluid es el protagonista) */
.split-left  { background: radial-gradient(ellipse 80% 80% at 50% 50%, #0c0c14 0%, #05050a 55%, #020204 100%); }
.split-right { background: radial-gradient(ellipse 80% 80% at 50% 50%, #0c0c14 0%, #05050a 55%, #020204 100%); }

/* LÃ­nea divisoria animada */
.split-left::after {
  content: '';
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  width: 2px;
  background: linear-gradient(180deg, transparent, rgba(255,255,255,.85), transparent);
  animation: dividerGlow 3.2s ease-in-out infinite;
}
@keyframes dividerGlow {
  0%, 100% { opacity: .25; }
  50% { opacity: 1; }
}

/* Contenido de cada mitad */
.half-content {
  position: relative;
  z-index: 2;
  padding: 56px;
  text-align: center;
  max-width: 640px;
  animation: contentReveal 1s var(--ease) both;
}
.split-right .half-content { animation-delay: .15s; }
@keyframes contentReveal {
  from { opacity: 0; transform: translateY(26px); }
  to   { opacity: 1; transform: translateY(0); }
}

.half-title {
  font-family: var(--font-head);
  font-size: clamp(3.2rem, 8vw, 7rem);
  font-weight: 700;
  -webkit-text-stroke: 1.2px currentColor; /* trazo del mismo color: letra mÃ¡s robusta */
  line-height: 0.98;
  letter-spacing: -0.02em;
  transition: letter-spacing .5s var(--ease), transform .5s var(--ease);
  /* Pulso (palpitar) ELIMINADO 31-08: imagen sobria de empresa seria */
}

/* Letras sc-char/sc-live del scramble ELIMINADAS (31-08, mismo criterio) */

/* Emojis flotantes ELIMINADOS (31-08, pedido de Manuel: imagen de empresa
   seria) */

.half-sub {
  margin-top: 22px;
  margin-left: auto;
  margin-right: auto;
  font-size: clamp(1.05rem, 1.9vw, 1.35rem);
  color: rgba(255, 255, 255, 0.75); /* texto secundario */
  max-width: 420px;
  line-height: 1.55;
}

.half-cta {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-top: 34px;
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 0.8rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  padding: 13px 26px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.45);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  opacity: 1; /* siempre visible */
  transform: none;
  transition: transform .45s var(--ease);
  animation: ctaPulse 2.2s ease-in-out infinite;
}
.half-cta .arrow { transition: transform .35s var(--ease); }

/* Pulso tipo "pÃ¡gina web" en el botÃ³n Entrar al mundo */
@keyframes ctaPulse {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.35);
    transform: scale(1);
  }
  50% {
    box-shadow: 0 0 0 12px rgba(255, 255, 255, 0);
    transform: scale(1.04);
  }
}

/* Hover de la mitad: movimiento sutil (muy poco desplazamiento) */
.split-half:hover { flex: 1.03; z-index: 3; }
.split-half:hover .half-title { letter-spacing: 0.01em; transform: translateY(-2px); }
.split-half:hover .half-cta { transform: translate(var(--mag-x, 0px), var(--mag-y, 0px)); }
.split-half:hover .half-cta .arrow { transform: translateX(6px); }

/* Acentos vivos por lado */
.split-left .half-cta { color: #22d3ee; text-shadow: 0 0 14px rgba(34, 211, 238, 0.5); }
.split-right .half-cta { color: #e879f9; text-shadow: 0 0 14px rgba(232, 121, 249, 0.5); }

/* Cuadraditos que aparecen siguiendo el mouse (efecto springboards):
   celdas CUADRADAS de 14px que se encienden una a una en cascada */
.sq-grid {
  position: absolute;
  inset: 0;
  display: grid;
  grid-auto-rows: 14px;
  gap: 4px;
  z-index: 2;
  pointer-events: none;
  opacity: 0;
  transition: opacity .3s ease;
}
.split-half:hover .sq-grid { opacity: 1; }
.sq-cell {
  width: 14px;
  height: 14px;
  border-radius: 2px;
  background: var(--sq-color, #22d3ee);
  opacity: 0.55;
  transform: scale(0);
  transition: transform .3s cubic-bezier(.34, 1.56, .64, 1);
}
.sq-cell.on { transform: scale(1); }
.split-left .sq-cell { --sq-color: #22d3ee; }
.split-right .sq-cell { --sq-color: #e879f9; }

/* Esfera de energÃ­a en los bloques principales */
.sphere-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  pointer-events: none;
}

/* Ferrofluid: lÃ­quido magnÃ©tico de fondo (WebGL, sin librerÃ­as) */
.ferrofluid {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}
.ferrofluid canvas {
  display: block;
  width: 100%;
  height: 100%;
}

/* Grano sutil sobre el bloque (textura premium, tendencia grainy gradient) */
.half-grain {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  opacity: .06;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-size: 160px 160px;
}

/* Textos verticales girando (half-vtext/vtext-track) ELIMINADOS 31-08:
   imagen sobria de empresa seria — ver comentario de entrada */

.split-hint {
  position: absolute;
  bottom: 120px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 16px;
  white-space: nowrap;
  font-family: var(--font-head);
  font-size: 0.72rem;
  letter-spacing: 0.5em;
  text-transform: uppercase;
  opacity: .45;
  z-index: 5;
  pointer-events: none;
  animation: hintPulse 2.6s ease-in-out infinite;
}
@keyframes hintPulse { 0%,100%{opacity:.3} 50%{opacity:.7} }

/* El hint dentro de la mitad (debajo del tÃ­tulo) es estÃ¡tico y centrado */
.split-hint.in-half {
  position: static;
  transform: none;
  justify-content: center;
  margin-top: 18px;
  animation: hintPulse 2.6s ease-in-out infinite;
}

/* Flechas laterales del hint */
.hint-arrow {
  display: inline-block;
  font-size: 0.95rem;
  line-height: 1;
}
.hint-arrow.left { animation: hintArrowL 1.8s ease-in-out infinite; }
.hint-arrow.right { animation: hintArrowR 1.8s ease-in-out infinite; }
@keyframes hintArrowL {
  0%, 100% { transform: translateX(0); }
  50%      { transform: translateX(-6px); }
}
@keyframes hintArrowR {
  0%, 100% { transform: translateX(0); }
  50%      { transform: translateX(6px); }
}

/* ==========================================================================
   ESTILO FUTURISTA Â· Botones transparentes (HUD) + marcos de esquina
   Inspirado en conceptos web futuristas (glassmorphism + HUD)
   ========================================================================== */
.btn-glass {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-family: var(--font-head);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: #fff;
  padding: 15px 32px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.35);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  position: relative;
  overflow: hidden;
  transition: all .35s var(--ease);
}
/* Destello que recorre el botÃ³n al hacer hover */
.btn-glass::after {
  content: '';
  position: absolute;
  top: 0;
  left: -130%;
  width: 55%;
  height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.28), transparent);
  transform: skewX(-20deg);
  transition: left .55s var(--ease);
}
.btn-glass:hover {
  transform: translateY(-3px);
  background: rgba(255, 255, 255, 0.12);
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.35);
}
.btn-glass:hover::after { left: 135%; }

.world-web .btn-glass:hover {
  border-color: var(--web-cyan);
  color: var(--web-cyan);
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.35), 0 0 26px rgba(34, 211, 238, 0.3);
}
.world-ads .btn-glass:hover {
  border-color: var(--ads-fuchsia);
  color: var(--ads-fuchsia);
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.35), 0 0 26px rgba(232, 121, 249, 0.35);
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 18px;
  margin-top: 36px;
}

/* ==========================================================================
   ANIMACIÃ“N TRANSPARENTE EN CADA MITAD (hover)
   Capa de fotogramas PNG (video transparente) con respaldo ambiental en CSS
   ========================================================================== */
.half-media {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow: hidden;
  pointer-events: none;
}

/* Fotogramas del video transparente (se activan al hacer hover) */
.half-frames {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity .5s ease;
}
.half-frames.playing { opacity: 1; }

/* Respaldo ambiental: orbes flotantes de cÃ³digo puro */
.half-ambient {
  position: absolute;
  inset: 0;
}
.half-ambient::before,
.half-ambient::after {
  content: '';
  position: absolute;
  width: 340px;
  height: 340px;
  border-radius: 50%;
  filter: blur(70px);
  opacity: .2;
  transition: opacity .6s ease, transform .6s ease;
}
.split-left .half-ambient::before {
  background: radial-gradient(circle, rgba(34, 211, 238, .18), transparent 65%);
  animation: driftA 9s ease-in-out infinite;
}
.split-left .half-ambient::after {
  background: radial-gradient(circle, rgba(59, 130, 246, .14), transparent 65%);
  animation: driftB 11s ease-in-out infinite;
}
.split-right .half-ambient::before {
  background: radial-gradient(circle, rgba(232, 121, 249, .4), transparent 65%);
  animation: driftA 9s ease-in-out infinite;
}
.split-right .half-ambient::after {
  background: radial-gradient(circle, rgba(168, 85, 247, .35), transparent 65%);
  animation: driftB 11s ease-in-out infinite;
}

@keyframes driftA {
  0%, 100% { transform: translate(-10%, 12%) scale(1); }
  50%      { transform: translate(62%, 28%) scale(1.3); }
}
@keyframes driftB {
  0%, 100% { transform: translate(72%, -8%) scale(1.1); }
  50%      { transform: translate(12%, 42%) scale(.9); }
}

/* Al pasar el mouse: la animaciÃ³n cobra vida */
.split-half:hover .half-ambient::before,
.split-half:hover .half-ambient::after {
  opacity: .45;
}

/* ==========================================================================
   OVERLAY DE TRANSICIÃ“N
   ========================================================================== */
.transition-overlay {
  position: fixed;
  inset: 0;
  z-index: 90;
  background: #05050a;
  clip-path: circle(0% at var(--tx, 50%) var(--ty, 50%));
  transition: clip-path .55s var(--ease);
  pointer-events: none;
}
.transition-overlay.active { clip-path: circle(150% at var(--tx, 50%) var(--ty, 50%)); }

/* ==========================================================================
   MUNDOS (vistas internas)
   ========================================================================== */
.world {
  display: none;
  min-height: 100vh;
  position: relative;
}

.world.active { display: block; }

/* AnimaciÃ³n de entrada del mundo */
.world.active .world-hero .hero-inner > * {
  opacity: 0;
  animation: fadeUp .8s var(--ease) forwards;
}
.world.active .world-hero .hero-inner > *:nth-child(1) { animation-delay: .15s; }
.world.active .world-hero .hero-inner > *:nth-child(2) { animation-delay: .28s; }
.world.active .world-hero .hero-inner > *:nth-child(3) { animation-delay: .41s; }
.world.active .world-hero .hero-inner > *:nth-child(4) { animation-delay: .54s; }

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(26px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ---------- Barra de navegaciÃ³n del mundo ---------- */
.world-nav {
  position: sticky;
  top: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 6vw;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

.world-web .world-nav { background: rgba(4, 4, 8, .85); border-bottom: 1px solid rgba(34, 211, 238, .15); }
.world-ads  .world-nav { background: rgba(4, 4, 8, .85); border-bottom: 1px solid rgba(232, 121, 249, .18); }

.world-logo {
  font-family: var(--font-head);
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  display: inline-flex;
  align-items: center;
}
.world-logo .dot { color: var(--web-cyan); }
.world-ads .world-logo .dot { color: var(--ads-fuchsia); }
.world-logo-img {
  height: 44px;
  width: auto;
  display: block;
  filter: drop-shadow(0 0 12px rgba(34, 211, 238, 0.35));
  transition: transform .3s var(--ease);
}
.world-logo-img:hover { transform: scale(1.05); }
.web-footer .footer-brand .world-logo-img { height: 52px; }

.world-menu {
  display: flex;
  gap: 34px;
  list-style: none;
}

.menu-link {
  position: relative;
  font-weight: 600;
  font-size: 0.95rem;
  padding: 6px 0;
  opacity: .8;
  transition: opacity .3s;
}
.menu-link::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 2px;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .35s var(--ease);
}
.world-web .menu-link::after { background: var(--web-cyan); }
.world-ads  .menu-link::after { background: var(--ads-fuchsia); }
.menu-link:hover, .menu-link.active { opacity: 1; }
.menu-link.active::after, .menu-link:hover::after { transform: scaleX(1); }

.back-home {
  font-weight: 600;
  font-size: 0.9rem;
  padding: 9px 18px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.22);
  transition: all .3s var(--ease);
}
.back-home:hover { background: rgba(255,255,255,.1); transform: translateX(-3px); }

.menu-toggle { display: none; font-size: 1.6rem; line-height: 1; }

/* ---------- Hero del mundo ---------- */
.world-hero {
  min-height: 88vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 64px 6vw 44px;
  position: relative;
  overflow: hidden;
}

.world-web .world-hero {
  background:
    radial-gradient(900px 500px at 15% 10%, rgba(34, 211, 238, .1), transparent 60%),
    radial-gradient(900px 500px at 85% 30%, rgba(59, 130, 246, .08), transparent 60%),
    linear-gradient(180deg, var(--web-bg), var(--web-bg2));
}

.world-ads .world-hero {
  background:
    radial-gradient(900px 500px at 80% 15%, rgba(232, 121, 249, .16), transparent 60%),
    radial-gradient(900px 500px at 15% 40%, rgba(168, 85, 247, .14), transparent 60%),
    linear-gradient(180deg, var(--ads-bg), var(--ads-bg2));
}

.hero-inner { max-width: 900px; }

/* Hero SIN panel de vidrio: contenido directo sobre el fondo (pedido 31-08) */
.world-hero .hero-inner {
  padding: 0;
}
@media (max-width: 768px) {
  .world-hero .hero-inner { padding: 0; }
}

/* Campo de estrellas (efecto ParticlesJS "Stars") en el hero */
.stars-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
}

/* Bobina de Tesla generada en canvas (futurista, sin videos) */
.orb-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
  pointer-events: none;
}
/* En secciones (.world-section > * les da position:relative), el canvas de
   estrellas debe seguir absoluto y quedar DETRÃS del contenido */
.world-section .stars-canvas {
  position: absolute;
  inset: 0;
  z-index: 0;
}

/* PartÃ­culas conectadas "Particles in space" (secciones oscuras) */
.network-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
}
.world-section .network-canvas {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.world-hero .hero-inner {
  position: relative;
  z-index: 2;
}

/* Fundido a negro al final del hero (transiciÃ³n suave a la primera secciÃ³n) */
.world-hero::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 34vh;
  max-height: 440px;
  background: linear-gradient(0deg, rgba(0, 0, 0, 0.95) 0%, rgba(0, 0, 0, 0.6) 35%, rgba(0, 0, 0, 0.2) 70%, transparent 100%);
  pointer-events: none;
  z-index: 1;
}

/* Portafolio: negro elegante con estrellas (como el hero) */
#web-portafolio {
  background:
    radial-gradient(900px 500px at 30% 20%, rgba(44, 116, 179, 0.1), transparent 60%),
    radial-gradient(900px 500px at 80% 80%, rgba(32, 82, 149, 0.08), transparent 60%),
    linear-gradient(180deg, var(--web-bg2), var(--web-bg));
  border-top: none;
}

/* CampaÃ±as (mundo ads): fondo violeta con estrellas, como portafolio */
#ads-campanas {
  background:
    radial-gradient(900px 500px at 30% 20%, rgba(232, 121, 249, 0.12), transparent 60%),
    radial-gradient(900px 500px at 80% 80%, rgba(168, 85, 247, 0.1), transparent 60%),
    linear-gradient(180deg, var(--ads-bg2), var(--ads-bg));
  border-top: none;
}

/* Fundido a negro al final de cada secciÃ³n (fusiÃ³n con la siguiente) */
.world-section::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 22vh;
  max-height: 300px;
  background: linear-gradient(0deg, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0.4) 45%, transparent 100%);
  pointer-events: none;
  z-index: 0;
}

.hero-kicker {
  display: inline-block;
  font-family: var(--font-head);
  font-size: 0.8rem;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  padding: 8px 20px;
  border-radius: 999px;
  margin-bottom: 26px;
}
.world-web .hero-kicker { color: var(--web-cyan); border: 1px solid rgba(34,211,238,.4); }
.world-ads  .hero-kicker { color: var(--ads-fuchsia); border: 1px solid rgba(232,121,249,.4); }

.hero-title {
  font-family: var(--font-head);
  font-size: clamp(2.2rem, 5.4vw, 4rem);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -0.02em;
  margin-bottom: 24px;
}
.world-web .hero-title span { color: var(--web-cyan); }
.world-ads  .hero-title span {
  background: linear-gradient(90deg, var(--ads-fuchsia), var(--ads-violet));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.hero-text {
  max-width: 620px;
  margin: 0 auto 40px;
  font-size: 1.08rem;
  line-height: 1.7;
  opacity: .8;
}

/* ---------- Iconos 2D (mundo web): carrusel 3D tipo coverflow ----------
   (efecto del video: auto-play + pausa en hover, tarjeta central nÃ­tida
   con glow de color, laterales desenfocadas y mÃ¡s pequeÃ±as) */
.world.active .world-hero .hero-inner .icon-grid,
.icon-grid {
  position: relative;
  width: 100%;
  max-width: 760px;
  height: 270px;
  margin: 30px auto 24px;
  perspective: 1200px;
  opacity: 1;
}

.icon-item {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 195px;
  height: 218px;
  margin: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  border-radius: 18px;
  border: 1px solid rgba(255, 255, 255, 0.5);
  background: linear-gradient(160deg, var(--c1, rgba(34, 211, 238, .2)), rgba(10, 12, 20, 0.9));
  color: var(--web-text);
  backface-visibility: hidden;
  cursor: pointer;
  will-change: transform, filter, opacity;
  transition: transform .7s cubic-bezier(.22, .61, .36, 1),
              filter .7s ease, opacity .7s ease;
}
.icon-item svg { width: 54px; height: 54px; color: var(--web-cyan); }
.icon-item span { font-size: 1.05rem; font-weight: 700; opacity: .92; }

/* Icono animado cuando la tarjeta estÃ¡ en el centro: latido + brillo del tema */
.icon-item.active svg {
  animation: iconBeat 1.6s ease-in-out infinite;
  filter: drop-shadow(0 0 14px var(--glow, rgba(34, 211, 238, .6)));
}
@keyframes iconBeat {
  0%, 100% { transform: scale(1) translateY(0); }
  50%      { transform: scale(1.18) translateY(-4px); }
}

/* Recuadro transparente: describe la tarjeta centrada, con el color de esa tarjeta */
.card-desc {
  position: relative;
  max-width: 520px;
  margin: -6px auto 0;
  padding: 14px 22px;
  text-align: center;
  font-size: 0.95rem;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.85);
  background: linear-gradient(160deg, color-mix(in srgb, var(--glow, #22d3ee) 12%, transparent), rgba(255, 255, 255, 0.04));
  border: 1px solid color-mix(in srgb, var(--glow, #22d3ee) 45%, transparent);
  border-radius: 14px;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35), 0 0 24px color-mix(in srgb, var(--glow, #22d3ee) 40%, transparent);
  opacity: 0;
  transform: translateY(10px);
  transition: opacity .5s var(--ease), transform .5s var(--ease), border-color .5s var(--ease), box-shadow .5s var(--ease), background .5s var(--ease);
}
.card-desc.show {
  opacity: 1;
  transform: translateY(0);
}

/* Tarjeta activa: al frente, nÃ­tida, con glow del color del tema */
.icon-item.active {
  transform: translate(-50%, -50%) scale(1);
  filter: none;
  opacity: 1;
  z-index: 10;
  box-shadow: 0 0 50px var(--glow, rgba(34, 211, 238, .5)), 0 25px 50px rgba(0, 0, 0, 0.6);
}
/* Laterales: desenfocadas, mÃ¡s pequeÃ±as, con leve giro (desplazamiento en px) */
.icon-item.l1 { transform: translate(calc(-50% - 190px), -50%) scale(.78) rotateY(12deg); filter: blur(5px); opacity: .6; z-index: 8; }
.icon-item.r1 { transform: translate(calc(-50% + 190px), -50%) scale(.78) rotateY(-12deg);  filter: blur(5px); opacity: .6; z-index: 8; }
.icon-item.l2 { transform: translate(calc(-50% - 320px), -50%) scale(.5) rotateY(20deg); filter: blur(9px); opacity: .3; z-index: 6; }
.icon-item.r2 { transform: translate(calc(-50% + 320px), -50%) scale(.5) rotateY(-20deg);  filter: blur(9px); opacity: .3; z-index: 6; }

/* ---------- Secciones genÃ©ricas ---------- */
.world-section { position: relative; padding: 130px 6vw; }

/* TransiciÃ³n entre secciones: degradado negro en el inicio de cada secciÃ³n
   (estilo adinfluence.cl â€” la secciÃ³n se funde desde negro) */
.world-section::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 26vh;
  max-height: 340px;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0.45) 40%, transparent 100%);
  pointer-events: none;
  z-index: 0;
}
.world-section > * {
  position: relative;
  z-index: 1;
}
/* El ferrofluid del portafolio queda DETRÃS y FUERA del flujo:
   asÃ­ el contenido (tÃ­tulo + tarjetas) vuelve a su lugar encima del efecto */
.world-section .ferrofluid {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
.world-section-alt { background: rgba(255,255,255,.015); border-top: 1px solid rgba(255,255,255,.05); }

/* ---------- Sobre mÃ­ ---------- */
.sobre-grid {
  max-width: 960px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 50px;
  align-items: center;
  text-align: left;
}
.sobre-info {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 24px;
}
.sobre-foto {
  position: relative;
  width: 370px;
  height: 500px;
  margin-left: auto;
  border-radius: 18px;
  overflow: hidden;
  border: 3px solid rgba(34, 211, 238, .4);
  box-shadow: 0 20px 50px rgba(0, 0, 0, .4);
}
.sobre-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  z-index: 1;
}
/* ==========================================================================
   FOTO "SOBRE MÍ": solo movimiento 3D (tilt que sigue el mouse).
   Todos los demás efectos eliminados (cuadrícula, láser, barrido, glitch,
   trama) por pedido de Manuel (31-08).
   ========================================================================== */
.sobre-foto {
  transform: perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));
  transform-style: preserve-3d;
  transition: transform 0.18s ease-out;
}
.sobre-foto:hover { border-color: rgba(34, 211, 238, 0.85); }
.sobre-formacion { grid-column: 1 / -1; }
.sobre-texto { max-width: 520px; }
.sobre-texto p {
  color: rgba(255, 255, 255, .8);
  line-height: 1.8;
  margin-bottom: 14px;
  font-size: 1.02rem;
  font-weight: 300;
  text-align: left;
}
.sobre-texto strong { color: var(--web-cyan); font-weight: 600; }
.sobre-skills {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 12px;
}
.skill-chip {
  padding: 8px 16px;
  border: 1px solid rgba(34, 211, 238, .35);
  border-radius: 30px;
  font-size: .85rem;
  color: var(--web-cyan);
  background: rgba(34, 211, 238, .06);
}
/* FormaciÃ³n (cursos) */
.sobre-formacion { width: 100%; margin-top: 6px; }
.formacion-titulo {
  font-family: var(--font-head);
  font-size: 1.15rem;
  color: #fff;
  margin-bottom: 18px;
  letter-spacing: .04em;
}
.formacion-grupos {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
  text-align: left;
}
.formacion-grupo {
  background: rgba(255, 255, 255, .03);
  border: 1px solid rgba(255, 255, 255, .08);
  border-radius: 14px;
  padding: 18px 20px;
  transition: border-color .3s;
}
.formacion-grupo:hover { border-color: rgba(34, 211, 238, .4); }
.formacion-grupo h5 {
  font-family: var(--font-head);
  font-size: .95rem;
  color: var(--web-cyan);
  margin-bottom: 10px;
  letter-spacing: .03em;
}
.formacion-grupo ul { list-style: none; display: flex; flex-direction: column; gap: 7px; }
.formacion-grupo li {
  font-size: .86rem;
  color: rgba(255, 255, 255, .75);
  font-weight: 300;
  padding-left: 16px;
  position: relative;
}
.formacion-grupo li::before {
  content: '\2014';
  position: absolute;
  left: 0;
  color: rgba(34, 211, 238, .6);
}
/* Nombre del profesor (Domestika): más pequeño, cian suave, no rompe la línea */
.formacion-profe {
  display: inline-block;
  font-size: .72rem;
  color: rgba(34, 211, 238, .65);
  font-weight: 400;
}

/* ==========================================================================
   FORMACIÓN: TODAS las tarjetas con MOVIMIENTO 3D (tilt que sigue el mouse).
   Se eliminaron los efectos por tarjeta (píxeles, ecualizador, moneda…)
   por pedido de Manuel (31-08): "elimina todos los efectos y deja a todos el
   movimiento 3d solamente".
   ========================================================================== */
.formacion-grupo {
  position: relative;
  overflow: hidden;
  transform: perspective(700px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));
  transform-style: preserve-3d;
  transition: transform .18s ease-out;
}
.formacion-grupo h5,
.formacion-grupo ul {
  transform: translateZ(22px);
}

.sobre-cta { margin-top: 8px; }
@media (max-width: 860px) {
  .sobre-grid { grid-template-columns: 1fr; gap: 34px; }
  .sobre-foto { height: 320px; }
  .sobre-formacion { grid-column: 1; }
}
@media (max-width: 640px) {
  .formacion-grupos { grid-template-columns: 1fr; }
}

/* ---------- Testimonios: comentarios de clientes ---------- */
.testimonios-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 26px;
  max-width: 1150px;
  margin: 0 auto;
}
.testimonio-card {
  position: relative;
  padding: 30px 26px;
  border-radius: var(--radius);
  background: linear-gradient(160deg, color-mix(in srgb, var(--tc, #22d3ee) 10%, transparent), rgba(255, 255, 255, 0.015));
  border: 1px solid color-mix(in srgb, var(--tc, #22d3ee) 30%, transparent);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  display: flex;
  flex-direction: column;
  gap: 14px;
  transition: transform .35s var(--ease), border-color .35s, box-shadow .35s;
}
.testimonio-card:hover {
  transform: translateY(-6px);
  border-color: color-mix(in srgb, var(--tc, #22d3ee) 65%, transparent);
  box-shadow: 0 18px 40px color-mix(in srgb, var(--tc, #22d3ee) 18%, transparent);
}
.testi-stars {
  color: #fbbf24;
  font-size: 1.05rem;
  letter-spacing: 3px;
}
.testi-text {
  color: var(--web-text);
  font-size: 0.98rem;
  line-height: 1.7;
  flex: 1;
}
/* Resultado medible del cliente (vende) */
.testi-resultado {
  display: inline-block;
  margin-top: 12px;
  padding: 6px 14px;
  border-radius: 999px;
  font-size: 0.82rem;
  font-weight: 700;
  color: #04121f;
  background: linear-gradient(135deg, #22d3ee, #38bdf8);
  box-shadow: 0 6px 18px rgba(34, 211, 238, 0.3);
  white-space: nowrap;
}
.testi-persona {
  display: flex;
  align-items: center;
  gap: 14px;
  padding-top: 14px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.testi-avatar {
  position: relative;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-head);
  font-size: 1.15rem;
  font-weight: 700;
  color: #04121f;
  background: linear-gradient(135deg, var(--tc, #22d3ee), color-mix(in srgb, var(--tc, #22d3ee) 60%, #ffffff));
  box-shadow: 0 0 18px color-mix(in srgb, var(--tc, #22d3ee) 55%, transparent);
  flex-shrink: 0;
  overflow: hidden;
}
/* foto real de la persona que dejó la reseña en Google (20-09).
   Si la foto no carga, queda la letra de abajo. */
.testi-avatar img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
  display: block;
}
.testi-meta { display: flex; flex-direction: column; gap: 2px; }
.testi-meta strong { color: #fff; font-size: 0.98rem; }
.testi-meta span { color: var(--web-muted); font-size: 0.82rem; }

/* ---------- Marcas: tÃ­tulo + lÃ­nea automÃ¡tica con logos reales (marquee) ---------- */
.marcas-wrap { margin-top: 120px; }
/* Mismo tamaÃ±o y estilo que los tÃ­tulos de secciÃ³n */
.marcas-titulo {
  font-family: var(--font-head);
  font-size: clamp(1.8rem, 3.6vw, 2.6rem);
  font-weight: 700;
  text-align: center;
  letter-spacing: -0.01em;
  margin: 0 auto 44px; /* espacio equilibrado con la lÃ­nea de logos */
  color: #fff;
}
.marcas-titulo span { color: var(--web-cyan); }
.marcas {
  padding: 24px 0;
  overflow: hidden;
  white-space: nowrap;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}
.marcas-track {
  display: inline-flex;
  align-items: center;
  gap: 56px;
  padding-right: 56px;
  animation: marcasScroll 40s linear infinite;
  will-change: transform;
}
.marcas-track:hover { animation-play-state: paused; }
.marca-logo {
  width: 150px;
  height: 75px;
  object-fit: contain;
  opacity: 0.75;
  transition: opacity .3s ease, transform .3s ease;
}
.marca-logo:hover {
  opacity: 1;
  transform: translateY(-3px) scale(1.06);
}
@keyframes marcasScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

.section-title {
  font-family: var(--font-head);
  font-size: clamp(1.8rem, 3.6vw, 2.6rem);
  font-weight: 700;
  text-align: center;
  margin-bottom: 70px;
  letter-spacing: -0.01em;
}
.world-web .section-title .accent { color: var(--web-cyan); }
.world-ads  .section-title .accent { color: var(--ads-fuchsia); }

/* Reveal de tÃ­tulos con mÃ¡scara (estilo ShapeJungle) */
.reveal-mask {
  display: inline-block;
  overflow: hidden;
  vertical-align: bottom;
}
.reveal-word {
  display: inline-block;
  transform: translateY(115%);
  transition: transform .95s var(--ease);
}
.section-title.in .reveal-word,
.cta-box h3.in .reveal-word {
  transform: translateY(0);
}

/* Banner de servicios: "Todo es posible" con parallax */
.services-banner {
  position: relative;
  height: 56vh;
  min-height: 340px;
  max-height: 640px;
  border-radius: var(--radius);
  overflow: hidden;
  margin-bottom: 56px;
  border: 1px solid rgba(148, 163, 184, 0.12);
  display: flex;
  align-items: center;
  justify-content: center;
}
.services-banner-video {
  position: absolute;
  top: -25%;
  left: 0;
  width: 100%;
  height: 150%;
  object-fit: cover;
  will-change: transform;
  pointer-events: none;
}
.services-banner-shade {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg, rgba(3, 3, 6, 0.85), rgba(3, 3, 6, 0.6) 50%, rgba(3, 3, 6, 0.88));
  pointer-events: none;
}
.services-banner-content {
  position: relative;
  z-index: 2;
  text-align: center;
  max-width: 760px;
  padding: 36px 24px;
  color: #ffffff;
}
.banner-kicker {
  display: inline-block;
  font-family: var(--font-head);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.35em;
  text-transform: uppercase;
  color: var(--web-cyan);
  border: 1px solid rgba(34, 211, 238, 0.45);
  border-radius: 999px;
  padding: 8px 20px;
  margin-bottom: 22px;
}
.banner-title {
  font-family: var(--font-head);
  font-size: clamp(2.2rem, 5vw, 3.6rem);
  font-weight: 800;
  line-height: 1.08;
  letter-spacing: -0.01em;
  margin-bottom: 14px;
  color: #ffffff;
}
.banner-title span {
  color: var(--web-cyan);
}
.banner-text {
  font-size: 1.08rem;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.92);
  margin-bottom: 30px;
}

/* Banner del mundo ads: acento magenta y sombreado violeta */
.ads-banner .banner-title span {
  color: var(--ads-fuchsia);
}
.ads-banner .services-banner-shade {
  background: linear-gradient(180deg, rgba(3, 3, 6, 0.85), rgba(3, 3, 6, 0.6) 50%, rgba(3, 3, 6, 0.88));
}

/* Tarjetas 2D (mundo web): colores por tema + tilt 3D estilo ProfileCard */
.cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 28px;
  max-width: 1150px;
  margin: 0 auto;
  perspective: 1000px;
}

.card-2d {
  position: relative;
  --cx: 50%;
  --cy: 50%;
  --pointer-x: 50%;
  --pointer-y: 50%;
  --pointer-from-left: 0.5;
  --pointer-from-top: 0.5;
  background:
    linear-gradient(160deg, color-mix(in srgb, var(--tc, #22d3ee) 14%, transparent), rgba(10, 12, 20, 0.85));
  border: 1px solid color-mix(in srgb, var(--tc, #22d3ee) 32%, transparent);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border-radius: var(--radius);
  padding: 36px 30px;
  transform-style: preserve-3d;
  transition: transform .45s var(--ease), box-shadow .45s, border-color .45s, background .45s;
  will-change: transform;
}
.card-2d h4 { font-family: var(--font-head); font-size: 1.2rem; margin-bottom: 12px; color: #f8fafc; position: relative; z-index: 2; transform: translateZ(24px); }
.card-2d p { color: var(--web-muted); line-height: 1.65; font-size: 0.95rem; position: relative; z-index: 2; transform: translateZ(24px); }

/* Glare / brillo que sigue el cursor (como ProfileCard) */
.card-2d::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--radius);
  background: radial-gradient(
    farthest-corner circle at var(--pointer-x) var(--pointer-y),
    color-mix(in srgb, var(--tc, #22d3ee) 30%, transparent) 0%,
    transparent 60%
  );
  mix-blend-mode: screen;
  opacity: 0;
  transition: opacity .3s ease;
  pointer-events: none;
  z-index: 1;
}

/* "Protuberancia" que sigue al cursor y se pega un instante (morph) */
.card-2d::after {
  content: '';
  position: absolute;
  top: var(--cy);
  left: var(--cx);
  width: 130px;
  height: 130px;
  border-radius: 50%;
  border: 1.5px solid color-mix(in srgb, var(--tc, #22d3ee) 70%, transparent);
  background: radial-gradient(circle, color-mix(in srgb, var(--tc, #22d3ee) 25%, transparent) 0%, transparent 70%);
  transform: translate(-50%, -50%);
  opacity: 0;
  transition: opacity .25s ease;
  pointer-events: none;
  z-index: 1;
}
.card-2d:hover::before,
.card-2d:hover::after { opacity: 1; }

.card-2d:hover {
  border-color: color-mix(in srgb, var(--tc, #22d3ee) 70%, transparent);
  background:
    linear-gradient(160deg, color-mix(in srgb, var(--tc, #22d3ee) 22%, transparent), rgba(10, 12, 20, 0.9));
  box-shadow:
    0 18px 40px color-mix(in srgb, var(--tc, #22d3ee) 22%, transparent),
    0 0 30px color-mix(in srgb, var(--tc, #22d3ee) 18%, transparent);
}

/* ---------- Planes de diseÃ±o web (de estilografico.cl) ---------- */
.planes-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 28px;
  max-width: 1100px;
  margin: 0 auto;
  align-items: stretch;
}
.plan-card {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 36px 30px;
  border-radius: var(--radius);
  background: linear-gradient(160deg, color-mix(in srgb, var(--tc, #22d3ee) 10%, transparent), rgba(10, 12, 20, 0.88));
  border: 1px solid color-mix(in srgb, var(--tc, #22d3ee) 30%, transparent);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition: transform .35s var(--ease), border-color .35s, box-shadow .35s;
}
.plan-card:hover {
  transform: translateY(-6px);
  border-color: color-mix(in srgb, var(--tc, #22d3ee) 70%, transparent);
  box-shadow: 0 18px 40px color-mix(in srgb, var(--tc, #22d3ee) 20%, transparent);
}
/* Plan recomendado (Empresario): brilla en MORADO */
.plan-featured {
  border-color: rgba(167, 139, 250, 0.6);
  box-shadow: 0 0 34px rgba(167, 139, 250, 0.28);
  animation: planPurplePulse 2.2s ease-in-out infinite;
}
@keyframes planPurplePulse {
  0%, 100% {
    box-shadow: 0 0 22px rgba(167, 139, 250, 0.2), 0 0 50px rgba(167, 139, 250, 0.14);
  }
  50% {
    box-shadow: 0 0 40px rgba(167, 139, 250, 0.5), 0 0 80px rgba(167, 139, 250, 0.28);
  }
}
/* Etiqueta "Recomendado" morada */
.plan-recomendado {
  position: absolute;
  top: -14px;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--font-head);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #fff;
  background: linear-gradient(135deg, #a78bfa, #7c3aed, #a78bfa);
  border: 1px solid rgba(196, 181, 253, 0.8);
  border-radius: 999px;
  padding: 6px 18px;
  white-space: nowrap;
  box-shadow: 0 0 20px rgba(167, 139, 250, 0.55);
  animation: recomendadoGlowPurple 2.2s ease-in-out infinite;
}
@keyframes recomendadoGlowPurple {
  0%, 100% { box-shadow: 0 0 12px rgba(167, 139, 250, 0.4); }
  50%      { box-shadow: 0 0 28px rgba(167, 139, 250, 0.85); }
}

/* Plan Premium: 5 estrellas + brillo DORADO */
.plan-premium {
  border-color: rgba(255, 200, 60, 0.55);
  box-shadow: 0 0 34px rgba(255, 190, 40, 0.25);
  animation: planGoldPulse 2.2s ease-in-out infinite;
}
@keyframes planGoldPulse {
  0%, 100% {
    box-shadow: 0 0 22px rgba(255, 190, 40, 0.18), 0 0 50px rgba(255, 190, 40, 0.12);
  }
  50% {
    box-shadow: 0 0 40px rgba(255, 190, 40, 0.45), 0 0 80px rgba(255, 190, 40, 0.25);
  }
}
.plan-estrellas {
  position: absolute;
  top: -16px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 1.1rem;
  letter-spacing: 4px;
  color: #ffd76a;
  text-shadow: 0 0 16px rgba(255, 190, 40, 0.85), 0 0 30px rgba(255, 190, 40, 0.5);
  background: rgba(10, 12, 20, 0.85);
  border: 1px solid rgba(255, 200, 60, 0.5);
  border-radius: 999px;
  padding: 4px 14px;
  white-space: nowrap;
  animation: estrellasGlow 2.2s ease-in-out infinite;
}
@keyframes estrellasGlow {
  0%, 100% { text-shadow: 0 0 12px rgba(255, 190, 40, 0.6), 0 0 24px rgba(255, 190, 40, 0.3); }
  50%      { text-shadow: 0 0 22px rgba(255, 190, 40, 1), 0 0 40px rgba(255, 190, 40, 0.7); }
}
.plan-nombre {
  font-family: var(--font-head);
  font-size: 1.15rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #fff;
  margin-bottom: 10px;
}
.plan-precio {
  font-size: 1.05rem;
  color: var(--web-muted);
  margin-bottom: 20px;
}
.plan-precio strong {
  font-family: var(--font-head);
  font-size: 2.2rem;
  color: var(--tc, #22d3ee);
  text-shadow: 0 0 18px color-mix(in srgb, var(--tc, #22d3ee) 45%, transparent);
}
.plan-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 0 0 28px;
  padding: 0;
  flex: 1;
}
.plan-list li {
  position: relative;
  padding-left: 26px;
  font-size: 0.95rem;
  color: var(--web-text);
  line-height: 1.5;
}
.plan-list li::before {
  content: '\2713';
  position: absolute;
  left: 0;
  top: 0;
  color: var(--tc, #22d3ee);
  font-weight: 700;
}
.plan-btn {
  display: block;
  text-align: center;
}
.plan-btn:hover {
  transform: translateY(-3px) scale(1.03);
}
/* Al hacer hover, el texto se vuelve oscuro para leerse sobre el blob blanco */
.gooey-btn:hover .plan-btn {
  color: #04121f;
  border-color: transparent;
}

/* ---------- Efecto Gooey (de reactbits) en los botones Comprar ---------- */
:root {
  --gooey-1: hsl(2, 100%, 73%);
  --gooey-2: hsl(53, 100%, 69%);
  --gooey-3: hsl(283, 100%, 73%);
  --gooey-4: hsl(228, 100%, 74%);
}
.gooey-btn {
  position: relative;
  display: inline-block;
  width: auto; /* botÃ³n compacto, no ocupa todo el ancho */
  border-radius: 999px;
  margin: 0 auto;
}
.gooey-btn .plan-btn {
  position: relative;
  z-index: 3;
  width: auto; /* mismo porte compacto */
  box-sizing: border-box;
  padding: 12px 42px; /* porte del botÃ³n original */
  /* Solo blanco + efecto gooey: anula el degradado cian de .btn-cta */
  background: rgba(255, 255, 255, 0.1) !important;
  border: 1px solid rgba(255, 255, 255, 0.45) !important;
  color: #fff !important;
  box-shadow: none !important;
}
/* Al hacer hover, el texto se vuelve oscuro para leerse sobre el blob blanco */
.gooey-btn:hover .plan-btn {
  color: #04121f !important;
  border-color: transparent !important;
  background: transparent !important;
}
.gooey-blob {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  filter: blur(7px) contrast(100) blur(0);
  mix-blend-mode: lighten;
  opacity: 0;
  transition: opacity .15s ease;
}
.gooey-btn:hover .gooey-blob { opacity: 1; }
.gooey-blob::before {
  content: '';
  position: absolute;
  inset: -40px;
  z-index: -2;
  background: #000;
}
.gooey-blob::after {
  content: '';
  position: absolute;
  inset: 0;
  background: #fff;
  transform: scale(0);
  opacity: 0;
  z-index: -1;
  border-radius: 9999px;
}
.gooey-btn:hover .gooey-blob::after { animation: gooeyPill .3s ease both; }
@keyframes gooeyPill {
  to { transform: scale(1); opacity: 1; }
}
.gooey-blob .particle,
.gooey-blob .point {
  display: block;
  opacity: 0;
  width: 20px;
  height: 20px;
  border-radius: 9999px;
  transform-origin: center;
}
.gooey-blob .particle {
  --time: 5s;
  position: absolute;
  top: calc(50% - 8px);
  left: calc(50% - 8px);
  animation: gooeyParticle calc(var(--time)) ease 1 -350ms;
}
.gooey-blob .point {
  background: var(--color);
  opacity: 1;
  animation: gooeyPoint calc(var(--time)) ease 1 -350ms;
}
@keyframes gooeyParticle {
  0% { transform: rotate(0deg) translate(calc(var(--start-x)), calc(var(--start-y))); opacity: 1; animation-timing-function: cubic-bezier(.55, 0, 1, .45); }
  70% { transform: rotate(calc(var(--rotate) * .5)) translate(calc(var(--end-x) * 1.2), calc(var(--end-y) * 1.2)); opacity: 1; animation-timing-function: ease; }
  85% { transform: rotate(calc(var(--rotate) * .66)) translate(calc(var(--end-x)), calc(var(--end-y))); opacity: 1; }
  100% { transform: rotate(calc(var(--rotate) * 1.2)) translate(calc(var(--end-x) * .5), calc(var(--end-y) * .5)); opacity: 1; }
}
@keyframes gooeyPoint {
  0% { transform: scale(0); opacity: 0; animation-timing-function: cubic-bezier(.55, 0, 1, .45); }
  25% { transform: scale(calc(var(--scale) * .25)); }
  38% { opacity: 1; }
  65% { transform: scale(var(--scale)); opacity: 1; animation-timing-function: ease; }
  85% { transform: scale(var(--scale)); opacity: 1; }
  100% { transform: scale(0); opacity: 0; }
}

/* Footer completo del mundo ads (mismos estilos, colores magenta/violeta) */
.world-footer.web-footer.ads-footer {
  border-top-color: rgba(232, 121, 249, 0.16);
  background: rgba(3, 3, 6, 0.6);
}
.world-footer.ads-footer .footer-col a,
.world-footer.ads-footer .footer-brand p {
  color: var(--ads-muted);
}
.world-footer.ads-footer .footer-col a:hover {
  color: var(--ads-fuchsia);
}

/* Tarjetas glow (mundo ads): vidrio transparente + efecto "morph" */
.card-glow {
  position: relative;
  --cx: 50%;
  --cy: 50%;
  background: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border-radius: var(--radius);
  padding: 36px 30px;
  border: 1px solid rgba(232,121,249,.22);
  transition: transform .3s cubic-bezier(.34, 1.56, .64, 1), box-shadow .4s, background .35s;
  will-change: transform;
}
.card-glow::after {
  content: '';
  position: absolute;
  top: var(--cy);
  left: var(--cx);
  width: 130px;
  height: 130px;
  border-radius: 50%;
  border: 1.5px solid rgba(232, 121, 249, 0.6);
  background: radial-gradient(circle, rgba(232, 121, 249, 0.2) 0%, rgba(232, 121, 249, 0.06) 45%, transparent 70%);
  transform: translate(-50%, -50%);
  opacity: 0;
  transition: opacity .25s ease;
  pointer-events: none;
  z-index: 1;
}
.card-glow:hover::after { opacity: 1; }
.card-glow h4,
.card-glow p {
  position: relative;
  z-index: 2;
}
.card-glow::before {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(135deg, var(--ads-fuchsia), transparent 40%, var(--ads-violet));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0;
  transition: opacity .4s;
  pointer-events: none;
}
.card-glow h4 { font-family: var(--font-head); font-size: 1.2rem; margin-bottom: 12px; color: var(--ads-text); }
.card-glow p { color: var(--ads-muted); line-height: 1.65; font-size: 0.95rem; }
.card-glow:hover {
  transform: translateY(-8px);
  background: rgba(255, 255, 255, 0.09);
  box-shadow: 0 0 24px rgba(232,121,249,.2), 0 18px 40px rgba(0,0,0,.35);
}
.card-glow:hover::before { opacity: 1; }

/* ---------- Portafolio (mundo web) ---------- */
.portfolio-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 30px;
  max-width: 1150px;
  margin: 0 auto;
}

.pf-item {
  background: var(--web-card);
  border: 1px solid rgba(148,163,184,.12);
  border-radius: var(--radius);
  overflow: hidden;
  transition: transform .35s var(--ease), border-color .35s, box-shadow .35s;
}
.pf-item.pf-img { display: block; text-decoration: none; }
.pf-thumb {
  height: 170px;
  background:
    radial-gradient(300px 160px at 30% 20%, rgba(34,211,238,.3), transparent 60%),
    radial-gradient(300px 160px at 80% 80%, rgba(59,130,246,.25), transparent 60%),
    linear-gradient(135deg, #10101a, #07070b);
}
.pf-thumb.pf-img { overflow: hidden; }
.pf-thumb.pf-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  display: block;
  transition: transform .5s var(--ease);
}
.pf-item:hover .pf-thumb.pf-img img { transform: scale(1.08); }
.pf-thumb::after {
  content: '';
  display: block;
  width: 100%;
  height: 100%;
  background:
    linear-gradient(90deg, transparent 48%, rgba(255,255,255,.05) 50%, transparent 52%);
  background-size: 220% 100%;
  transition: background-position .6s var(--ease);
}
.pf-item:hover { transform: translateY(-8px); border-color: var(--web-cyan); box-shadow: 0 16px 36px rgba(34,211,238,.14); }
.pf-item:hover .pf-thumb::after { background-position: -120% 0; }
.pf-item h4 { font-family: var(--font-head); font-size: 1.05rem; padding: 16px 18px 0; color: #f8fafc; }
.pf-item p { font-size: 0.85rem; color: var(--web-muted); padding: 4px 18px 18px; }
.pf-cta {
  display: block;
  margin: 0 18px 18px;
  padding: 10px 14px;
  font-size: 0.82rem;
  font-weight: 600;
  text-align: center;
  color: #041018;
  background: linear-gradient(135deg, var(--web-cyan), #38bdf8);
  border-radius: 10px;
  box-shadow: 0 8px 20px rgba(34,211,238,.22);
  transition: transform .3s var(--ease), box-shadow .3s;
}
.pf-item:hover .pf-cta { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(34,211,238,.34); }

/* CTA de la tarjeta premium (PÃ¡gina Gamer): dorado */
.pf-item.pf-plan-premium .pf-cta {
  color: #2b1c00;
  background: linear-gradient(135deg, #ffe9a8, #f5c542 45%, #d9a520);
  box-shadow: 0 8px 20px rgba(245, 197, 66, 0.3);
}
.pf-item.pf-plan-premium:hover .pf-cta { box-shadow: 0 12px 26px rgba(245, 197, 66, 0.45); }

/* CTA de la tarjeta emprendedor (CafeterÃ­a): teal del plan */
.pf-item.pf-plan-emprendedor .pf-cta {
  color: #03110e;
  background: linear-gradient(135deg, #5eead4, #2dd4bf 50%, #14b8a6);
  box-shadow: 0 8px 20px rgba(45, 212, 191, 0.3);
}
.pf-item.pf-plan-emprendedor:hover .pf-cta { box-shadow: 0 12px 26px rgba(45, 212, 191, 0.45); }

/* CTA de la tarjeta empresario (ClÃ­nica Dental): morado del plan */
.pf-item.pf-plan-empresario .pf-cta {
  color: #170826;
  background: linear-gradient(135deg, #c4b5fd, #a78bfa 50%, #8b5cf6);
  box-shadow: 0 8px 20px rgba(167, 139, 250, 0.3);
}
.pf-item.pf-plan-empresario:hover .pf-cta { box-shadow: 0 12px 26px rgba(167, 139, 250, 0.45); }

/* ---------- Colores de tarjetas segÃºn plan (borde, texto siempre blanco) ---------- */
.pf-item.pf-plan-emprendedor { border: 2px solid rgba(45, 212, 191, 0.75); }
.pf-item.pf-plan-emprendedor:hover { border-color: #2dd4bf; box-shadow: 0 16px 36px rgba(45, 212, 191, 0.22); }
.pf-item.pf-plan-emprendedor .pf-thumb {
  background:
    radial-gradient(300px 160px at 30% 20%, rgba(45, 212, 191, 0.35), transparent 60%),
    radial-gradient(300px 160px at 80% 80%, rgba(20, 184, 166, 0.25), transparent 60%),
    linear-gradient(135deg, #10101a, #07070b);
}

.pf-item.pf-plan-empresario { border: 2px solid rgba(167, 139, 250, 0.75); }
.pf-item.pf-plan-empresario:hover { border-color: #a78bfa; box-shadow: 0 16px 36px rgba(167, 139, 250, 0.25); }
.pf-item.pf-plan-empresario .pf-thumb {
  background:
    radial-gradient(300px 160px at 30% 20%, rgba(167, 139, 250, 0.35), transparent 60%),
    radial-gradient(300px 160px at 80% 80%, rgba(139, 92, 246, 0.25), transparent 60%),
    linear-gradient(135deg, #10101a, #07070b);
}

/* ---------- Tarjeta Premium: contorno dorado + etiqueta Premium ---------- */
.pf-item.pf-plan-premium {
  position: relative;
  border: 2px solid #f5c542;
  box-shadow: 0 0 22px rgba(245, 197, 66, 0.22), inset 0 0 18px rgba(245, 197, 66, 0.08);
  transition: transform .35s var(--ease), box-shadow .35s;
}
.pf-item.pf-plan-premium:hover {
  transform: translateY(-8px);
  box-shadow: 0 0 34px rgba(245, 197, 66, 0.4), inset 0 0 22px rgba(245, 197, 66, 0.14);
}
/* Insignia Premium en dorado */
.pf-item.pf-plan-premium .pf-premium-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 6;
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #2b1c00;
  background: linear-gradient(135deg, #ffe9a8, #f5c542 45%, #d9a520);
  border-radius: 999px;
  padding: 6px 14px;
  box-shadow: 0 6px 16px rgba(245, 197, 66, 0.45);
}
.pf-item.pf-plan-premium .pf-thumb {
  background:
    radial-gradient(300px 160px at 30% 20%, rgba(245, 197, 66, 0.25), transparent 60%),
    radial-gradient(300px 160px at 80% 80%, rgba(217, 165, 32, 0.2), transparent 60%),
    linear-gradient(135deg, #10101a, #07070b);
}

/* ---------- Stats con brillo (mundo ads) ---------- */
.glow-stats {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 40px;
  margin-top: 46px;
}
.glow-stat { display: flex; flex-direction: column; gap: 6px; }
.glow-stat strong {
  font-family: var(--font-head);
  font-size: clamp(1.8rem, 4vw, 2.8rem);
  background: linear-gradient(90deg, var(--ads-fuchsia), var(--ads-violet));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 18px rgba(232,121,249,.35));
}
.glow-stat span { font-size: 0.85rem; opacity: .65; letter-spacing: 0.04em; }

/* ---------- Franja de campaÃ±as (mundo ads) ---------- */
.campaign-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 28px;
  max-width: 1050px;
  margin: 0 auto;
}
.campaign-card {
  position: relative;
  background: var(--ads-card);
  border-radius: var(--radius);
  padding: 34px 28px;
  border: 1px solid rgba(232,121,249,.16);
  overflow: hidden;
  transition: transform .4s var(--ease), border-color .4s;
}
.campaign-card .c-num {
  position: absolute;
  top: 8px;
  right: 16px;
  font-family: var(--font-head);
  font-size: 3rem;
  font-weight: 700;
  opacity: .08;
}
.campaign-card h4 { font-family: var(--font-head); font-size: 1.15rem; margin-bottom: 10px; color: var(--ads-text); }
.campaign-card p { color: var(--ads-muted); font-size: 0.9rem; }
.campaign-card:hover { transform: translateY(-8px); border-color: var(--ads-fuchsia); }
.campaign-card:hover .c-num { opacity: .3; }

/* ---------- CTA y footer ---------- */
.cta-box {
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
  padding: 64px 48px;
  border-radius: 24px;
}
.world-web .cta-box { background: linear-gradient(135deg, #10101a, #07070b); border: 1px solid rgba(34,211,238,.25); }
.world-ads  .cta-box { background: linear-gradient(135deg, #10101a, #07070b); border: 1px solid rgba(232,121,249,.3); }
.cta-box h3 { font-family: var(--font-head); font-size: clamp(1.6rem, 3.4vw, 2.4rem); margin-bottom: 12px; }
.cta-box p { opacity: .75; margin-bottom: 30px; }

.btn-cta {
  display: inline-block;
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 1rem;
  padding: 15px 40px;
  border-radius: 999px;
  transition: transform .3s var(--ease), box-shadow .3s, filter .3s;
}
.world-web .btn-cta { background: linear-gradient(135deg, var(--web-cyan), var(--web-blue)); color: #04121f; box-shadow: 0 10px 26px rgba(34,211,238,.35); }
.world-ads  .btn-cta { background: linear-gradient(135deg, var(--ads-fuchsia), var(--ads-violet)); color: #160521; box-shadow: 0 10px 26px rgba(232,121,249,.4); }
.btn-cta:hover { transform: translateY(-3px) scale(1.03); }
/* Iluminación al pasar el mouse: resplandor del color del tema (todos los botones .btn-cta) */
.world-web .btn-cta:hover {
  box-shadow:
    0 0 20px rgba(34, 211, 238, 0.7),
    0 0 45px rgba(34, 211, 238, 0.45),
    0 10px 26px rgba(34, 211, 238, 0.35);
  filter: brightness(1.15);
}
.world-ads .btn-cta:hover {
  box-shadow:
    0 0 20px rgba(232, 121, 249, 0.7),
    0 0 45px rgba(232, 121, 249, 0.45),
    0 10px 26px rgba(232, 121, 249, 0.4);
  filter: brightness(1.15);
}

/* ---------- Formulario de contacto con pasos ---------- */
.cta-form { max-width: 860px; padding: 56px 40px; }
.form-question {
  font-family: var(--font-head);
  font-size: 1.25rem;
  margin-bottom: 24px;
  color: #f8fafc;
}
.option-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
.option-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  padding: 18px 20px;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.04);
  border: 1.5px solid rgba(148, 163, 184, 0.22);
  cursor: pointer;
  transition: border-color .25s ease, background .25s ease, transform .25s var(--ease);
}
.option-card:hover { transform: translateY(-3px); border-color: rgba(34, 211, 238, 0.55); }
.option-card input { position: absolute; opacity: 0; pointer-events: none; }
.option-card:has(input:checked) {
  border-color: var(--web-cyan);
  background: rgba(34, 211, 238, 0.1);
  box-shadow: 0 0 0 1px rgba(34, 211, 238, 0.35), 0 10px 24px rgba(34, 211, 238, 0.12);
}
/* Iconos SVG de las opciones (reemplazan a los emojis, imagen profesional) */
.option-emoji {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border-radius: 12px;
  background: rgba(34, 211, 238, 0.1);
  border: 1px solid rgba(34, 211, 238, 0.25);
  color: var(--web-cyan);
}
.option-emoji svg {
  width: 24px;
  height: 24px;
}
.option-title { font-weight: 700; font-size: 1rem; color: #f8fafc; }
.option-desc { font-size: 0.8rem; opacity: 0.65; }
.form-fields {
  display: grid;
  gap: 14px;
  text-align: left;
}
/* Campo dinÃ¡mico segÃºn la tarjeta elegida */
.field-dinamico {
  background: rgba(34, 211, 238, 0.06);
  border: 1.5px solid rgba(34, 211, 238, 0.3);
  border-radius: 12px;
  padding: 14px 16px;
  display: grid;
  gap: 10px;
  animation: campoIn .35s var(--ease);
}
@keyframes campoIn {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: none; }
}
.field-dinamico-titulo {
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 0.95rem;
  color: #22d3ee;
  letter-spacing: 0.03em;
}
.field-dinamico textarea {
  width: 100%;
  background: rgba(255, 255, 255, 0.06);
  border: 1.5px solid rgba(148, 163, 184, 0.3);
  border-radius: 10px;
  padding: 12px 14px;
  color: #f8fafc;
  font-family: inherit;
  font-size: 0.92rem;
  outline: none;
  resize: vertical;
  transition: border-color .25s ease, box-shadow .25s ease;
}
.field-dinamico textarea:focus {
  border-color: var(--web-cyan);
  box-shadow: 0 0 0 3px rgba(34, 211, 238, 0.15);
}
.contact-form input[type="text"],
.contact-form input[type="email"],
.contact-form textarea {
  width: 100%;
  background: rgba(255, 255, 255, 0.05);
  border: 1.5px solid rgba(148, 163, 184, 0.25);
  border-radius: 12px;
  padding: 13px 16px;
  color: #f8fafc;
  font-family: inherit;
  font-size: 0.95rem;
  outline: none;
  transition: border-color .25s ease, box-shadow .25s ease;
}
.contact-form input:focus,
.contact-form textarea:focus {
  border-color: var(--web-cyan);
  box-shadow: 0 0 0 3px rgba(34, 211, 238, 0.15);
}
.contact-form textarea { resize: vertical; min-height: 96px; }
.form-nav {
  display: flex;
  justify-content: center;
  gap: 14px;
  margin-top: 22px;
  flex-wrap: wrap;
}
.btn-back {
  /* Igual que "Enviar por WhatsApp": hereda todo de .btn-cta (gradiente cian,
     glow al hover). Sin estilos propios — pedido de Manuel 31-08. */
}
.form-hint {
  margin-top: 16px;
  font-size: 0.8rem;
  opacity: 0.5;
}
@media (max-width: 640px) {
  .option-grid { grid-template-columns: 1fr; }
  .cta-form { padding: 40px 22px; }
}

.world-footer {
  text-align: center;
  padding: 34px 6vw;
  font-size: 0.85rem;
  opacity: .5;
}

/* Footer completo del mundo web */
.world-footer.web-footer {
  text-align: left;
  opacity: 1;
  padding: 70px 6vw 0;
  border-top: 1px solid rgba(34, 211, 238, 0.12);
  background: rgba(3, 3, 6, 0.6);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.web-footer .footer-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: 44px;
  max-width: 1150px;
  margin: 0 auto;
  padding-bottom: 56px;
}
.web-footer h4 {
  font-family: var(--font-head);
  font-size: 1rem;
  font-weight: 700;
  margin-bottom: 14px;
  color: #ffffff;
}
.web-footer .footer-col {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.web-footer .footer-col a {
  color: var(--web-muted);
  opacity: .9;
  width: fit-content;
}
.web-footer .footer-col a:hover {
  color: var(--web-cyan);
}
.web-footer .footer-brand .world-logo {
  font-size: 1.6rem;
}
.web-footer .footer-brand p {
  color: var(--web-muted);
  line-height: 1.7;
  max-width: 340px;
  margin-top: 14px;
}
.web-footer .footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  padding: 22px 0 30px;
  text-align: center;
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.5);
}
@media (max-width: 900px) {
  .web-footer .footer-grid {
    grid-template-columns: 1fr;
    text-align: center;
  }
  .web-footer .footer-col a {
    margin: 0 auto;
  }
  .web-footer .footer-brand p {
    margin: 14px auto 0;
  }
}

/* ==========================================================================
   WIDGETS DE ESQUINA (clima y fecha/hora) ELIMINADOS (31-08, pedido de
   Manuel: imagen de empresa seria)
   ========================================================================== */

/* ==========================================================================
   BOTÃ“N DE MÃšSICA AMBIENTAL (relajante, con ecualizador animado)
   ========================================================================== */
.music-controls {
  position: fixed;
  right: 26px;
  bottom: 26px;
  z-index: 200;
  display: flex;
  align-items: center;
  gap: 14px;
}

/* Etiqueta "Tranquiliza tu mente" (a la izquierda del botÃ³n) */
.music-label {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-head);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  color: rgba(255, 255, 255, 0.9);
  padding: 13px 22px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.3);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.45);
  transition: all .35s var(--ease);
}

.music-label:hover {
  transform: translateY(-3px);
  border-color: #22d3ee;
  box-shadow: 0 0 26px rgba(34, 211, 238, 0.3), 0 14px 30px rgba(0, 0, 0, 0.45);
}

.music-label .label-play {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: linear-gradient(135deg, #22d3ee, #3b82f6);
  color: #04121f;
  font-size: 0.7rem;
  line-height: 1;
  flex-shrink: 0;
  transition: all .35s var(--ease);
}
.music-label .label-play svg {
  width: 13px;
  height: 13px;
  display: block;
}

/* Estado "reproduciendo": la etiqueta se tiÃ±e de cian (color de la pÃ¡gina) */
.music-label.playing { border-color: rgba(34, 211, 238, 0.55); }
.music-label.playing:hover {
  border-color: #22d3ee;
  box-shadow: 0 0 26px rgba(34, 211, 238, 0.35), 0 14px 30px rgba(0, 0, 0, 0.45);
}
.music-label.playing .label-play {
  background: linear-gradient(135deg, #22d3ee, #3b82f6);
  animation: labelPulse 1.6s ease-in-out infinite;
}
@keyframes labelPulse {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.12); }
}

.music-toggle {
  width: 58px;
  height: 58px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.3);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.45);
  color: rgba(255, 255, 255, 0.85);
  transition: all .35s var(--ease);
}

.music-toggle:hover {
  transform: translateY(-3px) scale(1.06);
  border-color: #22d3ee;
  box-shadow: 0 0 26px rgba(34, 211, 238, 0.3), 0 14px 30px rgba(0, 0, 0, 0.45);
}

.music-icon {
  width: 26px;
  height: 26px;
  transition: opacity .3s ease;
}

/* Ecualizador ("decibeles" vibrando) â€” solo visible al reproducir */
.eq-bars {
  display: none;
  align-items: flex-end;
  justify-content: center;
  gap: 3px;
  height: 24px;
}
.music-toggle.playing .eq-bars { display: flex; }
.music-toggle.playing .music-icon { display: none; }

.eq-bar {
  width: 4px;
  height: 100%;
  border-radius: 3px;
  transform-origin: bottom;
  animation: eqBounce 0.9s ease-in-out infinite;
}
.eq-bar:nth-child(1) { background: linear-gradient(180deg, #22d3ee, #7dd3fc); }
.eq-bar:nth-child(2) { background: linear-gradient(180deg, #67e8f9, #38bdf8); animation-delay: .12s; }
.eq-bar:nth-child(3) { background: linear-gradient(180deg, #22d3ee, #7dd3fc); animation-delay: .24s; }
.eq-bar:nth-child(4) { background: linear-gradient(180deg, #67e8f9, #38bdf8); animation-delay: .36s; }

@keyframes eqBounce {
  0%, 100% { transform: scaleY(.2); }
  50%      { transform: scaleY(1); }
}

/* Anillo pulsante mientras la mÃºsica estÃ¡ encendida */
.music-toggle.playing::after {
  content: '';
  position: absolute;
  inset: -7px;
  border-radius: 50%;
  border: 1.5px solid rgba(34, 211, 238, 0.55);
  animation: pulseRing 2.2s ease-out infinite;
  pointer-events: none;
}
@keyframes pulseRing {
  0%   { transform: scale(0.92); opacity: 1; }
  100% { transform: scale(1.4); opacity: 0; }
}

@media (max-width: 480px) {
  .music-controls { right: 18px; bottom: 18px; gap: 10px; }
  .music-toggle { width: 52px; height: 52px; }
  .music-icon { width: 22px; height: 22px; }
  .eq-bars { height: 20px; }
  .music-label { padding: 10px 16px; font-size: 0.82rem; }
  .music-label .label-play { width: 22px; height: 22px; }
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media (max-width: 900px) {
  /* La pantalla dividida se apila verticalmente */
  .split-screen { flex-direction: column; }
  .split-left::after {
    left: 0;
    right: 0;
    bottom: 0;
    top: auto;
    width: auto;
    height: 2px;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.85), transparent);
  }
  .split-half { flex: 1; }
  .split-half:hover { flex: 1.2; }
  .half-content { text-align: center; padding: 40px 20px; }
  .half-sub { margin-left: auto; margin-right: auto; }
  .split-hint { display: none; }
  .half-title {
    font-size: clamp(2.6rem, 11vw, 4.2rem);
    /* Archivo Black es muy ancha: en pantallas chicas las letras se pegan,
       por eso aqui se quita el espaciado negativo y se reduce el trazo */
    letter-spacing: 0.01em;
    -webkit-text-stroke-width: 0.8px;
    line-height: 1.05;
  }

  /* MenÃº hamburguesa en los mundos */
  .world-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    flex-direction: column;
    gap: 6px;
    padding: 18px 6vw 22px;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
  }
  .world-web .world-menu { background: rgba(10,38,71,.96); }
  .world-ads  .world-menu { background: rgba(18,7,31,.96); }
  .world-menu.open { display: flex; }
  .menu-toggle { display: block; }
  .world-menu .menu-link { padding: 10px 0; font-size: 1.05rem; }
}

@media (max-width: 480px) {
  .world-nav { padding: 14px 5vw; }
  .world-hero { padding: 90px 5vw 70px; }
  .world-section { padding: 90px 5vw; }
  .icon-grid { height: 240px; perspective: 700px; }
  .icon-item { width: 135px; height: 152px; margin: 0; }
  .icon-item.active { transform: translate(-50%, -50%) scale(1); }
  .icon-item.l1 { transform: translate(calc(-50% - 125px), -50%) scale(.78) rotateY(12deg); }
  .icon-item.r1 { transform: translate(calc(-50% + 125px), -50%) scale(.78) rotateY(-12deg); }
  .icon-item.l2 { transform: translate(calc(-50% - 210px), -50%) scale(.5) rotateY(20deg); }
  .icon-item.r2 { transform: translate(calc(-50% + 210px), -50%) scale(.5) rotateY(-20deg); }
  .icon-item svg { width: 38px; height: 38px; }
  .back-home { font-size: 0.8rem; padding: 8px 14px; }
}

/* ==========================================================================
   PRELOADER: Uiverse.io risabbir (warp-loader: 4 anillos radar + núcleo
   brillante), color cian (pedido 31-08)
   ========================================================================== */
.preloader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: radial-gradient(circle at 50% 38%, #0d0d15 0%, #030306 68%);
  transition: transform .9s cubic-bezier(.7, 0, .3, 1), opacity .9s ease, filter .9s ease;
  will-change: transform, opacity;
}
.preloader.done {
  transform: scale(1.18);
  opacity: 0;
  filter: blur(14px);
  pointer-events: none;
}
.preloader-inner {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  animation: preFadeIn 1s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes preFadeIn {
  from { opacity: 0; transform: translateY(18px) scale(.95); filter: blur(8px); }
  to { opacity: 1; transform: none; filter: none; }
}
/* Warp loader de Uiverse risabbir: 4 anillos que se expanden en cadena
   (radar) + núcleo cian brillante. El logo va centrado encima del núcleo. */
.warp-loader {
  position: relative;
  width: 225px;
  height: 225px;
}
.warp-loader .ring {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, rgba(0, 255, 255, 0.15) 30%, transparent 70%);
  animation: warpPulse 2.2s ease-out infinite;
  opacity: 0;
  box-shadow:
    0 0 12px #00d1ff66,
    0 0 24px #00d1ff33;
  border: 2px solid rgba(0, 255, 255, 0.2);
}
.warp-loader .ring:nth-child(1) { animation-delay: 0s; }
.warp-loader .ring:nth-child(2) { animation-delay: 0.4s; }
.warp-loader .ring:nth-child(3) { animation-delay: 0.8s; }
.warp-loader .ring:nth-child(4) { animation-delay: 1.2s; }
@keyframes warpPulse {
  0%   { transform: translate(-50%, -50%) scale(0.3); opacity: 1; }
  70%  { transform: translate(-50%, -50%) scale(1.1); opacity: 0.15; }
  100% { transform: translate(-50%, -50%) scale(1.4); opacity: 0; }
}
.core-glow {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 86px;
  height: 86px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: radial-gradient(circle at center, #0e2a3a, #05121c 75%);
  border: 2px solid rgba(0, 229, 255, 0.55);
  box-shadow:
    0 0 25px #00e5ff,
    0 0 60px #00e5ff88,
    0 0 100px #00e5ff33;
  animation: corePulse 1.6s ease-in-out infinite;
}
@keyframes corePulse {
  0%, 100% { transform: translate(-50%, -50%) scale(1); }
  50%      { transform: translate(-50%, -50%) scale(1.2); }
}
/* Logo del preloader (imagen) centrado sobre el núcleo */
.preloader-logo-img {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 5;
  width: 62px;
  height: 62px;
  object-fit: contain;
  display: block;
  filter: drop-shadow(0 0 8px rgba(0, 229, 255, 0.95)) drop-shadow(0 0 20px rgba(0, 229, 255, 0.5));
}
.preloader-bar {
  width: 230px;
  height: 5px;
  margin-top: -4px; /* pegado al loader (texto eliminado) */
  background: rgba(255, 255, 255, 0.12);
  border-radius: 99px;
  overflow: hidden;
}
.preloader-bar span {
  display: block;
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, #22d3ee, #7dd3fc);
  box-shadow: 0 0 16px rgba(34, 211, 238, 0.85);
  border-radius: 99px;
  transition: width .15s ease-out;
}
.preloader-pct {
  margin-top: 12px;
  color: rgba(255, 255, 255, 0.75);
  font-size: .85rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* ==========================================================================
   OLA DIGITAL (efecto de ondas al entrar tras el preloader)
   ========================================================================== */
.digital-wave {
  position: fixed;
  inset: 0;
  z-index: 9990;
  pointer-events: none;
  overflow: hidden;
  visibility: hidden;
}
.digital-wave.active { visibility: visible; }
.dw-layer {
  position: absolute;
  left: -20%;
  right: -20%;
  height: 34vh;
  bottom: -34vh;
  border-radius: 48% 52% 40% 60% / 60% 45% 55% 40%;
  background: linear-gradient(180deg, rgba(34, 211, 238, 0.35), rgba(34, 211, 238, 0.05));
  transform: rotate(0deg);
}
.dw-1 { animation: dwRise 1.6s cubic-bezier(.2, .8, .3, 1) forwards; }
.dw-2 { animation: dwRise 1.9s cubic-bezier(.2, .8, .3, 1) .12s forwards; background: linear-gradient(180deg, rgba(34, 211, 238, 0.25), rgba(34, 211, 238, 0.03)); }
.dw-3 { animation: dwRise 2.2s cubic-bezier(.2, .8, .3, 1) .24s forwards; background: linear-gradient(180deg, rgba(34, 211, 238, 0.15), rgba(34, 211, 238, 0)); }
@keyframes dwRise {
  0% { transform: translateY(0) rotate(0deg); opacity: 0; }
  30% { opacity: 1; }
  100% { transform: translateY(-78vh) rotate(6deg); opacity: 0; }
}

/* ==========================================================================
   HEADER Â· MenÃº principal superior (visible dentro del mundo)
   ========================================================================== */
.world-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 80;
  display: none;
  background: rgba(14, 12, 20, 0.85);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.09);
  transition: background .35s ease, border-color .35s ease;
}
body.in-world .world-header { display: block; }
.world-header-inner {
  max-width: 1180px;
  margin: 0 auto;
  padding: 22px 24px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
}
.world-header-logo {
  display: flex;
  align-items: center;
  color: #fff;
  text-decoration: none;
}
.world-header-logo img {
  width: 42px; height: 42px;
  object-fit: contain;
  display: block;
}
.world-header-nav {
  display: flex;
  align-items: center;
  gap: 14px;
}
.world-nav-left { order: 1; }
.world-header-logo { order: 2; }
.world-nav-right { order: 3; }

/* Los ítems del header usan el mismo .dock-item pero SIN magnificación:
   tamaño ajustado al texto (rectángulo angosto, solo texto) */
.world-header-nav .dock-item {
  width: auto;
  height: auto;
  padding: 7px 15px;
  flex-direction: row;
  gap: 0;
  border-radius: 12px;
  background: transparent;
  border: 1px solid transparent;
  box-shadow: none;
  transition: background .25s ease, border-color .25s ease;
}
.world-header-nav .dock-item:hover,
.world-header-nav .dock-item:focus-visible,
.world-header-nav .dock-item.active {
  background: rgba(34, 211, 238, 0.1);
  border-color: rgba(34, 211, 238, 0.35);
}
.world-header-nav .dock-item .dock-icon svg { width: 26px; height: 26px; }
.world-header-nav .dock-item .dock-label {
  position: static;
  transform: none;
  background: none;
  border: none;
  box-shadow: none;
  padding: 0 4px;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  opacity: 1;
  color: rgba(255, 255, 255, 0.82);
  transition: color .25s ease;
}
.world-header-nav .dock-item:hover .dock-label { color: #fff; }
.world-header-nav .dock-item.active .dock-label { color: var(--web-cyan); }
.world-header-nav .dock-item .eq-bars { height: 15px; }

@media (max-width: 860px) {
  .world-header-inner { padding: 16px 12px; gap: 12px; }
  .world-header-logo img { width: 34px; height: 34px; }
  .world-header-nav .dock-item { padding: 6px 12px; }
  .world-header-nav .dock-item .dock-label { font-size: 0.66rem; }
  .world-header-nav { gap: 2px; }
  /* En mÃ³vil el logo del nav de la vista queda detrÃ¡s del header fijo: se oculta */
  .world-nav .world-logo { display: none; }
}
@media (max-width: 560px) {
  .world-header-inner { gap: 8px; padding: 12px 18px; }
  .world-header-logo img { width: 26px; height: 26px; }
  .world-header-nav { gap: 8px; }
  .world-header-nav .dock-item { padding: 4px 5px; border-radius: 10px; }
  .world-header-nav .dock-label { font-size: 0.56rem; padding: 0 1px; }
}

/* ==========================================================================
   MENÚ HAMBURGUESA MÓVIL del header (31-08, pedido de Manuel: "el menu
   principal queda mal en movil hay que hacer la version movil estilo
   hamburguesa") — en pantallas chicas se ocultan las navs laterales y solo
   queda logo + botón ☰ que despliega un panel vertical.
   ========================================================================== */
.world-header-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  background: none;
  border: none;
  padding: 8px;
  cursor: pointer;
  z-index: 82;
}
.world-header-toggle span {
  display: block;
  width: 24px;
  height: 2px;
  border-radius: 2px;
  background: #fff;
  transition: transform .3s var(--ease), opacity .3s ease;
}
.world-header-toggle.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.world-header-toggle.open span:nth-child(2) { opacity: 0; }
.world-header-toggle.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.world-header-menu {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  flex-direction: column;
  padding: 10px 5vw 18px;
  gap: 4px;
  background: rgba(10, 9, 16, 0.97);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.09);
  box-shadow: 0 24px 44px rgba(0, 0, 0, 0.5);
  z-index: 81;
}
.world-header-menu.open { display: flex; animation: headerMenuIn .35s var(--ease) both; }
@keyframes headerMenuIn {
  from { opacity: 0; transform: translateY(-10px); }
  to   { opacity: 1; transform: none; }
}
.world-header-menu .dock-item {
  width: 100%;
  justify-content: center;
  padding: 13px 10px;
  border-radius: 12px;
  font-size: 1.02rem;
}
.world-header-menu .dock-item:hover,
.world-header-menu .dock-item.active {
  background: rgba(34, 211, 238, 0.12);
  border-color: rgba(34, 211, 238, 0.4);
}

/* Redes sociales dentro del menú del celular (19-09, pedido de Manuel) */
.menu-redes {
  margin-top: 12px;
  padding-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, .10);
  text-align: center;
}
.menu-redes-titulo {
  display: block;
  font-family: var(--font-head);
  font-size: .68rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--web-cyan);
  margin-bottom: 12px;
}
.menu-redes-iconos {
  display: flex;
  justify-content: center;
  gap: 16px;
}
/* los iconos son los archivos SVG que dejo Manuel en imagenes/ (19-09) */
.menu-redes-iconos a {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 14px;
  transition: transform .2s var(--ease), box-shadow .2s;
}
.menu-redes-iconos img { width: 54px; height: 54px; display: block; border-radius: 14px; }
.menu-redes-iconos a:active { transform: scale(.94); }
.menu-redes-iconos a:hover { transform: translateY(-3px) scale(1.04); }
.menu-redes-iconos a:nth-child(1):hover { box-shadow: 0 10px 26px rgba(225, 48, 108, .45); }
.menu-redes-iconos a:nth-child(2):hover { box-shadow: 0 10px 26px rgba(37, 244, 238, .35); }
.menu-redes-iconos a:nth-child(3):hover { box-shadow: 0 10px 26px rgba(255, 0, 51, .4); }

@media (max-width: 860px) {
  .world-header-nav { display: none; }
  .world-header-toggle {
    display: flex;
    order: 3; /* el logo (order 2) queda a la IZQUIERDA y el ☰ a la DERECHA */
  }
  .world-header-inner {
    justify-content: space-between;
    padding: 14px 22px; /* margen lateral para que no queden pegados a las orillas */
    gap: 12px;
  }
  .world-header-logo img { width: 34px; height: 34px; }
}

/* ==========================================================================
   ÃTEMS DEL MENÃš (base compartida por el header)
   ========================================================================== */
.dock-item {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  outline: none;
  color: #fff;
  text-decoration: none;
  flex-shrink: 0;
}
.dock-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
}
.dock-icon svg {
  width: 24px;
  height: 24px;
}
.dock-label {
  white-space: nowrap;
  font-weight: 600;
  transition: color .2s ease;
}

/* Ecualizador dentro del Ã­tem de mÃºsica (azul, como la pÃ¡gina) */
.dock-item .eq-bars {
  display: none;
  align-items: flex-end;
  justify-content: center;
  gap: 2px;
  height: 18px;
}
.dock-item.playing .eq-bars { display: flex; }
.dock-item.playing .music-note { display: none; }
.dock-item .eq-bar {
  width: 3px;
  height: 100%;
  border-radius: 2px;
  transform-origin: bottom;
  animation: eqBounce 0.9s ease-in-out infinite;
}
.dock-item .eq-bar:nth-child(1) { background: linear-gradient(180deg, #22d3ee, #7dd3fc); }
.dock-item .eq-bar:nth-child(2) { background: linear-gradient(180deg, #67e8f9, #38bdf8); animation-delay: .12s; }
.dock-item .eq-bar:nth-child(3) { background: linear-gradient(180deg, #22d3ee, #7dd3fc); animation-delay: .24s; }
.dock-item .eq-bar:nth-child(4) { background: linear-gradient(180deg, #67e8f9, #38bdf8); animation-delay: .36s; }

/* ======================================================================
   SEO · Bloques de texto, preguntas frecuentes y enlaces internos
   (agregado 12-09 para posicionar en Google igual que la competencia)
   ====================================================================== */
.seo-bloque { max-width: 980px; margin: 0 auto; }
.seo-bloque p { color: rgba(230, 237, 243, .82); line-height: 1.85; margin-bottom: 15px; font-size: 1rem; }
.seo-bloque b { color: #fff; }
.seo-bloque a { color: #2dd4bf; text-decoration: none; border-bottom: 1px solid rgba(45, 212, 191, .4); }
.seo-bloque a:hover { border-bottom-color: #2dd4bf; }
.seo-lista { list-style: none; margin: 18px 0 18px; display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 10px; }
.seo-lista li { position: relative; padding-left: 22px; color: rgba(230, 237, 243, .8); font-size: .95rem; line-height: 1.65; }
.seo-lista li::before { content: ''; position: absolute; left: 4px; top: 10px; width: 8px; height: 8px; border-radius: 50%; background: #2dd4bf; box-shadow: 0 0 10px rgba(45, 212, 191, .8); }
.seo-lista b { color: #fff; }

.faq-lista { max-width: 980px; margin: 0 auto; }
.faq-item { border-bottom: 1px solid rgba(255, 255, 255, .1); padding: 16px 0; }
.faq-item:last-child { border-bottom: 0; }
.faq-item h3 { font-size: 1.05rem; color: #2dd4bf; margin-bottom: 6px; font-weight: 700; }
.faq-item p { color: rgba(230, 237, 243, .78); line-height: 1.75; font-size: .95rem; margin: 0; }
.faq-item b { color: #fff; }

.seo-enlaces { max-width: 980px; margin: 0 auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; }
.seo-enlaces a { display: block; background: rgba(255, 255, 255, .04); border: 1px solid rgba(255, 255, 255, .12); border-radius: 14px; padding: 18px 20px; text-decoration: none; color: #e6edf3; transition: transform .18s ease, border-color .18s ease, background .18s ease; }
.seo-enlaces a:hover { transform: translateY(-3px); border-color: #2dd4bf; background: rgba(45, 212, 191, .08); }
.seo-enlaces a b { display: block; color: #2dd4bf; margin-bottom: 5px; font-size: 1.02rem; }
.seo-enlaces a span { color: rgba(230, 237, 243, .72); font-size: .9rem; line-height: 1.6; }
@media (max-width: 620px) {
  .seo-lista { grid-template-columns: 1fr; }
  .seo-bloque p, .faq-item p { font-size: .95rem; }
}

/* ======================================================================
   PLANES DE CHATBOT CON IA (agregado 14-09, pedido de Manuel)
   Aviso con el botón de chatbot dentro de la sección Planes + el bloque
   de los 3 planes nuevos ($30.000 / $60.000 / $90.000 al mes).
   ====================================================================== */
.bot-aviso {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 16px 22px;
  max-width: 1100px;
  margin: 0 auto 40px;
  padding: 20px 28px;
  border-radius: var(--radius);
  background: linear-gradient(135deg, rgba(34, 211, 238, .13), rgba(59, 130, 246, .09));
  border: 1px solid rgba(34, 211, 238, .34);
  box-shadow: 0 12px 34px rgba(34, 211, 238, .12);
}
.bot-aviso-icono {
  font-size: 2rem;
  line-height: 1;
  filter: drop-shadow(0 0 12px rgba(34, 211, 238, .65));
}
.bot-aviso-txt {
  flex: 1 1 340px;
  margin: 0;
  color: var(--web-text);
  font-size: .98rem;
  line-height: 1.65;
}
.bot-aviso-txt b { color: var(--web-cyan); }

/* Bloque de los planes de chatbot, debajo de los planes web */
.planes-bots {
  margin-top: 70px;
  padding-top: 60px;
  border-top: 1px dashed rgba(148, 163, 184, .3);
}
.planes-titulo-bot {
  font-family: var(--font-head);
  font-size: clamp(1.5rem, 3.2vw, 2.1rem);
  text-align: center;
  color: #fff;
  margin: 0 0 14px;
}
.planes-titulo-bot .accent { color: var(--web-cyan); }
.planes-sub {
  max-width: 780px;
  margin: 0 auto 38px;
  text-align: center;
  color: var(--web-muted);
  font-size: 1rem;
  line-height: 1.75;
}
.planes-sub b { color: var(--web-text); }
.planes-nota {
  max-width: 900px;
  margin: 38px auto 0;
  text-align: center;
  color: var(--web-muted);
  font-size: .86rem;
  line-height: 1.7;
}
.planes-nota b { color: var(--web-cyan); }
/* Precio mensual: número grande y "al mes" debajo, en chico */
.precio-mes span {
  display: block;
  margin-top: 2px;
  font-size: .95rem;
  font-weight: 400;
  color: var(--web-muted);
}
.bot-card { padding-bottom: 30px; }

@media (max-width: 640px) {
  .bot-aviso { text-align: center; padding: 18px 16px; gap: 14px; }
  .bot-aviso-icono { font-size: 1.7rem; }
  .planes-bots { margin-top: 54px; padding-top: 44px; }
}

/* ======================================================================
   AVISO DE PUBLICIDAD (agregado 15-09, pedido de Manuel)
   Aparece centrado 5 segundos despues de entrar a la pagina, con la X
   arriba a la derecha para cerrarlo y un brillo tipo reflejo que pasa
   por toda la imagen.
   ====================================================================== */
.pub-fondo {
  position: fixed;
  inset: 0;
  z-index: 2147481000;          /* debajo de la ventanita del chat, encima de todo lo demas */
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
  background: rgba(4, 7, 15, .74);
  -webkit-backdrop-filter: blur(5px);
  backdrop-filter: blur(5px);
  opacity: 0;
  transition: opacity .45s ease;
}
.pub-fondo.pub-visible { display: flex; }
.pub-fondo.pub-entrando { opacity: 1; }

.pub-caja {
  position: relative;
  width: min(92vw, 560px);
  max-height: 86vh;
  border-radius: 18px;
  overflow: hidden;
  background: #0a0c14;
  box-shadow: 0 30px 80px rgba(0, 0, 0, .7), 0 0 0 1px rgba(34, 211, 238, .35);
  transform: scale(.9) translateY(14px);
  transition: transform .55s cubic-bezier(.2, .9, .25, 1.08);
}
.pub-fondo.pub-entrando .pub-caja { transform: scale(1) translateY(0); }

.pub-img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 86vh;
  object-fit: contain;
}

/* La X para cerrar, en la esquina superior derecha */
.pub-cerrar {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 4;
  width: 44px;
  height: 44px;
  padding: 0;
  font-size: 0;                /* el texto de la X no se usa: la cruz se dibuja con CSS */
  background: rgba(255, 255, 255, .94);
  border: 1px solid rgba(0, 0, 0, .18);
  border-radius: 50%;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0, 0, 0, .35);
  transition: background .2s, transform .2s, box-shadow .2s;
}
/* La cruz NEGRA, dibujada con dos barritas: queda siempre justo en el centro del circulo */
.pub-cerrar::before,
.pub-cerrar::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 18px;
  height: 2.6px;
  border-radius: 2px;
  background: #0b0f16;
  transform: translate(-50%, -50%) rotate(45deg);
}
.pub-cerrar::after { transform: translate(-50%, -50%) rotate(-45deg); }
.pub-cerrar:hover,
.pub-cerrar:focus-visible {
  background: #fff;
  transform: scale(1.08);
  box-shadow: 0 6px 20px rgba(0, 0, 0, .45);
  outline: none;
}
.pub-cerrar:hover::before,
.pub-cerrar:hover::after,
.pub-cerrar:focus-visible::before,
.pub-cerrar:focus-visible::after { background: #000; }

/* El brillo que pasa por toda la imagen, tipo reflejo (delgado) */
.pub-brillo {
  position: absolute;
  inset: 0;
  z-index: 3;
  overflow: hidden;
  pointer-events: none;
  border-radius: inherit;
}
.pub-brillo::before {
  content: '';
  position: absolute;
  top: -60%;
  left: -80%;
  width: 25%;
  height: 220%;
  background: linear-gradient(100deg,
      rgba(255, 255, 255, 0) 0%,
      rgba(255, 255, 255, .10) 34%,
      rgba(255, 255, 255, .58) 50%,
      rgba(255, 255, 255, .10) 66%,
      rgba(255, 255, 255, 0) 100%);
  transform: rotate(16deg);
  animation: pubBrillo 3.8s ease-in-out .35s infinite;
}
@keyframes pubBrillo {
  0%   { left: -80%; }
  60%  { left: 130%; }
  100% { left: 130%; }
}
/* respeta a quien prefiere menos movimiento en pantalla */
@media (prefers-reduced-motion: reduce) {
  .pub-brillo::before { animation: none; }
  .pub-caja { transition: none; }
}

@media (max-width: 640px) {
  .pub-fondo { padding: 14px; }
  .pub-caja { width: min(94vw, 460px); max-height: 80vh; border-radius: 16px; }
  .pub-img { max-height: 80vh; }
  .pub-cerrar { top: 8px; right: 8px; width: 40px; height: 40px; }
  .pub-cerrar::before, .pub-cerrar::after { width: 16px; height: 2.4px; }
}

/* ======================================================================
   AVISO DE DATOS EN EL FORMULARIO
   (19-09, para cumplir la Ley 21.719 de protección de datos personales:
   la persona tiene que saber para qué se usan sus datos y aceptarlo)
   ====================================================================== */
.form-consent {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-top: 4px;
  padding: 14px 16px;
  border-radius: 14px;
  background: rgba(34, 211, 238, .07);
  border: 1px solid rgba(34, 211, 238, .25);
  font-size: .88rem;
  line-height: 1.55;
  color: var(--web-muted);
  cursor: pointer;
}
.form-consent input[type="checkbox"] {
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  margin-top: 2px;
  accent-color: var(--web-cyan);
  cursor: pointer;
}
.form-consent b { color: var(--web-text); }
.form-consent a { color: var(--web-cyan); text-decoration: underline; }
.form-consent.form-consent-falta {
  border-color: #fca5a5;
  background: rgba(248, 113, 113, .12);
  animation: consentAviso 1s ease 2;
}
@keyframes consentAviso {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-5px); }
  75% { transform: translateX(5px); }
}
.form-hint a { color: var(--web-cyan); text-decoration: underline; }

/* ======================================================================
   REDES SOCIALES + OFERTA POR SEGUIRME
   (19-09, pedido de Manuel: "agrega mis redes sociales a mi pagina... si me
   sigues en todas mis redes sociales 15% de descuento en todas nuestras
   paginas web")
   ====================================================================== */
.redes-promo {
  max-width: 1100px;
  margin: 46px auto 0;
  padding: 34px 30px 30px;
  border-radius: var(--radius);
  text-align: center;
  background:
    radial-gradient(600px 220px at 50% 0%, rgba(34, 211, 238, .16), transparent 70%),
    linear-gradient(150deg, rgba(10, 14, 24, .92), rgba(6, 9, 16, .96));
  border: 1px solid rgba(34, 211, 238, .32);
  box-shadow: 0 20px 50px rgba(0, 0, 0, .45);
}
.redes-kicker {
  font-family: var(--font-head);
  font-size: .72rem;
  letter-spacing: .22em;
  color: var(--web-cyan);
  margin-bottom: 14px;
}
.redes-titulo {
  font-family: var(--font-head);
  font-size: clamp(1.15rem, 2.6vw, 1.7rem);
  line-height: 1.3;
  color: #fff;
  max-width: 780px;
  margin: 0 auto 12px;
}
.redes-titulo span { color: var(--web-cyan); }
.redes-sub {
  color: var(--web-muted);
  font-size: .98rem;
  line-height: 1.6;
  max-width: 640px;
  margin: 0 auto 26px;
}
.redes-botones {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  justify-content: center;
  margin-bottom: 22px;
}
.redes-botones a {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 220px;
  padding: 12px 20px;
  border-radius: 16px;
  text-decoration: none;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .14);
  transition: transform .25s var(--ease), border-color .25s, background .25s, box-shadow .25s;
}
.redes-botones a:hover { transform: translateY(-4px); }
/* los iconos ahora son los archivos SVG que dejo Manuel en imagenes/ (19-09) */
.redes-botones img { width: 46px; height: 46px; flex: 0 0 auto; display: block; border-radius: 12px; }
.redes-botones span { display: flex; flex-direction: column; text-align: left; line-height: 1.25; }
.redes-botones b { font-family: var(--font-head); font-size: .95rem; color: #fff; }
.redes-botones i { font-style: normal; font-size: .8rem; color: var(--web-muted); }
/* cada red con su color de marca */
.red-instagram { color: #e1306c; }
.red-instagram:hover { border-color: #e1306c; background: rgba(225, 48, 108, .12); box-shadow: 0 14px 34px rgba(225, 48, 108, .25); }
.red-tiktok { color: #25f4ee; }
.red-tiktok:hover { border-color: #25f4ee; background: rgba(37, 244, 238, .12); box-shadow: 0 14px 34px rgba(37, 244, 238, .22); }
.red-youtube { color: #ff0033; }
.red-youtube:hover { border-color: #ff0033; background: rgba(255, 0, 51, .12); box-shadow: 0 14px 34px rgba(255, 0, 51, .25); }
.redes-nota {
  color: var(--web-muted);
  font-size: .88rem;
  line-height: 1.6;
  margin: 0;
}
.redes-nota a { color: var(--web-cyan); text-decoration: underline; }

@media (max-width: 640px) {
  .redes-promo { padding: 26px 18px 24px; }
  .redes-botones a { min-width: 100%; }
}

/* ======================================================================
   RESEÑAS REALES DE GOOGLE (20-09, pedido de Manuel: reemplazar los
   comentarios inventados por los de su perfil de Google, 5,0 · 3 reseñas)
   ====================================================================== */
.testi-sub {
  text-align: center;
  color: var(--web-muted);
  font-size: .95rem;
  line-height: 1.6;
  max-width: 720px;
  margin: -8px auto 32px;
}
.testi-sub a { color: var(--web-cyan); text-decoration: underline; }
.testi-sub .testi-nota-google { color: #ffd76a; font-weight: 700; white-space: nowrap; }

/* ======================================================================
   TARJETAS DE REDES + SORTEO (20-09, pedido de Manuel)
   Son DOS: la de la pantalla de inicio (dentro de .half-content, con la clase
   extra .redes-destacada) y la de la sección Planes. Las dos usan EL MISMO
   formato, los MISMOS colores y los MISMOS efectos: por eso comparten la clase
   .redes-promo y el mismo latido de luz (redesPulso, con los mismos tiempos y
   la misma intensidad que el planGoldPulse de las tarjetas de planes).
   ====================================================================== */
.redes-destacada { margin: 0 auto 26px; }
.redes-promo { animation: redesPulso 2.2s ease-in-out infinite; }
@keyframes redesPulso {
  0%, 100% {
    box-shadow: 0 20px 50px rgba(0, 0, 0, .45), 0 0 22px rgba(34, 211, 238, .16), 0 0 50px rgba(34, 211, 238, .10);
  }
  50% {
    box-shadow: 0 20px 50px rgba(0, 0, 0, .45), 0 0 42px rgba(34, 211, 238, .42), 0 0 84px rgba(34, 211, 238, .22);
  }
}
/* el titulo de la tarjeta de la portada va SIEMPRE en dos lineas */
.redes-titulo .linea { display: block; white-space: nowrap; }

@media (prefers-reduced-motion: reduce) {
  .redes-promo { animation: none; }
}
@media (max-width: 640px) {
  .redes-destacada { padding: 22px 20px 20px; }
  .redes-titulo { font-size: 1.05rem; }
}
@media (max-width: 380px) {
  .redes-destacada { padding: 20px 16px 18px; }
  .redes-titulo { font-size: 0.9rem; }
}

/* ======================================================================
   TARJETA DE VITRINA NUBLE (21-10, pedido de Manuel: sacar la tarjeta de
   redes sociales del primer bloque y poner en su lugar un boton que lleve a
   Vitrina Nuble, con el logo, que diga que ayudamos a los locales de Nuble).
   Usa el mismo formato de .redes-promo, pero en dorado, como la vitrina.
   ====================================================================== */
.vitrina-promo {
  border-color: rgba(255, 176, 61, .42);
  background:
    radial-gradient(600px 220px at 50% 0%, rgba(255, 176, 61, .18), transparent 70%),
    linear-gradient(150deg, rgba(26, 18, 5, .94), rgba(9, 7, 3, .97));
  box-shadow: 0 20px 50px rgba(0, 0, 0, .45), inset 0 1px 0 rgba(255, 214, 138, .12);
}
.vitrina-promo .redes-kicker { color: #ffc061; }
.vitrina-promo .redes-titulo span { color: #ffb63d; }
.vitrina-promo .redes-sub { color: #e8dcc4; margin-bottom: 24px; }
.btn-vitrina {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 12px 24px 12px 20px;
  border-radius: 999px;
  text-decoration: none;
  font-family: var(--font-head);
  font-size: clamp(.95rem, 1.9vw, 1.08rem);
  letter-spacing: .01em;
  color: #241704;
  background: linear-gradient(135deg, #ffc061, #f08a00);
  box-shadow: 0 12px 30px rgba(240, 138, 0, .38), inset 0 1px 0 rgba(255, 255, 255, .45);
  transition: transform .25s var(--ease), box-shadow .25s var(--ease);
}
.btn-vitrina:hover,
.btn-vitrina:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 16px 38px rgba(240, 138, 0, .5), inset 0 1px 0 rgba(255, 255, 255, .5);
}
.btn-vitrina .arrow { transition: transform .3s var(--ease); }
.btn-vitrina:hover .arrow { transform: translateX(4px); }
/* el logo va con SUS DOS COLORES (naranja y blanco). Como el boton es dorado,
   se le pone una placa negra detras: asi se ven el naranja y el blanco tal cual. */
.btn-vitrina-logo {
  height: 22px;
  width: auto;
  display: block;
  background: #141414;
  border-radius: 9px;
  padding: 4px 9px;
  box-sizing: content-box;
}
@media (max-width: 430px) {
  /* en el celular el logo va arriba y el texto abajo, asi no se aprieta en una linea */
  .btn-vitrina { flex-direction: column; gap: 7px; padding: 11px 20px 13px; }
  .btn-vitrina-logo { height: 17px; padding: 3px 8px; }
}
