@font-face {
    font-family: 'Host Grotesk';
    src: url('../fonts/HostGrotesk-VariableFont_wght.woff2') format('woff2'),
    url('../fonts/HostGrotesk-VariableFont_wght.woff') format('woff'),
    url('../fonts/HostGrotesk-VariableFont_wght.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

/*
CSS GENERAL PARA MAREBENS
*/
.site {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-top: 96px;
}

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

a {
    color: inherit;
}

.column {
    display: flex;
    flex-direction: column;
}

.row {
    display: flex;
}

.width-max {
    width: 1440px;
    max-width: 100%;
}

.full-width {
    width: 100%;
}

.column.gap-4 {
    gap: 4px;
}

.gap-8 {
    gap: 8px;
}

.column.gap-10 {
    gap: 10px;
}

.gap-12 {
    gap: 12px;
}

.gap-16 {
    gap: 16px;
}

.gap-20 {
    gap: 20px;
}

.gap-24 {
    gap: 24px;
}

.column.gap-32 {
    gap: 32px;
}

.column.gap-36 {
    gap: 36px;
}

.gap-40 {
    gap: 40px;
}

.column.gap-44 {
    gap: 44px;
}

.gap-48 {
    gap: 44px;
}

.gap-80 {
    gap: 80px
}

.input-text {
    height: 40px;
    padding: 10px 10px 10px 12px;
}

.clean-a {
    text-decoration: none;
    color: inherit;
}

.custom-select-container {
    position: relative;
    width: 100%;
}

.custom-select {
    cursor: pointer;
    width: 100%;
    justify-content: space-between;
    align-items: center;
    position: relative;
}

.custom-options-wrapper {
    position: absolute;
    top: 160%;
    left: -24px;
    width: 272px;
    z-index: 10;
    display: none;
}

.custom-select.active .custom-options-wrapper {
    display: block;
}

.custom-options {
    max-height: 380px;
    overflow-y: auto;
    background: #F4F3F1;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 12px;
    position: relative;
}

.custom-options-fade {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 40px;
    width: 100%;
    background: linear-gradient(to bottom, rgba(244, 243, 241, 0), #F4F3F1);
    pointer-events: none;
    z-index: 1;
    display: none;
}

.custom-options-wrapper.has-overflow .custom-options-fade {
    display: block;
}

.custom-option {
    padding: 12px;
    background-color: white;
    border: 1px solid #93908A;
}

.custom-option:hover {
    background-color: #6F6456;
    color: #FFF;
}

/*
CLASES GLOBALES DE TEXTOS
*/
.interaction-text-nav {
    font-family: "Host Grotesk";
    font-weight: 400;
    font-size: 16px;
    line-height: 20px;
    letter-spacing: 0%;
    vertical-align: middle;
    position: relative;
    display: inline-block;
    cursor: pointer;
    padding-bottom: 2px;
}

.interaction-button {
    /* Interaction/Button */
    font-family: "Host Grotesk";
    font-size: 16px;
    font-style: normal;
    font-weight: 400;
    line-height: normal;

}

.interaction-text-nav::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    height: 1px;
    width: 0%;
    background-color: currentColor;
    /* usa el color del texto */
    transition: width 0.3s ease;
}

.interaction-text-nav:hover::after {
    width: 100%;
}

.interaction-links-footer {
    color: #FFF;
    font-family: "Host Grotesk";
    font-size: 14px;
    font-weight: 500;
    line-height: 20px;
}

.interaction-link-s {
    /* Interaction/Link-S */
    font-family: "Host Grotesk";
    font-size: 14px;
    font-weight: 500;
    line-height: 20px;
    text-decoration-line: underline;
    text-decoration-style: solid;
    text-decoration-skip-ink: auto;
    text-decoration-thickness: auto;
    text-underline-offset: auto;
    text-underline-position: from-font;
}

.interaction-link-m {
    /* Interaction/Link-M */
    font-family: "Host Grotesk";
    font-size: 16px;
    font-style: normal;
    font-weight: 500;
    line-height: 28px;
    /* 175% */
    text-decoration-line: underline;
    text-decoration-style: solid;
    text-decoration-skip-ink: auto;
    text-decoration-thickness: auto;
    text-underline-offset: auto;
    text-underline-position: from-font;
    list-style-position: inside
}

.desktop-h1-home {
    font-family: "Sentient";
    font-weight: 200;
    font-size: 56px;
    line-height: 64px;
    letter-spacing: -3px;
    text-align: center;
}

.desktop-h1-interior-m {
    /* Desktop/H1-Interior-M */
    font-family: "Host Grotesk";
    font-size: 20px;
    font-style: normal;
    font-weight: 400;
    line-height: 24px;

}

.desktop-h1-interior-l {
    font-family: "Sentient";
    font-size: 44px;
    font-weight: 200;
    line-height: 52px;
    /* 118.182% */
    letter-spacing: -1.76px;
}

.desktop-h2-title-m {

    font-family: "Host Grotesk";
    font-size: 22px;
    font-style: normal;
    font-weight: 400;
    line-height: 24px;
}

.desktop-h2-title-l {
    font-family: "Sentient";
    font-size: 44px;
    font-weight: 200;
    line-height: 52px;
    letter-spacing: -1.76px;
}

.desktop-h3-title-m {
    font-family: "Host Grotesk";
    font-size: 16px;
    font-style: normal;
    font-weight: 600;
    line-height: 20px;
}

.desktop-pretitle {
    font-family: "Sentient";
    font-weight: 400;

    font-size: 16px;
    line-height: 24px;
    letter-spacing: -0.5px;
}

.desktop-body-xs {
    font-family: "Host Grotesk";
    font-weight: 600;
    font-size: 12px;
    line-height: 100%;
    letter-spacing: 3%;
    vertical-align: middle;
}

.desktop-body-s {
    font-family: "Host Grotesk";
    font-size: 14px;
    font-style: normal;
    font-weight: 500;
    line-height: 20px;
    text-decoration: none;
}

.desktop-body-m {
    font-family: "Host Grotesk";
    font-size: 16px;
    font-style: normal;
    font-weight: 400;
    line-height: 24px;
}

.desktop-body-m-bold {
    font-family: "Host Grotesk";
    font-size: 16px;
    font-weight: 600;
    line-height: 20px;
}

.desktop-body-l {
    font-family: "Host Grotesk";
    font-size: 18px;
    font-style: normal;
    font-weight: 400;
    line-height: 24px;
}

.desktop-text-kpi-m {
    /* Desktop/Text-KPI-M */
    font-family: "Host Grotesk";
    font-size: 76px;
    font-style: normal;
    font-weight: 400;
    line-height: 64px;
    /* 84.211% */
    letter-spacing: -3.04px;
    text-transform: uppercase;
}

.desktop-text-kpi-l {
    font-family: "Host Grotesk";
    font-size: 136px;
    font-style: normal;
    font-weight: 300;
    line-height: 136px;
    letter-spacing: -12.24px;
}

.desktop-text-quote {

    font-family: "SentientItalic";
    font-size: 36px;
    font-weight: 200;
    line-height: 44px;
    letter-spacing: -1.5px;
}

.desktop-text-tag-property {
    font-family: "Host Grotesk";
    font-size: 12px;
    font-style: normal;
    font-weight: 500;
    line-height: 12px;
    /* 175% */
    letter-spacing: 0.2px;
}

.desktop-text-filter-label {
    /* Desktop/Text-Filter-Label */
    font-family: "Host Grotesk";
    font-size: 12px;
    font-style: normal;
    font-weight: 600;
    line-height: normal;
    letter-spacing: 0.48px;
    text-transform: uppercase;
}

.desktop-text-filter-value {
    /* Desktop/Text-Filter-Value */
    font-family: "Host Grotesk";
    font-size: 14px;
    font-style: normal;
    font-weight: 400;
    line-height: normal;
}

.desktop-title-s {
    font-family: "Host Grotesk";
    font-size: 14px;
    font-weight: 500;
    line-height: 20px;
    /* 142.857% */
}

.desktop-title-m {
    font-family: "Host Grotesk";
    font-size: 20px;
    font-weight: 400;
    line-height: 24px;
}

.desktop-title-l {
    font-family: "Host Grotesk";
    font-size: 24px;
    font-weight: 400;
    line-height: 28px;
    text-decoration: none;
}

.side-menu-links .desktop-title-l {
    cursor: pointer;
    padding-bottom: 2px;
    position: relative;
}

.side-menu-links .desktop-title-l::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    height: 1px;
    width: 0%;
    background-color: currentColor;
    transition: width 0.3s ease;
}

.side-menu-links .desktop-title-l:hover::after {
    width: 100%;
}


.desktop-title-xxl {
    font-family: Sentient;
    font-size: 335px;
    font-weight: 200;
    line-height: 335px;
    letter-spacing: -13.4px;
}

/*
CLASES GLOBALES DE COLOR
*/
.interaction-default {
    color: #6F6456
}

.interaction-disabled {
    color: #F0EEEA;
}

.interaction-text-disabled {
    color: #999;
}

.primary-white {
    color: #fff;
}

.primary-blue {
    color: #0C142A;
}

.secondary-gray-text {
    color: #494949;
}

.secondary-beige {
    color: #B0B0B0;
}

.secondary-soft-beige {
    color: #F4F3F1;
}

/*
CLASES GLOBALES DE BOTONES
*/
.button-primary-desktop {
    display: flex;
    width: 252px;
    height: 44px;
    padding: 12px 20px;
    justify-content: space-between;
    align-items: center;
    border: 0;
    background-color: #6F6456;
    text-decoration: none;
    color: #fff;
    cursor: pointer;
}

.button-primary-desktop:hover {
    background-color: #5E5549;
}

.button-gallery-desktop {
    display: flex;
    width: 328px;
    height: 44px;
    padding: 12px 20px;
    justify-content: space-between;
    align-items: center;
    flex-shrink: 0;
    background-color: #6F6456;
    text-decoration: none;
}

.button-gallery-mobile {
    display: flex;
    width: 100%;
    height: 48px;
    padding: 12px 20px;
    justify-content: space-between;
    align-items: center;
    flex-shrink: 0;
    background-color: #6F6456;
    text-decoration: none;
}

/*
HEADER.PHP
*/

.site-header {
    display: flex;
    width: 100%;
    align-items: center;
    height: 96px;
    flex-direction: column;
    position: fixed;
    top: 0;
    z-index: 100;
    background-color: #fff;
}

.anuncio-header {
    height: 28px;
    background-color: #0C142A;
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
}

.container-header {
    height: 68px;
    display: flex;
    justify-content: space-between;
    padding: 0 40px;
    align-items: center;
}

.main-navigation {
    display: flex;
    align-items: center;
    gap: 28px;
}

.menu-button {
    display: flex;
    width: 132px;
    height: 40px;
    padding: 0 20px;
    justify-content: space-between;
    align-items: center;
    flex-shrink: 0;
    border: 1.5px solid #6F6456;
    cursor: pointer;
}

.menu-link {
    display: flex;
    gap: 8px;
    align-items: center;
}

.dropdown-container {
    position: relative;
    cursor: pointer;
}

.dropdown-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 100;
    margin-top: 10px;
    display: none;
    flex-direction: column;
    min-width: 246px;
    background-color: #F4F3F1;
    padding: 12px;
    min-width: 246px;
    gap: 8px;
    color: #0C142A;
}

