/* ==========================================================================
   Networks Solutions Perú EIRL
   Tema PREMIUM CLARO (fondo blanco) sobre Bootstrap 5
   Colores del logo: navy · azul royal · azul cielo · plata. Azul = acento.
   ========================================================================== */

:root{
  --ns-bg:#ffffff;
  --ns-bg-alt:#f5f8fd;          /* gris muy claro para alternar secciones */
  --ns-surface:#ffffff;
  --ns-surface-2:#f7f9fe;
  --ns-border:#e6ebf3;
  --ns-border-strong:#d4dbe8;
  --ns-navy:#22386b;            /* navy del logo (texto principal) */
  --ns-text:#1f2d4d;
  --ns-muted:#6a7382;           /* gris/plata del logo */
  --ns-soft:#98a0ad;
  --ns-blue:#2b4f9e;            /* acento navy-azul (logo) */
  --ns-sky:#3a67c4;
  --ns-tint:#eef1f9;            /* fondo suave de iconos/pills */
  --ns-brand:linear-gradient(135deg,#22386b 0%,#2f5aa8 100%);
  --ns-shadow:0 14px 34px -18px rgba(18,34,78,.28);
  --ns-shadow-lg:0 24px 60px -24px rgba(18,34,78,.30);
  --ns-font:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --ns-head:'Space Grotesk','Inter',system-ui,sans-serif;
}

[data-bs-theme="light"]{
  --bs-body-bg:var(--ns-bg);
  --bs-body-color:var(--ns-text);
  --bs-border-color:var(--ns-border);
  --bs-primary:#2f6fed;
  --bs-primary-rgb:47,111,237;
  --bs-heading-color:var(--ns-navy);
}

html{scroll-behavior:smooth;overflow-x:clip}
body{
  font-family:var(--ns-font);
  background:var(--ns-bg);
  color:var(--ns-text);
  overflow-x:clip;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto}
h1,h2,h3,h4,h5,.font-head{font-family:var(--ns-head);letter-spacing:-.02em;color:var(--ns-navy)}

/* Fondo ambiental muy sutil */
.bg-ambient{position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(900px 460px at 88% -12%,rgba(47,111,237,.06),transparent 60%),
    radial-gradient(760px 460px at -6% 6%,rgba(79,155,255,.05),transparent 58%),
    var(--ns-bg);
}

/* Utilidades de marca */
.gradient-text{background:var(--ns-brand);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.text-muted-2{color:var(--ns-muted)!important}
.eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-size:.76rem;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;color:var(--ns-blue);
  padding:.42rem .95rem;border-radius:999px;background:var(--ns-tint);border:1px solid #dbe6fb}
.eyebrow svg{width:15px;height:15px;flex:0 0 auto}
.section{padding:92px 0;position:relative}
.section-sm{padding:64px 0}
.section-alt{background:var(--ns-bg-alt)}

/* Botones */
.btn{border-radius:999px;font-weight:600;padding:.75rem 1.5rem;transition:.22s}
.btn-brand{background:var(--ns-brand);color:#fff;border:none;box-shadow:0 12px 26px -10px rgba(47,111,237,.55)}
.btn-brand:hover{color:#fff;transform:translateY(-2px);box-shadow:0 18px 36px -12px rgba(47,111,237,.65)}
.btn-glass{background:#fff;border:1px solid var(--ns-border-strong);color:var(--ns-navy)}
.btn-glass:hover{background:#fff;border-color:var(--ns-blue);color:var(--ns-blue);transform:translateY(-2px);box-shadow:var(--ns-shadow)}
.btn-wa{background:linear-gradient(135deg,#25d366,#128c7e);color:#fff;border:none}
.btn-wa:hover{color:#fff;transform:translateY(-2px);box-shadow:0 14px 30px -12px rgba(37,211,102,.5)}
.btn-lg{padding:.95rem 1.8rem;font-size:1.02rem}
.btn svg{width:18px;height:18px;vertical-align:-3px}

/* Navbar */
.navbar{transition:.3s;padding-top:0;padding-bottom:0}
.navbar .navbar-glass{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:10px 16px;border:1px solid var(--ns-border);border-radius:999px;
  background:rgba(255,255,255,.85);backdrop-filter:blur(14px);box-shadow:0 8px 24px -16px rgba(18,34,78,.25)}
.navbar.scrolled .navbar-glass{background:#fff;box-shadow:var(--ns-shadow)}
.brand{display:flex;align-items:center;gap:.6rem;text-decoration:none}
.brand:hover{text-decoration:none}
.brand-logo{height:50px;width:auto;max-width:300px;object-fit:contain;display:block}
.brand-fallback{display:none;flex-direction:column;line-height:1.05;font-family:var(--ns-head)}
.brand-fallback b{color:var(--ns-navy);font-weight:800;font-size:1.2rem;letter-spacing:.5px}
.brand-fallback small{color:var(--ns-muted);font-size:.6rem;letter-spacing:3px;font-weight:600;margin-top:2px}
.nav-link{color:var(--ns-muted)!important;font-weight:500;border-radius:999px;padding:.45rem .9rem!important;transition:.2s}
.nav-link:hover,.nav-link:focus-visible{color:var(--ns-navy)!important;background:var(--ns-bg-alt)}

/* Cards / superficies */
.card-glass{border:1px solid var(--ns-border);border-radius:20px;background:var(--ns-surface);transition:.25s;box-shadow:0 1px 2px rgba(18,34,78,.04)}
.card-glass:hover{transform:translateY(-6px);border-color:#c9d8f5;box-shadow:var(--ns-shadow-lg)}
.panel-glass{border:1px solid var(--ns-border);border-radius:24px;background:#fff;box-shadow:var(--ns-shadow-lg)}
.ico-tile{width:54px;height:54px;border-radius:14px;background:var(--ns-tint);border:1px solid #dfe9fb;
  display:grid;place-items:center;color:var(--ns-blue)}
.ico-tile svg{width:26px;height:26px}
.ico-tile.violet{color:#1e40af}

/* Hero */
.hero{padding:56px 0 40px}
.hero h1{font-size:clamp(2.3rem,5.2vw,4rem);line-height:1.08;color:var(--ns-navy)}
.hero .lead{font-size:1.16rem;color:var(--ns-muted)}
.hero-trust{display:flex;flex-wrap:wrap;gap:20px;color:var(--ns-soft);font-size:.88rem}
.hero-trust span{display:flex;align-items:center;gap:.5rem}
.hero-trust svg{width:18px;height:18px;color:var(--ns-blue)}
.hero-visual{border:1px solid var(--ns-border);border-radius:24px;background:#fff;padding:22px;box-shadow:var(--ns-shadow-lg)}
.hero-pill{font-size:.72rem;padding:.35rem .7rem;border-radius:999px;background:#e9faf0;
  color:#0f9d58;border:1px solid #bdead0;display:inline-flex;align-items:center;gap:.4rem;font-weight:600}
.hero-pill .live{width:7px;height:7px;border-radius:50%;background:#22c55e;animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}70%{box-shadow:0 0 0 8px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.mini-metric{background:var(--ns-bg-alt);border:1px solid var(--ns-border);border-radius:14px;padding:14px;text-align:center}
.mini-metric b{font-family:var(--ns-head);font-size:1.3rem;display:block;color:var(--ns-navy)}
.mini-metric small{color:var(--ns-muted);font-size:.72rem}
.mini-row{display:flex;align-items:center;gap:12px;background:var(--ns-bg-alt);border:1px solid var(--ns-border);
  border-radius:12px;padding:10px 14px;font-size:.85rem;color:var(--ns-navy);font-weight:500}
.mini-row .ico{width:32px;height:32px;border-radius:9px;background:#fff;border:1px solid var(--ns-border);display:grid;place-items:center;color:var(--ns-blue)}
.mini-row .ico svg{width:17px;height:17px}
.mini-row .ok{margin-left:auto;color:#0f9d58;font-size:.78rem;font-weight:700}

/* Stat */
.stat b{font-family:var(--ns-head);font-size:clamp(1.6rem,3vw,2.2rem);display:block;color:var(--ns-blue)}
.stat span{color:var(--ns-muted);font-size:.9rem}

/* Servicio */
.service h3{font-size:1.16rem;color:var(--ns-navy)}
.service p{color:var(--ns-muted);font-size:.95rem;margin:0}

/* Sección NetWisp (con leve tinte para dar ritmo) */
.netwisp{position:relative;background:var(--ns-bg-alt);overflow:hidden}
.netwisp-badge{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--ns-head);font-weight:700;font-size:1.5rem;color:var(--ns-navy)}
.netwisp-badge .logo{width:46px;height:46px;border-radius:13px;background:var(--ns-brand);display:grid;place-items:center;
  color:#fff;box-shadow:0 10px 24px -10px rgba(47,111,237,.6)}
.netwisp-badge .logo svg{width:25px;height:25px}
.feature{display:flex;gap:15px;padding:18px;border:1px solid var(--ns-border);border-radius:16px;
  background:#fff;transition:.22s;height:100%;box-shadow:0 1px 2px rgba(18,34,78,.04)}
.feature:hover{border-color:#c9d8f5;transform:translateY(-3px);box-shadow:var(--ns-shadow)}
.feature .fico{flex:0 0 auto;width:44px;height:44px;border-radius:12px;background:var(--ns-tint);border:1px solid #dfe9fb;
  display:grid;place-items:center;color:var(--ns-blue)}
.feature .fico svg{width:22px;height:22px}
.feature h4{font-size:1.02rem;margin:0 0 4px;color:var(--ns-navy)}
.feature p{color:var(--ns-muted);font-size:.9rem;margin:0}

/* Nosotros */
.about-value{display:flex;gap:12px;align-items:flex-start;padding:16px;border:1px solid var(--ns-border);
  border-radius:14px;background:#fff;height:100%;box-shadow:0 1px 2px rgba(18,34,78,.04)}
.about-value svg{width:22px;height:22px;color:var(--ns-blue);flex:0 0 auto;margin-top:2px}
.about-value b{display:block;font-family:var(--ns-head);color:var(--ns-navy)}
.about-value span{color:var(--ns-muted);font-size:.86rem}
.mv{border:1px solid var(--ns-border);border-radius:16px;background:var(--ns-bg-alt);padding:18px}
.mv .mv-ico{width:44px;height:44px;border-radius:12px;background:var(--ns-brand);display:grid;place-items:center;color:#fff}
.mv .mv-ico svg{width:22px;height:22px}

/* Contacto */
.ci-item{display:flex;gap:15px;align-items:center;padding:16px;border:1px solid var(--ns-border);
  border-radius:16px;background:#fff;text-decoration:none;color:var(--ns-navy);box-shadow:0 1px 2px rgba(18,34,78,.04)}
.ci-item:hover{text-decoration:none;color:var(--ns-navy);border-color:#c9d8f5;box-shadow:var(--ns-shadow)}
.ci-item .cico{width:46px;height:46px;border-radius:12px;background:var(--ns-tint);border:1px solid #dfe9fb;display:grid;place-items:center;
  color:var(--ns-blue);flex:0 0 auto}
.ci-item .cico svg{width:22px;height:22px}
.ci-item small{color:var(--ns-muted);display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}
.ci-item b{font-family:var(--ns-head);font-weight:600;overflow-wrap:anywhere}
.ci-item > div{min-width:0}
.social-row{display:flex;gap:10px}
.social-row a{width:44px;height:44px;border-radius:12px;background:#fff;border:1px solid var(--ns-border);
  display:grid;place-items:center;color:var(--ns-muted);transition:.22s;text-decoration:none}
.social-row a:hover{color:#fff;background:var(--ns-blue);border-color:var(--ns-blue);transform:translateY(-3px)}
.social-row svg{width:20px;height:20px}

/* Formularios */
.form-control,.form-select{background:#fff;border:1px solid var(--ns-border-strong);color:var(--ns-text);
  border-radius:12px;padding:.8rem 1rem}
.form-control:focus,.form-select:focus{background:#fff;border-color:var(--ns-blue);color:var(--ns-text);
  box-shadow:0 0 0 3px rgba(47,111,237,.15)}
.form-control::placeholder{color:var(--ns-soft)}
.form-label{color:var(--ns-navy);font-size:.85rem;font-weight:600}

/* CTA band */
.cta-band .cta-inner{border:1px solid #dbe6fb;border-radius:24px;padding:48px;text-align:center;
  background:linear-gradient(135deg,#eef4ff,#e6f0ff)}
.cta-band .cta-inner h2{color:var(--ns-navy)}

/* Footer */
footer.site-footer{border-top:1px solid var(--ns-border);padding:56px 0 28px;margin-top:0;background:var(--ns-bg-alt)}
footer.site-footer a{color:var(--ns-muted);text-decoration:none;transition:.2s;overflow-wrap:anywhere}
footer.site-footer li,footer.site-footer p{overflow-wrap:anywhere}
footer.site-footer a:hover{color:var(--ns-navy)}
footer.site-footer h5{font-family:var(--ns-head);font-size:.95rem;color:var(--ns-navy)}
.footer-bottom{border-top:1px solid var(--ns-border);padding-top:22px;margin-top:36px;color:var(--ns-soft);font-size:.85rem}

/* Reveal */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}
.reveal.visible{opacity:1;transform:none}

/* Legal */
.legal h1{color:var(--ns-navy)}
.legal h2{font-size:1.3rem;margin:34px 0 12px;font-family:var(--ns-head);color:var(--ns-navy)}
.legal p,.legal li{color:var(--ns-muted)}
.legal a{color:var(--ns-blue)}

/* Responsive */
@media (max-width:991px){
  .navbar .navbar-glass{flex-wrap:wrap}
  /* Panel del menú móvil: fondo blanco sólido (ya NO transparente) */
  .site-header .navbar-collapse{width:100%;margin-top:12px;padding:8px;
    background:#fff;border:1px solid var(--ns-border);border-radius:16px;
    box-shadow:var(--ns-shadow);max-height:72vh;overflow-y:auto}
  .navbar-collapse .navbar-nav{width:100%}
  .navbar-collapse .nav-link{padding:.8rem 1rem!important;border-radius:10px}
  .navbar-collapse .nav-link::after{display:none}
  /* Enlaces del panel: siempre oscuros y legibles sobre el fondo blanco */
  body.hero-dark .site-header:not(.scrolled) .navbar-collapse .nav-link{color:var(--ns-navy)!important}
  body.hero-dark .site-header:not(.scrolled) .navbar-collapse .nav-link:hover,
  body.hero-dark .site-header:not(.scrolled) .navbar-collapse .nav-link.active{color:var(--ns-blue)!important;background:var(--ns-bg-alt)}
}

/* ==========================================================================
   PREMIUM · Barra superior, menú con subrayado y fondos con patrón/imagen
   ========================================================================== */

/* Patrones (SVG embebidos, sin archivos externos) */
:root{
  --pat-dots:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26'%3E%3Ccircle cx='1.7' cy='1.7' r='1.5' fill='%2322386b' fill-opacity='.13'/%3E%3C/svg%3E");
  --pat-grid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='46'%3E%3Cpath d='M46 0H0V46' fill='none' stroke='%2322386b' stroke-opacity='.07'/%3E%3C/svg%3E");
  --pat-dots-light:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Ccircle cx='1.6' cy='1.6' r='1.4' fill='%23ffffff' fill-opacity='.16'/%3E%3C/svg%3E");
}

/* ---- Barra superior de contacto (se desplaza al hacer scroll) ---- */
.topbar{background:linear-gradient(90deg,#1a2c54,#22386b);color:#cdd6e6;font-size:.82rem}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 0}
.topbar a{color:#cdd6e6;text-decoration:none;display:inline-flex;align-items:center;gap:.4rem;transition:.2s}
.topbar a:hover{color:#fff}
.topbar svg{width:15px;height:15px}
.topbar-left,.topbar-right{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.topbar-right .social{display:flex;gap:12px}
.topbar-right .social a svg{width:16px;height:16px}
.topbar .divider{width:1px;height:14px;background:rgba(255,255,255,.2)}
@media (max-width:768px){
  .topbar{font-size:.76rem}
  .topbar .tb-hide{display:none}
  .topbar-inner{justify-content:center}
}

/* Nav FIJA en todo el scroll (la barra superior se desplaza) */
.navbar.fixed-nav{position:static;padding:0}

/* ---- Menú del sitio: subrayado animado (SOLO en la cabecera pública; no toca el panel) ---- */
.site-header .nav-link{position:relative}
.site-header .nav-link::after{content:"";position:absolute;left:14px;right:14px;bottom:2px;height:2px;
  background:var(--ns-brand);border-radius:2px;transform:scaleX(0);transform-origin:left;transition:transform .28s ease}
.site-header .nav-link:hover,
.site-header .nav-link:focus-visible{background:transparent;color:var(--ns-navy)!important}
.site-header .nav-link:hover::after,.site-header .nav-link.active::after{transform:scaleX(1)}
.site-header .nav-link.active{color:var(--ns-navy)!important}

/* ---- Fondos con patrón / imagen ---- */
/* Hero: patrón de puntos + foto opcional (assets/hero-bg.jpg) */
.hero{position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:var(--pat-dots);
  -webkit-mask-image:radial-gradient(135% 115% at 100% -12%,#000 0%,transparent 60%);
          mask-image:radial-gradient(135% 115% at 100% -12%,#000 0%,transparent 60%)}
.hero::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.16;
  background:var(--secbg, transparent) right center/cover no-repeat fixed;
  -webkit-mask-image:linear-gradient(90deg,transparent 34%,#000);
          mask-image:linear-gradient(90deg,transparent 34%,#000)}
.hero > .container{position:relative;z-index:1}

/* Sección con foto = tratamiento OSCURO premium (igual que NetWisp): overlay oscuro,
   texto claro y tarjetas glass. Solo se activa con .has-photo (cuando hay imagen subida). */
.px-light{position:relative;overflow:hidden}
.px-light.has-photo{
  background-image:linear-gradient(150deg, rgba(14,14,16,.76), rgba(6,6,8,.86)), var(--secbg);
  background-size:cover; background-position:center; background-attachment:fixed;
  color:#e9eefb;
}
.px-light > .container{position:relative;z-index:1}

/* Textos e íconos en claro */
.px-light.has-photo h2,
.px-light.has-photo h3,
.px-light.has-photo h4,
.px-light.has-photo .font-head{color:#fff}
.px-light.has-photo p,
.px-light.has-photo .text-muted-2{color:rgba(233,238,251,.80)!important}
.px-light.has-photo .service p,
.px-light.has-photo .about-value span,
.px-light.has-photo .stat span,
.px-light.has-photo .ci-item small{color:rgba(233,238,251,.7)!important}
.px-light.has-photo .eyebrow{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16);color:#a9c6ff}
.px-light.has-photo .text-decoration-underline{color:#a9c6ff!important}
.px-light.has-photo .stat b,
.px-light.has-photo .about-value b,
.px-light.has-photo .service h3,
.px-light.has-photo .ci-item b{color:#fff!important}
/* Tarjetas glass */
.px-light.has-photo .card-glass,
.px-light.has-photo .about-value,
.px-light.has-photo .panel-glass,
.px-light.has-photo .mv,
.px-light.has-photo .ci-item{
  background:rgba(255,255,255,.055)!important;
  border-color:rgba(255,255,255,.13)!important;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  box-shadow:none!important;
}
.px-light.has-photo .card-glass:hover,
.px-light.has-photo .about-value:hover,
.px-light.has-photo .ci-item:hover{border-color:rgba(255,255,255,.26)!important}
/* Panel Misión/Visión: contenedor sólido oscuro (evita el "glass dentro de glass" turbio) */
.px-light.has-photo .panel-glass{
  background:rgba(12,21,46,.74)!important;
  border-color:rgba(255,255,255,.14)!important;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
}
.px-light.has-photo .panel-glass .mv,
.px-light.has-photo .panel-glass .card-glass{
  background:rgba(255,255,255,.05)!important;
  border-color:rgba(255,255,255,.10)!important;
}
/* Íconos */
.px-light.has-photo .ico-tile,
.px-light.has-photo .cico{background:rgba(255,255,255,.10)!important;border-color:rgba(255,255,255,.18)!important;color:#9fc0ff!important}
.px-light.has-photo .about-value svg{color:#7fe3a6}
/* Formulario de contacto */
.px-light.has-photo .form-control,
.px-light.has-photo .form-select{background:rgba(0,0,0,.28);border-color:rgba(255,255,255,.18);color:#fff}
.px-light.has-photo .form-control::placeholder{color:rgba(233,238,251,.5)}
.px-light.has-photo .form-label{color:#fff}
.px-light.has-photo .social-row a{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16);color:#cdd6e6}

@media (max-width:991px){ .hero::after,.px-light.has-photo,.netwisp.has-photo{background-attachment:scroll} }

/* NetWisp: rejilla tipo blueprint */
.netwisp::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:var(--pat-grid);opacity:.8;
  -webkit-mask-image:radial-gradient(90% 95% at 8% 6%,#000,transparent 72%);
          mask-image:radial-gradient(90% 95% at 8% 6%,#000,transparent 72%)}
.netwisp > .container{position:relative;z-index:1}

/* Nosotros: puntos muy sutiles */
#nosotros{position:relative;overflow:hidden}
#nosotros::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:var(--pat-dots);opacity:.6;
  -webkit-mask-image:radial-gradient(90% 90% at 100% 100%,#000,transparent 70%);
          mask-image:radial-gradient(90% 90% at 100% 100%,#000,transparent 70%)}
#nosotros > .container{position:relative;z-index:1}

/* CTA: banner navy premium con patrón (foto opcional assets/cta-bg.jpg) */
.cta-band .cta-inner{position:relative;overflow:hidden;border:1px solid #1b2c54;border-radius:26px;
  padding:56px 40px;text-align:center;color:#fff;
  background:linear-gradient(135deg,#22386b 0%,#16244a 100%)}
.cta-band .cta-inner::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:var(--pat-dots-light);opacity:.5;
  -webkit-mask-image:radial-gradient(85% 90% at 100% 0%,#000,transparent 70%);
          mask-image:radial-gradient(85% 90% at 100% 0%,#000,transparent 70%)}
.cta-band .cta-inner::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.18;
  background:var(--secbg, transparent) center/cover no-repeat;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000);mask-image:linear-gradient(180deg,transparent,#000)}
.cta-band .cta-inner > *{position:relative;z-index:1}
.cta-band .cta-inner h2{color:#fff}
.cta-band .cta-inner p{color:rgba(255,255,255,.82)!important}
.cta-band .btn-brand{background:#fff;color:var(--ns-navy);box-shadow:0 12px 26px -12px rgba(0,0,0,.5)}
.cta-band .btn-brand:hover{background:#fff;color:var(--ns-navy);transform:translateY(-2px)}

/* ==========================================================================
   NetWisp: sección OSCURA con imagen de fondo (parallax) + overlay
   Foto opcional: assets/netwisp-bg.jpg (subible desde el panel → Fondos)
   ========================================================================== */
:root{
  /* Malla de red (nodos + enlaces) — temática de conectividad/ISP */
  --pat-net:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='76' height='76'%3E%3Cg stroke='%23ffffff' stroke-opacity='.09' fill='none'%3E%3Cpath d='M14 14L62 62M62 14L14 62M14 14H62M14 14V62'/%3E%3C/g%3E%3Cg fill='%23ffffff' fill-opacity='.16'%3E%3Ccircle cx='14' cy='14' r='2.3'/%3E%3Ccircle cx='62' cy='62' r='2.3'/%3E%3Ccircle cx='62' cy='14' r='2.3'/%3E%3Ccircle cx='14' cy='62' r='2.3'/%3E%3Ccircle cx='38' cy='38' r='1.7'/%3E%3C/g%3E%3C/svg%3E");
}
.netwisp{position:relative; overflow:hidden; color:#e9eefb; background-color:#101013}
.netwisp.has-photo{
  background-image:linear-gradient(150deg, rgba(12,12,14,.72), rgba(5,5,7,.82)), var(--secbg);
  background-size:cover; background-position:center; background-repeat:no-repeat;
  background-attachment:fixed;        /* efecto parallax */
}
.netwisp::before{                      /* textura de red (solo sin foto) */
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background-image:var(--pat-net); opacity:1;
  -webkit-mask-image:radial-gradient(120% 120% at 0% 0%, #000 0%, transparent 75%);
          mask-image:radial-gradient(120% 120% at 0% 0%, #000 0%, transparent 75%);
}
/* Con foto de fondo: sin patrón vectorial encima (que no se superponga a la imagen) */
.netwisp.has-photo::before{display:none}
.netwisp::after{                       /* brillo sutil */
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background:radial-gradient(700px 420px at 88% 12%, rgba(255,255,255,.06), transparent 60%);
}
.netwisp > .container{position:relative; z-index:1}
.netwisp h2{color:#fff}
.netwisp .netwisp-badge{color:#fff}
.netwisp .text-muted-2{color:rgba(233,238,251,.76)!important}
.netwisp .eyebrow{background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.16); color:#a9c6ff}
.netwisp .feature{
  background:rgba(255,255,255,.055);
  border:1px solid rgba(255,255,255,.12);
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
  box-shadow:none;
}
.netwisp .feature:hover{background:rgba(255,255,255,.09); border-color:rgba(255,255,255,.24); transform:translateY(-3px)}
.netwisp .feature h4{color:#fff}
.netwisp .feature p{color:rgba(233,238,251,.74)}
.netwisp .feature .fico{background:rgba(255,255,255,.10); border-color:rgba(255,255,255,.18); color:#9fc0ff}
/* En móvil, background-attachment:fixed no funciona bien (iOS): se desactiva */
@media (max-width:991px){
  .netwisp{background-attachment:scroll}
}

/* ==========================================================================
   Franja de tecnologías
   ========================================================================== */
.tech-strip{padding:34px 0;border-top:1px solid var(--ns-border);border-bottom:1px solid var(--ns-border);background:#fff}
.tech-title{text-align:center;color:var(--ns-muted);font-size:.82rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;margin:0 0 18px}
.tech-track{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}
.tech-pill{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem 1.1rem;border-radius:999px;
  border:1px solid var(--ns-border);background:var(--ns-bg-alt);color:var(--ns-navy);font-weight:600;font-size:.92rem;transition:.2s}
.tech-pill:hover{border-color:var(--ns-blue);color:var(--ns-blue);transform:translateY(-2px);box-shadow:var(--ns-shadow)}
.tech-pill svg{width:14px;height:14px;color:var(--ns-blue)}

/* ==========================================================================
   Galería "Nuestros trabajos" (imágenes reales subibles → panel)
   ========================================================================== */
.work{position:relative;aspect-ratio:4/3;border-radius:18px;overflow:hidden;
  background-color:#132a58;
  background-size:contain;              /* la foto se adapta COMPLETA al box (sin recorte) */
  background-position:center; background-repeat:no-repeat;
  border:1px solid var(--ns-border); box-shadow:0 1px 2px rgba(18,34,78,.05);
  transition:transform .3s ease, box-shadow .3s ease}
/* Patrón de red SOLO como placeholder (se quita al poner foto, para verla limpia) */
.work::before{content:"";position:absolute;inset:0;background:var(--pat-net);opacity:.22}
.work.has-img::before{display:none}
.work::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(6,12,30,.78))}
.work:hover{transform:translateY(-6px);box-shadow:var(--ns-shadow-lg)}
.work-cap{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:16px 18px;color:#fff}

/* ==========================================================================
   Sección "¿Cómo trabajamos?" (proceso en pasos)
   ========================================================================== */
.step-num{flex:0 0 auto;width:34px;height:34px;border-radius:50%;background:var(--ns-brand);color:#fff;
  display:grid;place-items:center;font-family:var(--ns-head);font-weight:700;font-size:.92rem;
  box-shadow:0 8px 18px -8px rgba(34,56,107,.6)}
.px-light.has-photo .step-num{box-shadow:none}
.work-cap b{font-family:var(--ns-head);font-size:1.05rem;font-weight:600}

/* ==========================================================================
   HERO con foto: modo oscuro premium (contenido + imagen ambos visibles).
   Degradado direccional: oscuro donde va el texto, claro donde se ve la foto.
   ========================================================================== */
.hero.has-photo{
  background-image:linear-gradient(90deg, rgba(6,6,8,.93) 0%, rgba(10,10,12,.80) 42%, rgba(12,12,14,.55) 74%, rgba(12,12,14,.40) 100%), var(--secbg);
  background-size:cover; background-position:center; background-attachment:fixed;
  color:#e9eefb;
}
.hero.has-photo::before,.hero.has-photo::after{display:none} /* quita puntos y foto lateral tenue */
.hero.has-photo h1{color:#fff}
.hero.has-photo .gradient-text{background:linear-gradient(135deg,#63a8ff,#b9d4ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.hero.has-photo .lead{color:rgba(233,238,251,.86)}
.hero.has-photo .eyebrow{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.20);color:#bcd3ff}
.hero.has-photo .hero-trust{color:rgba(233,238,251,.72)}
.hero.has-photo .hero-trust svg{color:#7fe3a6}
.hero.has-photo .btn-glass{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.24);color:#fff}
.hero.has-photo .btn-glass:hover{background:rgba(255,255,255,.16);border-color:#fff;color:#fff}
/* Tarjeta "en vivo" = panel de vidrio oscuro */
.hero.has-photo .hero-visual{background:rgba(12,21,46,.58);border-color:rgba(255,255,255,.14);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.hero.has-photo .mini-metric{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12)}
.hero.has-photo .mini-metric small{color:rgba(233,238,251,.66)}
.hero.has-photo .mini-row{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.10);color:#eef2fb}
.hero.has-photo .mini-row .ico{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.16);color:#9fc0ff}
/* Indicadores inferiores = vidrio oscuro */
.hero.has-photo .stat.card-glass{background:rgba(255,255,255,.055)!important;border-color:rgba(255,255,255,.12)!important;box-shadow:none!important}
.hero.has-photo .stat b{color:#fff}
.hero.has-photo .stat span{color:rgba(233,238,251,.72)}
@media (max-width:991px){ .hero.has-photo{background-attachment:scroll} }

/* ==========================================================================
   CABECERA FIJA que se superpone al hero (transparente arriba, sólida al bajar)
   Sin "pill" flotante, sin franjas: barra de ancho completo.
   ========================================================================== */
.site-header{position:fixed;top:0;left:0;right:0;z-index:1030}
/* El nav no flota como pill: barra de ancho completo */
.site-header .navbar{padding:0;transition:background .3s ease, box-shadow .3s ease}
.site-header .navbar .navbar-glass{
  background:transparent;border:none;border-radius:0;box-shadow:none;
  -webkit-backdrop-filter:none;backdrop-filter:none;padding:14px 0;
}
/* Al bajar: barra sólida blanca de ancho completo con sombra */
.site-header.scrolled .navbar{background:#fff;box-shadow:0 6px 24px -14px rgba(18,34,78,.35)}

/* Espacio para que el contenido del hero no quede bajo la cabecera fija (solo menú) */
.hero{padding-top:104px}

/* --- Colores del nav sobre HERO OSCURO (arriba, sin scroll): texto/logo claros --- */
body.hero-dark .site-header:not(.scrolled) .nav-link{color:rgba(255,255,255,.88)!important}
body.hero-dark .site-header:not(.scrolled) .nav-link:hover,
body.hero-dark .site-header:not(.scrolled) .nav-link:focus-visible,
body.hero-dark .site-header:not(.scrolled) .nav-link.active{color:#fff!important;background:rgba(255,255,255,.10)}
body.hero-dark .site-header:not(.scrolled) .nav-link::after{background:linear-gradient(90deg,#63a8ff,#b9d4ff)}
body.hero-dark .site-header:not(.scrolled) .brand-logo{filter:brightness(0) invert(1)}
body.hero-dark .site-header:not(.scrolled) .btn-glass{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.30);color:#fff}
body.hero-dark .site-header:not(.scrolled) .btn-glass:hover{background:rgba(255,255,255,.20);border-color:#fff;color:#fff}

/* --- Al bajar (barra blanca): enlaces oscuros, logo a color --- */
.site-header.scrolled .nav-link{color:var(--ns-muted)!important}
.site-header.scrolled .nav-link:hover,
.site-header.scrolled .nav-link:focus-visible,
.site-header.scrolled .nav-link.active{color:var(--ns-navy)!important}
.site-header.scrolled .brand-logo{filter:none}

@media (max-width:991px){ .hero{padding-top:90px} }

/* ==========================================================================
   Burbuja flotante de WhatsApp (siempre visible)
   ========================================================================== */
.wa-float{position:fixed;right:18px;bottom:18px;z-index:1040;display:flex;align-items:center;
  background:linear-gradient(135deg,#25d366,#128c7e);color:#fff;border-radius:999px;padding:14px;
  box-shadow:0 12px 30px -8px rgba(18,140,126,.55);text-decoration:none;transition:.25s}
.wa-float svg{width:26px;height:26px;flex:0 0 auto}
.wa-float-txt{max-width:0;overflow:hidden;white-space:nowrap;font-weight:600;font-size:.95rem;transition:max-width .3s ease,margin .3s ease}
.wa-float:hover{transform:translateY(-3px);color:#fff;box-shadow:0 16px 38px -8px rgba(18,140,126,.65)}
.wa-float:hover .wa-float-txt{max-width:130px;margin-left:10px}
.wa-float::before{content:"";position:absolute;inset:0;border-radius:999px;
  box-shadow:0 0 0 0 rgba(37,211,102,.45);animation:waPulse 2.6s infinite}
@keyframes waPulse{0%{box-shadow:0 0 0 0 rgba(37,211,102,.45)}70%{box-shadow:0 0 0 14px rgba(37,211,102,0)}100%{box-shadow:0 0 0 0 rgba(37,211,102,0)}}
@media (max-width:576px){.wa-float{right:14px;bottom:14px;padding:13px}}
