@font-face {
    font-family: 'Disket Mono';
    src: url('../fonts/disket-mono-regular.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
}

@font-face {
    font-family: 'Disket Mono';
    src: url('../fonts/disket-mono-bold.woff2') format('woff2');
    font-weight: 700;
    font-style: normal;
}

@font-face {
    font-family: 'Cutive Mono';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url(https://fonts.gstatic.com/s/cutivemono/v21/m8JWjfRfY7WVjVi2E-K9H6RMTm663A.woff2) format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Cutive Mono';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url(https://fonts.gstatic.com/s/cutivemono/v21/m8JWjfRfY7WVjVi2E-K9H6RCTm4.woff2) format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Reset global para que el padding no aumente el ancho de los elementos */
* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body {
    position: relative;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    margin: 0;
    font-family: 'Cutive Mono', monospace;
    cursor: none;
    /* Ocultar cursor por defecto */
}

#ribbon {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background-color: #000;
    overflow: hidden;
    z-index: -1; /* Para que quede detrás de todo el sitio */
}

canvas {
    display: block;
}

#text {
    font-weight: 100;
    font-size: 48px;
    color: #fafafa;
    position: fixed;
    top: 50%;
    left: 0;
    width: 100%;
    transform: translateY(-50%);
    text-align: center;
    padding: 0 20px;
}

#text .dud {
    color: #757575;
}

#home {
    width: 100vw;
    height: 100vh;
    border-radius: 12px;
    padding: 2em;
    background-color: RGBA(255, 255, 255, 0.015);
    backdrop-filter: blur(5px);
    box-shadow: 0px 0px 15px 0px RGBA(255, 255, 255, 0.15);
    transition: all 0.8s cubic-bezier(0.23, 1, 0.32, 1);
    /* Transición suave para expansión */
    transform: translate3d(0, 130vh, 0);
}

#home.up {
    transform: translate3d(0, 0, 0);
    width: 100vw;
    height: 100vh;
    border-radius: 0;
    padding: 0;
    background: transparent;
    box-shadow: none;
    backdrop-filter: none;
}

/* ESQUINAS
#home::before {
  content: '';
  width: 200px;
  height: 200px;
  position: absolute;
  top: 0;
  left: 0;
  box-shadow: -10px -10px 10px 0px RGBA(255, 255, 255, 0.1);
  z-index: 5;
  display: none;
}

#home::after {
  content: '';
  width: 200px;
  height: 200px;
  position: absolute;
  bottom: 0;
  right: 0;
  box-shadow: 10px 10px 10px 0px RGBA(255, 255, 255, 0.1);
  z-index: 5;
  display: none;
}
*/
/* El header ahora es un elemento fijo en la parte superior */
.header {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 1000;
    pointer-events: none;
    /* Permite hacer clic a través de áreas vacías */
}

/*
#home .header .logo {
  transition: transform 0.6s ease;
  opacity: 0.5;
}

#home .header .logo:hover {
  transform: rotateY(360deg);
  opacity: 0.5;
}
*/

/* ESQUINAS
#home::before {
  content: '';
  width: 200px;
  height: 200px;
  position: absolute;
  top: 0;
  left: 0;
  box-shadow: -10px -10px 10px 0px RGBA(255, 255, 255, 0.1);
  z-index: 5;
  display: none;
}

#home::after {
  content: '';
  width: 200px;
  height: 200px;
  position: absolute;
  bottom: 0;
  right: 0;
  box-shadow: 10px 10px 10px 0px RGBA(255, 255, 255, 0.1);
  z-index: 5;
  display: none;
}
*/
#home .menu,
#home .subtext {
    position: relative;
    height: calc((100% - 128px) / 2);
    width: 100%;
}

.header {
    top: 0;
    display: flex;
    place-items: center;
    place-content: end;
    text-align: right;
}

#home .menu {
    gap: 1em;
    display: flex;
    place-content: center;
    place-items: center;
    flex-wrap: wrap;
}

/*
#home .header .logo {
  transition: transform 0.6s ease;
  opacity: 0.5;
}

#home .header .logo:hover {
  transform: rotateY(360deg);
  opacity: 0.5;
}
*/

.header .logo {
    position: relative;
    height: 128px;
    width: 128px;
    transition: transform 0.6s;
    transform-style: preserve-3d;
}

