/* =========================================================
   STACKUP SYSTEMS — stylesheet
   Tokens, layout, components y animaciones
   ========================================================= */

/* ---------- Tokens de color ---------- */
:root{
  --turquoise:       #40E0D0;
  --turquoise-deep:   #14B8A6;
  --turquoise-soft:   #8FF2E6;
  --coral:            #FF6B5E;

  /* Modo claro (default) */
  --bg:               #F3FDFC;
  --surface:          #FFFFFF;
  --surface-alt:      #EAFBF8;
  --border:           rgba(11,17,32,0.10);
  --text:             #0B1120;
  --text-secondary:   #4B5B6B;
  --text-on-accent:   #06231F;
  --shadow:           0 20px 45px -20px rgba(11,17,32,0.25);
  --overlay-hero:     linear-gradient(180deg, rgba(6,20,20,0.55) 0%, rgba(6,20,20,0.78) 60%, rgba(6,20,20,0.94) 100%);

  --font-display: 'Sora', system-ui, sans-serif;
  --font-body: 'Inter', system-ui, sans-serif;
  --font-mono: 'JetBrains Mono', monospace;

  --radius-sm: 10px;
  --radius-md: 18px;
  --radius-lg: 28px;

  color-scheme: light;
}

[data-theme="dark"]{
  --bg:               #070D18;
  --surface:           #0F1830;
  --surface-alt:       #101B33;
  --border:            rgba(143,242,230,0.14);
  --text:              #EAF7F5;
  --text-secondary:    #97AAC2;
  --text-on-accent:    #06231F;
  --shadow:            0 25px 60px -20px rgba(0,0,0,0.65);
  --overlay-hero:      linear-gradient(180deg, rgba(4,10,18,0.55) 0%, rgba(4,10,18,0.82) 60%, rgba(4,10,18,0.97) 100%);
  color-scheme: dark;
}

/* ---------- Reset ---------- */
*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; }
body{
  font-family: var(--font-body);
  background: var(--bg);
  color: var(--text);
  line-height:1.6;
  overflow-x:hidden;
  transition: background .5s ease, color .5s ease;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; }
button{ font-family:inherit; cursor:pointer; border:none; background:none; color:inherit; }
input, textarea, select{ font-family:inherit; }
h1,h2,h3,h4{ font-family: var(--font-display); line-height:1.15; letter-spacing:-0.01em; }