.dropdown-container.open .dropdown-menu {
    display: flex;
}

.dropdown-item {
    padding: 12px;
    border: 1px solid #93908A;
    background: #fff;
}

.dropdown-item:hover {
    background: #6F6456;
    color: white;
}

/* Panel lateral */
.side-menu {
    position: fixed;
    top: 0;
    right: 0;
    padding: 40px;
    /* anclado al borde derecho */
    height: 100vh;
    width: 484px;
    background: #0C142A;
    box-shadow: -2px 0 8px rgba(0, 0, 0, 0.2);
    z-index: 9999;

    /* estado cerrado: fuera de vista */
    transform: translateX(100%);
    opacity: 0;
    pointer-events: none;

    display: flex;
    /* mantén renderizado para animar */
    flex-direction: column;

    transition: transform 0.3s ease, opacity 0.3s ease;
}

.side-menu.open {
    transform: translateX(0);
    opacity: 1;
    pointer-events: auto;
    /* visible */
}

/* Fondo oscuro */
.side-menu-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease;
    z-index: 9998;
}

.side-menu-overlay.active {
    opacity: 1;
    visibility: visible;
}

.side-menu-header {
    display: flex;
    justify-content: flex-end;
    padding-bottom: 24px;
}

.side-menu-links p {
    display: flex;
    align-items: center;
    gap: 4px;
}

