:root{--ubi:#0b5ed7;--ubi-dark:#062a63;--ubi-deep:#041d45;--ubi-soft:#eef5ff;--orange:#ff6b00;--orange-dark:#e85c00;--orange-soft:#fff3e8;--ink:#10213b;--muted:#687386;--line:#e5eaf1;--gold:#ffb000}
*{box-sizing:border-box}body{margin:0;background:#f7f9fc;color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}.brand{font-weight:900;letter-spacing:.8px}
.ubi-topbar{background:linear-gradient(90deg,var(--ubi-deep),#073b83);color:#fff;font-size:.78rem;padding:6px 0}
.navbar-ubi-light{background:#fff!important;border-bottom:1px solid var(--line);box-shadow:0 4px 18px rgba(10,43,91,.06)}
.ubi-logo-wrap{padding:0;margin:0}.ubi-logo{width:205px;height:78px;object-fit:contain;object-position:left center;display:block}
.btn-ubi{background:linear-gradient(135deg,var(--orange),#ff8a00);border-color:var(--orange);color:#fff;box-shadow:0 6px 14px rgba(255,107,0,.18)}.btn-ubi:hover{background:var(--orange-dark);border-color:var(--orange-dark);color:#fff}
.btn-outline-ubi{color:var(--ubi);border:1px solid #8bb8f4;background:#fff}.btn-outline-ubi:hover{background:var(--ubi);border-color:var(--ubi);color:#fff}
.hero{position:relative;overflow:hidden;color:#fff;padding:76px 0 72px;background:radial-gradient(circle at 82% 22%,rgba(255,150,35,.34),transparent 25%),radial-gradient(circle at 15% 90%,rgba(39,151,255,.25),transparent 30%),linear-gradient(120deg,var(--ubi-deep),#0756b7 62%,#087bd4)}
.hero:after{content:"";position:absolute;width:360px;height:360px;border:55px solid rgba(255,255,255,.045);border-radius:50%;right:-80px;top:-155px}.hero .container{position:relative;z-index:1}
.hero h1{font-weight:900;letter-spacing:-1.4px;text-shadow:0 3px 18px rgba(0,0,0,.16)}.hero .lead{max-width:760px;margin-left:auto;margin-right:auto;color:#eaf3ff}
.hero-search{background:#fff;border-radius:18px;padding:12px;box-shadow:0 18px 48px rgba(0,21,55,.28)}.hero-search .form-control,.hero-search .form-select{border:1px solid #edf0f4;background:#f7f9fc;min-height:50px;color:var(--ink)}
.hero-search .form-control:focus,.hero-search .form-select:focus{border-color:#91bdf4;box-shadow:0 0 0 .2rem rgba(11,94,215,.10)}
.section-title{font-weight:850;color:var(--ubi-dark);letter-spacing:-.3px}
.rubro-card{border:1px solid #e7edf6;border-radius:18px;background:#fff;padding:24px 14px;text-align:center;box-shadow:0 8px 26px rgba(10,43,91,.055);transition:.2s}.rubro-card:hover{transform:translateY(-5px);border-color:#c9daf2;box-shadow:0 15px 36px rgba(10,43,91,.11)}
.rubro-icon{width:60px;height:60px;margin:0 auto 13px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:29px;background:#edf5ff}
.row .col-6:nth-child(1) .rubro-icon{background:#e9f7ef}.row .col-6:nth-child(2) .rubro-icon{background:#fff0e6}.row .col-6:nth-child(3) .rubro-icon{background:#eaf7ff}.row .col-6:nth-child(4) .rubro-icon{background:#fff3e5}.row .col-6:nth-child(5) .rubro-icon{background:#f2ebff}
.business-card{border:1px solid #e7edf6;border-radius:18px;overflow:hidden;background:#fff;box-shadow:0 8px 28px rgba(10,43,91,.065);transition:.2s}.business-card:hover{transform:translateY(-4px);box-shadow:0 16px 38px rgba(10,43,91,.12)}
.card-img-top{height:210px;object-fit:cover}.business-placeholder{height:210px;background:linear-gradient(135deg,#e9f3ff,#fff4e9);display:flex;align-items:center;justify-content:center;font-size:54px}
.badge-rubro{font-size:.78rem;color:var(--ubi-dark)!important;background:var(--ubi-soft)!important;border-color:#cfe0f7!important}.business-card .btn-outline-success{color:var(--ubi);border-color:#8db9ef}.business-card .btn-outline-success:hover{color:#fff;background:var(--ubi);border-color:var(--ubi)}
.cover{height:330px;object-fit:cover;width:100%}.cover-placeholder{height:250px;background:linear-gradient(135deg,#eaf3ff,#fff4e9)}.map-frame{width:100%;height:340px;border:0;border-radius:14px}.qrbox canvas,.qrbox img{max-width:180px!important;height:auto!important}
.info-card,.panel-card{border:0;border-radius:18px;box-shadow:0 8px 28px rgba(10,43,91,.07)}
.panel-hero{background:linear-gradient(125deg,var(--ubi-dark),var(--ubi));color:#fff;border-radius:22px;padding:32px;box-shadow:0 14px 35px rgba(6,42,99,.16)}.panel-hero .btn-light{color:var(--orange-dark)}
.panel-action{border:0;border-radius:18px;box-shadow:0 8px 25px rgba(10,43,91,.07);transition:.2s}.panel-action:hover{transform:translateY(-3px)}
.ad-zone{position:relative;background:#fff;border:1px solid #ffd3a8;border-radius:18px;padding:15px;box-shadow:0 7px 22px rgba(10,43,91,.05);overflow:hidden}.ad-zone:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:linear-gradient(var(--orange),#ffb000)}
.ad-zone-mid{border-color:#bcd4f5}.ad-zone-mid:before{background:linear-gradient(var(--ubi),#32a8ff)}.ad-zone-side{top:18px}
.ad-zone-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px;padding-left:5px;font-size:.76rem;font-weight:850;color:var(--orange-dark);letter-spacing:.35px}.ad-zone-mid .ad-zone-head{color:var(--ubi)}.ad-zone-head small{font-weight:600;color:#929aa7}
.ad-empty{min-height:88px;border-radius:13px;background:linear-gradient(120deg,#fff8f1,#fff);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:18px;color:var(--orange-dark)}.ad-zone-mid .ad-empty{background:linear-gradient(120deg,#eff6ff,#fff);color:var(--ubi)}
.ad-empty strong{font-size:1rem}.ad-empty span{font-size:.82rem;color:#7b8492;margin-top:5px}.ad-empty-tall{min-height:315px}.ad-zone-side .row>[class*=col-]{width:100%}.ad-zone-side .ad-card{margin-bottom:10px}.ad-zone-side .ad-card img{width:100%;height:auto;aspect-ratio:1/2;object-fit:fill;object-position:center;background:#fff}
.ad-card{display:block;text-decoration:none;color:inherit;border-radius:14px;overflow:hidden;background:#fff;border:1px solid var(--line);height:100%;transition:.2s}.ad-card:hover{color:inherit;transform:translateY(-2px);box-shadow:0 10px 25px rgba(10,43,91,.10)}.ad-card img{width:100%;height:auto;object-fit:fill;object-position:center;background:#fff}.ad-zone-mid .ad-card img{aspect-ratio:20/3}.ad-body{padding:12px}.ad-label{font-size:.67rem;text-transform:uppercase;letter-spacing:.8px;color:var(--orange-dark);font-weight:800}
.footer-ubi{background:linear-gradient(90deg,var(--ubi-deep),#062e68);color:#dce9fb}.footer-ubi a{color:#fff}.login-shell{min-height:100vh;background:linear-gradient(135deg,#eef5ff,#fff7ef);display:flex;align-items:center}.auth-card{border:0;border-radius:22px;box-shadow:0 18px 55px rgba(10,43,91,.12)}
@media(max-width:768px){.hero{padding:50px 0}.cover{height:230px}.hero-search{padding:10px}.card-img-top{height:190px}.ubi-logo{width:155px;height:62px}.ad-zone-head{align-items:flex-start;flex-direction:column}.ad-empty-tall{min-height:125px}}


/* Carrusel publicitario superior UBIKAYA.COM */
.ad-zone-top{padding:12px 14px 14px}
.ubi-ad-carousel{position:relative;width:100%;height:auto;aspect-ratio:6/1;border-radius:14px;overflow:hidden;background:#eef3f9}
.ubi-ad-slides,.ubi-ad-slide,.ubi-ad-link{width:100%;height:100%}
.ubi-ad-slide{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .55s ease}
.ubi-ad-slide.active{opacity:1;visibility:visible;z-index:1}
.ubi-ad-link{display:block;text-decoration:none;color:inherit}
.ubi-ad-slide img{display:block;width:100%;height:100%;object-fit:fill;object-position:center;background:#fff}
.ubi-ad-noimage{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:22px;background:linear-gradient(120deg,#fff7ef,#eef5ff);color:var(--ubi-dark)}
.ubi-ad-noimage strong{font-size:1.18rem}.ubi-ad-noimage span{margin-top:6px;font-size:.88rem;color:#6f7b8d}
.ubi-ad-arrow{position:absolute;z-index:4;top:50%;transform:translateY(-50%);width:38px;height:38px;border:0;border-radius:50%;background:rgba(4,29,69,.72);color:#fff;font-size:20px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.2s}
.ubi-ad-arrow:hover{background:var(--orange)}.ubi-ad-prev{left:14px}.ubi-ad-next{right:14px}
.ubi-ad-dots{position:absolute;z-index:4;left:50%;bottom:12px;transform:translateX(-50%);display:flex;gap:7px}
.ubi-ad-dot{width:9px;height:9px;border:0;border-radius:50%;padding:0;background:rgba(255,255,255,.68);box-shadow:0 0 0 1px rgba(0,0,0,.12);cursor:pointer}
.ubi-ad-dot.active{width:24px;border-radius:8px;background:var(--orange)}
.ubi-ad-sponsored{position:absolute;z-index:5;right:10px;top:9px;background:rgba(4,29,69,.74);color:#fff;border-radius:999px;padding:4px 9px;font-size:.66rem;letter-spacing:.3px}
.ubi-ad-carousel-empty{border:1px dashed #ffc180}
@media(max-width:768px){.ubi-ad-carousel{height:auto;aspect-ratio:6/1}.ubi-ad-arrow{width:32px;height:32px;font-size:17px}}


/* Banner propio UBIKAYA.COM dentro del buscador/hero */
.hero-ubikaya{padding:28px 0 34px}
.ubi-own-banner{border-radius:18px;overflow:hidden;box-shadow:0 14px 36px rgba(0,21,55,.28);background:#fff}
.ubi-own-banner img{display:block;width:100%;height:auto;aspect-ratio:6/1;object-fit:cover}
.hero-ubikaya .hero-search{max-width:1200px;margin:0 auto}
@media(max-width:768px){
  .hero-ubikaya{padding:18px 0 24px}
  .ubi-own-banner{border-radius:12px}
  .ubi-own-banner img{aspect-ratio:auto;height:auto}
}

/* Fondo administrable del buscador / portada */
.hero-search-bg{position:relative;overflow:hidden;min-height:390px;padding:64px 0 56px;background:var(--ubi-dark)}
.hero-search-bg .container{position:relative;z-index:2}.hero-search-copy{max-width:920px;margin:0 auto 24px}.hero-search-copy h1{font-weight:900}.hero-search-copy .lead{color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.3)}
.hero-promo-link{display:inline-block;margin:-10px 0 18px;padding:7px 14px;border-radius:999px;background:rgba(255,107,0,.92);color:#fff;text-decoration:none;font-weight:700;font-size:.88rem}.hero-promo-link:hover{color:#fff;background:#ff7d19}
@media(max-width:768px){.hero-search-bg{min-height:320px;padding:42px 0 38px}.hero-search-copy h1{font-size:2.15rem}}


.hero-bg-image{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;object-position:center;background:var(--ubi-dark);z-index:0}
.hero-bg-overlay{position:absolute;inset:0;background:linear-gradient(rgba(4,29,69,.46),rgba(4,29,69,.42));z-index:1;pointer-events:none}
.hero-search-bg .container{position:relative;z-index:2}


/* UBIKAYA: las imágenes publicitarias llenan siempre el área asignada */
.ubi-ad-slide img,
.ad-card img,
.hero-bg-image{
  object-fit:fill!important;
  object-position:center!important;
}


/* UBIKAYA: ajuste exacto al área, sin conservar proporción */
.ubi-ad-slide img,
.ad-zone-mid .ad-card img,
.ad-zone-side .ad-card img,
.ad-card img,
.hero-bg-image{
    width:100%!important;
    height:100%!important;
    object-fit:fill!important;
    object-position:center!important;
}

/* Inicio búsqueda: ocupar exactamente todo el área, sin conservar proporción */
.hero-search-bg{position:relative;overflow:hidden;width:100%;height:450px;min-height:450px;padding:0!important;background:var(--ubi-dark)!important}
.hero-search-bg .hero-bg-image{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;object-fit:fill!important;object-position:center!important;z-index:0!important}
.hero-search-bg .hero-bg-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(rgba(4,29,69,.34),rgba(4,29,69,.34));pointer-events:none}
.hero-search-bg .container{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;justify-content:center}
@media(max-width:768px){.hero-search-bg{height:310px;min-height:310px}.hero-search-bg .container{justify-content:flex-end;padding-bottom:18px}}


/* UBIKAYA - imágenes optimizadas y ajuste exacto */
.card-img-top,
.cover,
.business-placeholder{
  aspect-ratio:2/1;
}
.card-img-top,
.cover{
  width:100%!important;
  height:auto!important;
  object-fit:fill!important;
}


/* =========================================================
   UBIKAYA - CORRECCION RESPONSIVE FINAL DE IMAGENES
   La pantalla manda: no se fuerza un alto fijo que deforme banners.
   ========================================================= */

/* Contenedor general de la publicidad superior */
.ad-zone-top{
    width:min(100% - 24px, 1400px);
    max-width:1400px;
    margin-left:auto;
    margin-right:auto;
    padding:12px 14px 14px;
}

/* El carrusel conserva la relación real 1200x200 = 6:1 */
.ubi-ad-carousel{
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    min-height:0!important;
    aspect-ratio:6 / 1!important;
    overflow:hidden!important;
}

/* Cada slide ocupa exactamente el carrusel */
.ubi-ad-slides,
.ubi-ad-slide,
.ubi-ad-link{
    width:100%!important;
    height:100%!important;
    max-width:100%!important;
    max-height:100%!important;
}

/* Banners 1200x200: llenar sin barras ni crecimiento vertical excesivo */
.ubi-ad-slide img{
    display:block!important;
    width:100%!important;
    height:100%!important;
    max-width:100%!important;
    max-height:100%!important;
    object-fit:fill!important;
    object-position:center!important;
}

/* El hero se adapta al ancho visible; 1600x450 = 3.555:1 */
.hero-search-bg{
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    min-height:clamp(300px,28.125vw,450px)!important;
    aspect-ratio:1600 / 450!important;
    padding:0!important;
    overflow:hidden!important;
}

/* Fondo del hero ocupa el área calculada, no un alto arbitrario */
.hero-search-bg .hero-bg-image{
    position:absolute!important;
    inset:0!important;
    display:block!important;
    width:100%!important;
    height:100%!important;
    max-width:100%!important;
    max-height:100%!important;
    object-fit:fill!important;
    object-position:center!important;
}

/* El contenido no puede empujar el hero por encima de su tamaño */
.hero-search-bg .container{
    width:min(100% - 32px,1200px)!important;
    max-width:1200px!important;
    height:100%!important;
    min-height:0!important;
    margin:0 auto!important;
    display:flex!important;
    flex-direction:column!important;
    justify-content:center!important;
    padding-top:18px!important;
    padding-bottom:18px!important;
}
.hero-search-copy{
    margin-bottom:18px!important;
}
.hero-search{
    width:100%!important;
    max-width:1200px!important;
    margin-left:auto!important;
    margin-right:auto!important;
}

/* Publicidad central y lateral: respetan su caja visible */
.ad-zone-mid .ad-card img{
    width:100%!important;
    height:auto!important;
    aspect-ratio:1200 / 180!important;
    object-fit:fill!important;
}
.ad-zone-side .ad-card img{
    width:100%!important;
    height:auto!important;
    aspect-ratio:300 / 600!important;
    object-fit:fill!important;
}

/* Fichas y portadas */
.card-img-top{
    width:100%!important;
    height:auto!important;
    aspect-ratio:2 / 1!important;
    object-fit:fill!important;
}
.cover{
    width:100%!important;
    height:auto!important;
    max-height:600px!important;
    aspect-ratio:2 / 1!important;
    object-fit:fill!important;
}

/* Pantallas medianas */
@media (max-width:1200px){
    .ad-zone-top{
        width:calc(100% - 24px);
    }
    .hero-search-bg{
        min-height:360px!important;
        aspect-ratio:auto!important;
    }
}

/* Celulares/tablets: el banner sigue siendo 6:1 y el hero gana alto para el formulario */
@media (max-width:768px){
    .ad-zone-top{
        width:calc(100% - 16px);
        padding:9px 10px 11px;
    }
    .ubi-ad-carousel{
        aspect-ratio:6 / 1!important;
    }
    .ubi-ad-arrow{
        width:30px!important;
        height:30px!important;
    }
    .hero-search-bg{
        height:auto!important;
        min-height:430px!important;
        aspect-ratio:auto!important;
    }
    .hero-search-bg .container{
        width:calc(100% - 24px)!important;
        justify-content:center!important;
        padding-top:28px!important;
        padding-bottom:24px!important;
    }
    .hero-search-copy h1{
        font-size:clamp(1.8rem,8vw,2.35rem)!important;
    }
}


/* =========================================================
   UBIKAYA - PUBLICIDAD CENTRAL
   El banner central NO usa la tarjeta genérica de publicidad.
   Ocupa todo el ancho útil del espacio y respeta 1200x180 (20:3).
   ========================================================= */
.ad-zone-mid{
    width:100%;
    max-width:100%;
}
.central-ad-list{
    display:flex;
    flex-direction:column;
    gap:14px;
    width:100%;
}
.central-ad-banner{
    display:block;
    width:100%;
    max-width:100%;
    height:auto;
    aspect-ratio:20 / 3;
    overflow:hidden;
    border-radius:12px;
    background:#fff;
    text-decoration:none;
    border:1px solid #e5eaf1;
}
.central-ad-banner img{
    display:block;
    width:100%!important;
    height:100%!important;
    max-width:100%!important;
    max-height:100%!important;
    object-fit:fill!important;
    object-position:center!important;
}
.central-ad-placeholder{
    width:100%;
    height:100%;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:18px;
    background:linear-gradient(120deg,#eff6ff,#fff);
    color:var(--ubi);
}
.central-ad-placeholder span{
    color:#687386;
    font-size:.85rem;
    margin-top:4px;
}

/* Evita que reglas antiguas de .ad-card afecten al banner central */
.ad-zone-mid .central-ad-banner .ad-body{
    display:none!important;
}

@media(max-width:768px){
    .central-ad-banner{
        width:100%;
        aspect-ratio:20 / 3;
        border-radius:9px;
    }
}

/* =========================================================
   UBIKAYA - CARRUSEL LATERAL 300x600
   Una sola publicidad visible; hasta 10 activas en administración.
   ========================================================= */
.ubi-side-carousel{position:relative;width:100%;max-width:300px;margin:0 auto;aspect-ratio:1/2;overflow:hidden;border-radius:14px;background:#fff;border:1px solid #e6ebf2;box-shadow:0 8px 24px rgba(10,43,91,.07)}
.ubi-side-slides,.ubi-side-slide,.ubi-side-slide>a{position:absolute;inset:0;width:100%;height:100%}
.ubi-side-slide{opacity:0;visibility:hidden;transition:opacity .45s ease}
.ubi-side-slide.active{opacity:1;visibility:visible;z-index:1}
.ubi-side-slide>a{display:block;text-decoration:none;color:inherit}
.ubi-side-slide img{display:block;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;object-fit:fill!important;object-position:center!important}
.ubi-side-empty{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:22px;background:linear-gradient(160deg,#fff7ed,#eef5ff);color:var(--ubi-dark)}
.ubi-side-empty span{font-size:.85rem;color:#687386;margin-top:7px}
.ubi-side-arrow{position:absolute;z-index:4;top:50%;transform:translateY(-50%);width:34px;height:34px;border:0;border-radius:50%;background:rgba(4,29,69,.78);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}
.ubi-side-arrow:hover{background:var(--orange)}.ubi-side-prev{left:8px}.ubi-side-next{right:8px}
.ubi-side-dots{position:absolute;z-index:4;left:50%;bottom:12px;transform:translateX(-50%);display:flex;gap:5px;max-width:80%;flex-wrap:wrap;justify-content:center}
.ubi-side-dot{width:7px;height:7px;padding:0;border:0;border-radius:50%;background:rgba(255,255,255,.72);box-shadow:0 0 0 1px rgba(0,0,0,.14)}
.ubi-side-dot.active{background:var(--orange)}
.ubi-side-count{position:absolute;z-index:4;top:9px;right:9px;background:rgba(4,29,69,.78);color:#fff;font-size:.68rem;padding:4px 8px;border-radius:999px}
@media(max-width:991px){.ad-zone-side{position:static!important}.ubi-side-carousel{max-width:300px}}

/* Publicidad segmentada dentro de la ficha del establecimiento */
.ficha-ad-list{display:flex;flex-direction:column;gap:12px;width:100%}
.ficha-ad-banner{display:block;width:100%;aspect-ratio:24/5;overflow:hidden;border-radius:12px;border:1px solid #e5eaf1;background:#fff;text-decoration:none}
.ficha-ad-banner img{display:block;width:100%!important;height:100%!important;object-fit:fill!important;object-position:center!important}
@media(max-width:768px){.ficha-ad-banner{aspect-ratio:24/5;border-radius:9px}}


/* =========================================================
   UBIKAYA - TARJETAS COMPACTAS DE NEGOCIOS
   3 establecimientos por fila en el área de resultados.
   Imagen y nombre abren directamente la ficha.
   ========================================================= */
.business-results-grid{
    --bs-gutter-x:1rem;
    --bs-gutter-y:1rem;
}
.business-card-compact{
    border-radius:14px;
    overflow:hidden;
    transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.business-card-compact:hover{
    transform:translateY(-3px);
    box-shadow:0 12px 28px rgba(10,43,91,.12);
    border-color:#cddcf2;
}
.business-image-link{
    position:relative;
    display:block;
    width:100%;
    aspect-ratio:16/9;
    overflow:hidden;
    background:#eef3f8;
    text-decoration:none;
}
.business-card-image{
    display:flex!important;
    align-items:center;
    justify-content:center;
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    aspect-ratio:auto!important;
    object-fit:fill!important;
    transition:filter .2s ease,transform .2s ease;
}
.business-image-overlay{
    position:absolute;
    inset:0;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:12px;
    background:rgba(4,29,69,.66);
    color:#fff;
    font-weight:700;
    font-size:.92rem;
    letter-spacing:.01em;
    opacity:0;
    transition:opacity .2s ease;
    pointer-events:none;
}
.business-image-link:hover .business-image-overlay,
.business-image-link:focus-visible .business-image-overlay{
    opacity:1;
}
.business-image-link:hover .business-card-image,
.business-image-link:focus-visible .business-card-image{
    filter:brightness(.78);
}
.business-card-compact .card-body{
    font-size:.9rem;
}
.business-card-title{
    font-size:1.03rem;
    line-height:1.2;
}
.business-card-title a{
    color:var(--ubi-dark);
    text-decoration:none;
}
.business-card-title a:hover{
    color:var(--orange);
}
.business-card-description{
    font-size:.86rem;
    line-height:1.35;
}
.business-card-compact .badge-rubro{
    font-size:.68rem;
}
@media(max-width:767.98px){
    .business-image-link{aspect-ratio:16/10}
}
@media(max-width:575.98px){
    .business-results-grid>.col-sm-6{width:100%}
    .business-image-link{aspect-ratio:16/9}
}


/* =========================================================
   UBIKAYA - SOPORTE PUBLICO FLOTANTE
   WhatsApp activo. Estructura del chatbot preparada y apagada.
   ========================================================= */
.ubi-support{
    position:fixed;
    right:22px;
    bottom:22px;
    z-index:1080;
    font-family:inherit;
}
.ubi-support-trigger{
    border:0;
    padding:0;
    background:transparent;
    display:flex;
    align-items:center;
    gap:10px;
    cursor:pointer;
    filter:drop-shadow(0 8px 18px rgba(0,0,0,.18));
}
.ubi-support-text{
    background:#fff;
    color:#0b2c5f;
    border:1px solid #e3e9f2;
    border-radius:999px;
    padding:10px 15px;
    font-size:.87rem;
    font-weight:700;
    box-shadow:0 8px 24px rgba(10,43,91,.10);
}
.ubi-support-wa{
    width:58px;
    height:58px;
    border-radius:50%;
    display:flex;
    align-items:center;
    justify-content:center;
    background:#25D366;
    color:#fff;
    border:3px solid #fff;
    transition:transform .18s ease,box-shadow .18s ease;
}
.ubi-support-wa svg{width:34px;height:34px}
.ubi-support-trigger:hover .ubi-support-wa{
    transform:scale(1.06);
    box-shadow:0 8px 22px rgba(37,211,102,.36);
}
.ubi-support-panel{
    position:absolute;
    right:0;
    bottom:72px;
    width:min(340px,calc(100vw - 28px));
    background:#fff;
    border:1px solid #e5eaf1;
    border-radius:18px;
    overflow:hidden;
    box-shadow:0 20px 55px rgba(4,29,69,.20);
}
.ubi-support-panel[hidden]{display:none!important}
.ubi-support-panel-head{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:12px;
    padding:17px 18px;
    background:linear-gradient(135deg,#062a63,#0b5ed7);
    color:#fff;
}
.ubi-support-panel-head strong{display:block;font-size:1rem}
.ubi-support-panel-head small{display:block;opacity:.82;font-size:.76rem;margin-top:2px}
.ubi-support-close{
    border:0;
    background:rgba(255,255,255,.16);
    color:#fff;
    width:32px;
    height:32px;
    border-radius:50%;
    font-size:1.35rem;
    line-height:1;
}
.ubi-support-panel-body{padding:17px}
.ubi-support-panel-body p{
    margin:0 0 13px;
    color:#5e6979;
    font-size:.88rem;
    line-height:1.45;
}
.ubi-support-action{
    display:flex;
    align-items:center;
    gap:12px;
    width:100%;
    padding:12px;
    border:1px solid #dfe7ef;
    border-radius:12px;
    background:#f9fbfd;
    color:#10213b;
    text-decoration:none;
    text-align:left;
    transition:background .16s ease,border-color .16s ease,transform .16s ease;
}
.ubi-support-action:hover{
    background:#f0fff5;
    border-color:#a8e8be;
    color:#10213b;
    transform:translateY(-1px);
}
.ubi-support-action-icon{
    width:38px;
    height:38px;
    border-radius:50%;
    flex:0 0 38px;
    display:flex;
    align-items:center;
    justify-content:center;
    background:#25D366;
    color:#fff;
    font-weight:900;
}
.ubi-support-action strong{display:block;font-size:.9rem}
.ubi-support-action small{display:block;color:#718096;font-size:.72rem;margin-top:2px}
.ubi-chatbot-launcher{margin-top:9px;cursor:pointer}
.ubi-chatbot-launcher .ubi-support-action-icon{background:#0b5ed7}

@media(max-width:575.98px){
    .ubi-support{right:14px;bottom:14px}
    .ubi-support-text{display:none}
    .ubi-support-wa{width:56px;height:56px}
    .ubi-support-panel{right:0;bottom:68px}
}


/* =========================================================
   UBIKAYA - BUSQUEDA LOCAL, ESTADO, GALERIA Y METRICAS
   ========================================================= */
.result-tools{
    background:#fff;
    border:1px solid #e5eaf1;
    border-radius:12px;
    padding:10px 12px;
}
.near-active{
    display:inline-flex;
    align-items:center;
    padding:6px 10px;
    border-radius:999px;
    background:#eef8ff;
    color:#0b5ed7;
    font-size:.78rem;
    font-weight:700;
}
.distance-badge{
    font-size:.72rem;
    font-weight:700;
    color:#0b5ed7;
    background:#eef5ff;
    border-radius:999px;
    padding:4px 7px;
    white-space:nowrap;
}
.open-status-badge{
    position:absolute;
    top:8px;
    left:8px;
    z-index:3;
    border-radius:999px;
    padding:4px 8px;
    font-size:.68rem;
    font-weight:800;
    color:#fff;
    box-shadow:0 3px 10px rgba(0,0,0,.16);
}
.open-status-badge.is-open{background:#14804a}
.open-status-badge.is-closed{background:#687386}
.business-live-status{
    display:inline-flex;
    align-items:center;
    border-radius:999px;
    padding:6px 10px;
    font-size:.78rem;
    font-weight:800;
}
.business-live-status.is-open{background:#e7f8ee;color:#147a45}
.business-live-status.is-closed{background:#f0f2f5;color:#5e6979}
.business-live-status.is-unknown{background:#fff4df;color:#8a5d00}
.schedule-public>div{
    display:flex;
    justify-content:space-between;
    gap:12px;
    padding:7px 0;
    border-bottom:1px solid #eef1f5;
    font-size:.86rem;
}
.schedule-public>div:last-child{border-bottom:0}
.gallery-public-button{
    display:block;
    width:100%;
    border:0;
    padding:0;
    background:transparent;
    border-radius:12px;
    overflow:hidden;
}
.gallery-public-img{
    display:block;
    width:100%;
    aspect-ratio:4/3;
    object-fit:fill;
    transition:transform .18s ease,filter .18s ease;
}
.gallery-public-button:hover .gallery-public-img{
    transform:scale(1.025);
    filter:brightness(.9);
}
@media(max-width:575.98px){
    .result-tools{padding:8px}
}
/* UBIKAYA HOY */
.ubi-today-kicker{font-size:.72rem;font-weight:900;letter-spacing:.12em;color:#f47b20}.ubi-today-actions{display:flex;gap:8px;overflow-x:auto;padding:2px 0 10px}.ubi-today-chip{flex:0 0 auto;text-decoration:none;background:#fff;color:#17345f;border:1px solid #dfe7f1;border-radius:999px;padding:8px 13px;font-size:.82rem;font-weight:700;cursor:pointer}.promo-card{display:flex;justify-content:space-between;align-items:center;gap:10px;height:100%;padding:15px;border-radius:14px;background:#fff7ed;border:1px solid #ffe0bd;color:#172b4d;text-decoration:none}.promo-card h5{font-weight:800;margin:5px 0 2px}.promo-card strong{color:#e75b00;white-space:nowrap}.favorite-btn{position:absolute;right:8px;top:8px;z-index:8;width:35px;height:35px;border-radius:50%;border:1px solid #ddd;background:#fff;font-size:1.35rem;color:#667085}.favorite-btn.is-favorite{color:#e83e5b;background:#fff0f3}.new-business-card{display:block;text-decoration:none;color:#172b4d;background:#fff;border:1px solid #e7ebf1;border-radius:13px;overflow:hidden;padding-bottom:10px;height:100%}.new-business-card img,.new-business-placeholder{display:flex;width:100%;aspect-ratio:4/3;object-fit:fill;align-items:center;justify-content:center;background:#eef3f8}.new-business-card strong,.new-business-card small{display:block;padding:0 9px}.new-business-card strong{font-size:.84rem;margin-top:7px}.new-business-card small{font-size:.7rem;color:#777}.promo-business-box{padding:15px;border-radius:14px;border:1px solid #ffd9b0;background:#fff7ed}.promo-business-item{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid #f1dfcb}.promo-business-item strong,.promo-business-item small{display:block}.promo-business-item small{font-size:.78rem;color:#6c7480}.promo-business-item b{color:#e75b00;white-space:nowrap}
