/**
 * Finder - Custom Styles
 */

/* Smooth scroll */
html {
    scroll-behavior: smooth;
}

/* Better focus styles for accessibility */
:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: 2px;
}

/* Card hover effect */
.card-hover {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.card-hover:hover {
    transform: translateY(-4px);
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.1) !important;
}

/* Object fit cover for images */
.object-fit-cover {
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.object-fit-contain {
    object-fit: contain;
    width: 100%;
    height: 100%;
}

/* Placeholder image styles */
.placeholder-img {
    background: linear-gradient(135deg, #e2e8f0 0%, #cbd5e1 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #94a3b8;
}

/* Dashboard stats card */
.stat-card {
    border-left: 4px solid;
}
.stat-card.stat-primary { border-left-color: var(--bs-primary); }
.stat-card.stat-success { border-left-color: var(--bs-success); }
.stat-card.stat-warning { border-left-color: var(--bs-warning); }
.stat-card.stat-info { border-left-color: var(--bs-info); }

/* Image upload preview */
.img-upload-preview {
    position: relative;
    display: inline-block;
    border-radius: 0.5rem;
    overflow: hidden;
}
.img-upload-preview .btn-remove {
    position: absolute;
    top: 4px;
    right: 4px;
    z-index: 2;
}

/* WhatsApp button */
.btn-whatsapp {
    background-color: #25D366;
    border-color: #25D366;
    color: #fff;
}
.btn-whatsapp:hover {
    background-color: #1ebe57;
    border-color: #1ebe57;
    color: #fff;
}

/* Gallery Swiper styles */
#galeriaMain .swiper-button-prev,
#galeriaMain .swiper-button-next {
    width: 40px;
    height: 40px;
    background: rgba(255, 255, 255, 0.9);
    border-radius: 50%;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    transition: opacity 0.2s, transform 0.2s;
    opacity: 0;
}
#galeriaMain .swiper-button-prev::after,
#galeriaMain .swiper-button-next::after {
    font-size: 16px;
    color: #333;
    font-weight: bold;
}
#galeriaMain:hover .swiper-button-prev,
#galeriaMain:hover .swiper-button-next {
    opacity: 1;
}
#galeriaMain .swiper-button-prev:hover,
#galeriaMain .swiper-button-next:hover {
    transform: scale(1.1);
}
#galeriaThumbs .swiper-slide {
    opacity: 0.6;
    transition: opacity 0.2s;
}
#galeriaThumbs .swiper-slide-thumb-active,
#galeriaThumbs .swiper-slide:hover {
    opacity: 1;
}

/* Wishlist heart button */
.btn-wishlist {
    width: 2rem;
    height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    cursor: pointer;
    z-index: 5;
    transition: transform 0.15s ease, background-color 0.15s ease;
}
.btn-wishlist:hover {
    transform: scale(1.15);
}
.btn-wishlist:active {
    transform: scale(0.95);
}
.btn-wishlist i {
    pointer-events: none;
}

/* Fix for long text overflow */
.text-truncate-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.text-truncate-3 {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* =============================================
   Phase 17: Category profile styles
   ============================================= */

/* Category accent color (set via --cat-color CSS variable) */
.cat-accent {
    color: var(--cat-color, var(--bs-primary));
}
.cat-accent-bg {
    background-color: var(--cat-color, var(--bs-primary));
}
.cat-accent-border {
    border-color: var(--cat-color, var(--bs-primary));
}

/* Quick filter bar */
#perfilFilters {
    position: sticky;
    top: 4rem;
    z-index: 10;
}
#perfilFilters .form-label {
    white-space: nowrap;
}
#perfilFilters .form-control-sm,
#perfilFilters .form-select-sm {
    font-size: 0.8125rem;
}

/* EAV attribute badges on cards */
.card .badge.fs-xs {
    font-weight: 500;
    letter-spacing: 0.01em;
}

/* Category extra partial cards */
.perfil-amenidades .badge {
    font-size: 0.8125rem;
}

/* Responsive filter bar — stack on small screens */
@media (max-width: 767.98px) {
    #perfilFilters .row {
        flex-wrap: wrap;
    }
    #perfilFilters .col-auto {
        flex: 1 1 calc(50% - 0.5rem);
        min-width: 0;
    }
    #perfilFilters .form-select-sm,
    #perfilFilters .form-control-sm {
        width: 100% !important;
        min-width: 0 !important;
    }
}

/* =============================================
   Frontend polish & corrections
   ============================================= */

/* Pagination spacing */
.pagination {
    gap: 0.25rem;
}
.pagination .page-link {
    border-radius: 0.375rem;
    min-width: 2.25rem;
    text-align: center;
}