.side-menu-separador {
    margin: 36px auto;
    display: flex;
    align-items: center;
}

.side-menu-social {
    display: flex;
    gap: 12px;
}

.side-menu-contacta {
    margin-top: 48px;
}

.close-btn {
    background: none;
    border: 1.5px solid #F4F3F1;
    cursor: pointer;
    display: flex;
    padding: 0 20px;
    height: 40px;
    align-items: center;
    width: 132px;
    justify-content: space-between;
}


/*
FOOTER.PHP
*/
#colophon {
    background-color: #0C142A;
    width: 100%;
    display: flex;
    justify-content: center;
}

.site-footer {
    height: 1016px;
    flex-shrink: 0;
    padding: 0 40px;
}

.footer-letters {
    padding: 88px 0px;
    display: flex;
    gap: 41.85px;
}

.footer-social {
    display: flex;
    gap: 17px;
    justify-content: space-between;
}

.footer-oficinas {
    display: flex;
    gap: 17px;
}

.footer-social-links {
    display: flex;
    gap: 12px;
}

.footer-social-links-item {
    display: flex;
    width: 40px;
    height: 40px;
    max-width: 444.8px;
    padding: 8px;
    justify-content: center;
    align-items: center;
    border: 1px solid #FFF;
    color: white;
    text-decoration: none;
}

.footer-separador {
    display: flex;
    flex-direction: column;
    gap: 20px;
    margin: 80px 0 38px;
}

.footer-partners {
    display: flex;
    gap: 16px;
}

.footer-partners-item {
    display: flex;
    height: 152px;
    padding: 0 151px 0 153px;
    justify-content: center;
    align-items: center;
    border: 1px solid rgba(255, 255, 255, 0.20);
}

.footer-oficinas-item-header {
    margin-bottom: 20px;
}

.partner-1 {
    padding: 0 151px 0 153px;
}

.partner-2 {
    padding: 0 138px 0 138px;
}

.partner-3 {
    padding: 0 132px 0 132px;
}

.footer-legals {
    justify-content: space-between;
    margin-top: 100px;
}