.header .logo:hover {
    transform: rotateY(180deg);

    & .front {
        opacity: 0;
    }

    & .back {
        opacity: 0.5;
    }
}

.header .logo .front,
.header .logo .back {
    position: absolute;
    width: 100%;
    height: 100%;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
}

.header .logo .front {
    opacity: 0.5;
}

.header .logo .back {
    opacity: 0;
    transform: rotateY(180deg);
}

.header .logo img {
    height: 100%;
}

#home .menu .button {
    backdrop-filter: blur(3px);
    background-color: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 10px;
    box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.25);
    height: 8vw;
    min-height: 140px;
    position: relative;
    width: calc(100% / 7);
}

#home .menu .button:hover {
    transition: transform 250ms;
    transform: scale(1.05);
    background-color: rgba(0, 0, 0, 0.1);
    cursor: pointer;
}

#home .menu .button:last-of-type {
    margin-right: 5px;
}

#home .menu .button .button-content {
    display: flex;
    flex-direction: column;
    height: calc(100% - 20px);
    justify-content: space-evenly;
    padding: 10px;
}

#home .menu .button .button-content i,
#home .menu .button .button-content span {
    color: whitesmoke;
    text-align: center;
}

#home .menu .button .button-content .icon {
    font-size: 3.5em;
    text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.1);
    color: #ffffff6e;
    transition: transform 0.6s ease;
}

#home .menu .button:hover .button-content .icon {
    transform: rotateY(360deg);
}

.sep {
    border: 0;
    width: 3em;
    height: 1px;
    margin: 0;
    background-color: rgba(255, 255, 255, 0.4);
}

.subtext__container {
    padding: 0;
    width: 100%;
    position: relative;
    z-index: 2;
    color: #fff;
}

.subtext__title {
    font-family: 'Cutive Mono', monospace;
    /* Fuente más gruesa y técnica */
    font-size: 5.5vw;
    /* Tamaño reducido un 30% */
    font-weight: 700;
    line-height: 0.9;
    letter-spacing: -0.02em;
    text-transform: uppercase;
    margin: 0 auto 20px auto;
    /* Asegura centrado del bloque */
    max-width: 100%;
    /* Evita desbordamientos */
    transition: transform 0.3s ease, text-shadow 0.3s ease;
    cursor: default;
    /*padding-left: 25px;
    padding-right: 25px;*/
}

/* Efecto Hover Glitch */
.subtext__title:hover {
    transform: scale(1.02) skewX(-2deg);
    text-shadow: 3px 3px 0px rgba(0, 255, 255, 0.7), -3px -3px 0px rgba(255, 0, 255, 0.7);
}

/* Clase para activar el glitch programáticamente */
.subtext__title.glitch-active {
    transform: scale(1.02) skewX(-2deg);
    text-shadow: 3px 3px 0px rgba(0, 255, 255, 0.7), -3px -3px 0px rgba(255, 0, 255, 0.7);
}

/* Fix para que el efecto glitch funcione en los spans animados */
.subtext__title:hover span {
    text-shadow: 3px 3px 0px rgba(0, 255, 255, 0.7), -3px -3px 0px rgba(255, 0, 255, 0.7) !important;
}

.subtext__title.glitch-active span {
    text-shadow: 3px 3px 0px rgba(0, 255, 255, 0.7), -3px -3px 0px rgba(255, 0, 255, 0.7) !important;
}

.subtext__text {
    font-family: "Cutive Mono", monospace;
    font-size: 1.5rem;
    /*max-width: 800px;
    margin: 0 auto;*/
    white-space: pre-line;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
}

@media (max-width: 768px) {
    body {
        font-size: 14px;
    }

    #text {
        font-size: 32px;
    }

    #home {
        height: 100vh;
    }

    .header .logo {
        width: 82px;
        height: 82px;
    }

    #home .menu .button {
        min-height: 100px;
    }
}

.white-theme{
    color: #000;
}

.dark-theme{
    background-color: #000;
    color: #fff;
}

/* --- Header & Navegación --- */
.header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 1000;
    pointer-events: all;
    /* Permite hacer clic a través del header en áreas vacías */
}

.menu-trigger {
    position: absolute;
    top: 30px;
    left: 30px;
    cursor: pointer;
    color: #fff;
    pointer-events: auto;
    transition: transform 0.3s ease, opacity 0.3s;
    z-index: 1001;
}

