/* =========================
   Global Variables & Fonts
   ========================= */
/* Define color palette, spacing, and font family for the site */
:root {
  --radius: 0.75rem;                /* Border radius for rounded corners */
  --space: 1rem;                    /* Base spacing unit */
  --color-background: #f9fdff;      /* Light gray background */
  --color-blue: #044cd4;            /* Main blue accent */
  --color-aqua-green: #00c8b9;      /* Aqua green accent */
  --color-yellow: #ffc700;          /* Yellow highlight */
  --color-orange-red: #ff6245;      /* Orange-red accent */
  --color-card: #ffffff;            /* Card background color */
  --color-text: black;            /* Main text color */
  --shadow: 0 30px 60px -10px rgba(4,77,212,0.15); /* Card shadow */
  --transition: 0.6s cubic-bezier(.22,.61,.36,1);  /* Default transition */
  --fs-base: 1.5rem;                  /* Base font size */
  --break-md: 768px;                /* Medium breakpoint for responsiveness */
  font-family: 'Inter', system-ui,-apple-system,BlinkMacSystemFont,sans-serif; /* Font stack */
}

/* =========================
   Box Sizing
   ========================= */
/* Use border-box for all elements for easier sizing */
*,
*::before,
*::after { box-sizing:border-box; }
/* ==========================
Logo
===========================*/
.logo {
  display: flex;
  align-items: center;
  /* optional: limit size so it stays compact in header */
  max-height: 100px;
}

.logo img {
  display: block;
  height: 5vh;        /* desired visual height */
  width: auto;         /* preserve aspect ratio */
  max-width: 100%;     /* responsive */
}


/* =========================
   Body Styles
   ========================= */
/* Set up background, text color, and base layout */
body {
  margin:0;
  color: var(--color-text);
  line-height:1.5;
  font-size: var(--fs-base);
  min-height:100vh;
  scroll-behavior: smooth;
}

html {
  scroll-behavior: smooth;
}

/* =========================
   Background Canvas
   ========================= */
/* Fixed canvas for network background, behind all content */
#network-bg {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0; /* Ensure it's behind other content */
  pointer-events: none;
  display: block;
}

/* Ensure main content is above the background canvas */
body > * {
  position: relative;
  z-index: 1;
}

.page-glow {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: -2;
  background:
    radial-gradient(
      circle at 30% 40%, 
      transparent 70%, 
      color-mix(in srgb, white 40%, var(--color-aqua-green) 60%) 100%
    ),
    radial-gradient(
      circle at 70% 60%, 
      transparent 80%, 
      color-mix(in srgb, white 40%, var(--color-yellow) 60%) 100%
    );
  filter: blur(250px);
  will-change: transform;
}








/* =========================
   Header Styles
   ========================= */
/* Sticky header with blur and border */
.site-header {
  position:sticky;
  top:0;
  z-index:100;
  backdrop-filter: blur(14px);
  background: rgba(255,255,255,0.85);
  border-bottom:1px solid rgba(31,41,55,0.08);
}
.site-header .inner {
  max-width:1120px;
  margin:0 auto;
  padding:0.75rem 1rem;
  display:flex;
  align-items:center;
  gap:1rem;
  justify-content:space-between;
}
.logo {
  font-weight:700;
  font-size:1.25rem;
  letter-spacing:0.5px;
  color: var(--color-blue); /* Logo uses main blue */
}

/* =========================
   Navigation Styles
   ========================= */
/* Hide navigation by default (shown on desktop) */
.nav {
  display:none;
  gap:1.25rem;
}
.nav a {
  position:relative;
  font-weight:500;
  padding:0.35rem 0.5rem;
  text-decoration:none;
  color: var(--color-text);
}
/* Underline animation on hover */
.nav a::after {
  content:'';
  position:absolute;
  left:0;
  bottom:-4px;
  width:0;
  height:3px;
  background: var(--color-aqua-green);
  border-radius:2px;
  transition: width .3s;
}
.nav a:hover::after { width:100%; }


/* =========================
   Hero Section
   ========================= */