/*HOME.PHP*/
.page-home {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.home-title {
    display: flex;
    width: 920px;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    margin-top: 64px;
    margin-bottom: 135px;
}

.home-hero {
    position: relative;
    display: flex;
    align-items: center;
    flex-direction: column;
    margin-bottom: 100px;
    padding: 0 40px;
}

.video-wrap {
    position: relative;
    display: block
}

.video-wrap-mobile {
    max-width: 100%;
    margin-top: 72px;
    padding: 0 40px;
}

.video-wrap-mobile>div {
    position: relative;
    display: block;
    width: 100%;
}

.video-wrap-mobile video {
    max-width: 100%;
}

.home-video {
    width: 1360px;
    height: 637px;
    object-fit: cover;
}

.filter-home {
    position: absolute;
    top: -47px;
    width: 916px;
    background-color: #F4F3F1;
    height: 80px;
    padding: 16px 16px 16px 0px;
    z-index: 99;
}

.video-toggle,
.video-toggle-mobile {
    position: absolute;
    right: 32px;
    bottom: 32px;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(176, 176, 176, 0.10);
    backdrop-filter: blur(16px);
    border: 1px solid white;
    color: #fff;
    border-radius: 2px;
    cursor: pointer;
    z-index: 5;
}

.filter-item {
    width: 208px;
    border-right: 1px solid #B0B0B0;
    height: 100%;
    align-items: center;
    justify-content: space-between;
    padding: 0 24px 0;
}

.filter-button {
    display: flex;
    align-items: center;
    padding-left: 20px;
}

.home-separator {
    display: flex;
    justify-content: space-between;
    padding: 0 40px;
    align-items: center;
    margin-bottom: 20px;
}

.separator-num {
    color: #6F6456;
    text-align: center;
    font-family: "Sentient";
    font-size: 12px;
    font-style: normal;
    font-weight: 400;
    line-height: 12.043px;
    letter-spacing: 4px;
}

.arrow-separator-container {
    display: flex;
    align-items: center;
    width: 100%;
    height: 6px;
}

.sep-arrow {
    width: 5px;
    height: 6px;
    flex-shrink: 0;
}

.sep-line {
    flex-grow: 1;
    height: 6px;
    margin: 0 -1px;
}

.historia {
    padding: 0 40px;
    display: flex;
    justify-content: space-between;
    margin-bottom: 136px;
    gap: 8px;
}

.historia-section {
    width: 557px;
}

.historia-section-item {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.home-switch {
    display: flex;
    padding: 0 40px;
    margin-bottom: 100px;
    position: relative;
    gap: 16px;
}

.home-switch-mobile {
    margin-bottom: 56px;
    padding: 0 40px;
    align-items: flex-end;
}

.home-switch-upper {
    width: 100%;
    max-width: 1016px;
    height: 536px;
}

.home-switch-mobile-upper {
    width: 100%;
}

.home-switch-upper img,
.home-switch-mobile-upper img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.switch-mobile-video {
    width: 50%;
    height: auto;
    object-fit: fill;
}

.switch-video {
    width: 328px;
    height: 320px;
    object-fit: fill;
}

.historia-extra {
    display: flex;
    gap: 16px;
    padding: 0 40px;
    margin-bottom: 144px;
}

.historia-extra-item {
    gap: 12px;
}

.historia-extra-item-container {
    gap: 20px;
}

.destacadas {
    width: 100%;
    height: 528px;
    background-color: #0C142A;
    margin-bottom: 144px;
    display: flex;
    justify-content: center;
    padding-top: 88px;
}

.destacadas-lista {
    display: flex;
    gap: 16px;
    overflow: hidden;
}

.destacadas-lista-item {
    display: flex;
    height: 80px;
    padding: 9.412px 9.412px 9.412px 28.235px;
    justify-content: center;
    align-items: center;
    gap: 18.824px;
    border: 1.176px solid #6F6456;
}

.destacadas-info {
    display: flex;
    justify-content: space-between;
}

.destacadas-content {
    padding: 0 40px;
}

.destacadas-buttons {
    padding: 0 14px;
    height: 44px;
    align-items: center;
    justify-content: center;
    border: 0;
    font-size: 17px;
}

.destacadas-buttons-disabled {
    background-color: #F0EEEA;
}

.destacadas-buttons-enabled {
    background-color: #6F6456;
    color: white;
    cursor: pointer;
}

.mision {
    margin-bottom: 144px;
    gap: 44px;
    padding: 0 40px;
}

.svg-underline {
    position: relative;
    display: inline-block;
    width: fit-content;
}

.svg-underline::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 15px;
    /* ajusta separación */
    border-bottom: 2px dotted #93908A;
    /* estilo punteado */
}

.mision-content {
    display: flex;
    justify-content: space-between;
    gap: 16px;
}

.mision-firma {
    display: flex;
    gap: 15px;
}

.contacta-grande {
    padding: 0 40px;
    margin: 44px 0 144px 0;
}

.contacta-grande-interior {
    display: flex;
    justify-content: space-between;
    gap: 16px;
}

.contacta-grande-left {
    width: 434px;
}

.contacta-grande-right {
    width: 672px;
}

.contacta-grande-checks {
    margin: 8px 0;
}

.contacta-grande-response {
    border: 1px solid #399F72;
    padding: 0px 16px;
    background-color: #F4FFFA;
    align-items: center;

}

#mensaje {
    height: 68px;
}

#sky-mensaje {
    padding: 12px;
}

.input-text.is-invalid,
textarea.is-invalid,
select.is-invalid {
    border: 1px solid red !important;
    outline: none;
}

.error-form {
    color: #E00000;

}

/* ----- Layout base ----- */

.banner {
    position: relative;
    display: flex;
    justify-content: center;
    overflow: hidden;
    height: 472px;
    width: 100%;
}

.banner-interior {
    text-align: center;
    gap: 32px;
    padding: 88px 480px;
}