.menu-trigger:hover {
    transform: scale(1.1);
    opacity: 0.8;
}

/* Estilos para el header cuando se hace scroll a una sección blanca */
.header.scrolled-down .menu-trigger {
    color: #000;
}

.header.scrolled-down .logo .back {
    filter: invert(1);
}

.header.scrolled-down .logo .front {
    /* Invierte el color del logo para que sea visible en fondos claros */
    filter: invert(1);
}

/* --- Hero Slider Moderno --- */
.hero-slider {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    /* Fondo transparente para ver el ribbon */
    overflow: hidden;
}

.slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    visibility: hidden;
    transition: opacity 1.5s ease-in-out, transform 1.5s ease-out;
    /* Transición más lenta y elegante */
    display: flex;
    align-items: center;
    justify-content: center;
    transform: scale(1.1);
    background: rgba(0, 0, 0, 0);
    /* Fondo oscuro semitransparente para contraste */
}

.slide.active {
    opacity: 1;
    visibility: visible;
    transform: scale(1);
    z-index: 10;
}

.slide-bg {
    opacity: 0.25 !important;
}

.video-slide:has(video)::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #000;
    z-index: -1;
}

/* Estilos específicos para los slides */
.slide-text {
    z-index: 11;
    text-align: center;
    padding: 0 20px;
}

/* Estilos para slides con video de fondo */
.video-slide .subtext__container {
    background-color: transparent;
    backdrop-filter: none;
    padding: 0;
    width: 100%;
    max-width: 100%;
}

.video-slide .subtext__title {
    filter: drop-shadow(0 4px 4px rgba(0, 0, 0, 0.9));
    /* Sombra en las letras para contraste */
}

.video-slide .subtext__title:hover,
.video-slide .subtext__title.glitch-active {
    filter: none;
    /* Quitamos la sombra normal para que luzca el efecto glitch */
    text-shadow: 3px 3px 0px rgba(0, 255, 255, 0.7), -3px -3px 0px rgba(255, 0, 255, 0.7);
}

/* --- Menú Fullscreen (Modern Overlay) --- */
.fullscreen-menu {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    backdrop-filter: blur(8px); /* Desenfoque solicitado */
    -webkit-backdrop-filter: blur(8px);
    z-index: 3000;
    display: flex;
    flex-direction: column;
    padding: 40px 60px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.5s cubic-bezier(0.23, 1, 0.32, 1);
}

.fullscreen-menu.open {
    opacity: 1;
    pointer-events: auto;
}

.menu-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    margin-bottom: 20px;
}

.menu-logo {
    font-family: 'Disket Mono', monospace;
    font-size: 1rem;
    letter-spacing: 2px;
}

.menu-close {
    font-family: 'Cutive Mono', monospace;
    font-size: 1rem;
    cursor: pointer;
    letter-spacing: 4px;
    transition: opacity 0.3s;
}

.menu-close:hover {
    opacity: 0.6;
}

.menu-content {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
}

.menu-item {
    display: flex;
    align-items: baseline;
    gap: 30px;
    text-decoration: none;
    cursor: pointer;
    padding: 20px 0;
    transition: all 0.4s ease;
}