::selection{ background: var(--turquoise); color:#06231F; }

/* Respeta reduce-motion */
@media (prefers-reduced-motion: reduce){
  *{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}

/* ---------- Utilidades de layout ---------- */
.container{
  width:100%;
  max-width:1220px;
  margin-inline:auto;
  padding-inline: clamp(1.25rem, 4vw, 2.5rem);
}
.section{ padding: clamp(4rem, 9vw, 7.5rem) 0; position:relative; }
.section-alt{ background: var(--surface-alt); }
.grid{ display:grid; gap:1.75rem; }
.grid-2{ grid-template-columns: repeat(2,1fr); }
.grid-3{ grid-template-columns: repeat(3,1fr); }
.grid-4{ grid-template-columns: repeat(4,1fr); }

.eyebrow{
  display:inline-flex; align-items:center; gap:.5rem;
  font-family: var(--font-mono);
  font-size:.78rem; letter-spacing:.14em; text-transform:uppercase;
  color: var(--turquoise-deep);
  background: color-mix(in srgb, var(--turquoise) 14%, transparent);
  border:1px solid color-mix(in srgb, var(--turquoise) 35%, transparent);
  padding:.4rem .9rem; border-radius:999px;
  margin-bottom:1.1rem;
}
[data-theme="dark"] .eyebrow{ color: var(--turquoise-soft); }

.section-head{ max-width:640px; margin-bottom:3rem; }
.section-head h2{ font-size: clamp(1.9rem, 3.4vw, 2.7rem); margin-bottom:.9rem; }
.section-head p{ color:var(--text-secondary); font-size:1.05rem; }
.section-head.center{ margin-inline:auto; text-align:center; }

.text-gradient{
  background: linear-gradient(100deg, var(--turquoise) 0%, var(--turquoise-deep) 45%, var(--coral) 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
  background-size:200% auto;
  animation: gradientShift 6s ease-in-out infinite;
}
@keyframes gradientShift{
  0%,100%{ background-position:0% 50%; }
  50%{ background-position:100% 50%; }
}

/* ---------- Botones ---------- */
.btn{
  position:relative;
  display:inline-flex; align-items:center; justify-content:center; gap:.6rem;
  padding:.95rem 1.9rem;
  border-radius:999px;
  font-weight:600; font-size:.98rem;
  overflow:hidden;
  transition: transform .35s cubic-bezier(.2,.8,.2,1), box-shadow .35s ease, background .35s ease, color .35s ease;
  white-space:nowrap;
}
.btn-primary{
  background: linear-gradient(120deg, var(--turquoise), var(--turquoise-deep));
  color:#06231F;
  box-shadow: 0 12px 30px -10px rgba(64,224,208,0.55);
}
.btn-primary:hover{ transform: translateY(-4px) scale(1.02); box-shadow: 0 20px 40px -12px rgba(64,224,208,0.65); }
.btn-primary:active{ transform: translateY(-1px) scale(.98); }
.btn-outline{
  border:1.5px solid var(--border);
  color:var(--text);
  background: transparent;
}
.btn-outline:hover{ border-color:var(--turquoise); color:var(--turquoise-deep); transform: translateY(-4px); }
[data-theme="dark"] .btn-outline:hover{ color:var(--turquoise-soft); }

.btn::after{
  content:"";
  position:absolute; inset:0;
  background: radial-gradient(circle at var(--x,50%) var(--y,50%), rgba(255,255,255,.45), transparent 60%);
  opacity:0; transition: opacity .4s ease;
}
.btn:hover::after{ opacity:1; }

/* ---------- NAVBAR ---------- */
.navbar{
  position:fixed; inset-inline:0; top:0; z-index:200;
  padding: .9rem 0;
  transition: background .4s ease, box-shadow .4s ease, padding .4s ease, backdrop-filter .4s ease;
}
.navbar.scrolled{
  padding:.55rem 0;
  background: color-mix(in srgb, var(--bg) 78%, transparent);
  backdrop-filter: blur(16px) saturate(160%);
  box-shadow: 0 10px 30px -20px rgba(0,0,0,.35);
  border-bottom:1px solid var(--border);
}
.nav-inner{ display:flex; align-items:center; justify-content:space-between; gap:1.5rem; }
.logo{
  display:flex; align-items:center; gap:.95rem;
  font-family:var(--font-display); font-weight:800; font-size:1.3rem;
}
.logo .mark{
  width:42px; height:42px; position:relative; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
}
.logo-icon-img{
  width:100%; height:100%; object-fit:contain;
  filter: drop-shadow(0 4px 10px rgba(64,224,208,.35));
  transition: transform .4s cubic-bezier(.2,.8,.2,1);
  animation: logoFloat 4.2s ease-in-out infinite;
}
@keyframes logoFloat{
  0%,100%{ transform: translateY(0); }
  50%{ transform: translateY(-3px); }
}
.logo:hover .logo-icon-img{ animation-play-state: paused; transform: scale(1.08) rotate(-5deg); }
.logo b{ color: var(--turquoise-deep); }
[data-theme="dark"] .logo b{ color: var(--turquoise); }

/* --- Logo tipográfico LED DIGITAL: STACK UP / SYSTEMS --- */
.logo-text{
  display:flex; flex-direction:column; align-items:flex-start;
  line-height:1.05;
}
.logo-main, .logo-sub{
  font-family:var(--font-mono);
  font-style:normal;
  /* misma caja para que ambas líneas queden alineadas a la izquierda */
  letter-spacing:.14em; text-indent:0; margin:0;
  text-transform:uppercase;
}
.logo-main{
  font-weight:400; font-size:1em;
  display:inline-flex; gap:.5em;
  color:var(--text);
}
.logo-main b{ font-weight:400; color:var(--turquoise); }
.logo-sub{
  font-weight:400; font-size:.62em;
  color:var(--turquoise-soft);
  /* separación optica igual a la línea superior */
  letter-spacing:.42em;
}
/* Glow LED en modo oscuro */
[data-theme="dark"] .logo-main{ text-shadow:0 0 8px color-mix(in srgb, var(--turquoise) 35%, transparent); }
[data-theme="dark"] .logo-main b,
[data-theme="dark"] .logo-sub{ text-shadow:0 0 10px color-mix(in srgb, var(--turquoise) 55%, transparent); }
[data-theme="dark"] .logo-sub{ color:var(--turquoise-soft); }

.footer-logo{ display:inline-flex; }
.footer-logo .mark{ width:46px; height:46px; }
.footer-logo{ font-size:1.4rem; gap:1rem; }
.footer-logo .logo-sub{ font-size:1em; }

.nav-links{ display:flex; align-items:center; gap:2.1rem; }
.nav-links a{
  position:relative; font-weight:500; font-size:.95rem; color:var(--text-secondary);
  padding:.3rem 0; transition: color .3s ease;
}
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:-3px; width:0; height:2px;
  background: linear-gradient(90deg, var(--turquoise), var(--turquoise-deep));
  transition: width .35s ease;
}
.nav-links a:hover, .nav-links a.active{ color:var(--text); }
.nav-links a:hover::after, .nav-links a.active::after{ width:100%; }

.nav-actions{ display:flex; align-items:center; gap:.85rem; }

.theme-toggle{
  width:46px; height:46px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  border:1px solid var(--border);
  background: var(--surface);
  transition: transform .5s cubic-bezier(.2,.8,.2,1), background .4s ease, border-color .4s ease;
}
.theme-toggle:hover{ transform: rotate(25deg) scale(1.08); border-color:var(--turquoise); }
.theme-toggle svg{ width:20px; height:20px; transition: opacity .3s ease, transform .5s ease; }
.theme-toggle .icon-sun{ display:none; }
[data-theme="dark"] .theme-toggle .icon-moon{ display:none; }
[data-theme="dark"] .theme-toggle .icon-sun{ display:block; }

.lang-toggle{
  display:flex; align-items:center; gap:.4rem;
  height:46px; padding:0 .95rem; border-radius:999px;
  border:1px solid var(--border);
  background: var(--surface);
  font-size:.82rem; font-weight:700; letter-spacing:.03em;
  color:var(--text-secondary);
  transition: transform .3s cubic-bezier(.2,.8,.2,1), background .4s ease, border-color .4s ease, color .3s ease;
}
.lang-toggle:hover{ transform: translateY(-2px); border-color:var(--turquoise); color:var(--text); }
.lang-toggle svg{ width:18px; height:18px; flex-shrink:0; }
.lang-toggle .lang-code{ line-height:1; }

.burger{
  display:none; flex-direction:column; gap:5px; width:26px;
}
.burger span{ height:2px; background:var(--text); border-radius:2px; transition: all .35s ease; }
.burger.open span:nth-child(1){ transform: translateY(7px) rotate(45deg); }
.burger.open span:nth-child(2){ opacity:0; }
.burger.open span:nth-child(3){ transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 880px){
  .nav-links{
    position:fixed; inset:0 0 0 auto; top:0; height:100vh; width:min(78vw,340px);
    background: var(--surface); flex-direction:column; justify-content:center; align-items:flex-start;
    padding: 2rem 2.4rem; gap:1.9rem;
    transform: translateX(100%); transition: transform .5s cubic-bezier(.2,.8,.2,1);
    box-shadow: -20px 0 50px -20px rgba(0,0,0,.35);
  }
  .nav-links.open{ transform: translateX(0); }
  .nav-links a{ font-size:1.15rem; }
  .burger{ display:flex; }
  /* En móvil el botón "Cotizar proyecto" vive dentro del panel del menú, no en la barra superior */
  .nav-actions > .btn-primary{ display:none; }
  .nav-cta-mobile{ display:inline-flex !important; margin-top:.6rem; }
}
@media (min-width: 881px){
  .nav-cta-mobile{ display:none; }
}
@media (max-width: 560px){
  .nav-inner{ gap:.5rem; }
  .nav-actions{ gap:.4rem; }
  .theme-toggle, .starvix-toggle{ width:40px; height:40px; }
  .theme-toggle svg{ width:18px; height:18px; }
  .starvix-toggle svg{ width:17px; height:17px; }
  .lang-toggle{ height:40px; padding:0 .6rem; font-size:.76rem; gap:.3rem; }
  .lang-toggle svg{ width:16px; height:16px; }
  .logo{ font-size:1.05rem; gap:.5rem; }
  .logo .mark{ width:28px; height:28px; }
}
@media (max-width: 380px){
  .lang-toggle .lang-code{ display:none; }
  .lang-toggle{ padding:0 .5rem; }
}

/* ---------- HERO ---------- */
.hero{
  position:relative; min-height:100svh; display:flex; align-items:center;
  overflow:hidden; padding-top:6rem;
  isolation:isolate;
}
.hero-bg{
  position:absolute; inset:0; z-index:-2;
  background-image: var(--hero-img);
  background-size:cover; background-position:center;
  animation: heroZoom 18s ease-in-out infinite alternate;
}
@media (max-width:640px){
  /* En móvil mostramos la imagen COMPLETA (la computadora del fondo se ve entera),
     igual que en laptop pero adaptada al alto del teléfono. */
  .hero-bg{
    background-size: contain;            /* imagen completa, sin recortar */
    background-position: center top;     /* la escena arranca desde arriba */
    background-repeat: no-repeat;
    background-color: #06231F;           /* relleno para las bandas que queden */
    animation: none;                     /* sin zoom para no volver a recortarla */
    transform: none;
  }
  [data-theme="dark"] .hero-bg{ background-color: #04121F; }
  /* El degradado de tinte no debe tapar la parte visible de la imagen en móvil */
  .hero-bg.tint::before{ opacity:.5; }
}
@keyframes heroZoom{ from{ transform:scale(1);} to{ transform:scale(1.12);} }
.hero-bg::after{ content:""; position:absolute; inset:0; background: var(--overlay-hero); }
.hero-bg.tint::before{
  content:""; position:absolute; inset:0; z-index:1;
  background: linear-gradient(140deg, rgba(64,224,208,.35), transparent 55%);
  mix-blend-mode: screen;
}

/* ---------- Partículas tech del hero (nodos de datos, no burbujas) ---------- */
.hero-tech{ position:absolute; inset:0; z-index:0; overflow:hidden; pointer-events:none; }
/* Nodos luminosos que ascienden dejando estela vertical */
.hero-tech .hnode{
  position:absolute; bottom:-30px; width:4px; height:4px; border-radius:50%;
  background: var(--turquoise);
  box-shadow: 0 0 8px 2px rgba(64,224,208,.9);
  opacity:0; animation: nodeRise linear infinite;
}
.hero-tech .hnode::before{
  content:""; position:absolute; left:50%; bottom:4px; transform:translateX(-50%);
  width:1px; height:70px;
  background: linear-gradient(to top, rgba(64,224,208,.7), transparent);
}
.hero-tech .hnode:nth-child(1){ left:9%;  animation-duration:9s;  animation-delay:0s;   }
.hero-tech .hnode:nth-child(2){ left:19%; animation-duration:12s; animation-delay:1.5s; }
.hero-tech .hnode:nth-child(3){ left:32%; animation-duration:8s;  animation-delay:.7s;  }
.hero-tech .hnode:nth-child(4){ left:45%; animation-duration:13s; animation-delay:3s;   }
.hero-tech .hnode:nth-child(5){ left:58%; animation-duration:10s; animation-delay:2.2s; }
.hero-tech .hnode:nth-child(6){ left:71%; animation-duration:11s; animation-delay:.4s;  }
.hero-tech .hnode:nth-child(7){ left:83%; animation-duration:9.5s;animation-delay:4s;   }
.hero-tech .hnode:nth-child(8){ left:93%; animation-duration:12.5s;animation-delay:1s;  }
@keyframes nodeRise{
  0%{ transform: translateY(0); opacity:0; }
  10%{ opacity:1; }
  85%{ opacity:.7; }
  100%{ transform: translateY(-108vh); opacity:0; }
}
/* Cadenas binarias que caen tipo "código lluvia" */
.hero-tech .hbit{
  position:absolute; top:-40px;
  font-family:var(--font-mono, ui-monospace, monospace);
  font-size:.72rem; font-weight:400; letter-spacing:.12em;
  color: rgba(143,242,230,.55); text-shadow:0 0 8px rgba(64,224,208,.4);
  opacity:0; animation: bitFall linear infinite;
}
.hero-tech .hbit:nth-child(9){  left:14%; animation-duration:7s;  animation-delay:0s;   }
.hero-tech .hbit:nth-child(10){ left:38%; animation-duration:9s;  animation-delay:2.5s; }
.hero-tech .hbit:nth-child(11){ left:55%; animation-duration:11s; animation-delay:1s;   }
.hero-tech .hbit:nth-child(12){ left:74%; animation-duration:8s;  animation-delay:3.5s; }
.hero-tech .hbit:nth-child(13){ left:88%; animation-duration:10s; animation-delay:.6s;  }
@keyframes bitFall{
  0%{ transform: translateY(0); opacity:0; }
  12%{ opacity:.8; }
  88%{ opacity:.5; }
  100%{ transform: translateY(112vh); opacity:0; }
}
@media (max-width:780px){ .hero-tech .hbit{ display:none; } .hero-tech .hnode:nth-child(n+5){ display:none; } }

.hero-content{ color:#F2FEFC; max-width:820px; position:relative; z-index:1; }
.hero .eyebrow{ background: rgba(64,224,208,.16); border-color: rgba(64,224,208,.45); color:#B7FBF1; }

.hero h1{
  font-size: clamp(2.6rem, 6.4vw, 4.6rem);
  font-weight:800;
  margin-bottom:1.4rem;
}
.hero h1 .word{ display:inline-block; overflow:hidden; vertical-align:top; }
.hero h1 .word span{
  display:inline-block; transform: translateY(115%); animation: riseUp .9s cubic-bezier(.2,.8,.2,1) forwards;
}
@keyframes riseUp{ to{ transform: translateY(0); } }

.hero p.lead{
  font-size: clamp(1.05rem, 1.6vw, 1.25rem);
  color: rgba(242,254,252,0.86);
  max-width:600px; margin-bottom:2.2rem;
  animation: fadeInUp 1s ease .5s both;
}
.hero .type-line{
  font-family: var(--font-mono); font-size:.95rem; color: var(--turquoise-soft);
  margin-bottom:1.2rem; min-height:1.4em;
  animation: fadeInUp .9s ease .2s both;
}
.type-cursor{ display:inline-block; width:2px; background:var(--turquoise-soft); margin-left:2px; animation: blink 1s steps(1) infinite; }
@keyframes blink{ 50%{ opacity:0; } }

.hero-cta{ display:flex; flex-wrap:wrap; gap:1rem; animation: fadeInUp 1s ease .7s both; }

@keyframes fadeInUp{ from{ opacity:0; transform: translateY(24px); } to{ opacity:1; transform:translateY(0); } }

.hero-stats{
  position:relative; z-index:1; margin-top:4rem;
  display:flex; flex-wrap:wrap; gap:2.4rem;
  animation: fadeInUp 1s ease .9s both;
}
.hero-stats div{ color:#EAFBF8; }
.hero-stats strong{ display:block; font-family:var(--font-display); font-size:2rem; color: var(--turquoise); }
.hero-stats span{ font-size:.85rem; color:rgba(234,251,248,.7); }

.scroll-cue{
  position:absolute; bottom:2rem; left:50%; transform:translateX(-50%); z-index:1;
  display:flex; flex-direction:column; align-items:center; gap:.5rem;
  color:#EAFBF8; font-size:.75rem; letter-spacing:.1em; text-transform:uppercase;
  animation: fadeInUp 1s ease 1.2s both;
}
.scroll-cue .line{ width:1px; height:34px; background: linear-gradient(180deg, var(--turquoise), transparent); position:relative; overflow:hidden; }
.scroll-cue .line::after{
  content:""; position:absolute; left:0; top:-100%; width:100%; height:100%;
  background: var(--turquoise-soft); animation: scrollDrop 1.8s ease-in-out infinite;
}
@keyframes scrollDrop{ 0%{ top:-100%; } 60%{ top:100%; } 100%{ top:100%; } }

/* ---------- HUD del hero (estilo S.T.A.R.V.I.X. / Iron Man) ---------- */
.hero-hud{
  position:absolute; z-index:0; pointer-events:none;
  right:clamp(-220px, -8vw, -60px); top:50%; transform:translateY(-50%);
  width:min(640px, 68vw); aspect-ratio:1/1; opacity:.6;
}
/* Anillo exterior punteado */
.hero-hud .ring-1{
  position:absolute; inset:0; border-radius:50%;
  border:1px dotted color-mix(in srgb, var(--turquoise) 30%, transparent);
  animation: hudSpin 60s linear infinite;
}
/* Anillo de marcas tipo escala/tacómetro (como imagen 2) */
.hero-hud .ring-2{
  position:absolute; inset:9%; border-radius:50%;
  background: repeating-conic-gradient(from 0deg,
      color-mix(in srgb, var(--turquoise) 55%, transparent) 0deg 0.5deg,
      transparent 0.5deg 5deg);
  -webkit-mask: radial-gradient(circle, transparent 0 43%, #000 43.5% 50%, transparent 50.5%);
          mask: radial-gradient(circle, transparent 0 43%, #000 43.5% 50%, transparent 50.5%);
  animation: hudSpin 40s linear infinite;
  border:none;
}
/* Arco brillante que gira (el trazo grueso de la imagen 2) */
.hero-hud .ring-3{
  position:absolute; inset:18%; border-radius:50%;
  border:2px solid transparent;
  border-top-color: var(--turquoise);
  border-right-color: color-mix(in srgb, var(--turquoise) 55%, transparent);
  filter: drop-shadow(0 0 7px rgba(64,224,208,.7));
  animation: hudSpin 8s linear infinite;
}
/* Segundo arco fino en sentido contrario */
.hero-hud .ring-4{
  position:absolute; inset:26%; border-radius:50%;
  border:1.5px solid transparent;
  border-bottom-color: var(--turquoise-soft, #8FF2E6);
  border-left-color: color-mix(in srgb, var(--turquoise) 40%, transparent);
  animation: hudSpin 12s linear infinite reverse;
}
@keyframes hudPulseCore{ 0%,100%{ opacity:.85; transform:scale(1); } 50%{ opacity:1; transform:scale(1.06); } }
.hero-hud .crosshair::before,.hero-hud .crosshair::after{ content:""; position:absolute; background: color-mix(in srgb, var(--turquoise) 30%, transparent); }
.hero-hud .crosshair::before{ left:50%; top:6%; bottom:6%; width:1px; transform:translateX(-50%); }
.hero-hud .crosshair::after{ top:50%; left:6%; right:6%; height:1px; transform:translateY(-50%); }
@keyframes hudSpin{ to{ transform:rotate(360deg); } }
@media (max-width:980px){ .hero-hud{ display:none; } }

/* ---------- Lecturas HUD (esquinas del hero) ---------- */
.hud-readout{
  position:absolute; z-index:2; top:6.6rem;
  display:flex; align-items:center; gap:.55rem;
  font-family: var(--font-mono); font-size:.72rem; letter-spacing:.14em; text-transform:uppercase;
  color:#B7FBF1; opacity:.9;
}
.hud-readout-tl{ left:clamp(1.25rem, 4vw, 2.5rem); }
.hud-readout-tr{ right:clamp(1.25rem, 4vw, 2.5rem); }
.hud-readout .dot{
  width:6px; height:6px; border-radius:50%; background: var(--turquoise); flex-shrink:0;
  box-shadow:0 0 0 3px color-mix(in srgb, var(--turquoise) 30%, transparent);
  animation: pulseWA 1.8s ease-in-out infinite;
}
@media (max-width:760px){ .hud-readout{ display:none; } }

/* ---------- Marquee de tecnologías ---------- */
.marquee-wrap{ overflow:hidden; border-block:1px solid var(--border); padding:1.5rem 0; background:var(--surface); }
.marquee{ display:flex; gap:3.5rem; width:max-content; animation: scrollX 24s linear infinite; }
.marquee span{
  font-family: var(--font-mono); font-size:.95rem; color:var(--text-secondary);
  display:flex; align-items:center; gap:.6rem; white-space:nowrap;
}
.marquee span::before{ content:"◆"; color:var(--turquoise); }
@keyframes scrollX{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }

/* ---------- Cards de servicios ---------- */
.service-card{
  background: var(--surface);
  border:1px solid var(--border);
  border-radius: var(--radius-lg);
  padding:2.2rem;
  position:relative; overflow:hidden;
  transition: transform .5s cubic-bezier(.2,.8,.2,1), box-shadow .5s ease, border-color .5s ease;
}
.service-card:hover{ transform: translateY(-10px); box-shadow: var(--shadow); border-color: color-mix(in srgb, var(--turquoise) 45%, transparent); }
.service-card::before{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none; opacity:0;
  background: radial-gradient(260px circle at var(--x,50%) var(--y,50%), color-mix(in srgb, var(--turquoise) 14%, transparent), transparent 65%);
  transition: opacity .4s ease;
}
.service-card:hover::before{ opacity:1; }
.service-card > *{ position:relative; z-index:1; }
.service-card .icon-wrap{
  width:58px; height:58px; border-radius:16px;
  display:flex; align-items:center; justify-content:center; margin-bottom:1.4rem;
  background: linear-gradient(135deg, var(--turquoise), var(--turquoise-deep));
  color:#06231F;
  transition: transform .5s ease;
}
.service-card:hover .icon-wrap{ transform: rotate(-8deg) scale(1.08); }
.service-card .icon-wrap svg{ width:28px; height:28px; }
.service-card h3{ font-size:1.25rem; margin-bottom:.7rem; }
.service-card p{ color:var(--text-secondary); font-size:.96rem; margin-bottom:1.1rem; }
.service-card ul{ display:flex; flex-direction:column; gap:.5rem; }
.service-card li{ font-size:.9rem; color:var(--text-secondary); display:flex; gap:.55rem; align-items:flex-start; }
.service-card li::before{ content:"✓"; color: var(--turquoise-deep); font-weight:700; }
[data-theme="dark"] .service-card li::before{ color:var(--turquoise); }
.service-card .tag{
  position:absolute; top:1.6rem; right:1.6rem; font-family:var(--font-mono); font-size:.72rem;
  color:var(--text-secondary); opacity:.6;
}

/* imagen dentro de tarjeta */
.card-media{ border-radius: var(--radius-md); overflow:hidden; margin-bottom:1.4rem; aspect-ratio:16/10; position:relative; }
.card-media img{ width:100%; height:100%; object-fit:cover; transition: transform .7s cubic-bezier(.2,.8,.2,1); }
.service-card:hover .card-media img, .work-card:hover .card-media img{ transform: scale(1.09); }
.card-media::after{
  content:""; position:absolute; inset:0;
  background: linear-gradient(180deg, transparent 40%, rgba(6,20,20,.55));
  opacity:0; transition: opacity .4s ease;
}
.service-card:hover .card-media::after{ opacity:1; }

/* Marco HUD tipo "escaneo" en las esquinas de la imagen */
.card-media::before{
  content:""; position:absolute; inset:10px; z-index:2; pointer-events:none; border-radius:6px;
  background-image:
    linear-gradient(var(--turquoise), var(--turquoise)), linear-gradient(var(--turquoise), var(--turquoise)),
    linear-gradient(var(--turquoise), var(--turquoise)), linear-gradient(var(--turquoise), var(--turquoise));
  background-size: 16px 2px, 2px 16px, 16px 2px, 2px 16px;
  background-position: top left, top left, bottom right, bottom right;
  background-repeat: no-repeat;
  opacity:0; transition: opacity .4s ease, inset .4s ease;
}
.service-card:hover .card-media::before, .work-card:hover .card-media::before{ opacity:.9; inset:6px; }

/* ---------- Proceso (timeline numerado — sí aplica, es una secuencia real) ---------- */
.process{ position:relative; }
.process-list{ display:flex; flex-direction:column; gap:0; }
.process-item{
  display:grid; grid-template-columns:90px 1fr; gap:1.6rem;
  padding:2.2rem 0; border-top:1px solid var(--border);
  opacity:0; transform: translateY(30px);
}
.process-item:last-child{ border-bottom:1px solid var(--border); }
.process-num{ font-family:var(--font-display); font-size:2.4rem; font-weight:800; color:var(--turquoise); opacity:.55; }
.process-item h3{ font-size:1.3rem; margin-bottom:.5rem; }
.process-item p{ color:var(--text-secondary); max-width:560px; }

/* ---------- Portafolio ---------- */
.filter-bar{ display:flex; flex-wrap:wrap; gap:.7rem; margin-bottom:2.6rem; }
.filter-btn{
  padding:.55rem 1.2rem; border-radius:999px; border:1px solid var(--border);
  font-size:.88rem; font-weight:600; color:var(--text-secondary);
  transition: all .35s ease;
}
.filter-btn:hover{ border-color:var(--turquoise); color:var(--text); }
.filter-btn.active{ background: var(--turquoise); border-color:var(--turquoise); color:#06231F; }

.work-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.6rem; }
.work-card{
  border-radius: var(--radius-lg); overflow:hidden; position:relative;
  border:1px solid var(--border); background:var(--surface);
  transition: transform .5s cubic-bezier(.2,.8,.2,1), box-shadow .5s ease, border-color .5s ease;
}
.work-card:hover{ transform: translateY(-8px); box-shadow: var(--shadow); border-color: color-mix(in srgb, var(--turquoise) 40%, transparent); }
.work-card::before{
  content:""; position:absolute; inset:0; z-index:3; pointer-events:none; opacity:0;
  background: radial-gradient(220px circle at var(--x,50%) var(--y,50%), color-mix(in srgb, var(--turquoise) 16%, transparent), transparent 65%);
  transition: opacity .4s ease;
}
.work-card:hover::before{ opacity:1; }
.work-media{ aspect-ratio:4/3; overflow:hidden; }
.work-media img{ width:100%; height:100%; object-fit:cover; transition: transform .7s ease; }
.work-card:hover .work-media img{ transform:scale(1.1) rotate(1deg); }
.work-info{ padding:1.4rem 1.5rem 1.6rem; }
.work-info span.cat{ font-family:var(--font-mono); font-size:.72rem; color:var(--turquoise-deep); text-transform:uppercase; letter-spacing:.08em; }
[data-theme="dark"] .work-info span.cat{ color:var(--turquoise); }
.work-info h3{ font-size:1.1rem; margin-top:.4rem; }
.work-card[hidden]{ display:none; }

/* ---------- Proyectos en vivo (portafolio) ---------- */
.live-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.8rem; }
.live-card{
  position:relative; border-radius: var(--radius-lg); overflow:hidden;
  border:1px solid var(--border); background:var(--surface);
  display:flex; flex-direction:column;
  transition: transform .5s cubic-bezier(.2,.8,.2,1), box-shadow .5s ease, border-color .5s ease;
}
.live-card:hover{ transform: translateY(-8px); box-shadow: var(--shadow); border-color: color-mix(in srgb, var(--turquoise) 45%, transparent); }
.live-badge{
  position:absolute; top:1rem; left:1rem; z-index:2;
  display:flex; align-items:center; gap:.45rem;
  background: rgba(6,20,20,.72); backdrop-filter: blur(6px);
  color:#B7FBF1; font-family: var(--font-mono); font-size:.68rem; letter-spacing:.1em; text-transform:uppercase;
  padding:.4rem .7rem; border-radius:999px; border:1px solid color-mix(in srgb, var(--turquoise) 45%, transparent);
}
.live-badge .dot{
  width:6px; height:6px; border-radius:50%; background:#3CF2C4; flex-shrink:0;
  box-shadow:0 0 0 3px color-mix(in srgb, var(--turquoise) 35%, transparent);
  animation: pulseWA 1.8s ease-in-out infinite;
}
.live-media{ aspect-ratio:4/3; overflow:hidden; position:relative; }
.live-media img{ width:100%; height:100%; object-fit:cover; transition: transform .7s ease; }
.live-card:hover .live-media img{ transform:scale(1.08); }
.live-media::before{
  content:""; position:absolute; inset:10px; z-index:1; pointer-events:none; border-radius:6px;
  background-image:
    linear-gradient(var(--turquoise), var(--turquoise)), linear-gradient(var(--turquoise), var(--turquoise)),
    linear-gradient(var(--turquoise), var(--turquoise)), linear-gradient(var(--turquoise), var(--turquoise));
  background-size: 16px 2px, 2px 16px, 16px 2px, 2px 16px;
  background-position: top left, top left, bottom right, bottom right;
  background-repeat: no-repeat;
  opacity:0; transition: opacity .4s ease, inset .4s ease;
}
.live-card:hover .live-media::before{ opacity:.9; inset:6px; }
.live-info{ padding:1.5rem 1.6rem 1.7rem; display:flex; flex-direction:column; gap:.5rem; flex:1; }
.live-info span.cat{ font-family:var(--font-mono); font-size:.72rem; color:var(--turquoise-deep); text-transform:uppercase; letter-spacing:.08em; }
[data-theme="dark"] .live-info span.cat{ color:var(--turquoise); }
.live-info h3{ font-size:1.12rem; margin-top:.15rem; }
.live-info p{ color:var(--text-secondary); font-size:.92rem; line-height:1.55; margin-top:.1rem; }
.live-demo{
  margin-top:.4rem; padding:.75rem .9rem; border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--turquoise) 8%, transparent);
  border:1px dashed color-mix(in srgb, var(--turquoise) 40%, transparent);
  display:flex; flex-wrap:wrap; align-items:center; gap:.5rem .8rem;
}
.live-demo-label{ font-family:var(--font-mono); font-size:.7rem; text-transform:uppercase; letter-spacing:.08em; color:var(--text-secondary); }
.live-demo-creds{ display:flex; gap:.5rem; flex-wrap:wrap; }
.live-demo-creds code{
  font-family: var(--font-mono); font-size:.82rem; background: var(--surface-2, var(--surface));
  border:1px solid var(--border); padding:.2rem .55rem; border-radius:6px; color: var(--text);
}
.live-link{
  margin-top:.9rem; display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  font-weight:600; font-size:.92rem; color:#06231F; background: linear-gradient(120deg,var(--turquoise),var(--turquoise-deep));
  padding:.7rem 1.1rem; border-radius:999px; align-self:flex-start;
  transition: transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s ease;
}
.live-link svg{ width:16px; height:16px; }
.live-link:hover{ transform: translateY(-3px); box-shadow: 0 14px 30px -10px rgba(64,224,208,0.55); }
@media (max-width:980px){ .live-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .live-grid{ grid-template-columns:1fr; } }

/* ---------- Testimonios ---------- */
.testi-track{ display:flex; gap:1.6rem; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:1rem; scrollbar-width:none; }
.testi-track::-webkit-scrollbar{ display:none; }
.testi-card{
  flex:0 0 min(420px,86vw); scroll-snap-align:start;
  background:var(--surface); border:1px solid var(--border); border-radius: var(--radius-lg);
  padding:2rem; display:flex; flex-direction:column; gap:1.2rem;
}
.testi-card .stars{ color: var(--turquoise); letter-spacing:.15em; }
.testi-card p{ color:var(--text); font-size:1.02rem; }
.testi-person{ display:flex; align-items:center; gap:.8rem; margin-top:auto; }
.testi-person img{ width:44px; height:44px; border-radius:50%; object-fit:cover; }
.testi-person strong{ display:block; font-size:.92rem; }
.testi-person span{ font-size:.8rem; color:var(--text-secondary); }

/* ---------- CTA banda ---------- */
.cta-band{
  border-radius: var(--radius-lg);
  padding: clamp(2.6rem, 6vw, 4.2rem);
  background: linear-gradient(120deg, var(--turquoise-deep), var(--turquoise) 60%, var(--turquoise-soft));
  color:#06231F;
  position:relative; overflow:hidden;
  text-align:center;
}
.cta-band h2{ font-size:clamp(1.7rem,3.4vw,2.5rem); margin-bottom:1rem; }
.cta-band p{ max-width:520px; margin-inline:auto; margin-bottom:1.8rem; opacity:.85; }
.cta-band .btn-outline{ border-color:rgba(6,35,31,.4); color:#06231F; }
.cta-band .btn-outline:hover{ background:#06231F; color:var(--turquoise); }
.cta-band::before, .cta-band::after{
  content:""; position:absolute; width:260px; height:260px; border-radius:50%;
  background: rgba(255,255,255,.25); filter:blur(10px);
  animation: floatY 10s ease-in-out infinite;
}
.cta-band::before{ top:-100px; left:-80px; }
.cta-band::after{ bottom:-120px; right:-60px; animation-delay:2s; }

/* ---------- Formulario de contacto ---------- */
.contact-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:3rem; align-items:start; }
.form-field{ margin-bottom:1.3rem; }
.form-field label{ display:block; font-size:.85rem; font-weight:600; margin-bottom:.5rem; color:var(--text-secondary); }
.form-field input, .form-field select, .form-field textarea{
  width:100%; padding:.9rem 1.05rem; border-radius: var(--radius-sm);
  border:1.5px solid var(--border); background:var(--surface); color:var(--text);
  transition: border-color .3s ease, box-shadow .3s ease, transform .2s ease;
}
.form-field input:focus, .form-field select:focus, .form-field textarea:focus{
  outline:none; border-color:var(--turquoise); box-shadow: 0 0 0 4px color-mix(in srgb, var(--turquoise) 22%, transparent);
}
.form-field textarea{ resize:vertical; min-height:130px; }
.form-note{ font-size:.85rem; color:var(--text-secondary); margin-top:1rem; }
.form-success{
  display:none; align-items:center; gap:.7rem; padding:1rem 1.2rem; border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--turquoise) 16%, transparent); border:1px solid color-mix(in srgb, var(--turquoise) 40%, transparent);
  color: var(--turquoise-deep); font-weight:600; margin-top:1rem;
}
[data-theme="dark"] .form-success{ color: var(--turquoise-soft); }
.form-success.show{ display:flex; animation: fadeInUp .5s ease both; }

.contact-info-card{
  background: var(--surface); border:1px solid var(--border); border-radius: var(--radius-lg);
  padding:2rem;
}
.contact-info-card h3{ margin-bottom:1.4rem; }
.contact-info-card .row{ display:flex; gap:1rem; align-items:flex-start; padding:.85rem 0; border-top:1px solid var(--border); }
.contact-info-card .row:first-of-type{ border-top:none; padding-top:0; }
.contact-info-card .row .icon{
  width:40px; height:40px; border-radius:12px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  background: color-mix(in srgb, var(--turquoise) 16%, transparent); color: var(--turquoise-deep);
}
[data-theme="dark"] .contact-info-card .row .icon{ color: var(--turquoise); }
.contact-info-card .row strong{ display:block; font-size:.92rem; }
.contact-info-card .row span{ font-size:.85rem; color:var(--text-secondary); }
.social-row{ display:flex; gap:.7rem; margin-top:1.5rem; }
.social-row a{
  width:42px; height:42px; border-radius:50%; border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center; transition: all .35s ease;
}
.social-row a:hover{ background: var(--turquoise); border-color:var(--turquoise); color:#06231F; transform: translateY(-4px) rotate(8deg); }
.social-row svg{ width:18px; height:18px; }

/* ---------- Equipo / nosotros ---------- */
.value-card{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:1.8rem; transition: transform .4s ease, box-shadow .4s ease;
}
.value-card:hover{ transform: translateY(-6px); box-shadow: var(--shadow); }
.value-card .num{ font-family:var(--font-mono); color:var(--turquoise-deep); font-size:.85rem; }
[data-theme="dark"] .value-card .num{ color:var(--turquoise); }
.value-card h3{ font-size:1.15rem; margin:.6rem 0 .6rem; }
.value-card p{ color:var(--text-secondary); font-size:.92rem; }

.team-card{ text-align:center; display:flex; flex-direction:column; }
.team-card h3{ margin:0 0 .3rem; min-height:2.6em; display:flex; align-items:center; justify-content:center; line-height:1.25; }
.team-card span{ display:block; }
.team-photo{ border-radius: var(--radius-lg); overflow:hidden; aspect-ratio:1/1; margin-bottom:1.1rem; position:relative; background:#0e1626; }
.team-photo img{ width:100%; height:100%; object-fit:cover; object-position:center top; transition: transform .6s ease, filter .6s ease; filter:grayscale(45%); }
.team-card:hover .team-photo img{ transform:scale(1.08); filter:grayscale(0%); }
.team-card h3{ font-size:1.05rem; }
.team-card span{ font-size:.85rem; color:var(--text-secondary); }

.stat-block{ text-align:center; }
.stat-block strong{ display:block; font-family:var(--font-display); font-size:clamp(2rem,4vw,3rem); color:var(--turquoise-deep); }
[data-theme="dark"] .stat-block strong{ color:var(--turquoise); }
.stat-block span{ color:var(--text-secondary); font-size:.9rem; }

/* ---------- Mini hero de páginas internas ---------- */
.page-hero{
  padding: 9.5rem 0 4.5rem; position:relative; overflow:hidden;
  background: var(--surface-alt);
}
.page-hero .eyebrow{ }
.page-hero h1{ font-size: clamp(2.1rem, 4.4vw, 3.4rem); max-width:760px; }
.page-hero p{ color:var(--text-secondary); max-width:600px; margin-top:1rem; font-size:1.05rem; }
.page-hero .glow{
  position:absolute; width:420px; height:420px; border-radius:50%;
  background: radial-gradient(circle, var(--turquoise), transparent 70%);
  opacity:.18; top:-160px; right:-140px; filter:blur(10px);
  animation: floatY 12s ease-in-out infinite;
}

/* ---------- Footer ---------- */
footer{ background: var(--surface); border-top:1px solid var(--border); padding: 4rem 0 2rem; }
.footer-grid{ display:grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap:2.5rem; margin-bottom:3rem; }
.footer-grid h4{ font-size:.9rem; margin-bottom:1.1rem; }
.footer-grid ul{ display:flex; flex-direction:column; gap:.65rem; }
.footer-grid a{ color:var(--text-secondary); font-size:.92rem; transition: color .3s ease, padding-left .3s ease; }
.footer-grid a:hover{ color:var(--turquoise-deep); padding-left:4px; }
[data-theme="dark"] .footer-grid a:hover{ color:var(--turquoise); }
.footer-bottom{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:1rem; padding-top:1.6rem; border-top:1px solid var(--border); font-size:.85rem; color:var(--text-secondary); }

/* ---------- Botones flotantes ---------- */
.floating-actions{ position:fixed; right:1.4rem; bottom:1.4rem; z-index:250; display:flex; flex-direction:column; gap:.9rem; align-items:flex-end; }

.whatsapp-btn{
  width:60px; height:60px; border-radius:50%;
  background: #25D366; color:#fff; display:flex; align-items:center; justify-content:center;
  box-shadow: 0 14px 30px -8px rgba(37,211,102,.55);
  position:relative;
  animation: pulseWA 2.6s ease-in-out infinite;
}
.whatsapp-btn svg{ width:28px; height:28px; }
.whatsapp-btn::before{
  content:""; position:absolute; inset:0; border-radius:50%; background:#25D366; opacity:.55;
  animation: ringWA 2.6s ease-out infinite;
}
@keyframes pulseWA{ 0%,100%{ transform:scale(1);} 50%{ transform:scale(1.07);} }
@keyframes ringWA{ 0%{ transform:scale(1); opacity:.55;} 100%{ transform:scale(1.9); opacity:0;} }

.totop-btn{
  width:48px; height:48px; border-radius:50%; background: var(--surface); color:var(--text);
  border:1px solid var(--border); display:flex; align-items:center; justify-content:center;
  opacity:0; transform: translateY(20px) scale(.8); pointer-events:none;
  transition: opacity .4s ease, transform .4s ease, background .4s ease, border-color .4s ease;
}
.totop-btn.show{ opacity:1; transform: translateY(0) scale(1); pointer-events:auto; }
.totop-btn:hover{ border-color: var(--turquoise); transform: translateY(-4px); }
.totop-btn svg{ width:20px; height:20px; }

/* progreso de scroll */
.scroll-progress{ position:fixed; top:0; left:0; height:3px; background: linear-gradient(90deg, var(--turquoise), var(--turquoise-deep)); z-index:300; width:0%; transition: width .1s linear; }

/* ---------- Scroll reveal ---------- */
.reveal{
  opacity:0; transform: translateY(36px); filter: blur(6px);
  transition: opacity .8s cubic-bezier(.2,.8,.2,1), transform .8s cubic-bezier(.2,.8,.2,1), filter .8s ease;
  transition-delay: calc(var(--i, 0) * 70ms);
}
.reveal.in{ opacity:1; transform:none; filter: blur(0); }
.reveal-scale{ opacity:0; transform: scale(.92); filter: blur(6px); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.8,.2,1), filter .7s ease; }
.reveal-scale.in{ opacity:1; transform:scale(1); filter: blur(0); }
.stagger > *{ transition-delay: calc(var(--i,0) * 90ms); }
.process-item.in{ opacity:1; transform:translateY(0); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.8,.2,1); }

/* ---------- Loader de página ---------- */
.page-loader{
  position:fixed; inset:0; z-index:999; background: var(--bg);
  display:flex; align-items:center; justify-content:center;
  transition: opacity .6s ease, visibility .6s ease;
}
.page-loader.hide{ opacity:0; visibility:hidden; pointer-events:none; }
.loader-stack{ display:flex; flex-direction:column; gap:8px; }
.loader-stack span{ width:64px; height:12px; border-radius:6px; background: linear-gradient(90deg, var(--turquoise), var(--turquoise-deep)); animation: loaderBar 1.1s ease-in-out infinite; }
.loader-stack span:nth-child(2){ animation-delay:.15s; width:48px; }
.loader-stack span:nth-child(3){ animation-delay:.3s; width:32px; }
@keyframes loaderBar{ 0%,100%{ transform: scaleX(.4); opacity:.5; } 50%{ transform: scaleX(1); opacity:1; } }

/* =========================================================
   COMPONENTES AVANZADOS — v2 (inspirados en referencia)
   ========================================================= */

/* ---------- Fondo HUD (estilo S.T.A.R.V.I.X. / Iron Man) — reemplaza las burbujas ---------- */
.hud-bg{ position:fixed; inset:0; z-index:-3; pointer-events:none; overflow:hidden; }
.hud-grid{
  position:absolute; inset:-1px;
  background-image:
    linear-gradient(color-mix(in srgb, var(--turquoise) 16%, transparent) 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--turquoise) 16%, transparent) 1px, transparent 1px);
  background-size: 46px 46px;
  opacity:.1;
  mask-image: radial-gradient(ellipse 90% 55% at 50% 0%, black 0%, transparent 78%);
  -webkit-mask-image: radial-gradient(ellipse 90% 55% at 50% 0%, black 0%, transparent 78%);
}
[data-theme="dark"] .hud-grid{ opacity:.24; }
.hud-scanline{
  position:absolute; left:0; right:0; top:-160px; height:160px;
  background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--turquoise) 14%, transparent), transparent);
  mix-blend-mode: screen;
  animation: hudScan 11s linear infinite;
}
@keyframes hudScan{ 0%{ top:-160px; } 100%{ top:100%; } }

