:root {
    --dorado: #d7ad3c;
    --dorado-claro: #f0d77a;
    --plata: #d5d7db;
    --plata-oscura: #9ea3ab;
    --negro: #050505;
    --gris: #121212;
    --superficie: #161616;
    --texto: #f3f3f3;
    --muted: #b8b8b8;
    --borde: rgba(255, 255, 255, 0.08);
    --sombra: 0 24px 64px rgba(0, 0, 0, 0.5);
    --galeria-tamano: 420px;
}

* {
    box-sizing: border-box;
}

html {
    /* Color base de la raíz: sin esto, iOS Safari pinta de blanco el área
       detrás de la barra de direcciones, la barra inferior y el "rebote" del
       scroll (solo <body> tenía fondo, y <html> quedaba transparente). */
    background-color: var(--negro);
    scroll-behavior: smooth;
    scrollbar-width: thin;
    scrollbar-color: var(--dorado) var(--negro);
}

::selection {
    background: var(--dorado);
    color: #111;
}

::-webkit-scrollbar {
    width: 10px;
}

::-webkit-scrollbar-track {
    background: var(--negro);
}

::-webkit-scrollbar-thumb {
    background: var(--dorado);
    border-radius: 999px;
    border: 2px solid var(--negro);
}

::-webkit-scrollbar-thumb:hover {
    background: var(--dorado-claro);
}

body {
    margin: 0;
    font-family: 'Inter', sans-serif;
    color: var(--texto);
    background:
        radial-gradient(circle at top left, rgba(215, 173, 60, 0.14), transparent 24%),
        radial-gradient(circle at right center, rgba(213, 215, 219, 0.08), transparent 18%),
        linear-gradient(180deg, #040404 0%, #090909 40%, #141414 100%);
}

body::before {
    content: '';
    position: fixed;
    inset: 0;
    background-image: linear-gradient(rgba(255, 255, 255, 0.018) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.018) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.04));
    pointer-events: none;
    z-index: -1;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
    outline: 3px solid var(--dorado);
    outline-offset: 3px;
    border-radius: 4px;
}

.btn-delta:focus-visible,
.btn-outline-delta:focus-visible {
    outline: 3px solid var(--dorado-claro);
    outline-offset: 3px;
}

.navbar {
    background: rgba(0, 0, 0, 0.9);
    backdrop-filter: blur(16px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18);
}

/* Barra de progreso de scroll: vacía arriba de todo, se va llenando de
   izquierda a derecha a medida que se baja en la página (ver footer.php). */
.scroll-progress {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 3px;
    overflow: hidden;
    pointer-events: none;
}

.scroll-progress-fill {
    width: 0%;
    height: 100%;
    background: linear-gradient(90deg, var(--dorado), var(--dorado-claro));
}

/* Tratamiento tipográfico de la marca: lo comparten el logo del header
   (.navbar-brand > .brand-text) y la marca del hero (.eyebrow .brand-text),
   para que el texto "DELTA 3 CONSTRUCCIONES" se vea idéntico en ambos lados. */
.navbar-brand,
.eyebrow .brand-text {
    color: var(--dorado);
    font-weight: 800;
    font-size: 1.15rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    line-height: 1;
}

.navbar-brand {
    color: var(--dorado) !important;
    display: flex;
    align-items: center;
    gap: 20px;
}

.brand-logo {
    width: 112px;
    height: 112px;
    object-fit: contain;
    display: block;
    filter: drop-shadow(0 10px 22px rgba(0, 0, 0, 0.45));
}

.brand-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.brand-text small {
    color: var(--muted);
    letter-spacing: 0.18em;
    font-size: 0.56rem;
    font-weight: 700;
}

.navbar-brand:hover .brand-logo {
    transform: scale(1.03);
    transition: transform 0.2s ease;
}

@media (max-width: 575.98px) {
    .brand-logo {
        width: 82px;
        height: 82px;
    }

    .navbar-brand {
        gap: 14px;
    }
}

.nav-link {
    color: rgba(255, 255, 255, 0.82) !important;
    margin-left: 15px;
    font-weight: 600;
    position: relative;
}

.nav-link:hover,
.nav-link:focus {
    color: #fff !important;
}

.nav-link::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: -6px;
    width: 0;
    height: 2px;
    background: var(--dorado);
    transform: translateX(-50%);
    transition: width 0.25s ease;
}

.nav-link:hover::after,
.nav-link:focus::after {
    width: 100%;
}

/* Resalta en el menú la sección que se está viendo mientras se scrollea
   (ver footer.php para el IntersectionObserver que agrega esta clase). */
.nav-link.is-activo {
    color: var(--dorado) !important;
}

.nav-link.is-activo::after {
    width: 100%;
}

.navbar-toggler {
    border: 1px solid rgba(215, 173, 60, 0.35);
    border-radius: 10px;
    padding: 7px 10px;
}

.navbar-toggler:focus {
    box-shadow: 0 0 0 0.2rem rgba(215, 173, 60, 0.28);
}

/* --------------------------------------------------------------------
   Selector de idioma (banderas) en el navbar
   -------------------------------------------------------------------- */

.nav-item-idioma {
    display: flex;
    align-items: center;
    margin-left: 15px;
}

.selector-idioma {
    position: relative;
}

.selector-idioma-boton {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    background: rgba(255, 255, 255, 0.04);
    font-size: 1.2rem;
    line-height: 1;
    cursor: pointer;
    transition: border-color 0.15s ease, background 0.15s ease;
}

