/* Menu Icone Gauche */
.form-switch.mode-switch .form-check-label:last-of-type, .form-switch.price-switch .form-check-label:last-of-type {
  order: 3;
  margin-left: 0.75rem;
  color: #0b0f19;
}

/* État initial : invisible + léger décalage vers le bas */
.immo-card.fade-on-scroll {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

/* État visible : pleine opacité, position normale */
.immo-card.fade-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}

     
/* Container flottant gauche */
.floating-actions {
    position: fixed;
    right: 1rem;               /* distance du bord gauche */
    bottom: 10rem;             /* distance du bas */
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    z-index: 9999;            /* au-dessus de tout */
}

/* Bouton rond */
.floating-action-btn {
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 999px;
    border: none;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.25rem;
    font-weight: 600;
    color: #fff;
    box-shadow: 0 15px 30px rgba(0,0,0,0.25);
    cursor: pointer;
    transition: all 0.18s ease;
}

/* Effet hover */
.floating-action-btn:hover {
    transform: translateY(-2px) scale(1.05);
    box-shadow: 0 20px 35px rgba(0,0,0,0.3);
}

/* Couleurs spécifiques */
.call-btn {
    background: linear-gradient(135deg, #10b981 0%, #059669 100%); /* vert premium */
    text-decoration: none;
}

.alert-btn {
    background: linear-gradient(135deg, #f87171 0%, #dc2626 100%); /* rouge alerte */
}

/* Option : légère animation pulse sur l'alerte pour attirer l'œil */
.alert-btn {
    position: relative;
}
.alert-btn::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    box-shadow: 0 0 15px rgba(220,38,38,0.7);
    animation: pulseAlert 1.8s infinite;
}
@keyframes pulseAlert {
    0%   { box-shadow: 0 0 10px rgba(220,38,38,0.7); opacity: 1; }
    70%  { box-shadow: 0 0 25px rgba(220,38,38,0);   opacity: 0; }
    100% { box-shadow: 0 0 10px rgba(220,38,38,0);   opacity: 0; }
}

/* Mobile : remonter un peu pour éviter le bouton cookie / nav basse */
@media (max-width: 768px) {
    .floating-actions {
        right: 0.75rem;
        bottom: 10rem;
    }
}


.btn{ 
  border-radius: 0px !important;
}

.btn-primary{
  background: #2f3084 !important;
  border-color: #2f3084 !important;
}
  /* === Menu Icone === */

/* Couleur sticky souhaitée */
:root { --nav-action-sticky: #33354d; }

/* ÉTAT PAR DÉFAUT (non-sticky) : blanc */
.header .nav-actions .btn.btn-outline-secondary{
  --bs-btn-color: #fff ;
  --bs-btn-border-color: rgba(255,255,255,.85) !important;
  --bs-btn-hover-bg: rgba(255,255,255,.12);
  --bs-btn-hover-border-color: #fff;
  --bs-btn-active-bg: rgba(255,255,255,.18);
  --bs-btn-active-border-color: #fff;
}

.header .nav-actions .btn.btn-outline-secondary .bx{
  color: #fff;
}

.navbar-stuck .nav-actions .btn.btn-outline-secondary .bx{
  color: #000 !important;
}
html[data-bs-theme="dark"] .navbar-stuck .nav-actions .btn.btn-outline-secondary .bx{
  color: #fff !important;
}

.header .nav-actions  .bx{
  color: #fff;
}

.navbar-stuck .nav-actions  .bx{
  color: #000 !important;
}

/* STICKY (le thème ajoute .navbar-stuck sur le header) : #33354d */
.navbar-stuck .nav-actions .btn.btn-outline-secondary{
  --bs-btn-color: var(--nav-action-sticky);
  --bs-btn-border-color: var(--nav-action-sticky);
  --bs-btn-hover-bg: color-mix(in srgb, var(--nav-action-sticky) 10%, transparent);
  --bs-btn-hover-border-color: var(--nav-action-sticky);
  --bs-btn-active-bg: color-mix(in srgb, var(--nav-action-sticky) 18%, transparent);
  --bs-btn-active-border-color: var(--nav-action-sticky);
}

/* DARK MODE (Bootstrap) : toujours blanc, même sticky */
html[data-bs-theme="dark"] .nav-actions .btn.btn-outline-secondary,
html[data-bs-theme="dark"] .navbar-stuck .nav-actions .btn.btn-outline-secondary{
  --bs-btn-color: #fff;
  --bs-btn-border-color: rgba(255,255,255,.9);
  --bs-btn-hover-bg: rgba(255,255,255,.14);
  --bs-btn-hover-border-color: #fff;
  --bs-btn-active-bg: rgba(255,255,255,.22);
  --bs-btn-active-border-color: #fff;
}

/* Icônes = currentColor → elles suivent la couleur du bouton */
.header .nav-actions .btn .bx{ vertical-align: -1px; }

/* Optionnel : les deux petites icônes du switch suivent la couleur voulue */
.header .mode-switch{ color:#fff; }                         /* par défaut */
.navbar-stuck .mode-switch{ color: var(--nav-action-sticky); } /* sticky */
html[data-bs-theme="dark"] .mode-switch{ color:#fff; }         /* dark */

/* === FIX 1 — Empilement correct === */
  .hero{
    position: relative;
    overflow: hidden;
    z-index: 0;
  }
  .hero-bg{
    position: absolute; inset: 0;
    will-change: transform;
    z-index: 0;            /* <-- au lieu de -1 */
  }
  .hero-overlay{
    position: absolute; inset: 0;
    background: radial-gradient(116.18% 118% at 50% 100%,
                rgba(99,102,241,.10) 0%,
                rgba(218,70,239,.05) 41.83%,
                rgba(241,244,253,.07) 82.52%);
    pointer-events: none;
    z-index: 1;            /* <-- au-dessus du BG */
  }
  /* le wrapper de contenu a déjà .position-relative dans ton HTML, on lui donne juste un z-index */
  .hero > .min-vh-100.position-relative{ z-index: 2; }

  /* === FIX 2 — Switch dark avec Bootstrap === */
  /* Images par défaut */
  :root{
    --hero-parallax-strength: 0.25;
    --hero-fade-duration: .35s;
  }
  /* System dark si tu n’utilises PAS data-bs-theme (fallback) */
  @media (prefers-color-scheme: dark){
    :root:not([data-bs-theme]){
      --hero-img-light: var(--hero-img-dark);
    }
  }
  /* Calques (inchangés) */
  .hero-bg::before,
  .hero-bg::after{
    content:"";
    position:absolute; inset:0;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    transition: opacity var(--hero-fade-duration) ease;
  }
  .hero-bg::before{ background-image: var(--hero-img-light); opacity: 1; }
  .hero-bg::after { background-image: var(--hero-img-dark);  opacity: 0; }

  /* ⬇️ ICI on écoute Bootstrap: html[data-bs-theme="dark"] */
  html[data-bs-theme="dark"] .hero-bg::after{ opacity: 1; }
  html[data-bs-theme="dark"] .hero-bg::before{ opacity: 0; }

  /* Accessibilité */
  @media (prefers-reduced-motion: reduce){
    .hero-bg{ transform: none !important; }
    .hero-bg::before, .hero-bg::after{ transition: none !important; }
  }


/* ---- IMMO CARD V2 ---- */

/* Carrousel premium dans la carte */
.immo-card .carousel,
.immo-card .carousel-inner,
.immo-card .carousel-item { height: 100%; }
.immo-card .carousel-item img { width:100%; height:100%; object-fit:cover; }

/* Contrôles visibles, lisibles sur photo */
.immo-card .carousel-control-prev-icon,
.immo-card .carousel-control-next-icon{
  filter: invert(1) drop-shadow(0 2px 6px rgba(0,0,0,.45));
}
.immo-card .carousel-control-prev,
.immo-card .carousel-control-next{
  width: 12%;
  opacity: .0;
  transition: opacity .25s ease;
}
.immo-card:hover .carousel-control-prev,
.immo-card:hover .carousel-control-next{ opacity: .95; }

/* Indicateurs (petites pastilles) */
.immo-card .carousel-indicators [data-bs-target]{
  width: 8px; height: 8px; border-radius:50%;
  background: rgba(255,255,255,.75);
}
.immo-card .carousel-indicators .active{ background:#fff; }
@media (max-width: 575.98px){
  .immo-card .carousel-indicators{ display:none; }
}

/* Dark mode: on garde des icônes claires */
[data-theme="dark"] .immo-card .carousel-control-prev-icon,
[data-theme="dark"] .immo-card .carousel-control-next-icon{
  filter: invert(1) drop-shadow(0 2px 6px rgba(0,0,0,.65));
}

.card{
  border-radius: 0px !important;
  --si-card-border-radius: 0rem !important;
}
.immo-card{
  border: 0;
  overflow: hidden;
  box-shadow: 0 6px 24px rgba(0,0,0,.08);
  transition: transform .25s ease, box-shadow .25s ease;

}

.immo-card:hover{
  transform: translateY(-4px);
  box-shadow: 0 12px 36px rgba(0,0,0,.12);
}

/* Image ratio fixe pour une grille harmonieuse */
.immo-card .ratio{ background:#f4f5f7; }

/* Overlay gradient (lisibilité du badge et de l’action) */
.immo-card .img-overlay{
  position:absolute; inset:0; 
  background: linear-gradient(180deg, rgba(0,0,0,.15) 0%, rgba(0,0,0,0) 45%, rgba(0,0,0,.35) 100%);
  pointer-events:none;
}

/* Badges premium */
.badge-luxe{
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  background: rgba(0, 0, 0, 0.18);
  color: #fff;
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 999px;
  padding: .35rem .7rem;
  font-weight: 600;
  letter-spacing:.2px;
}
.badge-exclu{ background: rgba(0, 0, 0, 0.9); border-color: transparent; }
.badge-neuf{ background: rgba(35, 114, 252, .9); border-color: transparent; }

/* Boutons action (favori, partage…) */
.immo-actions .btn{
  --bs-btn-bg: rgba(255,255,255,.9);
  --bs-btn-border-color: transparent;
  --bs-btn-hover-bg: #fff;
  --bs-btn-active-bg: #fff;
  box-shadow: 0 2px 10px rgba(0,0,0,.12);
}

/* Titre + prix */
.immo-title a{
  text-decoration: none;
}
.immo-title a:hover{
  color: #0d6efd;
}
.immo-price{
  font-size: clamp(1.15rem, 1.1rem + .4vw, 1.5rem);
  font-weight: 800;
  letter-spacing:.2px;
}

/* Chips d’attributs */
.immo-chips{
  display:flex; flex-wrap:wrap; gap:.5rem;
}
.immo-chip{
  background: #f1f3f5;
  color:#333;
  border-radius:999px;
  padding:.25rem .6rem;
  font-size:.85rem;
  line-height:1.25rem;
  border:1px solid rgba(0,0,0,.05);
}

/* Ligne ref + CTA */
.immo-meta{
  font-size:.85rem; color:#6c757d;
}

/* Dark mode (via data-theme="dark" sur <html> ou <body>) */
[data-theme="dark"] .immo-title a{ color:#f5f6f7; }
[data-theme="dark"] .immo-title a:hover{ color:#90c2ff; }
[data-theme="dark"] .immo-price text-primary{ color:#fff; }
[data-theme="dark"] .immo-chip{ background:#1c1e22; color:#e5e6e8; border-color:rgba(255,255,255,.06); }
[data-theme="dark"] .immo-meta{ color:#a8adb2; }
[data-theme="dark"] .immo-actions .btn{
  --bs-btn-bg: rgba(20,20,22,.85);
  --bs-btn-hover-bg: rgba(28,28,32,1);
  color:#fff;
  border-color: rgba(255,255,255,.08);
}

  /* ---- Barre par défaut : texte blanc sur fond translucide ---- */
  .navbar-main{
    background: var(--nav-bg);
    transition: background .25s ease, color .25s ease, box-shadow .25s ease;
    -webkit-backdrop-filter: saturate(120%) blur(6px);
    backdrop-filter: saturate(120%) blur(6px);
  }
  .navbar-main .nav-link{
    color: var(--nav-link) !important;
  }
  .navbar-main .nav-link:hover,
  .navbar-main .nav-link:focus{
    opacity:.9;
  }
  /* ---- Dropdown en mode "clair" de la barre translucide ---- */
  .navbar-main .dropdown-menu{
    background: #111;
    border: 0;
  }
  .navbar-main .dropdown-item{ color:#fff; }
  .navbar-main .dropdown-item:hover{ background:#222; }

  /* ---- Offcanvas hérite des couleurs de la barre ---- */
  .offcanvas .offcanvas-body{ color: inherit; background: inherit; }
  .offcanvas .nav-link{ color: #fff; }

  .navbar-stuck .offcanvas .nav-link {    color: var(--si-nav-link-color) !important; }


  /* ---- État sticky (après scroll) : fond clair, texte foncé ---- */
  .navbar-main.is-sticky{
    background: var(--nav-bg-sticky);
    box-shadow: 0 8px 24px rgba(0,0,0,.08);
  }
  .navbar-main.is-sticky .nav-link{
    color: var(--nav-link-sticky) !important;
  }
  .navbar-main.is-sticky .dropdown-menu{
    background:#fff;
    border: 1px solid rgba(0,0,0,.05);
  }
  .navbar-main.is-sticky .dropdown-item{ color:#111; }
  .navbar-main.is-sticky .dropdown-item:hover{ background:#f6f6f6; }

  /* ---- Bouton burger toujours visible ---- */
  .navbar-main .navbar-toggler{
    border-color: transparent;
  }
  /* Icône burger : blanche par défaut, foncée en sticky clair */
  .navbar-main .navbar-toggler-icon{
    filter: invert(1); /* blanc */
  }
  .navbar-main.is-sticky .navbar-toggler-icon{
    filter: none; /* icône sombre par défaut Bootstrap */
  }

  /* ---- Dark mode via attribut data-theme="dark" ---- */
  [data-theme="dark"] .navbar-main{
    background: var(--nav-bg-dark);
  }
  [data-theme="dark"] .navbar-main .nav-link{
    color: var(--nav-link-dark) !important;
  }
  [data-theme="dark"] .navbar-main .dropdown-menu{
    background:#0f0f10;
  }
  [data-theme="dark"] .navbar-main .dropdown-item{ color:#fff; }
  [data-theme="dark"] .navbar-main .dropdown-item:hover{ background:#1a1a1c; }

  /* Dark + sticky : on conserve contraste élevé (texte blanc) */
  [data-theme="dark"] .navbar-main.is-sticky{
    background: var(--nav-bg-sticky-dark);
    box-shadow: 0 8px 24px rgba(0,0,0,.35);
  }
  [data-theme="dark"] .navbar-main.is-sticky .nav-link{
    color: var(--nav-link-sticky-dark) !important;
  }
  [data-theme="dark"] .navbar-main.is-sticky .dropdown-menu{
    background:#131316;
    border: 1px solid rgba(255,255,255,.06);
  }

  /* ---- Fallback si tu utilises le dark system (sans data-theme) ---- */
  @media (prefers-color-scheme: dark){
    :root:not([data-theme]){
      --nav-bg: var(--nav-bg-dark);
      --nav-link: var(--nav-link-dark);
    }
  }

  html[data-bs-theme="dark"] .text-primary  { color: #fff !important; }
  html[data-bs-theme="dark"] .btn-link  { color: #fff !important; }


  .phrase-animation,
  .example-phrase { cursor: pointer; user-select: none; }
  .example-phrase:active { transform: scale(0.98); }

  /* Par défaut: thème clair */
  .logo-dark { display: none; }

  /* Quand le thème dark est actif sur <html data-bs-theme="dark"> */
  html[data-bs-theme="dark"] .logo-light { display: none; }
  html[data-bs-theme="dark"] .logo-dark  { display: inline; }

  .chip-input { min-height: 48px; cursor:text; }
  .chip-input:focus-within { box-shadow: 0 0 0 .2rem rgba(13,110,253,.15); }
  .chip-text { min-width: 140px; outline: none; padding: .25rem 0; }
  .chip { display:inline-flex; align-items:center; gap:.35rem; padding:.25rem .5rem; border-radius:16px;
          background:var(--si-tertiary-bg); font-size:.9rem; margin:.2rem; }
  .chip .chip-x { cursor:pointer; font-size:1rem; line-height:1; opacity:.6; }
  .chip .chip-x:hover { opacity:1; }
  .chip-placeholder { padding: .25rem 0; margin-left:.25rem; }
  .phrase-animation {
    white-space: nowrap;
    border-right: 2px solid currentColor;
    padding-right: 4px;
    animation: blink 0.9s steps(1) infinite;
  }
  @keyframes blink {
    50% { border-color: transparent; }
  }
.page-loading {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-transition: all .4s .2s ease-in-out;
  transition: all .4s .2s ease-in-out;
  background-color: #fff;
  opacity: 0;
  visibility: hidden;
  z-index: 9999;
}
[data-bs-theme="dark"] .page-loading {
  background-color: #0b0f19;
}
.page-loading.active {
  opacity: 1;
  visibility: visible;
}
.page-loading-inner {
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  text-align: center;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
  -webkit-transition: opacity .2s ease-in-out;
  transition: opacity .2s ease-in-out;
  opacity: 0;
}
.page-loading.active > .page-loading-inner {
  opacity: 1;
}
.page-loading-inner > span {
  display: block;
  font-size: 1rem;
  font-weight: normal;
  color: #9397ad;
}
[data-bs-theme="dark"] .page-loading-inner > span {
  color: #fff;
  opacity: .6;
}
.page-spinner {
  display: inline-block;
  width: 2.75rem;
  height: 2.75rem;
  margin-bottom: .75rem;
  vertical-align: text-bottom;
  border: .15em solid #b4b7c9;
  border-right-color: transparent;
  border-radius: 50%;
  -webkit-animation: spinner .75s linear infinite;
  animation: spinner .75s linear infinite;
}
[data-bs-theme="dark"] .page-spinner {
  border-color: rgba(255,255,255,.4);
  border-right-color: transparent;
}
@-webkit-keyframes spinner {
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
@keyframes spinner {
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

.text-dark {
  color: #33354d !important;
}