
/* Hide only native Tenant Directory controls that Agendaqui replaces visually.
   Nothing is removed from Booknetic and no native query logic is altered. */
.aqdf-native-hidden {
    display: none !important;
}

/* CSS fallback for browsers supporting :has(), before/without JS execution. */
.bkntc-filter-container .bkntc-form-control:has(#bkntc-search-service),
.bkntc-filter-container .bkntc-form-control:has(#bkntc-business-type),
.bkntc-filter-container .bkntc-form-control:has([name="td_price_min"]),
.bkntc-filter-container .bkntc-form-control:has([name="td_price_max"]),
.bkntc-filter-container .bkntc-form-control:has([name="td_price_level"]) {
    display: none !important;
}

/* Tenant Directory renders its own Apply/Reset controls as direct children of
   the native filter form. AQDF's Buscar/Limpiar live inside .aqdf-actions, so
   this selector hides only Booknetic's original controls. */
.bkntc-filter-container form > .bkntc-button {
    display: none !important;
}

/* Tenant Directory's filter lives in a ~278-400px sidebar. Keep AQDF controls
   in one full-width column even on wide desktop screens. */
.aqdf-fields,
.aqdf-form-control,
.aqdf-form-control > select,
.aqdf-form-control .select2-container,
.aqdf-form-control .select2-container--bootstrap,
.aqdf-form-control .select2-selection,
.aqdf-form-control .select2-selection--single {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box;
}

.aqdf-form-control {
    display: block;
    overflow: visible;
}

.aqdf-form-control .select2-selection__rendered {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.aqdf-fields {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 14px;
    margin-bottom: 16px;
}

.aqdf-form-control label {
    font-weight: 600;
}

.aqdf-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.aqdf-actions .bkntc-button {
    flex: 1 1 120px;
    min-height: 44px;
}

.aqdf-clear-button {
    background: transparent !important;
    color: inherit !important;
    border: 1px solid rgba(0,0,0,.15) !important;
}

.aqdf-result-count {
    margin: 0 0 16px;
    padding: 10px 14px;
    border-radius: 10px;
    background: rgba(0,0,0,.035);
    font-weight: 600;
    font-size: 14px;
}

.bkntc-filter-container form.aqdf-loading {
    opacity: .65;
    pointer-events: none;
    position: relative;
}

.bkntc-filter-container form.aqdf-loading::after {
    content: '';
    width: 22px;
    height: 22px;
    border: 3px solid rgba(0,0,0,.15);
    border-top-color: currentColor;
    border-radius: 50%;
    animation: aqdf-spin .8s linear infinite;
    position: absolute;
    right: 12px;
    bottom: 12px;
}

@keyframes aqdf-spin { to { transform: rotate(360deg); } }


@media (max-width: 767px) {
    .aqdf-fields,
    .aqdf-actions {
        display: flex;
        flex-direction: column;
    }
    .aqdf-actions .bkntc-button {
        width: 100%;
        flex-basis: auto;
    }
}

/* ============================================================
   iOS / Safari compatibility for Booknetic Tenant Directory
   ------------------------------------------------------------
   Tenant Directory 1.7.0 uses Media Queries Level 4 range syntax
   such as @media (width <= 1200px). Older Safari versions used by
   devices such as iPhone 7 can ignore that syntax completely and
   keep the desktop two-column layout, causing horizontal overflow.

   These are legacy max-width equivalents of Booknetic's responsive
   rules. They are scoped to Tenant Directory selectors, do not alter
   Booknetic files or query logic, and are harmless on modern browsers
   (where they simply duplicate the same responsive intent).
   ============================================================ */

@media screen and (max-width: 1200px) {
    .bkntc-tenant-search-shortcut-container {
        flex-direction: column !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box !important;
    }

    .bkntc-tenant-map-view-container {
        flex-direction: row;
    }

    .bkntc-tenant-search-shortcut-container .bkntc-filter-panel {
        flex: 1 1 auto !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box !important;
    }

    .bkntc-tenant-shortcut-container-from-directory .bkntc-filter-container {
        display: none;
    }

    .bkntc-see-on-map-container .mobile-filter-button {
        display: flex;
    }

    .bkntc-see-on-map-container {
        background: none;
        height: auto;
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 16px;
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }

    .bkntc-see-on-map-container button {
        width: auto;
    }

    .bkntc-tenant-search-shortcut-container .bkntc-view-panel {
        flex: 1 1 auto !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box !important;
        overflow: hidden;
    }

    .bkntc-tenant-list-view {
        overflow-x: auto;
        max-width: 100%;
        -webkit-overflow-scrolling: touch;
    }

    .bkntc-tenant-list-view table {
        min-width: 800px;
    }
}

@media screen and (max-width: 768px) {
    .bkntc-view-panel header {
        flex-direction: column;
        justify-content: initial;
        align-items: initial;
    }

    .bkntc-view-panel h1 {
        margin-bottom: 10px !important;
    }

    .bkntc-header-control {
        justify-content: space-between;
        width: 100%;
        max-width: 100%;
    }

    .bkntc-header-control button:nth-child(2) {
        margin-left: auto;
    }

    .bkntc-view-panel footer {
        flex-direction: column;
        gap: 25px;
    }

    .bkntc-page-of {
        align-self: flex-start;
    }

    .bkntc-see-on-map-container {
        flex-direction: column;
    }

    .bkntc-see-on-map-container .bkntc-button,
    .bkntc-see-on-map-container .mobile-filter-button {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }

    .bkntc-not-found-text {
        display: none;
    }

    .bkntc-not-found-view img {
        width: 100%;
        max-width: 100%;
        height: auto;
        margin-bottom: 20px;
    }

    .bkntc_not_found_view_map {
        width: 77px;
        height: 77px;
    }

    .bkntc_not_found_view_map p {
        display: none;
    }

    /* Extra protection against an oversized child forcing Safari's viewport
       wider than the device. */
    .bkntc-tenant-search-shortcut-container,
    .bkntc-tenant-search-shortcut-container .bkntc-filter-panel,
    .bkntc-tenant-search-shortcut-container .bkntc-view-panel,
    .bkntc-tenant-grid-view,
    .bkntc-tenant-service-card,
    .bkntc-service-card-content {
        min-width: 0 !important;
        max-width: 100% !important;
        box-sizing: border-box !important;
    }

    .bkntc-tenant-service-card img {
        max-width: 100%;
        height: auto;
    }
}

@media screen and (max-width: 450px) {
    .bkntc-tenant-grid-view {
        grid-template-columns: minmax(0, 1fr) !important;
        width: 100% !important;
        max-width: 100% !important;
    }
}

/* Map view fallbacks for the same older Safari engines. */
@media screen and (max-width: 1220px) {
    .bkntc-tenant-businnes-map-container {
        flex: 20 1 auto;
    }

    .bkntc-map-filter-container .bkntc-tenant-grid-view {
        flex: 1 0 250px;
    }

    .bkntc-view-panel {
        flex: 1;
    }
}

@media screen and (max-width: 930px) {
    .bkntc-view-container {
        display: none;
    }

    .bkntc-map-filter-container .bkntc-map-view-control .bkntc-button {
        width: 100%;
        display: flex;
    }
}

@media screen and (max-width: 700px) {
    .bkntc-map-filter-container > div {
        flex-direction: column-reverse;
    }

    .bkntc-map-view-control {
        max-height: initial !important;
        flex-direction: column !important;
    }

    .bkntc-tenant-businnes-map-container {
        height: 600px;
    }

    .bkntc-map-filter-container .bkntc-tenant-grid-view {
        display: flex;
        overflow-x: auto;
        flex: initial;
        width: 100%;
        max-width: 100%;
        max-height: initial;
        align-items: initial;
        scroll-snap-type: x mandatory;
        scroll-behavior: smooth;
        background: transparent !important;
        box-shadow: none !important;
        position: absolute;
        bottom: 0;
        left: 10px;
        padding-inline: 10px;
        z-index: 999999;
        border-radius: initial !important;
        -webkit-overflow-scrolling: touch;
        box-sizing: border-box;
    }

    .bkntc-wrapper-container {
        position: relative;
        overflow: hidden;
        max-width: 100%;
    }

    .bkntc-tenant-grid-view.bkntc-scroll-wrapper::-webkit-scrollbar {
        width: initial;
        height: initial;
    }

    .bkntc-tenant-grid-view .bkntc-scroll-wrapper::-webkit-scrollbar-track {
        background-color: initial;
    }

    .bkntc-tenant-grid-view.bkntc-scroll-wrapper::-webkit-scrollbar-thumb {
        background-color: initial;
        border-radius: initial;
    }

    .bkntc-map-filter-container .bkntc-tenant-service-card {
        display: flex;
        gap: 10px;
        flex: 0 0 330px;
        scroll-snap-align: start;
        position: relative;
    }

    .bkntc-map-filter-container .bkntc-tenant-service-card img {
        height: 77px;
        width: 77px;
    }

    .bkntc-map-filter-container .bkntc-service-card-content {
        gap: 4px;
        flex: 1;
    }

    .bkntc-map-filter-container .bkntc-service-card-content .bkntc-card-key,
    .bkntc-map-filter-container .bkntc-service-card-content .bkntc-card-value {
        font-size: 12px;
        font-weight: 400;
        line-height: 18px;
    }

    .bkntc-map-filter-container .bkntc-service-card-content .bkntc-card-value {
        font-weight: 700;
    }

    .bkntc-map-filter-container .bkntc-service-badge {
        font-size: 12px;
        font-weight: 500;
        line-height: 16px;
    }

    .bkntc-map-filter-container .bkntc-service-card-content button {
        position: absolute;
        left: 6px;
        top: 94px;
        font-size: 12px;
        line-height: 18px;
    }

    .bkntc-map-filter-container .bkntc-tenant-service-card h3 {
        font-size: 14px;
        line-height: 16px;
    }
}


/* ============================================================
   Agendaqui 1.7.1 — filtros siempre visibles en móvil + mapa iOS
   ------------------------------------------------------------
   Objetivos:
   1) En el listado, los filtros de Agendaqui no se colapsan nunca.
   2) Se elimina el botón móvil "Filtro" de Tenant Directory, porque
      ya no es necesario cuando el panel está siempre visible.
   3) En la vista de mapa de iOS/Safari, el panel de filtros se muestra
      de forma estática antes del mapa.
   4) El mapa y las tarjetas dejan de usar posicionamiento que pueda
      superponerse a botones/controles en Safari antiguo.
   ============================================================ */

/* LISTADO: mostrar siempre el panel de filtros, incluso cuando la regla
   responsive original de Tenant Directory intenta ocultarlo. */
.bkntc-tenant-shortcut-container-from-directory .bkntc-filter-container {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
}

/* Si los filtros siempre están visibles, no hace falta el botón que abre/cierra
   el panel en móvil. El botón "Ver en el mapa" se mantiene intacto. */
.bkntc-see-on-map-container .mobile-filter-button {
    display: none !important;
}

@media screen and (max-width: 1200px) {
    .bkntc-tenant-shortcut-container-from-directory .bkntc-filter-panel,
    .bkntc-tenant-shortcut-container-from-directory .bkntc-filter-wrapper,
    .bkntc-tenant-shortcut-container-from-directory .bkntc-filter-container {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box !important;
    }

    .bkntc-tenant-shortcut-container-from-directory .bkntc-filter-wrapper {
        display: block !important;
        overflow: visible !important;
    }

    /* Mantener la imagen/botón de mapa arriba y los filtros inmediatamente
       después, en lugar de transformarlos en un panel colapsable. */
    .bkntc-tenant-shortcut-container-from-directory .bkntc-see-on-map-container {
        margin-bottom: 10px !important;
    }
}

/* MAPA: en móvil usamos la copia de filtros que Tenant Directory reserva para
   el panel desplegable, pero la dejamos permanentemente abierta. */
@media screen and (max-width: 930px) {
    .bkntc-tenant-map-view-container .bkntc-map-filter-button,
    .bkntc-map-filter-container .mobile-filter-button {
        display: none !important;
    }

    .bkntc-tenant-map-view-container .bkntc-filter-wrapper-toggle {
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;
        margin: 10px 0 14px !important;
        position: relative !important;
        z-index: 2 !important;
    }

    .bkntc-tenant-map-view-container .bkntc-filter-wrapper-toggle .bkntc-filter-panel {
        display: block !important;
        visibility: visible !important;
        opacity: 1 !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        position: static !important;
        box-sizing: border-box !important;
    }

    .bkntc-tenant-map-view-container .bkntc-filter-wrapper-toggle .bkntc-filter-wrapper,
    .bkntc-tenant-map-view-container .bkntc-filter-wrapper-toggle .bkntc-filter-container {
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box !important;
    }

    /* Evitar dos copias del filtro en la vista de mapa. */
    .bkntc-tenant-map-view-container .bkntc-wrapper-container > .bkntc-view-container {
        display: none !important;
    }

    /* Sólo queda "Volver" en la barra superior. Safari antiguo heredaba
       posicionamiento del modal y podía dejar controles debajo del mapa. */
    .bkntc-tenant-map-view-container .bkntc-map-view-control {
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;
        max-height: none !important;
        margin: 0 0 10px !important;
        position: relative !important;
        z-index: 3 !important;
        box-sizing: border-box !important;
    }

    .bkntc-tenant-map-view-container #bkntc-close-map-modal {
        position: static !important;
        top: auto !important;
        left: auto !important;
        margin: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box !important;
    }
}

@media screen and (max-width: 700px) {
    /* En Safari/iPhone evitamos el layout absoluto de las tarjetas sobre el
       mapa. Todo queda en flujo normal: filtros -> mapa -> profesionales. */
    .bkntc-tenant-map-view-container,
    .bkntc-tenant-map-view-container .bkntc-map-filter-container,
    .bkntc-tenant-map-view-container .bkntc-wrapper-container {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box !important;
    }

    .bkntc-tenant-map-view-container {
        padding: 10px !important;
        min-height: 0 !important;
    }

    .bkntc-tenant-map-view-container .bkntc-wrapper-container {
        display: flex !important;
        flex-direction: column !important;
        overflow: visible !important;
        position: relative !important;
        gap: 12px !important;
    }

    .bkntc-tenant-map-view-container .bkntc-tenant-businnes-map-container {
        order: 1 !important;
        position: relative !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        height: 390px !important;
        min-height: 390px !important;
        flex: none !important;
        z-index: 1 !important;
        border-radius: 10px !important;
        overflow: hidden !important;
        box-sizing: border-box !important;
    }

    .bkntc-tenant-map-view-container .bkntc-map-filter-container .bkntc-tenant-grid-view {
        order: 2 !important;
        position: static !important;
        left: auto !important;
        right: auto !important;
        top: auto !important;
        bottom: auto !important;
        z-index: 1 !important;
        display: flex !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        flex: none !important;
        overflow-x: auto !important;
        overflow-y: hidden !important;
        padding: 6px 0 10px !important;
        margin: 0 !important;
        background: transparent !important;
        box-shadow: none !important;
        box-sizing: border-box !important;
        -webkit-overflow-scrolling: touch;
    }

    .bkntc-tenant-map-view-container .bkntc-map-filter-container .bkntc-tenant-service-card {
        flex: 0 0 min(82vw, 330px) !important;
        max-width: min(82vw, 330px) !important;
        box-sizing: border-box !important;
    }

    /* El panel de filtros permanece claramente separado del mapa. */
    .bkntc-tenant-map-view-container .bkntc-filter-wrapper-toggle .bkntc-filter-container {
        border-radius: 10px !important;
        padding: 14px 16px 18px !important;
        height: auto !important;
    }
}

/* Compatibilidad con Safari antiguo: no usar min() como única fuente de ancho. */
@media screen and (max-width: 450px) {
    .bkntc-tenant-map-view-container .bkntc-map-filter-container .bkntc-tenant-service-card {
        flex-basis: 300px !important;
        max-width: 300px !important;
    }

    .bkntc-tenant-map-view-container .bkntc-tenant-businnes-map-container {
        height: 340px !important;
        min-height: 340px !important;
    }
}


/* ============================================================
   Agendaqui 1.7.2 — ocultar Rubro también en vista de mapa
   ------------------------------------------------------------
   Fallback compatible con Safari antiguo. El JS 1.7.2 además
   oculta el contenedor completo, incluso si Booknetic clona el
   formulario y repite IDs en la vista de mapa.
   ============================================================ */
.bkntc-tenant-map-view-container .bkntc-business-type,
.bkntc-tenant-map-view-container [name="td_business_type_id"],
.bkntc-tenant-map-view-container label[for="bkntc-business-type"] {
    display: none !important;
}