.selector-idioma-boton:hover {
    border-color: rgba(215, 173, 60, 0.4);
    background: rgba(215, 173, 60, 0.08);
}

.selector-idioma-menu {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    z-index: 20;
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 150px;
    padding: 8px;
    background: #111;
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 12px;
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.5);
}

.selector-idioma-menu[hidden] {
    display: none;
}

.selector-idioma-opcion {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 8px 10px;
    background: transparent;
    border: none;
    border-radius: 8px;
    color: #fff;
    font-weight: 600;
    font-size: 0.9rem;
    text-align: left;
    cursor: pointer;
}

.selector-idioma-opcion:hover {
    background: rgba(215, 173, 60, 0.12);
}


@media (max-width: 991.98px) {
    .navbar-collapse {
        margin-top: 16px;
        padding-top: 16px;
        padding-bottom: 4px;
        border-top: 1px solid rgba(255, 255, 255, 0.08);
    }

    .navbar-nav {
        gap: 4px;
    }

    .nav-link {
        margin-left: 0;
        padding: 12px 10px !important;
        border-radius: 10px;
    }

    .nav-link:hover,
    .nav-link:focus {
        background: rgba(215, 173, 60, 0.08);
    }

    .nav-link.is-activo {
        background: rgba(215, 173, 60, 0.08);
    }

    .nav-link::after {
        display: none;
    }

    .nav-item-idioma {
        margin-left: 0;
        margin-top: 8px;
    }

    .selector-idioma-menu {
        left: 0;
        right: auto;
    }
}

.hero {
    min-height: 100vh;
    padding: 140px 0 90px;
    position: relative;
    overflow: hidden;
}

.hero::before,
.hero::after {
    content: '';
    position: absolute;
    border-radius: 999px;
    filter: blur(10px);
    opacity: 0.65;
    pointer-events: none;
}

.hero::before {
    width: 320px;
    height: 320px;
    right: -80px;
    top: 110px;
    background: radial-gradient(circle, rgba(215, 173, 60, 0.26), transparent 68%);
}

.hero::after {
    width: 240px;
    height: 240px;
    left: -70px;
    bottom: 40px;
    background: radial-gradient(circle, rgba(213, 215, 219, 0.16), transparent 68%);
}

.hero-panel {
    background: linear-gradient(145deg, rgba(20, 20, 20, 0.96), rgba(7, 7, 7, 0.9));
    border: 1px solid var(--borde);
    border-radius: 28px;
    box-shadow: var(--sombra);
    padding: 42px;
    position: relative;
    z-index: 1;
    overflow: hidden;
}

.hero-panel::after {
    content: '';
    position: absolute;
    inset: auto -120px -120px auto;
    width: 280px;
    height: 280px;
    background: radial-gradient(circle, rgba(215, 173, 60, 0.12), transparent 70%);
    pointer-events: none;
}

.hero-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr);
    gap: 28px;
    align-items: center;
    text-align: left;
}

.hero-copy {
    max-width: 680px;
}

/* Fila del hero: etiqueta "Ingeniería y Construcción" + línea dorada + marca,
   todo en un renglón y centrado verticalmente entre sí en desktop. */
.hero-eyebrow-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 18px;
    margin-bottom: 22px;
}

.hero-eyebrow-row .hero-badge,
.hero-eyebrow-row .eyebrow {
    margin-bottom: 0;
}

.eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--dorado);
    text-transform: uppercase;
    letter-spacing: 0.18em;
    font-size: 0.78rem;
    font-weight: 800;
    margin-bottom: 18px;
}

.eyebrow::before {
    content: '';
    width: 34px;
    height: 2px;
    background: var(--dorado);
}

.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border-radius: 999px;
    border: 1px solid rgba(215, 173, 60, 0.28);
    background: rgba(215, 173, 60, 0.08);
    color: #f2e4b3;
    font-size: 0.92rem;
    margin-bottom: 22px;
}

.hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 24px;
}

.meta-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.06);
    color: #e8e8e8;
    font-size: 0.84rem;
    font-weight: 600;
}

.meta-chip i {
    color: var(--dorado);
}

.hero h1 {
    font-size: clamp(2.7rem, 7vw, 5.4rem);
    font-weight: 800;
    line-height: 1;
    letter-spacing: -0.05em;
    margin-bottom: 18px;
    overflow-wrap: break-word;
}

/* Dorado solo para la frase destacada del título: antes esto era ".hero
   span" (cualquier span dentro del hero), pero al sumar spans nuevos para
   la traducción (botones, chips, etc.) ese selector tan amplio les pintaba
   el texto de dorado a todos, incluido el botón dorado "Solicitar
   presupuesto" (texto dorado sobre fondo dorado = invisible). */
.hero h1 span.hero-titulo-dorado {
    color: var(--dorado);
}

.hero p {
    font-size: 1.1rem;
    color: var(--muted);
    max-width: 58ch;
    margin-bottom: 30px;
}

.hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-bottom: 30px;
}

.btn-delta,
.btn-outline-delta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 14px 24px;
    border-radius: 14px;
    font-weight: 700;
    text-decoration: none;
    border: 1px solid transparent;
    transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease, border-color 0.25s ease;
}

.btn-delta {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--dorado), var(--dorado-claro));
    color: #111;
    box-shadow: 0 16px 30px rgba(215, 173, 60, 0.22);
}