.banner-header {
    gap: 16px;
}

.banner-content {
    gap: 28px;
    align-items: center;
}

.banner-interior {
    position: relative;
    z-index: 2;
    text-align: center;
}

.banner-background {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: url('../img/banner.webp');
    /* Ajusta la ruta */
    background-size: cover;
    background-position: center;
    z-index: 0;
}

.banner-capa {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #0C142ACC;
    /* color semitransparente, ej. azul oscuro */
    z-index: 1;
}

/*
SERVICES.php
*/
.services-content {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: 0 40px;
    margin: 44px auto 144px;
    gap: 17px
}

.services-right {
    position: sticky;
    top: 192px;
}

.form-sticky {
    width: 328px;
    padding: 36px;
    background-color: #0C142A;

}

.form-sticky-element .custom-options-wrapper {
    bottom: 0;
    left: -3%;
    top: inherit;
}

.form-sticky-element .custom-select {
    background-color: white;
}

.services-header {
    width: 672px;
    margin-bottom: 80px;
}

.services-body {
    width: 100%;
    max-width: 901px;
    gap: 36px;
}

.services-left {
    flex-grow: 1;
}

.services-section {
    gap: 44px;
    padding-top: 44px;
}

.services-item {
    width: 672px;
}

.services-minisection {
    padding: 0 8px;
    border-top: 1px solid #AFA79A;
}

.minisection-header {
    display: flex;
    justify-content: space-between;
    padding: 16px 0;
    align-items: center;
    cursor: pointer;
}

.minisection-body {
    gap: 36px;
    max-height: 0;
    overflow: hidden;
    transition: max-height .5s ease;
    position: relative;
}

.minisection-body::after {
    content: "";
    display: block;
    height: 0;
    /* cerrado: sin espacio */
    transition: height .5s ease;
}

.minisection-body.is-open {
    max-height: 1000px;
}

.minisection-body.is-open::after {
    height: 40px;
    /* el “margin” inferior suave */
}

/*
Nosotros.php
*/
.page-nosotros {
    align-items: center;
}

.nosotros-title {
    display: flex;
    width: min(100%, 900px);
    flex-direction: column;
    align-items: center;
    gap: 16px;
    margin-top: 64px;
    margin-bottom: 64px;
    padding: 0 40px;
}

.nosotros-image {
    margin-bottom: 100px;
    padding: 0 40px;
    width: min(100%, 1440px);
}

.legado {
    max-width: 1440px;
    width: 100%;
    padding: 0 40px;
    display: flex;
    justify-content: space-between;
    margin: 0 auto 144px;
    overflow-x: clip;
    gap: 12px;
}

.legado-content {
    width: 557px;
}

.kpi-stage {
    position: relative;
    width: 557px;
    overflow: hidden;
}

.kpi-stack {
    position: relative;
    width: 100%;
}

.legado-item {
    padding: 16px;
    border: 1px solid #B0B0B0;
    background-color: #F4F3F1;
    width: 100%;
    box-sizing: border-box;
    transition: top .35s ease;

}

/* Durante el pin y al final, son absolute dentro del stack */
.kpi-stage.locking .legado-item,
.kpi-stage.stacked .legado-item {
    position: absolute;
    left: 0;
    right: 0;
}

/* Bloqueo de scroll del viewport */
body.scroll-locked {
    position: fixed;
    inset: 0;
    overflow: hidden;
    width: 100%;
}

/* Crea un stacking context propio para controlar z-index sin interferencias */
.kpi-stack {
    isolation: isolate;
}

/* (Opcional) evita clics en tarjetas tapadas por otras */
.kpi-stage.locking .legado-item,
.kpi-stage.stacked .legado-item {
    pointer-events: none;
}

.kpi-stage.locking .legado-item.is-top,
.kpi-stage.stacked .legado-item.is-top {
    pointer-events: auto;
}

.hitos {
    padding: 88px 0;
    width: 100%;
    height: 668px;
    background-color: #0C142A;
    align-items: center;
}

.hitos-content {
    width: 100%;
    max-width: 1440px;
    padding: 0 40px;
}

.hitos-interior {
    display: flex;
    justify-content: center;
    gap: 32px;
}

.hitos-element {
    justify-content: end;
    width: 176px;
    height: 328px;
    position: relative;
    padding-bottom: 10px;
    visibility: hidden;
}

.hitos-element p {
    margin-left: 50px;
}

.hitos-back {
    width: 69px;
    position: absolute;
    bottom: 0;
    left: 0;
}

.hitos-back-top {
    position: absolute;
    top: 0;
}

.hitos-back-bot {
    position: absolute;
    bottom: 0;
    left: 47%;
}

.equipo {
    margin: 144px 0;
    width: 100%;
    max-width: 1440px;
    padding: 0 40px;
}

.equipo-header {
    margin: 44px 0 56px;
}

.equipo-content {
    display: flex;
    gap: 20px;
    overflow: hidden;
}

.equipo-paginado {
    margin-top: 48px;
    display: flex;
    justify-content: space-between;
}

.valoraciones {
    width: 100%;
    background-color: #0C142A;
    padding: 88px 0;

}

.valoraciones-content {
    width: 100%;
    max-width: 1440px;
    padding: 0 40px;
    margin: 0 auto;
}