/* Empty state consistency */
.empty-state {
    padding: 3rem 1rem;
    text-align: center;
}
.empty-state i {
    font-size: 3rem;
    color: var(--bs-secondary-color);
    opacity: 0.5;
    margin-bottom: 1rem;
    display: block;
}
.empty-state h4 {
    margin-bottom: 0.5rem;
}
.empty-state p {
    color: var(--bs-secondary-color);
    margin-bottom: 1.25rem;
}

/* Back to top button */
.btn-back-to-top {
    position: fixed;
    bottom: 1.5rem;
    right: 1.5rem;
    z-index: 999;
    width: 2.75rem;
    height: 2.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s, visibility 0.3s, transform 0.2s;
    box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.15);
}
.btn-back-to-top.show {
    opacity: 1;
    visibility: visible;
}
.btn-back-to-top:hover {
    transform: translateY(-2px);
}

/* Breadcrumb home icon alignment */
.breadcrumb-item a i {
    vertical-align: -1px;
}

/* Card image loading placeholder shimmer */
.card-img-top .ratio {
    background-color: var(--bs-tertiary-bg);
}

/* Navbar sticky shadow on scroll */
.navbar-sticky.navbar-stuck {
    box-shadow: 0 0.125rem 0.625rem rgba(0, 0, 0, 0.06);
}

/* Search form polish */
.search-form-hero .form-control:focus {
    box-shadow: none;
}

/* Stat counter cards on homepage */
.stat-counter {
    position: relative;
}
.stat-counter + .stat-counter::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 1px;
    height: 60%;
    background-color: var(--bs-border-color);
}

/* Category card color circle */
.cat-icon-circle {
    width: 72px;
    height: 72px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
}

/* Better spacing on mobile for search results */
@media (max-width: 575.98px) {
    .card-body .fs-xs {
        font-size: 0.75rem !important;
    }
    .badge.fs-sm {
        font-size: 0.75rem !important;
    }
}

/* Sidebar contact card links */
.card-body a[href^="tel:"],
.card-body a[href^="mailto:"] {
    word-break: break-all;
}

/* Alert icon vertical alignment */
.alert i[class^="fi-"] {
    vertical-align: -2px;
}

/* ============================================================
   Badges — contraste consistente nos temas claro e escuro
   Bootstrap 5.3 nao adapta bg-white/bg-warning/bg-info ao
   modo escuro, enquanto text-dark e text-body ficam claros.
   Isso causa badges com texto invisivel no tema escuro.
   ============================================================ */

/* Fundos claros/quentes sempre com texto escuro, independente do tema */
.badge.bg-white,
.badge.bg-warning,
.badge.bg-info,
.badge.bg-light {
    color: #1a1a1a !important;
}

/* Variante com opacidade sobre imagens (card-empresa) */
.badge.bg-white.bg-opacity-75,
.badge.bg-white.bg-opacity-50,
.badge.bg-white.bg-opacity-25 {
    color: #1a1a1a !important;
}

/* Fundos sólidos escuros sempre com texto branco */
.badge.bg-primary,
.badge.bg-secondary:not(.bg-opacity-10):not(.bg-opacity-25),
.badge.bg-success,
.badge.bg-danger,
.badge.bg-dark {
    color: #fff !important;
}

/* Variantes -subtle: usam as CSS vars do Bootstrap que ja adaptam,
   mas reforcamos o emphasis para evitar texto fraco no tema escuro */
.badge.bg-success-subtle.text-success {
    color: var(--bs-success-text-emphasis) !important;
}
.badge.bg-primary-subtle.text-primary {
    color: var(--bs-primary-text-emphasis) !important;
}
.badge.bg-danger-subtle.text-danger {
    color: var(--bs-danger-text-emphasis) !important;
}
.badge.bg-warning-subtle.text-warning {
    color: var(--bs-warning-text-emphasis) !important;
}
.badge.bg-info-subtle.text-info {
    color: var(--bs-info-text-emphasis) !important;
}

/* Chips translucidos bg-*/opacity-10 com text-primary/text-body:
   garantem legibilidade no tema escuro */
[data-bs-theme="dark"] .badge.bg-primary.bg-opacity-10.text-primary {
    color: var(--bs-primary-text-emphasis) !important;
    background-color: rgba(var(--bs-primary-rgb), 0.18) !important;
}
[data-bs-theme="dark"] .badge.bg-secondary.bg-opacity-10.text-body {
    background-color: rgba(var(--bs-secondary-rgb), 0.2) !important;
    color: var(--bs-body-color) !important;
}
[data-bs-theme="dark"] .badge.bg-body-secondary.text-body {
    color: var(--bs-body-color) !important;
}