/* Main hero area with centered content */
.hero {
  position:relative;
  padding:5rem 1rem 6rem;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
}
.hero-content {
  max-width:900px;
  position:relative;
  z-index:2;
  gap:1rem;
  display:flex;
  flex-direction:column;
}
.hero h1 {
  font-size:clamp(1.8rem, 6vw, 4rem); /* Responsive heading */
  margin:0;
}
.hero p {
  font-size:1.125rem;
  margin:0;
}


/* =========================
   Hero Background Glow
   ========================= */
/* Parallax-like blurred glow behind hero */
/* .hero-bg {
  position:absolute;
  inset:0;
  background: 
    radial-gradient(circle at 30% 40%, rgba(3,200,185,0.35), transparent 60%), 
    radial-gradient(circle at 70% 60%, rgba(254,198,1,0.2), transparent 55%);
  filter: blur(120px);
  transform: translateZ(0);
  pointer-events:none;
  will-change: transform;
} */

/* =========================
   Network hub (logo + page bubbles)
   ========================= */
.network-hub {
  position: relative;
  padding: 6rem 1rem;
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 60vh;
  overflow: visible;
}

.connections {
  position: absolute;
  inset: 0;
  pointer-events: none;
  width: 100%;
  height: 100%;
  z-index: -1;
  overflow: visible;
}

.conn-line {
  stroke: var(--color-blue);
  stroke-width: 1;
  stroke-linecap: round;
  transition: stroke .25s ease, stroke-width .25s ease;
}

.conn-line.highlight {
  stroke: var(--color-blue);
  stroke-width: 4;
}

/* ===== Triangular Layout ===== */
.hub-triangle {
  display: grid;
  grid-template-areas:
    "top top top"
    "bottom-left logo bottom-right";
  grid-template-columns: 1fr auto 1fr;
  gap: clamp(2rem, 6vw, 8rem);
  align-items: center;
  justify-items: center;
  position: relative;
}

.bubble-wrapper.top {
  grid-area: top;
}

.bubble-wrapper.bottom-left {
  grid-area: bottom-left;
}

.bubble-wrapper.bottom-right {
  grid-area: bottom-right;
}

.logo-bubble {
  grid-area: logo;
}

/* Responsivo: en móvil apilar verticalmente */
@media (max-width: 768px) {
  .hub-triangle {
    grid-template-areas:
      "top"
      "logo"
      "bottom-left"
      "bottom-right";
    grid-template-columns: 1fr;
  }
}

/* ===== Bubbles ===== */
.bubble {
  position: relative;
  background: #ffffffee;
  border-radius: 50%;
  padding: clamp(0.75rem, 2vw, 5rem);
  border: 0.15em solid var(--color-blue);
  cursor: pointer;
  box-shadow: 0 0.5vh 2vh -1vh var(--color-blue);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform .35s cubic-bezier(.22,.61,.36,1),
              box-shadow .35s ease,
              border-color .25s ease;
  color: var(--color-text);
  font-weight: 600;
}

.logo-bubble {
  position: relative;
  width: clamp(12rem, 22vw, 24rem);
  height: clamp(12rem, 22vw, 24rem);
  border: 0.2em solid var(--color-blue);
  background: white;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  transition: transform 0.35s cubic-bezier(.22,.61,.36,1);
}

.logo-bubble img {
  width: 100%;
  padding: clamp(0.25rem, 1vw, 0.5rem);
  height: auto;
  object-fit: contain;
  object-position: center center;
  display: block;
}

.page-bubble {
  width: clamp(8rem, 16vw, 16rem);
  height: clamp(8rem, 16vw, 16rem);
  font-size: clamp(0.75rem, 1.2vw, 1rem);
  border: 2px solid var(--color-blue);
  background: rgba(255,255,255,0.9);
}

.page-bubble i {
  font-size: clamp(1.5rem, 3vw, 2.5rem);
  color: var(--color-blue);
  margin-bottom: 0.5rem;
  display: block;
}

.page-bubble span {
  display: block;
  font-size: clamp(0.85rem, 2vw, 1.5rem);
  text-align: center;
  line-height: 1.2;
  color: var(--color-text);
  padding: 0 0.5rem;
}