.btn-delta:hover {
    transform: translateY(-2px);
    box-shadow: 0 20px 34px rgba(215, 173, 60, 0.28);
    color: #111;
}

/* Brillo que recorre el botón al pasar el mouse. */
.btn-delta::before {
    content: '';
    position: absolute;
    top: 0;
    left: -75%;
    width: 50%;
    height: 100%;
    background: linear-gradient(120deg, transparent, rgba(255, 255, 255, 0.55), transparent);
    transform: skewX(-20deg);
    pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
    .btn-delta:hover::before {
        animation: btn-brillo 0.85s ease;
    }
}

@keyframes btn-brillo {
    100% {
        left: 125%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .btn-delta:hover::before {
        animation: none;
    }
}

.btn-outline-delta {
    background: transparent;
    color: #fff;
    border-color: rgba(213, 215, 219, 0.2);
}

.btn-outline-delta:hover {
    transform: translateY(-2px);
    background: rgba(255, 255, 255, 0.04);
    color: #fff;
}

.btn-delta:disabled,
.btn-delta[disabled] {
    opacity: 0.85;
    cursor: progress;
    transform: none;
}

.btn-spinner {
    display: inline-block;
    width: 14px;
    height: 14px;
    border: 2px solid rgba(17, 17, 17, 0.3);
    border-top-color: #111;
    border-radius: 50%;
    vertical-align: -2px;
    animation: btn-spin 0.7s linear infinite;
}

@keyframes btn-spin {
    to {
        transform: rotate(360deg);
    }
}

.hero-stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    margin-top: 30px;
}

.stat-card {
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--borde);
    border-radius: 20px;
    padding: 18px;
    text-align: left;
}

.stat-card strong {
    display: block;
    font-size: 1.5rem;
    color: #fff;
    margin-bottom: 4px;
}

.stat-card span {
    color: var(--muted);
    font-size: 0.95rem;
}

.hero-card {
    background: linear-gradient(160deg, rgba(215, 173, 60, 0.12), rgba(8, 8, 8, 0.94));
    border: 1px solid rgba(215, 173, 60, 0.18);
    border-radius: 28px;
    padding: 30px;
    box-shadow: var(--sombra);
    position: relative;
    overflow: hidden;
}

.hero-card::before {
    content: '';
    position: absolute;
    inset: auto -30px -40px auto;
    width: 180px;
    height: 180px;
    background: radial-gradient(circle, rgba(215, 173, 60, 0.28), transparent 70%);
}

.hero-card-label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.06);
    color: #fff;
    font-size: 0.85rem;
    margin-bottom: 18px;
}

.hero-card-mark {
    width: 84px;
    height: 84px;
    border-radius: 24px;
    display: grid;
    place-items: center;
    margin-bottom: 18px;
    background: linear-gradient(180deg, rgba(215, 173, 60, 0.16), rgba(255, 255, 255, 0.04));
    border: 1px solid rgba(215, 173, 60, 0.22);
    box-shadow: 0 18px 30px rgba(0, 0, 0, 0.22);
}

.hero-card-mark i {
    font-size: 2rem;
    color: var(--dorado);
}

.hero-card-clientes {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 18px;
}

.cliente-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(215, 173, 60, 0.35);
    color: #fff;
    font-weight: 700;
    font-size: 0.88rem;
}

.cliente-badge i {
    color: var(--dorado);
    font-size: 1rem;
}

.hero-card-list {
    list-style: none;
    padding: 0;
    margin: 22px 0 0;
}

.hero-card-list li {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    padding: 14px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    color: #dbe6f8;
}

.hero-card-list li:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.hero-card-list i {
    color: var(--dorado);
    font-size: 1.1rem;
    margin-top: 2px;
}

section {
    padding: 100px 0;
}

.titulo {
    text-align: center;
    margin-bottom: 56px;
}

.titulo .section-kicker {
    justify-content: center;
}

.titulo h2 {
    color: #fff;
    font-weight: 700;
    font-size: clamp(2rem, 4vw, 3rem);
    letter-spacing: -0.03em;
    margin-bottom: 12px;
}

.titulo p {
    color: var(--muted);
    max-width: 700px;
    margin: 0 auto;
}

.servicio {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.02));
    border: 1px solid var(--borde);
    padding: 28px;
    border-radius: 22px;
    text-align: left;
    transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
    height: 100%;
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.16);
    position: relative;
    overflow: hidden;
}

.servicio:hover {
    transform: translateY(-8px);
    border-color: rgba(215, 173, 60, 0.25);
    box-shadow: 0 24px 52px rgba(0, 0, 0, 0.24);
}

.servicio::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 3px;
    background: linear-gradient(90deg, var(--dorado), var(--plata));
    opacity: 0.75;
}

.servicio .icono {
    width: 52px;
    height: 52px;
    border-radius: 16px;
    display: grid;
    place-items: center;
    background: rgba(215, 173, 60, 0.12);
    color: var(--dorado);
    margin-bottom: 18px;
    font-size: 1.3rem;
}

.servicio h4 {
    color: #fff;
    font-weight: 700;
    margin-bottom: 10px;
}

.servicio p {
    color: var(--muted);
    margin-bottom: 0;
}

.seccion-suave {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.02), rgba(255, 255, 255, 0.01));
    border-top: 1px solid rgba(255, 255, 255, 0.04);
    border-bottom: 1px solid rgba(255, 255, 255, 0.04);
}