.valoraciones-interior {
    display: flex;
    justify-content: space-between;
}

.valoraciones-left {
    width: 50%;
    justify-content: space-between;
}

.valoraciones-right {
    width: 50%;
    gap: 38px;
}

.valoraciones-buttons {
    justify-content: end;
}

.favoritos-header {
    margin: 44px auto 0;
    padding: 0 40px;
}

.favoritos-header-content {
    width: 560px;
}

.page-favoritos-content {
    margin: 0 auto;
}

/*
List properties.php
*/
.page-list-properties {
    align-items: center;
    margin: 0 auto;
}

.list-property-title {
    margin-bottom: 56px;
}

.properties-filter {
    width: 1124px;
    height: 80px;
    background-color: #F4F3F1;
    margin-bottom: 80px;
    padding: 16px 0px;
}

.properties-filter .filter-button {
    padding-right: 20px;
}

.properties-info {
    width: 100%;
    max-width: 1440px;
    padding: 0 40px;
}

.properties-separator {
    width: 100%;
    max-width: 1440px;
    padding: 0 40px;
    display: flex;
    align-items: center;
    margin: 24px 0 56px;
}

.properties-separator-extra {
    width: 100%;
    max-width: 1440px;
    padding: 0 40px;
    display: flex;
    align-items: center;
    margin: 0 0 44px;
}

.properties-separator-extra-extra {
    width: 100%;
    max-width: 1440px;
    padding: 0 40px;
    display: flex;
    align-items: center;
    margin: 100px 0 44px;
}

.page-favoritos-properties {
    margin-top: 80px;
}

.page-favoritos-properties .properties-list-item {
    margin: 0;
}

.properties-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    width: 100%;
    max-width: 1440px;
    padding: 0 40px;
}

.properties-list-item {
    margin-bottom: 48px;

}

.list-item-image {
    height: 220px;
    position: relative;
}

.list-item-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.list-item-heart {
    position: absolute;
    top: 20px;
    right: 20px;
}

.list-item-tag {
    position: absolute;
    top: 20px;
    left: 20px;
    padding: 8px 10px;
    display: flex;
    align-items: center;
    background-color: #0C142A;
}

.properties-textseo {
    width: 100%;
    max-width: 1440px;
    padding: 0 40px;
}

.properties-textseo-interior {
    width: 671px;
}

.properties-tagseo {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    width: 100%;
    max-width: 1440px;
    padding: 0 40px;
    margin-bottom: 144px;
}

.clientes-image {
    padding: 0 40px;
    margin-bottom: 100px;
}

.clientes-image img {
    width: 100%;
}

.clientes-panels {
    justify-content: space-around;
    padding: 0 40px;
}

.clientes-panel ul {
    list-style-position: inside;
}

/**
PAge property.php
*/
.property {
    align-items: center;
    margin-top: 16px;
}

.property-title {
    padding: 0 40px;
    margin: 32px 0 68px;
    justify-content: space-between;
}

.property-content {
    align-items: flex-start;
    justify-content: space-between;
    width: 100%;
    max-width: 1440px;
    padding: 0 40px;
    gap: 131px;
}

.property-content-right {
    position: sticky;
    top: 192px;
}

.property-specs {
    margin: 44px 0 28px;
    width: 672px;
}

.property-energia {
    margin: 32px 0 0;
}

.property-energia .row {
    align-items: center;
}

.property-map {
    margin: 68px 0;
}

.map-container {
    position: relative;
    display: inline-block;
    width: min(100%, 901px);
    ;
}

.map-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #0D047E2B;
    /* Azul transparente */
    pointer-events: none;
    /* Permite interactuar con el mapa debajo */
    z-index: 1;
}

.property-buttons {
    margin-top: 32px;
}

.property-gold-button {
    justify-content: space-between;
    width: 252px;
    padding: 12px 20px;
    align-items: center;
    border: 1.5px solid #796F5F;
    cursor: pointer;
    background-color: transparent;
}

.property-gold-button:hover {
    background-color: #6F6456;
}

.property-gold-button:hover p {
    color: #fff;
}

.property-gold-button:hover svg path {
    fill: #fff;
}

.property-similars {
    background-color: #0C142A;
    align-items: center;
    margin-top: 144px;
}

.property-similars-content {
    padding: 0 40px;
    margin: 88px 0;
}

.property-similars-content-properties {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;

}

/*Energia*/
.energia-item {
    height: 40px;
    width: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
}

.energia-item.selected {
    width: 50px;
    height: 50px;
    border: 2px solid #0C142A;
}

.energia-item.selected .desktop-title-s {
    font-size: 18px;
    font-weight: 700;
}

.energia-item-a {
    background-color: #0E766E;
}

.energia-item-b {
    background-color: #13A676;
}

.energia-item-c {
    background-color: #68A150;
}

.energia-item-d {
    background-color: #FBC948;
}

.energia-item-e {
    background-color: #FFAF98;
}

.energia-item-f {
    background-color: #EF6D30;
}

.energia-item-g {
    background-color: #E92A51;
}

/*
Page contactar.php
*/
.page-contactar {
    align-items: center;
}

.contactar-mapas {
    background-color: #0C142A;
    align-items: center;
    width: 100%;
}