.page-bubble:hover,
.page-bubble.active {
  transform: scale(1.15);
  border-color: var(--color-blue);
  box-shadow: 0 10px 60px -5px var(--color-blue);
}

.logo-bubble.active {
  transform: scale(1.08);
  box-shadow: 0 40px 100px -10px rgba(4,77,212,0.35);
}

.bubble-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-bottom: 1rem;
  text-align: center;
}

.bubble-desc {
  font-size: 1rem;
  color: black;
  margin-top: 0.4rem;
  max-width: 180px;
  line-height: 1.3;
  background-color: var(--color-background);
}

/* Logo content & text switching */
.logo-bubble .logo-image,
.logo-bubble .center-desc {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(1);
  transition: opacity 0.4s ease, transform 0.4s ease;
  opacity: 1;
  pointer-events: auto;
}

.logo-bubble .logo-image img {
  width: 100%;
  max-width: 100%;
  height: auto;
  object-fit: contain;
}

.logo-bubble.show-text .logo-image {
  opacity: 0;
  transform: translate(-50%, -50%) scale(0.85);
  pointer-events: none;
}

.logo-bubble .center-desc {
  opacity: 0;
  transform: translate(-50%, -50%) scale(0.9);
  pointer-events: none;
  text-align: center;
  font-size: clamp(0.85rem, 1.4vw, 1.25rem);
  color: var(--color-text);
  padding: 1rem;
  width: 90%;
  max-height: 95%;
  line-height: 1.3;
  text-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
}

.logo-bubble.show-text .center-desc {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
  pointer-events: auto;
}

a.bubble.page-bubble {
  text-decoration: none;
  cursor: pointer;
  font-weight: 600;
}

/* En pantallas grandes (desktop): las descripciones debajo de burbujas desaparecen */
@media (min-width: 768px) {
  .bubble-desc {
    display: none !important;
  }
}



/* =========================
   Intro Section
   ========================= */
.intro-section,
.audience-section,
.benefits-section,
.usecase-section,
.testimonial-section,
.faq-section,
.cta-section {
  padding: 4rem 1rem;
  max-width: 1100px;
  margin: 0 auto;
  text-align: center;
}

.intro-section h2,
.audience-section h2,
.benefits-section h2,
.usecase-section h2,
.testimonial-section h2,
.faq-section h2,
.cta-section h2 {
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  margin-bottom: 1rem;
  color: var(--color-blue);
}

.intro-section p,
.audience-section p,
.usecase-section p,
.testimonial-section p {
  font-size: 1.5rem;
  max-width: 720px;
  margin: 0 auto;
}

/* =========================
   Audience Section
   ========================= */
.audience-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 4rem 1rem;
  gap: 1.5rem; /* separación entre título y caja */
}

.audience-title {
  font-size: 2rem;
  color: var(--color-blue);
  margin: 0;
  text-align: center;
}

.audience-box {
  background: var(--color-background);
  /* border: 2px solid var(--color-background); */
  border-radius: 1rem;
  padding: 2rem;
  max-width: 900px;
  width: 100%;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
  /* backdrop-filter: blur(3px); */
  text-align: center;
}

.audience-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 2rem;
}

.audience-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
}

.audience-item i {
  font-size: 3rem;
  color: var(--color-blue);
}

.audience-item h3 {
  font-size: 1.6rem;
  font-weight: 600;
  margin: 0;
  color: var(--color-text);
}

.audience-item p {
  font-size: 1.2rem;
  color: var(--color-text);
  max-width: 600px;
  line-height: 1.5;
}

/* =========================
   Benefits Grid
   ========================= */
.benefits-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 2rem;
  margin-top: 3rem;
  text-align: center;
}

.benefit {
  background: var(--color-card);
  padding: 2rem 1.5rem;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  transition: transform 0.3s ease var(--transition);
}
.benefit:hover {
  transform: translateY(-8px);
}

.benefit i {
  font-size: 3rem;
  color: var(--color-aqua-green);
  margin-bottom: 1rem;
}
.benefit h3 {
  font-size: 1.6rem;
  color: var(--color-blue);
  margin-bottom: 0.5rem;
}
.benefit p {
  font-size: 1.2rem;
  line-height: 1.5;
}