.nosotros-box {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.02));
    border: 1px solid var(--borde);
    border-radius: 26px;
    padding: 32px;
    box-shadow: var(--sombra);
}

.nosotros-lista {
    list-style: none;
    padding: 0;
    margin: 24px 0 0;
    display: grid;
    gap: 14px;
}

.nosotros-lista li {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    color: #dbe6f8;
}

.nosotros-lista i {
    color: var(--dorado);
    font-size: 1.1rem;
    margin-top: 3px;
}

.metricas {
    display: grid;
    grid-template-rows: repeat(2, 1fr);
    gap: 18px;
    height: 100%;
}

.metrica {
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--borde);
    border-radius: 22px;
    padding: 22px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.metrica strong {
    display: block;
    color: var(--dorado);
    font-size: 2rem;
    line-height: 1;
    margin-bottom: 6px;
}

.metrica span {
    color: var(--muted);
}

/* Contiene la sección de galería a un ancho de lectura cómodo: sin esto, en
   pantallas grandes el .container de Bootstrap se expande mucho más que
   las fotos (que tienen su propio tope vía --galeria-tamano), dejando
   huecos enormes entre columnas. */
#galeria .container {
    max-width: 1100px;
}

/* Grilla flexible: la cantidad de fotos por fila surge sola según el ancho
   configurado (--galeria-tamano), en vez de forzar una cantidad fija de
   columnas Bootstrap. Así, si el tamaño configurado no entra más en una
   grilla de 3 columnas, la propia grilla pasa a 2 o a 1 en vez de recortar
   la foto contra un ancho de columna que ya no le alcanza. */
.galeria-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 24px;
}

/* Único lugar donde se resuelve el tamaño: ancho exacto según
   --galeria-tamano, capado al 100% del contenedor (nunca desborda en
   mobile). Las fotos de adentro simplemente ocupan el 100% de esto, sin
   volver a calcular nada. */
.galeria-grid-item {
    width: min(100%, calc(var(--galeria-tamano) * 4 / 3));
}

.galeria-ver-completa {
    text-align: center;
    margin-top: 32px;
}

.pagina-galeria-completa {
    padding: 140px 0 90px;
}

.pagina-galeria-completa .container {
    max-width: 1400px;
}

.enlace-dorado {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--dorado);
    font-weight: 600;
    text-decoration: none;
    transition: color 0.15s ease, gap 0.15s ease;
}

.enlace-dorado:hover {
    color: var(--dorado-claro);
    gap: 12px;
}

.volver-inicio {
    margin-bottom: 24px;
}

.galeria-item {
    position: relative;
}

/* Badge que abre el lightbox con las fotos adicionales del proyecto (solo
   se imprime en el HTML si el proyecto tiene alguna cargada). Es un
   <button> real: funciona con un solo click, además del doble
   click/doble tap en cualquier parte de la tarjeta. */
.galeria-badge-fotos {
    position: absolute;
    z-index: 4;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    border: none;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.65);
    color: #fff;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.15s ease;
}

.galeria-badge-fotos:hover {
    background: var(--dorado);
    color: #111;
    transform: translateY(-2px);
}

/* En la foto suelta va arriba a la derecha (libre). En el comparador va
   abajo a la derecha, porque arriba ya están las etiquetas Antes/Después. */
.galeria-item .galeria-badge-fotos {
    top: 12px;
    right: 12px;
}

.comparador-frame .galeria-badge-fotos {
    bottom: 12px;
    right: 12px;
}

.galeria-item img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: 22px;
    border: 1px solid var(--borde);
    box-shadow: var(--sombra);
    transition: transform 0.25s ease, filter 0.25s ease;
    filter: saturate(1.04) contrast(1.03);
}

/* El hover (elevación + brillo sutil) solo se activa en dispositivos con
   mouse real: evita que quede "pegado" tras un tap en celular/tablet. */
@media (hover: hover) and (pointer: fine) {
    .galeria-item img:hover {
        transform: translateY(-6px);
        filter: saturate(1.08) contrast(1.05);
    }
}

.galeria-item img.img-error {
    display: none;
}

.galeria-placeholder {
    display: none;
    width: 100%;
    aspect-ratio: 4 / 3;
    border-radius: 22px;
    border: 1px dashed rgba(215, 173, 60, 0.3);
    background: linear-gradient(160deg, rgba(215, 173, 60, 0.08), rgba(255, 255, 255, 0.02));
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    color: var(--muted);
    text-align: center;
}

.galeria-placeholder.is-visible {
    display: flex;
}

.galeria-placeholder i {
    font-size: 2.2rem;
    color: var(--dorado);
}

.galeria-placeholder span {
    font-size: 0.9rem;
    font-weight: 600;
}

.galeria-info {
    margin-top: 14px;
}

.galeria-info h3 {
    margin: 0 0 6px;
    font-size: 1.1rem;
    color: #fff;
}

.galeria-info p {
    margin: 0;
    color: var(--muted);
    font-size: 0.94rem;
}

/* --------------------------------------------------------------------
   Comparador antes/después (slider de galería)
   -------------------------------------------------------------------- */

/* El ancho deriva del alto configurado (misma proporción 4:3 que las fotos
   sueltas) y se capa al 100% del contenedor disponible: en mobile nunca se
   desborda, sin importar qué tan grande sea el valor elegido en el admin. */
