.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Alerts */
.alert{
  padding:14px 16px;
  border-radius:12px;
  border:1px solid rgba(0,0,0,.08);
  background:#fff;
  display:flex;
  align-items:center;
  gap:12px;
  animation:slideInDown 0.3s ease-out;
}
.alert-error{
  border-color:rgba(239,68,68,.25);
  background:var(--rouge-clair);
  color:#7f1d1d;
}
.alert-success{
  border-color:rgba(27,107,58,.2);
  background:var(--vert-clair);
  color:var(--vert-fonce);
}
.alert-warning{
  border-color:rgba(244,167,0,.25);
  background:var(--or-clair);
  color:#8a5b00;
}

/* Loading Spinner */
.spinner{
  width:18px;
  height:18px;
  border-radius:999px;
  border:2px solid rgba(0,0,0,.15);
  border-top-color:var(--vert-fonce);
  animation:spin 0.8s linear infinite;
}

/* Skeleton Loading */
.skeleton{
  background:linear-gradient(90deg, #f2f4f7, #e5e7eb, #f2f4f7);
  background-size:200% 100%;
  animation:sk 1.2s ease-in-out infinite;
  border-radius:16px;
}

/* Badge Animations */
.badge{animation:fadeInUp 0.4s ease-out}

/* Form Elements Enhancement */
.input, select, textarea{
  transition:all 0.3s ease;
  box-shadow:inset 0 1px 3px rgba(0,0,0,.05);
}
.input:focus, select:focus, textarea:focus{
  box-shadow:inset 0 1px 3px rgba(0,0,0,.05), 0 0 0 4px rgba(27,107,58,.15);
  transform:translateY(-1px);
}

/* Button Enhancements */
.btn{
  position:relative;
  overflow:hidden;
}
.btn::before{
  content:'';
  position:absolute;
  top:50%;
  left:50%;
  width:0;
  height:0;
  border-radius:50%;
  background:rgba(255,255,255,.3);
  transform:translate(-50%, -50%);
  transition:width 0.6s, height 0.6s;
}
.btn:hover::before{
  width:300px;
  height:300px;
}
.btn-primary:hover{
  box-shadow:0 8px 20px rgba(27,107,58,.3);
}
.btn-outline:hover{
  box-shadow:0 4px 12px rgba(27,107,58,.1);
}
.favorite-btn{
  min-height:42px;
  padding:9px 13px;
  border-radius:8px;
  border:1px solid rgba(220,38,38,.18);
  background:#fff;
  color:#991b1b;
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-weight:900;
  cursor:pointer;
  transition:background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s ease;
}
.favorite-btn:hover{
  transform:translateY(-1px);
  background:#fff1f2;
  border-color:rgba(220,38,38,.28);
}
.favorite-btn.active{
  background:#dc2626;
  color:#fff;
  border-color:#dc2626;
}
.favorite-btn:disabled{
  opacity:.7;
  cursor:wait;
  transform:none;
}
.cookie-banner{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  z-index:500;
  padding:18px;
  pointer-events:none;
  opacity:0;
  transform:translateY(18px);
  transition:opacity .22s ease, transform .22s ease;
}
.cookie-banner.show{
  opacity:1;
  transform:translateY(0);
}
.cookie-card{
  width:min(980px,100%);
  margin:0 auto;
  padding:16px;
  border-radius:8px;
  background:#fff;
  border:1px solid rgba(18,53,34,.1);
  box-shadow:0 24px 70px rgba(16,24,40,.22);
  display:grid;
  grid-template-columns:46px minmax(0,1fr) auto;
  gap:14px;
  align-items:center;
  pointer-events:auto;
}
.cookie-icon{
  width:46px;
  height:46px;
  border-radius:8px;
  display:grid;
  place-items:center;
  color:#fff;
  background:linear-gradient(135deg,var(--vert-fonce),var(--vert-profond));
  font-size:1.25rem;
}
.cookie-content strong{
  display:block;
  color:#132019;
  font-weight:950;
}
.cookie-content p{
  margin:4px 0 0;
  color:var(--gris-texte);
  line-height:1.5;
}
.cookie-actions{
  display:flex;
  gap:10px;
  align-items:center;
}
.cookie-actions .btn{
  min-height:42px;
  white-space:nowrap;
}
.cookie-decline{
  background:#fff;
}
.card-favorite-btn{
  position:absolute;
  top:12px;
  right:12px;
  z-index:8;
  width:42px;
  height:42px;
  border:1px solid rgba(17,24,39,.08);
  border-radius:999px;
  background:rgba(255,255,255,.94);
  color:#334155;
  display:grid;
  place-items:center;
  box-shadow:0 10px 24px rgba(15,23,42,.14);
  cursor:pointer;
  transition:background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s ease;
}
.card-favorite-btn:hover{
  transform:translateY(-2px) scale(1.03);
  color:#dc2626;
  border-color:rgba(220,38,38,.22);
}
.card-favorite-btn.active{
  background:#dc2626;
  color:#fff;
  border-color:#dc2626;
}
.card-favorite-btn i{
  font-size:1.08rem;
  line-height:1;
}
.card-favorite-btn.is-popping{
  animation:favoritePop .42s ease;
}

/* Cards with Depth */
.card{
  position:relative;
  overflow:visible;
}
.card::before{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(135deg, rgba(255,255,255,.4), rgba(255,255,255,.1));
  border-radius:var(--radius-card);
  pointer-events:none;
  opacity:0;
  transition:opacity 0.3s ease;
}
.card:hover::before{
  opacity:1;
}

/* Links */
a{
  transition:all 0.2s ease;
}

/* Dropdown/Menu Items */
.nav-links a, .mobile-menu a{
  position:relative;
}
.nav-links a::after, .mobile-menu a::after{
  content:'';
  position:absolute;
  bottom:-2px;
  left:50%;
  width:0;
  height:2px;
  background:var(--vert-fonce);
  transform:translateX(-50%);
  transition:width 0.3s ease;
}
.nav-links a:hover::after, .mobile-menu a:hover::after{
  width:60%;
}
.site-navbar .nav-links a.active{
  background:var(--vert-clair);
  color:var(--vert-fonce);
}
.site-navbar .nav-links a.active::after{
  width:60%;
}
.site-navbar .nav-actions .btn.active{
  box-shadow:0 0 0 3px rgba(27,107,58,.14);
}

/* Animations */
@keyframes spin{
  to{transform:rotate(360deg)}
}

@keyframes sk{
  0%{background-position:0 0}
  100%{background-position:-200% 0}
}

@keyframes slideInDown{
  from{
    opacity:0;
    transform:translateY(-20px);
  }
  to{
    opacity:1;
    transform:translateY(0);
  }
}

@keyframes slideInLeft{
  from{
    opacity:0;
    transform:translateX(-30px);
  }
  to{
    opacity:1;
    transform:translateX(0);
  }
}

@keyframes fadeInUp{
  from{
    opacity:0;
    transform:translateY(20px);
  }
  to{
    opacity:1;
    transform:translateY(0);
  }
}

@keyframes pulse{
  0%, 100%{opacity:1}
  50%{opacity:0.7}
}

@keyframes favoritePop{
  0%{transform:scale(1)}
  38%{transform:scale(1.24)}
  68%{transform:scale(.92)}
  100%{transform:scale(1)}
}

/* Responsive Adjustments */
@media (max-width:767px){
  .alert{font-size:0.9rem;padding:12px}
  .btn{padding:10px 20px;font-size:0.9rem}
}

/* Home page final overrides loaded after main.css */
.property-card,
.category-card,
.location-card,
.guide-card,
.process-step{
  overflow:hidden;
  border-radius:8px;
}

.home-hero .btn,
.cta-panel .btn,
.newsletter .btn,
.footer .btn{
  min-height:44px;
}

.home-hero .btn-glass{
  background:rgba(255,255,255,.14);
  color:#fff;
  border-color:rgba(255,255,255,.28);
}

.home-hero .btn-glass:hover{
  background:rgba(255,255,255,.22);
}

.footer-brand-logo{
  display:inline-flex;
  align-items:center;
  gap:12px;
  color:#fff;
  text-decoration:none;
  font-weight:950;
  font-size:1.08rem;
}
.footer-brand-logo .site-brand-icon{
  width:48px;
  height:48px;
  border-radius:8px;
  display:grid;
  place-items:center;
  background:var(--vert-fonce);
  color:#fff;
  font-size:1.35rem;
}
.footer-brand-logo .site-brand-text{
  line-height:1.05;
}
.footer-brand-logo .site-brand-text b{
  display:block;
  color:var(--or);
}

.listings-hero{
  padding:78px 0 34px;
  background:#f6f8f5;
}
.listings-hero h1{
  max-width:760px;
  margin:10px 0 8px;
  font-size:clamp(2rem,4vw,3.4rem);
}
.listings-hero p{
  max-width:700px;
  color:var(--gris-texte);
  font-size:1.05rem;
}
.listings-layout{
  display:grid;
  grid-template-columns:300px minmax(0,1fr);
  gap:20px;
  align-items:start;
}
.listings-filters{
  padding:16px;
  position:sticky;
  top:88px;
}
.filter-head,
.listings-toolbar,
.pagination{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.filter-head h2,
.listings-toolbar h2{
  margin:0;
}
.filter-block,
.filter-grid{
  margin-top:14px;
}
.filter-block > label,
.filter-grid label{
  display:grid;
  gap:7px;
  font-weight:900;
}
.filter-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.check-list{
  display:grid;
  gap:8px;
  margin-top:8px;
}
.check-list label{
  display:flex;
  gap:8px;
  align-items:center;
  color:#344054;
}
.listings-content{
  min-width:0;
}
.listings-toolbar{
  margin-bottom:16px;
}
.listings-toolbar select{
  width:auto;
  min-width:190px;
}
.listings-grid{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.listing-link{
  display:block;
  height:100%;
  color:inherit;
  text-decoration:none;
}
.pagination{
  justify-content:center;
  margin-top:22px;
}

@media (max-width:980px){
  .listings-layout{
    grid-template-columns:1fr;
  }
  .listings-filters{
    position:relative;
    top:auto;
  }
  .listings-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media (max-width:640px){
  .listings-toolbar{
    align-items:stretch;
    flex-direction:column;
  }
  .listings-toolbar select{
    width:100%;
  }
  .filter-grid,
  .listings-grid{
    grid-template-columns:1fr;
  }
}

/* Dashboards */
.dashboard-body{
  padding-top:0;
  background:#f6f8f5;
}
.dashboard-shell{
  min-height:100vh;
  display:grid;
  grid-template-columns:280px minmax(0,1fr);
  background:#f6f8f5;
}
.dashboard-sidebar{
  position:sticky;
  top:0;
  height:100vh;
  padding:18px;
  background:linear-gradient(180deg,var(--vert-fonce) 0%,var(--vert-profond) 100%);
  color:#fff;
  display:flex;
  flex-direction:column;
  gap:16px;
  overflow:auto;
  z-index:250;
}
.dashboard-toggle,
.dashboard-close,
.dashboard-mobile-bar{
  display:none;
}
.dashboard-admin,
.dashboard-agent,
.dashboard-client{
  background:linear-gradient(180deg,var(--vert-fonce) 0%,var(--vert-profond) 100%);
}
.dashboard-logo{
  display:flex;
  align-items:center;
  gap:10px;
  color:#fff;
  text-decoration:none;
  font-weight:900;
}
.dashboard-logo span{
  width:42px;
  height:42px;
  border-radius:8px;
  display:grid;
  place-items:center;
  background:rgba(255,255,255,.16);
  border:1px solid rgba(255,255,255,.14);
}
.dashboard-brand-card{
  display:grid;
  grid-template-columns:42px 1fr;
  gap:10px 12px;
  align-items:center;
  padding:14px;
  border-radius:8px;
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.16);
  color:#fff;
}
.dashboard-brand-mark{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:8px;
  color:#fff8e1;
  background:rgba(255,255,255,.16);
  border:1px solid rgba(255,255,255,.16);
  font-size:1.25rem;
}
.dashboard-brand-name{
  display:grid;
  gap:1px;
  color:#fff;
  font-size:.92rem;
  font-weight:950;
  line-height:1.05;
}
.dashboard-brand-name b{
  color:var(--or);
  letter-spacing:.08em;
}
.dashboard-user{
  padding:14px;
  border-radius:8px;
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.12);
}
.dashboard-user strong,
.dashboard-user small{
  display:block;
}
.dashboard-user strong{
  display:flex;
  align-items:center;
  gap:8px;
}
.dashboard-user strong i{
  width:28px;
  height:28px;
  border-radius:8px;
  display:inline-grid;
  place-items:center;
  background:rgba(255,255,255,.16);
  color:#fff;
}
.dashboard-user small{
  margin-top:4px;
  color:rgba(255,255,255,.74);
}
.dashboard-menu{
  display:grid;
  gap:8px;
}
.dashboard-menu button,
.dashboard-links a{
  width:100%;
  min-height:44px;
  border:0;
  border-radius:8px;
  padding:10px 12px;
  display:flex;
  align-items:center;
  gap:10px;
  background:transparent;
  color:rgba(255,255,255,.82);
  font:inherit;
  font-weight:800;
  text-align:left;
  cursor:pointer;
  text-decoration:none;
}
.dashboard-menu button.active,
.dashboard-menu button:hover,
.dashboard-links a:hover{
  background:rgba(255,255,255,.16);
  color:#fff;
}
.dashboard-links .logout-link{
  background:#dc2626;
  color:#fff;
}
.dashboard-links .logout-link:hover{
  background:#b91c1c;
  color:#fff;
}
.dashboard-links{
  margin-top:auto;
  display:grid;
  gap:6px;
}
.dashboard-main{
  min-width:0;
  padding:26px;
}
.dashboard-topbar{
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:center;
  margin-bottom:22px;
}
.dashboard-kicker{
  color:var(--vert-fonce);
  font-weight:900;
  text-transform:uppercase;
  font-size:.78rem;
}
.dashboard-topbar h1{
  margin:4px 0 0;
  font-size:clamp(1.45rem,2vw,2.1rem);
}
.dashboard-section{
  display:grid;
  gap:18px;
}
.dashboard-stats{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
}
.dashboard-stat,
.dashboard-card{
  background:#fff;
  border:1px solid rgba(18,53,34,.08);
  border-radius:8px;
  box-shadow:0 12px 32px rgba(18,53,34,.08);
}
.dashboard-stat{
  padding:16px;
}
.dashboard-stat span,
.profile-grid span{
  display:block;
  color:var(--gris-texte);
  font-weight:800;
  font-size:.86rem;
}
.dashboard-stat span{
  display:flex;
  align-items:center;
  gap:8px;
}
.dashboard-stat span i,
.dashboard-card-head h2 i{
  width:28px;
  height:28px;
  border-radius:8px;
  display:inline-grid;
  place-items:center;
  background:var(--vert-clair);
  color:var(--vert-fonce);
  font-size:.86rem;
}
.dashboard-stat strong{
  display:block;
  margin-top:8px;
  font-size:1.8rem;
  color:#111827;
}
.dashboard-stat small{
  color:var(--gris-texte);
}
.dashboard-grid{
  display:grid;
  gap:16px;
}
.dashboard-grid.two{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.dashboard-favorites-grid{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.agent-listing-grid{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.agent-property-card{
  overflow:hidden;
}
.agent-card-actions{
  margin-top:12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.agent-refusal{
  margin:10px 0 0;
  padding:10px 12px;
  border-radius:8px;
  background:#fff1f2;
  color:#991b1b;
  font-weight:800;
  font-size:.88rem;
}
.agent-options{
  display:flex;
  flex-wrap:wrap;
  gap:10px 16px;
  padding:12px;
  border:1px solid #eef1ec;
  border-radius:8px;
  background:#fbfcfa;
}
.admin-annonce-filters{
  display:grid;
  gap:12px;
  margin-bottom:16px;
  padding:12px;
  border:1px solid #e7eee7;
  border-radius:8px;
  background:#fbfcfa;
}
.admin-filter-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.admin-filter-tabs button{
  min-height:38px;
  border:1px solid #dfe7df;
  border-radius:8px;
  padding:8px 12px;
  background:#fff;
  color:#173d2a;
  font:inherit;
  font-weight:900;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:7px;
}
.admin-filter-tabs button.active,
.admin-filter-tabs button:hover{
  background:var(--vert-fonce);
  border-color:var(--vert-fonce);
  color:#fff;
}
.admin-advanced-filters{
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr 1fr;
  gap:10px;
}
.admin-advanced-filters.two{
  grid-template-columns:1.4fr minmax(180px,.6fr);
}
.admin-advanced-filters label{
  display:grid;
  gap:6px;
  color:#334155;
  font-weight:900;
}
.admin-advanced-filters label span{
  display:flex;
  align-items:center;
  gap:7px;
  font-size:.85rem;
}
.admin-demand-row{
  align-items:flex-start;
}
.admin-listing-cell{
  min-width:260px;
  display:flex;
  align-items:center;
  gap:12px;
}
.admin-listing-cell img{
  width:74px;
  height:58px;
  flex:0 0 auto;
  border-radius:8px;
  object-fit:cover;
  border:1px solid #e5e7eb;
}
.admin-listing-cell small{
  display:flex;
  align-items:center;
  gap:6px;
}
.admin-user-cell{
  min-width:220px;
  display:flex;
  align-items:center;
  gap:10px;
}
.admin-user-avatar{
  width:42px;
  height:42px;
  flex:0 0 auto;
  border-radius:999px;
  display:grid;
  place-items:center;
  overflow:hidden;
  background:#e7f5eb;
  color:var(--vert-fonce);
  border:2px solid #fff;
  box-shadow:0 8px 18px rgba(18,53,34,.12);
}
.admin-user-avatar img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.table-cell-icon{
  color:var(--vert-fonce);
  margin-right:6px;
}
.icon-actions{
  flex-wrap:nowrap;
}
.icon-action{
  width:38px;
  height:38px;
  border:1px solid #dfe7df;
  border-radius:8px;
  display:inline-grid;
  place-items:center;
  background:#fff;
  color:#173d2a;
  cursor:pointer;
  transition:background-color .2s ease, color .2s ease, transform .2s ease, border-color .2s ease;
}
.icon-action:hover{
  transform:translateY(-1px);
}
.icon-action.success{
  background:#e7f5eb;
  border-color:#b9dfc6;
  color:#166534;
}
.icon-action.warning{
  background:#fff7df;
  border-color:#f8dc8a;
  color:#8a5b00;
}
.icon-action.danger{
  background:#fff1f2;
  border-color:#fecdd3;
  color:#b91c1c;
}
.icon-action.success:hover{background:#166534;color:#fff}
.icon-action.warning:hover{background:#b7791f;color:#fff}
.icon-action.danger:hover{background:#b91c1c;color:#fff}
.agent-upload-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.agent-upload-box{
  padding:14px;
  border:1px dashed #cfd8cf;
  border-radius:8px;
  background:#fbfcfa;
}
.agent-upload-box small{
  color:var(--gris-texte);
  font-weight:700;
}
.agent-upload-box input[type="file"]{
  padding:10px;
  cursor:pointer;
}
.agent-photo-preview{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px;
}
.agent-photo-preview img{
  width:100%;
  aspect-ratio:1.3;
  object-fit:cover;
  border-radius:8px;
  border:1px solid #e5e7eb;
}
.agent-location-card{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:14px;
  padding:14px;
  border:1px solid #e5eee6;
  border-radius:8px;
  background:#f8fbf8;
}
.agent-location-card p{
  margin:6px 0 0;
  color:var(--gris-texte);
  font-weight:700;
}
.agent-profile-panel{
  margin-bottom:16px;
}
.agent-profile-photo-card{
  display:flex;
  align-items:center;
  gap:16px;
  padding:14px;
  border:1px solid #e5eee6;
  border-radius:8px;
  background:#fbfcfa;
}
.agent-profile-photo-card img{
  width:96px;
  height:96px;
  flex:0 0 auto;
  border-radius:8px;
  object-fit:cover;
  border:3px solid #fff;
  box-shadow:0 12px 28px rgba(16,24,40,.14);
}
.agent-profile-photo-card strong,
.agent-profile-photo-card span{
  display:block;
}
.agent-profile-photo-card strong{
  color:#132019;
  font-size:1.05rem;
  font-weight:950;
}
.agent-profile-photo-card span{
  margin:3px 0 12px;
  color:var(--gris-texte);
  font-weight:800;
}
.photo-editor-modal{
  width:min(520px,100%);
  padding:18px;
  border-radius:8px;
  background:#fff;
  box-shadow:0 30px 80px rgba(16,24,40,.32);
}
.photo-crop-stage{
  display:grid;
  place-items:center;
  padding:14px;
  border-radius:8px;
  background:#f3f6f2;
  border:1px solid #e5eee6;
}
.photo-crop-stage canvas{
  width:min(320px,100%);
  aspect-ratio:1;
  border-radius:999px;
  border:4px solid #fff;
  box-shadow:0 14px 36px rgba(16,24,40,.18);
}
.photo-zoom-control{
  display:grid;
  gap:8px;
  margin-top:14px;
  font-weight:900;
}
.photo-zoom-control input{
  width:100%;
  accent-color:var(--vert-fonce);
}
.error-modal{
  width:min(520px,100%);
  padding:22px;
  border-radius:8px;
  background:#fff;
  box-shadow:0 30px 80px rgba(16,24,40,.32);
  display:grid;
  gap:14px;
}
.error-modal-icon{
  width:52px;
  height:52px;
  border-radius:8px;
  display:grid;
  place-items:center;
  background:#fee2e2;
  color:#b91c1c;
  font-size:1.4rem;
}
.error-modal h2{
  margin:0;
  color:#111827;
  font-size:1.35rem;
}
.error-modal p{
  margin:4px 0 0;
  color:var(--gris-texte);
}
.error-modal ul{
  margin:0;
  padding:12px 12px 12px 30px;
  border-radius:8px;
  background:#fff1f2;
  color:#991b1b;
  font-weight:800;
}
.error-modal li + li{
  margin-top:6px;
}
.feedback-modal{
  width:min(430px,100%);
  padding:28px;
  border-radius:8px;
  background:#fff;
  box-shadow:0 34px 90px rgba(16,24,40,.36);
  display:grid;
  gap:16px;
  justify-items:center;
  text-align:center;
  animation:modalPop .22s ease-out;
}
.feedback-modal-icon{
  width:72px;
  height:72px;
  border-radius:999px;
  display:grid;
  place-items:center;
  font-size:2rem;
  box-shadow:0 16px 36px rgba(22,101,52,.18);
}
.feedback-modal.success .feedback-modal-icon{
  background:linear-gradient(135deg,#16a34a,#0f6b3a);
  color:#fff;
}
.feedback-modal.error .feedback-modal-icon{
  background:linear-gradient(135deg,#ef4444,#b91c1c);
  color:#fff;
}
.feedback-modal h2{
  margin:0;
  color:#111827;
  font-family:"Playfair Display",Georgia,"Times New Roman",serif;
  font-size:1.7rem;
}
.feedback-modal p{
  margin:6px auto 0;
  max-width:330px;
  color:var(--gris-texte);
  font-weight:700;
  line-height:1.55;
}
.feedback-modal .btn{
  min-width:130px;
  justify-content:center;
}
.feedback-modal.success .btn{
  background:#0f6b3a;
  color:#fff;
}
@keyframes modalPop{
  from{opacity:0;transform:translateY(12px) scale(.96)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
.geo-modal-backdrop{
  position:fixed;
  inset:0;
  z-index:600;
  padding:22px;
  display:grid;
  place-items:center;
  background:rgba(16,24,40,.58);
  backdrop-filter:blur(3px);
}
.geo-modal{
  width:min(980px,100%);
  max-height:92vh;
  overflow:auto;
  padding:18px;
  border-radius:8px;
  background:#fff;
  box-shadow:0 30px 80px rgba(16,24,40,.32);
}
.geo-close{
  position:static;
  display:grid;
  color:#fff;
  background:#0f5b33;
  border-color:#0f5b33;
}
.agent-geo-map{
  height:min(58vh,520px);
  min-height:360px;
  border-radius:8px;
  overflow:hidden;
  border:1px solid #dfe7df;
  background:#eef5ef;
}
.geo-actions{
  margin-top:14px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}
.dashboard-card{
  padding:16px;
}
.dashboard-card-head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
  flex-wrap:wrap;
  margin-bottom:14px;
}
.dashboard-card-head h2{
  margin:0;
  font-size:1.1rem;
  display:flex;
  align-items:center;
  gap:8px;
}
.dashboard-row{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
  padding:12px 0;
  border-top:1px solid #eef1ec;
}
.dashboard-row b,
.dashboard-row small,
.dashboard-table small{
  display:block;
}
.dashboard-row small,
.dashboard-table small{
  color:var(--gris-texte);
  margin-top:4px;
}
.dashboard-empty{
  padding:18px;
  border:1px dashed #d9dfd5;
  border-radius:8px;
  color:var(--gris-texte);
  background:#fbfcfa;
}
.table-wrap{
  width:100%;
  overflow:auto;
}
.dashboard-table{
  width:100%;
  min-width:760px;
  border-collapse:collapse;
}
.dashboard-table th,
.dashboard-table td{
  padding:12px;
  border-top:1px solid #eef1ec;
  text-align:left;
  vertical-align:middle;
}
.dashboard-table th{
  color:var(--gris-texte);
  font-size:.84rem;
  text-transform:uppercase;
}
.table-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.status-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:28px;
  padding:4px 10px;
  border-radius:999px;
  font-weight:900;
  font-size:.82rem;
  line-height:1.2;
  background:#eef1ec;
  color:#334155;
}
.status-pill.actif{background:#e7f5eb;color:#166534}
.status-pill.en_attente{background:#fff7df;color:#8a5b00}
.status-pill.suspendu{background:#fee2e2;color:#991b1b}
.agent-review-pill{
  max-width:220px;
  min-height:40px;
  padding:8px 14px;
  justify-content:center;
  text-align:left;
}
.agent-review-pill i{
  flex:0 0 auto;
}
.dashboard-form{
  display:grid;
  gap:14px;
}
.dashboard-form label{
  display:grid;
  gap:6px;
  font-weight:800;
}
.form-grid,
.profile-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.check-line,
.check-group label{
  display:flex !important;
  align-items:center;
  gap:8px;
}
.check-group{
  display:flex;
  flex-wrap:wrap;
  gap:10px 16px;
  align-items:center;
}
.check-group > span{
  width:100%;
  font-weight:900;
}
.client-request-form{
  margin-top:18px;
  gap:20px;
}
.form-required-note{
  margin:10px 0 0;
  font-weight:800;
  color:var(--gris-texte);
  font-size:.92rem;
}
.form-required-note span,
.field-title em,
.check-group > span em{
  color:#dc2626;
  font-style:normal;
  font-weight:950;
}
.client-request-form .form-grid{
  gap:18px 20px;
}
.client-request-form label{
  gap:9px;
}
.field-title{
  display:flex;
  align-items:center;
  gap:8px;
  color:#111827;
}
.field-title i,
.check-group > span i{
  width:28px;
  height:28px;
  border-radius:8px;
  display:inline-grid;
  place-items:center;
  background:var(--vert-clair);
  color:var(--vert-fonce);
  font-size:.88rem;
}
.client-request-form select,
.client-request-form .input,
.client-request-form textarea{
  margin-top:2px;
}
.select-with-icon{
  position:relative;
  display:block;
  margin-top:2px;
  border-radius:8px;
  background:#fbfcfa;
}
.select-with-icon > i{
  position:absolute;
  left:12px;
  top:50%;
  transform:translateY(-50%);
  z-index:3;
  width:28px;
  height:28px;
  border-radius:8px;
  display:grid;
  place-items:center;
  background:var(--vert-clair);
  color:var(--vert-fonce);
  pointer-events:none;
}
.select-with-icon select{
  position:relative;
  z-index:2;
  width:100%;
  margin-top:0;
  padding-left:50px;
  background:transparent;
  font-family:"DM Sans",system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  font-size:1rem;
  font-weight:700;
  text-transform:none;
}
.select-with-icon select option{
  font-family:"DM Sans",system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  font-size:1rem;
  font-weight:500;
  text-transform:none;
}
.select-kind-terrain > i{color:#0f766e;background:#ccfbf1}
.select-kind-maison > i{color:#166534;background:#dcfce7}
.select-kind-appartement > i{color:#1d4ed8;background:#dbeafe}
.select-kind-villa > i{color:#9b6810;background:#fff7df}
.select-kind-local > i{color:#7c3aed;background:#ede9fe}
.select-transaction-achat > i{color:#166534;background:#dcfce7}
.select-transaction-location > i{color:#9b6810;background:#fff7df}
.select-city > i{color:#be123c;background:#ffe4e6}
.select-urgency-1mois > i{color:#b91c1c;background:#fee2e2}
.select-urgency-3mois > i{color:#1d4ed8;background:#dbeafe}
.select-urgency-flexible > i{color:#166534;background:#dcfce7}
.client-request-form .check-group{
  padding:14px;
  border:1px solid #eef1ec;
  border-radius:8px;
  background:#fbfcfa;
  gap:12px 18px;
}
.client-request-form .form-actions{
  display:flex;
  justify-content:flex-start;
}
.client-request-form .form-actions .btn{
  width:auto;
  min-width:150px;
  justify-content:center;
}
.message-card{
  padding:14px 0;
  border-top:1px solid #eef1ec;
}
.message-card div{
  display:flex;
  justify-content:space-between;
  gap:12px;
}
.message-card small{
  color:var(--gris-texte);
}
.message-card p{
  margin:8px 0 0;
  white-space:pre-wrap;
}
.request-summary p{
  margin:8px 0;
}
.profile-grid div{
  padding:14px;
  border:1px solid #eef1ec;
  border-radius:8px;
  background:#fbfcfa;
}
.profile-grid-icons span{
  display:flex;
  align-items:center;
  gap:8px;
}
.profile-grid-icons span i{
  width:28px;
  height:28px;
  border-radius:8px;
  display:inline-grid;
  place-items:center;
  background:var(--vert-clair);
  color:var(--vert-fonce);
}
.profile-grid b{
  display:block;
  margin-top:6px;
}
.profile-form{
  margin-top:18px;
  padding-top:18px;
  border-top:1px solid #eef1ec;
}
.profile-form .form-actions{
  display:flex;
  justify-content:flex-start;
}
.dashboard-loading{
  position:fixed;
  right:18px;
  bottom:18px;
  background:#fff;
  border:1px solid #eef1ec;
  border-radius:8px;
  padding:10px 14px;
  box-shadow:0 12px 28px rgba(0,0,0,.12);
}
.success-modal{
  position:fixed;
  inset:0;
  z-index:1000;
  display:grid;
  place-items:center;
  padding:18px;
  background:rgba(17,24,39,.55);
}
.success-modal-panel{
  width:min(420px,100%);
  padding:28px;
  border-radius:8px;
  background:#fff;
  text-align:center;
  box-shadow:0 24px 70px rgba(0,0,0,.24);
}
.success-icon{
  width:68px;
  height:68px;
  margin:0 auto 14px;
  border-radius:999px;
  display:grid;
  place-items:center;
  background:var(--vert-clair);
  color:var(--vert-fonce);
  font-size:1.7rem;
}
.success-modal-panel h2{
  margin:0 0 8px;
}
.success-modal-panel p{
  margin:0;
  color:var(--gris-texte);
}
.success-loader{
  height:6px;
  margin-top:18px;
  border-radius:999px;
  background:#eef1ec;
  overflow:hidden;
}
.success-loader span{
  display:block;
  height:100%;
  width:45%;
  background:var(--vert-fonce);
  border-radius:999px;
  animation:successLoad 1.2s ease-in-out infinite;
}
@keyframes successLoad{
  0%{transform:translateX(-120%)}
  100%{transform:translateX(240%)}
}

@media (max-width:980px){
  .cookie-banner{
    padding:12px;
  }
  .cookie-card{
    grid-template-columns:42px minmax(0,1fr);
    align-items:start;
  }
  .cookie-icon{
    width:42px;
    height:42px;
  }
  .cookie-actions{
    grid-column:1 / -1;
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .cookie-actions .btn{
    width:100%;
  }

  .dashboard-shell{
    display:block;
  }
  .dashboard-mobile-bar{
    position:fixed;
    top:0;
    left:0;
    right:0;
    z-index:230;
    min-height:72px;
    padding:12px 14px;
    display:grid;
    grid-template-columns:46px minmax(0,1fr);
    gap:12px;
    align-items:center;
    background:rgba(246,248,245,.96);
    border-bottom:1px solid rgba(18,53,34,.08);
    backdrop-filter:saturate(180%) blur(10px);
  }
  .dashboard-sidebar{
    position:fixed;
    top:0;
    left:0;
    width:min(310px,86vw);
    height:100vh;
    border-radius:0;
    transform:translateX(-105%);
    transition:transform .25s ease;
    box-shadow:24px 0 50px rgba(16,24,40,.24);
  }
  .dashboard-sidebar.open{
    transform:translateX(0);
  }
  .dashboard-toggle{
    width:46px;
    height:46px;
    border:0;
    border-radius:8px;
    display:grid;
    place-items:center;
    background:linear-gradient(135deg,var(--vert-fonce),var(--vert-profond));
    color:#fff;
    box-shadow:0 14px 32px rgba(11,59,36,.24);
    font-size:1.1rem;
    cursor:pointer;
  }
  .dashboard-mobile-user{
    min-width:0;
    display:flex;
    align-items:center;
    gap:10px;
    padding:8px 10px;
    border-radius:8px;
    background:#fff;
    border:1px solid rgba(18,53,34,.08);
    box-shadow:0 10px 24px rgba(18,53,34,.08);
  }
  .dashboard-mobile-user > span{
    width:38px;
    height:38px;
    flex:0 0 auto;
    border-radius:8px;
    display:grid;
    place-items:center;
    color:#fff;
    background:linear-gradient(135deg,var(--vert-fonce),var(--vert-profond));
  }
  .dashboard-mobile-user div{
    min-width:0;
  }
  .dashboard-mobile-user strong,
  .dashboard-mobile-user small{
    display:block;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .dashboard-mobile-user strong{
    color:#132019;
    font-size:.94rem;
    font-weight:950;
  }
  .dashboard-mobile-user small{
    margin-top:2px;
    color:var(--gris-texte);
    font-size:.78rem;
    font-weight:800;
  }
  .dashboard-close{
    position:absolute;
    top:14px;
    right:14px;
    width:38px;
    height:38px;
    border:1px solid rgba(255,255,255,.16);
    border-radius:8px;
    display:grid;
    place-items:center;
    background:rgba(255,255,255,.12);
    color:#fff;
    cursor:pointer;
  }
  .dashboard-backdrop{
    position:fixed;
    inset:0;
    z-index:240;
    background:rgba(16,24,40,.48);
    backdrop-filter:blur(2px);
  }
  .dashboard-menu{
    grid-template-columns:1fr;
  }
  .dashboard-links{
    grid-template-columns:1fr;
  }
  .dashboard-stats,
  .dashboard-favorites-grid,
  .agent-listing-grid,
  .dashboard-grid.two{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .dashboard-main{
    padding:94px 18px 18px;
  }
}

@media (max-width:640px){
  .dashboard-mobile-bar{
    grid-template-columns:44px minmax(0,1fr);
    gap:8px;
    padding:10px;
  }

  .dashboard-mobile-user{
    padding:7px 8px;
    gap:8px;
  }

  .dashboard-mobile-user > span{
    width:34px;
    height:34px;
  }

  .dashboard-mobile-user strong{
    font-size:.86rem;
  }

  .dashboard-mobile-user small{
    font-size:.72rem;
  }

  .dashboard-topbar{
    align-items:stretch;
    flex-direction:column;
  }
  .admin-advanced-filters{
    grid-template-columns:1fr;
  }
  .admin-annonces-wrap{
    overflow:visible;
  }
  .admin-annonces-table,
  .admin-responsive-table{
    min-width:0;
    border-collapse:separate;
    border-spacing:0 12px;
  }
  .admin-annonces-table thead,
  .admin-responsive-table thead{
    display:none;
  }
  .admin-annonces-table,
  .admin-annonces-table tbody,
  .admin-annonces-table tr,
  .admin-annonces-table td,
  .admin-responsive-table,
  .admin-responsive-table tbody,
  .admin-responsive-table tr,
  .admin-responsive-table td{
    display:block;
    width:100%;
  }
  .admin-annonces-table tr,
  .admin-responsive-table tr{
    padding:12px;
    border:1px solid #e7eee7;
    border-radius:8px;
    background:#fff;
    box-shadow:0 10px 24px rgba(18,53,34,.07);
  }
  .admin-annonces-table td,
  .admin-responsive-table td{
    min-height:42px;
    padding:10px 0;
    border-top:0;
    display:flex;
    justify-content:space-between;
    gap:14px;
    align-items:center;
  }
  .admin-annonces-table td::before,
  .admin-responsive-table td::before{
    content:attr(data-label);
    color:var(--gris-texte);
    font-size:.78rem;
    font-weight:950;
    text-transform:uppercase;
  }
  .admin-annonces-table td[data-label="Annonce"]{
    display:block;
  }
  .admin-annonces-table td[data-label="Annonce"]::before{
    display:block;
    margin-bottom:8px;
  }
  .admin-listing-cell{
    min-width:0;
  }
  .admin-listing-cell img{
    width:86px;
    height:68px;
  }
  .admin-annonces-table .icon-actions{
    justify-content:space-between;
  }
  .admin-annonces-table .icon-actions::before{
    align-self:center;
  }
  .dashboard-stats,
  .dashboard-favorites-grid,
  .agent-listing-grid,
  .agent-upload-grid,
  .dashboard-grid.two,
  .form-grid,
  .profile-grid{
    grid-template-columns:1fr;
  }
  .agent-photo-preview{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .agent-profile-photo-card{
    align-items:flex-start;
    flex-direction:column;
  }
  .agent-location-card,
  .geo-actions{
    align-items:stretch;
    flex-direction:column;
  }
  .agent-geo-map{
    min-height:320px;
  }
  .dashboard-menu,
  .dashboard-links{
    grid-template-columns:1fr;
  }
.dashboard-card{
    padding:14px;
  }
}

.auth-divider{
  display:flex;
  align-items:center;
  gap:12px;
  margin:20px 0;
  color:#888;
  font-size:13px;
}
.auth-divider::before,
.auth-divider::after{
  content:'';
  flex:1;
  height:1px;
  background:#e0e0e0;
}
.btn-google{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  width:100%;
  padding:11px 16px;
  border:1px solid #dadce0;
  border-radius:10px;
  background:#fff;
  color:#3c4043;
  font-size:15px;
  font-weight:600;
  font-family:inherit;
  cursor:pointer;
  text-decoration:none;
  transition:background 0.2s,box-shadow 0.2s;
}
.btn-google:hover{
  background:#f8f9fa;
  box-shadow:0 1px 3px rgba(0,0,0,.12);
  color:#202124;
}
.btn-google:active{
  background:#e8eaed;
}