/* =========================
   Call To Action
   ========================= */
.cta-button {
  display: inline-block;
  padding: 0.85rem 2rem;
  background: var(--color-blue);
  color: white;
  border-radius: var(--radius);
  font-weight: 600;
  font-size: 2rem;
  text-decoration: none;
  margin-top: 2rem;
  transition: transform 0.3s ease;
}
.cta-button:hover {
  transform: scale(1.05);
}

/* =========================
   Testimonial Section
   ========================= */
.testimonial-section blockquote {
  font-style: italic;
  max-width: 700px;
  margin: 2rem auto 1rem;
  position: relative;
  padding: 1.5rem 1.5rem 1.5rem 2rem;
  background: white;
  border-left: 5px solid var(--color-yellow);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}
.testimonial-section footer {
  text-align: right;
  font-size: 0.95rem;
  color: #666;
  margin-top: 0.5rem;
}

/* =========================
   FAQ Section
   ========================= */
.faq-section {
  --radius: 12px;
  --shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
  --color-text: #333;
}

/* Estilo base para cada pregunta */
.faq-section details {
  text-align: left;
  max-width: 720px;
  margin: 1rem auto;
  background: #fff;
  padding: 1rem 1.5rem;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  transition: all 0.3s ease;
  cursor: pointer;
}

.faq-section summary {
  font-weight: 600;
  font-size: 1.1rem;
  color: var(--color-text);
  outline: none;
  cursor: pointer;
}

/* Texto dentro del details */
.faq-section p {
  font-size: 1rem;
  line-height: 1.6;
  margin: 0;
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  transform: translateY(-8px);
  transition: max-height 0.5s ease, opacity 0.5s ease, transform 0.5s ease;
}

/* Al abrir el details */
.faq-section details.open p {
  margin-top: 0.75rem;
  max-height: 500px;
  opacity: 1;
  transform: translateY(0);
}

/* FAQ ocultas por defecto */
.hidden-faqs-wrapper {
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  transition: max-height 0.7s ease, opacity 0.7s ease;
}

/* Mostrar cuando está expandido */
.faq-list.expanded .hidden-faqs-wrapper {
  max-height: 2000px;
  opacity: 1;
}

/* Botón de mostrar más/menos */
.faq-toggle-btn {
  margin: 1rem auto 0;
  display: block;
  padding: 0.75rem 1.5rem;
  background-color: var(--color-blue);
  color: white;
  border: none;
  border-radius: 6px;
  font-weight: bold;
  cursor: pointer;
  transition: background-color 0.3s ease, transform 0.3s ease;
}

.faq-toggle-btn:hover {
  background-color: #555;
  transform: translateY(-2px);
}




/* =========================
   Reveal Animation (Scroll)
   ========================= */
/* Elements fade in and move up when active */
.reveal {
  opacity:0;
  transform: translateY(20px);
  transition: opacity .7s ease-out, transform .7s ease-out;
}
.reveal.active {
  opacity:1;
  transform: translateY(0);
}
/* Delay classes for staggered animation */
.delay-1 { transition-delay:0.15s; }
.delay-2 { transition-delay:0.3s; }

/* =========================
   Footer Styles
   ========================= */
/* Footer with padding, background, and border */
.site-footer {
  padding:2rem 1rem;
  background: rgba(255,255,255,0.9);
  border-top:1px solid rgba(31,41,55,0.08);
}
.site-footer .inner {
  max-width:1120px;
  margin:0 auto;
  text-align:center;
  font-size:.9rem;
  color: var(--color-text);
}

/* Footer General */
.expanded-footer {
  background-color: var(--color-background);
  color: black;
  padding: 4rem 2rem 2rem;
  font-size: 0.95rem;
  line-height: 1.5;
}

.footer-container {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 2rem;
  max-width: 1200px;
  margin: 0 auto 2rem;
}

.footer-col {
  flex: 1 1 220px;
  min-width: 220px;
}

.footer-col h3 {
  margin-bottom: 1rem;
  font-size: 1.1rem;
  color: var(--color-blue);
}