.comparador-frame {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 22px;
    border: 1px solid var(--borde);
    box-shadow: var(--sombra);
    background: var(--superficie);
    user-select: none;
    transition: transform 0.25s ease, filter 0.25s ease;
}

/* Misma regla que en las fotos sueltas: solo con mouse real, para no dejar
   el hover "pegado" en touch. El translateY es vertical y no afecta el
   cálculo horizontal del slider (que usa getBoundingClientRect en vivo). */
@media (hover: hover) and (pointer: fine) {
    .comparador-frame:hover {
        transform: translateY(-6px);
        filter: brightness(1.06);
    }
}

.comparador-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: saturate(1.04) contrast(1.03);
    pointer-events: none;
}

.comparador-antes-wrap {
    position: absolute;
    inset: 0;
    width: 50%;
    height: 100%;
    overflow: hidden;
}

.comparador-antes-wrap .comparador-img {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    max-width: none;
}

/* Las etiquetas y el mango del slider escalan con --galeria-tamano (clamp
   entre un piso y un techo) para que se vean proporcionados tanto en el
   valor mínimo (150px) como en el máximo (500px) del rango permitido. */
.comparador-tag {
    position: absolute;
    top: 14px;
    z-index: 2;
    padding: clamp(4px, calc(var(--galeria-tamano) * 0.0143), 7px) clamp(8px, calc(var(--galeria-tamano) * 0.0286), 14px);
    border-radius: 999px;
    font-size: clamp(0.6rem, calc(var(--galeria-tamano) * 0.0274), 0.8rem);
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    background: rgba(0, 0, 0, 0.55);
    color: #fff;
    pointer-events: none;
}

.comparador-tag-antes {
    left: 14px;
}

.comparador-tag-despues {
    right: 14px;
}

.comparador-handle {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: clamp(28px, calc(var(--galeria-tamano) * 0.1), 56px);
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: ew-resize;
    touch-action: none;
    z-index: 3;
}

.comparador-handle::before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: clamp(2px, calc(var(--galeria-tamano) * 0.00714), 4px);
    transform: translateX(-50%);
    background: #fff;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25);
}

.comparador-handle-btn {
    position: relative;
    display: grid;
    place-items: center;
    width: clamp(26px, calc(var(--galeria-tamano) * 0.0952), 52px);
    height: clamp(26px, calc(var(--galeria-tamano) * 0.0952), 52px);
    border-radius: 50%;
    background: var(--dorado, #d7ad3c);
    color: #111;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.35);
    font-size: clamp(0.75rem, calc(var(--galeria-tamano) * 0.04), 1.15rem);
}

.comparador-handle:focus-visible {
    outline: 2px solid var(--dorado, #d7ad3c);
    outline-offset: 4px;
    border-radius: 999px;
}

.comparador-info {
    margin-top: 14px;
}

.comparador-titulo {
    margin: 0 0 6px;
    font-size: 1.1rem;
    color: #fff;
}

.comparador-desc {
    margin: 0;
    color: var(--muted);
    font-size: 0.94rem;
}

.faq-lista {
    max-width: 800px;
    margin: 0 auto;
    display: grid;
    gap: 14px;
}

.faq-item {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.02));
    border: 1px solid var(--borde);
    border-radius: 18px;
    overflow: hidden;
}

.faq-pregunta {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 20px 24px;
    background: transparent;
    border: none;
    color: #fff;
    font-weight: 700;
    font-size: 1.05rem;
    text-align: left;
    cursor: pointer;
}

.faq-pregunta i {
    flex-shrink: 0;
    color: var(--dorado);
    transition: transform 0.25s ease;
}

.faq-item.is-open .faq-pregunta i {
    transform: rotate(45deg);
}

.faq-respuesta {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.3s ease;
}

.faq-respuesta-inner {
    overflow: hidden;
}

.faq-respuesta-inner p {
    margin: 0;
    padding: 0 24px 20px;
    color: var(--muted);
}

.faq-item.is-open .faq-respuesta {
    grid-template-rows: 1fr;
}

@media (prefers-reduced-motion: reduce) {
    .faq-respuesta,
    .faq-pregunta i {
        transition: none;
    }
}

.contacto {
    background: linear-gradient(180deg, rgba(8, 8, 8, 0.96), rgba(4, 4, 4, 0.99));
}

.contacto-panel {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.02));
    border: 1px solid var(--borde);
    border-radius: 28px;
    padding: 32px;
    box-shadow: var(--sombra);
}

.contacto-banner {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px 18px;
    border-radius: 18px;
    background: linear-gradient(135deg, rgba(215, 173, 60, 0.12), rgba(213, 215, 219, 0.06));
    border: 1px solid rgba(255, 255, 255, 0.06);
    margin-bottom: 18px;
}

.contacto-banner i {
    width: 40px;
    height: 40px;
    border-radius: 14px;
    display: grid;
    place-items: center;
    background: rgba(0, 0, 0, 0.35);
    color: var(--dorado);
    flex: 0 0 auto;
}

.contacto-banner strong {
    display: block;
    color: #fff;
    margin-bottom: 2px;
}

.contacto-banner span {
    color: var(--muted);
    font-size: 0.92rem;
}

.contacto-info {
    display: grid;
    gap: 16px;
}

.contacto-info .info-item {
    display: flex;
    gap: 14px;
    align-items: flex-start;
    padding: 16px;
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.05);
    min-width: 0;
}