.white-theme .menu-item{
    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.dark-theme .menu-item{
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.white-theme .menu-item:hover {
    color: #000;
    padding-left: 20px;
    border-bottom-color: #000;
}

.dark-theme .menu-item:hover {
    color: #fff;
    padding-left: 20px;
    border-bottom-color: #fff;
}

.white-theme .menu-content a {
    color: #000;
}

.dark-theme .menu-content a {
    color: #fff;
}

.menu-number {
    font-family: 'Disket Mono', monospace;
    font-size: 1.2rem;
    opacity: 0.5;
}

.menu-text {
    font-family: 'Cutive Mono', monospace;
    font-size: 8vw; /* Texto grande solicitado */
    font-weight: 700;
    line-height: 1;
    text-transform: uppercase;
}

.menu-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    padding-top: 20px;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.copyright, .social-link {
    font-family: 'Cutive Mono', monospace;
    font-size: 0.8rem;
    letter-spacing: 1px;
}

@media (max-width: 768px) {
    .fullscreen-menu {
        padding: 30px 20px;
        overflow: hidden; /* Evita que el footer se salga */
    }
    .menu-content {
        overflow-y: auto; /* Permite scroll si el contenido es muy largo */
        flex-shrink: 1;
    }
    .menu-footer {
        flex-shrink: 0; /* Nunca se encoje, siempre visible */
    }
    .menu-text {
        font-size: 10vw; /* Reducido para que quepa mejor */
    }
    .menu-item {
        gap: 15px;
    }
}

/* --- Controles del Slider --- */
.slider-controls {
    position: absolute;
    bottom: 60px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 25px;
    z-index: 20;
}

.slider-controls .control {
    position: relative;
    cursor: pointer;
    color: rgba(255, 255, 255, 0.5);
    /* Color base tenue */
    transition: color 0.3s ease, transform 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
}

.slider-controls .control i {
    font-size: 12px;
    /* Tamaño base de los puntos */
}

.slider-controls .control.active {
    color: #fff;
    /* Blanco brillante para el activo */
    transform: scale(1.5);
    /* Un poco más grande */
}

/* Animación de línea a círculo */
@keyframes line-to-circle {
    0% {
        width: 40px;
        height: 5px;
        border-radius: 5px;
    }

    100% {
        width: 12px;
        height: 12px;
        border-radius: 50%;
    }
}

@-webkit-keyframes line-to-circle {
    0% {
        width: 40px;
        height: 5px;
        border-radius: 5px;
    }

    100% {
        width: 12px;
        height: 12px;
        border-radius: 50%;
    }
}

/* Estilo específico para la línea activa animada */
.slider-controls .control.active .fa-minus {
    font-size: 0;
    /* Ocultar el glifo de fuente */
    width: 40px;
    height: 5px;
    background-color: #fff;
    display: block;
    border-radius: 5px;

    /* Animación */
    -webkit-animation-name: line-to-circle;
    animation-name: line-to-circle;
    -webkit-animation-timing-function: linear;
    animation-timing-function: linear;
    -webkit-animation-fill-mode: forwards;
    animation-fill-mode: forwards;
    /* La duración se define en JS según el slide */
}

/* Ocultar el pseudo-elemento de FontAwesome para dibujar nuestra propia forma */
.slider-controls .control.active .fa-minus::before {
    content: none;
    display: none;
}

/* Cuenta regresiva */
.slider-controls .control .timer {
    position: absolute;
    top: -25px;
    /* Posición encima del control */
    left: 50%;
    transform: translateX(-50%);
    font-family: 'Cutive Mono', monospace;
    font-size: 14px;
    color: #fff;
    pointer-events: none;
}

/* --- Matrix Effect Canvas --- */
#matrix {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 9000;
    /* Por encima de todo */
    pointer-events: none;
    /* Permitir clic a través cuando está transparente */
    opacity: 0;
    transition: opacity 0.5s ease;
}

/* --- Sección de Servicios --- */
#services {
    position: relative;
    width: 100%;
    height: 400vh; /* Para hacer scroll y mover el track */
    display: block;
    opacity: 1;
    visibility: visible;
    transform: scale(1);
    z-index: 50;
    padding: 0;
}

#services .sticky-container {
    position: sticky;
    top: 0;
    width: 100%;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    padding: 80px 20px;
}

.section.white-theme {
    background-color: #fff;
    color: #000;
}

.gray-theme .fullscreen-menu {
    background-color: #0006!important;
}

.gray-theme .fullscreen-menu,
.gray-theme .menu-logo,
.gray-theme .menu-close,
.gray-theme .menu-number,
.gray-theme .menu-text,
.gray-theme .menu-footer,
.gray-theme .copyright,
.gray-theme .social-link,
.gray-theme .menu-item {
    color: #ffffff!important;
}

.gray-theme .menu-item {
    border-bottom: 1px solid!important;
    border-bottom-color: rgba(255, 255, 255, 0.2)!important;
}

.gray-theme .menu-item:hover {
    border-bottom-color: #ffffff!important;
}

.gray-theme .menu-trigger:hover,
.gray-theme .menu-close:hover {
    opacity: 0.7;
    color: #ffffff!important;
}

.section.gray-theme {
    background-color: #ccc;
    color: #000;
}

/* Animaciones sutiles de entrada para secciones */
.section-fade-up {
    opacity: 0.2;
    transform: translateY(30px) scale(0.98);
    transition: opacity 1s cubic-bezier(0.25, 1, 0.5, 1), transform 1s cubic-bezier(0.25, 1, 0.5, 1);
}