/* Grid con leve deriva animada tipo "datos moviéndose" */
.hud-grid{ animation: gridDrift 26s linear infinite; }
@keyframes gridDrift{ from{ background-position:0 0, 0 0; } to{ background-position:0 46px, 46px 0; } }

/* ===== CAPAS TECH GLOBALES (en todas las páginas) ===== */

/* --- Líneas de circuito con pulsos de datos --- */
.tech-circuit{ position:absolute; inset:0; opacity:.5; }
[data-theme="dark"] .tech-circuit{ opacity:.75; }
.tech-circuit .cwire{
  position:absolute;
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--turquoise) 55%, transparent), transparent);
  overflow:hidden;
}
.tech-circuit .cwire::after{
  content:""; position:absolute; width:60px; height:100%;
  background: linear-gradient(90deg, transparent, var(--turquoise), #fff, var(--turquoise), transparent);
  filter: blur(.5px);
  animation: dataPulse linear infinite;
}
/* horizontales */
.cw1{ top:18%; left:0; width:38%; height:1px; }
.cw1::after{ animation-duration:3.4s; }
.cw2{ top:63%; right:0; width:44%; height:1px; }
.cw2::after{ animation-duration:4.6s; animation-delay:1.2s; }
.cw3{ bottom:12%; left:8%; width:30%; height:1px; }
.cw3::after{ animation-duration:5.2s; animation-delay:.6s; }
/* verticales */
.cw4, .cw5{ width:1px;
  background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--turquoise) 55%, transparent), transparent);
}
.cw4{ top:0; left:24%; height:46%; }
.cw4::after{ width:100%; height:60px;
  background: linear-gradient(180deg, transparent, var(--turquoise), #fff, var(--turquoise), transparent);
  animation: dataPulseV 4s linear infinite; }
.cw5{ bottom:0; right:20%; height:40%; }
.cw5::after{ width:100%; height:60px;
  background: linear-gradient(180deg, transparent, var(--turquoise), #fff, var(--turquoise), transparent);
  animation: dataPulseV 5.5s linear infinite 1.5s; }
@keyframes dataPulse{ 0%{ left:-60px; } 100%{ left:100%; } }
@keyframes dataPulseV{ 0%{ top:-60px; } 100%{ top:100%; } }

/* nodos brillantes en las intersecciones */
.tech-circuit .cnode{
  position:absolute; width:6px; height:6px; border-radius:50%;
  background: var(--turquoise); box-shadow:0 0 10px 2px rgba(64,224,208,.8);
  animation: nodeBlink 2.8s ease-in-out infinite;
}
.cn1{ top:18%; left:24%; }
.cn2{ top:63%; right:20%; animation-delay:.9s; }
.cn3{ bottom:12%; left:8%; animation-delay:1.6s; }
.cn4{ top:calc(18% - 3px); left:calc(38% - 3px); animation-delay:.4s; }
@keyframes nodeBlink{ 0%,100%{ opacity:.35; transform:scale(.85);} 50%{ opacity:1; transform:scale(1.2);} }

/* --- Partículas de datos flotantes (generadas por JS) --- */
.tech-data{ position:absolute; inset:0; }
.tech-data .dpx{
  position:absolute; border-radius:50%;
  background: radial-gradient(circle, rgba(143,242,230,.9), transparent 70%);
  animation: floatData linear infinite;
}
@keyframes floatData{
  0%{ transform: translate3d(0,0,0); opacity:0; }
  15%{ opacity:.7; }
  85%{ opacity:.5; }
  100%{ transform: translate3d(var(--dx,20px), var(--dy,-120px),0); opacity:0; }
}

/* --- HUD de anillos con marcas de escala (estilo imagen de referencia) --- */
.tech-reactor{
  position:absolute; right:-70px; top:34%; width:360px; height:360px;
  opacity:.55; pointer-events:none;
}
[data-theme="dark"] .tech-reactor{ opacity:.78; }
.tech-reactor .rx-ring{
  position:absolute; inset:0; margin:auto; border-radius:50%;
}
/* Anillo de marcas finas tipo tacómetro (exterior) */
.rx-ticks{
  width:100%; height:100%;
  background: repeating-conic-gradient(from 0deg,
      color-mix(in srgb, var(--turquoise) 50%, transparent) 0deg 0.5deg,
      transparent 0.5deg 5deg);
  -webkit-mask: radial-gradient(circle, transparent 0 45%, #000 45.5% 50%, transparent 50.5%);
          mask: radial-gradient(circle, transparent 0 45%, #000 45.5% 50%, transparent 50.5%);
  animation: rxSpin 44s linear infinite;
}
/* Arco brillante grueso que gira (el trazo luminoso de la referencia) */
.rx-arc1{
  width:88%; height:88%; border:2px solid transparent;
  border-top-color: var(--turquoise);
  border-right-color: color-mix(in srgb, var(--turquoise) 55%, transparent);
  filter: drop-shadow(0 0 7px rgba(64,224,208,.7));
  animation: rxSpin 8s linear infinite;
}
/* Arco fino inferior en sentido contrario */
.rx-arc2{
  width:88%; height:88%; border:1.5px solid transparent;
  border-bottom-color: var(--turquoise-soft, #8FF2E6);
  border-left-color: color-mix(in srgb, var(--turquoise) 40%, transparent);
  animation: rxSpinRev 13s linear infinite;
}
/* Anillo punteado exterior tenue */
.rx-dashed{
  width:100%; height:100%;
  border:1px dotted color-mix(in srgb, var(--turquoise) 28%, transparent);
  animation: rxSpinRev 70s linear infinite;
}
/* Segundo anillo de marcas más pequeño (interior) */
.rx-core{
  width:60%; height:60%; border-radius:50%;
  background: repeating-conic-gradient(from 0deg,
      color-mix(in srgb, var(--turquoise) 40%, transparent) 0deg 0.5deg,
      transparent 0.5deg 8deg);
  -webkit-mask: radial-gradient(circle, transparent 0 42%, #000 42.5% 50%, transparent 50.5%);
          mask: radial-gradient(circle, transparent 0 42%, #000 42.5% 50%, transparent 50.5%);
  animation: rxSpinRev 30s linear infinite;
  box-shadow:none;
}
/* Retícula fina */
.rx-cross{
  width:100%; height:100%;
  background:
    linear-gradient(color-mix(in srgb, var(--turquoise) 16%, transparent), color-mix(in srgb, var(--turquoise) 16%, transparent)) center/1px 100% no-repeat,
    linear-gradient(color-mix(in srgb, var(--turquoise) 16%, transparent), color-mix(in srgb, var(--turquoise) 16%, transparent)) center/100% 1px no-repeat;
}
@keyframes rxSpin{ to{ transform: rotate(360deg); } }
@keyframes rxSpinRev{ to{ transform: rotate(-360deg); } }

/* --- HUD decorativo por sección (inyectado por JS) --- */
.sec-hud{
  position:absolute; width:190px; height:190px; pointer-events:none;
  opacity:.32; z-index:0;
}
[data-theme="dark"] .sec-hud{ opacity:.5; }
.sec-hud.sh-right{ right:-60px; top:12%; }
.sec-hud.sh-left{ left:-60px; bottom:8%; }
.sec-hud .sh-ring{ position:absolute; inset:0; margin:auto; border-radius:50%; }
.sec-hud .sh-ticks{
  width:100%; height:100%;
  background: repeating-conic-gradient(from 0deg,
      color-mix(in srgb, var(--turquoise) 48%, transparent) 0deg 0.5deg,
      transparent 0.5deg 6deg);
  -webkit-mask: radial-gradient(circle, transparent 0 44%, #000 44.5% 50%, transparent 50.5%);
          mask: radial-gradient(circle, transparent 0 44%, #000 44.5% 50%, transparent 50.5%);
  animation: rxSpin 38s linear infinite;
}
.sec-hud .sh-arc{
  width:74%; height:74%; border:2px solid transparent;
  border-top-color: var(--turquoise);
  border-right-color: color-mix(in srgb, var(--turquoise) 50%, transparent);
  filter: drop-shadow(0 0 5px rgba(64,224,208,.55));
  animation: rxSpin 7s linear infinite;
}
.sec-hud .sh-dashed{
  width:92%; height:92%;
  border:1px dotted color-mix(in srgb, var(--turquoise) 28%, transparent);
  animation: rxSpinRev 55s linear infinite;
}
.sec-hud.sh-left .sh-arc{ animation-direction:reverse; animation-duration:9s; }
@media (max-width:780px){ .sec-hud{ display:none; } }
/* Las secciones necesitan posición relativa y recorte para alojar el HUD */
.section, .section-tight, .section-alt, .section-deep{ position:relative; overflow:hidden; }
.section > .container, .section-tight > .container, .section-alt > .container, .section-deep > .container{ position:relative; z-index:1; }

/* --- Malla hexagonal tenue superior --- */
.tech-hex{
  position:absolute; inset:0; opacity:.05;
  background-image:
    radial-gradient(circle at 50% 50%, transparent 68%, color-mix(in srgb, var(--turquoise) 60%, transparent) 69%, transparent 72%);
  background-size: 60px 60px;
  mask-image: radial-gradient(ellipse 80% 60% at 80% 20%, black, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 80% 20%, black, transparent 75%);
}
[data-theme="dark"] .tech-hex{ opacity:.09; }

@media (max-width:780px){
  .tech-reactor{ display:none; }
  .tech-circuit{ opacity:.4; }
}
@media (prefers-reduced-motion: reduce){
  .tech-circuit .cwire::after, .tech-data .dpx,
  .rx-ticks, .rx-arc1, .rx-arc2, .rx-dashed, .rx-core,
  .sec-hud .sh-ring,
  .hero-hud .ring-1, .hero-hud .ring-2, .hero-hud .ring-3, .hero-hud .ring-4,
  .hero-tech .hnode, .hero-tech .hbit, .hud-grid{ animation:none; }
}

/* ---------- Divisores de onda entre secciones ---------- */
.wave-divider{ display:block; line-height:0; margin-top:-1px; }
.wave-divider svg{ display:block; width:100%; height:64px; }

/* ---------- Sección profunda (contraste editorial) ---------- */
.section-deep{
  background: linear-gradient(180deg, #071021 0%, #0A1830 100%);
  color:#EAF7F5;
}
.section-deep .section-head p{ color: rgba(234,247,245,.68); }
.section-deep .eyebrow{ background: rgba(64,224,208,.14); border-color: rgba(64,224,208,.4); color:#B7FBF1; }
[data-theme="light"] .section-deep{ color:#EAF7F5; }

/* ---------- Ticker (marquee reutilizable con clase .ticker) ---------- */
.ticker{ overflow:hidden; border-block:1px solid var(--border); background: var(--surface); }
.ticker-track{ display:flex; gap:3rem; width:max-content; padding:1.2rem 0; animation: scrollX 22s linear infinite; }
.ticker-track span{ font-family:var(--font-mono); font-size:.88rem; color:var(--text-secondary); white-space:nowrap; display:flex; align-items:center; gap:.6rem; }
.ticker-track span::before{ content:"◆"; color:var(--turquoise); }

/* ---------- Dropdown de navegación ---------- */
.nav-dropdown{ position:relative; }
.drop-trigger{
  display:flex; align-items:center; gap:.4rem;
  font-weight:500; font-size:.95rem; color:var(--text-secondary);
  transition: color .3s ease;
}
.drop-trigger svg{ transition: transform .3s ease; }
.nav-dropdown:hover .drop-trigger, .nav-dropdown.open .drop-trigger{ color:var(--text); }
.nav-dropdown:hover .drop-trigger svg, .nav-dropdown.open .drop-trigger svg{ transform: rotate(180deg); }
.dropdown-menu{
  position:absolute; top:calc(100% + 8px); left:50%; transform:translateX(-50%) translateY(8px);
  min-width:220px; background:var(--surface); border:1px solid var(--border); border-radius: var(--radius-md);
  box-shadow: var(--shadow); padding:.6rem; display:flex; flex-direction:column; gap:.2rem;
  opacity:0; pointer-events:none; transition: opacity .35s ease, transform .35s ease;
  z-index:50;
}
.nav-dropdown:hover .dropdown-menu, .nav-dropdown.open .dropdown-menu{ opacity:1; pointer-events:auto; transform:translateX(-50%) translateY(0); }
.dropdown-menu a{ padding:.6rem .8rem; border-radius: var(--radius-sm); font-size:.92rem; display:flex; align-items:center; gap:.6rem; }
.dropdown-menu a:hover{ background: var(--surface-alt); color:var(--turquoise-deep); }
[data-theme="dark"] .dropdown-menu a:hover{ color:var(--turquoise); }
.dropdown-menu a::after{ display:none; }
@media (max-width: 880px){
  .dropdown-menu{ position:static; transform:none; opacity:1; pointer-events:auto; max-height:0; overflow:hidden; padding:0; border:none; box-shadow:none; background:transparent; transition: max-height .4s ease, padding .4s ease; }
  .nav-dropdown.open .dropdown-menu{ max-height:220px; padding:.4rem 0 .4rem 1rem; }
  .drop-trigger{ font-size:1.15rem; }
}

/* ---------- Barra de anuncio flotante (CTA persistente) ---------- */
.promo-bar{
  position:fixed; left:50%; bottom:1.4rem; transform: translate(-50%, 140%);
  z-index:240; width:min(560px, 92vw);
  background: var(--surface); border:1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow); padding:.9rem 1rem .9rem 1.2rem;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  transition: transform .5s cubic-bezier(.2,.8,.2,1);
}
.promo-bar.show{ transform: translate(-50%, 0); }
.promo-msg{ display:flex; align-items:center; gap:.8rem; }
.promo-msg .dot{ width:10px; height:10px; border-radius:50%; background: var(--turquoise); flex-shrink:0; box-shadow:0 0 0 4px color-mix(in srgb, var(--turquoise) 25%, transparent); animation: pulseWA 2.2s ease-in-out infinite; }
.promo-msg b{ font-size:.92rem; display:block; }
.promo-msg span{ font-size:.8rem; color:var(--text-secondary); }
.promo-actions{ display:flex; align-items:center; gap:.5rem; flex-shrink:0; }
.promo-close{ width:32px; height:32px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:var(--text-secondary); transition: background .3s ease; }
.promo-close:hover{ background: var(--surface-alt); }
@media (max-width:640px){ .promo-msg span{ display:none; } }

/* ---------- Tooltip en FAB ---------- */
.fab-tooltip{
  position:absolute; right:calc(100% + 12px); top:50%; transform: translateY(-50%) translateX(6px);
  background: var(--text); color: var(--bg); font-size:.8rem; font-weight:600;
  padding:.45rem .8rem; border-radius:999px; white-space:nowrap;
  opacity:0; pointer-events:none; transition: opacity .3s ease, transform .3s ease;
}
.whatsapp-btn{ position:relative; }
.whatsapp-btn:hover .fab-tooltip{ opacity:1; transform: translateY(-50%) translateX(0); }

/* ---------- Carrusel de testimonios (uno a la vez) ---------- */
.testi-carousel{ max-width:720px; margin-inline:auto; text-align:center; position:relative; min-height:220px; }
.testi-slide{
  position:absolute; inset:0; opacity:0; transform: translateY(14px);
  transition: opacity .6s ease, transform .6s ease; pointer-events:none;
}
.testi-slide.active{ opacity:1; transform:translateY(0); position:relative; pointer-events:auto; }
.testi-slide .stars{ color:var(--turquoise); letter-spacing:.2em; margin-bottom:1rem; display:block; }
.testi-slide p{ font-size:1.25rem; font-family:var(--font-display); font-weight:600; line-height:1.5; margin-bottom:1.2rem; }
.testi-slide span{ color:var(--text-secondary); font-size:.88rem; letter-spacing:.04em; text-transform:uppercase; }
.testi-dots{ display:flex; gap:.55rem; justify-content:center; margin-top:1.8rem; }
.testi-dots button{ width:9px; height:9px; border-radius:50%; background: var(--border); transition: all .35s ease; }
.testi-dots button.active{ background: var(--turquoise); width:26px; border-radius:6px; }

/* ---------- Barra de estadísticas ---------- */
.stats-bar{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:2rem; }
.stats-bar .stat{ flex:1; min-width:140px; text-align:center; }
.stats-bar .stat b{ display:block; font-family:var(--font-display); font-size:clamp(1.8rem,3.4vw,2.6rem); color:var(--turquoise); }
.stats-bar .stat span{ font-size:.85rem; color: var(--text-secondary); }
.section-deep .stats-bar .stat span{ color: rgba(234,247,245,.65); }

/* ---------- Acordeón (FAQ) ---------- */
.accordion{ display:flex; flex-direction:column; gap:.9rem; }
.acc-item{ border:1px solid var(--border); border-radius: var(--radius-md); background: var(--surface); overflow:hidden; transition: border-color .3s ease; }
.acc-item.open{ border-color: color-mix(in srgb, var(--turquoise) 45%, transparent); }
.acc-head{
  width:100%; display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:1.2rem 1.4rem; text-align:left; font-weight:600; font-size:1rem;
}
.acc-icon{ position:relative; width:20px; height:20px; flex-shrink:0; }
.acc-icon::before, .acc-icon::after{ content:""; position:absolute; background: var(--turquoise-deep); border-radius:2px; transition: transform .35s ease; }
[data-theme="dark"] .acc-icon::before, [data-theme="dark"] .acc-icon::after{ background: var(--turquoise); }
.acc-icon::before{ width:100%; height:2px; top:50%; left:0; transform:translateY(-50%); }
.acc-icon::after{ width:2px; height:100%; left:50%; top:0; transform:translateX(-50%); }
.acc-item.open .acc-icon::after{ transform: translateX(-50%) rotate(90deg); opacity:0; }
.acc-body{ max-height:0; overflow:hidden; transition: max-height .4s ease; }
.acc-body-inner{ padding:0 1.4rem 1.3rem; color:var(--text-secondary); font-size:.95rem; }

/* ---------- Tabs de filtro (variante nombrada .tab) ---------- */
.tabs{ display:flex; flex-wrap:wrap; gap:.7rem; margin-bottom:2.4rem; }
.tab{
  padding:.55rem 1.2rem; border-radius:999px; border:1px solid var(--border);
  font-size:.88rem; font-weight:600; color:var(--text-secondary); transition: all .35s ease;
}
.tab:hover{ border-color:var(--turquoise); color:var(--text); }
.tab.active{ background: var(--turquoise); border-color:var(--turquoise); color:#06231F; }

/* ---------- Logo con leve resplandor ---------- */
.logo-glow{ animation: logoGlow 3.4s ease-in-out infinite; }
@keyframes logoGlow{
  0%,100%{ filter: drop-shadow(0 0 0 transparent); }
  50%{ filter: drop-shadow(0 0 8px color-mix(in srgb, var(--turquoise) 55%, transparent)); }
}

/* ---------- Selector de tema: claro / oscuro / sistema ---------- */
.theme-switcher{ position:relative; }
.theme-menu{
  position:absolute; top:calc(100% + 12px); right:0;
  min-width:170px; background:var(--surface); border:1px solid var(--border); border-radius: var(--radius-md);
  box-shadow: var(--shadow); padding:.5rem; display:flex; flex-direction:column; gap:.15rem;
  opacity:0; pointer-events:none; transform: translateY(8px);
  transition: opacity .25s ease, transform .25s ease;
  z-index:60;
}
.theme-switcher.open .theme-menu{ opacity:1; pointer-events:auto; transform:translateY(0); }
.theme-menu button{
  display:flex; align-items:center; gap:.7rem; width:100%;
  padding:.6rem .75rem; border-radius: var(--radius-sm); font-size:.88rem; font-weight:500;
  color:var(--text-secondary); transition: background .25s ease, color .25s ease;
}
.theme-menu button svg{ width:17px; height:17px; flex-shrink:0; }
.theme-menu button:hover{ background: var(--surface-alt); color:var(--text); }
.theme-menu button.active{ color: var(--turquoise-deep); background: color-mix(in srgb, var(--turquoise) 14%, transparent); font-weight:600; }
[data-theme="dark"] .theme-menu button.active{ color: var(--turquoise); }
.theme-menu button .check{ margin-left:auto; opacity:0; width:14px; height:14px; }
.theme-menu button.active .check{ opacity:1; }

/* ---------- Selector de idioma: ES / EN ---------- */
.lang-switcher{ position:relative; }
.lang-menu{
  position:absolute; top:calc(100% + 12px); right:0;
  min-width:160px; background:var(--surface); border:1px solid var(--border); border-radius: var(--radius-md);
  box-shadow: var(--shadow); padding:.5rem; display:flex; flex-direction:column; gap:.15rem;
  opacity:0; pointer-events:none; transform: translateY(8px);
  transition: opacity .25s ease, transform .25s ease;
  z-index:60;
}
.lang-switcher.open .lang-menu{ opacity:1; pointer-events:auto; transform:translateY(0); }
.lang-menu button{
  display:flex; align-items:center; gap:.65rem; width:100%;
  padding:.6rem .75rem; border-radius: var(--radius-sm); font-size:.88rem; font-weight:500;
  color:var(--text-secondary); transition: background .25s ease, color .25s ease;
}
.lang-menu button .lang-flag{
  font-size:.7rem; font-weight:800; letter-spacing:.03em;
  width:26px; height:20px; border-radius:5px;
  display:flex; align-items:center; justify-content:center;
  background: var(--surface-alt); color:var(--text-secondary); flex-shrink:0;
}
.lang-menu button:hover{ background: var(--surface-alt); color:var(--text); }
.lang-menu button.active{ color: var(--turquoise-deep); background: color-mix(in srgb, var(--turquoise) 14%, transparent); font-weight:600; }
[data-theme="dark"] .lang-menu button.active{ color: var(--turquoise); }
.lang-menu button .check{ margin-left:auto; opacity:0; width:14px; height:14px; }
.lang-menu button.active .check{ opacity:1; }

@media (max-width: 420px){
  .lang-toggle{ padding:0 .7rem; font-size:.76rem; }
}

/* ---------- Responsive ---------- */
@media (max-width: 980px){
  .grid-4{ grid-template-columns:repeat(2,1fr); }
  .grid-3{ grid-template-columns:repeat(2,1fr); }
  .footer-grid{ grid-template-columns:repeat(2,1fr); }
  .contact-grid{ grid-template-columns:1fr; }
  .work-grid{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width: 640px){
  .grid-2, .grid-3, .grid-4{ grid-template-columns:1fr; }
  .work-grid{ grid-template-columns:1fr; }
  .footer-grid{ grid-template-columns:1fr; gap:2rem; }
  .process-item{ grid-template-columns:60px 1fr; }
  .hero-stats{ gap:1.6rem; }
  .whatsapp-btn{ width:54px; height:54px; }
  .totop-btn{ width:42px; height:42px; }
}

/* ---------- Botón de voz J.A.R.V.I.S. ---------- */
.starvix-toggle{
  position:relative; width:46px; height:46px; border-radius:50%; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  border:1px solid var(--border); background: var(--surface); color:var(--text-secondary);
  transition: transform .3s cubic-bezier(.2,.8,.2,1), border-color .3s ease, color .3s ease, background .3s ease, box-shadow .3s ease;
}
.starvix-toggle:hover{ transform: translateY(-2px); border-color:var(--turquoise); color:var(--text); }
.starvix-toggle svg{ width:19px; height:19px; position:relative; z-index:1; }
.starvix-toggle .starvix-ring{
  position:absolute; inset:-6px; border-radius:50%;
  border:1px solid color-mix(in srgb, var(--turquoise) 60%, transparent); opacity:0;
}
.starvix-toggle.active{
  color:#06231F; background: linear-gradient(120deg, var(--turquoise), var(--turquoise-deep)); border-color:transparent;
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--turquoise) 22%, transparent);
}
.starvix-toggle.active .starvix-ring{ opacity:1; animation: hudSpin 4.5s linear infinite; }
body.starvix-speaking .starvix-toggle.active{ animation: starvixPulse 1s ease-in-out infinite; }
@keyframes starvixPulse{
  0%,100%{ box-shadow: 0 0 0 4px color-mix(in srgb, var(--turquoise) 25%, transparent); }
  50%{ box-shadow: 0 0 0 10px color-mix(in srgb, var(--turquoise) 8%, transparent); }
}
body.starvix-on .nav-links a, body.starvix-on .btn, body.starvix-on .service-card,
body.starvix-on .work-card, body.starvix-on .acc-head, body.starvix-on .tab{ cursor: pointer; }

/* Punto verde que indica que S.T.A.R.V.I.X. está escuchando comandos de voz */
.starvix-toggle::after{
  content:""; position:absolute; top:2px; right:2px; width:9px; height:9px; border-radius:50%;
  background:#3CF2C4; border:2px solid var(--surface); opacity:0; transform:scale(.5);
  transition: opacity .3s ease, transform .3s ease;
}
body.starvix-listening .starvix-toggle.active::after{
  opacity:1; transform:scale(1);
  animation: pulseWA 1.4s ease-in-out infinite;
}
/* Cuando lo llamaron por su nombre y espera la orden (modo tipo Alexa) */
body.starvix-awake .starvix-toggle.active::after{
  background:#FFC24B;
  animation: pulseWA .6s ease-in-out infinite;
}
body.starvix-awake .starvix-toggle.active{
  box-shadow: 0 0 0 4px color-mix(in srgb, #FFC24B 30%, transparent);
}

/* Halo de voz flotante (aparece mientras S.T.A.R.V.I.X. habla) */
.starvix-speak-indicator{
  position:fixed; left:50%; bottom:6.2rem; transform:translateX(-50%) translateY(140%);
  z-index:300; display:flex; align-items:center; gap:.7rem;
  background: rgba(6,16,20,.88); color:#B7FBF1; border:1px solid color-mix(in srgb, var(--turquoise) 45%, transparent);
  padding:.7rem 1.1rem; border-radius:999px; font-family:var(--font-mono); font-size:.78rem; letter-spacing:.06em;
  backdrop-filter: blur(10px);
  transition: transform .4s cubic-bezier(.2,.8,.2,1);
  pointer-events:none;
  max-width:min(320px, 78vw);
}
body.starvix-speaking .starvix-speak-indicator{ transform:translateX(-50%) translateY(0); }
.starvix-speak-indicator .bars{ display:flex; align-items:center; gap:3px; height:16px; }
.starvix-speak-indicator .bars span{
  width:3px; background: var(--turquoise); border-radius:2px; height:100%;
  animation: starvixBars .8s ease-in-out infinite;
}
.starvix-speak-indicator .bars span:nth-child(2){ animation-delay:.15s; }
.starvix-speak-indicator .bars span:nth-child(3){ animation-delay:.3s; }
.starvix-speak-indicator .bars span:nth-child(4){ animation-delay:.45s; }
@keyframes starvixBars{ 0%,100%{ transform:scaleY(.35); } 50%{ transform:scaleY(1); } }

/* ---------- Burbuja de bienvenida / onboarding de S.T.A.R.V.I.X. ---------- */
.starvix-intro-bubble{
  position:fixed; top:5.4rem; right:1.2rem; z-index:320;
  width:min(280px, 82vw);
  background: linear-gradient(165deg, rgba(6,16,20,.96), rgba(10,26,30,.96));
  color:#EAF7F5; border:1px solid color-mix(in srgb, var(--turquoise) 50%, transparent);
  border-radius: var(--radius-md);
  padding:1rem 1.15rem 1.05rem;
  box-shadow: 0 24px 50px -18px rgba(0,0,0,.55), 0 0 0 1px rgba(64,224,208,.08);
  opacity:0; transform: translateY(-14px) scale(.96);
  transition: opacity .35s cubic-bezier(.2,.8,.2,1), transform .35s cubic-bezier(.2,.8,.2,1);
  pointer-events:none;
}
.starvix-intro-bubble.show{
  opacity:1; transform: translateY(0) scale(1);
  pointer-events:auto;
  animation: starvixBubbleFloat 3.2s ease-in-out .4s infinite;
}
@keyframes starvixBubbleFloat{ 0%,100%{ transform:translateY(0) scale(1); } 50%{ transform:translateY(-4px) scale(1); } }
.starvix-intro-bubble strong{
  display:block; font-family:var(--font-display); font-size:.98rem; margin-bottom:.35rem;
  color: var(--turquoise-soft);
}
.starvix-intro-bubble p{ font-size:.82rem; color:#B7C7D6; margin-bottom:.55rem; }
.starvix-intro-bubble ul{ display:flex; flex-direction:column; gap:.4rem; list-style:none; }
.starvix-intro-bubble li{
  font-family:var(--font-mono); font-size:.74rem; letter-spacing:.02em;
  background: rgba(64,224,208,.1); border:1px solid rgba(64,224,208,.22);
  border-radius:8px; padding:.4rem .6rem; color:#CFF7F0;
  animation: fadeInUp .4s ease both;
}
.starvix-intro-bubble li:nth-child(1){ animation-delay:.05s; }
.starvix-intro-bubble li:nth-child(2){ animation-delay:.15s; }
.starvix-intro-bubble li:nth-child(3){ animation-delay:.25s; }
.starvix-intro-bubble li:nth-child(4){ animation-delay:.35s; }
.starvix-intro-close{
  position:absolute; top:.55rem; right:.6rem; width:22px; height:22px; border-radius:50%;
  border:none; background:rgba(255,255,255,.08); color:#B7C7D6; cursor:pointer;
  display:flex; align-items:center; justify-content:center; font-size:.7rem;
  transition: background .2s ease, color .2s ease;
}
.starvix-intro-close:hover{ background:rgba(255,255,255,.18); color:#fff; }
@media (max-width:560px){
  .starvix-intro-bubble{ top:auto; bottom:6.4rem; right:.9rem; left:.9rem; width:auto; }
}

/* ---------- Logo de marca (icono + texto, legible en claro y oscuro) ---------- */
.footer-logo .logo-icon-img{ filter: drop-shadow(0 4px 10px rgba(64,224,208,.3)); }
@media (max-width: 880px){
  .navbar .logo .mark{ width:36px; height:36px; }
}
@media (max-width: 560px){
  .footer-logo{ font-size:1.2rem; gap:.7rem; }
  .footer-logo .mark{ width:38px; height:38px; }
}

/* ============================================================
   NUEVOS COMPONENTES TECH (terminal, cotizador, boot, cursor)
   ============================================================ */

/* ---------- Terminal interactiva del hero ---------- */
.hero-terminal{
  margin:1.6rem 0 1.8rem; max-width:540px;
  background: rgba(4,18,26,.72);
  border:1px solid rgba(64,224,208,.3);
  border-radius:12px; overflow:hidden;
  backdrop-filter: blur(6px);
  box-shadow: 0 20px 50px -20px rgba(0,0,0,.6), inset 0 0 40px rgba(64,224,208,.05);
}
.term-bar{
  display:flex; align-items:center; gap:.5rem;
  padding:.55rem .85rem; background: rgba(6,35,31,.7);
  border-bottom:1px solid rgba(64,224,208,.18);
}
.term-dot{ width:11px; height:11px; border-radius:50%; background:#2a4a44; }
.term-dot:nth-child(1){ background:#ff5f57; } .term-dot:nth-child(2){ background:#febc2e; } .term-dot:nth-child(3){ background:#28c840; }
.term-title{ margin-left:.4rem; font-family:var(--font-mono,monospace); font-size:.74rem; color:#7Fb5ac; letter-spacing:.02em; }
.term-live{ margin-left:auto; display:inline-flex; align-items:center; gap:.35rem; font-family:var(--font-mono,monospace); font-size:.68rem; color:var(--turquoise); text-transform:uppercase; letter-spacing:.12em; }
.term-live .dot{ width:7px; height:7px; border-radius:50%; background:var(--turquoise); box-shadow:0 0 8px var(--turquoise); animation: hudPulseCore 1.6s ease-in-out infinite; }
.term-body{
  margin:0; padding:1rem 1.1rem; min-height:132px;
  font-family:var(--font-mono,monospace); font-size:.82rem; line-height:1.7;
  color:#CFEFE9; white-space:pre-wrap; word-break:break-word;
}
.term-body .tprompt{ color:var(--turquoise); }
.term-body .tok{ color:#8FF2E6; }
.term-body .tdim{ color:#5f7f79; }
.term-body .tcur{ display:inline-block; width:8px; height:1em; background:var(--turquoise); vertical-align:-2px; animation: blink 1s step-end infinite; }
@media (max-width:640px){ .hero-terminal{ max-width:100%; } .term-body{ font-size:.76rem; min-height:120px; } }

/* ---------- Cotizador interactivo ---------- */
.quoter{
  display:grid; grid-template-columns: 1.4fr .9fr; gap:1.4rem;
  margin-top:2.4rem;
}
.quoter-panel{
  position:relative; overflow:hidden;
  background: var(--surface); border:1px solid var(--border); border-radius:16px;
  padding:1.6rem 1.7rem;
}
.quoter-scan{
  position:absolute; left:0; right:0; top:-120px; height:120px; pointer-events:none;
  background: linear-gradient(180deg, transparent, rgba(64,224,208,.1), transparent);
  animation: hudScan 6s linear infinite;
}
.quoter-step{ margin-bottom:1.5rem; position:relative; z-index:1; }
.quoter-step:last-child{ margin-bottom:0; }
.quoter-q{ display:block; font-family:var(--font-mono,monospace); font-size:.82rem; color:var(--turquoise-deep); letter-spacing:.04em; margin-bottom:.75rem; }
[data-theme="dark"] .quoter-q{ color:var(--turquoise-soft); }
.quoter-opts{ display:flex; flex-wrap:wrap; gap:.6rem; }
.quoter-opts button{
  padding:.6rem 1rem; border-radius:10px; font-size:.88rem; font-weight:500;
  border:1px solid var(--border); background:var(--bg); color:var(--text);
  cursor:pointer; transition: all .25s cubic-bezier(.2,.8,.2,1);
}
.quoter-opts button:hover{ border-color:var(--turquoise); transform:translateY(-2px); }
.quoter-opts button.active{
  border-color:var(--turquoise);
  background: linear-gradient(120deg, rgba(64,224,208,.16), rgba(64,224,208,.04));
  box-shadow: 0 0 0 1px var(--turquoise), 0 8px 20px -12px rgba(64,224,208,.6);
  color:var(--turquoise-deep);
}
[data-theme="dark"] .quoter-opts button.active{ color:#DFFFF9; }
.quoter-result{
  position:relative; display:flex; flex-direction:column; justify-content:space-between;
  background: linear-gradient(160deg, #06231F, #041219);
  border:1px solid rgba(64,224,208,.3); border-radius:16px; padding:1.7rem;
  color:#EAF7F5; overflow:hidden;
}
.quoter-result::before{
  content:""; position:absolute; right:-70px; top:-70px; width:220px; height:220px; border-radius:50%;
  background: repeating-conic-gradient(from 0deg, rgba(64,224,208,.4) 0deg .5deg, transparent .5deg 6deg);
  -webkit-mask: radial-gradient(circle, transparent 0 44%, #000 45% 50%, transparent 51%);
          mask: radial-gradient(circle, transparent 0 44%, #000 45% 50%, transparent 51%);
  animation: rxSpin 40s linear infinite; opacity:.5;
}
.quoter-label{ font-family:var(--font-mono,monospace); font-size:.75rem; text-transform:uppercase; letter-spacing:.14em; color:var(--turquoise-soft); }
.quoter-amount{ font-family:var(--font-display); font-size:2.3rem; font-weight:800; margin:.4rem 0 .9rem; color:#fff; letter-spacing:-.01em; }
.quoter-amount span{ background:linear-gradient(120deg,var(--turquoise-soft),var(--turquoise)); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.quoter-bar{ height:6px; border-radius:99px; background:rgba(64,224,208,.15); overflow:hidden; }
.quoter-bar span{ display:block; height:100%; width:0; border-radius:99px; background:linear-gradient(90deg,var(--turquoise),var(--turquoise-soft)); transition:width .6s cubic-bezier(.2,.8,.2,1); }
.quoter-note{ font-size:.78rem; color:rgba(234,247,245,.55); margin-top:.9rem; line-height:1.5; }
.quoter-cta{ margin-top:1.4rem; text-align:center; justify-content:center; }
.quoter-cta.disabled{ opacity:.4; pointer-events:none; filter:grayscale(.4); }
@media (max-width:820px){ .quoter{ grid-template-columns:1fr; } }

/* ---------- Secuencia de boot ---------- */
.boot-loader{ display:flex; align-items:center; justify-content:center; background:#04090f; }
.boot-inner{ width:min(460px,86vw); }
.boot-logo{ font-family:var(--font-display); font-weight:800; font-size:1.7rem; letter-spacing:.06em; color:#EAF7F5; text-align:center; margin-bottom:1.3rem; }
.boot-logo b{ color:var(--turquoise); }
.boot-logo em{ display:block; font-style:normal; font-size:.42em; letter-spacing:.5em; color:var(--turquoise-soft); margin-top:.35em; }
.boot-log{ margin:0 0 1rem; font-family:var(--font-mono,monospace); font-size:.78rem; line-height:1.75; color:#8FCFC5; min-height:130px; white-space:pre-wrap; }
.boot-log .ok{ color:var(--turquoise); }
.boot-log .dim{ color:#4f6f69; }
.boot-bar{ height:4px; border-radius:99px; background:rgba(64,224,208,.15); overflow:hidden; }
.boot-bar span{ display:block; height:100%; width:0; background:linear-gradient(90deg,var(--turquoise),var(--turquoise-soft)); transition:width .3s linear; }

/* ---------- Retículo HUD que sigue el cursor ---------- */
.cursor-hud{ position:fixed; top:0; left:0; width:0; height:0; z-index:9998; pointer-events:none; opacity:0; transition:opacity .3s ease; }
.cursor-hud.on{ opacity:1; }
.ch-ring{ position:absolute; width:38px; height:38px; margin:-19px 0 0 -19px; border-radius:50%; border:1px solid rgba(64,224,208,.55); transition:transform .12s ease; }
.ch-ring::after{ content:""; position:absolute; inset:-6px; border-radius:50%; border:1px dashed rgba(64,224,208,.25); animation:rxSpin 12s linear infinite; }
.ch-dot{ position:absolute; width:4px; height:4px; margin:-2px 0 0 -2px; border-radius:50%; background:var(--turquoise); box-shadow:0 0 8px var(--turquoise); }
.ch-hline{ position:absolute; left:-100vw; width:200vw; height:1px; background:linear-gradient(90deg,transparent,rgba(64,224,208,.18),transparent); }
.ch-vline{ position:absolute; top:-100vh; height:200vh; width:1px; background:linear-gradient(180deg,transparent,rgba(64,224,208,.18),transparent); }
.cursor-hud.hot .ch-ring{ transform:scale(1.35); border-color:var(--turquoise); }
@media (hover:none), (max-width:880px){ .cursor-hud{ display:none; } }

/* ---------- Glitch de títulos al revelar ---------- */
.glitch-in{ position:relative; }
.glitch-in.glitching::before, .glitch-in.glitching::after{
  content:attr(data-text); position:absolute; left:0; top:0; width:100%; overflow:hidden;
}
.glitch-in.glitching::before{ color:var(--turquoise); clip-path:inset(0 0 55% 0); transform:translateX(-2px); opacity:.8; animation:glitchShift .3s steps(2) 3; }
.glitch-in.glitching::after{ color:#ff5f8f; clip-path:inset(55% 0 0 0); transform:translateX(2px); opacity:.7; animation:glitchShift .3s steps(2) 3 reverse; }
@keyframes glitchShift{ 0%{transform:translateX(-3px);} 50%{transform:translateX(3px);} 100%{transform:translateX(0);} }

@media (prefers-reduced-motion: reduce){
  .quoter-scan, .quoter-result::before, .ch-ring::after, .glitch-in.glitching::before, .glitch-in.glitching::after, .term-live .dot{ animation:none; }
}

/* ===== S.T.A.R.V.I.X. · HUD del asistente de voz ===== */
.starvix-hud{
  position:fixed; left:50%; bottom:26px; transform:translateX(-50%) translateY(20px);
  z-index:9999; display:flex; align-items:center; gap:.9rem;
  padding:.85rem 1.1rem; min-width:min(340px,90vw); max-width:92vw;
  border-radius:18px; background:color-mix(in srgb, var(--surface) 92%, #000 8%);
  border:1px solid color-mix(in srgb, var(--turquoise) 40%, var(--border));
  box-shadow:0 14px 40px rgba(0,0,0,.35), 0 0 0 4px color-mix(in srgb, var(--turquoise) 10%, transparent);
  opacity:0; pointer-events:none; transition:opacity .3s ease, transform .3s cubic-bezier(.2,.8,.2,1);
}
.starvix-hud.show{ opacity:1; pointer-events:auto; transform:translateX(-50%) translateY(0); }
.starvix-hud-orb{ position:relative; width:34px; height:34px; flex-shrink:0; }
.starvix-hud-orb span{
  position:absolute; inset:0; border-radius:50%;
  border:2px solid color-mix(in srgb, var(--turquoise) 70%, transparent);
  animation:starvixPing 1.8s ease-out infinite;
}
.starvix-hud-orb span:nth-child(2){ animation-delay:.6s; }
.starvix-hud-orb span:nth-child(3){ animation-delay:1.2s; }
.starvix-hud-orb::after{
  content:""; position:absolute; inset:9px; border-radius:50%;
  background:linear-gradient(120deg,var(--turquoise),var(--turquoise-deep));
}
body.starvix-await .starvix-hud-orb::after{ animation:starvixPulse2 .9s ease-in-out infinite; }
body.starvix-speaking .starvix-hud-orb::after{ animation:starvixPulse2 .5s ease-in-out infinite; }
@keyframes starvixPing{ 0%{transform:scale(.5);opacity:.9} 100%{transform:scale(1.25);opacity:0} }
@keyframes starvixPulse2{ 0%,100%{transform:scale(1)} 50%{transform:scale(1.25)} }
.starvix-hud-txt{ display:flex; flex-direction:column; gap:.15rem; line-height:1.2; overflow:hidden; }
.starvix-hud-state{ font-size:.92rem; font-weight:700; color:var(--text); }
.starvix-hud-heard{ font-size:.8rem; font-style:normal; color:var(--text-secondary); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.starvix-hud-close{
  margin-left:auto; flex-shrink:0; width:26px; height:26px; border-radius:50%;
  border:1px solid var(--border); background:transparent; color:var(--text-secondary);
  font-size:1.1rem; line-height:1; cursor:pointer; transition:.2s;
}
.starvix-hud-close:hover{ color:var(--text); border-color:var(--turquoise); }
.starvix-hud-input{
  flex:1 1 130px; min-width:110px; max-width:200px;
  padding:.45rem .7rem; border-radius:10px;
  border:1px solid var(--border); background:color-mix(in srgb, var(--surface) 70%, #000 10%);
  color:var(--text); font-size:.82rem; font-family:inherit; outline:none;
  transition:border-color .2s ease;
}
.starvix-hud-input:focus{ border-color:var(--turquoise); }
.starvix-hud-input::placeholder{ color:var(--text-secondary); opacity:.7; }
.starvix-hud-orb{ cursor:pointer; }
.starvix-beta{
  display:inline-flex; align-items:center; gap:.35em; align-self:flex-start;
  padding:.12rem .5rem; margin-bottom:.15rem; border-radius:999px;
  font-size:.62rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase;
  color:#0a2a26; background:linear-gradient(120deg,var(--turquoise),var(--turquoise-deep));
  border:1px solid color-mix(in srgb, var(--turquoise) 60%, transparent);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--turquoise) 12%, transparent);
  white-space:nowrap; cursor:help;
}

/* =========================================================
   PLANES / PRECIOS  (sección home #planes)
   ========================================================= */
.plans-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:1.8rem;
  align-items:stretch; margin-top:.5rem;
}
.plan-card{
  position:relative; display:flex; flex-direction:column;
  background:var(--surface); border:1px solid var(--border);
  border-radius:var(--radius-lg); padding:2.1rem 1.7rem 1.9rem;
  overflow:hidden; isolation:isolate;
  transition:transform .5s cubic-bezier(.2,.8,.2,1), box-shadow .5s ease, border-color .5s ease;
}
.plan-card::before{
  content:""; position:absolute; inset:0; z-index:-1; opacity:0;
  background:radial-gradient(120% 90% at 50% 0%, color-mix(in srgb, var(--turquoise) 16%, transparent), transparent 60%);
  transition:opacity .5s ease;
}
.plan-card:hover{
  transform:translateY(-10px);
  box-shadow:var(--shadow);
  border-color:color-mix(in srgb, var(--turquoise) 45%, transparent);
}
.plan-card:hover::before{ opacity:1; }
.plan-card.featured{
  border-color:color-mix(in srgb, var(--turquoise) 55%, transparent);
  box-shadow:0 24px 60px -28px color-mix(in srgb, var(--turquoise) 70%, transparent);
  background:linear-gradient(180deg, color-mix(in srgb, var(--turquoise) 8%, var(--surface)), var(--surface));
}
.plan-card.featured::after{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit;
  padding:1.5px; background:linear-gradient(135deg,var(--turquoise),transparent 40%,transparent 60%,var(--turquoise-deep));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude; opacity:.8;
  animation:planBorder 6s linear infinite;
}
@keyframes planBorder{ to{ filter:hue-rotate(20deg); } }
.plan-flag{
  position:absolute; top:0; right:0;
  font-family:var(--font-mono); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase;
  color:#06231F; background:linear-gradient(120deg,var(--turquoise),var(--turquoise-deep));
  padding:.42rem .9rem; border-bottom-left-radius:14px; font-weight:700;
  box-shadow:0 6px 16px -6px color-mix(in srgb, var(--turquoise) 80%, transparent);
}
.plan-head{ display:flex; flex-direction:column; gap:.3rem; margin-bottom:1rem; }
.plan-name{ font-family:var(--font-display); font-weight:700; font-size:1.28rem; color:var(--text); }
.plan-tag{
  font-family:var(--font-mono); font-size:.72rem; letter-spacing:.06em; text-transform:uppercase;
  color:var(--turquoise-deep);
}
.plan-price{
  display:flex; align-items:flex-start; gap:.15rem; line-height:1;
  margin-top:.2rem;
}
.plan-cur{ font-family:var(--font-display); font-weight:700; font-size:1.5rem; color:var(--text-secondary); margin-top:.35rem; }
.plan-amt{
  font-family:var(--font-display); font-weight:800; font-size:3.1rem;
  background:linear-gradient(120deg,var(--turquoise-deep),var(--turquoise));
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
}
.plan-per{ display:block; font-size:.82rem; color:var(--text-secondary); margin:.35rem 0 1.3rem; }
.plan-feats{ list-style:none; display:flex; flex-direction:column; gap:.72rem; margin-bottom:1.6rem; flex:1; }
.plan-feats li{ display:flex; align-items:flex-start; gap:.6rem; font-size:.94rem; color:var(--text-secondary); }
.plan-feats svg{
  width:17px; height:17px; flex-shrink:0; margin-top:.18rem;
  color:#06231F; background:var(--turquoise); border-radius:50%; padding:2.5px;
  box-shadow:0 0 0 3px color-mix(in srgb, var(--turquoise) 16%, transparent);
}
.plan-cta{ width:100%; justify-content:center; }
.plans-note{
  text-align:center; max-width:620px; margin:2.4rem auto 0;
  color:var(--text-secondary); font-size:.94rem;
  background:var(--surface-alt); border:1px solid var(--border);
  border-radius:var(--radius-md); padding:1rem 1.3rem;
}
@media (max-width:980px){ .plans-grid{ grid-template-columns:1fr; max-width:460px; margin-inline:auto; } }

/* =========================================================
   ANIMACIONES EXTRA
   ========================================================= */
/* Realce del cotizador cuando se navega hacia él */
@keyframes quoterFlash{
  0%{ box-shadow:0 0 0 0 color-mix(in srgb, var(--turquoise) 60%, transparent); }
  40%{ box-shadow:0 0 0 8px color-mix(in srgb, var(--turquoise) 22%, transparent); }
  100%{ box-shadow:0 0 0 0 color-mix(in srgb, var(--turquoise) 0%, transparent); }
}
#cotizador.flash .quoter{
  animation:quoterFlash 1.4s ease-out 2;
  border-radius:var(--radius-lg);
}

/* Aparición lateral alternada para tarjetas reveal */
.reveal-left{ opacity:0; transform:translateX(-40px); filter:blur(4px);
  transition:opacity .7s ease, transform .7s cubic-bezier(.2,.8,.2,1), filter .7s ease; }
.reveal-left.in{ opacity:1; transform:none; filter:blur(0); }
.reveal-right{ opacity:0; transform:translateX(40px); filter:blur(4px);
  transition:opacity .7s ease, transform .7s cubic-bezier(.2,.8,.2,1), filter .7s ease; }
.reveal-right.in{ opacity:1; transform:none; filter:blur(0); }

/* Brillo que recorre botones primarios al hacer hover */
.btn-primary{ position:relative; overflow:hidden; }
.btn-primary::before{
  content:""; position:absolute; top:0; left:-120%; width:60%; height:100%;
  background:linear-gradient(120deg, transparent, rgba(255,255,255,.45), transparent);
  transform:skewX(-20deg); transition:none;
}
.btn-primary:hover::before{ animation:btnSheen .8s ease; }
@keyframes btnSheen{ to{ left:130%; } }

/* Flotación suave para tarjetas en vivo destacadas de la home */
@keyframes floatSoft{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-6px); } }

/* Latido del badge "En vivo" */
.live-badge .dot{ animation:livePulse 1.6s ease-in-out infinite; }
@keyframes livePulse{
  0%,100%{ box-shadow:0 0 0 0 color-mix(in srgb, var(--turquoise) 70%, transparent); }
  50%{ box-shadow:0 0 0 6px color-mix(in srgb, var(--turquoise) 0%, transparent); }
}

/* Aparición escalonada de features al revelar tarjeta de plan */
.plan-card.in .plan-feats li{ animation:featIn .5s both; }
.plan-card.in .plan-feats li:nth-child(1){ animation-delay:.05s; }
.plan-card.in .plan-feats li:nth-child(2){ animation-delay:.12s; }
.plan-card.in .plan-feats li:nth-child(3){ animation-delay:.19s; }
.plan-card.in .plan-feats li:nth-child(4){ animation-delay:.26s; }
.plan-card.in .plan-feats li:nth-child(5){ animation-delay:.33s; }
@keyframes featIn{ from{ opacity:0; transform:translateX(-10px); } to{ opacity:1; transform:none; } }

@media (prefers-reduced-motion: reduce){
  .plan-card.featured::after,
  .live-badge .dot,
  .plan-card.in .plan-feats li{ animation:none !important; }
  #cotizador.flash .quoter{ animation:none; }
}

/* =========================================================
   MEJORAS SENIOR — enhance.js styling
   ========================================================= */

/* ---- Skip link accesible ---- */
.skip-link{
  position:fixed; top:-100px; left:12px; z-index:100000;
  background:var(--turquoise); color:#06231F; font-weight:700;
  padding:.7rem 1.1rem; border-radius:10px; text-decoration:none;
  font-family:var(--font-body); box-shadow:0 10px 30px -8px rgba(0,0,0,.5);
  transition:top .25s ease;
}
.skip-link:focus{ top:12px; outline:2px solid #06231F; }

/* ---- Foco visible global (accesibilidad) ---- */
:focus-visible{
  outline:2px solid var(--turquoise);
  outline-offset:3px;
  border-radius:6px;
}

/* ---- Toasts ---- */
.toast-host{
  position:fixed; bottom:calc(1.2rem + env(safe-area-inset-bottom)); left:50%; transform:translateX(-50%);
  z-index:99990; display:flex; flex-direction:column; gap:.6rem; align-items:center;
  width:min(94vw,420px); pointer-events:none;
}
.toast{
  pointer-events:auto; width:100%;
  display:flex; align-items:center; gap:.7rem;
  background:color-mix(in srgb, var(--surface) 92%, transparent);
  border:1px solid var(--border); border-left:3px solid var(--turquoise);
  border-radius:14px; padding:.8rem .9rem;
  box-shadow:0 20px 50px -18px rgba(0,0,0,.5);
  backdrop-filter:blur(10px);
  transform:translateY(18px) scale(.96); opacity:0;
  transition:transform .35s cubic-bezier(.2,.9,.2,1), opacity .35s ease;
  color:var(--text);
}
.toast.in{ transform:none; opacity:1; }
.toast.out{ transform:translateY(10px) scale(.98); opacity:0; }
.toast--success{ border-left-color:#2ee6a6; }
.toast--warn{ border-left-color:#ffcf5e; }
.toast--info{ border-left-color:var(--turquoise); }
.toast__icon{
  flex-shrink:0; width:26px; height:26px; border-radius:50%;
  display:grid; place-items:center; font-size:.85rem; font-weight:800;
  color:#06231F; background:var(--turquoise);
}
.toast--success .toast__icon{ background:#2ee6a6; }
.toast--warn .toast__icon{ background:#ffcf5e; }
.toast__msg{ flex:1; font-size:.9rem; line-height:1.4; font-family:var(--font-body); }
.toast__action{
  flex-shrink:0; cursor:pointer; border:none; font-family:var(--font-body); font-weight:700; font-size:.82rem;
  color:#06231F; background:var(--turquoise); padding:.4rem .8rem; border-radius:8px;
}
.toast__close{
  flex-shrink:0; cursor:pointer; border:none; background:transparent; color:var(--text-secondary);
  font-size:.9rem; line-height:1; padding:.2rem; border-radius:6px;
}
.toast__close:hover{ color:var(--text); }

/* ---- Botón instalar PWA ---- */
.install-btn{
  position:fixed; left:1.2rem; bottom:calc(1.4rem + env(safe-area-inset-bottom)); z-index:9997;
  display:inline-flex; align-items:center; gap:.5rem; cursor:pointer;
  font-family:var(--font-body); font-weight:700; font-size:.86rem;
  color:#06231F; background:linear-gradient(120deg,var(--turquoise),var(--turquoise-deep));
  border:none; padding:.72rem 1.05rem; border-radius:999px;
  box-shadow:0 16px 34px -12px rgba(64,224,208,.65);
  transform:translateY(24px) scale(.9); opacity:0; pointer-events:none;
  transition:transform .45s cubic-bezier(.2,.9,.2,1), opacity .4s ease, box-shadow .3s ease;
}
.install-btn.show{ transform:none; opacity:1; pointer-events:auto; }
.install-btn:hover{ transform:translateY(-3px); box-shadow:0 22px 44px -12px rgba(64,224,208,.75); }
.install-btn svg{ width:17px; height:17px; }
@media (max-width:560px){ .install-btn span{ display:none; } .install-btn{ padding:.72rem; } }

/* ---- Tilt 3D + spotlight ---- */
.tilt{
  transform-style:preserve-3d; will-change:transform;
  transition:transform .35s cubic-bezier(.2,.8,.2,1), box-shadow .35s ease, border-color .35s ease;
}
.tilt::after{
  content:""; position:absolute; inset:0; z-index:2; border-radius:inherit; pointer-events:none;
  opacity:0; transition:opacity .35s ease;
  background:radial-gradient(220px circle at var(--mx,50%) var(--my,50%),
            color-mix(in srgb, var(--turquoise) 22%, transparent), transparent 60%);
}
.tilt:hover::after{ opacity:1; }
/* asegura contexto de posición para el spotlight */
.service-card, .plan-card, .live-card, .work-card{ position:relative; }

/* ---- Botones magnéticos ---- */
.btn-primary, .plan-cta, .cta-band .btn{
  transform:translate(var(--tx,0), var(--ty,0));
  transition:transform .18s ease, box-shadow .3s ease, background .3s ease;
}
.btn-primary:hover, .plan-cta:hover{
  transform:translate(var(--tx,0), calc(var(--ty,0) - 3px));
}

/* ---- Nav scroll-spy ---- */
.nav-links a.spy-active{ color:var(--turquoise-deep); }
[data-theme="dark"] .nav-links a.spy-active{ color:var(--turquoise); }
.nav-links a.spy-active::after{ width:100% !important; }

/* ---- Códigos copiables (demo creds) ---- */
.copyable{ cursor:pointer; position:relative; transition:transform .15s ease, background .2s ease; }
.copyable:hover{ transform:translateY(-1px); }
.copyable.copied{ background:var(--turquoise) !important; color:#06231F !important; }

/* ---- Command palette (⌘K) ---- */
.cmdk{
  position:fixed; inset:0; z-index:99995; display:grid; place-items:start center;
  padding-top:14vh; background:rgba(4,10,18,.55); backdrop-filter:blur(6px);
  opacity:0; pointer-events:none; visibility:hidden;
  transition:opacity .2s ease, visibility .2s ease;
}
.cmdk[hidden]{ display:none !important; }
.cmdk.show{ opacity:1; pointer-events:auto; visibility:visible; }
.cmdk__panel{
  width:min(92vw,560px);
  background:color-mix(in srgb, var(--surface) 95%, transparent);
  border:1px solid var(--border); border-radius:18px; overflow:hidden;
  box-shadow:0 40px 100px -30px rgba(0,0,0,.7);
  transform:translateY(-14px) scale(.98); transition:transform .25s cubic-bezier(.2,.9,.2,1);
}
.cmdk.show .cmdk__panel{ transform:none; }
.cmdk__search{ display:flex; align-items:center; gap:.6rem; padding:.95rem 1.1rem; border-bottom:1px solid var(--border); }
.cmdk__prompt{ font-family:var(--font-mono); color:var(--turquoise-deep); font-weight:700; }
.cmdk__input{
  flex:1; border:none; background:transparent; color:var(--text);
  font-family:var(--font-body); font-size:1rem; outline:none;
}
.cmdk__esc{
  font-family:var(--font-mono); font-size:.7rem; color:var(--text-secondary);
  border:1px solid var(--border); border-radius:6px; padding:.15rem .4rem;
}
.cmdk__list{ list-style:none; max-height:52vh; overflow:auto; padding:.4rem; }
.cmdk__item{
  display:flex; align-items:center; gap:.75rem; padding:.7rem .8rem; border-radius:10px;
  cursor:pointer; color:var(--text); font-size:.95rem;
}
.cmdk__item.is-active{ background:color-mix(in srgb, var(--turquoise) 14%, transparent); }
.cmdk__ic{
  width:26px; height:26px; flex-shrink:0; display:grid; place-items:center;
  font-family:var(--font-mono); border-radius:8px; font-size:.8rem;
  color:var(--turquoise-deep); background:var(--surface-alt); border:1px solid var(--border);
}
.cmdk-hint{
  position:fixed; right:1.3rem; top:auto; bottom:auto; z-index:60;
  display:none; align-items:center; gap:.4rem; cursor:pointer;
}
@media (hover:hover) and (min-width:1024px){
  .cmdk-hint{
    display:inline-flex; position:fixed; right:1.5rem; bottom:1.5rem;
    background:color-mix(in srgb, var(--surface) 90%, transparent);
    border:1px solid var(--border); border-radius:999px; padding:.5rem .8rem;
    color:var(--text-secondary); box-shadow:var(--shadow); backdrop-filter:blur(8px);
    transition:color .2s ease, transform .2s ease, border-color .2s ease;
  }
  .cmdk-hint:hover{ color:var(--turquoise-deep); transform:translateY(-2px); border-color:color-mix(in srgb, var(--turquoise) 40%, transparent); }
  .cmdk-hint svg{ width:15px; height:15px; }
  .cmdk-hint kbd{ font-family:var(--font-mono); font-size:.72rem; }
}
/* No solapar con los FAB de WhatsApp (que están abajo-derecha) */
@media (hover:hover) and (min-width:1024px){
  .cmdk-hint{ bottom:auto; top:calc(100vh - 6.2rem); right:6.6rem; }
}

@media (prefers-reduced-motion: reduce){
  .tilt{ transform:none !important; }
  .toast, .install-btn, .cmdk, .cmdk__panel{ transition:opacity .2s ease; }
}

/* =========================================================
   CAPA FINAL — feedback, profundidad y movimiento responsable
   ========================================================= */
.form-privacy{
  display:flex; align-items:flex-start; gap:.45rem; margin:.85rem 0 0;
  color:var(--text-secondary); font-size:.8rem; line-height:1.55;
}
.form-success a{ color:inherit; text-decoration:underline; text-underline-offset:3px; }
.btn:disabled{ cursor:wait; opacity:.75; filter:saturate(.7); }
.btn.is-sending::after{
  content:""; width:15px; height:15px; margin-left:.55rem; border-radius:50%;
  border:2px solid currentColor; border-right-color:transparent;
  display:inline-block; vertical-align:-2px; animation:stackupSpin .65s linear infinite;
}
@keyframes stackupSpin{ to{ transform:rotate(360deg); } }

@media (prefers-reduced-motion:reduce){
  *, *::before, *::after{
    scroll-behavior:auto !important;
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
}

/* =========================================================
   PRODUCCIÓN — rendimiento adaptativo y accesibilidad móvil
   ========================================================= */
.nav-backdrop{
  display:none; position:fixed; inset:0; z-index:190; border:0; padding:0;
  background:rgba(3,10,16,.62); backdrop-filter:blur(3px); opacity:0;
  transition:opacity .25s ease;
}
.nav-backdrop.show{ display:block; opacity:1; }
body.menu-open{ overflow:hidden; }
@media (max-width:880px){ .nav-links{ z-index:191; visibility:hidden; } .nav-links.open{ visibility:visible; } }

.performance-toggle{ border-top:1px solid var(--border) !important; margin-top:.2rem; }
.performance-toggle .perf-state{
  margin-left:auto; font-family:var(--font-mono); font-size:.66rem;
  color:var(--turquoise-deep); border:1px solid var(--border); border-radius:999px; padding:.1rem .4rem;
}
.performance-lite .hud-scanline,
.performance-lite .hud-grid,
.performance-lite .tech-reactor,
.performance-lite .hero-hud,
.performance-lite .hero-tech,
.performance-lite .cursor-hud,
.performance-lite .sec-hud,
.performance-lite .ticker-track{ animation:none !important; }
.performance-lite .hero-bg{ animation:none !important; }
.performance-lite .tilt{ transform:none !important; }
.performance-lite .hud-bg{ opacity:.55; }
.performance-lite *{ scroll-behavior:auto; }

@view-transition{ navigation:auto; }
::view-transition-old(root){ animation:stackFadeOut .16s ease both; }
::view-transition-new(root){ animation:stackFadeIn .24s ease both; }
@keyframes stackFadeOut{ to{ opacity:0; transform:translateY(-4px); } }
@keyframes stackFadeIn{ from{ opacity:0; transform:translateY(6px); } }

.trust-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; margin-top:2.2rem; }
.trust-card{
  position:relative; padding:1.5rem; border:1px solid var(--border); border-radius:var(--radius-md);
  background:linear-gradient(145deg,var(--surface),var(--surface-alt)); overflow:hidden;
}
.trust-card::before{ content:""; position:absolute; inset:0 auto 0 0; width:3px; background:var(--turquoise); }
.trust-card .trust-num{ display:block; font:700 .75rem var(--font-mono); color:var(--turquoise-deep); margin-bottom:.8rem; }
.trust-card h3{ margin-bottom:.55rem; }
.trust-card p{ color:var(--text-secondary); font-size:.9rem; }
.delivery-strip{
  display:grid; grid-template-columns:repeat(4,1fr); gap:1px; margin-top:2rem;
  background:var(--border); border:1px solid var(--border); border-radius:var(--radius-md); overflow:hidden;
}
.delivery-strip div{ padding:1.1rem; background:var(--surface); }
.delivery-strip strong{ display:block; color:var(--turquoise-deep); font-size:.86rem; margin-bottom:.25rem; }
.delivery-strip span{ color:var(--text-secondary); font-size:.78rem; }
.legal-links{ display:flex; flex-wrap:wrap; gap:.8rem 1.2rem; margin-top:1rem; font-size:.78rem; }
.legal-links a{ color:var(--text-secondary); text-decoration:underline; text-underline-offset:3px; }
.legal-content{ max-width:820px; margin-inline:auto; }
.legal-content article{ padding:1.5rem 0; border-bottom:1px solid var(--border); }
.legal-content h2{ margin-bottom:.7rem; font-size:clamp(1.35rem,3vw,2rem); }
.legal-content h3{ margin:1.1rem 0 .4rem; }
.legal-content p,.legal-content li{ color:var(--text-secondary); line-height:1.8; }
.legal-content ul{ padding-left:1.2rem; }
.quote-print{ width:100%; margin-top:.7rem; justify-content:center; font-size:.82rem; }
.sr-only{ position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
@media(max-width:820px){ .trust-grid{ grid-template-columns:1fr; } .delivery-strip{ grid-template-columns:1fr 1fr; } }
@media(max-width:480px){ .delivery-strip{ grid-template-columns:1fr; } }

/* Búsqueda de contenido y utilidades progresivas */
.content-search{
  width:min(100%,680px); margin:1rem auto 2rem; display:flex; align-items:center; gap:.7rem;
  padding:.8rem 1rem; background:var(--surface); border:1px solid var(--border);
  border-radius:999px; box-shadow:0 12px 30px -24px rgba(0,0,0,.45);
  transition:border-color .2s ease,box-shadow .2s ease;
}
.content-search:focus-within{ border-color:var(--turquoise); box-shadow:0 0 0 4px color-mix(in srgb,var(--turquoise) 14%,transparent); }
.content-search svg{ width:19px; height:19px; flex:none; fill:none; stroke:var(--turquoise-deep); stroke-width:2; }
.content-search input{ flex:1; min-width:0; border:0; outline:0; background:transparent; color:var(--text); font-size:.92rem; }
.content-search .search-count{ flex:none; color:var(--text-secondary); font:500 .7rem var(--font-mono); }
.faq-search{ margin-top:1.2rem; }
.availability{
  display:flex; align-items:center; gap:.75rem; margin:-.4rem 0 1.4rem; padding:.8rem 1rem;
  border:1px solid var(--border); border-radius:12px; background:var(--surface-alt);
}
.availability-dot{ width:10px; height:10px; border-radius:50%; flex:none; }
.availability.is-online .availability-dot{ background:#22c55e; box-shadow:0 0 0 5px color-mix(in srgb,#22c55e 15%,transparent); animation:livePulse 1.8s infinite; }
.availability.is-away .availability-dot{ background:#f59e0b; }
.availability strong,.availability small{ display:block; }
.availability strong{ font-size:.86rem; }
.availability small{ color:var(--text-secondary); font-size:.72rem; margin-top:.1rem; }
.share-site{ color:var(--text-secondary); font-size:.78rem; padding:.35rem .6rem; border:1px solid var(--border); border-radius:999px; }
.share-site:hover{ color:var(--turquoise-deep); border-color:var(--turquoise); }
@media(max-width:480px){ .content-search .search-count{ display:none; } }

/* Estados finales de resiliencia */
.noscript-banner{
  position:relative; z-index:100001; padding:.75rem 1rem; text-align:center;
  background:#fff3cd; color:#4d3b00; border-bottom:1px solid #e6ca6a; font:600 .85rem system-ui,sans-serif;
}
.error-page{ min-height:100svh; display:grid; place-items:center; padding:2rem; text-align:center; }
.error-code{
  display:block; font:800 clamp(5rem,22vw,12rem)/.9 var(--font-display);
  color:transparent; -webkit-text-stroke:2px var(--turquoise); opacity:.8;
}
.error-page h1{ margin:1rem 0 .8rem; }
.error-page p{ max-width:560px; margin:0 auto 1.5rem; color:var(--text-secondary); }
.error-actions{ display:flex; flex-wrap:wrap; justify-content:center; gap:.8rem; }
