<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="csrf-token" content="CoqKKRbg2iuuLPNHYSdquJPPv6MAUi8lO7hFYoyS">
<title>Agence immobilière à Dakar depuis 1956 — RIM Sénégal</title>
<meta name="description" content="RIM Sénégal, votre agence immobilière de référence à Dakar depuis 1956. Vente, location et gestion de biens immobiliers au Sénégal. Découvrez nos annonces et promotions."/>
<meta name="keywords" content="agence immobilière dakar, immobilier sénégal, louer appartement dakar, acheter villa dakar, gestion locative sénégal. Dakar Plateau, Almadies, Ngor, Mermoz, Diamniadio, Saly">
<link rel="canonical" href="https://www.rimsenegal.com">
<!-- Open Graph -->
<meta property="og:type" content="website">
<meta property="og:title" content="Agence immobilière à Dakar depuis 1956 — RIM Sénégal">
<meta property="og:description" content="RIM Sénégal, votre agence immobilière de référence à Dakar depuis 1956. Vente, location et gestion de biens immobiliers au Sénégal. Découvrez nos annonces et promotions.">
<meta property="og:url" content="https://www.rimsenegal.com">
<meta property="og:site_name" content="RÉGIE IMMOBILIÈRE MUGNIER">
<meta property="og:locale" content="fr_SN">
<meta property="og:image" content="https://www.rimsenegal.com/uploads/91/logo.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Agence immobilière à Dakar depuis 1956 — RIM Sénégal">
<meta name="twitter:description" content="RIM Sénégal, votre agence immobilière de référence à Dakar depuis 1956. Vente, location et gestion de biens immobiliers au Sénégal. Découvrez nos annonces et promotions.">
<meta name="twitter:image" content="https://www.rimsenegal.com/uploads/91/logo.png">
<!-- JSON-LD : Organisation -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "RealEstateAgent",
"name": "RÉGIE IMMOBILIÈRE MUGNIER",
"url": "https://www.rimsenegal.com",
"logo": "https://www.rimsenegal.com/uploads/91/logo.png",
"description": "RIM Sénégal, votre partenaire immobilier de confiance à Dakar. Vente, location, gestion locative et promotions neuves. Plus de 1500 biens vérifiés.",
"address": {
"@type": "PostalAddress",
"streetAddress": "9, rue Vincens Dakar – Sénégal",
"addressLocality": "Dakar",
"addressCountry": "SN"
},
"telephone": "+221783724807 / +221338234374",
"email": "contact@rimsenegal.com",
"sameAs": [
"https://www.facebook.com/rim.immo/?locale=fr_FR","https://www.instagram.com/rim.immo/","https://www.linkedin.com/in/rimimmo/"
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "RIM Sénégal",
"url": "https://www.rimsenegal.com",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.rimsenegal.com/nos-biens?keywords={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
</script>
<!-- Google Fonts: Cormorant Garamond + Outfit -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400;1,600&family=Outfit:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<!-- Font Awesome Local -->
<!-- RIM Theme CSS -->
<link rel="stylesheet" href="/css/rim-theme.css">
<!-- Editor Images CSS -->
<link rel="stylesheet" href="/css/editor-images.css">
<link rel="icon" type="image/x-icon" href="https://www.rimsenegal.com/uploads/92/favicon.ico">
<script type="module" src="/build/assets/app-dced29f7.js"></script>
<link rel="stylesheet" href="/build/assets/app-11a588d5.css">
<link rel="stylesheet" href="/build/assets/app-630fa324.css">
<style>
/* ══════════════════════════════════════════════════════════════
HERO VIDÉO CINÉMATIQUE — RIM Sénégal
Design : plein écran · fond 3D vidéo · textes animés
══════════════════════════════════════════════════════════════ */
/* ── Base hero ──────────────────────────────────────────────── */
.hero {
min-height: 100vh !important;
background: #00080f !important;
padding-top: 70px;
position: relative !important;
overflow: hidden;
display: flex !important;
flex-direction: column;
align-items: stretch;
}
.hero::before, .hero::after { display: none !important; }
.hero-grid { display: none; }
/* ── Fond vidéo ─────────────────────────────────────────────── */
.hvid-wrap {
position: absolute; inset: 0; z-index: 0; overflow: hidden;
}
.hvid {
position: absolute;
top: 50%; left: 50%;
min-width: 100%; min-height: 100%;
width: auto; height: auto;
transform: translate(-50%, -50%) scale(1.04);
object-fit: cover;
filter: saturate(1.15) brightness(0.7);
will-change: transform;
}
/* Overlay : gauche sombre (texte lisible) + bas sombre (search dock) + lueur chaude subtile à droite */
.hvid-overlay {
position: absolute; inset: 0;
background:
linear-gradient(115deg, rgba(0,6,16,.95) 0%, rgba(0,6,16,.62) 38%, rgba(0,6,16,.22) 66%, rgba(0,6,16,.08) 100%),
linear-gradient(to top, rgba(0,6,16,1) 0%, rgba(0,6,16,.78) 16%, rgba(0,6,16,.08) 52%),
radial-gradient(ellipse 110% 70% at 82% 28%, rgba(196,148,42,.09) 0%, transparent 58%);
}
/* ── Lignes de grille dorées (déco) ─────────────────────────── */
.hero-vlines {
position: absolute; inset: 0; z-index: 1; pointer-events: none;
display: flex; justify-content: space-evenly;
opacity: 0; animation: fadeIn 1.6s ease 2.4s both;
}
.hero-vlines span {
display: block; width: 1px; height: 100%;
background: linear-gradient(to bottom,
transparent 0%,
rgba(196,148,42,.07) 25%,
rgba(196,148,42,.1) 50%,
rgba(196,148,42,.07) 75%,
transparent 100%);
}
/* ── Ligne de scan animée ───────────────────────────────────── */
.hero-scan {
position: absolute; left: 0; right: 0; height: 1px; z-index: 2;
pointer-events: none;
background: linear-gradient(90deg,
transparent 0%,
rgba(196,148,42,.28) 20%,
rgba(196,148,42,.55) 50%,
rgba(196,148,42,.28) 80%,
transparent 100%);
animation: scanPass 9s cubic-bezier(.4,0,.6,1) 1.8s infinite;
opacity: 0;
}
@keyframes scanPass {
0% { top: 12%; opacity: 0; }
4% { opacity: 1; }
88% { opacity: .7; }
100% { top: 88%; opacity: 0; }
}
/* ── Crochets décoratifs de coin ────────────────────────────── */
.hero-brkt {
position: absolute; z-index: 3; pointer-events: none;
width: 44px; height: 44px;
opacity: 0;
}
.hero-brkt--tl { top: 86px; left: 22px; animation: brktIn .7s cubic-bezier(.22,1,.36,1) 1.7s both; }
.hero-brkt--br { bottom: 92px; right: 22px; animation: brktIn .7s cubic-bezier(.22,1,.36,1) 1.9s both; }
.hero-brkt::before, .hero-brkt::after {
content: ''; position: absolute; background: rgba(196,148,42,.45);
}
.hero-brkt--tl::before { top:0; left:0; width:20px; height:1px; }
.hero-brkt--tl::after { top:0; left:0; width:1px; height:20px; }
.hero-brkt--br::before { bottom:0; right:0; width:20px; height:1px; }
.hero-brkt--br::after { bottom:0; right:0; width:1px; height:20px; }
@keyframes brktIn { from{opacity:0;transform:scale(.65)} to{opacity:1;transform:scale(1)} }
/* ── Label vertical décoratif ───────────────────────────────── */
.hero-vert-label {
position: absolute; left: 18px; top: 50%;
transform: translateY(-50%) rotate(-90deg);
z-index: 4; font-family: 'Outfit', sans-serif;
font-size: 8.5px; font-weight: 700; letter-spacing: .28em;
color: rgba(255,255,255,.16); text-transform: uppercase;
white-space: nowrap; pointer-events: none;
animation: vLabelIn 1.2s ease 2.0s both;
}
@keyframes vLabelIn { from{opacity:0;transform:translateY(-50%) rotate(-90deg) translateX(22px)} to{opacity:1;transform:translateY(-50%) rotate(-90deg) translateX(0)} }
/* ── Indicateur vidéo (haut droit) ─────────────────────────── */
.hero-vid-ind {
position: absolute; top: 106px; right: 34px; z-index: 5;
display: flex; flex-direction: column; align-items: center; gap: 10px;
animation: fadeIn 1s ease 2.2s both;
}
.hvi-btn {
width: 40px; height: 40px; border-radius: 50%;
border: 1px solid rgba(196,148,42,.38); background: rgba(0,0,0,.28);
backdrop-filter: blur(8px);
display: flex; align-items: center; justify-content: center;
cursor: pointer; transition: all .28s; padding: 0;
}
.hvi-btn:hover { border-color: rgba(196,148,42,.75); background: rgba(196,148,42,.12); transform: scale(1.08); }
.hvi-btn svg { width: 14px; height: 14px; color: rgba(196,148,42,.82); }
.hvi-label {
font-family: 'Outfit', sans-serif; font-size: 7.5px; font-weight: 700;
letter-spacing: .22em; color: rgba(255,255,255,.22); text-transform: uppercase;
writing-mode: vertical-rl; transform: rotate(180deg);
}
/* ── Contenu principal ──────────────────────────────────────── */
.hero-container {
position: relative; z-index: 4;
/* !important : protège du reset Tailwind/forms qui peut affecter flex sur certains builds */
flex: 1 !important;
display: flex !important;
align-items: center !important;
padding-top: 28px;
padding-bottom: 100px;
}
.hero-content { max-width: 640px; width: 100%; }
/* Badge d'expertise */
.hero-badge {
display: inline-flex; align-items: center; gap: 10px;
font-family: 'Outfit', sans-serif; font-size: 10.5px; font-weight: 800;
color: var(--yellow); letter-spacing: .18em; text-transform: uppercase;
margin-bottom: 30px;
animation: badgeIn 1s cubic-bezier(.16,1,.3,1) .15s both;
}
.hbadge-dot {
width: 6px; height: 6px; border-radius: 50%;
background: var(--yellow); display: block; flex-shrink: 0;
animation: dotPulse 2.4s ease-in-out infinite;
}
.hbadge-dash {
display: block; height: 1px; background: rgba(196,148,42,.55);
animation: dashExpand .9s cubic-bezier(.22,1,.36,1) .7s both;
width: 0;
}
@keyframes dashExpand { from{width:0} to{width:30px} }
@keyframes dotPulse { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.3;transform:scale(.6)} }
@keyframes badgeIn { from{opacity:0;transform:translateX(-28px)} to{opacity:1;transform:translateX(0)} }
/* ── Titre — lignes masquées + blur cinématique ─────────────── */
.hero-title {
font-family: 'Cormorant Garamond', serif;
font-size: clamp(46px, 5.8vw, 80px);
font-weight: 700; color: #fff;
line-height: 1.06; letter-spacing: -.025em;
margin-bottom: 26px;
}
.ht-line { display: block; overflow: hidden; }
.ht-inner { display: block; }
/* Chaque ligne surgit du bas avec un dé-blur progressif */
.hl-1 { animation: lineRise 1.15s cubic-bezier(.16,1,.3,1) .38s both; }
.hl-2 { animation: lineRise 1.15s cubic-bezier(.16,1,.3,1) .56s both; }
.hl-3 { animation: lineRise 1.15s cubic-bezier(.16,1,.3,1) .74s both; }
@keyframes lineRise {
from { transform: translateY(115%); filter: blur(10px); opacity: .3; }
60% { filter: blur(1px); opacity: .85; }
to { transform: translateY(0); filter: blur(0); opacity: 1; }
}
.hero-title em { color: var(--yellow); font-style: italic; }
/* 3ème ligne — taille réduite, couleur tamisée */
.ht-sub { font-size: .52em; font-weight: 400; color: rgba(255,255,255,.42); letter-spacing: .008em; }
/* ── Sous-titre ─────────────────────────────────────────────── */
.hero-desc {
font-size: 14.5px; color: rgba(255,255,255,.6);
line-height: 1.82; font-weight: 300; max-width: 480px;
margin-bottom: 38px;
animation: descIn 1.2s cubic-bezier(.16,1,.3,1) .92s both;
}
@keyframes descIn {
from { opacity:0; transform:translateY(20px); filter:blur(5px); }
to { opacity:1; transform:translateY(0); filter:blur(0); }
}
/* ── Stats (KPIs) ───────────────────────────────────────────── */
.hero-kpis {
display: flex; align-items: center;
margin-bottom: 42px;
animation: fadeUp .9s cubic-bezier(.16,1,.3,1) 1.1s both;
}
.hkpi { padding-right: 32px; }
.hkpi-n {
font-family: 'Cormorant Garamond', serif;
font-size: 38px; font-weight: 700; color: #fff;
line-height: 1; display: block; margin-bottom: 3px;
}
.hkpi-n sup { font-size: 17px; }
.hkpi-l {
font-size: 10.5px; font-weight: 600; color: rgba(255,255,255,.36);
text-transform: uppercase; letter-spacing: .11em;
}
.hkpi-sep {
width: 1px; height: 44px;
background: rgba(255,255,255,.13);
margin-right: 32px; flex-shrink: 0;
}
/* ── Boutons d'action ───────────────────────────────────────── */
.hero-actions {
display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
animation: fadeUp .9s cubic-bezier(.16,1,.3,1) 1.28s both;
}
.hbtn-primary {
display: inline-flex; align-items: center; gap: 9px;
font-family: 'Outfit', sans-serif; font-size: 13.5px; font-weight: 800;
color: var(--black); background: var(--yellow);
padding: 14px 28px; border-radius: 5px; text-decoration: none;
letter-spacing: .04em;
box-shadow: 0 4px 28px rgba(196,148,42,.35);
transition: background .22s, transform .28s cubic-bezier(.22,1,.36,1), box-shadow .28s;
}
.hbtn-primary:hover { background: var(--yellow-dark); transform: translateY(-3px); box-shadow: 0 10px 38px rgba(196,148,42,.50); }
.hbtn-ghost {
display: inline-flex; align-items: center; gap: 8px;
font-family: 'Outfit', sans-serif; font-size: 13.5px; font-weight: 600;
color: rgba(255,255,255,.72);
border: 1px solid rgba(255,255,255,.2);
padding: 13px 22px; border-radius: 5px; text-decoration: none;
transition: all .22s;
}
.hbtn-ghost:hover { color: #fff; border-color: rgba(255,255,255,.48); background: rgba(255,255,255,.08); }
@keyframes fadeUp { from{opacity:0;transform:translateY(22px)} to{opacity:1;transform:translateY(0)} }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
/* ── Search Dock ────────────────────────────────────────────── */
.hero-search-dock {
position: absolute; bottom: 0; left: 0; right: 0; z-index: 5;
background: rgb(2, 68, 102);
backdrop-filter: blur(30px) saturate(1.7);
-webkit-backdrop-filter: blur(30px) saturate(1.7);
border-top: 1px solid rgba(255,255,255,.07);
}
.hsd-form { display: flex; align-items: stretch; height: 78px; }
.hsd-toggle {
display: flex; align-items: center; gap: 5px;
padding: 0 22px; flex-shrink: 0;
}
.hst {
font-family: 'Outfit', sans-serif; font-size: 12px; font-weight: 800;
color: rgba(255,255,255,.42); background: rgba(255,255,255,.07);
border: 1px solid rgba(255,255,255,.1); padding: 6px 15px; border-radius: 4px;
cursor: pointer; letter-spacing: .06em; text-transform: uppercase;
transition: all .2s; white-space: nowrap;
}
.hst.is-on { background: var(--yellow); color: var(--black); border-color: var(--yellow); font-weight: 900; }
.hst:hover:not(.is-on) { color: rgba(255,255,255,.72); border-color: rgba(255,255,255,.22); }
.hsd-divider { width: 1px; background: rgba(255,255,255,.09); flex-shrink: 0; margin: 18px 0; }
.hsd-field {
flex: 1; padding: 0 22px; min-width: 0;
display: flex; flex-direction: column; justify-content: center;
cursor: pointer; transition: background .2s;
}
.hsd-field:hover { background: rgba(255,255,255,.04); }
.hsd-label {
font-family: 'Outfit', sans-serif; font-size: 9px; font-weight: 900;
color: rgba(255,255,255,.32); text-transform: uppercase;
letter-spacing: .16em; margin-bottom: 5px; display: block; pointer-events: none;
}
.hsd-select {
/* Couleur forcée avec !important car app.css applique color:black sur select */
color: rgba(255,255,255,.9) !important;
font-family: 'Outfit', sans-serif;
font-size: 13.5px; font-weight: 500; cursor: pointer;
-webkit-appearance: none; appearance: none; width: 100%;
/* Chevron blanc semi-transparent (remplace la flèche native supprimée + celle de @tailwindcss/forms) */
background-color: transparent;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-opacity='0.45' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 2px center;
background-size: 12px 12px;
padding-right: 18px;
border: none; outline: none;
}
.hsd-select option { background: #040e22; color: #fff; }
.hsd-submit {
flex-shrink: 0; background: var(--yellow); color: var(--black);
border: none; cursor: pointer; padding: 0 36px;
display: flex; align-items: center; gap: 10px;
font-family: 'Outfit', sans-serif; font-size: 12.5px;
font-weight: 900; letter-spacing: .1em; text-transform: uppercase;
transition: background .2s, padding .25s;
}
.hsd-submit:hover { background: var(--yellow-dark); padding: 0 40px 0 32px; }
.hsd-submit [data-lucide] { width: 15px; height: 15px; }
/* ── Responsive hero ────────────────────────────────────────── */
@media(max-width:1100px) {
.hero-vert-label, .hero-vid-ind, .hero-brkt { display: none; }
/* search dock desktop = 78px → conserver un peu de marge */
.hero-container { padding-bottom: 96px; }
}
@media(max-width:768px) {
.hero-title { font-size: clamp(34px, 7vw, 52px); }
.hero-desc { font-size: 14px; }
.hsd-form { height: auto; flex-wrap: wrap; padding: 14px 0 0; }
.hsd-toggle { order: -1; padding: 0 16px 12px; width: 100%; border-bottom: 1px solid rgba(255,255,255,.07); }
.hsd-divider { display: none; }
/* 2 champs par ligne : toggle ~52px + 2 rangées de 2 champs ~94px + submit 54px + padding 14px ≈ 214px */
.hsd-field { flex: 1 1 45%; padding: 10px 16px; border-bottom: 1px solid rgba(255,255,255,.06); border-right: none; min-width: 0; }
.hsd-submit { width: 100%; justify-content: center; padding: 16px; height: 54px; order: 99; }
.hsd-submit:hover { padding: 16px; }
.hero-vlines { opacity: .5; }
/* padding-bottom = hauteur réelle du search dock wrappé à 768px (~220px) + 8px marge */
.hero-container { padding-bottom: 228px !important; }
}
@media(max-width:480px) {
/* 1 champ par ligne : toggle ~52px + 4 champs ~188px + submit 54px + padding 14px ≈ 308px */
.hsd-field { flex: 1 1 100%; }
.hero-kpis { flex-wrap: wrap; gap: 14px 0; }
.hkpi-sep { display: none; }
.hkpi { padding-right: 20px; }
.hero-container { padding-bottom: 320px !important; }
.hero-badge { font-size: 9.5px; }
}
/* ── Quartiers ───────────────────────────────────────────────── */
#quartiers { padding: 96px 0; background: #f7f8fa; }
.quartiers-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 18px;
margin-top: 52px;
}
.qcard {
position: relative; border-radius: 22px; overflow: hidden;
display: block; text-decoration: none; cursor: pointer;
transition: transform .4s cubic-bezier(.22,1,.36,1), box-shadow .4s ease;
}
.qcard:hover { transform: translateY(-7px) scale(1.015); box-shadow: 0 28px 64px rgba(0,0,0,.2); }
.qcard-bg {
position: absolute; inset: 0;
background-size: cover; background-position: center;
transition: transform .65s ease;
}
.qcard:hover .qcard-bg { transform: scale(1.07); }
.qcard-overlay { position: absolute; inset: 0; }
.qcard-body {
position: relative; z-index: 1;
min-height: 280px;
padding: 24px;
display: flex; flex-direction: column; justify-content: flex-end;
}
.qcard.q-large { grid-column: span 2; }
.qcard.q-large .qcard-body { min-height: 340px; }
.qcard-ico {
width: 42px; height: 42px; border-radius: 12px;
background: rgba(255,255,255,.18); backdrop-filter: blur(6px);
display: flex; align-items: center; justify-content: center;
margin-bottom: 10px;
}
.qcard-ico [data-lucide] { width: 20px; height: 20px; color: #fff; }
.qcard-body h3 {
font-family: 'Cormorant Garamond', serif;
font-size: 23px; font-weight: 700; color: #fff;
margin-bottom: 4px; line-height: 1.2;
}
.qcard-body p { font-size: 13px; color: rgba(255,255,255,.72); margin-bottom: 14px; }
.qcard-cta {
display: inline-flex; align-items: center; gap: 6px;
font-size: 12px; font-weight: 700; color: #fff;
background: rgba(255,255,255,.18); backdrop-filter: blur(6px);
padding: 7px 14px; border-radius: 100px;
letter-spacing: .08em; text-transform: uppercase;
opacity: 0; transform: translateY(8px);
transition: opacity .3s ease, transform .3s ease;
width: fit-content;
}
.qcard:hover .qcard-cta { opacity: 1; transform: translateY(0); }
.qcard-cta [data-lucide] { width: 13px; height: 13px; }
/* ── Services Accordion ──────────────────────────────────────── */
#services { padding: 96px 0; background: #f4f7fb; }
.acc-wrap { margin-top: 52px; display: flex; flex-direction: column; gap: 10px; }
/* Item */
.acc-item {
background: #fff;
border-radius: 18px;
border: 1.5px solid #e4eaf4;
overflow: hidden;
position: relative;
transition: border-color .28s ease, box-shadow .28s ease;
}
.acc-item:hover { border-color: #c8d9ee; box-shadow: 0 4px 28px rgba(0,80,160,.07); }
.acc-item.is-open { border-color: var(--blue); box-shadow: 0 10px 48px rgba(0,141,207,.13); }
/* Animated left strip — slides down from top when open */
.acc-strip {
position: absolute; left: 0; top: 0; width: 4px; height: 100%;
border-radius: 18px 0 0 18px;
transform: scaleY(0); transform-origin: top center;
transition: transform .42s cubic-bezier(.22,1,.36,1);
}
.acc-item.is-open .acc-strip { transform: scaleY(1); }
/* Header row */
.acc-hd {
display: flex; align-items: center; gap: 16px;
padding: 20px 22px 20px 28px;
cursor: pointer; user-select: none;
transition: background .22s;
}
.acc-hd:hover { background: #f8fafc; }
.acc-item.is-open .acc-hd { background: #f5faff; }
/* Step number */
.acc-step {
font-family: 'Cormorant Garamond', serif;
font-size: 11px; font-weight: 700; letter-spacing: .22em;
color: #c0cbd8; text-transform: uppercase;
flex-shrink: 0; width: 24px; text-align: right;
transition: color .25s ease;
}
.acc-item.is-open .acc-step { color: var(--blue); }
/* Dot separator */
.acc-dot {
width: 4px; height: 4px; border-radius: 50%; flex-shrink: 0;
background: #dae0ea;
transition: background .25s, transform .25s;
}
.acc-item.is-open .acc-dot { background: var(--blue); transform: scale(1.4); }
/* Icon — outline, single neutral color, NO colored background */
.acc-ico { flex-shrink: 0; display: flex; }
.acc-ico [data-lucide] {
width: 21px; height: 21px; stroke-width: 1.6;
color: #8fa3b8;
transition: color .25s ease, transform .35s cubic-bezier(.22,1,.36,1);
}
.acc-item:hover .acc-ico [data-lucide] { color: var(--blue); }
.acc-item.is-open .acc-ico [data-lucide] { color: var(--blue); transform: scale(1.12); }
/* Title & hint */
.acc-title-wrap { flex: 1; min-width: 0; }
.acc-title {
font-family: 'Cormorant Garamond', serif;
font-size: 20px; font-weight: 700; color: #1c2d3f; display: block;
transition: color .22s;
}
.acc-item.is-open .acc-title { color: var(--blue-dark); }
.acc-hint { font-size: 12px; color: #9baabb; }
/* Tag */
.acc-tag {
flex-shrink: 0; font-size: 10.5px; font-weight: 700;
letter-spacing: .1em; text-transform: uppercase;
padding: 4px 11px; border-radius: 100px;
background: #edf2f8; color: #8fa3b8;
transition: background .25s, color .25s;
}
.acc-item.is-open .acc-tag { background: #daf0fb; color: var(--blue); }
/* Chevron */
.acc-arr { flex-shrink: 0; color: #c8d2de; transition: transform .4s cubic-bezier(.22,1,.36,1), color .25s; }
.acc-arr [data-lucide] { width: 18px; height: 18px; }
.acc-item.is-open .acc-arr { transform: rotate(180deg); color: var(--blue); }
/* Body — JS-driven height */
.acc-body { height: 0; overflow: hidden; transition: height .46s cubic-bezier(.22,1,.36,1); }
.acc-body-inner {
padding: 0 32px 28px 80px;
display: grid; grid-template-columns: 1fr 160px;
gap: 32px; align-items: start;
}
/* Description */
.acc-desc { }
.acc-body-p {
color: #4b5d70; line-height: 1.78; font-size: 15px; margin-bottom: 18px;
opacity: 0; transform: translateY(7px);
transition: opacity .34s ease .08s, transform .34s ease .08s;
}
.acc-item.is-open .acc-body-p { opacity: 1; transform: none; }
/* Feature chips */
.acc-chips { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 20px; }
.acc-chip {
display: inline-flex; align-items: center; gap: 5px;
font-size: 11.5px; font-weight: 600; color: var(--blue-deeper);
background: #e6f3fb; padding: 5px 12px; border-radius: 100px;
opacity: 0; transform: translateY(5px);
transition: opacity .28s ease, transform .28s ease;
}
.acc-chip [data-lucide] { width: 11px; height: 11px; color: var(--blue); }
.acc-item.is-open .acc-chip:nth-child(1) { opacity:1; transform:none; transition-delay:.18s; }
.acc-item.is-open .acc-chip:nth-child(2) { opacity:1; transform:none; transition-delay:.25s; }
.acc-item.is-open .acc-chip:nth-child(3) { opacity:1; transform:none; transition-delay:.32s; }
.acc-item.is-open .acc-chip:nth-child(4) { opacity:1; transform:none; transition-delay:.39s; }
/* CTA link */
.acc-link {
display: inline-flex; align-items: center; gap: 7px;
font-size: 12.5px; font-weight: 700; text-decoration: none;
color: var(--blue); letter-spacing: .04em; text-transform: uppercase;
opacity: 0; transform: translateX(-8px);
transition: opacity .3s ease .22s, transform .3s ease .22s, gap .2s;
}
.acc-item.is-open .acc-link { opacity: 1; transform: none; }
.acc-link:hover { gap: 12px; }
.acc-link [data-lucide] { width: 13px; height: 13px; }
/* Right decorative — big number */
.acc-deco {
display: flex; justify-content: flex-end; align-items: flex-start; padding-top: 2px;
opacity: 0; transform: translateX(16px);
transition: opacity .42s ease .1s, transform .42s ease .1s;
}
.acc-item.is-open .acc-deco { opacity: 1; transform: none; }
.acc-deco-n {
font-family: 'Cormorant Garamond', serif;
font-size: 100px; font-weight: 900; line-height: .8;
color: rgba(0,141,207,.07); user-select: none; letter-spacing: -.03em;
}
/* ── Responsive ──────────────────────────────────────────────── */
@media(max-width:960px) {
.hero-right-col { display: contents; }
.hero-img-deck { display: none; }
.quartiers-grid { grid-template-columns: 1fr 1fr; }
.qcard.q-large { grid-column: span 2; }
.acc-body-inner { padding: 0 22px 22px 22px; grid-template-columns: 1fr; }
.acc-deco { display: none; }
}
@media(max-width:640px) {
.quartiers-grid { grid-template-columns: 1fr; }
.qcard.q-large { grid-column: auto; }
.acc-hd { padding: 16px 16px 16px 22px; gap: 12px; }
.acc-tag { display: none; }
.acc-title { font-size: 17px; }
.float-actions { display: none; }
}
/* ── Floating Action Buttons ─────────────────────────────────── */
.float-actions {
position: fixed;
right: 0;
top: 50%;
transform: translateY(-50%);
z-index: 400;
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 8px;
}
.float-btn {
display: flex;
align-items: center;
height: 46px;
padding: 0 13px;
border-radius: 28px 0 0 28px;
color: #fff;
text-decoration: none;
font-family: 'Outfit', sans-serif;
font-size: 13.5px;
font-weight: 600;
overflow: hidden;
transition: box-shadow .3s ease;
box-shadow: 0 4px 18px rgba(0,0,0,.18);
}
.float-btn-phone { background: var(--blue-dark, #0070a8); }
.float-btn-email { background: var(--blue, #008dcf); }
.float-btn-estim { background: var(--yellow-dark, #D99800); color: #0a1a2e; }
.float-icon {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
width: 20px;
height: 20px;
}
.float-icon svg { width: 18px; height: 18px; }
.float-label {
max-width: 0;
overflow: hidden;
opacity: 0;
white-space: nowrap;
transition: max-width .45s cubic-bezier(.22,1,.36,1), opacity .3s ease, margin-left .45s cubic-bezier(.22,1,.36,1);
margin-left: 0;
}
.float-btn.is-open { box-shadow: 0 6px 28px rgba(0,0,0,.28); }
.float-btn.is-open .float-label {
max-width: 220px;
opacity: 1;
margin-left: 10px;
}
</style>
</head>
<body>
<!-- TRUST BAR -->
<div class="trust-bar">
<div class="container">
<div class="ti"><i data-lucide="shield-check"></i> Certifié Bureau Veritas ISO 9001</div>
<div class="ti"><i data-lucide="award"></i> Agence référence depuis 1956</div>
<div class="ti"><i data-lucide="clock-3"></i> Réponse garantie sous 2h</div>
<div class="ti"><i data-lucide="phone"></i> +221783724807 / +221338234374</div>
</div>
</div>
<!-- NAV -->
<nav id="navbar">
<div class="container">
<div class="nav-wrap">
<a href="https://www.rimsenegal.com" class="nav-logo">
<img src="https://www.rimsenegal.com/uploads/91/logo.png" alt="RIM Sénégal" style="height:52px;width:auto;display:block">
</a>
<ul class="nav-links">
<li><a href="https://www.rimsenegal.com" class="active"><i data-lucide="house"></i></a></li>
<li class="nav-dropdown-wrap">
<button class="nav-dropdown-btn" type="button">
A propos <i data-lucide="chevron-down"></i>
</button>
<div class="nav-dropdown">
<a href="https://www.rimsenegal.com/qui-sommes-nous" class="">
Qui sommes nous ?
</a>
<a href="https://www.rimsenegal.com/nos-services" class="">
Nos services
</a>
<a href="https://www.rimsenegal.com/travailler-en-equipe" class="">
Travailler en équipe
</a>
<a href="https://www.rimsenegal.com/nous-rejoindre" class="">
Nous rejoindre
</a>
</div>
</li>
<li><a href="https://www.rimsenegal.com/nos-biens?transaction=vente&categorie=all&ville=all&prix_min=&prix_max=&categorie_h=all&ville_h=all" class="">Acheter</a></li>
<li><a href="https://www.rimsenegal.com/nos-biens?transaction=location&categorie=all&ville=all&prix_min=&prix_max=&categorie_h=all&ville_h=all" class="">Louer</a></li>
<li><a href="https://www.rimsenegal.com/promotions" class="">Promotions immobilières</a></li>
<li><a href="https://www.rimsenegal.com/articles" class="">Actualités</a></li>
<li><a href="https://www.rimsenegal.com/contact" class="">Contact</a></li>
</ul>
<div class="nav-actions">
<a href="https://www.rimsenegal.com/alertes" class="btn-ghost" title="Alertes email" style="padding:8px 10px;display:flex;align-items:center">
<i data-lucide="bell" style="width:18px;height:18px"></i>
</a>
<a href="https://www.rimsenegal.com/mes-favoris" class="btn-ghost nav-fav-btn" title="Mes favoris" style="position:relative;padding:8px 10px">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" id="nav-fav-icon"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
<span id="nav-fav-count" style="display:none;position:absolute;top:2px;right:2px;background:#ef4444;color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px;line-height:1"></span>
</a>
<a href="https://regie-immobiliere-mugnier.crypto-extranet.com/connexion/" class="btn-ghost" target="_blank">Extranet</a>
<a href="https://www.rimsenegal.com/contact" class="btn-cta">
<i data-lucide="phone"></i>
Nous contacter
</a>
</div>
<button class="nav-mobile-toggle" id="mobileToggle" type="button" aria-label="Menu">
<i data-lucide="menu" id="nav-icon-menu"></i>
<i data-lucide="x" id="nav-icon-close" style="display:none"></i>
</button>
</div>
</div>
<!-- Mobile menu -->
<div class="nav-mobile-menu" id="mobileMenu">
<ul class="nav-mobile-links">
<li><a href="https://www.rimsenegal.com"><i data-lucide="house"></i> Accueil</a></li>
<li>
<button class="mobile-sub-toggle" type="button">
A propos <i data-lucide="chevron-down"></i>
</button>
<ul class="mobile-sub" style="display:none">
<li><a href="https://www.rimsenegal.com/qui-sommes-nous">Qui sommes nous ?</a></li>
<li><a href="https://www.rimsenegal.com/nos-services">Nos services</a></li>
<li><a href="https://www.rimsenegal.com/travailler-en-equipe">Travailler en équipe</a></li>
<li><a href="https://www.rimsenegal.com/nous-rejoindre">Nous rejoindre</a></li>
</ul>
</li>
<li><a href="https://www.rimsenegal.com/nos-biens">Acheter/Louer</a></li>
<li><a href="https://www.rimsenegal.com/promotions">Promotions immobilières</a></li>
<li><a href="https://www.rimsenegal.com/articles">Actualités</a></li>
<li><a href="https://www.rimsenegal.com/alertes"><i data-lucide="bell"></i> Alertes email</a></li>
<li><a href="https://www.rimsenegal.com/mes-favoris"><i data-lucide="heart"></i> Mes favoris</a></li>
<li><a href="https://www.rimsenegal.com/contact">Contact</a></li>
<li>
<a href="https://regie-immobiliere-mugnier.crypto-extranet.com/connexion/" target="_blank" class="btn-cta" style="display:block;text-align:center;margin:8px 16px">
Extranet
</a>
</li>
</ul>
</div>
</nav>
<main id="app">
<!-- ═══════════════════════════════════════ HERO ══════════════ -->
<section class="hero" id="hero">
<div class="hvid-wrap" aria-hidden="true">
<video class="hvid" id="heroBgVid" autoplay muted loop playsinline preload="auto">
<source src="/videos/hero-bg.mp4" type="video/mp4">
</video>
<div class="hvid-overlay"></div>
</div>
<div class="hero-vlines" aria-hidden="true">
<span></span><span></span><span></span><span></span><span></span>
</div>
<div class="hero-scan" aria-hidden="true"></div>
<div class="hero-brkt hero-brkt--tl" aria-hidden="true"></div>
<div class="hero-brkt hero-brkt--br" aria-hidden="true"></div>
<div class="hero-vert-label" aria-hidden="true">RÉGIE IMMOBILIÈRE MUGNIER · DAKAR · SÉNÉGAL</div>
<div class="hero-vid-ind" aria-hidden="true">
<button class="hvi-btn" id="heroVidToggle" aria-label="Pause vidéo" title="Lecture / Pause">
<svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="6" y1="4" x2="6" y2="20" id="hviPause1"></line>
<line x1="14" y1="4" x2="14" y2="20" id="hviPause2"></line>
<polygon points="5 3 19 12 5 21 5 3" id="hviPlay" style="display:none"></polygon>
</svg>
</button>
<span class="hvi-label">Live</span>
</div>
<div class="container hero-container">
<div class="hero-content" id="heroParallax">
<div class="hero-badge">
<span class="hbadge-dot"></span>
<span class="hbadge-dash"></span>
Agence de référence depuis 1956
</div>
<h1 class="hero-title">
<span class="ht-line"><span class="ht-inner hl-1">Trouver votre</span></span>
<span class="ht-line"><span class="ht-inner hl-2"><em>Propriété idéale <em class="ht-sub">à Dakar et au Sénégal</em> </em></span></span>
</h1>
<p class="hero-desc">Plus de 1 500 biens vérifiés, prix négociés, accompagnement sur-mesure de la recherche jusqu’à la remise des clés.</p>
<div class="hero-kpis">
<div class="hkpi">
<span class="hkpi-n"><span class="hkpi-cnt" data-target="70">0</span><sup>+</sup></span>
<span class="hkpi-l">Années d’expertise</span>
</div>
<div class="hkpi-sep"></div>
<div class="hkpi">
<span class="hkpi-n"><span class="hkpi-cnt" data-target="1500">0</span><sup>+</sup></span>
<span class="hkpi-l">Biens disponibles</span>
</div>
<div class="hkpi-sep"></div>
<div class="hkpi">
<span class="hkpi-n"><span class="hkpi-cnt" data-target="98">0</span><sup>%</sup></span>
<span class="hkpi-l">Clients satisfaits</span>
</div>
</div>
<div class="hero-actions">
<a href="https://www.rimsenegal.com/nos-biens" class="hbtn-primary">
<i data-lucide="search"></i> Explorer les biens
</a>
<a href="https://www.rimsenegal.com/promotions" class="hbtn-ghost">
Nos promotions <i data-lucide="arrow-right"></i>
</a>
</div>
</div>
</div>
<div class="hero-search-dock">
<div class="container">
<form method="GET" action="https://www.rimsenegal.com/nos-biens" class="hsd-form">
<input type="hidden" name="transaction" id="searchTransaction" value="vente">
<div class="hsd-toggle">
<button type="button" class="hst is-on" data-tab="vente">Acheter</button>
<button type="button" class="hst" data-tab="location">Louer</button>
</div>
<div class="hsd-divider"></div>
<div class="hsd-field">
<label class="hsd-label">Type de bien</label>
<select name="categorie" class="hsd-select">
<option value="all">Tous les types</option>
<option value="appartement">Appartement</option>
<option value="villa">Villa</option>
<option value="bureau">Bureau</option>
<option value="terrain">Terrain</option>
<option value="local commercial">Local commercial</option>
<option value="maison">Maison</option>
<option value="immeuble">Immeuble</option>
</select>
</div>
<div class="hsd-divider"></div>
<div class="hsd-field">
<label class="hsd-label">Localisation</label>
<select name="ville" class="hsd-select">
<option value="all">Toutes les zones</option>
<option value="dakar">Dakar</option>
<option value="thies">Thiès</option>
<option value="saint-louis">Saint-Louis</option>
<option value="mbour">Mbour</option>
</select>
</div>
<div class="hsd-divider"></div>
<div class="hsd-field">
<label class="hsd-label">Budget max</label>
<select name="prix_max" class="hsd-select">
<option value="">Sans limite</option>
<option value="100000000">100 M FCFA</option>
<option value="200000000">200 M FCFA</option>
<option value="300000000">300 M FCFA</option>
<option value="500000000">500 M FCFA</option>
</select>
</div>
<div class="hsd-divider"></div>
<div class="hsd-field">
<label class="hsd-label">Chambres</label>
<select name="chambres" class="hsd-select">
<option value="">Toutes</option>
<option value="1">1+</option>
<option value="2">2+</option>
<option value="3">3+</option>
<option value="4">4+</option>
</select>
</div>
<button type="submit" class="hsd-submit">
<i data-lucide="search"></i>
<span>Rechercher</span>
</button>
</form>
</div>
</div>
</section>
<!-- ════════════════════════════════════ CONFIANCE ═══════════ -->
<div class="confiance">
<div class="container">
<div class="conf-grid">
<div class="conf-card">
<div class="conf-ico"><i data-lucide="shield-check"></i></div>
<div><h4>Vérification juridique</h4><p>Titre foncier vérifié et acte notarié pour chaque transaction.</p></div>
</div>
<div class="conf-card">
<div class="conf-ico"><i data-lucide="badge-check"></i></div>
<div><h4>Certifié Bureau Veritas</h4><p>ISO 9001 — processus audités et conformes aux normes internationales.</p></div>
</div>
<div class="conf-card">
<div class="conf-ico"><i data-lucide="receipt"></i></div>
<div><h4>Frais 100% transparents</h4><p>Aucun coût caché. Commission annoncée dès le premier échange.</p></div>
</div>
<div class="conf-card">
<div class="conf-ico"><i data-lucide="headphones"></i></div>
<div><h4>Réponse sous 2h</h4><p>Un conseiller dédié disponible 7j/7 pour accompagner votre projet.</p></div>
</div>
</div>
</div>
</div>
<!-- ═══════════════════════════════════════ BIENS ═════════════ -->
<section id="biens">
<div class="container">
<div class="props-hd">
<div>
<div class="slabel">Opportunités du moment</div>
<h2 class="stitle">Sélection exclusive</h2>
<p class="ssub">Des biens vérifiés, aux meilleurs prix du marché, disponibles maintenant.</p>
</div>
<a href="https://www.rimsenegal.com/nos-biens" class="btn-all">Voir tous les biens <i data-lucide="arrow-right"></i></a>
</div>
<div class="props-grid">
<a href="https://www.rimsenegal.com/nos-biens/5537SC" class="pcard">
<div class="pimg">
<img src="https://photos5.pagesimmo.com/099/99Y22140/99Y22140-5537SC-001.jpg"
alt="APPARTEMENT location à DAKAR — RIM Sénégal"
loading="lazy"
onerror="this.parentElement.style.background='linear-gradient(135deg,#f3f4f6,#e5e7eb)';this.remove()">
<span class="pbadge b-new">Location</span>
<div style="position:absolute;top:10px;right:10px;z-index:2;background:rgba(255,255,255,.85);backdrop-filter:blur(4px);border-radius:50%;width:34px;height:34px;display:flex;align-items:center;justify-content:center" onclick="event.preventDefault()">
<favorite-button property-id="5537SC"></favorite-button>
</div>
<div style="position:absolute;bottom:12px;right:12px">
<span style="display:inline-flex;align-items:center;gap:5px;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);color:#fff;font-size:11px;font-weight:600;padding:4px 10px;border-radius:6px">
<i data-lucide="images" style="width:12px;height:12px"></i> 7
</span>
</div>
</div>
<div class="tpl-section">
<span class="tpl-header">Descriptif</span>
<div class="tpl-body" style="padding:10px 14px;font-size:12.5px;color:var(--g600);line-height:1.5">
Appartement à Louer aux Almadies vers la boa dans un Immeuble avec Ascenseur, Groupe Elec…
</div>
</div>
<div class="tpl-section">
<span class="tpl-header">Budget</span>
<div class="tpl-body">
<div class="tpl-row">
<span class="tpl-label">Prix en Francs CFA :</span>
<span class="tpl-value">1 600 000 FCFA/mois</span>
</div>
<div class="tpl-row">
<span class="tpl-label">Prix en Euros :</span>
<span class="tpl-value">2 439 €</span>
</div>
<div class="tpl-row">
<span class="tpl-label">Surface :</span>
<span class="tpl-value">300 m²</span>
</div>
<div class="tpl-row">
<span class="tpl-label">Nombre de pièces :</span>
<span class="tpl-value">5</span>
</div>
</div>
</div>
<div class="tpl-section">
<span class="tpl-header">Prestations</span>
<div class="tpl-body">
<div class="tpl-row"><span class="tpl-label">Type :</span><span class="tpl-value">APPARTEMENT</span></div>
<div class="tpl-row"><span class="tpl-label">Détail :</span><span class="tpl-value">Location</span></div>
<div class="tpl-row"><span class="tpl-label">Quartier :</span><span class="tpl-value">Almadies</span></div>
</div>
</div>
</a>
<a href="https://www.rimsenegal.com/nos-biens/3113OD" class="pcard">
<div class="pimg">
<img src="https://photos5.pagesimmo.com/099/99Y22140/99Y22140-3113OD-001.jpg"
alt="APPARTEMENT location à SENEGAL — RIM Sénégal"
loading="lazy"
onerror="this.parentElement.style.background='linear-gradient(135deg,#f3f4f6,#e5e7eb)';this.remove()">
<span class="pbadge b-new">Location</span>
<div style="position:absolute;top:10px;right:10px;z-index:2;background:rgba(255,255,255,.85);backdrop-filter:blur(4px);border-radius:50%;width:34px;height:34px;display:flex;align-items:center;justify-content:center" onclick="event.preventDefault()">
<favorite-button property-id="3113OD"></favorite-button>
</div>
</div>
<div class="tpl-section">
<span class="tpl-header">Descriptif</span>
<div class="tpl-body" style="padding:10px 14px;font-size:12.5px;color:var(--g600);line-height:1.5">
Appartement 2 chambres à louer à Point E – Immeuble sécurisé
La Régie Immobilière Mugnie…
</div>
</div>
<div class="tpl-section">
<span class="tpl-header">Budget</span>
<div class="tpl-body">
<div class="tpl-row">
<span class="tpl-label">Prix en Francs CFA :</span>
<span class="tpl-value">450 000 FCFA/mois</span>
</div>
<div class="tpl-row">
<span class="tpl-label">Prix en Euros :</span>
<span class="tpl-value">686 €</span>
</div>
<div class="tpl-row">
<span class="tpl-label">Nombre de pièces :</span>
<span class="tpl-value">3</span>
</div>
</div>
</div>
<div class="tpl-section">
<span class="tpl-header">Prestations</span>
<div class="tpl-body">
<div class="tpl-row"><span class="tpl-label">Type :</span><span class="tpl-value">APPARTEMENT</span></div>
<div class="tpl-row"><span class="tpl-label">Détail :</span><span class="tpl-value">Location</span></div>
<div class="tpl-row"><span class="tpl-label">Quartier :</span><span class="tpl-value">Point E</span></div>
</div>
</div>
</a>
<a href="https://www.rimsenegal.com/nos-biens/3518PGS" class="pcard">
<div class="pimg">
<img src="https://photos5.pagesimmo.com/099/99Y22140/99Y22140-3518PGS-002.jpg"
alt="APPARTEMENT location à — RIM Sénégal"
loading="lazy"
onerror="this.parentElement.style.background='linear-gradient(135deg,#f3f4f6,#e5e7eb)';this.remove()">
<span class="pbadge b-new">Location</span>
<div style="position:absolute;top:10px;right:10px;z-index:2;background:rgba(255,255,255,.85);backdrop-filter:blur(4px);border-radius:50%;width:34px;height:34px;display:flex;align-items:center;justify-content:center" onclick="event.preventDefault()">
<favorite-button property-id="3518PGS"></favorite-button>
</div>
<div style="position:absolute;bottom:12px;right:12px">
<span style="display:inline-flex;align-items:center;gap:5px;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);color:#fff;font-size:11px;font-weight:600;padding:4px 10px;border-radius:6px">
<i data-lucide="images" style="width:12px;height:12px"></i> 9
</span>
</div>
</div>
<div class="tpl-section">
<span class="tpl-header">Descriptif</span>
<div class="tpl-body" style="padding:10px 14px;font-size:12.5px;color:var(--g600);line-height:1.5">
Appartement au 4ème Etage avec : Salon + 03 chambres + 03 Salls de bains + 02 toilettes …
</div>
</div>
<div class="tpl-section">
<span class="tpl-header">Budget</span>
<div class="tpl-body">
<div class="tpl-row">
<span class="tpl-label">Prix en Francs CFA :</span>
<span class="tpl-value">1 200 000 FCFA/mois</span>
</div>
<div class="tpl-row">
<span class="tpl-label">Prix en Euros :</span>
<span class="tpl-value">1 829 €</span>
</div>
<div class="tpl-row">
<span class="tpl-label">Nombre de pièces :</span>
<span class="tpl-value">4</span>
</div>
</div>
</div>
<div class="tpl-section">
<span class="tpl-header">Prestations</span>
<div class="tpl-body">
<div class="tpl-row"><span class="tpl-label">Type :</span><span class="tpl-value">APPARTEMENT</span></div>
<div class="tpl-row"><span class="tpl-label">Détail :</span><span class="tpl-value">Location</span></div>
<div class="tpl-row"><span class="tpl-label">Quartier :</span><span class="tpl-value">Point E</span></div>
</div>
</div>
</a>
<a href="https://www.rimsenegal.com/nos-biens/1726AS" class="pcard">
<div class="pimg">
<img src="https://photos5.pagesimmo.com/099/99Y22140/99Y22140-1726AS-002.jpg"
alt="LOCAL COMMERCIAL location à DAKAR — RIM Sénégal"
loading="lazy"
onerror="this.parentElement.style.background='linear-gradient(135deg,#f3f4f6,#e5e7eb)';this.remove()">
<span class="pbadge b-new">Location</span>
<div style="position:absolute;top:10px;right:10px;z-index:2;background:rgba(255,255,255,.85);backdrop-filter:blur(4px);border-radius:50%;width:34px;height:34px;display:flex;align-items:center;justify-content:center" onclick="event.preventDefault()">
<favorite-button property-id="1726AS"></favorite-button>
</div>
</div>
<div class="tpl-section">
<span class="tpl-header">Budget</span>
<div class="tpl-body">
<div class="tpl-row">
<span class="tpl-label">Prix en Francs CFA :</span>
<span class="tpl-value">1 700 000 FCFA/mois</span>
</div>
<div class="tpl-row">
<span class="tpl-label">Prix en Euros :</span>
<span class="tpl-value">2 592 €</span>
</div>
<div class="tpl-row">
<span class="tpl-label">Nombre de pièces :</span>
<span class="tpl-value">1</span>
</div>
</div>
</div>
<div class="tpl-section">
<span class="tpl-header">Prestations</span>
<div class="tpl-body">
<div class="tpl-row"><span class="tpl-label">Type :</span><span class="tpl-value">LOCAL COMMERCIAL</span></div>
<div class="tpl-row"><span class="tpl-label">Détail :</span><span class="tpl-value">Location</span></div>
<div class="tpl-row"><span class="tpl-label">Quartier :</span><span class="tpl-value">Plateau</span></div>
</div>
</div>
</a>
</div>
</div>
</section>
<!-- ══════════════════════════════ TYPES DE BIENS ═════════════ -->
<section id="types-biens">
<div class="container">
<div class="sh">
<div class="slabel">Notre catalogue</div>
<h2 class="stitle">Découvrez notre sélection exclusive de biens par type</h2>
<p class="ssub">Villas, appartements, terrains, bureaux — explorez chaque catégorie et trouvez le bien qui vous correspond.</p>
</div>
<div class="quartiers-grid">
<a href="https://www.rimsenegal.com/nos-biens?categorie=villa" class="qcard q-large">
<div class="qcard-bg" style="background-image:url(/images/villas.png); background-color:#0a2540"></div>
<div class="qcard-overlay" style="background: linear-gradient(to top, rgba(0, 0, 0, 0.95) 0%, rgba(0, 0, 0, 0.6) 50%, transparent 100%)"></div>
<div class="qcard-body">
<div class="qcard-ico"><i data-lucide="home"></i></div>
<h3>Villas</h3>
<p>Résidences haut de gamme avec jardins, piscines et prestations exclusives dans les quartiers prisés de Dakar.</p>
<span class="qcard-cta">Voir les villas <i data-lucide="arrow-right"></i></span>
</div>
</a>
<a href="https://www.rimsenegal.com/nos-biens?categorie=appartement" class="qcard">
<div class="qcard-bg" style="background-image:url(/images/appartement.jpg); background-color:#00394d"></div>
<div class="qcard-overlay" style="background: linear-gradient(to top, rgba(0, 0, 0, 0.95) 0%, rgba(0, 0, 0, 0.4) 50%, transparent 100%)"></div>
<div class="qcard-body">
<div class="qcard-ico"><i data-lucide="building"></i></div>
<h3>Appartements</h3>
<p>Studios, T2, T3 et duplex dans les résidences sécurisées de Dakar.</p>
<span class="qcard-cta">Voir les appartements <i data-lucide="arrow-right"></i></span>
</div>
</a>
<a href="https://www.rimsenegal.com/nos-biens?categorie=maison" class="qcard">
<div class="qcard-bg" style="background-image:url(/images/maison.png); background-color:#3b1f6e"></div>
<div class="qcard-overlay" style="background: linear-gradient(to top, rgba(0, 0, 0, 0.95) 0%, rgba(0, 0, 0, 0.4) 50%, transparent 100%)"></div>
<div class="qcard-body">
<div class="qcard-ico"><i data-lucide="house"></i></div>
<h3>Maisons</h3>
<p>Maisons familiales avec cour, idéales pour une vie résidentielle à taille humaine.</p>
<span class="qcard-cta">Voir les maisons <i data-lucide="arrow-right"></i></span>
</div>
</a>
<a href="https://www.rimsenegal.com/nos-biens?categorie=terrain" class="qcard">
<div class="qcard-bg" style="background-image:url(/images/terrain.png); background-color:#14401a"></div>
<div class="qcard-overlay" style="background: linear-gradient(to top, rgba(0, 0, 0, 0.95) 0%, rgba(0, 0, 0, 0.4) 50%, transparent 100%)"></div>
<div class="qcard-body">
<div class="qcard-ico"><i data-lucide="map"></i></div>
<h3>Terrains</h3>
<p>Terrains titrés, viabilisés ou nus — constructibles en zones résidentielles et commerciales.</p>
<span class="qcard-cta">Voir les terrains <i data-lucide="arrow-right"></i></span>
</div>
</a>
<a href="https://www.rimsenegal.com/nos-biens?categorie=bureau" class="qcard">
<div class="qcard-bg" style="background-image:url(/images/bureaux.png); background-color:#3d2800"></div>
<div class="qcard-overlay" style="background: linear-gradient(to top, rgba(0, 0, 0, 0.95) 0%, rgba(0, 0, 0, 0.4) 50%, transparent 100%)"></div>
<div class="qcard-body">
<div class="qcard-ico"><i data-lucide="briefcase"></i></div>
<h3>Bureaux</h3>
<p>Open spaces, plateaux et bureaux cloisonnés dans les zones d'affaires de Dakar.</p>
<span class="qcard-cta">Voir les bureaux <i data-lucide="arrow-right"></i></span>
</div>
</a>
<a href="https://www.rimsenegal.com/nos-biens?categorie=local+commercial" class="qcard" style="box-shadow: 0 4px 15px rgba(0,0,0,0.1);">
<div class="qcard-bg" style="background-image:url(/images/locaux.png); background-color:#1a1a1a"></div>
<div class="qcard-overlay" style="background: linear-gradient(to top, rgba(0, 0, 0, 0.95) 0%, rgba(0, 0, 0, 0.4) 50%, transparent 100%)"></div>
<div class="qcard-body">
<div class="qcard-ico"><i data-lucide="store"></i></div>
<h3>Locaux commerciaux</h3>
<p>Boutiques, entrepôts et surfaces commerciales en rez-de-chaussée stratégique.</p>
<span class="qcard-cta">Voir les locaux <i data-lucide="arrow-right"></i></span>
</div>
</a>
</div>
</div>
</section>
<!-- ═══════════════════════════════════ SERVICES ═════════════ -->
<section id="services">
<div class="container">
<div class="sh">
<div class="slabel">Ce que nous faisons</div>
<h2 class="stitle">Nos expertises</h2>
<p class="ssub">Un accompagnement complet pour chaque profil — acheteur, vendeur, investisseur ou propriétaire.</p>
</div>
<div class="acc-wrap">
<div class="acc-item is-open">
<div class="acc-strip" style="background:var(--yellow)"></div>
<div class="acc-hd" role="button" aria-expanded="true">
<span class="acc-step">01</span>
<span class="acc-dot"></span>
<span class="acc-ico"><i data-lucide="home"></i></span>
<span class="acc-title-wrap">
<span class="acc-title">Achat & Vente</span>
<span class="acc-hint">Recherche · Négociation · Acte notarié</span>
</span>
<span class="acc-tag">Résidentiel</span>
<span class="acc-arr"><i data-lucide="chevron-down"></i></span>
</div>
<div class="acc-body">
<div class="acc-body-inner">
<div class="acc-desc">
<p class="acc-body-p">Nous prenons en charge chaque étape de votre projet immobilier : recherche personnalisée selon vos critères, organisation des visites, négociation au meilleur prix et sécurisation complète de la transaction avec acte notarié et vérification du titre foncier.</p>
<div class="acc-chips">
<span class="acc-chip"><i data-lucide="check-circle"></i> Recherche personnalisée</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Visites organisées</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Acte notarié sécurisé</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Titre foncier vérifié</span>
</div>
<a href="https://www.rimsenegal.com/nos-biens" class="acc-link">Parcourir les biens <i data-lucide="arrow-right"></i></a>
</div>
<div class="acc-deco"><span class="acc-deco-n">01</span></div>
</div>
</div>
</div>
<div class="acc-item">
<div class="acc-strip" style="background:var(--yellow)"></div>
<div class="acc-hd" role="button" aria-expanded="false">
<span class="acc-step">02</span>
<span class="acc-dot"></span>
<span class="acc-ico"><i data-lucide="key-round"></i></span>
<span class="acc-title-wrap">
<span class="acc-title">Location</span>
<span class="acc-hint">Résidentiel · Commercial · Contrats conformes</span>
</span>
<span class="acc-tag">Louer</span>
<span class="acc-arr"><i data-lucide="chevron-down"></i></span>
</div>
<div class="acc-body">
<div class="acc-body-inner">
<div class="acc-desc">
<p class="acc-body-p">Appartements, villas, bureaux et locaux commerciaux disponibles à la location. Chaque bien est visité, vérifié et documenté. Contrats conformes à la réglementation en vigueur, état des lieux systématiques et accompagnement jusqu'à la remise des clés.</p>
<div class="acc-chips">
<span class="acc-chip"><i data-lucide="check-circle"></i> Biens vérifiés</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Contrat conforme</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Résidentiel & commercial</span>
</div>
<a href="https://www.rimsenegal.com/nos-biens?transaction=location" class="acc-link">Voir les locations <i data-lucide="arrow-right"></i></a>
</div>
<div class="acc-deco"><span class="acc-deco-n">02</span></div>
</div>
</div>
</div>
<div class="acc-item">
<div class="acc-strip" style="background:var(--yellow)"></div>
<div class="acc-hd" role="button" aria-expanded="false">
<span class="acc-step">03</span>
<span class="acc-dot"></span>
<span class="acc-ico"><i data-lucide="building-2"></i></span>
<span class="acc-title-wrap">
<span class="acc-title">Gestion locative</span>
<span class="acc-hint">Loyers · Entretien · Reporting mensuel</span>
</span>
<span class="acc-tag">Propriétaires</span>
<span class="acc-arr"><i data-lucide="chevron-down"></i></span>
</div>
<div class="acc-body">
<div class="acc-body-inner">
<div class="acc-desc">
<p class="acc-body-p">Confiez-nous la gestion complète de votre bien locatif : perception sécurisée des loyers, entretien et petites réparations, gestion administrative et fiscale, relocation rapide en cas de vacance et reporting mensuel détaillé de votre patrimoine.</p>
<div class="acc-chips">
<span class="acc-chip"><i data-lucide="check-circle"></i> Loyers sécurisés</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Entretien inclus</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Reporting mensuel</span>
</div>
<a href="https://www.rimsenegal.com/contact" class="acc-link">Nous confier un bien <i data-lucide="arrow-right"></i></a>
</div>
<div class="acc-deco"><span class="acc-deco-n">03</span></div>
</div>
</div>
</div>
<div class="acc-item">
<div class="acc-strip" style="background:var(--yellow)"></div>
<div class="acc-hd" role="button" aria-expanded="false">
<span class="acc-step">04</span>
<span class="acc-dot"></span>
<span class="acc-ico"><i data-lucide="trending-up"></i></span>
<span class="acc-title-wrap">
<span class="acc-title">Investissement</span>
<span class="acc-hint">Rendement · Étude de marché · Conseil patrimonial</span>
</span>
<span class="acc-tag">Investisseurs</span>
<span class="acc-arr"><i data-lucide="chevron-down"></i></span>
</div>
<div class="acc-body">
<div class="acc-body-inner">
<div class="acc-desc">
<p class="acc-body-p">Nos experts analysent le marché dakarois pour vous orienter vers les investissements les plus rentables : calcul de rendement locatif, analyse des tendances par quartier, plus-values potentielles et accompagnement fiscal pour optimiser votre patrimoine immobilier.</p>
<div class="acc-chips">
<span class="acc-chip"><i data-lucide="check-circle"></i> Analyse de rentabilité</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Étude de marché</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Conseil patrimonial</span>
</div>
<a href="https://www.rimsenegal.com/contact" class="acc-link">Discuter de mon projet <i data-lucide="arrow-right"></i></a>
</div>
<div class="acc-deco"><span class="acc-deco-n">04</span></div>
</div>
</div>
</div>
<div class="acc-item">
<div class="acc-strip" style="background:var(--yellow)"></div>
<div class="acc-hd" role="button" aria-expanded="false">
<span class="acc-step">05</span>
<span class="acc-dot"></span>
<span class="acc-ico"><i data-lucide="building"></i></span>
<span class="acc-title-wrap">
<span class="acc-title">Promotions immobilières</span>
<span class="acc-hint">Neuf · VEFA · Suivi de livraison</span>
</span>
<span class="acc-tag">Programmes</span>
<span class="acc-arr"><i data-lucide="chevron-down"></i></span>
</div>
<div class="acc-body">
<div class="acc-body-inner">
<div class="acc-desc">
<p class="acc-body-p">Accès exclusif aux programmes immobiliers neufs, en VEFA ou en cours de construction, validés par nos équipes terrain avant commercialisation. Suivi de livraison intégré et accompagnement complet jusqu'à la remise des clés de votre logement neuf.</p>
<div class="acc-chips">
<span class="acc-chip"><i data-lucide="check-circle"></i> Programmes neufs</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Vente en VEFA</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Suivi de livraison</span>
</div>
<a href="https://www.rimsenegal.com/promotions" class="acc-link">Voir les promotions <i data-lucide="arrow-right"></i></a>
</div>
<div class="acc-deco"><span class="acc-deco-n">05</span></div>
</div>
</div>
</div>
<div class="acc-item">
<div class="acc-strip" style="background:var(--yellow)"></div>
<div class="acc-hd" role="button" aria-expanded="false">
<span class="acc-step">06</span>
<span class="acc-dot"></span>
<span class="acc-ico"><i data-lucide="calculator"></i></span>
<span class="acc-title-wrap">
<span class="acc-title">Estimation gratuite</span>
<span class="acc-hint">Expert certifié BV · 48h · Sans engagement</span>
</span>
<span class="acc-tag">Vendeurs</span>
<span class="acc-arr"><i data-lucide="chevron-down"></i></span>
</div>
<div class="acc-body">
<div class="acc-body-inner">
<div class="acc-desc">
<p class="acc-body-p">Évaluation précise et objective de votre bien par un expert certifié Bureau Veritas, sans engagement et sans frais. Rapport détaillé remis sous 48 heures avec comparaison du marché local, analyse des atouts et recommandations de mise en valeur.</p>
<div class="acc-chips">
<span class="acc-chip"><i data-lucide="check-circle"></i> Expert certifié BV</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Résultat en 48h</span>
<span class="acc-chip"><i data-lucide="check-circle"></i> Sans engagement</span>
</div>
<a href="https://www.rimsenegal.com/contact" class="acc-link">Demander une estimation <i data-lucide="arrow-right"></i></a>
</div>
<div class="acc-deco"><span class="acc-deco-n">06</span></div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ══════════════════════════════ CTA VENDEUR ═══════════════ -->
<section class="cta-sell">
<div class="container">
<div class="cta-inner">
<div>
<h2>Vous avez un bien à vendre ou à louer ?</h2>
<p>Estimation gratuite en 48h — sans engagement — par un expert agréé Bureau Veritas.</p>
<div class="cta-chips">
<span class="chip"><i data-lucide="check-circle"></i> Estimation en 48h</span>
<span class="chip"><i data-lucide="check-circle"></i> Aucun frais caché</span>
<span class="chip"><i data-lucide="check-circle"></i> Expert certifié</span>
</div>
</div>
<div style="display:flex;flex-direction:column;gap:12px;align-items:center">
<a href="https://www.rimsenegal.com/contact" class="btn-sell"><i data-lucide="calculator"></i> Estimer mon bien</a>
</div>
</div>
</div>
</section>
<!-- ══════════════════════════════ FLOATING ACTION BUTTONS ═════ -->
<div class="float-actions" aria-label="Actions rapides">
<a href="tel:+221783724807/+221338234374" class="float-btn float-btn-phone" title="Nous appeler">
<span class="float-icon"><i data-lucide="phone"></i></span>
<span class="float-label">+221783724807 / +221338234374</span>
</a>
<a href="mailto:contact@rimsenegal.com" class="float-btn float-btn-email" title="Nous écrire">
<span class="float-icon"><i data-lucide="mail"></i></span>
<span class="float-label">contact@rimsenegal.com</span>
</a>
<a href="https://www.rimsenegal.com/contact" class="float-btn float-btn-estim" title="Estimer votre bien">
<span class="float-icon"><i data-lucide="trending-up"></i></span>
<span class="float-label">Estimer votre bien</span>
</a>
</div>
</main>
<!-- Popup d'annonce -->
<footer class="footer">
<div class="container">
<div class="foot-grid">
<!-- Brand -->
<div class="foot-brand">
<img src="https://www.rimsenegal.com/uploads/91/logo.png" alt="RIM Sénégal" style="height:44px;width:auto;display:block">
<p>Votre partenaire de confiance pour tous vos projets immobiliers au Sénégal depuis plus de 70 ans.</p>
<div class="foot-socials">
<a href="https://www.facebook.com/rim.immo/?locale=fr_FR" class="fsoc" target="_blank" rel="noopener">
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewbox="0 0 24 24" fill="currentColor"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"/></svg>
</a>
<a href="https://www.instagram.com/rim.immo/" class="fsoc" target="_blank" rel="noopener">
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="5" ry="5"/><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"/><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"/></svg>
</a>
<a href="https://www.linkedin.com/in/rimimmo/" class="fsoc" target="_blank" rel="noopener">
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewbox="0 0 24 24" fill="currentColor"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg>
</a>
</div>
</div>
<!-- Navigation -->
<div class="foot-col">
<h5>Navigation</h5>
<ul>
<li><a href="https://www.rimsenegal.com"><i data-lucide="chevron-right"></i> Accueil</a></li>
<li><a href="https://www.rimsenegal.com/nos-biens"><i data-lucide="chevron-right"></i> Nos biens</a></li>
<li><a href="https://www.rimsenegal.com/promotions"><i data-lucide="chevron-right"></i> Promotions immobilières</a></li>
<li><a href="https://www.rimsenegal.com/articles"><i data-lucide="chevron-right"></i> Actualités & Conseils</a></li>
<li><a href="https://www.rimsenegal.com/contact"><i data-lucide="chevron-right"></i> Contact</a></li>
</ul>
</div>
<!-- Services -->
<div class="foot-col">
<h5>Nos services</h5>
<ul>
<li><a href="#"><i data-lucide="chevron-right"></i> Vente immobilière</a></li>
<li><a href="#"><i data-lucide="chevron-right"></i> Location</a></li>
<li><a href="#"><i data-lucide="chevron-right"></i> Gestion locative</a></li>
<li><a href="https://www.rimsenegal.com/promotions"><i data-lucide="chevron-right"></i> Promotions neuves</a></li>
<li><a href="https://www.rimsenegal.com/contact"><i data-lucide="chevron-right"></i> Estimation gratuite</a></li>
</ul>
</div>
<!-- Contact -->
<div class="foot-col">
<h5>Nous contacter</h5>
<div class="fci"><i data-lucide="map-pin"></i><span>9, rue Vincens Dakar – Sénégal</span></div>
<div class="fci"><i data-lucide="phone"></i><span>+221783724807 / +221338234374</span></div>
<div class="fci"><i data-lucide="mail"></i><span>contact@rimsenegal.com</span></div>
<div class="fci"><i data-lucide="clock"></i><span>Lun – Sam : 8h00 – 18h00</span></div>
</div>
</div>
<div class="foot-bot">
<p>
© 2026 RimSénégal. Tous droits réservés.
</p>
<div class="foot-bot-lnks">
<a href="#">Mentions légales</a>
<a href="#">Confidentialité</a>
<a href="#">Cookies</a>
</div>
</div>
</div>
<!-- Bouton retour en haut -->
<button id="to-top-button"
onclick="goToTop()"
title="Retour en haut"
class="hidden"
style="position:fixed;z-index:50;bottom:24px;right:28px;padding:12px;width:48px;height:48px;border-radius:50%;background:var(--blue);color:#fff;border:none;cursor:pointer;box-shadow:0 4px 16px rgba(0,141,207,.35);transition:all .3s">
<i data-lucide="arrow-up" style="width:22px;height:22px"></i>
<span style="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)">Retour en haut</span>
</button>
</footer>
<!-- Lucide Icons -->
<script src="/js/lucide.min.js"></script>
<script>
// Init Lucide icons
lucide.createIcons();
// Compteur favoris dans le nav
(function() {
function updateNavFavCount() {
var ids = [];
try { ids = JSON.parse(localStorage.getItem('rim_favorites') || '[]'); } catch(e) {}
var badge = document.getElementById('nav-fav-count');
var icon = document.getElementById('nav-fav-icon');
if (!badge) return;
if (ids.length > 0) {
badge.textContent = ids.length;
badge.style.display = 'flex';
if (icon) icon.style.stroke = '#ef4444';
} else {
badge.style.display = 'none';
if (icon) icon.style.stroke = '';
}
}
updateNavFavCount();
window.addEventListener('rim-favorites-changed', updateNavFavCount);
window.addEventListener('storage', updateNavFavCount);
})();
// Éléments décoratifs des page headers (crochets + scan)
document.querySelectorAll('.page-header,.prop-page-header,.promo-page-header,.article-page-header').forEach(function(h){
h.insertAdjacentHTML('afterbegin','<div class="ph-brkt ph-brkt--tl"></div><div class="ph-brkt ph-brkt--br"></div><div class="ph-scan"></div>');
});
// Nav scroll effect
window.addEventListener('scroll', () => {
document.getElementById('navbar').classList.toggle('scrolled', window.scrollY > 8);
});
// Mobile menu toggle
const mobileToggle = document.getElementById('mobileToggle');
const mobileMenu = document.getElementById('mobileMenu');
const navIconMenu = document.getElementById('nav-icon-menu');
const navIconClose = document.getElementById('nav-icon-close');
if (mobileToggle) {
mobileToggle.addEventListener('click', () => {
const isOpen = mobileMenu.classList.contains('open');
mobileMenu.classList.toggle('open', !isOpen);
navIconMenu.style.display = isOpen ? '' : 'none';
navIconClose.style.display = isOpen ? 'none' : '';
});
}
// Mobile sub-menu toggles
document.querySelectorAll('.mobile-sub-toggle').forEach(btn => {
btn.addEventListener('click', () => {
const sub = btn.nextElementSibling;
const isOpen = sub.style.display !== 'none';
sub.style.display = isOpen ? 'none' : 'block';
const icon = btn.querySelector('[data-lucide]');
if (icon) icon.style.transform = isOpen ? '' : 'rotate(180deg)';
});
});
// Desktop dropdown menus
document.querySelectorAll('.nav-dropdown-wrap').forEach(wrap => {
const btn = wrap.querySelector('.nav-dropdown-btn');
const dropdown = wrap.querySelector('.nav-dropdown');
if (btn && dropdown) {
btn.addEventListener('click', () => {
dropdown.classList.toggle('open');
});
document.addEventListener('click', (e) => {
if (!wrap.contains(e.target)) dropdown.classList.remove('open');
});
}
});
// Smooth scroll for anchor links
document.querySelectorAll('a[href^="#"]').forEach(a => {
a.addEventListener('click', e => {
const t = document.querySelector(a.getAttribute('href'));
if (t) { e.preventDefault(); t.scrollIntoView({ behavior: 'smooth', block: 'start' }); }
});
});
// Scroll to top button
var toTopButton = document.getElementById("to-top-button");
if (toTopButton) {
window.addEventListener('scroll', function() {
if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
toTopButton.classList.remove("hidden");
} else {
toTopButton.classList.add("hidden");
}
});
window.goToTop = function() {
window.scrollTo({ top: 0, behavior: 'smooth' });
};
}
</script>
<script>
/* ================================================================
Scripts injectés via — après Lucide, après
que Vue 3 ait monté et re-rendu #app.
On utilise window.load + event delegation sur document pour
survivre au remplacement du DOM par Vue.
================================================================ */
window.addEventListener('load', function () {
/* ── Switcher Acheter / Louer (event delegation — survit au remount Vue) ── */
document.addEventListener('click', function (e) {
var btn = e.target.closest('.hst[data-tab]');
if (!btn) return;
document.querySelectorAll('.hst[data-tab]').forEach(function (b) { b.classList.remove('is-on'); });
btn.classList.add('is-on');
var tx = document.getElementById('searchTransaction');
if (tx) tx.value = btn.getAttribute('data-tab');
});
/* ── Hero : lecture/pause vidéo de fond ─────────────────── */
var heroBgVid = document.getElementById('heroBgVid');
var vidToggle = document.getElementById('heroVidToggle');
var hviPause1 = document.getElementById('hviPause1');
var hviPause2 = document.getElementById('hviPause2');
var hviPlay = document.getElementById('hviPlay');
var vidIsPlaying = true;
if (vidToggle && heroBgVid) {
vidToggle.addEventListener('click', function () {
if (vidIsPlaying) {
heroBgVid.pause();
hviPause1.style.display = 'none';
hviPause2.style.display = 'none';
hviPlay.style.display = '';
vidToggle.setAttribute('aria-label', 'Lire la vidéo');
} else {
heroBgVid.play();
hviPause1.style.display = '';
hviPause2.style.display = '';
hviPlay.style.display = 'none';
vidToggle.setAttribute('aria-label', 'Pause vidéo');
}
vidIsPlaying = !vidIsPlaying;
});
}
/* ── Compteurs animés (stats KPIs) ─────────────────────── */
function animateCount(el) {
var target = parseInt(el.getAttribute('data-target') || '0', 10);
var duration = 1800;
var start = null;
function ease(t) { return t < .5 ? 2*t*t : -1+(4-2*t)*t; }
function step(ts) {
if (!start) start = ts;
var progress = Math.min((ts - start) / duration, 1);
el.textContent = Math.round(ease(progress) * target).toLocaleString('fr-FR');
if (progress < 1) requestAnimationFrame(step);
else el.textContent = target.toLocaleString('fr-FR');
}
requestAnimationFrame(step);
}
/* Déclencher via IntersectionObserver dès que la section est visible */
var kpiObs = new IntersectionObserver(function (entries) {
entries.forEach(function (entry) {
if (entry.isIntersecting) {
entry.target.querySelectorAll('.hkpi-cnt').forEach(function(el) {
animateCount(el);
});
kpiObs.unobserve(entry.target);
}
});
}, { threshold: 0.3 });
var kpiSection = document.querySelector('.hero-kpis');
if (kpiSection) kpiObs.observe(kpiSection);
/* ── Parallaxe souris subtil (desktop uniquement) ────────── */
var heroParallax = document.getElementById('heroParallax');
if (heroParallax && window.matchMedia('(hover:hover)').matches) {
var px = 0, py = 0, rx = 0, ry = 0;
document.addEventListener('mousemove', function (e) {
px = (e.clientX / window.innerWidth - .5) * 12;
py = (e.clientY / window.innerHeight - .5) * 8;
});
(function raf() {
rx += (px - rx) * .055;
ry += (py - ry) * .055;
heroParallax.style.transform = 'translate(' + rx.toFixed(2) + 'px,' + ry.toFixed(2) + 'px)';
requestAnimationFrame(raf);
})();
}
/* ── Accordion services ──────────────────────────────────── */
function accSetHeight(item, open) {
var body = item.querySelector('.acc-body');
var inner = item.querySelector('.acc-body-inner');
if (!body || !inner) return;
body.style.height = open ? (inner.offsetHeight + 'px') : '0';
}
/* Init: set height for the one pre-opened item */
document.querySelectorAll('.acc-item.is-open').forEach(function (item) {
accSetHeight(item, true);
});
document.addEventListener('click', function (e) {
var hd = e.target.closest('.acc-hd');
if (!hd) return;
var item = hd.closest('.acc-item');
if (!item) return;
var isOpen = item.classList.contains('is-open');
/* Close all */
document.querySelectorAll('.acc-item.is-open').forEach(function (other) {
other.classList.remove('is-open');
accSetHeight(other, false);
var btn = other.querySelector('.acc-hd');
if (btn) btn.setAttribute('aria-expanded', 'false');
});
/* Open clicked if it was closed */
if (!isOpen) {
item.classList.add('is-open');
accSetHeight(item, true);
hd.setAttribute('aria-expanded', 'true');
}
if (typeof lucide !== 'undefined') lucide.createIcons();
});
/* ── Floating buttons ────────────────────────────────────── */
document.querySelectorAll('.float-btn').forEach(function(btn) {
btn.addEventListener('mouseenter', function() { this.classList.add('is-open'); });
btn.addEventListener('mouseleave', function() { this.classList.remove('is-open'); });
});
});
</script>
</body>
</html>