.section-fade-up.section-visible {
    opacity: 1;
    transform: translateY(0) scale(1);
}

.services-main-title {
    position: absolute;
    bottom: 20px;
    left: 0;
    width: 100%;
    font-family: 'Cutive Mono', monospace;
    font-size: 5vw;
    letter-spacing: -0.03em;
    font-weight: 600;
    margin: 0;
    text-transform: uppercase;
    z-index: 10;
    color: #000;
    /* Asegurarse de que el título sea negro en fondo blanco */
    text-align: left;
}

.services-grid-wrapper {
    width: 100%;
    height: 100%;
    overflow: hidden;
    /* Scroll controlado por JS */
    display: flex;
    align-items: center;
}

.services-track {
    display: flex;
    padding-left: 5vw;
    gap: 40px;
    transition: none; /* Desactivado en desktop para scroll ultra-responsivo y nítido */
    height: 60vh;
    /* Altura fija para la franja de servicios */
}

.service-item {
    display: flex;
    width: 700px;
    /* Ancho fijo para el par (Info + Video) */
    height: 100%;
    flex-shrink: 0;
    box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1);
}

.service-item.side-by-side {
    flex-direction: row;
}

.service-item.side-by-side.reverse {
    flex-direction: row-reverse;
}

.info-box {
    flex: 1;
    padding: 20px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.media-box {
    flex: 1;
    position: relative;
    background: #000;
    overflow: hidden;
}

.media-box video {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Colores de fondo */
.white-bg {
    background-color: #ffffff;
    color: #000;
}

.gray-bg {
    background-color: #cccccc;
    color: #000;
}

.dark-bg {
    background-color: #1a1a1a;
    color: #fff;
}

.white-bg .service-number,
.gray-bg .service-number {
    color: #999;
}

.white-bg .service-title,
.gray-bg .service-title {
    color: #000;
}

.white-bg .service-description,
.gray-bg .service-description {
    color: #444;
}

.gray-bg .service-text-long {
    color: #000;
}

.dark-bg .service-text-long {
    color: #fff;
}

.dark-bg .service-number {
    color: #666;
}

.dark-bg .service-title {
    color: #fff;
}

.dark-bg .service-description {
    color: #ccc;
}

.service-number {
    font-family: 'Cutive Mono', monospace;
    font-size: 2.5em;
    font-weight: 700;
    color: #666;
    /* Número más sutil */
    margin-bottom: 10px;
}

.service-title {
    font-family: 'Cutive Mono', monospace;
    font-size: 1.5em;
    font-weight: 700;
    margin: 0 0 10px 0;
    text-transform: uppercase;
    color: #000;
}

.service-heading a {
    text-decoration: none;
    color: inherit;
}

.service-description {
    font-family: 'Cutive Mono', monospace;
    font-size: 0.9em;
    line-height: 1.4;
    color: #555;
    flex-grow: 1;
    /* Permite que la descripción ocupe el espacio disponible */
    margin-bottom: 15px;
}

.service-text {
    display: none;
    /* Oculto en desktop */
}

.service-text-long {
    display: block;
    /* Visible en desktop */
    font-family: 'Cutive Mono', monospace;
    font-size: 0.9em;
    line-height: 1.4;
    color: #555;
    flex-grow: 1;
    margin-bottom: 15px;
    text-align: justify;
}

.more-info-btn {
    background: transparent;
    border: 1px solid currentColor;
    padding: 12px 24px;
    font-family: 'Cutive Mono', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.23, 1, 0.32, 1);
    margin-top: auto;
    text-decoration: none;
    text-align: center;
    color: inherit;
}

/* Estilos específicos por tema (Hover) */
.white-bg .more-info-btn:hover,
.gray-bg .more-info-btn:hover {
    background-color: #000 !important;
    color: #fff !important;
    border-color: #000;
    transform: translateY(-2px);
}

.dark-bg .more-info-btn {
    background-color: #fff;
    color: #000;
    border-color: #fff;
}

.dark-bg .more-info-btn:hover {
    background-color: transparent;
    color: #fff;
    border-color: #fff;
    transform: translateY(-2px);
}

/* Forzar color negro en estado normal para fondos claros */
.white-bg .more-info-btn,
.gray-bg .more-info-btn {
    color: #000 !important;
    border-color: #000;
}

.go-to-services, .go-to-end, .back-to-hero {
    position: absolute;
    bottom: 120px;
    right: 40px;
    width: 60px;
    height: 60px;
    background: #fff;
    color: #000;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 20;
    transition: transform 0.3s ease;
    box-shadow: 0 5px 15px rgba(255, 255, 255, 0.2);
    border: 1px solid #000;
}

.go-to-end, .go-to-services, #contact .back-to-hero {
    bottom: 60px!important;
}