.contacto-info .info-item i {
    width: 42px;
    height: 42px;
    border-radius: 14px;
    display: grid;
    place-items: center;
    color: var(--dorado);
    background: rgba(215, 173, 60, 0.12);
    flex: 0 0 auto;
}

.contacto-info .info-item > div {
    min-width: 0;
    overflow-wrap: break-word;
}

.contacto-info .info-item strong {
    display: block;
    margin-bottom: 4px;
    color: #fff;
}

.contacto-info .info-item span {
    color: var(--muted);
}

.contacto-info .info-item span a {
    color: inherit;
    text-decoration: none;
}

.contacto-info .info-item span a:hover {
    color: var(--dorado-claro);
    text-decoration: underline;
}


.form-control {
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.08);
    color: white;
    border-radius: 16px;
    padding: 14px 16px;
}

.form-control::placeholder {
    color: #7f8ca5;
}

.form-control:focus {
    background: rgba(255, 255, 255, 0.05);
    color: white;
    box-shadow: 0 0 0 0.2rem rgba(215, 173, 60, 0.12);
    border: 1px solid rgba(215, 173, 60, 0.45);
}

.form-label {
    color: #dbe6f8;
    font-weight: 600;
    margin-bottom: 8px;
}

#mensaje {
    resize: none;
    overflow-y: hidden;
}

.contador-caracteres {
    margin-top: 6px;
    text-align: right;
    font-size: 0.78rem;
    color: var(--muted);
}

.form-control.is-invalid {
    border-color: rgba(216, 75, 75, 0.55);
    box-shadow: 0 0 0 0.2rem rgba(216, 75, 75, 0.12);
}

.form-control[type="file"] {
    padding: 10px 14px;
}

.form-control[type="file"]::file-selector-button,
.form-control[type="file"]::-webkit-file-upload-button {
    margin-right: 14px;
    padding: 8px 16px;
    border: none;
    border-radius: 10px;
    background: linear-gradient(135deg, var(--dorado), var(--dorado-claro));
    color: #111;
    font-weight: 700;
    cursor: pointer;
    transition: transform 0.15s ease;
}

.form-control[type="file"]::file-selector-button:hover,
.form-control[type="file"]::-webkit-file-upload-button:hover {
    transform: translateY(-1px);
}

/* input[type=file] real oculto pero funcional detrás de un botón propio. */
.file-input {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 5px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--borde);
    border-radius: 16px;
}

.file-input:focus-within {
    border-color: rgba(215, 173, 60, 0.45);
    box-shadow: 0 0 0 0.2rem rgba(215, 173, 60, 0.12);
}

.file-input-boton {
    flex-shrink: 0;
    padding: 8px 16px;
    border-radius: 10px;
    background: rgba(215, 173, 60, 0.14);
    color: var(--dorado-claro);
    font-weight: 700;
    font-size: 0.85rem;
    text-align: center;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s ease, color 0.15s ease;
}

.file-input-boton:hover {
    background: var(--dorado);
    color: #111;
}

.file-input-nombre {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--muted);
    font-size: 0.85rem;
}

/* No display:none: sigue siendo enfocable/activable por teclado. */
.file-input-real {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.form-check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding-left: 10px;
}

.form-check-input {
    float: none;
    flex-shrink: 0;
    width: 1.15em;
    height: 1.15em;
    margin-top: 3px;
    margin-left: 0;
    background-color: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.25);
}

.form-check-input:checked {
    background-color: var(--dorado);
    border-color: var(--dorado);
}

.form-check-input:focus {
    box-shadow: 0 0 0 0.2rem rgba(215, 173, 60, 0.2);
    border-color: rgba(215, 173, 60, 0.45);
}

.form-check-input.is-invalid {
    border-color: rgba(216, 75, 75, 0.55);
    box-shadow: 0 0 0 0.2rem rgba(216, 75, 75, 0.12);
}

.form-check-label {
    color: var(--muted);
    font-size: 0.92rem;
}

.form-check-label a {
    color: var(--dorado);
    text-decoration: underline;
}

.form-check-label a:hover {
    color: var(--dorado-claro);
}

.field-error {
    min-height: 0;
    margin-top: 6px;
    color: #ff9d9d;
    font-size: 0.85rem;
}

.field-error:empty {
    display: none;
}

.form-card {
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 24px;
    padding: 22px;
}

.error-404 {
    min-height: 100vh;
    display: grid;
    align-items: center;
    padding: 140px 0 90px;
    position: relative;
    overflow: hidden;
}

.error-404::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at top left, rgba(215, 173, 60, 0.14), transparent 30%);
    pointer-events: none;
}

.error-404-panel {
    background: linear-gradient(145deg, rgba(20, 20, 20, 0.96), rgba(7, 7, 7, 0.9));
    border: 1px solid var(--borde);
    border-radius: 28px;
    box-shadow: var(--sombra);
    padding: 56px 42px;
    max-width: 640px;
    margin: 0 auto;
    text-align: center;
    position: relative;
    z-index: 1;
}

.error-404-code {
    font-size: clamp(4rem, 12vw, 7rem);
    font-weight: 800;
    line-height: 1;
    letter-spacing: -0.04em;
    background: linear-gradient(135deg, var(--dorado), var(--dorado-claro));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    margin: 6px 0 18px;
}

.error-404-panel h1 {
    color: #fff;
    font-weight: 700;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    letter-spacing: -0.02em;
    margin-bottom: 14px;
}

