
    @font-face {
      font-family: 'MonstralSmooth';
      src: url('./fonts/monstral/WEB FONT/DxMonstral-Smooth.woff2') format('woff2'),
           url('./fonts/monstral/WEB FONT/DxMonstral-Smooth.woff') format('woff');
      font-weight: 400;
      font-style: normal;
      font-display: block;
    }
    @font-face {
      font-family: 'Monstral';
      src: url('./fonts/monstral/WEB FONT/DxMonstral-Regular.woff2') format('woff2'),
           url('./fonts/monstral/WEB FONT/DxMonstral-Regular.woff') format('woff');
      font-weight: 700;
      font-style: normal;
      font-display: block;
    }
    @font-face {
      font-family: 'GrandMighty';
      src: url('./fonts/grand-mighty/Grand Mighty.otf') format('opentype'),
           url('./fonts/grand-mighty/Grand Mighty.ttf') format('truetype');
      font-weight: 900;
      font-style: normal;
      font-display: block;
    }
    @font-face {
      font-family: 'TahoeDisplay';
      src: url('./fonts/tahoe/Web Fonts/Tahoe-Display.woff2') format('woff2'),
           url('./fonts/tahoe/Web Fonts/Tahoe-Display.woff') format('woff');
      font-weight: 400;
      font-style: normal;
      font-display: block;
    }
  

    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

    :root {
      --c-black:  #000000;
      --c-white:  #FFFFFF;
      --c-purple: #787DFF;
      --c-cyan:   #01A9F2;
      /* Arena13 brand colors en formato vec3 para WebGL:
         #787DFF → 0.471, 0.490, 1.000
         #01A9F2 → 0.004, 0.663, 0.949 */
    }

    html { scroll-behavior: smooth; }

    body {
      background: #000;
      color: var(--c-white);
      font-family: 'Inter', system-ui, sans-serif;
      overflow-x: hidden;
      width: 100%;
      -webkit-font-smoothing: antialiased;
    }

    img { display: block; }
    a   { text-decoration: none; color: inherit; }
    ul  { list-style: none; }
  

    #gradient-canvas-container {
      position: fixed;
      inset: 0;
      z-index: -1;
      pointer-events: none;
      /* CSS Fallback: visible si WebGL falla o el ahorro de batería está activado */
      background-color: #000000;
      background-image: 
        radial-gradient(circle at 80% 20%, rgba(120, 125, 255, 0.15) 0%, transparent 50%),
        radial-gradient(circle at 20% 80%, rgba(1, 169, 242, 0.12) 0%, transparent 50%);
    }
    html.light-theme #gradient-canvas-container {
      background-color: #F4F4F6;
      background-image: 
        radial-gradient(circle at 80% 20%, rgba(120, 125, 255, 0.15) 0%, transparent 50%),
        radial-gradient(circle at 20% 80%, rgba(1, 169, 242, 0.15) 0%, transparent 50%);
    }
    .gradient-canvas-dynamic {
      width: 100%;
      height: 100%;
      display: block;
    }
  

    /* Wrapper fijo que centra la píldora */
    .header {
      position: fixed;
      top: 1.25rem;
      left: 0;
      right: 0;
      z-index: 200;
      display: flex;
      justify-content: center;
      pointer-events: none; /* el pointer-events real va en la píldora */
    }

    /* ── La píldora Liquid Glass ─────────────────────── */
    .header__pill {
      position: relative; /* Clave para el centrado absoluto del nav */
      pointer-events: all;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 0;
      padding: 0.55rem 0.7rem 0.55rem 1rem;
      border-radius: 50px;
      /* Liquid glass: negro ultra-translúcido + blur potente */
      background: rgba(0, 0, 0, 0.35);
      backdrop-filter: blur(22px) saturate(160%);
      -webkit-backdrop-filter: blur(22px) saturate(160%);
      /* Borde fino luminoso — single layer */
      border: 1px solid rgba(255, 255, 255, 0.10);
      box-shadow:
        0 0 0 1px rgba(120, 125, 255, 0.06) inset,
        0 8px 32px rgba(0, 0, 0, 0.45),
        0 1px 0 rgba(255,255,255,0.06) inset;
      /* Ancho máximo para que no llene toda la pantalla */
      width: clamp(480px, 62vw, 860px);
      /* Entrada suave al cargar */
      opacity: 0;
      transform: translateY(-8px);
    }

    /* ── Zona IZQUIERDA: Logo ────────────────────────── */
    .header__logo {
      flex-shrink: 0;
      display: flex;
      align-items: center;
      line-height: 0;
    }
    .header__logo img {
      height: 18px; /* Tamaño reducido para estética más premium/discreta */
      width: auto;
      object-fit: contain;
      opacity: 0.90;
      display: block;
    }

    /* ── Zona CENTRO: Links de nav ───────────────────── */
    .hero__scroll {
      position: absolute;
      bottom: 3rem;
      left: 50%;
      transform: translateX(-50%);
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 1rem;
      color: rgba(255,255,255,0.4);
      font-size: 0.85rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      font-weight: 300;
      opacity: 0; 
      z-index: 5; 
      pointer-events: none;
    }

    .hero__mobile-btn {
      display: none !important; /* Oculto en escritorio */
    }

    .header__nav {
      position: absolute;
      left: 50%;
      top: 50%;
      transform: translate(-50%, -50%);
      display: flex;
      align-items: center;
      gap: 0.15rem;
    }

    .nav-link {
      position: relative;
      font-size: 0.72rem;
      font-weight: 500;
      letter-spacing: 0.06em;
      color: #FFFFFF;
      padding: 0.45rem 0.9rem;
      border-radius: 40px;
      white-space: nowrap;
      z-index: 1;
    }

    /* Subrayado Fluido (Underline Gradient) */
    .nav-link::after {
      content: "";
      position: absolute;
      bottom: 0.25rem;
      left: 0.9rem;
      right: 0.9rem;
      height: 2px;
      background: linear-gradient(90deg, #787DFF, #01A9F2);
      transform: scaleX(0);
      transform-origin: center;
      transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
      border-radius: 2px;
    }

    .nav-link:hover::after {
      transform: scaleX(1);
    }

    /* ── Zona DERECHA: Botón Contacto ────────────────── */
    .header__cta {
      flex-shrink: 0;
      display: flex;
      align-items: center;
    }

    /* ── Shimmer Button (Efecto Ripple & White Shimmer) ── */
    .btn-shimmer {
      position: relative;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      padding: 0.55rem 1.2rem;
      border-radius: 40px;
      background: transparent;
      color: #FFFFFF;
      font-size: 0.72rem;
      font-weight: 600;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      overflow: hidden;
      cursor: pointer;
      border: none;
      z-index: 1;
      box-shadow: 0 0 15px rgba(120, 125, 255, 0.1), inset 0 0 0 1px rgba(255,255,255,0.05);
      transition: transform 0.25s ease;
      white-space: nowrap;
    }

    .btn-shimmer:hover {
      transform: scale(1.03);
    }

    /* Contenedor del anillo giratorio perimetral */
    .btn-shimmer__spin {
      position: absolute;
      top: 50%;
      left: 50%;
      width: 250%; /* Cubre bordes al rotar */
      aspect-ratio: 1;
      transform: translate(-50%, -50%);
      animation: spin-shimmer 3s linear infinite;
      z-index: -2;
    }

    /* Capas del gradiente (transición color -> blanco) */
    .btn-shimmer__spin-color, .btn-shimmer__spin-white {
      position: absolute;
      inset: 0;
      transition: opacity 0.4s ease;
    }

    .btn-shimmer__spin-color {
      background: conic-gradient(from 0deg, transparent 0%, transparent 75%, #01A9F2 88%, #787DFF 100%);
    }

    /* ── Estado Activo para Enlaces (Click & Scroll) ── */
    .nav-link.is-active-nav::after {
      transform: scaleX(1);
    }
    .btn-shimmer.is-active-nav {
      transform: scale(1.03);
      box-shadow: 0 0 20px rgba(120, 125, 255, 0.4), inset 0 0 0 1px rgba(255,255,255,0.2);
    }
    .btn-shimmer.is-active-nav .btn-shimmer__core {
      background: rgba(255,255,255,0.1);
    }
    .btn-shimmer.is-active-nav .btn-shimmer__spin-color {
      opacity: 1; /* Forzamos que se vea girando intensamente */
    }

    .btn-shimmer__spin-white {
      background: conic-gradient(from 0deg, transparent 0%, transparent 75%, #FFFFFF 88%, #FFFFFF 100%);
      opacity: 0;
    }

    .btn-shimmer:hover .btn-shimmer__spin-color { opacity: 0; }
    .btn-shimmer:hover .btn-shimmer__spin-white { opacity: 1; }

    /* Núcleo oscuro premium */
    .btn-shimmer__core {
      position: absolute;
      inset: 1px; /* El borde que queda al descubierto */
      border-radius: 40px;
      background: rgba(10, 10, 14, 0.95);
      backdrop-filter: blur(10px);
      z-index: -1;
    }

    /* Relleno para la onda de líquido */
    .btn-shimmer__fill {
      position: absolute;
      inset: 1px;
      border-radius: 40px;
      background: linear-gradient(90deg, #01A9F2, #787DFF);
      z-index: 0;
      pointer-events: none;
      /* Animado dinámicamente con clipPath circle en JS */
      opacity: 0;
    }

    .btn-shimmer__text {
      position: relative;
      z-index: 1;
    }

    /* Modificador Invertido (Blanco/Negro) */
    .btn-shimmer--light {
      color: #000000;
      box-shadow: 0 0 15px rgba(120, 125, 255, 0.1), inset 0 0 0 1px rgba(0,0,0,0.1);
      transition: color 0.25s ease, transform 0.25s ease;
    }
    .btn-shimmer--light:hover {
      color: #FFFFFF;
    }
    .btn-shimmer--light .btn-shimmer__core {
      background: rgba(255, 255, 255, 0.95);
    }
    .btn-shimmer--light .btn-shimmer__spin-white {
      /* El anillo perimetral se vuelve negro puro en hover para contrastar sobre blanco */
      background: conic-gradient(from 0deg, transparent 0%, transparent 75%, #000000 88%, #000000 100%);
    }
    .btn-shimmer--light .btn-shimmer__fill {
      /* El ripple en hover se oscurece un poco para mantener contraste con letras negras, 
         o podemos mantenerlo con los colores de marca. Lo mantenemos igual por consistencia de marca. */
    }

    @keyframes spin-shimmer {
      0% { transform: translate(-50%, -50%) rotate(0deg); }
      100% { transform: translate(-50%, -50%) rotate(360deg); }
    }

    /* ─── HAMBURGER & MOBILE NAV OVERLAY ─────────────────────── */
    .header__hamburger {
      display: none;
      flex-direction: column;
      justify-content: space-between;
      width: 24px;
      height: 16px;
      background: transparent;
      border: none;
      cursor: pointer;
      z-index: 1000;
      margin-left: 1rem;
    }
    .hamburger-line {
      display: block;
      width: 100%;
      height: 2px;
      background: #fff;
      transition: all 0.3s ease;
      border-radius: 2px;
    }
    .header__hamburger.active .hamburger-line:nth-child(1) {
      transform: translateY(7px) rotate(45deg);
    }
    .header__hamburger.active .hamburger-line:nth-child(2) {
      opacity: 0;
    }
    .header__hamburger.active .hamburger-line:nth-child(3) {
      transform: translateY(-7px) rotate(-45deg);
    }

    .mobile-nav-overlay {
      position: fixed;
      inset: 0;
      background: rgba(0, 0, 0, 0.95);
      backdrop-filter: blur(20px);
      -webkit-backdrop-filter: blur(20px);
      z-index: 150;
      display: flex;
      align-items: center;
      justify-content: center;
      opacity: 0;
      pointer-events: none;
      transition: opacity 0.4s ease;
    }
    .mobile-nav-overlay.active {
      opacity: 1;
      pointer-events: auto;
    }
    .mobile-nav__links {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 2rem;
    }
    .mobile-nav-link {
      font-family: 'Monstral', sans-serif;
      font-size: 3rem;
      color: #fff;
      text-transform: uppercase;
      text-decoration: none;
      transition: color 0.3s ease;
    }
    .mobile-nav-link:hover {
      color: #01A9F2;
    }
  

    /* Copiado de la arquitectura de Digital Present:
       .hero con min-height:100svh y grid para positioning */
    .hero {
      position: relative;
      z-index: 10;
      min-height: 100svh;
      display: flex;
      flex-direction: column;
      overflow: hidden;
    }

    .hero__inner {
      position: relative;
      z-index: 1;
      flex: 1;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: space-between; /* Empuja el H1 arriba y la descripción abajo */
      padding-top: 18vh; /* Separación bajo el Header */
      padding-bottom: 8vh; /* Separación sobre el Scroll Indicator */
      width: 100%;
      padding-left: 5vw;
      padding-right: 5vw;
    }

    /* ── Sub-text / Eyebrow ─────────────────────── */
    .sub-text {
      display: block; /* Necesario para que el margin vertical haga efecto real */
      font-family: 'Inter', sans-serif; /* Tipografía geométrica pura y pulida */
      font-weight: 300;
      font-style: normal;
      font-size: clamp(1.5rem, 3vw, 2.2rem); /* Tamaño ajustado para balance */
      color: #FFFFFF;
      letter-spacing: 0.15em;
      margin-bottom: -1.5rem; /* Margen calibrado para no superponerse al H1 */
      opacity: 0; /* anim-fade-in state */
    }
    .sub-text em {
      font-style: italic;
      color: rgba(255,255,255,0.45);
    }
    .sub-text b {
      font-style: normal;
      font-weight: 400;
      color: rgba(255,255,255,0.85);
    }

    /* ── Main heading H1 ────────────────────────── */
    /*
     * Digital Present usa la clase .heading en el span interior del H1.
     * SplitText (GSAP) lo procesa con scaleY 0→1 stagger from:"center"
     * Nosotros clonamos ese comportamiento exacto.
     */
    .hero__h1 {
      width: 100%;
      text-align: center;
      line-height: 0.85;
      perspective: 1000px;
    }

    .main-text {
      display: block;
      font-family: 'Monstral', sans-serif; /* Nueva tipografía masiva */
      font-weight: 700;
      font-size: clamp(6rem, 14vw, 24rem); /* Impacto masivo */
      line-height: 0.8; /* Interlineado ultra ajustado */
      letter-spacing: -0.02em; /* Tracking negativo moderado para Monstral */
      text-transform: uppercase;
      color: var(--c-white);
      white-space: nowrap; /* Fuerza que se mantenga en 1 línea para animación limpia */
    }

    .heading-wrapper {
      position: relative;
      overflow: hidden; /* Enmascara la animación horizontal */
      width: 100%;
      height: 1.4em; /* Altura de seguridad para evitar recorte vertical en Monstral */
      margin: 0 auto;
      margin-top: -1.5rem; /* Sube el H1 para unirse a la ceja limpiamente */
    }

    .word-rotator {
      position: absolute;
      top: 0.25em; /* Empuja el texto hacia abajo dentro del wrapper para usar la zona segura */
      left: 0;
      width: 100%;
      text-align: center;
      will-change: transform, opacity;
      transform: translateZ(0); /* Force GPU compositing */

      /* DiaTextReveal (Barrido de color líquido) */
      background-image: linear-gradient(
        to right,
        #FFFFFF 0%,           /* Final sólido blanco */
        #FFFFFF 33%,
        #787DFF 45%,          /* Morado transición */
        #01A9F2 55%,          /* Cyan punta de ola */
        rgba(1, 169, 242, 0) 66%, /* Desvanecimiento hacia transparente */
        rgba(255, 255, 255, 0) 100%
      );
      background-size: 300% 100%;
      background-position: 100% 0; /* Inicia mostrando la parte transparente a la derecha */
      -webkit-background-clip: text;
      -webkit-text-fill-color: transparent;
      background-clip: text;
      color: transparent;

      /* Oculto inicialmente (gestionado por GSAP) */
      opacity: 0;
    }

    /* ── Descripción pequeña bajo el H1 (Bottom Layout) ─────────── */
    .small-description {
      /* Estilos generales definidos en el HTML, aquí añadimos ajustes de alineación */
      align-self: flex-start; /* Alineado a la izquierda */
      text-align: left;
      opacity: 0; /* anim-fade-in */
    }

    /* ── Hero description block (fondo derecho) ─── */
    .hero__description {
      position: relative;
      z-index: 1;
      padding: 2.5rem 2.5rem 2.5rem;
      display: flex;
      justify-content: flex-end;
      align-items: flex-end;
    }

    .description-md {
      max-width: 460px;
      font-size: 0.78rem;
      line-height: 1.7;
      letter-spacing: 0.01em;
      color: rgba(255,255,255,0.35);
      font-weight: 400;
      text-align: right;
      opacity: 0; /* anim-fade-in */
    }

  

    .cursor-glow {
      position: fixed;
      top: 0;
      left: 0;
      width: 600px;
      height: 600px;
      border-radius: 50%;
      pointer-events: none;
      z-index: 10;
      background: radial-gradient(circle, rgba(1, 169, 242, 0.15) 0%, rgba(1, 169, 242, 0) 70%);
      mix-blend-mode: screen;
      transform: translate(-50%, -50%);
      will-change: transform;
      transition: opacity 0.3s ease;
    }
  

    .page-section {
      position: relative;
      z-index: 10;
      min-height: 100vh;
      display: flex;
      align-items: center;
      justify-content: center;
      border-top: 1px solid rgba(255,255,255,0.04);
    }
    .section-content {
      position: relative;
      z-index: 1;
      font-size: 0.65rem;
      letter-spacing: 0.28em;
      text-transform: uppercase;
      color: rgba(255,255,255,0.3);
    }

    /* ─── SECCIÓN SERVICIOS (KINETIC SPLIT FULLSCREEN) ────────────────────────── */
    /* Forzar contenedor colapsado y rígido */
    .section-kinetic {
      position: relative;
      width: 100%;
      height: 100vh !important;
      overflow: hidden !important;
      display: flex;
      flex-direction: row;
      border: none;
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    /* Columna base */
    .kinetic-col {
      height: 100% !important;
      position: relative; /* Contenedor de referencia para los absolutos */
      display: flex;
      flex-direction: column;
      justify-content: flex-start;
      will-change: flex-grow;
      flex: 1;
      border-right: 1px solid rgba(255, 255, 255, 0.05);
      cursor: pointer;
      background-color: #050505;
      clip-path: inset(50% 0 50% 0);
    }
    
    .kinetic-col:last-child {
      border-right: none;
    }

    .kinetic-bg-text {
      position: absolute;
      top: 50%;
      left: 10%; /* Eje izquierdo unificado con el contenido */
      transform: translateY(-50%); /* Solo centrado vertical */
      font-family: 'Monstral', sans-serif;
      font-size: 3.4vw;
      font-weight: 800;
      text-transform: uppercase;
      text-align: left; /* Títulos apilados a la izquierda */
      line-height: 0.85;
      pointer-events: none;
      will-change: transform, font-size;
      color: transparent;
      -webkit-text-stroke: 1px rgba(255, 255, 255, 0.5); /* Trazo blanco brillante como pidió el usuario */
      background-image: linear-gradient(to right, #FFFFFF 0%, #FFFFFF 33%, #787DFF 45%, #01A9F2 55%, transparent 66%, transparent 100%);
      background-size: 300% 100%;
      background-position: 100% 0;
      -webkit-background-clip: text;
      background-clip: text;
      z-index: 0;
      /* Solución para que las tildes y las ñ no se recorten por el line-height apretado */
      padding-top: 0.2em;
      padding-bottom: 0.1em;
      margin-top: -0.2em;
      margin-bottom: -0.1em;
    }

    /* Forzar que TODO el bloque de texto descriptivo e items flote fuera del flujo vertical */
    .kinetic-content {
      position: absolute !important;
      top: 55%; /* Anclado ligeramente por debajo del centro vertical */
      transform: translateY(-50%); /* Centrado matemático sobre su propio eje */
      left: 10%; /* Eje izquierdo unificado con el título */
      width: 550px; /* Ancho rígido para evitar el reflow/ajuste de texto en tiempo real */
      max-width: 90vw; /* Seguro contra overflows horizontales en móviles */
      margin: 0 !important;
      padding: 0 !important;
      pointer-events: none; /* Evita interferencias con el hover de la columna */
      clip-path: inset(0% 100% 0% 0%); /* Oculto con barrido a la izquierda */
      display: flex;
      flex-direction: column;
      z-index: 1;
    }

    .kinetic-eyebrow {
      font-family: 'Inter', sans-serif;
      font-weight: 500;
      font-size: 0.9rem; /* Más grande */
      letter-spacing: 0.2em;
      color: #01A9F2;
      margin-bottom: 1.5rem;
    }

    .kinetic-title {
      font-family: 'Inter', sans-serif;
      font-weight: 500;
      font-size: clamp(2rem, 2.5vw, 2.8rem); /* Significativamente ampliado */
      line-height: 1.2;
      color: #FFFFFF;
      margin-bottom: 1rem;
      letter-spacing: -0.02em;
    }

    .kinetic-desc {
      font-family: 'Inter', sans-serif;
      font-weight: 300;
      font-size: 1.15rem; /* Más legible */
      line-height: 1.6;
      color: rgba(255, 255, 255, 0.6);
    }

    /* ─── RESPONSIVE DESIGN (MÓVIL & TABLET) ────────────────────────── */
    @media (max-width: 1024px) {
      .header__nav {
        display: none; /* Ocultar enlaces para mantener la pureza visual en pantallas menores */
      }
      .main-text {
        font-size: clamp(4rem, 14vw, 12rem);
      }
    }

    @media (max-width: 768px) {
      .header__pill {
        width: 92vw;
        padding: 0.5rem 1rem;
      }
      .header__hamburger {
        display: flex;
      }
      /* Reducimos el padding del CTA para que quepa junto a la hamburguesa */
      .btn-shimmer { padding: 0.55rem 0.8rem; }
      .hero__inner {
        align-items: center;
        justify-content: flex-start; /* Cambiamos a flex-start para controlar el flow manual */
        padding-top: 18vh; 
        padding-bottom: 5vh;
        gap: 1.5rem;
      }
      /* Fix para textos blancos recortados por el line-height ajustado en móviles */
      .main-text, .section-header, .about-headline, .footer__cta {
        line-height: 1.15 !important;
        padding-top: 0.15em !important;
        padding-bottom: 0.15em !important;
      }
      .main-text {
        font-size: clamp(2rem, 10vw, 3.8rem); 
        letter-spacing: -0.01em;
        text-shadow: 0 0 30px rgba(1, 169, 242, 0.4); /* Glow potente para destacar */
      }
      .sub-text {
        font-size: clamp(0.9rem, 3.5vw, 1.2rem);
        margin-bottom: 0.5rem;
      }
      .heading-wrapper {
        margin-top: 0.5rem;
        margin-bottom: 1rem;
        height: 1.65em !important; /* Altura fija necesaria porque los hijos son absolutos */
        padding-top: 0;
        padding-bottom: 0;
      }
      .word-rotator {
        top: 0.15em; /* Ajuste para centrar en móvil y no recortar */
      }
      .line {
        padding-top: 0.1em;
        padding-bottom: 0.1em;
      }
      /* Rediseño a "Glass Card" de la descripción */
      .small-description {
        text-align: left !important;
        align-self: stretch !important;
        font-size: 0.95rem !important;
        margin-top: 1rem !important; 
        max-width: 100% !important;
        background: rgba(255, 255, 255, 0.05);
        backdrop-filter: blur(15px);
        -webkit-backdrop-filter: blur(15px);
        border: 1px solid rgba(255, 255, 255, 0.1);
        padding: 1.5rem;
        border-radius: 16px;
        color: rgba(255, 255, 255, 0.85) !important;
        box-shadow: 0 10px 30px rgba(0,0,0,0.5);
      }
      .hero__mobile-btn {
        display: inline-flex !important; /* Mostrar en móvil */
        align-self: center;
      }
      .hero__scroll {
        bottom: 2rem;
      }
      .section-kinetic {
        height: auto !important;
        min-height: auto !important;
        max-height: none !important;
        overflow: visible !important;
        flex-direction: column;
      }
      .kinetic-col {
        height: auto !important;
        padding: 4rem 5%;
        border-right: none;
        border-bottom: 1px solid rgba(255, 255, 255, 0.05);
      }
      .kinetic-bg-text {
        position: relative !important; 
        top: 0 !important;
        left: 0 !important;
        transform: none !important;
        text-align: left;
        width: 100%;
        opacity: 1;
        line-height: 1.15 !important;
        padding-top: 0.2em !important;
        padding-bottom: 0.1em !important;
        font-size: clamp(2rem, 8vw, 3rem) !important; /* Reducido para que quepa "AUTOMATIZACIÓN" */
        margin-bottom: 1rem;
        white-space: normal;
        /* Limpiar strokes dobles y forzar gradiente sólido */
        -webkit-text-stroke: 0px transparent !important;
        color: transparent !important;
        background-position: 0% 0 !important;
        padding-top: 0 !important;
        margin-top: 0 !important;
      }
      .kinetic-content {
        position: relative !important;
        top: auto !important;
        left: auto !important;
        transform: none !important;
        width: 100% !important;
        max-width: 100% !important;
        clip-path: none !important; /* Siempre visible, anula GSAP */
        pointer-events: auto !important;
        display: flex;
        flex-direction: column;
        align-items: flex-start;
      }
      .kinetic-title {
        font-size: clamp(1.8rem, 8vw, 2.5rem);
      }
      .kinetic-desc {
        font-size: 1rem;
      }
    }
/* %%% KINETIC CTA %%%%%%%%%%%%%%%%%%%%%%%%%% */
.kinetic-cta {
  display: inline-flex;
  align-items: center;
  margin-top: 2rem;
  padding: 0.8rem 1.5rem;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 40px;
  color: #fff;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  text-decoration: none;
  pointer-events: auto;
  transition: all 0.3s ease;
  align-self: flex-start;
}
.kinetic-cta:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.5);
}
.kinetic-cta .arrow {
  margin-left: 0.5rem;
  transition: transform 0.3s ease;
}
.kinetic-cta:hover .arrow {
  transform: translateX(4px);
}

/* %%% PROYECTOS (HOVER REVEAL) %%%%%%%%%%%%%%%%%%%%%%%%%% */
.projects-section {
  position: relative;
  min-height: 100vh;
  padding: 15vh 5vw;
  background-color: transparent;
  display: flex;
  flex-direction: column;
  justify-content: center;
  border-top: 1px solid rgba(255,255,255,0.04);
}

.projects-section .section-header {
  font-family: 'Inter', sans-serif;
  font-size: 0.85rem;
  font-weight: 500;
  letter-spacing: 0.25em;
  color: var(--c-cyan);
  text-transform: uppercase;
  margin-bottom: 5rem;
}

.projects-list {
  display: flex;
  flex-direction: column;
  list-style: none;
  gap: 0;
  position: relative;
  z-index: 2;
  margin: 0;
  padding: 0;
}

.project-item {
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 2rem 0; /* Espaciado más reducido */
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
  cursor: pointer;
  transition: all 0.4s ease;
  /* NO poner z-index aquí para no crear un stacking context cerrado */
}

.project-item:first-child {
  border-top: 1px solid rgba(255, 255, 255, 0.05);
}

.project-title {
  position: relative;
  z-index: 10; /* Textos por defecto quedan por debajo del cursor (z-index 50) */
  font-family: 'Monstral', sans-serif;
  font-size: clamp(2rem, 5vw, 5.5rem); /* Texto significativamente más pequeño */
  font-weight: 800;
  text-transform: uppercase;
  line-height: 0.85;
  color: transparent !important;
  -webkit-text-stroke: 1px rgba(255, 255, 255, 0.5);
  background-image: linear-gradient(to right, #FFFFFF 0%, #FFFFFF 33%, #787DFF 45%, #01A9F2 55%, transparent 66%, transparent 100%);
  background-size: 300% 100%;
  background-position: 100% 0;
  -webkit-background-clip: text;
  background-clip: text;
  transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1), background-position 1.2s cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
  /* Solución para que las tildes y las ñ no se recorten en background-clip */
  padding-top: 0.2em;
  padding-bottom: 0.1em;
  margin-top: -0.2em;
  margin-bottom: -0.1em;
}

.project-item:hover .project-title {
  z-index: 60; /* El texto en hover salta por encima del cursor (z-index 50) */
  background-position: 0% 0;
  -webkit-text-stroke: 1px transparent;
  transform: translateX(20px);
}

.project-tags {
  position: relative;
  z-index: 10; /* Textos por defecto por debajo del cursor */
  font-family: 'Inter', sans-serif;
  font-size: 0.85rem;
  font-weight: 300;
  letter-spacing: 0.1em;
  color: rgba(255, 255, 255, 0.5);
  text-transform: uppercase;
  pointer-events: none;
  transition: all 0.4s ease;
}

.project-item:hover .project-tags {
  opacity: 1;
  color: #fff;
  transform: translateX(-10px);
}

.project-preview-cursor {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  z-index: 50; /* Queda por encima del texto base (10) y bordes (auto), pero debajo del hover (60) */
  opacity: 0;
  will-change: opacity;
}

.project-cursor-card {
  position: absolute;
  top: 0;
  left: 0;
  width: 20vw;
  height: 14vw;
  min-width: 200px;
  min-height: 140px;
  max-width: 320px;
  max-height: 224px;
  background-size: cover;
  background-position: center;
  border-radius: 12px;
  box-shadow: 0 20px 40px rgba(0,0,0,0.5);
  border: 1px solid rgba(255, 255, 255, 0.05);
  pointer-events: none;
  /* El CSS x/y/left/top se inyecta por GSAP */
  transform-origin: center center;
  /* OPTIMIZACIÓN RENDIMIENTO: forzamos a la GPU a precalcular la capa */
  will-change: transform, opacity;
  transform: translateZ(0);
}

/* ─── RESPONSIVE MÓVIL: PROYECTOS ────────────────────────── */
.project-mobile-gallery { display: none; }

@media (max-width: 768px) {
  .projects-section {
    padding: 10vh 5vw;
  }
  .projects-section .section-header {
    margin-bottom: 3rem;
  }
  .project-item {
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
    padding: 2rem 0;
  }
  .project-title {
    font-size: clamp(2.5rem, 12vw, 4rem);
  }
  .project-tags {
    font-size: 0.8rem;
    letter-spacing: 0.05em;
    margin-bottom: 1rem;
    opacity: 1; /* Forzamos visibilidad de la etiqueta */
    color: #01A9F2;
  }
  .project-item:hover .project-title {
    transform: none; /* Quitamos hover transform lateral en móvil */
  }
  .project-item:hover .project-tags {
    transform: none;
  }
  /* Galería deslizante nativa para las imágenes */
  .project-mobile-gallery {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    width: 100%;
    padding-bottom: 15px;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .project-mobile-gallery::-webkit-scrollbar {
    display: none;
  }
  .project-mobile-gallery img {
    height: 180px;
    width: auto;
    border-radius: 8px;
    object-fit: cover;
    flex-shrink: 0;
    box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  }
}

/* ─── SECCIÓN SOBRE MÍ (EDITORIAL) ────────────────────────────────────── */
.about-section {
  position: relative;
  width: 100%;
  min-height: 100vh;
  background-color: transparent;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  padding: 8rem 5%;
}

.about-container {
  position: relative;
  z-index: 10;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  max-width: 1400px;
  gap: 6rem;
  /* Efecto Liquid Glass (Card) */
  padding: 4rem;
  border-radius: 24px;
  background: rgba(18, 18, 22, 0.40);
  backdrop-filter: blur(22px) saturate(160%);
  -webkit-backdrop-filter: blur(22px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.10);
  box-shadow:
    0 0 0 1px rgba(120, 125, 255, 0.06) inset,
    0 8px 32px rgba(0, 0, 0, 0.45),
    0 1px 0 rgba(255, 255, 255, 0.06) inset;
}

.about-content {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.about-headline {
  font-family: 'Inter', sans-serif;
  font-size: clamp(1.5rem, 2.5vw, 2.8rem);
  font-weight: 400;
  letter-spacing: -0.03em;
  line-height: 1.1;
  color: #fff;
  margin-bottom: 3rem;
}

.about-headline .line {
  overflow: hidden;
}
.about-headline .line .word {
  transform: translateY(100%);
  will-change: transform;
}

.about-text-block {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  max-width: 600px;
}

.about-paragraph {
  font-family: 'Inter', sans-serif;
  font-size: 1.15rem;
  font-weight: 300;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.6);
  opacity: 0;
  transform: translateY(20px);
}

.about-paragraph strong {
  font-weight: 500;
  color: #fff;
}

.about-image-wrapper {
  flex: 1;
  max-width: 500px;
  aspect-ratio: 4/5;
  border-radius: 12px;
  overflow: hidden;
  position: relative;
  box-shadow: 0 30px 60px rgba(0,0,0,0.5);
  border: 1px solid rgba(255, 255, 255, 0.1);
  opacity: 0;
  transform: scale(0.95);
}

.about-image-inner {
  position: absolute;
  top: -10%;
  left: -10%;
  width: 120%;
  height: 120%;
  background-size: cover;
  background-position: center;
  filter: grayscale(100%) contrast(1.2);
  will-change: transform;
}

@media (max-width: 1024px) {
  .about-container {
    flex-direction: column-reverse;
    gap: 4rem;
    padding: 3rem 2rem; /* Reducido de 4rem */
  }
  .about-image-wrapper {
    width: 100%;
    max-width: 100%;
  }
  .about-headline {
    margin-bottom: 2rem;
  }
}
@media (max-width: 768px) {
  .about-container {
    padding: 2rem 1.5rem; /* Aún más reducido para móvil */
    border-radius: 16px;
  }
  .about-headline {
    font-size: clamp(1.8rem, 8vw, 2.2rem);
  }
  .about-paragraph {
    font-size: 1rem;
  }
}

/* ─── FOOTER ───────────────────────────────────────────────────────── */
.footer {
  position: relative;
  width: 100%;
  background-color: transparent;
  color: #fff;
  padding: 8rem 5% 4rem;
  overflow: hidden;
  z-index: 10;
}

.footer__inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 5rem;
}

/* CTA Gigante */
.footer__cta {
  font-family: 'Monstral', sans-serif;
  font-size: clamp(4rem, 15vw, 16rem);
  font-weight: 800;
  line-height: 0.8;
  color: transparent;
  -webkit-text-stroke: 3px rgba(255, 255, 255, 0.3); /* Trazo engrosado a 3px por petición del usuario */
  text-decoration: none;
  display: inline-block;
  margin-left: -0.5vw; /* Compensate for exact alignment */
  transition: -webkit-text-stroke 0.4s ease;
  background-image: linear-gradient(to right, #FFFFFF 0%, #FFFFFF 33%, #787DFF 45%, #01A9F2 55%, transparent 66%, transparent 100%);
  background-size: 300% 100%;
  background-position: 100% 0;
  -webkit-background-clip: text;
  background-clip: text;
}

.footer__cta:hover, .footer__cta:focus-visible {
  -webkit-text-stroke: 0px transparent;
  background-position: 0% 0;
  transition: background-position 1.2s cubic-bezier(0.22, 1, 0.36, 1), -webkit-text-stroke 0.4s ease;
  outline: none;
}

.footer__cta:focus-visible {
  outline: 2px dashed #787DFF;
  outline-offset: 10px;
}

/* Grid Central */
.footer__grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  gap: 3rem;
  padding-bottom: 4rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.footer__col {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.footer__logo-img {
  width: 120px;
  height: auto;
  opacity: 0.9;
  margin-bottom: 0.5rem;
}

.footer__desc {
  font-family: 'Inter', sans-serif;
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.6);
  line-height: 1.6;
}

.footer__col-title {
  font-family: 'Inter', sans-serif;
  font-size: 0.85rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: #fff;
  margin-bottom: 0.5rem;
}

.footer__links {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.footer__links a {
  font-family: 'Inter', sans-serif;
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.6);
  text-decoration: none;
  transition: color 0.3s ease;
  position: relative;
  display: inline-block;
  width: fit-content;
}

.footer__links a:hover, .footer__links a:focus-visible {
  color: #fff;
  outline: none;
}

.footer__links a:focus-visible {
  text-decoration: underline;
  text-decoration-color: #01A9F2;
  text-underline-offset: 4px;
}

/* Sub-footer Legal */
.footer__bottom {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 1rem;
}

.footer__copy {
  font-family: 'Inter', sans-serif;
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.4);
}

.footer__legal {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  gap: 2rem;
}

.footer__legal a {
  font-family: 'Inter', sans-serif;
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.4);
  text-decoration: none;
  transition: color 0.3s ease;
}

.footer__legal a:hover, .footer__legal a:focus-visible {
  color: #fff;
}

@media (max-width: 768px) {
  .footer__grid {
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
  }
  .footer__col:first-child {
    grid-column: span 2; /* Info de la marca ocupa 2 columnas completas */
    margin-bottom: 2rem;
  }
  .footer__cta {
    /* En móvil lo mostramos rellenado directamente sin necesitar hover */
    -webkit-text-stroke: 0px transparent;
    background-position: 0% 0;
  }
  .footer__bottom {
    flex-direction: column-reverse;
    align-items: flex-start;
  }
  .footer__legal {
    flex-direction: column;
    gap: 1rem;
  }
}

/* ─── CONTACT CARDS SECTION ───────────────────────────────── */
.contact-cards-section {
  flex-direction: column;
  padding: 8rem 5vw 4rem;
  min-height: auto;
}

.contact-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
  width: 100%;
  max-width: 1200px;
  margin-top: 4rem;
}

.contact-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 3rem 2rem;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.03);
  backdrop-filter: blur(22px) saturate(160%);
  -webkit-backdrop-filter: blur(22px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
  text-decoration: none;
  transition: transform 0.4s ease, background 0.4s ease, border-color 0.4s ease;
  position: relative;
  overflow: hidden;
}

.contact-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  background: linear-gradient(135deg, rgba(120, 125, 255, 0.1), rgba(1, 169, 242, 0.1));
  opacity: 0;
  transition: opacity 0.4s ease;
  z-index: 0;
}

.contact-card:hover {
  transform: translateY(-5px);
  border-color: rgba(255, 255, 255, 0.2);
}

.contact-card:hover::before {
  opacity: 1;
}

.contact-card > * {
  position: relative;
  z-index: 1;
}

.contact-card__icon {
  color: #FFFFFF;
  margin-bottom: 1.5rem;
  filter: drop-shadow(0 0 8px rgba(255,255,255,0.2));
  transition: transform 0.4s ease;
}

.contact-card:hover .contact-card__icon {
  transform: scale(1.1);
}

.contact-card__title {
  font-family: 'Inter', sans-serif;
  font-weight: 500;
  font-size: 1.4rem;
  color: #FFFFFF;
  margin-bottom: 0.5rem;
  letter-spacing: -0.02em;
}

.contact-card__desc {
  font-family: 'Inter', sans-serif;
  font-size: 0.95rem;
  color: rgba(255, 255, 255, 0.65);
  line-height: 1.5;
}

@media (max-width: 900px) {
  .contact-grid {
    grid-template-columns: 1fr;
    gap: 1.5rem;
  }
}

/* ─── THEME TOGGLE BUTTON ────────────────────────────────────────── */
.theme-toggle {
  position: fixed;
  bottom: 2rem;
  right: 2rem;
  height: 50px;
  padding: 0 1.2rem;
  border-radius: 25px;
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  cursor: pointer;
  z-index: 9999;
  transition: transform 0.3s ease, background 0.3s ease, color 0.3s ease, border-color 0.3s ease;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  font-family: 'Inter', sans-serif;
  font-size: 0.85rem;
  font-weight: 500;
  color: #ffffff;
}

.theme-toggle:hover {
  transform: scale(1.05);
  background: rgba(255, 255, 255, 0.2);
}

.theme-toggle__text::before {
  content: "Modo Claro";
}

.theme-toggle__icon {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #fff;
  transition: transform 0.4s ease, background 0.4s ease;
}

/* ─── LIGHT THEME OVERRIDES ──────────────────────────────────────── */
/* Global Transition */
html, body, .header, .about-container, .footer, .project-item, h1, h2, h3, p, a, .nav-link, .canvas-wrapper {
  transition: background-color 0.5s ease, color 0.5s ease, border-color 0.5s ease, box-shadow 0.5s ease, filter 0.5s ease;
}

html.light-theme body,
html.light-theme .kinetic-col {
  background-color: #F4F4F6;
  color: #111111;
}

/* Línea divisoria de las columnas de servicios más visible en modo claro */
html.light-theme .kinetic-col {
  border-right: 1px solid rgba(0, 0, 0, 0.15);
}
html.light-theme .kinetic-col:last-child {
  border-right: none;
}

/* Ocultar/invertir líneas blancas estructurales */
html.light-theme .page-section {
  border-top: 1px solid rgba(0,0,0,0.04);
}


/* Remove Invert WebGL Canvas Background */
html.light-theme .canvas-wrapper {
  /* El canvas ahora tiene opacidad 100% para que los colores sean exactamente igual de vivos que en Dark Mode. */
  opacity: 1;
}

/* Typography Colors */
html.light-theme h1, 
html.light-theme h2, 
html.light-theme h3, 
html.light-theme h4, 
html.light-theme .hero-title,
html.light-theme .word-rotator,
html.light-theme .about-headline,
html.light-theme .footer__col-title {
  color: #050505;
}

html.light-theme p,
html.light-theme .small-description,
html.light-theme .about-paragraph,
html.light-theme .footer__desc,
html.light-theme .sub-text,
html.light-theme .section-header,
html.light-theme .project-tags,
html.light-theme [style*="color: rgba(255,255,255"] {
  color: rgba(0, 0, 0, 0.75) !important;
}

html.light-theme .word-rotator {
  background-image: linear-gradient(
    to right,
    #111111 0%,           /* Final sólido negro en modo claro */
    #111111 33%,
    #787DFF 45%,
    #01A9F2 55%,
    rgba(1, 169, 242, 0) 66%,
    rgba(17, 17, 17, 0) 100%
  );
}

html.light-theme .btn-shimmer__text {
  color: #111111;
}

/* Invert default buttons to light theme (Core blanco, hover gradient original) */
html.light-theme .btn-shimmer__core {
  background: rgba(255, 255, 255, 0.95);
}
html.light-theme .btn-shimmer:hover .btn-shimmer__text {
  color: #FFFFFF;
}

/* Excepción: Botones dentro de Servicios en Modo Claro deben ser Negros (Core) y Letras Blancas */
html.light-theme .kinetic-col .btn-shimmer__core {
  background: #111111;
}
html.light-theme .kinetic-col .btn-shimmer__text {
  color: #FFFFFF;
}
html.light-theme .kinetic-col .btn-shimmer:hover .btn-shimmer__text {
  color: #FFFFFF;
}

html.light-theme .about-paragraph strong {
  color: #000;
}

/* Glassmorphism Containers */
html.light-theme .header__pill,
html.light-theme .about-container {
  background: rgba(255, 255, 255, 0.65) !important;
  border: 1px solid rgba(0, 0, 0, 0.05) !important;
  box-shadow: 
    0 8px 32px rgba(0, 0, 0, 0.04),
    0 1px 0 rgba(255,255,255,0.8) inset !important;
}
/* Asegurar que el contenedor ancho no tenga fondo */
html.light-theme .header {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

/* Cambio dinámico del logo al modo claro usando CSS content override */
html.light-theme .header__logo img,
html.light-theme .footer__logo-img {
  content: url('logo-dark.png');
}

/* Contact Cards Light Theme */
html.light-theme .contact-card {
  background: rgba(255, 255, 255, 0.65);
  border: 1px solid rgba(0, 0, 0, 0.05);
  box-shadow: 
    0 8px 32px rgba(0, 0, 0, 0.04),
    0 1px 0 rgba(255,255,255,0.8) inset;
}
html.light-theme .contact-card:hover {
  border-color: rgba(0, 0, 0, 0.15);
}
html.light-theme .contact-card__title,
html.light-theme .contact-card__icon {
  color: #050505;
}
html.light-theme .contact-card__desc {
  color: rgba(0, 0, 0, 0.65);
}

html.light-theme .nav-link {
  color: #111;
}

/* Footer Overrides */
html.light-theme .footer {
  background-color: transparent;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
}

html.light-theme .footer__copy,
html.light-theme .footer__links a,
html.light-theme .footer__legal a {
  color: rgba(0, 0, 0, 0.6);
}

html.light-theme .footer__links a:hover,
html.light-theme .footer__legal a:hover {
  color: #000;
}

/* Strokes (Services, Projects, CTA) */
html.light-theme .kinetic-bg-text,
html.light-theme .footer__cta {
  -webkit-text-stroke-color: rgba(0, 0, 0, 0.25);
}

html.light-theme .project-title,
html.light-theme .footer__cta {
  color: transparent !important; /* Evita que la regla general de h2 lo pinte de negro fijo */
  -webkit-text-stroke-color: rgba(0, 0, 0, 0.4);
  /* Mantenemos el mismo efecto líquido pero rellenando de negro en lugar de blanco */
  background-image: linear-gradient(to right, #111111 0%, #111111 33%, #787DFF 45%, #01A9F2 55%, transparent 66%, transparent 100%);
}

/* Redefinición del gradiente de Servicios para que en el hover se rellene de negro */
html.light-theme .kinetic-bg-text {
  background-image: linear-gradient(
    to right,
    #111111 0%,           /* Final sólido negro en modo claro */
    #111111 33%,
    #787DFF 45%,
    #01A9F2 55%,
    rgba(1, 169, 242, 0) 66%,
    rgba(17, 17, 17, 0) 100%
  );
}

html.light-theme .project-title {
  -webkit-text-stroke-color: rgba(0, 0, 0, 0.4);
}

/* Projects Lines */
html.light-theme .project-item {
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
html.light-theme .project-category {
  color: rgba(0,0,0,0.5);
}

/* Light Theme Modifiers for Toggle Button */
html.light-theme .theme-toggle {
  background: rgba(0, 0, 0, 0.05);
  border-color: rgba(0, 0, 0, 0.1);
  color: #111111;
  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
html.light-theme .theme-toggle:hover {
  background: rgba(0, 0, 0, 0.1);
}
html.light-theme .theme-toggle__text::before {
  content: "Modo Oscuro";
}
html.light-theme .theme-toggle__icon {
  background: #111;
  transform: translateX(0); /* Evitamos desplazamiento extraño si lo hubiera */
}

/* Light Theme Nav & Hamburger */
html.light-theme .hamburger-line { background: #111; }
html.light-theme .mobile-nav-overlay { background: rgba(255, 255, 255, 0.95); }
html.light-theme .mobile-nav-link { color: #111; }
html.light-theme .mobile-nav-link:hover { color: #787DFF; }

/* ─── BANNER DE COOKIES ───────────────────────────────────── */
.cookie-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  z-index: 9999;
  padding: 1.5rem;
  background: rgba(10, 10, 10, 0.85);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  transform: translateY(100%);
  opacity: 0;
  visibility: hidden;
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.6s ease, visibility 0.6s;
}
.cookie-banner.show {
  transform: translateY(0);
  opacity: 1;
  visibility: visible;
}
.cookie-banner__content {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
}
.cookie-banner__content p {
  margin: 0;
  font-size: 0.85rem;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.7);
}
.cookie-banner__content a {
  color: var(--c-white);
  text-decoration: underline;
}
.cookie-banner__actions {
  display: flex;
  gap: 1rem;
  flex-shrink: 0;
}
.cookie-btn {
  padding: 0.6rem 1.5rem;
  font-family: inherit;
  font-size: 0.85rem;
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.3s ease;
}
.cookie-btn--outline {
  background: transparent;
  color: var(--c-white);
  border: 1px solid rgba(255, 255, 255, 0.3);
}
.cookie-btn--outline:hover {
  background: rgba(255, 255, 255, 0.1);
}
.cookie-btn--solid {
  background: linear-gradient(90deg, var(--c-purple), var(--c-cyan));
  color: var(--c-white);
  border: none;
  box-shadow: 0 4px 15px rgba(120, 125, 255, 0.2);
}
.cookie-btn--solid:hover {
  filter: brightness(1.15);
  box-shadow: 0 6px 20px rgba(120, 125, 255, 0.4);
}

html.light-theme .cookie-banner {
  background: rgba(255, 255, 255, 0.85);
  border-top: 1px solid rgba(0, 0, 0, 0.1);
}
html.light-theme .cookie-banner__content p {
  color: rgba(0, 0, 0, 0.7);
}
html.light-theme .cookie-banner__content a {
  color: var(--c-black);
}
html.light-theme .cookie-btn--outline {
  color: var(--c-black);
  border-color: rgba(0, 0, 0, 0.3);
}
html.light-theme .cookie-btn--outline:hover {
  background: rgba(0, 0, 0, 0.05);
}
html.light-theme .cookie-btn--solid {
  background: linear-gradient(90deg, var(--c-purple), var(--c-cyan));
  color: var(--c-white);
  border: none;
}
html.light-theme .cookie-btn--solid:hover {
  filter: brightness(1.1);
}

@media (max-width: 768px) {
  .cookie-banner__content {
    flex-direction: column;
    align-items: flex-start;
    gap: 1.5rem;
  }
  .cookie-banner__actions {
    width: 100%;
    display: grid;
    grid-template-columns: 1fr 1fr;
  }
}