@media (max-width: 768px) {
    #services {
        padding: 0;
        height: 1000vh; /* Aumentado de 400vh para ralentizar el scroll horizontal en móvil */
    }

    #services .sticky-container {
        padding: 0;
    }

    .services-main-title {
        display: none;
    }

    .services-grid-wrapper {
        overflow: hidden;
        scroll-snap-type: none;
    }

    .services-track {
        height: 100vh;
        width: max-content;
        padding-left: 0;
        gap: 0;
        display: flex;
        transition: transform 0.6s cubic-bezier(0.25, 1, 0.5, 1); /* Snapping suave y ligeramente más lento en móvil */
    }

    .service-item,
    .service-item.side-by-side,
    .service-item.side-by-side.reverse {
        width: 100vw;
        height: 100vh;
        display: block;
        position: relative;
        border-radius: 0;
        scroll-snap-align: start;
        flex: 0 0 100vw;
    }

    /* Backgrounds based on child theme */
    .service-item:has(.white-bg) {
        background-color: #000;
    }

    .service-item:has(.gray-bg) {
        background-color: #000;
    }

    .service-item:has(.dark-bg) {
        background-color: #000;
    }

    .info-box {
        height: 100%;
        background: linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0.4) 50%, transparent 100%) !important;
        position: relative;
        z-index: 2;
        padding: 40px 20px;
        display: flex;
        flex-direction: column;
        justify-content: flex-start;
        /* Align items to top initially */
        pointer-events: none;
        /* Permitir clicks al fondo (video) */
    }

    .info-box .service-number {
        margin-bottom: auto;
        /* Pushes everything else to the bottom */
        color: #fff !important;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
    }

    .info-box .service-heading,
    .info-box .service-heading a,
    .info-box .service-text {
        color: #fff !important;
        /* Force white text on mobile overlay */
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
    }

    .service-text {
        display: block;
        /* Visible en mobile */
    }

    .service-text-long {
        display: none;
        /* Oculto en mobile */
    }

    .more-info-btn {
        display: none;
    }

    .media-box {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        z-index: 1;
        opacity: 0.6;
        /* More visible video */
    }

    .back-to-hero{
        bottom: 100px;
    }

    .back-to-hero, .go-to-end {
        width: 40px;
        height: 40px;
        right: 20px;
    }

    /* Ajustes para textos del Hero en Móvil */
    .subtext__title {
        font-size: 8.5vw;
        line-height: 1.1;
    }

    .subtext__text {
        font-size: 1.1rem;
    }

    .slide-content-left,
    .slide-content-right {
        width: 90%;
        margin-left: 5%;
        margin-right: 5%;
        text-align: left;
        /* Unificamos la alineación en móvil para mejor legibilidad */
    }

    /* Bajar los controles en móvil para evitar que se pisen con el botón o texto */
    .slider-controls {
        bottom: 75px;
    }

    /* Ocultar el botón down en móvil si ocupa mucho espacio, o ajustarlo */
    .go-to-services {
        width: 40px !important;
        height: 40px !important;
        right: 20px !important;
        bottom: 60px !important;
    }

    /* Ajustes para Contacto en Móvil para permitir scroll del index */
    #contact {
        padding: 0 !important;
    }
}

.go-to-services:hover, .go-to-end:hover, .back-to-hero:hover {
    color: #fff !important;
    background: #000;
    border: 1px solid #fff;
    transform: scale(1.1);
}

/* --- Custom Cursor --- */
a,
button,
input,
textarea,
select,
.control,
.service-item,
.menu-trigger {
    cursor: none;
}

.cursor-dot {
    width: 8px;
    height: 8px;
    background-color: #00ffff;
    /* Cyan para resaltar */
    position: fixed;
    top: 90%;
    left: 50%;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    z-index: 9999;
    pointer-events: none;
}