.error-404-panel p {
    color: var(--muted);
    max-width: 46ch;
    margin: 0 auto 30px;
}

.error-404-panel .hero-actions {
    justify-content: center;
    margin-bottom: 0;
}

@media (max-width: 575.98px) {
    .error-404 {
        padding: 110px 0 60px;
    }

    .error-404-panel {
        padding: 34px 22px;
    }

    .error-404-panel .hero-actions {
        flex-direction: column;
    }
}

.whatsapp-float {
    position: fixed;
    right: 22px;
    bottom: 22px;
    z-index: 1000;
    width: 58px;
    height: 58px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: #25d366;
    color: #fff;
    font-size: 1.7rem;
    box-shadow: 0 14px 30px rgba(0, 0, 0, 0.4);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.whatsapp-float:hover,
.whatsapp-float:focus-visible {
    transform: translateY(-3px) scale(1.05);
    box-shadow: 0 18px 36px rgba(0, 0, 0, 0.45);
    color: #fff;
}

@media (max-width: 575.98px) {
    .whatsapp-float {
        right: 16px;
        bottom: 16px;
        width: 52px;
        height: 52px;
        font-size: 1.5rem;
    }
}

footer {
    background: #050505;
    border-top: 1px solid rgba(255, 255, 255, 0.06);
    text-align: center;
    padding: 26px 16px;
    color: var(--muted);
}

footer a {
    color: inherit;
    text-decoration: none;
}

footer a:hover {
    color: var(--dorado-claro);
    text-decoration: underline;
}

.footer-brand {
    color: var(--dorado);
    font-weight: 800;
    letter-spacing: 0.08em;
    margin-bottom: 8px;
}

.footer-legal {
    font-size: 0.82rem;
    margin-top: 4px;
    margin-bottom: 0;
}

.footer-copy {
    font-size: 0.78rem;
    margin-top: 8px;
    margin-bottom: 0;
    opacity: 0.7;
}

.pagina-legal {
    padding: 140px 0 90px;
}

.pagina-legal-panel {
    max-width: 780px;
    margin: 0 auto;
    background: linear-gradient(145deg, rgba(20, 20, 20, 0.96), rgba(7, 7, 7, 0.9));
    border: 1px solid var(--borde);
    border-radius: 28px;
    box-shadow: var(--sombra);
    padding: 48px;
}

.pagina-legal-panel h1 {
    color: #fff;
    font-weight: 700;
    font-size: clamp(1.8rem, 4vw, 2.4rem);
    letter-spacing: -0.02em;
    margin: 14px 0 6px;
}

.pagina-legal-fecha {
    color: var(--muted);
    font-size: 0.88rem;
    margin-bottom: 32px;
}

.pagina-legal-panel h2 {
    color: var(--dorado-claro);
    font-weight: 700;
    font-size: 1.15rem;
    margin: 34px 0 12px;
}

.pagina-legal-panel p,
.pagina-legal-panel li {
    color: var(--muted);
    line-height: 1.7;
}

.pagina-legal-panel ul {
    padding-left: 22px;
    margin-bottom: 16px;
}

.pagina-legal-panel a {
    color: var(--dorado);
    text-decoration: underline;
}

.pagina-legal-panel a:hover {
    color: var(--dorado-claro);
}

@media (max-width: 575.98px) {
    .pagina-legal {
        padding: 110px 0 60px;
    }

    .pagina-legal-panel {
        padding: 28px 22px;
    }
}

.alert-delta {
    background: rgba(215, 173, 60, 0.12);
    border: 1px solid rgba(215, 173, 60, 0.22);
    color: #f4e7bf;
    border-radius: 16px;
}

.alert-delta.alert-exito {
    background: rgba(99, 193, 116, 0.14);
    border-color: rgba(99, 193, 116, 0.32);
    color: #bff3c8;
}

.reveal {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 0.7s ease, transform 0.7s ease;
}

.reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
    .reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

.section-kicker {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--dorado);
    font-size: 0.82rem;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    font-weight: 800;
    margin-bottom: 10px;
}

@media (max-width: 991.98px) {
    .hero {
        padding-top: 118px;
    }

    /* minmax(0, ...) y no solo "1fr": un track "1fr" solo tiene un mínimo
       implícito de min-content y no se achica más, desbordando la columna. */
    .hero-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .hero-panel,
    .contacto-panel,
    .nosotros-box {
        padding: 26px;
    }

    .hero-stats {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 575.98px) {
    section {
        padding: 78px 0;
    }

    .hero {
        min-height: auto;
        padding: 108px 0 60px;
    }

    .hero h1 {
        font-size: 2.6rem;
    }

    .hero-meta {
        flex-wrap: nowrap;
        gap: 2px;
        overflow-x: auto;
        padding-bottom: 2px;
    }

    .meta-chip {
        gap: 2px;
        padding: 3px 6px;
        font-size: 0.56rem;
        white-space: nowrap;
        flex: none;
    }

    /* Inicio: 3 fotos visibles en celular (galería completa no usa esta clase). */
    .galeria-grid-home .galeria-grid-item:nth-child(n+4) {
        display: none;
    }

    .hero-panel,
    .contacto-panel,
    .nosotros-box {
        padding: 22px;
    }

    .hero-card {
        padding: 22px;
    }

    .hero-stats {
        gap: 10px;
    }

    .hero-actions {
        flex-direction: column;
    }

    .btn-delta,
    .btn-outline-delta {
        width: 100%;
    }
}

/* A 2.6rem, "Construcción"/"remodelación" no entran y se parten a la mitad. */
@media (max-width: 360px) {
    .hero h1 {
        font-size: 2.2rem;
    }
}

/* --------------------------------------------------------------------
   Lightbox de fotos adicionales del proyecto (badge / doble click-tap)
   -------------------------------------------------------------------- */

.lightbox-galeria {
    position: fixed;
    inset: 0;
    z-index: 3000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.92);
    padding: 24px;
}