.social-links {
  display: flex;
  gap: 1rem;
  padding: 0;
  list-style: none;
}

.social-links a {
  font-size: 2rem;
  color: black;
  transition: color 0.3s ease;
}

.social-links a:hover {
  color:var(--color-blue);
}

.newsletter-form {
  display: flex;
  border-radius: 5px;
  overflow: hidden;
  background-color: var(--color-background);
  border: var(--color-blue) 1px solid;
}

.newsletter-form input[type="email"] {
  flex: 1;
  padding: 0.6rem;
  border: none;
  background: transparent;
  color: var(--color-text);
}

.newsletter-form button {
  background: var(--color-blue);
  border: none;
  padding: 0 1rem;
  color: var(--color-background);
  cursor: pointer;
}

.membership-logos img {
  height: 50px;
  margin-right: 1rem;
}

.membership-logos a img {
  transition: transform 0.3s ease, filter 0.3s ease;
}

.membership-logos a:hover img {
  transform: scale(1.05);
  filter: brightness(1.2);
}


/* University Logos Section */
.university-logos-container {
  text-align: center;
  padding: 2rem 1rem 1rem;
  border-top: 1px solid #333;
}

.university-logos-container h3 {
  color: var(--color-blue);
  margin-bottom: 1rem;
}

.university-logos {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.5rem;
}

.university-logos img {
  height: 50px;
  object-fit: contain;
  filter: brightness(0.9);
}

.university-logos a img {
  transition: transform 0.3s ease, filter 0.3s ease;
}

.university-logos a:hover img {
  transform: scale(1.05);
  filter: brightness(1.2);
}

/* Disclaimer */
.footer-disclaimer {
  text-align: center;
  font-size: 0.8rem;
  color: black;
  margin-top: 2rem;
  max-width: 1000px;
  margin-left: auto;
  margin-right: auto;
  padding: 1rem;
  border-top: 1px solid #333;
}

/* Responsive Adaptation */
@media (max-width: 768px) {
  .footer-container {
    flex-direction: column;
    align-items: flex-start;
  }

  .newsletter-form {
    flex-direction: column;
  }

  .newsletter-form input[type="email"] {
    width: 100%;
  }

  .newsletter-form button {
    width: 100%;
  }

  .university-logos {
    gap: 1rem;
  }
}


/* =========================
   Responsive Styles
   ========================= */
/* Adjust layout for medium screens and up */
@media (min-width: var(--break-md)) {
  .nav { display:flex; }                /* Show navigation */
  .burger { display:none; }             /* Hide burger menu */
  .cards { grid-template-columns: repeat(3,1fr); } /* 3-column cards */
  .hero { padding:8rem 1rem 10rem; }    /* Larger hero padding */
  .hero h1 { font-size:clamp(2.5rem,5vw,4rem); } /* Larger heading */
}

/* =========================
   Reduced Motion Accessibility
   ========================= */
/* Remove transitions and animations for users who prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
  * { transition:none !important; animation:none !important; }
}

/* VIDEOTUTORIAL */
.modal {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.75);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease;
  z-index: 1000;
}

.modal.active {
  opacity: 1;
  visibility: visible;
}

.modal-content {
  position: relative;
  width: 90%;
  max-width: 900px;
  background: #ffffff;
  border-radius: 12px;
  padding: 20px;
  transform: scale(0.9);
  transition: transform 0.3s ease;
}

.modal.active .modal-content {
  transform: scale(1);
}

.modal video {
  width: 100%;
  height: auto;
  border-radius: 8px;
}

.close {
  position: absolute;
  top: 12px;
  right: 15px;
  font-size: 28px;
  background: none;
  border: none;
  cursor: pointer;
}

.video-btn {
  background-color: #f2f2f2;
  color: #000000;
  border: 1px solid #cccccc;
  padding: 6px 12px;
  font-size: 13px;
  font-weight: 500;
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.2s ease;
}

.video-btn:hover {
  background-color: #e6e6e6;
  border-color: #999999;
}

.video-btn:active {
  transform: scale(0.97);
}




