/* VALNET Neural System · continuidad visual del Hero en todo el sitio. */
:root {
  /* Jerarquía VALNET · azul noche de base, violeta como luz dominante, aqua como acento escaso.
     La saturación del violeta se mantiene contenida: debe leerse como iluminación, no como mancha. */
  --ns-cyan: #62f2df;          /* acento funcional: CTA, iconos, nodos, enlaces */
  --ns-blue: #6488ff;
  --ns-violet: #8163f5;        /* luz ambiental dominante */
  --ns-purple: #a76bf0;
  --ns-lavender: #b4a7e6;      /* texto secundario con carácter, sin gritar */
  --ns-ink: #06101c;
  --ns-glass: rgba(15, 29, 48, .74);
  --ns-glass-strong: rgba(12, 24, 43, .91);
  --ns-edge: rgba(134, 162, 222, .2);
  --ns-shadow: 0 28px 90px rgba(0, 0, 0, .28);
}

body.neural-site {
  position: relative;
  background:
    radial-gradient(ellipse 48% 28% at 94% 18%, rgba(116, 62, 245, .17), transparent 72%),
    radial-gradient(ellipse 44% 26% at 6% 58%, rgba(99, 64, 224, .10), transparent 73%),
    radial-gradient(ellipse 34% 18% at 12% 92%, rgba(31, 185, 184, .035), transparent 74%),
    linear-gradient(180deg, #07121f 0%, #0a1326 45%, #080e1e 100%);
  background-attachment: fixed;
}

body.neural-site main { position: relative; isolation: isolate; }
body.neural-site main > section:not(.neural-hero) { position: relative; isolation: isolate; }
body.neural-site main > section:not(.neural-hero)::before {
  content: '';
  position: absolute;
  z-index: -1;
  width: min(780px, 70vw);
  aspect-ratio: 1;
  border-radius: 50%;
  pointer-events: none;
  background: radial-gradient(circle, rgba(118, 62, 248, .135), transparent 68%);
  filter: blur(4px);
}
body.neural-site main > section:nth-of-type(3n+1):not(.neural-hero)::before { top: -38%; right: -24%; }
body.neural-site main > section:nth-of-type(3n+2):not(.neural-hero)::before { bottom: -42%; left: -27%; background: radial-gradient(circle, rgba(126, 82, 240, .10), transparent 69%); }
body.neural-site main > section:nth-of-type(3n):not(.neural-hero)::before { display: none; }

body.neural-site :is(.section, .problem-band, .case-section, #acompanamiento, .blog-home) {
  border-color: rgba(130, 158, 206, .11);
}
body.neural-site .section-head h2,
body.neural-site .case-copy h2,
body.neural-site .support h2,
body.neural-site .blog-home h2,
body.neural-site .contact-copy h2 {
  letter-spacing: -.045em;
  text-wrap: balance;
}
body.neural-site .eyebrow,
body.neural-site .label { color: var(--ns-lavender); }

/* Superficies: misma profundidad óptica que Neural Core, sin añadir WebGL. */
body.neural-site :is(.solution, .engagement-card, .process-step, .blog-home-card, .faq-list details, .contact-form, .case-device) {
  border-color: var(--ns-edge);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .035), transparent 34%),
    linear-gradient(150deg, rgba(17, 34, 54, .92), rgba(8, 18, 34, .93));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .045), 0 18px 55px rgba(0, 0, 0, .13);
}
body.neural-site :is(.solution, .engagement-card, .process-step, .blog-home-card, .faq-list details) {
  transition: transform .34s cubic-bezier(.2,.75,.25,1), border-color .34s, box-shadow .34s;
}
@media (hover:hover) and (pointer:fine) {
  body.neural-site :is(.solution, .engagement-card, .process-step, .blog-home-card, .faq-list details):hover {
    transform: translateY(-7px);
    border-color: rgba(150, 116, 250, .42);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.07), 0 28px 80px rgba(0,0,0,.25), 0 0 58px rgba(124,72,250,.16);
  }
}
body.neural-site .solution-icon {
  color: var(--ns-cyan);
  background: linear-gradient(145deg, rgba(126,86,246,.18), rgba(88,64,200,.1));
  border: 1px solid rgba(139,104,248,.24);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 10px 30px rgba(104,62,236,.12);
}
body.neural-site .solution-number { color: #6f86a2; }
body.neural-site .process-step::before {
  color: #c3b4f4;
  border-color: rgba(143,107,247,.34);
  background: rgba(46, 36, 86, .3);
  box-shadow: 0 0 26px rgba(124,78,244,.12);
}
body.neural-site .process-delivery { color: var(--ns-lavender); }

/* Secciones destacadas: violeta solo como luz ambiental secundaria. */
body.neural-site .case-section,
body.neural-site #modalidades,
body.neural-site .blog-home {
  overflow: hidden;
  background:
    radial-gradient(ellipse 46% 74% at 96% 48%, rgba(114, 60, 246, .15), transparent 72%),
    linear-gradient(180deg, rgba(8,17,33,.68), rgba(8,15,31,.82));
}
body.neural-site .case-device {
  position: relative;
  overflow: hidden;
  box-shadow: var(--ns-shadow), inset 0 1px 0 rgba(255,255,255,.065), 0 0 95px rgba(104,72,246,.15);
}
body.neural-site .case-device::after,
body.neural-site .support::after,
body.neural-site .contact-form::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  background: linear-gradient(118deg, rgba(255,255,255,.06), transparent 24%, transparent 78%, rgba(137,92,250,.12));
}
body.neural-site .support {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(133,162,220,.18);
  background:
    radial-gradient(circle at 84% 36%, rgba(126,68,246,.26), transparent 36%),
    radial-gradient(circle at 12% 72%, rgba(69,222,205,.05), transparent 34%),
    linear-gradient(135deg, #0a1426, #0d0e33) !important;
  box-shadow: var(--ns-shadow), inset 0 1px 0 rgba(255,255,255,.055);
}
body.neural-site .support > * { position: relative; z-index: 1; }

/* CTA y botones con reflejo controlado. */
body.neural-site :is(.btn-primary, .btn:not(.btn-secondary):not(.btn-ghost)) {
  position: relative;
  overflow: hidden;
  border-color: transparent;
  background: linear-gradient(100deg, #6ff3e2 0%, #60c9ff 54%, #8f7cf7 100%);
  box-shadow: 0 14px 38px rgba(42,220,202,.12), 0 6px 26px rgba(118,78,244,.16), inset 0 1px 0 rgba(255,255,255,.52);
}
body.neural-site :is(.btn-primary, .btn:not(.btn-secondary):not(.btn-ghost))::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  transform: translateX(-115%);
  background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,.46) 50%, transparent 70%);
  transition: transform .62s ease;
}
@media (hover:hover) and (pointer:fine) {
  body.neural-site :is(.btn-primary, .btn:not(.btn-secondary):not(.btn-ghost)):hover::after { transform: translateX(115%); }
}
body.neural-site :is(.btn-secondary, .btn-ghost) {
  border-color: rgba(132,160,207,.24);
  background: rgba(12,28,45,.52);
  backdrop-filter: blur(14px);
}
body.neural-site .text-link { color: #a6f5e9; }

/* Blog editorial 3D. */
body.neural-site .blog-home-card,
body.neural-content-site .card { overflow: hidden; }
body.neural-site .blog-home-card .img,
body.neural-content-site .card-img,
body.neural-content-site .hero-img {
  position: relative;
  overflow: hidden;
  background: #07111e;
}
body.neural-site .blog-home-card .img::after,
body.neural-content-site .card-img::after,
body.neural-content-site .hero-img::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(145deg, rgba(255,255,255,.085), transparent 26%, transparent 62%, rgba(112,64,248,.2));
  box-shadow: inset 0 -46px 72px rgba(3,8,18,.22);
}
/* Portadas del blog: las ilustraciones existentes son muy aqua. Un giro de tono corto las acerca
   al azul-violeta de la web sin repintarlas. El arreglo definitivo es regenerarlas desde el panel. */