.lightbox-galeria[hidden] {
    display: none;
}

.lightbox-imagen-wrap {
    max-width: min(92vw, 1100px);
    max-height: 86vh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.lightbox-imagen {
    max-width: 100%;
    max-height: 86vh;
    border-radius: 12px;
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.6);
    object-fit: contain;
}

.lightbox-video-frame {
    position: relative;
    display: inline-block;
    max-width: 100%;
    max-height: 86vh;
    line-height: 0;
}

.lightbox-video-frame[hidden] {
    display: none;
}

.lightbox-video {
    display: block;
    /* Ancho de base mientras el navegador todavía no sabe las dimensiones
       reales del video (recién las conoce cuando cargan los metadatos): sin
       esto se ve con el tamaño mínimo por defecto (300x150) y después salta.
       Una vez cargados los metadatos, el video toma su relación de aspecto
       real dentro de ese ancho. */
    width: min(88vw, 640px);
    max-width: 100%;
    max-height: 86vh;
    border-radius: 12px;
    border: 1px solid rgba(215, 173, 60, 0.3);
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.6);
    background: #000;
}

/* Mientras se intenta el autoplay, el video ya está visible (negro, se
   mezcla con el fondo oscuro del lightbox) en vez de un recuadro con estilo
   propio que se notara al aparecer (ver punto 4). Solo la barra de
   controles queda oculta hasta que el video realmente arranca, para no ver
   su ícono de play suelto un instante antes de que pase a pausa. */
.lightbox-video-frame.cargando .lightbox-video-controles {
    display: none;
}

/* Controles propios (play, progreso, tiempo, volumen, pantalla completa):
   los nativos del navegador no se pueden personalizar de forma consistente
   entre navegadores, así que se reemplazan por completo. */
.lightbox-video-controles {
    position: absolute;
    left: 10px;
    right: 10px;
    bottom: 10px;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    border-radius: 10px;
    background: rgba(10, 10, 10, 0.72);
    backdrop-filter: blur(6px);
    border: 1px solid rgba(215, 173, 60, 0.25);
}

.lvc-play,
.lvc-mute,
.lvc-fullscreen {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    display: grid;
    place-items: center;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
    cursor: pointer;
    font-size: 1rem;
    transition: background 0.15s ease, color 0.15s ease;
}

.lvc-play:hover,
.lvc-mute:hover,
.lvc-fullscreen:hover {
    background: var(--dorado);
    color: #111;
}

.lvc-tiempo {
    flex-shrink: 0;
    min-width: 74px;
    font-size: 0.78rem;
    color: rgba(255, 255, 255, 0.85);
    font-variant-numeric: tabular-nums;
}

.lvc-barra {
    flex: 1 1 auto;
    padding: 8px 0;
    cursor: pointer;
}

.lvc-barra:focus-visible {
    outline: none;
}

.lvc-barra:focus-visible .lvc-barra-fondo {
    box-shadow: 0 0 0 2px var(--dorado);
}

.lvc-barra-fondo {
    position: relative;
    height: 4px;
    border-radius: 2px;
    background: rgba(255, 255, 255, 0.2);
    overflow: hidden;
}

.lvc-barra-progreso {
    position: absolute;
    inset: 0;
    width: 0%;
    border-radius: 2px;
    background: linear-gradient(90deg, var(--dorado), var(--dorado-claro));
}

.lightbox-video-frame.is-fullscreen {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100vw;
    height: 100vh;
    max-width: 100vw;
    max-height: 100vh;
    background: #000;
}

.lightbox-video-frame.is-fullscreen .lightbox-video {
    max-height: 100vh;
    border: none;
    border-radius: 0;
}

.lightbox-cerrar,
.lightbox-flecha {
    position: absolute;
    display: grid;
    place-items: center;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.lightbox-cerrar:hover,
.lightbox-flecha:hover {
    background: var(--dorado);
    color: #111;
}

.lightbox-cerrar {
    top: 20px;
    right: 20px;
    width: 44px;
    height: 44px;
    font-size: 1.1rem;
}

.lightbox-flecha {
    top: 50%;
    transform: translateY(-50%);
    width: 52px;
    height: 52px;
    font-size: 1.5rem;
}

.lightbox-anterior {
    left: 20px;
}

.lightbox-siguiente {
    right: 20px;
}

.lightbox-contador {
    position: absolute;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    padding: 6px 14px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    font-size: 0.85rem;
    font-weight: 600;
}

@media (max-width: 575.98px) {
    .lightbox-flecha {
        width: 42px;
        height: 42px;
        font-size: 1.2rem;
    }

    .lightbox-anterior {
        left: 8px;
    }

    .lightbox-siguiente {
        right: 8px;
    }

    .lightbox-cerrar {
        width: 38px;
        height: 38px;
        top: 10px;
        right: 10px;
    }
}
