:root {
  --v2-navy: #0b1f33;
  --v2-blue: #163a5a;
  --v2-teal: #20c4b5;
  --v2-cyan: #54e0d2;
  --v2-ink: #10202f;
  --v2-muted: #5e7182;
  --v2-surface: #f5f8fa;
  --v2-radius: 1.25rem;
  --v2-shadow: 0 18px 55px rgba(11, 31, 51, .12);
}

html { scroll-behavior: smooth; }
body.v2-site {
  color: var(--v2-ink);
  background: var(--v2-surface);
  font-family: 'Inter', system-ui, sans-serif;
  overflow-x: hidden;
}
body.v2-site h1,
body.v2-site h2,
body.v2-site h3,
body.v2-site h4,
body.v2-site .font-bold,
body.v2-site .font-extrabold {
  font-family: 'Space Grotesk', 'Inter', system-ui, sans-serif;
  letter-spacing: -.02em;
}

.v2-header {
  transition: background-color .35s ease, box-shadow .35s ease, backdrop-filter .35s ease;
}
.v2-header.v2-scrolled {
  background-color: rgba(11, 31, 51, .94) !important;
  box-shadow: 0 12px 35px rgba(4, 15, 27, .24);
  backdrop-filter: blur(18px);
}
.v2-header a { transition: color .25s ease, opacity .25s ease, transform .25s ease; }
.v2-header a:hover { transform: translateY(-1px); }
.v2-header a.v2-active { color: var(--v2-cyan) !important; }

body.v2-site .gradient-hero {
  isolation: isolate;
  background:
    radial-gradient(circle at 88% 18%, rgba(32,196,181,.18), transparent 28%),
    radial-gradient(circle at 12% 78%, rgba(84,224,210,.10), transparent 25%),
    linear-gradient(135deg, #071827 0%, #0b1f33 48%, #163a5a 100%) !important;
}
body.v2-site .gradient-hero::before {
  content: '';
  position: absolute;
  inset: -35%;
  z-index: -1;
  background: repeating-linear-gradient(120deg, transparent 0 80px, rgba(84,224,210,.035) 81px 82px);
  transform: rotate(-8deg);
  animation: v2-drift 20s linear infinite;
  pointer-events: none;
}
@keyframes v2-drift { from { translate: 0 0; } to { translate: 120px 0; } }

body.v2-site section:not(.gradient-hero) > .container,
body.v2-site footer > .container { position: relative; }
body.v2-site #servicios [data-aos],
body.v2-site #especializaciones [data-aos],
body.v2-site #infraestructura [data-aos],
body.v2-site #equipo [data-aos] { will-change: transform, opacity; }
body.v2-site #servicios .group,
body.v2-site #especializaciones .group,
body.v2-site #infraestructura .group,
body.v2-site #equipo .group {
  transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
}
body.v2-site #servicios .group:hover,
body.v2-site #especializaciones .group:hover,
body.v2-site #infraestructura .group:hover,
body.v2-site #equipo .group:hover {
  transform: translateY(-7px);
  box-shadow: var(--v2-shadow);
}
body.v2-site #servicios .rounded-2xl,
body.v2-site #especializaciones .rounded-2xl,
body.v2-site #infraestructura .rounded-2xl { border-radius: var(--v2-radius); }
body.v2-site #nosotros img,
body.v2-site #equipo img { transition: transform .7s ease, filter .7s ease; }
body.v2-site #nosotros img:hover,
body.v2-site #equipo img:hover { transform: scale(1.035); filter: saturate(1.08); }

.v2-back-to-top {
  position: fixed;
  right: 1.25rem;
  bottom: 1.25rem;
  z-index: 45;
  width: 2.9rem;
  height: 2.9rem;
  display: grid;
  place-items: center;
  border: 1px solid rgba(84,224,210,.45);
  border-radius: 999px;
  color: var(--v2-navy);
  background: var(--v2-cyan);
  box-shadow: 0 12px 30px rgba(11,31,51,.22);
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity .3s ease, visibility .3s ease, transform .3s ease, background .25s ease;
}
.v2-back-to-top:hover { background: #fff; transform: translateY(-2px); }
.v2-back-to-top.v2-visible { opacity: 1; visibility: visible; transform: translateY(0); }

body.v2-site input:focus,
body.v2-site textarea:focus,
body.v2-site button:focus-visible,
body.v2-site a:focus-visible {
  outline: 3px solid rgba(32,196,181,.55);
  outline-offset: 3px;
}
body.v2-site img { max-width: 100%; }

@media (max-width: 767px) {
  .v2-back-to-top { right: .85rem; bottom: .85rem; width: 2.65rem; height: 2.65rem; }
  body.v2-site .gradient-hero::before { animation-duration: 28s; }
}

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