body.neural-site .blog-home-card img,
body.neural-content-site :is(.card-img img, .hero-img img) {
  filter: hue-rotate(26deg) saturate(.94);
  transition: transform .7s cubic-bezier(.2,.75,.25,1), filter .7s;
}
/* Categoría del artículo: mismo tratamiento que los demás antetítulos. */
body.neural-site .blog-home-card .body > small,
body.neural-content-site .card .body > small { color: var(--ns-lavender); }
@media (hover:hover) and (pointer:fine) {
  body.neural-site .blog-home-card:hover img,
  body.neural-content-site .card:hover .card-img img { transform: scale(1.035); filter: hue-rotate(26deg) saturate(1) contrast(1.03); }
}

/* Logotipo con volumen óptico; conserva exactamente la caja y medidas existentes. */
body.neural-site .brand,
body.neural-content-site .top .wrap > a:first-child,
body.neural-policy header > a:first-child {
  position: relative;
  isolation: isolate;
  perspective: 500px;
}
body.neural-site .brand::before,
body.neural-content-site .top .wrap > a:first-child::before,
body.neural-policy header > a:first-child::before {
  content: '';
  position: absolute;
  z-index: -1;
  inset: 21% 2%;
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(93,241,220,.19), rgba(124,80,250,.15) 44%, transparent 73%);
  filter: blur(12px);
  opacity: .62;
  pointer-events: none;
}
body.neural-site .brand-logo,
body.neural-content-site .top img,
body.neural-policy header img {
  filter: drop-shadow(0 9px 13px rgba(0,0,0,.2)) drop-shadow(0 0 13px rgba(85,235,217,.08)) drop-shadow(0 4px 18px rgba(127,84,248,.12));
  transform-origin: center;
  transition: filter .35s;
}
@media (hover:hover) and (pointer:fine) {
  body.neural-site .brand:hover .brand-logo,
  body.neural-content-site .top .wrap > a:first-child:hover img,
  body.neural-policy header > a:first-child:hover img {
    filter: drop-shadow(0 12px 16px rgba(0,0,0,.24)) drop-shadow(0 0 17px rgba(94,241,221,.15)) drop-shadow(0 5px 22px rgba(132,90,250,.2));
  }
}