.cursor-outline {
    width: 40px;
    height: 40px;
    border: 1px solid rgba(255, 255, 255, 0.5);
    position: fixed;
    top: 90%;
    left: 50%;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    z-index: 9999;
    pointer-events: none;
    transition: width 0.2s, height 0.2s, background-color 0.2s, border-color 0.2s;
}

/* Estado Hover del Cursor */
body.hovering .cursor-outline {
    width: 60px;
    height: 60px;
    background-color: rgba(255, 255, 255, 0.1);
    border-color: #00ffff;
}

/* --- Cursor Themes --- */
body.white-theme {
    background-color: #ffffff;
    color: #000;
}

/* Tema Claro y Gris: Cursor Negro */
body.white-theme .cursor-dot,
body.gray-theme .cursor-dot {
    background-color: #000;
}

body.white-theme .cursor-outline,
body.gray-theme .cursor-outline {
    border-color: rgba(0, 0, 0, 0.5);
}

body.white-theme.hovering .cursor-outline,
body.gray-theme.hovering .cursor-outline {
    background-color: rgba(0, 0, 0, 0.1);
    border-color: #000;
}

@media (max-width: 768px) {

    .cursor-dot,
    .cursor-outline {
        display: none !important;
    }
}

/* --- Cursor Themes --- */
/* Tema Claro y Gris: Cursor Negro */
body.white-theme .cursor-dot,
body.gray-theme .cursor-dot {
    background-color: #000;
}

body.white-theme .cursor-outline,
body.gray-theme .cursor-outline {
    border-color: rgba(0, 0, 0, 0.5);
}

body.white-theme.hovering .cursor-outline,
body.gray-theme.hovering .cursor-outline {
    background-color: rgba(0, 0, 0, 0.1);
    border-color: #000;
}

/* Override para cursor claro en items oscuros dentro de tema blanco (Servicios) */
body.white-theme.cursor-light-override .cursor-dot {
    background-color: #00ffff;
}

body.white-theme.cursor-light-override .cursor-outline {
    border-color: rgba(255, 255, 255, 0.5);
}

body.white-theme.cursor-light-override.hovering .cursor-outline {
    background-color: rgba(255, 255, 255, 0.1);
    border-color: #00ffff;
}

/* --- Service End Button (More Services) --- */
.service-item.service-end-item {
    width: 350px;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: start;
    background: transparent;
    box-shadow: none;
    flex-shrink: 0;
}

.more-services-btn {
    display: flex;
    align-items: center;
    text-decoration: none;
    color: #000;
    transition: all 0.5s cubic-bezier(0.25, 1, 0.5, 1);
    border-radius: 100px;
    padding: 10px 30px 10px 10px;
}

.btn-circle {
    width: 80px;
    height: 80px;
    border: 2px solid currentColor;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-right: 20px;
    transition: all 0.5s ease;
}

.btn-circle i {
    font-size: 2rem;
    transition: transform 0.5s ease;
}

.btn-text {
    font-family: 'Cutive Mono', monospace;
    font-size: 1.1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    white-space: nowrap;
}

/* Hover Effects: Scale & Fill (Clean Style) */
.more-services-btn:hover {
    background-color: #000;
    color: #fff;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
}

.more-services-btn:hover .btn-circle {
    background-color: #fff;
    color: #000;
    border-color: #fff;
}

@media (max-width: 768px) {
    .service-item.service-end-item {
        width: 100vw;
        height: 100vh;
        background-color: #000;
    }

    .more-services-btn {
        color: #fff;
    }

    .more-services-btn:hover {
        background-color: #fff;
        color: #000;
    }

    .more-services-btn:hover .btn-circle {
        background-color: #000;
        color: #fff;
        border-color: #000;
    }
}

/* Force Menu Light (para sections services/contact) */
.menu-force-light .menu-trigger,
.menu-force-light .fullscreen-menu,
.menu-force-light .menu-logo,
.menu-force-light .menu-close,
.menu-force-light .menu-number,
.menu-force-light .menu-text,
.menu-force-light .menu-footer,
.menu-force-light .copyright,
.menu-force-light .social-link,
.menu-force-light .menu-item {
    color: #ffffff !important;
    border-bottom-color: rgba(255, 255, 255, 0.2) !important;
}

.menu-force-light .menu-item:hover {
    border-bottom-color: #ffffff !important;
}