.mapas-interior {
    padding: 88px 40px;
}

.mapas-interior-header {
    margin-bottom: 56px;
}

.mapa-item {
    justify-content: space-between;
    margin-bottom: 40px;
}

.mapa-item-image {
    width: min(100%, 901px);
    ;
}

.mapa-item-text p {
    width: 232px;
}

/**
gallery.php
*/
/* Layout general */
.property-gallery {
    padding: 0 40px;
}

.property-gallery-button {
    padding: 0 40px;
}

.property-gallery .gallery-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 328px;
    /* main | thumbs */
    gap: 16px;
}

/* Tamaños del visor principal */
.property-gallery .gallery-main {
    position: relative;
    width: 100%;
    height: 404px;
    overflow: hidden;
    background: #0C142A;
}

.property-gallery .gallery-main .swiper-slide {
    display: flex;
    align-items: center;
    justify-content: center;
    user-select: none;
}

.gallery-main .swiper-button-prev,
.gallery-main .swiper-button-next {
    display: flex;
    width: 44px;
    height: 44px;
    justify-content: center;
    align-items: center;
    background-color: #6F6456;
    padding: 12px;
    margin-top: 0 !important;
    pointer-events: auto;
    position: relative;
    top: 0 !important;
    right: 0 !important;
    left: 0 !important;
    bottom: 0 !important;
}

.swiper-lazy-preloader {
    display: none;
}


.gallery-main .swiper-button-prev:after,
.gallery-main .swiper-button-next:after {
    content: none;
}

.property-gallery .gallery-main img {
    width: 100%;
    height: 100%;
    object-fit: scale-down;
}

/* Columna de thumbs */
.property-gallery .gallery-thumbs {
    height: 404px;
    overflow: hidden;
    width: 100%;
}

.property-gallery .gallery-thumbs.swiper-vertical .swiper-slide {
    height: 31%;
    overflow: hidden;
    cursor: pointer;
    opacity: .7;
}

.property-gallery .gallery-thumbs.swiper-horizontal .swiper-slide {
    height: 100%;
    overflow: hidden;
    cursor: pointer;
    opacity: .7;
}

.property-gallery .gallery-thumbs .swiper-slide-thumb-active {
    opacity: 1;
}

.property-gallery .gallery-thumbs img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Overlay derecho dentro de la imagen grande */
.property-gallery .gallery-overlay {
    position: absolute;
    top: 0;
    right: 0;
    /* franja oscura derecha */
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: end;
    justify-content: space-between;
    padding: 24px;
    pointer-events: none;
    z-index: 2;
    /* deja pasar swipe; reactivamos en hijos */
}

.property-gallery .gallery-overlay-left {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: end;
    justify-content: center;
    padding: 24px;
    pointer-events: none;
    z-index: 2;
}

.property-gallery .gallery-overlay .gallery-counter {
    color: #FFF;
    font-family: "Host Grotesk";
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .036px;
    background: #0C142A;
    padding: 12px;
    user-select: none;
}

.page-cookies {
    padding: 0 40px;
    margin: 0 auto;
    gap: 80px;
    margin-bottom: 144px;

}

.page-cookies section {
    width: 672px;
    align-items: flex-start;
}

.pagination {
    margin-bottom: 144px;
}

.pagination .page-numbers {
    display: flex;
    list-style: none;
    gap: 8px;
}

.pagination .page-numbers li a,
.pagination .page-numbers li span {
    width: 40px;
    height: 28px;
    display: flex;
    justify-content: center;
    align-items: center;
    border: 1px solid #6F6456;
    color: #6F6456;
    text-decoration: none;
}

.pagination .page-numbers li .current {
    color: white;
    background-color: #6F6456;
}

/*
*404.php
*/
.error-404 {
    padding: 0 40px;
    margin: 120px auto 144px;
}

.message-404 {
    position: relative;
    margin-bottom: 32px;
}

.back-404 {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 557px;
    gap: 40px;
}

.big-404 {
    color: rgba(12, 20, 42, 0.10);
}

/*MODAL IMAGENES CSS*/
.gm-modal {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none
}

.gm-modal.open {
    display: block
}

.gm-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, .7)
}

.gm-shell {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    width: 100vw;
    height: 100vh;
    background: #fff;
    overflow: hidden
}

.gm-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-bottom: 1px solid #eee;
    height: 68px;
}

.gm-title {
    font-weight: 600
}

.gm-close {
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    color: #6F6456;
    border: 1px solid #6F6456;
    height: 40px;
    padding: 0 20px;
    width: 132px;
    background-color: transparent;
}

.gm-x {
    font-size: 20px;
    line-height: 1
}

.gm-body {
    position: relative;
    flex: 1;
    min-height: 0;
    padding: 24px 0 68px;
}

.modal-gallery-swiper {
    width: 100%;
    height: 100%
}

.modal-gallery-swiper .swiper-slide {
    display: flex;
    align-items: center;
    justify-content: center;
    user-select: none;
}

.modal-gallery-swiper img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain
}

.modal-gallery-swiper .swiper-button-prev,
.modal-gallery-swiper .swiper-button-next {
    display: flex;
    width: 44px;
    height: 44px;
    justify-content: center;
    align-items: center;
    background-color: #6F6456;
    padding: 12px;
}