/* Páginas internas generadas en servidor. */
body.neural-content-site {
  --bg: #07131f;
  --surface: #0e2031;
  --surface-2: #14293b;
  --text: #eff6ff;
  --muted: #a7b8ca;
  --line: rgba(132,160,207,.2);
  --accent: #68eddb;
  --accent-soft: rgba(66,222,204,.12);
  color-scheme: dark;
}
body.neural-content-site .top {
  border-bottom-color: rgba(132,160,207,.15);
  background: rgba(6,16,28,.78);
  box-shadow: 0 12px 40px rgba(0,0,0,.12);
}
body.neural-content-site main > .wrap,
body.neural-content-site article.wrap { padding-top: 24px; padding-bottom: 38px; }
body.neural-content-site .card,
body.neural-content-site :is(.panel, .channel, .step, .tile, .toc) {
  border-color: rgba(132,160,207,.2);
  background: linear-gradient(145deg, rgba(255,255,255,.035), transparent 34%), linear-gradient(150deg, rgba(17,34,54,.94), rgba(8,18,34,.94));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.045), 0 18px 55px rgba(0,0,0,.14);
}
body.neural-content-site .card {
  transition: transform .34s cubic-bezier(.2,.75,.25,1), border-color .34s, box-shadow .34s;
}
@media (hover:hover) and (pointer:fine) {
  body.neural-content-site .card:hover { transform: translateY(-7px); border-color: rgba(150,116,250,.42); box-shadow: 0 28px 80px rgba(0,0,0,.25), 0 0 58px rgba(124,72,250,.16); }
}
body.neural-content-site .featured { box-shadow: 0 32px 95px rgba(0,0,0,.26), 0 0 82px rgba(116,66,248,.16); }
body.neural-content-site :is(.hero-img, .featured, .band, .cta) { border: 1px solid rgba(136,161,220,.18); }
body.neural-content-site :is(.band, .cta) {
  background: radial-gradient(circle at 88% 25%, rgba(125,66,246,.28), transparent 38%), linear-gradient(135deg,#0a1426,#0d0e33);
  box-shadow: var(--ns-shadow), inset 0 1px 0 rgba(255,255,255,.06);
}
body.neural-content-site .foot { background: rgba(4,12,22,.72); }

/* Página de privacidad, que no usa la plantilla pública del blog. */
body.neural-policy {
  background: radial-gradient(ellipse 60% 32% at 95% 7%, rgba(117,63,248,.19), transparent 72%), linear-gradient(180deg,#07121f,#090f22);
}
body.neural-policy .card {
  border-color: rgba(132,160,207,.2);
  background: linear-gradient(145deg, rgba(255,255,255,.035), transparent 34%), rgba(14,32,49,.9);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05), 0 20px 60px rgba(0,0,0,.18);
}

/* Tema claro: conserva legibilidad y la identidad, sin convertir la web en violeta. */
:root[data-theme='light'] body.neural-site,
:root[data-theme='light'] body.neural-content-site,
:root[data-theme='light'] body.neural-policy {
  --ns-edge: rgba(56,83,121,.16);
  background: radial-gradient(ellipse 45% 25% at 98% 19%, rgba(126,76,255,.1), transparent 72%), linear-gradient(180deg,#f6f7fb,#eff2f8);
}
:root[data-theme='light'] body.neural-site :is(.solution, .engagement-card, .process-step, .blog-home-card, .faq-list details, .contact-form, .case-device),
:root[data-theme='light'] body.neural-content-site :is(.card, .panel, .channel, .step, .tile, .toc) {
  color: #10232e;
  background: linear-gradient(145deg,rgba(255,255,255,.94),rgba(239,246,249,.96));
  box-shadow: inset 0 1px 0 #fff, 0 20px 60px rgba(31,54,76,.08);
}
:root[data-theme='light'] body.neural-content-site {
  --bg:#f5f8fa; --surface:#fff; --surface-2:#eaf0f4; --text:#10232e; --muted:#506572; --line:#d5dfe3; --accent:#08796d; --accent-soft:#def6f0; color-scheme:light;
}
:root[data-theme='light'] body.neural-content-site .top { background: rgba(247,250,252,.82); }
:root[data-theme='light'] body.neural-site :is(.case-section, #modalidades, .blog-home) { background: radial-gradient(ellipse 46% 74% at 96% 48%,rgba(116,57,255,.06),transparent 72%), linear-gradient(180deg,rgba(246,250,252,.88),rgba(239,245,248,.94)); }

@media (max-width: 700px) {
  body.neural-site { background-attachment: scroll; }
  body.neural-site main > section:not(.neural-hero)::before { width: 110vw; opacity: .6; filter: none; }
  body.neural-site :is(.solution, .engagement-card, .process-step, .blog-home-card, .faq-list details) { box-shadow: inset 0 1px 0 rgba(255,255,255,.04), 0 12px 32px rgba(0,0,0,.1); }
  body.neural-content-site main > .wrap,
  body.neural-content-site article.wrap { padding-top: 12px; }
  body.neural-content-site .top .wrap { min-height: 62px; }
  body.neural-content-site .top img { width: 126px; }
}

@media (prefers-reduced-motion: reduce) {
  body.neural-site *, body.neural-content-site *, body.neural-policy * { scroll-behavior: auto !important; }
}

/* Pie: datos del negocio y enlaces legales en todas las páginas. */
.footer-biz { display: inline-block; margin-top: 4px; font-size: .82rem; color: #93aab9; }
.footer-biz a { color: inherit; }
body.neural-content-site .foot .wrap { row-gap: 8px; }
body.neural-content-site .foot-legal, body.neural-content-site .foot-biz { font-size: 13px; }
body.neural-content-site .foot-biz { flex-basis: 100%; color: #93aab9; }
/* Aviso de marcas de terceros junto a la lista de tecnologías. */
.tools-note { margin: 12px 0 0; font-size: .78rem; line-height: 1.5; color: #93aab9; }
/* Contraste AA: dos textos pequeños quedaban por debajo de 4.5:1. */
body.neural-site .solution-number { color: #8298b2; }
body.neural-site :is(input, textarea)::placeholder, body.neural-content-site :is(input, textarea)::placeholder { color: #8c9daf; opacity: 1; }