.menu-force-light .menu-trigger:hover,
.menu-force-light .menu-close:hover {
    opacity: 0.7;
    color: #ffffff !important;
}

.menu-force-light .menu-trigger {
    position: static;
    margin-left: auto;
    margin-top: 30px;
    margin-right: 30px;
}

/* Theme Switch */
.theme-switch-wrapper {
    display: flex;
    align-items: center;
    margin-top: 30px;
    margin-right: 30px;
    pointer-events: auto;
}

.theme-switch {
    display: inline-block;
    height: 26px;
    position: relative;
    width: 50px;
}

.theme-switch input {
    display: none;
}

.slider {
    background-color: #ccc;
    bottom: 0;
    cursor: pointer;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
    transition: .4s;
    border-radius: 34px;
}

.slider:before {
    background-color: #fff;
    bottom: 3px;
    content: "";
    height: 20px;
    left: 3px;
    position: absolute;
    transition: .4s;
    width: 20px;
    border-radius: 50%;
    z-index: 2;
}

input:checked+.slider {
    background-color: #2c3e50;
}

input:checked+.slider:before {
    transform: translateX(24px);
}

/* White Theme Overrides for Hero Section */
body.white-theme .subtext__title,
body.white-theme .subtext__text,
body.white-theme .slider-controls .control.active,
body.white-theme .menu-trigger,
body.gray-theme .menu-trigger {
    color: #000;
}

body.white-theme .slider-controls .control {
    color: rgba(0, 0, 0, 0.5);
}

body.white-theme .slider-controls .control .timer {
    color: rgba(0, 0, 0, 0.7);
}

body.white-theme .slider-controls .control.active .fa-minus {
    background-color: #000;
}

body.white-theme .hero-btn {
    border-color: #000;
    color: #000;
}

body.white-theme .hero-btn:hover {
    background-color: #000;
    color: #fff;
}

body.white-theme #text {
    color: #000;
}

/* Slide Alignments */
.slide-content-left {
    text-align: left;
    width: 60%;
    margin-right: auto;
    margin-left: 5%;
}

.slide-content-right {
    text-align: right;
    width: 60%;
    margin-left: auto;
    margin-right: 5%;
}

.slide-content-center {
    text-align: center;
    width: 100%;
}

.hero-btn {
    display: inline-block;
    margin-top: 20px;
    padding: 10px 20px;
    background-color: transparent;
    border: 1px solid #fff;
    color: #fff;
    text-decoration: none;
    font-family: 'Cutive Mono', monospace;
    transition: all 0.3s;
    cursor: pointer;
}

.hero-btn:hover {
    background-color: #fff;
    color: #000;
}

.hero-arrows {
    position: absolute;
    top: 50%;
    left: 0;
    width: 100%;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    padding: 0 10px;
    pointer-events: none; /* Dejar pasar clics en medio */
    z-index: 20;
}

.hero-arrow {
    pointer-events: auto; /* Reactivar clic en la flecha */
    background: none;
    border: none;
    color: inherit;
    font-size: 24px;
    cursor: pointer;
    padding: 10px;
    font-family: 'Cutive Mono', monospace;
    opacity: 0.7;
    transition: opacity 0.3s;
}

.hero-arrow:hover {
    opacity: 1;
}

/* Slide Media (Videos transparentes) */
.slide-media {
    position: absolute;
    top: 0;
    width: 45%;
    height: 100%;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    opacity: 0;
    transition: opacity 1.5s ease-in-out;
}

.slide.active .slide-media {
    opacity: 1;
}

.slide-media.right {
    right: 0;
}

.slide-media.left {
    left: 0;
}

.slide-media video {
    height: 80%;
    max-height: 100%;
    border-radius: 15px;
    opacity: 0.7;
}

/* Ajustes para mobile */
@media (max-width: 1080px) {
    .slide-media {
        height: 50%;
        top: auto;
    }

    .slide-media video {
        height: 60%;
        max-height: 100%;
    }
}

/* Contact Section */
#contact {
    position: relative;
    width: 100%;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: start;
    opacity: 1;
    visibility: visible;
    z-index: 60;
    flex-direction: column;
}

.contact-content {
    width: 80%;
    height: 100%;
}

.contact-frame {
    width: 100%;
    height: 100%;
    border: none;
    /*box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1);
    border-radius: 8px;
    background: #fff;*/
}