.modal-gallery-swiper .swiper-button-next {
    right: 40px !important;
}

.modal-gallery-swiper .swiper-button-prev {
    left: 40px !important;
}

.modal-gallery-swiper .swiper-button-prev:after,
.modal-gallery-swiper .swiper-button-next:after {
    content: none;
}

.gallery-main .swiper-button-disabled,
.modal-gallery-swiper .swiper-button-disabled {
    opacity: 1;
    background-color: #F0EEEA;
}

.gallery-main .swiper-button-disabled svg,
.gallery-main .swiper-button-disabled svg path,
.modal-gallery-swiper .swiper-button-disabled svg,
.modal-gallery-swiper .swiper-button-disabled svg path {
    fill: #6F6456;
}

.gm-counter {
    position: absolute;
    right: 16px;
    bottom: 16px;
    background-color: #0C142A;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 32px;
    padding: 0 12px;
    user-select: none;
}

.page-politicas, .page-terminos {
    margin: 0 auto;
    padding: 68px 40px 144px;
}

.page-terminos li {
    margin-left: 32px;
}

.page-terminos p {
    text-align: justify;
}

/* VIDEO HOME DESKTOP*/
/* El módulo debe ocupar todo el viewport en flex */
.page-home>.portal {
    width: 100%;
    /* ¡clave! evita width:0 */
    align-self: stretch;
    /* opcional si quieres */
}

#zoom .pin {
    width: 100%;
}

#zoom .image-grid {
    width: 100%;
    max-width: 1440px;
    height: 100%;
    margin: 0 auto;
}

/* Sección telescope */
.portal {
    position: relative;
    height: 220vh;
    /* suficiente scroll para animar */
}

.pin {
    position: relative;
    /* <-- quitar sticky aquí */
    height: 100vh;
    overflow: hidden;
}

.image-grid {
    position: relative;
    width: 100%;
    height: 100%;
}

/* Vídeo centrado */
.center-img {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%) scale(1);
    transform-origin: center center;
    width: min(38vw, 520px);
    height: auto;
    aspect-ratio: 9/16;
    object-fit: cover;
    will-change: transform;
    z-index: 2;
}

/* Imágenes laterales */
.side-img {
    position: absolute;
    width: clamp(160px, 22vw, 320px);
    height: auto;
    object-fit: cover;
    will-change: transform, opacity;
    z-index: 1;
}

.tl {
    right: 66%;
    bottom: 51%;
    width: 443px;
    height: 224px;
}

.tr {
    left: 66%;
    bottom: 51%;
    width: 244px;
    height: 244px;
}

.bl {
    right: 66%;
    top: 50%;
    width: 244px;
    height: 244px;
}

.br {
    left: 66%;
    top: 50%;
    width: 443px;
    height: 224px;
}


/* Bread crumb */
.breadcrumbs {
    margin: 32px auto 0;
    padding: 0 40px;
}

.breadcrumbs ol {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0px;
}

.breadcrumbs .breadcrumb-item {
    color: #6F6456;
    font-size: 14px;
}



.breadcrumbs .breadcrumb-item a:hover {
    text-decoration: underline;
}

.breadcrumbs .breadcrumb-item::after {
    content: ">";
    margin: 0 0px;
    color: #6F6456;
}

.breadcrumbs .breadcrumb-item.current::after {
    content: "";
}

/*HEART*/
/* Ajusta si ya lo tienes posicionado */
.list-item-image {
    position: relative;
}

.list-item-heart {
    position: absolute;
    top: 12px;
    right: 12px;
    cursor: pointer;
}

/* Pinta rojo al marcar favorito */
.list-item-heart.is-fav svg path {
    fill: #D93B3B;
    stroke: #D93B3B;
}

.input-checkbox {
    height: 40px;
    width: 40px;
}

.gallery-overlay .list-item-heart {
    position: relative;
    top: 0;
    right: 0;
    pointer-events: auto;
}

.infinitum-container .properties-textseo {
    margin-bottom: 144px;
}

/* Cookies banner  */

.cky-consent-container, .cky-modal {
    font-family: "Host Grotesk";
    font-weight: 400;
}

.cky-button, .cky-btn-reject, .cky-btn-customize, .cky-btn-preferences {
    border: 1.5px solid #6F6456 !important;
    border-color: #6F6456 !important;
    color: #6F6456 !important;
    border-radius: 0 !important;
}

.cky-btn-accept {
    background-color: #6F6456 !important;
    border-color: #6F6456 !important;
    color: white !important;
    border-radius: 0 !important;
}

.cky-button:hover, .cky-btn-reject:hover, .cky-btn-customize:hover, .cky-btn-preferences:hover {
    border: 1.5px solid #5E5549 !important;
    border-color: #5E5549 !important;
    color: #5E5549 !important;
}

.cky-btn-accept:hover {
    background-color: #5E5549 !important;
    border-color: #5E5549 !important;
    color: white !important;
    opacity: 1 !important;
}

.cky-modal .cky-show-desc-btn {
    display: none !important;
}

.page-cookies {
    margin-top: 68px;
}

.properties-textseo-container-1 li {
    margin-left: 24px;
}