/* Variables */
:root {
    --primary-color: #FF385C;
    --secondary-color: #00A699;
    --accent-color: #FF385C;
    --text-color: #2D3748;
    --text-light: #718096;
    --bg-light: #F7FAFC;
    --shadow-sm: 0 1px 3px rgba(0,0,0,0.12);
    --shadow-md: 0 4px 6px rgba(0,0,0,0.1);
    --shadow-lg: 0 10px 15px rgba(0,0,0,0.1);
    --radius-sm: 8px;
    --radius-md: 12px;
    --radius-lg: 16px;
    --transition-fast: 0.2s ease;
    --transition-base: 0.3s ease;
    --transition-slow: 0.5s ease;
    --error-color: #DC2626;
    --success-color: #2ecc71;
    --primary-dark: #e6324f;
    --secondary-dark: #008775;
    /* Admin utilitaires */
    --admin-offset: 70px; /* marge sous la navbar fixe admin */
}

/* Thèmes par mode */
.mode-host .navbar { background-color: rgba(34,34,34,0.9); }
.mode-host .navbar .nav-link { color: #f8f9fa; }
.mode-host .navbar .nav-link.active, .mode-host .navbar .nav-link:hover { color: var(--accent-color); }
.mode-traveler .navbar { background-color: rgba(255,255,255,0.95); }
.mode-traveler .navbar .nav-link.active { color: var(--accent-color); }
.badge-mode { font-weight: 600; color: var(--accent-color);} 

/* Base Styles */
body {
    font-family: 'Poppins', -apple-system, BlinkMacSystemFont, sans-serif;
    color: var(--text-color);
    line-height: 1.6;
    background-color: var(--bg-light);
    overflow-x: hidden;
    padding-top: var(--navbar-h, 76px);
}

/* Animations */
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes slideIn {
    from { transform: translateX(-20px); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
}

@keyframes scaleIn {
    from { transform: scale(0.95); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

@keyframes priceUpdate {
    0% { transform: scale(1); }
    50% { transform: scale(1.05); }
    100% { transform: scale(1); }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideUp {
    from {
        opacity: 0;
        transform: translateY(40px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Navbar */
.navbar {
    background-color: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(10px);
    box-shadow: var(--shadow-sm);
    padding: 1rem 0;
    transition: all var(--transition-base);
    z-index: 9999; /* garder le header au-dessus de tout */
    pointer-events: auto; /* s'assurer que le header capte les clics */
}

.navbar.scrolled {
    background-color: #fff;
    box-shadow: var(--shadow-md);
    padding: 0.55rem 0; /* header compact au scroll */
}

.brand-text {
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--text-color);
    transition: color var(--transition-fast);
}

.text-accent {
    color: var(--accent-color);
}

.nav-link {
    font-weight: 500;
    color: var(--text-color);
    padding: 0.5rem 1rem;
    margin: 0 0.2rem;
    border-radius: var(--radius-sm);
    transition: all var(--transition-fast);
}

.nav-link:hover, .nav-link.active {
    color: var(--primary-color);
    background-color: rgba(255, 56, 92, 0.1);
    box-shadow: var(--shadow-sm);
}

.signup-btn {
    background-color: var(--primary-color) !important;
    color: white !important;
    border-radius: var(--radius-sm);
    padding: 0.5rem 1.5rem !important;
    transition: all var(--transition-base);
}

.signup-btn:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}

.add-property-btn {
    color: var(--primary-color) !important;
    border: 2px solid var(--primary-color);
    border-radius: var(--radius-sm);
    padding: 0.5rem 1.5rem !important;
    transition: all var(--transition-base);
}

.add-property-btn:hover {
    background-color: var(--primary-color);
    color: white !important;
}

/* Navbar Collapse Animation */
.navbar-collapse {
    transition: transform var(--transition-base);
}

.navbar-collapse.collapsing-in {
    animation: slideIn var(--transition-base);
}

/* User Menu */
.user-menu {
    padding: 0.5rem 1rem;
    border-radius: var(--radius-sm);
    transition: all var(--transition-fast);
}

.dropdown-menu {
    border: none;
    box-shadow: var(--shadow-lg);
    border-radius: var(--radius-sm);
    padding: 0.5rem;
    animation: scaleIn var(--transition-base);
    transform-origin: top right;
    z-index: 2500; /* au-dessus de la navbar et des overlays de page */
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 12rem;
    display: none;
    visibility: hidden;
}

/* Afficher quand Bootstrap ajoute .show */
.dropdown-menu.show { display: block; visibility: visible; }

/* Afficher le menu quand la classe show est présente (fallback sans Bootstrap) */
.dropdown-menu.show {
    display: block;
}

/* S'assurer que le conteneur dropdown crée un contexte de positionnement */
.navbar .dropdown {
    position: relative;
}

.dropdown-item {
    padding: 0.7rem 1rem;
    border-radius: var(--radius-sm);
    transition: all var(--transition-fast);
}

.dropdown-item:hover, .dropdown-item.active {
    background-color: rgba(255, 56, 92, 0.1);
    color: var(--primary-color);
}

/* Alignements et espacements du header */
.navbar .navbar-nav.align-items-center { gap: 0.35rem; }
.navbar .navbar-nav.me-auto > .nav-item { margin-right: 2px; }
.navbar .nav-link .fas { font-size: 1rem; margin-right: 0.35rem; }

/* Accessibilité: focus visible */
.nav-link:focus-visible,
.dropdown-item:focus-visible,
.toggle-host:focus-visible,
.navbar-brand:focus-visible {
    outline: 2px solid var(--primary-color);
    outline-offset: 2px;
}

/* Toggle Mode Voyageur/Hôte */
.toggle-host {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--primary-color);
    font-weight: 600;
    padding: 0.35rem 0.6rem;
    border-radius: var(--radius-sm);
    transition: background-color var(--transition-fast), color var(--transition-fast);
    cursor: pointer;
}
.toggle-host:hover {
    background-color: rgba(255, 56, 92, 0.1);
}

/* Badge notifications sur l'icône messages */
.nav-link-with-badge { position: relative; }
.badge-notification {
    position: absolute;
    top: 0.05rem;
    right: 0.15rem;
    min-width: 18px;
    height: 18px;
    border-radius: 9px;
    font-size: 11px;
    line-height: 18px;
    padding: 0 5px;
    box-shadow: var(--shadow-sm);
}

.search-pill { position: relative; }
.search-pill .city-clear-btn { border: none; border-left: 1px solid #E2E8F0; background: #fff; color: var(--text-light); }
.search-pill .city-clear-btn:hover { color: var(--primary-color); }
.autocomplete-menu { position: absolute; top: calc(100% + 4px); left: 0; right: 0; background: #fff; border: 1px solid #E2E8F0; border-radius: var(--radius-sm); box-shadow: var(--shadow-lg); z-index: 2500; display: none; max-height: 280px; overflow-y: auto; }
.autocomplete-menu.show { display: block; }
.autocomplete-item { display: flex; align-items: center; justify-content: space-between; padding: 0.6rem 0.8rem; cursor: pointer; transition: background-color var(--transition-fast); }
.autocomplete-item:hover, .autocomplete-item.active { background-color: rgba(255,56,92,0.08); }
.autocomplete-name { font-weight: 600; color: var(--text-color); }
.autocomplete-count { color: var(--text-light); font-size: 0.85rem; }

/* Petit indicateur circulaire pour messages non lus */
.unread-dot {
    width: 10px;
    height: 10px;
    display: inline-block;
    border-radius: 50%;
    background-color: var(--error-color);
    box-shadow: var(--shadow-sm);
}

/* Fallback pour les menus alignés à droite sans Bootstrap */
.dropdown-menu-end { right: 0; left: auto; }

/* Utilitaire accessibilité (équivalent visually-hidden) */
.visually-hidden {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* Buttons */
.btn {
    padding: 0.75rem 1.5rem;
    border-radius: var(--radius-sm);
    font-weight: 500;
    transition: all var(--transition-base);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    border: none;
}

.btn-primary { background-color: var(--accent-color); color: #fff; box-shadow: var(--shadow-sm); }
.btn-primary:hover { background-color: var(--primary-dark); color: #fff; box-shadow: var(--shadow-md); }
.btn-outline-secondary { border: 1px solid #CBD5E0; color: var(--text-color); background: transparent; }
.btn-outline-secondary:hover { background: #EDF2F7; }

/* --- Map badges (price labels and clusters) --- */
.badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 4px 10px;
    border-radius: 20px;
    font-weight: 700;
    font-size: 12px;
    line-height: 1;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
    transition: transform var(--transition-fast), box-shadow var(--transition-fast);
    will-change: transform;
}

.badge-price {
    /* Contraste plus foncé pour le prix individuel */
    color: #C81E4A;
    border-color: #C81E4A;
}

.badge-cluster {
    /* Fond rose doux pour les clusters */
    background: rgba(255,56,92,0.08);
    color: #C81E4A;
    border-color: var(--primary-color);
}

.badge:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.18);
}

/* Améliorer la visibilité des clusters au survol */
.leaflet-marker-pane .custom-cluster .badge-cluster:hover {
    background-color: #fff;
}

.btn i {
    font-size: 1.1rem;
}

.btn-primary {
    background-color: var(--primary-color);
    color: white;
}

.btn-primary:hover {
    background-color: var(--primary-dark);
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}

/* --- Admin: utilitaires sticky pour tableaux --- */
/* Colonne sticky à gauche pour cases à cocher/sélection */
.admin-sticky-col-left {
    position: sticky;
    left: 0;
    background: var(--bs-body-bg);
    z-index: 2; /* au-dessus du corps du tableau */
}

/* En-tête sticky du tableau avec offset sous la navbar */
.admin-sticky-thead {
    position: sticky;
    top: 0; /* sera ajusté via conteneur sticky-top si nécessaire */
    z-index: 3;
}

/* Barre d’actions groupées sticky sous la navbar */
.admin-sticky-toolbar {
    position: sticky;
    top: var(--admin-offset);
    z-index: 1030;
    background: var(--bs-body-bg);
    border: 1px solid rgba(0,0,0,.06);
    border-radius: 8px;
    padding: 6px 8px;
    box-shadow: 0 6px 12px rgba(0,0,0,.04);
}

/* Corriger chevauchement visuel lorsque la première colonne est sticky */
.table .admin-sticky-col-left {
    box-shadow: 6px 0 8px -6px rgba(0,0,0,.08);
}

.btn-secondary {
    background-color: var(--secondary-color);
    color: white;
}

.btn-secondary:hover {
    background-color: var(--secondary-dark);
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}

.btn-outline {
    background-color: transparent;
    border: 2px solid var(--primary-color);
    color: var(--primary-color);
}

.btn-outline:hover {
    background-color: var(--primary-color);
    color: white;
    transform: translateY(-2px);
}

.btn-light {
    background-color: var(--bg-light);
    color: var(--text-color);
}

.btn-light:hover {
    background-color: #E2E8F0;
    transform: translateY(-2px);
}

.btn-lg {
    padding: 1rem 2rem;
    font-size: 1.1rem;
}

.btn-sm {
    padding: 0.5rem 1rem;
    font-size: 0.9rem;
}

.btn-icon {
    width: 40px;
    height: 40px;
    padding: 0;
    border-radius: 50%;
}

.btn-icon.btn-sm {
    width: 32px;
    height: 32px;
}

.btn-icon.btn-lg {
    width: 48px;
    height: 48px;
}

/* Forms */
.form-control {
    padding: 0.75rem 1rem;
    border: 1px solid #E2E8F0;
    border-radius: var(--radius-sm);
    transition: all var(--transition-fast);
    font-size: 1rem;
    width: 100%;
}

.form-control:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(255, 56, 92, 0.1);
}

.form-control::placeholder {
    color: #A0AEC0;
}

.form-label {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: 500;
    color: var(--text-color);
}

.form-group {
    margin-bottom: 1.5rem;
}

.form-text {
    font-size: 0.9rem;
    color: var(--text-light);
    margin-top: 0.5rem;
}
/* RTL Overrides */
html[dir="rtl"] body {
    direction: rtl;
}

/* Dropdown alignment and transform origin in RTL */
html[dir="rtl"] .dropdown-menu {
    text-align: right;
    transform-origin: top left;
}

/* Icons spacing near text in RTL */
html[dir="rtl"] .property-location i,
html[dir="rtl"] .property-amenity i {
    margin-left: 0.5rem;
    margin-right: 0;
}

/* Badges and favorite buttons position in cards */
html[dir="rtl"] .property-badge {
    right: 1rem;
    left: auto;
}
html[dir="rtl"] .property-favorite {
    left: 1rem;
    right: auto;
}

/* Alert close button position */
html[dir="rtl"] .alert-close {
    left: 1rem;
    right: auto;
}

/* Input group radii for RTL */
html[dir="rtl"] .input-group .form-control:first-child {
    border-top-right-radius: var(--radius-sm);
    border-bottom-right-radius: var(--radius-sm);
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}
html[dir="rtl"] .input-group .form-control:last-child {
    border-top-left-radius: var(--radius-sm);
    border-bottom-left-radius: var(--radius-sm);
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}
html[dir="rtl"] .input-group-text:first-child {
    border-top-right-radius: var(--radius-sm);
    border-bottom-right-radius: var(--radius-sm);
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}
html[dir="rtl"] .input-group-text:last-child {
    border-top-left-radius: var(--radius-sm);
    border-bottom-left-radius: var(--radius-sm);
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

/* Custom select caret position for RTL */
html[dir="rtl"] .custom-select::after {
    left: 1rem;
    right: auto;
}

.form-error {
    color: var(--error-color);
    font-size: 0.9rem;
    margin-top: 0.5rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.form-error i {
    font-size: 1rem;
}

.form-success {
    color: var(--success-color);
    font-size: 0.9rem;
    margin-top: 0.5rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.form-success i {
    font-size: 1rem;
}

/* Admin Sidebar (right menu) */
.admin-sidebar {
    position: sticky;
    top: 100px;
    z-index: 10;
}
.admin-sidebar-left {
    position: sticky;
    top: var(--admin-offset);
    max-width: 260px;
}
.admin-sidebar .card {
    border-radius: 8px;
}
.admin-sidebar .card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #fff;
    border-bottom: 1px solid #E2E8F0;
}
.admin-sidebar .compact-toggle {
    appearance: none;
    border: 1px solid #CBD5E0;
    background: #fff;
    color: var(--text-light);
    border-radius: var(--radius-sm);
    padding: .25rem .5rem;
    line-height: 1;
    cursor: pointer;
    transition: all var(--transition-fast);
}
.admin-sidebar .compact-toggle:hover {
    color: var(--text-color);
    border-color: #94A3B8;
}
.admin-sidebar .list-group {
    border-radius: var(--radius-sm);
}
.admin-sidebar .list-group-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: .65rem .85rem;
    border: none;
    border-left: 3px solid transparent;
    color: var(--text-color);
    transition: background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);
}
.admin-sidebar .list-group-item i {
    width: 18px;
    text-align: center;
}
.admin-sidebar .list-group-item:hover {
    background: rgba(255,56,92,0.06);
    color: var(--primary-color);
}
.admin-sidebar .list-group-item.active {
    background: rgba(255,56,92,0.12);
    color: var(--primary-color);
    border-left-color: var(--primary-color);
    font-weight: 600;
}
.admin-sidebar .list-group-item .badge {
    margin-left: auto;
    background-color: rgba(255,56,92,0.12);
    color: var(--primary-color);
    border-radius: 12px;
    font-weight: 600;
}
.admin-sidebar-compact .list-group-item {
    padding: .45rem .65rem;
    gap: 6px;
    font-size: .92rem;
}
.admin-sidebar-compact .card-header {
    padding: .5rem .75rem;
}
.admin-sidebar-compact .list-group-item i {
    width: 16px;
}

/* Admin layout harmonisation */
.admin-layout {
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: 24px;
}
@media (max-width: 992px) {
    .admin-layout { grid-template-columns: 1fr; }
}
/* Variante: sidebar à droite */
.admin-layout-right {
    display: grid;
    grid-template-columns: 1fr 260px;
    gap: 24px;
}
@media (max-width: 992px) {
    .admin-layout-right { grid-template-columns: 1fr; }
}
.admin-sidebar-right {
    position: sticky;
    top: var(--admin-offset);
    max-width: 260px;
}
.admin-page-title {
    display: flex; align-items: center; gap: 8px;
}
.admin-content-card .card-header {
    font-weight: 600;
}

.input-group {
    position: relative;
    display: flex;
    align-items: stretch;
    width: 100%;
}

.input-group .form-control {
    border-radius: 0;
}

.input-group .form-control:first-child {
    border-top-left-radius: var(--radius-sm);
    border-bottom-left-radius: var(--radius-sm);
}

.input-group .form-control:last-child {
    border-top-right-radius: var(--radius-sm);
    border-bottom-right-radius: var(--radius-sm);
}

.input-group-text {
    display: flex;
    align-items: center;
    padding: 0.75rem 1rem;
    background-color: var(--bg-light);
    border: 1px solid #E2E8F0;
    color: var(--text-light);
}

.input-group-text:first-child {
    border-top-left-radius: var(--radius-sm);
    border-bottom-left-radius: var(--radius-sm);
}

.input-group-text:last-child {
    border-top-right-radius: var(--radius-sm);
    border-bottom-right-radius: var(--radius-sm);
}

/* Custom Select */
.custom-select {
    position: relative;
    width: 100%;
}

.custom-select select {
    appearance: none;
    width: 100%;
    padding: 0.75rem 2.5rem 0.75rem 1rem;
    border: 1px solid #E2E8F0;
    border-radius: var(--radius-sm);
    background-color: white;
    cursor: pointer;
    transition: all var(--transition-fast);
}

.custom-select select:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(255, 56, 92, 0.1);
}

.custom-select::after {
    content: '\f107';
    font-family: 'Font Awesome 5 Free';
    font-weight: 900;
    position: absolute;
    right: 1rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--text-light);
    pointer-events: none;
    transition: transform var(--transition-fast);
}

.custom-select select:focus + .custom-select::after {
    transform: translateY(-50%) rotate(180deg);
}

/* Custom Checkbox */
.custom-checkbox {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    cursor: pointer;
    user-select: none;
}

.custom-checkbox input {
    display: none;
}

.custom-checkbox .checkbox-icon {
    width: 20px;
    height: 20px;
    border: 2px solid #E2E8F0;
    border-radius: var(--radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all var(--transition-fast);
    color: white;
}

.custom-checkbox input:checked + .checkbox-icon {
    background-color: var(--primary-color);
    border-color: var(--primary-color);
}

.custom-checkbox .checkbox-icon i {
    font-size: 0.8rem;
    opacity: 0;
    transform: scale(0.5);
    transition: all var(--transition-fast);
}

.custom-checkbox input:checked + .checkbox-icon i {
    opacity: 1;
    transform: scale(1);
}

/* Image Loading */
.lazy-image {
    opacity: 0;
    transition: opacity var(--transition-base);
}

.image-loaded {
    opacity: 1;
}

/* Image Preview */
.preview-container {
    position: relative;
    overflow: hidden;
    border-radius: var(--radius-md);
}

.preview-loading::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(255, 255, 255, 0.8);
    display: flex;
    align-items: center;
    justify-content: center;
    animation: fadeIn var(--transition-base);
}

.preview-loaded {
    animation: scaleIn var(--transition-base);
}

/* Alert Messages */
.alert {
    border: none;
    border-radius: var(--radius-sm);
    padding: 1rem;
    margin-bottom: 1rem;
    animation: slideIn var(--transition-base);
    transition: all var(--transition-base);
}

.alert-close {
    position: absolute;
    right: 1rem;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    font-size: 1.5rem;
    color: currentColor;
    opacity: 0.5;
    cursor: pointer;
    transition: opacity var(--transition-fast);
}

.alert-close:hover {
    opacity: 1;
}

/* Validation Errors */
.validation-errors {
    background-color: #FEE2E2;
    border-radius: var(--radius-sm);
    padding: 1rem;
    margin-bottom: 1rem;
    color: #DC2626;
    animation: fadeIn var(--transition-base);
}

.validation-errors p {
    margin: 0.5rem 0;
}

/* Rating System */
.rating {
    display: inline-flex;
    gap: 0.25rem;
}

.rating label {
    cursor: pointer;
    font-size: 1.5rem;
    color: #CBD5E0;
    transition: all var(--transition-fast);
}

.rating label.active {
    color: #FBBF24;
    transform: scale(1.1);
}

.rating-selected label {
    animation: scaleIn var(--transition-fast);
}

/* Property Cards */
.property-card {
    background: #fff;
    border: 1px solid #E2E8F0;
    border-radius: 12px;
    overflow: hidden;
    transition: box-shadow var(--transition-base), transform var(--transition-base);
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    position: relative;
    display: flex;
    flex-direction: column;
}

.property-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 20px rgba(0,0,0,0.12);
}

.property-image-wrapper {
    position: relative;
    padding-top: 66.67%; /* 3:2 aspect ratio */
    overflow: hidden;
}

.property-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--transition-base), filter var(--transition-base);
}

.carousel-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(255,255,255,0.85);
    border: none;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--shadow-sm);
    cursor: pointer;
    z-index: 3;
}
.carousel-nav i { color: #333; }
.carousel-nav.prev { left: 10px; }
.carousel-nav.next { right: 10px; }
.property-image-wrapper:hover .carousel-nav { opacity: 1; }

.property-card:hover .property-image {
    transform: scale(1.03);
}

.property-badge {
    position: absolute;
    top: 1rem;
    left: 1rem;
    background: rgba(255, 56, 92, 0.9);
    color: white;
    padding: 0.5rem 1rem;
    border-radius: var(--radius-sm);
    font-size: 0.9rem;
    font-weight: 500;
    z-index: 1;
}
.property-badge.badge-pro { background: var(--primary-color); }
.property-badge.badge-agency { background: #111827; }
.property-badge.badge-advanced { background: #06b6d4; }
.property-badge.badge-featured { background: linear-gradient(135deg, #FF385C, #C81E4A); box-shadow: 0 6px 18px rgba(200,30,74,0.35); }
.property-badge.badge-superhost { background: #f59e0b; }
.property-badge.badge-new { background: #10b981; }
.property-badge.badge-sea { background: #3b82f6; }
.property-badge.badge-verified { background: #22c55e; }

.badge-superhost,
.badge-verified {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0;
    border-radius: 0;
    font-weight: 500;
    font-size: 0.9rem;
    background: transparent;
    border: none;
    box-shadow: none;
}
.badge-superhost { color: #444; }
.badge-verified { color: #444; }
.badge-superhost i { color: #e7762b; font-size: 1em; }
.badge-verified i { color: #16a34a; font-size: 1em; }
.badge-superhost:focus-visible,
.badge-verified:focus-visible { outline: 2px solid rgba(0,0,0,0.25); outline-offset: 2px; }

.property-favorite {
    position: absolute;
    top: 1rem;
    right: 1rem;
    background: white;
    border-radius: 50%;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all var(--transition-fast);
    z-index: 1;
    box-shadow: var(--shadow-sm);
}

.property-favorite i {
    color: var(--text-light);
    transition: all var(--transition-fast);
}

.favorite-toggle .fa-heart { margin-right: 0; }
.favorite-toggle.btn { border: none; background: transparent; }
.favorite-toggle { width: 32px; height: 32px; border-radius: 16px; display: inline-flex; align-items: center; justify-content: center; }
.favorite-toggle:hover { background: rgba(255,56,92,0.06); }
.favorite-toggle:focus-visible { outline: 2px solid rgba(255,56,92,0.5); outline-offset: 2px; }
.favorite-toggle .fa-heart { color: #ff385c; transition: transform 0.15s ease, color 0.15s ease; }
.favorite-toggle.btn-danger .fa-heart { color: #ff385c; }
.favorite-toggle.btn-outline-danger .fa-heart { color: #ff385c; }
.favorite-toggle:hover .fa-heart { transform: scale(1.1); }

.favorite-toggle.is-busy { pointer-events: none; opacity: 0.7; }
.favorite-toggle .fa-heart.heart-pop { animation: heartPop 0.3s ease; }
@keyframes heartPop {
  0% { transform: scale(1); }
  40% { transform: scale(1.25); }
  100% { transform: scale(1); }
}

/* Snackbar (style façon Airbnb) */
.snackbar-container { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 1060; pointer-events: none; }
.snackbar { display: inline-flex; align-items: center; gap: 10px; background: rgba(0,0,0,0.85); color: #fff; padding: 10px 14px; border-radius: 9999px; box-shadow: 0 6px 16px rgba(0,0,0,0.2); pointer-events: auto; }
.snackbar a { color: #fff; text-decoration: underline; }
.snackbar-hide { opacity: 0; transition: opacity 0.3s ease; }

.property-favorite:hover {
    transform: scale(1.1);
}

.property-favorite:hover i {
    color: var(--primary-color);
}

.property-favorite.active i {
    color: var(--primary-color);
}

.property-card .card-body {
    padding: 1.5rem;
    flex: 1;
    display: flex;
    flex-direction: column;
}

.property-title {
    font-size: 1rem;
    font-weight: 600;
    color: #222;
    margin-bottom: 0.35rem;
    text-decoration: none;
    transition: color var(--transition-fast);
}

.property-title:hover {
    color: var(--primary-color);
}

.property-location {
    color: #717171;
    font-size: 0.9rem;
    margin-bottom: 0.75rem;
    display: flex;
    align-items: center;
}

.property-location i {
    margin-right: 0.5rem;
    color: var(--primary-color);
}

.property-amenities {
    display: flex;
    gap: 1.5rem;
    margin-bottom: 1rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid #E2E8F0;
}

.property-amenity {
    display: flex;
    align-items: center;
    color: var(--text-light);
    font-size: 0.9rem;
}

.property-amenity i {
    margin-right: 0.5rem;
    color: var(--primary-color);
}

.property-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: auto;
}

.property-price {
    font-size: 1rem;
    font-weight: 600;
    color: #222;
}

.property-price-unit {
    font-size: 0.9rem;
    color: #717171;
    font-weight: normal;
}

.property-rating {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.property-rating-stars {
    color: #FBBF24;
}

.property-rating-count {
    color: var(--text-light);
    font-size: 0.9rem;
}

.property-card.compact { border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.06); }
.property-card.compact .property-image-wrapper { padding-top: 58%; }
.property-card.compact .card-body { padding: 1rem; }
.property-card.compact .property-title { font-size: 0.95rem; margin-bottom: 0.25rem; }
.property-card.compact .property-location { font-size: 0.85rem; margin-bottom: 0.5rem; }
.property-card.compact .property-amenities { gap: 1rem; margin-bottom: 0.75rem; padding-bottom: 0.75rem; }
.property-card.compact .property-price { font-size: 0.95rem; }
.property-card.compact .property-price-unit { font-size: 0.85rem; }
.property-card.compact .property-rating { gap: 0.25rem; }
.property-card.compact .carousel-nav { width: 32px; height: 32px; }
.property-card.compact .property-favorite { width: 32px; height: 32px; }

/* Property Grid */
.property-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 24px;
    margin: 1.5rem 0 3rem;
}

@media (max-width: 768px) {
    .property-grid {
        grid-template-columns: 1fr;
        gap: 1.5rem;
    }
    
    .property-card {
        margin-bottom: 0;
    }
    
    .property-title {
        font-size: 1.1rem;
    }
    
.property-price {
    font-size: 1.3rem;
}

.carte-propriete.compact { border: 1px solid #E2E8F0; border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.06); }
.carte-propriete.compact .card-body { padding: 0.75rem; }
.carte-propriete.compact h5 { font-size: 0.95rem; margin-bottom: 0.25rem; }
.carte-propriete.compact .card-img-top { height: 160px; object-fit: cover; }
}

/* Filters bar (Airbnb-like) */
.filters-bar { position: sticky; top: 76px; z-index: 1000; background: #fff; border-top: 1px solid #E2E8F0; border-bottom: 1px solid #E2E8F0; }
.filters-pill { display: flex; align-items: center; gap: 12px; padding: 12px 8px; overflow-x: auto; }
.filters-item { display: grid; grid-template-columns: 1fr; gap: 6px; min-width: 180px; }
.filters-label { font-size: 12px; color: #717171; }
.filters-input { appearance: none; height: 40px; border: 1px solid #E2E8F0; border-radius: 20px; padding: 0 14px; font-size: 14px; outline: none; background: #fff; color: var(--text-color); }
.filters-input:focus { border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(255, 56, 92, 0.1); }
.filters-separator { width: 1px; height: 28px; background: #E2E8F0; }
.filters-price { min-width: 240px; }
.filters-price-inputs { display: flex; align-items: center; gap: 8px; }
.filters-dash { color: #717171; }
.filters-actions { margin-left: auto; display: flex; gap: 8px; }
.filters-submit { border-radius: 20px; }
.filters-reset { border-radius: 20px; }

/* Amenities */
.amenities-section {
    padding: 4rem 0;
    background-color: var(--bg-light);
}

.amenities-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: 2rem;
    margin-top: 2rem;
}

.amenity-card {
    background: white;
    border-radius: var(--radius-lg);
    padding: 2rem;
    text-align: center;
    transition: all var(--transition-base);
    box-shadow: var(--shadow-sm);
    cursor: pointer;
}

.amenity-card:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow-md);
}

.amenity-icon {
    width: 64px;
    height: 64px;
    background: var(--bg-light);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 1.5rem;
    transition: all var(--transition-base);
}

.amenity-card:hover .amenity-icon {
    background: var(--primary-color);
    transform: scale(1.1);
}

.amenity-icon i {
    font-size: 1.75rem;
    color: var(--primary-color);
    transition: all var(--transition-base);
}

.amenity-card:hover .amenity-icon i {
    color: white;
}

.amenity-title {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--text-color);
    margin-bottom: 1rem;
}

.amenity-description {
    color: var(--text-light);
    font-size: 0.95rem;
    line-height: 1.6;
}

.amenity-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin: 1rem 0;
}

.amenity-tag {
    background: var(--bg-light);
    color: var(--text-color);
    padding: 0.5rem 1rem;
    border-radius: var(--radius-full);
    font-size: 0.9rem;
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    transition: all var(--transition-fast);
}

.amenity-tag i {
    color: var(--primary-color);
    font-size: 1rem;
}

.amenity-tag:hover {
    background: var(--primary-color);
    color: white;
    transform: translateY(-2px);
}

.amenity-tag:hover i {
    color: white;
}

.amenity-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 1rem;
    margin: 1.5rem 0;
}

.amenity-list-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem;
    border-radius: var(--radius-sm);
    transition: all var(--transition-fast);
}

.amenity-list-item:hover {
    background: var(--bg-light);
}

.amenity-list-item i {
    color: var(--primary-color);
    font-size: 1.25rem;
}

.amenity-list-item span {
    color: var(--text-color);
    font-size: 0.95rem;
}

@media (max-width: 768px) {
    .amenities-section {
        padding: 3rem 0;
    }
    
    .amenities-grid {
        grid-template-columns: 1fr;
        gap: 1.5rem;
    }
    
    .amenity-card {
        padding: 1.5rem;
    }
    
    .amenity-icon {
        width: 56px;
        height: 56px;
        margin-bottom: 1.25rem;
    }
    
    .amenity-icon i {
        font-size: 1.5rem;
    }
    
    .amenity-title {
        font-size: 1.1rem;
    }
    
    .amenity-list {
        grid-template-columns: 1fr 1fr;
    }
}

/* Hero Section */
.hero-section {
    background: linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)),
                url('../images/morocco-bg.jpg') no-repeat center center;
    background-size: cover;
    min-height: 30vh;
    display: flex;
    align-items: center;
    position: relative;
    margin-top: -76px;
    padding-top: 76px;
}

.hero-content {
    color: white;
    text-shadow: 0 2px 4px rgba(0,0,0,0.2);
    animation: fadeInUp 0.8s ease;
    padding: 1rem 0;
}

.hero-title {
    font-size: 2.25rem;
    font-weight: 700;
    margin-bottom: 0.75rem;
    line-height: 1.2;
}

.hero-subtitle {
    font-size: 1.1rem;
    font-weight: 400;
    margin-bottom: 1.25rem;
    opacity: 0.9;
}

/* Search Box in Hero */
.hero-search-box {
    background: rgba(255, 255, 255, 0.98);
    border-radius: var(--radius-lg);
    padding: 1.5rem;
    box-shadow: var(--shadow-lg);
    animation: slideUp 1s ease;
    position: relative;
    z-index: 2;
}

.hero-search-box .form-group {
    margin-bottom: 0.75rem;
}

.hero-search-box label {
    font-weight: 600;
    color: var(--text-color);
    margin-bottom: 0.25rem;
    display: block;
    font-size: 0.9rem;
}

.hero-search-box .form-control {
    border-radius: var(--radius-sm);
    border: 1px solid #E2E8F0;
    padding: 0.75rem 1rem;
    background-color: white;
    transition: all var(--transition-fast);
}

.hero-search-box .form-control:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(255, 56, 92, 0.1);
}

.hero-search-box .btn-search {
    width: 100%;
    padding: 0.75rem 1.5rem;
    font-weight: 500;
    margin-top: 1rem;
    background-color: var(--primary-color);
    border: none;
    color: white;
    transition: all var(--transition-base);
}

.hero-search-box .btn-search:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}

.hero-search-box.hero-wide {
    max-width: 800px;
    margin: 0 auto;
}

.hero-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.45);
}

.maxw-720 {
    max-width: 720px;
}

.sticky-search {
    position: sticky;
    top: 76px;
    z-index: 3;
    transition: opacity 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
    will-change: opacity, transform;
}

.sticky-search.affixed {
    position: fixed;
    top: 76px;
    left: 50%;
    transform: translateX(-50%);
    width: calc(100% - 40px);
    max-width: 800px;
    background: rgba(255,255,255,0.85);
    -webkit-backdrop-filter: saturate(180%) blur(8px);
    backdrop-filter: saturate(180%) blur(8px);
    box-shadow: var(--shadow-lg);
    border-radius: var(--radius-lg);
    padding: 0.75rem 1rem;
}

/* Home: Features icons and themed sections */
.features-icon { font-size: 2.5rem; color: #0d6efd; margin-bottom: 1rem; }
.bg-blue-light { background-color: rgba(13, 110, 253, 0.1); }
.section-blue { background-color: #e9f0ff; }

.host-banner {
    background: linear-gradient(rgba(0,0,0,0.7), rgba(0,0,0,0.7)), url('/assets/images/host-banner.jpg');
    background-size: cover;
    background-position: center;
}

.global-search {
    background-color: #f8f9fa;
}

.category-box {
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 20px;
    box-shadow: 0 5px 15px rgba(0,0,0,0.1);
    transition: all var(--transition-base);
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 30px 15px;
    text-align: center;
    color: white;
}

.category-box:hover {
    transform: translateY(-10px);
    box-shadow: 0 10px 25px rgba(0,0,0,0.2);
}

.category-box i {
    font-size: 3rem;
    margin-bottom: 15px;
}

.category-box h4 {
    margin-bottom: 0;
    font-weight: 600;
}

.bg-apartment { background: linear-gradient(135deg, #3b82f6, #1d4ed8); }
.bg-villa { background: linear-gradient(135deg, #10b981, #047857); }
.bg-riad { background: linear-gradient(135deg, #f59e0b, #b45309); }
.bg-house { background: linear-gradient(135deg, #6366f1, #4338ca); }
.bg-room { background: linear-gradient(135deg, #ec4899, #be185d); }
.bg-sea { background: linear-gradient(135deg, #06b6d4, #0e7490); }
.bg-pool { background: linear-gradient(135deg, #3b82f6, #1e40af); }
.bg-luxury { background: linear-gradient(135deg, #8b5cf6, #6d28d9); }
.bg-mountain { background: linear-gradient(135deg, #16a34a, #065f46); }
.bg-city { background: linear-gradient(135deg, #374151, #111827); }
.bg-desert { background: linear-gradient(135deg, #fbbf24, #b45309); }

.property-img {
    height: 200px;
    object-fit: cover;
    border-radius: 12px;
}

/* Featured Cities Section */
.featured-cities {
    padding: 4rem 0;
}

.featured-city-card {
    position: relative;
    border-radius: var(--radius-lg);
    overflow: hidden;
    margin-bottom: 1.5rem;
    cursor: pointer;
    transition: all var(--transition-base);
}

.featured-city-card img {
    width: 100%;
    height: 250px;
    object-fit: cover;
    transition: all var(--transition-base);
}

.featured-city-card:hover img {
    transform: scale(1.05);
}

.featured-city-overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 1.5rem;
    background: linear-gradient(transparent, rgba(0,0,0,0.7));
    color: white;
}

.featured-city-name {
    font-size: 1.5rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.featured-city-properties {
    font-size: 0.9rem;
    opacity: 0.9;
}

/* Footer */
.footer {
    background-color: white;
    padding: 4rem 0 2rem;
    margin-top: 4rem;
    border-top: 1px solid #E2E8F0;
}

.footer-brand h4 {
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--text-color);
}

.footer-newsletter .input-group {
    box-shadow: var(--shadow-sm);
    border-radius: var(--radius-sm);
    overflow: hidden;
}

.footer-newsletter .form-control {
    border: none;
    padding: 0.75rem 1rem;
}

.footer-newsletter .btn {
    padding: 0.75rem 1.5rem;
}

.footer h5 {
    color: var(--text-color);
    font-weight: 600;
    margin-bottom: 1.5rem;
    font-size: 1.1rem;
}

.footer h6 {
    color: var(--text-color);
    font-weight: 600;
    margin-bottom: 1rem;
    font-size: 1rem;
}

.footer-links {
    list-style: none;
    padding: 0;
    margin: 0;
}

.footer-links li {
    margin-bottom: 0.75rem;
}

.footer-links a {
    color: var(--text-light);
    text-decoration: none;
    transition: all var(--transition-fast);
    display: inline-flex;
    align-items: center;
}

.footer-links a:hover {
    color: var(--primary-color);
    transform: translateX(5px);
}

.footer-contact {
    list-style: none;
    padding: 0;
    margin: 0;
}

.footer-contact li {
    display: flex;
    align-items: flex-start;
    margin-bottom: 1rem;
    color: var(--text-light);
}

.footer-contact i {
    color: var(--primary-color);
    margin-right: 1rem;
    margin-top: 0.25rem;
}

.social-links {
    display: flex;
    gap: 1rem;
}

.social-links a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background-color: var(--bg-light);
    border-radius: 50%;
    color: var(--text-light);
    transition: all var(--transition-base);
}

.social-links a:hover {
    color: white;
    background-color: var(--primary-color);
    transform: translateY(-3px);
}

.footer-bottom {
    margin-top: 3rem;
    padding-top: 2rem;
    border-top: 1px solid #E2E8F0;
}

.footer-legal {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    justify-content: flex-end;
    gap: 2rem;
}

.footer-legal a {
    color: var(--text-light);
    text-decoration: none;
    font-size: 0.9rem;
    transition: color var(--transition-fast);
}

.footer-legal a:hover {
    color: var(--primary-color);
}

@media (max-width: 768px) {
    .hero-section {
        min-height: 45vh;
    }
    
    .hero-title {
        font-size: 1.75rem;
    }
    
    .hero-subtitle {
        font-size: 1rem;
    }
    
    .hero-search-box {
        margin: 0.5rem;
        padding: 1rem;
    }
    
    .featured-city-card {
        margin-bottom: 1rem;
    }
    
    .footer {
        padding: 3rem 0 1.5rem;
    }
    
    .footer-bottom {
        text-align: center;
        margin-top: 2rem;
        padding-top: 1.5rem;
    }
    
    .footer-legal {
        justify-content: center;
        flex-wrap: wrap;
        gap: 1rem;
        margin-top: 1rem;
    }
    
    .social-links {
        justify-content: center;
    }
}

@media (max-width: 768px) {
    .hero-section {
        min-height: 60vh;
    }
    
    .hero-title {
        font-size: 2.5rem;
    }
    
    .hero-subtitle {
        font-size: 1.2rem;
    }
    
    .search-box {
        margin: 1rem;
        padding: 1.5rem;
    }
    
    .property-card {
        margin-bottom: 1.5rem;
    }
    
    .navbar {
        padding: 0.5rem 0;
    }
    
    .nav-link {
        padding: 0.5rem;
    }
    
    .dropdown-menu {
        margin-top: 0.5rem;
    }
}

/* Loading States */
.loading-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(255, 255, 255, 0.9);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 9999;
    opacity: 0;
    visibility: hidden;
    transition: all var(--transition-base);
}

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

.loading-spinner {
    width: 48px;
    height: 48px;
    border: 3px solid var(--bg-light);
    border-radius: 50%;
    border-top-color: var(--primary-color);
    animation: spin 1s linear infinite;
}

.loading-text {
    position: absolute;
    bottom: 30%;
    left: 50%;
    transform: translateX(-50%);
    color: var(--text-color);
    font-weight: 500;
}

/* Skeleton Loading */
.skeleton {
    background: linear-gradient(
        90deg,
        var(--bg-light) 25%,
        #E2E8F0 50%,
        var(--bg-light) 75%
    );
    background-size: 200% 100%;
    animation: shimmer 1.5s infinite;
}

.skeleton-text {
    height: 1rem;
    margin-bottom: 0.5rem;
    border-radius: var(--radius-sm);
}

.skeleton-title {
    height: 1.5rem;
    margin-bottom: 1rem;
    width: 70%;
    border-radius: var(--radius-sm);
}

.skeleton-image {
    width: 100%;
    padding-top: 66.67%;
    border-radius: var(--radius-lg);
}

.skeleton-button {
    height: 2.5rem;
    width: 100%;
    border-radius: var(--radius-sm);
}

.skeleton-circle {
    width: 48px;
    height: 48px;
    border-radius: 50%;
}

/* Animations */
@keyframes spin {
    to { transform: rotate(360deg); }
}

@keyframes shimmer {
    to { background-position: -200% 0; }
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes slideInRight {
    from {
        opacity: 0;
        transform: translateX(20px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes slideInLeft {
    from {
        opacity: 0;
        transform: translateX(-20px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes slideInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideInDown {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes scaleIn {
    from {
        opacity: 0;
        transform: scale(0.9);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* Animation Classes */
.fade-in {
    animation: fadeIn var(--transition-base);
}

.slide-in-right {
    animation: slideInRight var(--transition-base);
}

.slide-in-left {
    animation: slideInLeft var(--transition-base);
}

.slide-in-up {
    animation: slideInUp var(--transition-base);
}

.slide-in-down {
    animation: slideInDown var(--transition-base);
}

.scale-in {
    animation: scaleIn var(--transition-base);
}

/* Transitions */
.fade-enter-active,
.fade-leave-active {
    transition: opacity var(--transition-base);
}

.fade-enter,
.fade-leave-to {
    opacity: 0;
}

.slide-enter-active,
.slide-leave-active {
    transition: transform var(--transition-base), opacity var(--transition-base);
}

.slide-enter,
.slide-leave-to {
    opacity: 0;
    transform: translateY(20px);
}

/* Loading States for Components */
.loading-btn {
    position: relative;
    pointer-events: none;
}

.loading-btn .btn-content {
    opacity: 0;
}

.loading-btn::after {
    content: '';
    position: absolute;
    width: 20px;
    height: 20px;
    border: 2px solid transparent;
    border-top-color: currentColor;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

.loading-card {
    position: relative;
    overflow: hidden;
}

.loading-card::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(
        90deg,
        transparent 25%,
        rgba(255, 255, 255, 0.3) 50%,
        transparent 75%
    );
    background-size: 200% 100%;
    animation: shimmer 1.5s infinite;
}

/* Image Loading */
/* Image Loading overlay applied to wrapper for proper stacking */
.property-image-wrapper.image-loading::before {
    content: '';
    position: absolute;
    inset: 0;
    background-color: var(--bg-light);
    z-index: 2;
}

.property-image-wrapper.image-loading::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 30px;
    height: 30px;
    border: 2px solid transparent;
    border-top-color: var(--primary-color);
    border-radius: 50%;
    animation: spin 1s linear infinite;
    z-index: 3;
}

.property-image-wrapper.image-loaded::before,
.property-image-wrapper.image-loaded::after { display: none; }

.image-loaded {
    animation: fadeIn var(--transition-base);
}

/* Map Search Page */
.map-search-container {
    display: flex;
    height: calc(100vh - 76px);
    margin-top: 76px;
}

.map-search-sidebar {
    width: 450px;
    height: 100%;
    display: flex;
    flex-direction: column;
    border-right: 1px solid #E2E8F0;
    background: white;
}

.map-search-filters {
    padding: 1.5rem;
    border-bottom: 1px solid #E2E8F0;
    overflow-y: auto;
}

.filter-group {
    margin-bottom: 1.5rem;
}

.filter-group h4 {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 1rem;
}

.price-range {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.price-range input {
    width: 120px;
}

.rooms-beds .counter-group {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.75rem;
}

.counter {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.counter button {
    width: 32px;
    height: 32px;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
}

.map-search-results {
    flex: 1;
    overflow-y: auto;
    padding: 1rem;
}

.results-count {
    font-weight: 600;
    margin-bottom: 1rem;
}

.map-property-card {
    border: 1px solid #E2E8F0;
    border-radius: var(--radius-lg);
    margin-bottom: 1rem;
    overflow: hidden;
    cursor: pointer;
    transition: all var(--transition-fast);
}

.map-property-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}

.map-property-card.highlighted {
    border-color: var(--primary-color);
    box-shadow: var(--shadow-md);
}

.map-property-card .property-image {
    position: relative;
    padding-top: 66.67%;
}

.map-property-card .property-image img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.map-property-card .property-info {
    padding: 1rem;
}

.map-property-card h5 {
    font-size: 1.1rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.map-property-card .property-details,
.map-property-card .property-amenities {
    color: var(--text-light);
    font-size: 0.9rem;
    margin-bottom: 0.5rem;
}

.map-property-card .property-price {
    font-size: 1rem;
    margin-bottom: 0;
}

.map-container {
    flex: 1;
    height: 100%;
}

.map-search-input {
    margin: 10px;
    padding: 12px 16px;
    width: 300px;
    background: white;
    border: 1px solid #E2E8F0;
    border-radius: var(--radius-full);
    box-shadow: var(--shadow-md);
    font-size: 1rem;
}

.map-search-input:focus {
    outline: none;
    border-color: var(--primary-color);
}

.map-info-window {
    padding: 0.5rem;
    max-width: 300px;
}

.map-info-window img {
    width: 100%;
    height: 150px;
    object-fit: cover;
    border-radius: var(--radius-sm);
    margin-bottom: 0.75rem;
}

.map-info-window h5 {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.map-info-window p {
    font-size: 0.9rem;
    margin-bottom: 0.25rem;
    color: var(--text-light);
}

.map-info-window .price {
    color: var(--text-color);
    font-weight: 600;
}

@media (max-width: 768px) {
    .map-search-container {
        flex-direction: column;
    }
    
    .map-search-sidebar {
        width: 100%;
        height: 50%;
    }
    
    .map-container {
        height: 50%;
    }
    
    .map-search-input {
        width: calc(100% - 20px);
    }
}

/* Leaflet Map Styles */
#map {
    height: calc(100vh - 76px);
    width: 100%;
    z-index: 1;
}

.leaflet-control-geocoder {
    margin-top: 10px;
}

.custom-marker {
    transition: transform 0.2s;
}

.custom-marker:hover {
    transform: scale(1.2);
}

.leaflet-popup-content {
    text-align: center;
    font-family: Arial, sans-serif;
}

.leaflet-popup-content a {
    display: inline-block;
    margin-top: 10px;
    padding: 5px 10px;
    background-color: #FF385C;
    color: white;
    text-decoration: none;
    border-radius: 4px;
}
/* RTL Overrides */
html[dir="rtl"] {
    direction: rtl;
}

html[dir="rtl"] .nav-link,
html[dir="rtl"] .dropdown-item {
    text-align: right;
}

html[dir="rtl"] .dropdown-item i,
html[dir="rtl"] .nav-link i,
html[dir="rtl"] .dropdown-item-icon {
    margin-left: 0.5rem;
    margin-right: 0;
}

html[dir="rtl"] .custom-select::after {
    left: 1rem;
    right: auto;
}

html[dir="rtl"] .custom-select select {
    padding: 0.75rem 1rem 0.75rem 2.5rem;
    text-align: right;
}

html[dir="rtl"] .alert-close {
    left: 1rem;
    right: auto;
}

html[dir="rtl"] .input-group .form-control:first-child {
    border-top-right-radius: var(--radius-sm);
    border-bottom-right-radius: var(--radius-sm);
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

html[dir="rtl"] .input-group .form-control:last-child {
    border-top-left-radius: var(--radius-sm);
    border-bottom-left-radius: var(--radius-sm);
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

html[dir="rtl"] .property-location i,
html[dir="rtl"] .property-amenity i {
    margin-left: 0.5rem;
    margin-right: 0;
}

/* Navbar and Dropdown fine-tuning for RTL */
html[dir="rtl"] .dropdown-menu {
    transform-origin: top left;
}

html[dir="rtl"] .dropdown-menu-end {
    left: 0 !important;
    right: auto !important;
}

html[dir="rtl"] .navbar .navbar-toggler {
    margin-left: auto;
    margin-right: 0;
}

html[dir="rtl"] .navbar-nav.me-auto {
    margin-left: auto !important;
    margin-right: 0 !important;
}

/* Footer spacing and alignment in RTL */
html[dir="rtl"] .footer-legal {
    justify-content: flex-start;
}

html[dir="rtl"] .footer-contact i {
    margin-left: 1rem;
    margin-right: 0;
}
html[dir="rtl"] .footer-links a:hover {
    transform: translateX(-5px);
}

/* Map search sidebar border side in RTL */
html[dir="rtl"] .map-search-sidebar {
    border-left: 1px solid #E2E8F0;
    border-right: none;
}

/* Forms and inputs alignment for RTL */
html[dir="rtl"] input[type="text"],
html[dir="rtl"] input[type="search"],
html[dir="rtl"] input[type="email"],
html[dir="rtl"] input[type="tel"],
html[dir="rtl"] textarea {
    text-align: right;
}

html[dir="rtl"] .input-group-text i {
    margin-left: 0.5rem;
    margin-right: 0;
}

/* Checkboxes and switches in RTL */
html[dir="rtl"] .form-check {
    padding-left: 0;
    padding-right: 1.25rem;
}

html[dir="rtl"] .form-check .form-check-input {
    float: right;
    margin-left: 0;
    margin-right: -1.25rem;
}

html[dir="rtl"] .form-switch {
    padding-left: 0;
    padding-right: 2.5rem;
}

html[dir="rtl"] .form-switch .form-check-input {
    margin-left: 0;
    margin-right: -2.5rem;
}
 
/* Settings page modern styles */
.settings-container {
    margin-top: 76px;
}

.settings-title {
    font-weight: 700;
    color: var(--text-color);
}

.settings-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}
.settings-header .btn {
    border-radius: 12px;
}
.settings-header .actions .btn {
    border: 1px solid #E5E7EB;
    background: #fff;
}
.settings-header .actions .btn:hover {
    background: #F8FAFC;
}
.settings-header .breadcrumbs {
    color: var(--text-light);
    font-size: 0.9rem;
}
.settings-header .actions {
    display: flex;
    gap: .5rem;
}

.settings-card {
    border: 1px solid #E2E8F0;
    border-radius: var(--radius-lg);
    box-shadow: 0 2px 10px rgba(0,0,0,0.06);
    background: #fff;
    transition: box-shadow var(--transition-fast), transform var(--transition-fast);
}
.settings-card:hover { transform: translateY(-2px); box-shadow: 0 12px 24px rgba(0,0,0,0.10); }

.settings-card-title {
    font-weight: 600;
    color: var(--text-color);
}

.settings-card .card-body { padding: 1.5rem 1.75rem; }
.settings-card .card-body { padding: 1.25rem 1.25rem; }
.settings-profile-header { display:flex; align-items:center; gap:1rem; }
.settings-avatar { position:relative; width:72px; height:72px; border-radius:50%; overflow:hidden; box-shadow: var(--shadow-sm); }
.settings-avatar img { width:100%; height:100%; object-fit:cover; }
.settings-avatar .edit-badge { position:absolute; right:-4px; bottom:-4px; background:#fff; border:1px solid #E2E8F0; border-radius:12px; padding:4px 8px; font-size:.8rem; box-shadow: var(--shadow-sm); }
.settings-field { margin-bottom:1rem; }
.settings-field .form-label { color:#4A5568; font-weight:600; }
.settings-actions { display:flex; gap:.5rem; }
.settings-muted { color:#718096; }

.input-group .btn { border-radius: var(--radius-sm); }
.input-group .form-control { border-radius: var(--radius-sm); }

.settings-divider { height:1px; background:#E2E8F0; margin:1rem 0; }

.recovery-grid { display:grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap:.5rem; }
@media (max-width:768px){ .recovery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

.settings-sidebar {
    border: none;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    position: sticky;
    top: 76px;
}

.settings-sidebar-title {
    font-size: 0.9rem;
    color: var(--text-light);
    font-weight: 600;
    margin-bottom: 0.75rem;
}

.settings-menu .nav-link {
    color: var(--text-color);
    border-radius: var(--radius-sm);
    padding: 0.5rem 0.75rem;
    transition: all var(--transition-fast);
}
.settings-menu .nav-link i { color: var(--primary-color); }
.settings-menu .nav-link:hover { background-color: rgba(255,56,92,0.08); }
.settings-menu .nav-link.active {
    background-color: rgba(255,56,92,0.12);
    color: var(--primary-color);
    box-shadow: var(--shadow-sm);
}

.settings-section { scroll-margin-top: 140px; }
.settings-section .section-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: .75rem;
}
.settings-section .section-help { color: var(--text-light); font-size: .9rem; }

.form-grid-two {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}
@media (max-width:768px){ .form-grid-two { grid-template-columns: 1fr; } }

.sticky-actions {
    position: sticky;
    bottom: 12px;
    background: rgba(255,255,255,0.85);
    backdrop-filter: saturate(180%) blur(6px);
    padding: .5rem;
    border-radius: var(--radius-sm);
    display: flex;
    gap: .5rem;
    justify-content: flex-end;
}

.form-control-lg, .form-select-lg {
    border-radius: var(--radius-sm);
}

/* Compact inputs for settings */
.settings-card .form-control,
.settings-card .form-select {
    height: 44px;
    padding: .5rem .75rem;
    border: 1px solid #E5E7EB;
    border-radius: 10px;
}
.settings-card .form-control:focus,
.settings-card .form-select:focus {
    border-color: #CBD5E1;
    box-shadow: 0 0 0 4px rgba(203,213,225,0.35);
}
.settings-card .btn {
    height: 40px;
}

.progress { border-radius: var(--radius-sm); box-shadow: var(--shadow-sm); }

.invalid-feedback { display: none; }

/* Fine-tuning spacing */
.settings-card .form-label { font-weight: 500; }
.settings-card .btn { border-radius: var(--radius-sm); }

/* Dropdown caret spacing for RTL */
html[dir="rtl"] .dropdown-toggle::after {
    margin-left: 0;
    margin-right: 0.255em;
}

/* Badges inside dropdown items */
html[dir="rtl"] .dropdown-item .badge {
    margin-left: 0.5rem;
    margin-right: 0;
}

/* Admin navbar adjustments for RTL */
html[dir="rtl"] .navbar-dark .navbar-nav .nav-link .badge {
    margin-left: 0.5rem;
    margin-right: 0;
}

/* Close button position in alerts (Bootstrap .btn-close) */
html[dir="rtl"] .alert .btn-close {
    left: 0.75rem;
    right: auto;
}

/* Hero text alignment in RTL */
html[dir="rtl"] .hero-title,
html[dir="rtl"] .hero-subtitle,
html[dir="rtl"] .hero-search-box,
html[dir="rtl"] .search-box {
    text-align: right;
}

/* Breadcrumb RTL */
html[dir="rtl"] .breadcrumb {
    flex-direction: row-reverse;
    text-align: right;
}
html[dir="rtl"] .breadcrumb-item + .breadcrumb-item {
    padding-left: 0;
    padding-right: var(--bs-breadcrumb-item-padding-x, .5rem);
}
html[dir="rtl"] .breadcrumb-item + .breadcrumb-item::before {
    transform: scaleX(-1);
    margin-left: 0.5rem;
    margin-right: 0;
}

/* Pagination RTL */
html[dir="rtl"] .pagination {
    flex-direction: row-reverse;
}
html[dir="rtl"] .pagination .page-link i {
    margin-left: 0.5rem;
    margin-right: 0;
}
html[dir="rtl"] .pagination .fa-chevron-left,
html[dir="rtl"] .pagination .fa-chevron-right {
    transform: scaleX(-1);
}
html[dir="rtl"] .pagination .page-item:first-child .page-link {
    border-top-right-radius: 0.375rem;
    border-bottom-right-radius: 0.375rem;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}
html[dir="rtl"] .pagination .page-item:last-child .page-link {
    border-top-left-radius: 0.375rem;
    border-bottom-left-radius: 0.375rem;
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

/* Tables RTL */
html[dir="rtl"] .table {
    text-align: right;
}
html[dir="rtl"] .table th,
html[dir="rtl"] .table td {
    text-align: right;
}
html[dir="rtl"] .text-start {
    text-align: right !important;
}
html[dir="rtl"] .text-end {
    text-align: left !important;
}
html[dir="rtl"] .table i {
    margin-left: 0.5rem;
    margin-right: 0;
}

/* List Group RTL */
html[dir="rtl"] .list-group-item {
    text-align: right;
}
html[dir="rtl"] .list-group-item i {
    margin-left: 0.5rem;
    margin-right: 0;
}

/* Card RTL */
html[dir="rtl"] .card-header,
html[dir="rtl"] .card-body,
html[dir="rtl"] .card-footer {
    text-align: right;
}
html[dir="rtl"] .card-title,
html[dir="rtl"] .card-text {
    text-align: right;
}
html[dir="rtl"] .card i {
    margin-left: 0.5rem;
    margin-right: 0;
}

/* Modal RTL */
html[dir="rtl"] .modal-header {
    flex-direction: row-reverse;
    text-align: right;
}
html[dir="rtl"] .modal-title {
    text-align: right;
}
html[dir="rtl"] .modal-header .btn-close {
    margin-left: auto;
    margin-right: 0;
}
html[dir="rtl"] .modal .btn-close {
    left: 0.75rem;
    right: auto;
}
html[dir="rtl"] .modal-body {
    text-align: right;
}
html[dir="rtl"] .modal-footer {
    flex-direction: row-reverse;
}
/* Dropdown flags and icons spacing */
.dropdown-item .dropdown-item-icon {
    margin-right: 0.5rem;
}
.dropdown-item .flag {
    margin-right: 0.5rem;
    display: inline-block;
}
html[dir="rtl"] .dropdown-item .flag {
    margin-left: 0.5rem;
    margin-right: 0;
}
/* Flag spacing inside nav link toggles */
.nav-link .flag {
    margin-right: 0.5rem;
    display: inline-block;
}
html[dir="rtl"] .nav-link .flag {
    margin-left: 0.5rem;
    margin-right: 0;
}
/* Toggle host alignment */
.toggle-host {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

/* RTL utility inversions for Bootstrap spacing */
html[dir="rtl"] .ms-0 { margin-right: 0 !important; margin-left: 0 !important; }
html[dir="rtl"] .ms-1 { margin-right: .25rem !important; margin-left: 0 !important; }
html[dir="rtl"] .ms-2 { margin-right: .5rem !important; margin-left: 0 !important; }
html[dir="rtl"] .ms-3 { margin-right: 1rem !important; margin-left: 0 !important; }
html[dir="rtl"] .ms-4 { margin-right: 1.5rem !important; margin-left: 0 !important; }
html[dir="rtl"] .ms-5 { margin-right: 3rem !important; margin-left: 0 !important; }
html[dir="rtl"] .ms-auto { margin-right: auto !important; margin-left: 0 !important; }

html[dir="rtl"] .me-0 { margin-left: 0 !important; margin-right: 0 !important; }
html[dir="rtl"] .me-1 { margin-left: .25rem !important; margin-right: 0 !important; }
html[dir="rtl"] .me-2 { margin-left: .5rem !important; margin-right: 0 !important; }
html[dir="rtl"] .me-3 { margin-left: 1rem !important; margin-right: 0 !important; }
html[dir="rtl"] .me-4 { margin-left: 1.5rem !important; margin-right: 0 !important; }
html[dir="rtl"] .me-5 { margin-left: 3rem !important; margin-right: 0 !important; }
html[dir="rtl"] .me-auto { margin-left: auto !important; margin-right: 0 !important; }

html[dir="rtl"] .ps-0 { padding-right: 0 !important; padding-left: 0 !important; }
html[dir="rtl"] .ps-1 { padding-right: .25rem !important; padding-left: 0 !important; }
html[dir="rtl"] .ps-2 { padding-right: .5rem !important; padding-left: 0 !important; }
html[dir="rtl"] .ps-3 { padding-right: 1rem !important; padding-left: 0 !important; }
html[dir="rtl"] .ps-4 { padding-right: 1.5rem !important; padding-left: 0 !important; }
html[dir="rtl"] .ps-5 { padding-right: 3rem !important; padding-left: 0 !important; }

html[dir="rtl"] .pe-0 { padding-left: 0 !important; padding-right: 0 !important; }
html[dir="rtl"] .pe-1 { padding-left: .25rem !important; padding-right: 0 !important; }
html[dir="rtl"] .pe-2 { padding-left: .5rem !important; padding-right: 0 !important; }
html[dir="rtl"] .pe-3 { padding-left: 1rem !important; padding-right: 0 !important; }
html[dir="rtl"] .pe-4 { padding-left: 1.5rem !important; padding-right: 0 !important; }
html[dir="rtl"] .pe-5 { padding-left: 3rem !important; padding-right: 0 !important; }

/* Fine-tuning for buttons and alerts in RTL */
html[dir="rtl"] .btn .me-1 { margin-left: .25rem !important; margin-right: 0 !important; }
 html[dir="rtl"] .btn .ms-1 { margin-right: .25rem !important; margin-left: 0 !important; }
 html[dir="rtl"] .alert-info ul { padding-right: 1rem; padding-left: 0; }
 .morobnbstyle { background: #fff; border: 1px solid #E2E8F0; border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 0.75rem 1rem; }
 .morobnbstyle img { border-radius: var(--radius-sm); border: 1px solid #E2E8F0; box-shadow: var(--shadow-sm); }
 .morobnbstyle .badge { background-color: rgba(255,56,92,0.12); color: var(--accent-color); border-radius: var(--radius-sm); font-weight: 600; }
 .morobnbstyle .btn-outline-primary { border: 1px solid var(--accent-color); color: var(--accent-color); background: transparent; }
 .morobnbstyle .btn-outline-primary:hover { background: var(--accent-color); color: #fff; }
 .morobnbstyle p { margin-bottom: 0.5rem; }
 .modal-header.morobnbstyle { background: #fff; border: 1px solid #E2E8F0; border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 0.75rem 1rem; }
 .modal-header.morobnbstyle .modal-title { font-weight: 600; color: var(--text-color); }
 .message-content.morobnbstyle { background: #fff; border: 1px solid #E2E8F0; border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 1rem; }
 .table.morobnbstyle { border: 1px solid #E2E8F0; box-shadow: var(--shadow-sm); border-radius: var(--radius-md); overflow: hidden; background: #fff; }
 .table.morobnbstyle thead { background-color: rgba(255,56,92,0.06); }
 .table.morobnbstyle th { color: var(--text-color); font-weight: 600; }
 .table.morobnbstyle tbody tr:hover { background-color: rgba(255,56,92,0.06); }
 .table.morobnbstyle .unread { background-color: rgba(255,56,92,0.10); }
/* Advanced Search page */
.page-offset {
    margin-top: 100px;
}

.filter-card {
    border: none;
    border-radius: 15px;
    box-shadow: 0 2px 15px rgba(0, 0, 0, 0.1);
    will-change: transform, box-shadow;
    transition: transform var(--transition-base), box-shadow var(--transition-base);
    background: #fff;
}

.filter-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

.animate-fadeIn { animation: fadeIn var(--transition-base); }
.animate-slideIn { animation: slideIn var(--transition-base); }
.animate-scaleIn { animation: scaleIn var(--transition-fast); }

.filter-card form .mb-4 { opacity: 0; animation: fadeInUp 0.35s ease forwards; }
.filter-card form .mb-4:nth-child(1) { animation-delay: .04s; }
.filter-card form .mb-4:nth-child(2) { animation-delay: .08s; }
.filter-card form .mb-4:nth-child(3) { animation-delay: .12s; }
.filter-card form .mb-4:nth-child(4) { animation-delay: .16s; }
.filter-card form .mb-4:nth-child(5) { animation-delay: .20s; }
.filter-card form .mb-4:nth-child(6) { animation-delay: .24s; }
.filter-card form .mb-4:nth-child(7) { animation-delay: .28s; }
.filter-card form .mb-4:nth-child(8) { animation-delay: .32s; }
.filter-card form .mb-4:nth-child(9) { animation-delay: .36s; }
.filter-card form .mb-4:nth-child(10) { animation-delay: .40s; }

@media (prefers-reduced-motion: reduce) {
    .animate-fadeIn, .animate-slideIn, .animate-scaleIn, .filter-card form .mb-4 { animation: none; opacity: 1; }
}

.filters-sticky {
    position: sticky;
    top: 100px;
    z-index: 2;
}

/* (rollback) remove offcanvas-specific styles */

@media (max-width: 768px) {
    .page-offset { margin-top: 80px; }
    .amenity-badge { padding: 10px 14px; font-size: 1rem; }
    .results-toolbar { gap: 8px; }
}

.amenity-badge {
    background-color: #f8f9fa;
    color: #6c757d;
    border: 1px solid #dee2e6;
    margin: 4px;
    padding: 8px 12px;
    border-radius: 20px;
    font-size: 0.95em;
    cursor: pointer;
    transition: all var(--transition-fast);
    display: inline-flex;
    align-items: center;
    gap: 8px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
    user-select: none;
    transform: translateY(0) scale(1);
}
.amenity-badge:hover { transform: translateY(-1px) scale(1.02); box-shadow: var(--shadow-sm); }
.amenity-badge.active { background-color: var(--primary-color); color: white; border-color: var(--primary-color); transform: scale(1.05); animation: scaleIn var(--transition-fast); }

.filter-row { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 768px) { .filter-row { grid-template-columns: repeat(2, 1fr); } }

.filter-card .mb-4:focus-within .form-label { color: var(--primary-color); transform: translateY(-2px); }
.filter-card .form-control:focus { transform: translateY(-1px); }

#price-range .noUi-connect.pulse { animation: priceUpdate .35s ease; }
.noUi-handle.active { transform: scale(1.15); box-shadow: 0 0 0 6px rgba(255,56,92,0.12); }

.btn-ripple { position: relative; overflow: hidden; }
.btn-ripple .ripple { position: absolute; width: 8px; height: 8px; border-radius: 50%; background: rgba(255,255,255,0.4); transform: scale(0); animation: ripple 600ms ease-out; pointer-events: none; }
@keyframes ripple { to { transform: scale(32); opacity: 0; } }

#price-range { height: 10px; margin: 30px 0; }
.noUi-connect { background: var(--primary-color); }
.noUi-handle {
    border-radius: 50%;
    background: var(--primary-color);
    box-shadow: none;
    border: none;
    width: 20px !important;
    height: 20px !important;
    right: -10px !important;
}
.noUi-handle:before, .noUi-handle:after { display: none; }

.results-toolbar {
    position: sticky;
    top: 72px;
    background: rgba(255,255,255,0.9);
    backdrop-filter: saturate(180%) blur(6px);
    -webkit-backdrop-filter: saturate(180%) blur(6px);
    padding: 0.75rem 1rem;
    border-radius: var(--radius-md);
    z-index: 1;
}

@media (max-width: 768px) {
    .results-toolbar {
        position: static;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
    }
    .filters-sticky {
        position: static;
        top: auto;
    }
}
/* Messaging modern list */
.message-item { border: 1px solid #E2E8F0; border-radius: 12px; margin-bottom: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.04); }
.message-item:hover { box-shadow: 0 6px 12px rgba(0,0,0,0.08); transform: translateY(-1px); }
.message-actions .btn { border-radius: 20px; }
.message-item .badge { font-weight: 600; }
.status-chip { display:inline-flex; align-items:center; gap:6px; border:1px solid #E2E8F0; border-radius:16px; padding:3px 10px; font-weight:600; font-size:12px; color:#374151; background:#F8FAFC; }
.status-chip::before { content:""; width:8px; height:8px; border-radius:50%; display:inline-block; background:#94A3B8; }
.status-pending::before { background:#60A5FA; }
.status-confirmed::before { background:#10B981; }
.status-completed::before { background:#9CA3AF; }
.status-cancelled::before { background:#A3A3A3; }
.status-default::before { background:#94A3B8; }
.settings-subnav { position: sticky; top: 76px; z-index: 990; background: #fff; border: 1px solid #E5E7EB; border-radius: 12px; padding: .5rem; box-shadow: var(--shadow-sm); margin-bottom: 1rem; }
.settings-subnav .nav { display: flex; gap: .5rem; overflow-x: auto; scrollbar-width: none; }
.settings-subnav .nav::-webkit-scrollbar { display: none; }
.settings-subnav .nav-link { border: 1px solid #E5E7EB; border-radius: 12px; padding: .35rem .6rem; color: var(--text-color); background: #fff; white-space: nowrap; }
.settings-subnav .nav-link[href="#section-reviews"] i { color: #F59E0B; }
.settings-subnav .nav-link i { color: var(--primary-color); margin-right: .4rem; }
.settings-subnav .nav-link:hover { background: #F8FAFC; }
.settings-subnav .nav-link.active { background: rgba(255,56,92,0.08); color: var(--primary-color); border-color: rgba(255,56,92,0.2); }
