﻿/* ════════════════════════════════════════════════════════════
   PAGE LAYOUT — masquage des sections d'accueil hors vue Feed
   (évite la friction "5 écrans de scroll pour atteindre le login")
   ════════════════════════════════════════════════════════════ */
body:not([data-ls-view="feed"]) .ls-hero,
body:not([data-ls-view="feed"]) .ls-how,
body:not([data-ls-view="feed"]) .ls-value-strip,
body:not([data-ls-view="feed"]) .ls-testimonials,
body:not([data-ls-view="feed"]) .ls-trust-banner,
body:not([data-ls-view="feed"]) .ls-earnings { display: none !important; }
body:not([data-ls-view="feed"]) .ls-app { padding-top: calc(var(--header-h) + 24px); min-height: auto; padding-bottom: 32px; }
body:not([data-ls-view="feed"]) .ls-footer { margin-top: 24px; }
body[data-ls-view="login"] .ls-view#view-login,
body[data-ls-view="publish"] .ls-view#view-publish { max-width: 720px; margin: 0 auto; padding: 0 20px 48px; }

:root{
/* ═══════════════════════════════════════════════════════
   PALETTE CONFIANCE DIGITALE — LocalShare v20260628
   Justification : psychologie des couleurs appliquée P2P
   → Teal profond  = confiance institutionnelle (couche 1)
   → Vert eucalyptus = communauté / voisinage (couche 2)
   → Corail chaud  = chaleur humaine + CTA conversion
   → Blanc crème   = transparence, espace, honnêteté
   Voir : 02_Charte_Graphique/Palette/CHARTE_COULEURS_CONFIANCE.md
   ═══════════════════════════════════════════════════════ */

/* Fonds */
--bg:#FAFAF8;--bg-card:#fff;--bg-elevated:#EFF7F4;--bg-input:#FAFAF8;
--bg-light:#F5FAF8;

/* Textes */
--text:#1A2E2B;--text-secondary:#4A6B64;--text-muted:#8AADA8;--text-light:#6B8F8A;

/* Bordures */
--border:#C8DDD9;--border-light:#E0EFEC;

/* Primaire : Teal Profond Confiance */
--primary:#0D7A6E;--primary-light:#E1F0EE;--primary-dark:#0B5E55;
--primary-rgb:13,122,110;

/* Secondaire : Vert Eucalyptus Communauté */
--secondary:#2EAD8A;--secondary-light:#EFF7F4;--secondary-dark:#1A8570;
--secondary-rgb:46,173,138;

/* CTA Corail : Chaleur humaine + conversion */
--cta:#FF6B52;--cta-light:#FFF0ED;--cta-dark:#E8552E;
--cta-rgb:255,107,82;

/* Décoratifs (inchangés) */
--sun:#FFE66D;--sun-light:#FFFDE7;
--sky:#3A9E8A;--sky-light:#E4F4F1;
--purple:#A29BFE;

/* États */
--warning:#FBBF24;--danger:#FF4757;

/* Fonds sombres (hero / earnings) */
--hero-bg:#0B2925;--earnings-bg:#0B2420;

--radius-sm:8px;--radius:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;
--shadow:0 2px 8px rgba(0,0,0,.06);--shadow-md:0 4px 16px rgba(0,0,0,.08);--shadow-lg:0 12px 32px rgba(0,0,0,.1);
--header-h:64px;--transition:.2s cubic-bezier(.4,0,.2,1);
--font:'Inter',-apple-system,sans-serif;--font-display:'Plus Jakarta Sans',var(--font);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}
body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh}

.ls-header{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(255,255,255,.85);backdrop-filter:blur(16px);border-bottom:1px solid rgba(0,0,0,.05);height:var(--header-h);box-shadow:0 1px 3px rgba(0,0,0,.02)}
.ls-header__inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:24px;padding:0 24px;height:100%}
.ls-logo{display:flex;align-items:center;text-decoration:none;flex-shrink:0;transition:transform .2s ease;min-width:150px}
.ls-logo:hover{transform:scale(1.02)}
.ls-logo__img,.custom-logo{display:block;height:48px;width:auto;object-fit:contain;max-width:260px}
.ls-search{flex:1;max-width:540px;position:relative}
.ls-search i{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:18px;pointer-events:none}
.ls-search input{width:100%;padding:12px 20px 12px 46px;background:#f8fafc;border:1px solid transparent;border-radius:var(--radius-full);font-size:15px;color:var(--text);outline:none;transition:all .3s ease;font-family:var(--font)}
.ls-search input::placeholder{color:var(--text-muted)}
.ls-search input:hover{background:#f1f5f9}
.ls-search input:focus{background:#fff;border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-light)}
.ls-nav{display:flex;align-items:center;gap:8px;margin-left:auto}
.ls-nav__btn{position:relative;display:flex;align-items:center;gap:8px;padding:10px 16px;background:transparent;border:none;border-radius:var(--radius-full);color:var(--text-secondary);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;font-family:var(--font)}
.ls-nav__btn:hover,.ls-nav__btn.active{background:var(--primary-light);color:var(--primary-dark)}
.ls-nav__btn i{font-size:22px}
.ls-nav__avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;aspect-ratio:1/1;object-position:center;border:2px solid #fff;box-shadow:0 2px 4px rgba(0,0,0,.1)}
.ls-nav__unread{position:absolute;top:3px;right:5px;min-width:18px;height:18px;padding:0 5px;border-radius:var(--radius-full);background:var(--secondary);color:#fff;border:2px solid #fff;font-size:10px;font-weight:900;line-height:14px;display:inline-flex;align-items:center;justify-content:center}
.ls-nav__unread[hidden]{display:none}
.ls-nav__btn--logout{color:var(--text-muted);padding:10px}
.ls-nav__btn--logout:hover{background:#FFF0F0;color:var(--danger)}

.ls-app{padding-top:var(--header-h);min-height:100vh}
.ls-view{display:none;animation:fadeUp .3s ease}.ls-view--active{display:block}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* HERO CTA */
.ls-hero{position:relative;padding:80px 20px 60px;text-align:center;overflow:hidden;background:var(--hero-bg);min-height:500px;display:flex;align-items:center;justify-content:center}
.ls-hero__bg{position:absolute;inset:0;background:url('../img/hero-bg.jpg') center/cover no-repeat;z-index:0;opacity:0.4}
.ls-hero__bg::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.8) 100%);}
.ls-hero__inner{max-width:800px;margin:0 auto;position:relative;z-index:10;color:#fff}
.ls-hero__pill{display:inline-flex;align-items:center;gap:8px;padding:8px 20px;background:rgba(255,255,255,0.15);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,0.2);border-radius:var(--radius-full);font-size:14px;font-weight:600;margin-bottom:24px;color:#fff}
/* Fusée — palette emoji 🚀 : corps rouge vif + flammes orange/jaune */
.ls-hero__pill-icon{color:#E63946;font-size:22px;filter:drop-shadow(0 0 6px rgba(230,57,70,.55))}
.ls-hero__pill-icon.ph-duotone::after{color:#FFB300;opacity:1}
.ls-hero h1{font-family:var(--font-display);font-size:40px;font-weight:800;margin-bottom:16px;line-height:1.2;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,0.5)}
.ls-hero h1 em{font-style:normal;color:var(--secondary);text-shadow:0 0 20px rgba(var(--secondary-rgb),0.3)}
.ls-hero p{font-size:18px;margin-bottom:32px;line-height:1.6;color:rgba(255,255,255,0.9);text-shadow:0 1px 4px rgba(0,0,0,0.5)}
.ls-hero__ctas{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:8px}
.ls-hero__cta{display:inline-flex;align-items:center;gap:10px;padding:14px 28px;border:none;border-radius:var(--radius-full);font-size:16px;font-weight:700;cursor:pointer;transition:all .3s ease;font-family:var(--font);min-height:50px}
.ls-hero__cta--primary{background:var(--primary);color:#fff;box-shadow:0 0 20px rgba(var(--primary-rgb),0.4)}
.ls-hero__cta--primary:hover{background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 0 30px rgba(var(--primary-rgb),0.6)}
.ls-hero__cta--outline{background:rgba(255,255,255,.08);color:#fff;border:1.5px solid rgba(255,255,255,.6);backdrop-filter:blur(8px)}
.ls-hero__cta--outline:hover{background:rgba(255,255,255,.18);border-color:#fff;transform:translateY(-2px)}
.ls-hero__cta i{font-size:22px}
@media(max-width:560px){
  .ls-hero__ctas{flex-direction:column;align-items:stretch;padding:0 8px}
  .ls-hero__cta{width:100%;justify-content:center}
}
.ls-hero__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:36px auto 0;max-width:1080px}
.ls-hero__stat{display:flex;align-items:center;gap:12px;padding:14px 16px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.18);border-radius:14px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:transform .25s ease,background .25s ease,box-shadow .25s ease;text-align:left;min-width:0}
.ls-hero__stat:hover{transform:translateY(-3px);background:rgba(255,255,255,.16);box-shadow:0 12px 28px rgba(0,0,0,.18)}
.ls-hero__stat>i{font-size:30px;color:var(--secondary);flex-shrink:0;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}
.ls-hero__stat-body{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.ls-hero__stat strong{display:block;font-size:18px;font-weight:800;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,0.35);line-height:1.1;font-family:var(--font-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ls-hero__stat span{font-size:12px;color:rgba(255,255,255,0.85);font-weight:500;margin-top:3px;line-height:1.3}

/* FLOATING ICONS (Neon & Dynamic) */
.ls-hero__floating-icons{position:absolute;inset:0;z-index:5;pointer-events:none}
.float-icon{position:absolute;width:56px;height:56px;background:rgba(255,255,255,0.05);backdrop-filter:blur(8px);border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:26px;border:1px solid rgba(255,255,255,0.1);animation:floatDyn 8s cubic-bezier(0.4,0,0.2,1) infinite alternate}
.float-icon--1{top:15%;left:12%;color:var(--primary);box-shadow:0 0 20px rgba(var(--primary-rgb),0.6),inset 0 0 10px rgba(var(--primary-rgb),0.2);animation-delay:0s;animation-duration:7s}
.float-icon--2{top:45%;right:12%;color:var(--secondary);box-shadow:0 0 20px rgba(var(--secondary-rgb),0.6),inset 0 0 10px rgba(var(--secondary-rgb),0.2);animation-delay:-2s;animation-duration:8s}
.float-icon--3{bottom:20%;left:25%;color:var(--warning);box-shadow:0 0 20px rgba(251,191,36,0.6),inset 0 0 10px rgba(251,191,36,0.2);animation-delay:-4s;animation-duration:6s}
.float-icon--4{top:20%;right:25%;color:#a29bfe;box-shadow:0 0 20px rgba(162,155,254,0.6),inset 0 0 10px rgba(162,155,254,0.2);animation-delay:-3s;animation-duration:9s}
.float-icon--5{bottom:30%;right:30%;color:var(--secondary);box-shadow:0 0 20px rgba(47,228,125,0.55),inset 0 0 10px rgba(47,228,125,0.18);animation-delay:-1s;animation-duration:7.5s}

@keyframes floatDyn{
  0%{transform:translate(0,0) rotate(0deg)}
  33%{transform:translate(15px,-25px) rotate(8deg)}
  66%{transform:translate(-10px,-15px) rotate(-5deg)}
  100%{transform:translate(0,-30px) rotate(10deg)}
}

/* Bandeau succès post-réservation (rassurance novice : délai 48h + annulation possible) */
.ls-reservation-success{
  display:flex;flex-wrap:wrap;align-items:flex-start;gap:14px;
  padding:16px 18px;border-radius:16px;
  background:linear-gradient(135deg,var(--secondary-light) 0%,#F0FAFF 100%);
  border:1px solid rgba(47,228,125,.32);
  margin-top:8px;
}
.ls-reservation-success__icon{font-size:36px;color:var(--secondary-dark);flex-shrink:0;line-height:1}
.ls-reservation-success__icon.ph-duotone::after{color:var(--primary);opacity:1}
.ls-reservation-success__body{flex:1;min-width:180px}
.ls-reservation-success__body strong{display:block;font-size:15px;color:var(--text);font-weight:800;margin-bottom:6px}
.ls-reservation-success__body p{font-size:13px;color:var(--text-secondary);line-height:1.5;margin:6px 0 0;display:flex;align-items:flex-start;gap:8px}
.ls-reservation-success__body p i{color:var(--primary-dark);flex-shrink:0;margin-top:2px}
.ls-reservation-success__cancel{margin-top:6px!important}
.ls-reservation-success__cancel i{color:var(--text-muted)!important}
.ls-reservation-success__actions{flex-basis:100%;display:flex;justify-content:flex-end;margin-top:4px}
@media(max-width:480px){
  .ls-reservation-success{padding:14px}
  .ls-reservation-success__actions{justify-content:stretch}
  .ls-reservation-success__actions .ls-btn{flex:1;justify-content:center}
}

/* Logout row dans le panneau Mes informations (accessible y compris en mobile) */
.ls-profile__logout-row{margin-top:18px;display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.ls-profile__logout-sep{width:100%;border:0;border-top:1px solid var(--border-light);margin:0}
.ls-profile__logout-link{color:var(--text-secondary);border-color:var(--border)}
.ls-profile__logout-link:hover{color:var(--danger);border-color:var(--danger);background:#FFF0F0}

/* ─── HELP FAB GROUP : pilule native cyan unifiée, accent vert chat ─────
   Reprend le code couleur du logo (anneau cyan + accent vert), sans
   overlap maladroit. Container unique avec deux zones cliquables. */
.ls-help-fab-group{
  position:fixed;bottom:24px;right:24px;z-index:280;
  display:inline-flex;align-items:stretch;gap:0;
  padding:5px;border-radius:99px;
  background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);
  box-shadow:0 10px 28px rgba(var(--primary-rgb),.38),0 2px 6px rgba(0,0,0,.10);
  transition:transform .22s cubic-bezier(.4,0,.2,1),box-shadow .22s ease;
}
.ls-help-fab-group:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(var(--primary-rgb),.55),0 4px 10px rgba(0,0,0,.12)}

/* Sous-bouton CHAT : cercle vert "satellite" intégré DANS la pilule cyan
   (reprend l'esprit du logo où le point vert vit dans l'anneau cyan). */
.ls-help-fab-chat{
  width:40px;height:40px;flex:0 0 auto;
  border:0;cursor:pointer;border-radius:50%;
  background:linear-gradient(135deg,var(--secondary) 0%,var(--secondary-dark) 100%);
  color:#fff;
  display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 3px 8px rgba(0,0,0,.18),inset 0 -2px 4px rgba(0,0,0,.12);
  transition:transform .15s ease,filter .15s ease;
}
.ls-help-fab-chat:hover{transform:scale(1.08) rotate(-4deg);filter:brightness(1.06) saturate(1.08)}
.ls-help-fab-chat:active{transform:scale(.96)}
.ls-help-fab-chat i{font-size:20px;line-height:1}
.ls-help-fab-chat.ph-duotone::after{color:rgba(255,255,255,.55);opacity:1}
.ls-help-fab-chat:focus-visible{outline:3px solid #fff;outline-offset:3px}

/* Bouton AIDE principal : zone label/icône à droite dans la pilule */
.ls-help-fab{
  display:inline-flex;align-items:center;gap:8px;
  padding:0 18px 0 14px;border:0;cursor:pointer;
  background:transparent;color:#fff;border-radius:99px;
  font-family:var(--font);font-size:15px;font-weight:700;line-height:1;
  min-height:40px;
  transition:background .15s ease,transform .15s ease;
}
.ls-help-fab:hover{background:rgba(255,255,255,.14);transform:none}
.ls-help-fab:active{background:rgba(255,255,255,.22)}
.ls-help-fab i{font-size:20px;line-height:1}
.ls-help-fab.ph-duotone::after{color:#FFD700;opacity:1}
.ls-help-fab:focus-visible{outline:none;background:rgba(255,255,255,.18);box-shadow:inset 0 0 0 2px #fff}

/* Masque tout le groupe quand une modal plein écran du thème est ouverte */
body.is-modal-open .ls-help-fab-group{display:none}

@media(max-width:768px){
  .ls-help-fab-group{bottom:calc(82px + env(safe-area-inset-bottom));right:14px;padding:4px}
  .ls-help-fab-chat{width:36px;height:36px}
  .ls-help-fab-chat i{font-size:18px}
  .ls-help-fab{padding:0 14px 0 10px;font-size:14px;min-height:36px}
  .ls-help-fab span{display:none}
  .ls-help-fab i{font-size:18px}
}
.ls-help-modal{position:fixed;inset:0;z-index:420;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;pointer-events:none;transition:opacity .25s ease}
.ls-help-modal.is-open{opacity:1;pointer-events:auto}
.ls-help-modal__backdrop{position:absolute;inset:0;background:rgba(7,24,33,.6);backdrop-filter:blur(6px)}
.ls-help-modal__panel{position:relative;background:#fff;border-radius:22px;width:100%;max-width:580px;max-height:88vh;overflow:auto;padding:26px 24px;box-shadow:0 30px 80px rgba(7,24,33,.4)}
.ls-help-modal__close{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;background:rgba(7,24,33,.08);color:var(--text);border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px}
.ls-help-modal h3{font-family:var(--font-display);font-size:20px;font-weight:800;margin-bottom:6px;display:flex;align-items:center;gap:10px;color:var(--text)}
.ls-help-modal h3 i{font-size:28px;color:var(--primary)}
.ls-help-modal h3 i.ph-duotone::after{color:var(--secondary);opacity:1}
.ls-help-modal__intro{font-size:14px;color:var(--text-secondary);margin-bottom:18px}
.ls-help-faq{list-style:none;padding:0;margin:0 0 18px;display:grid;gap:8px}
.ls-help-faq details{border:1px solid var(--border-light);border-radius:12px;background:var(--bg);transition:background .15s ease}
.ls-help-faq details[open]{background:#fff;border-color:var(--primary-light);box-shadow:0 4px 14px rgba(16,50,70,.06)}
.ls-help-faq summary{padding:12px 14px;cursor:pointer;font-weight:700;font-size:14px;color:var(--text);display:flex;align-items:center;gap:10px;list-style:none}
.ls-help-faq summary::-webkit-details-marker{display:none}
.ls-help-faq summary i{font-size:18px;color:var(--primary);flex:0 0 auto}
.ls-help-faq summary::after{content:'+';margin-left:auto;font-size:18px;font-weight:800;color:var(--text-muted);transition:transform .2s ease}
.ls-help-faq details[open] summary::after{content:'−';color:var(--primary-dark)}
.ls-help-faq p{padding:0 14px 14px 44px;font-size:13px;color:var(--text-secondary);line-height:1.55;margin:0}
.ls-help-modal__cta{display:flex;gap:10px;flex-wrap:wrap}
.ls-help-modal__cta .ls-btn{flex:1;min-width:160px;justify-content:center}

/* HOW IT WORKS — onboarding novices */
.ls-how{padding:48px 20px 36px;background:linear-gradient(180deg,#fff 0%,var(--bg) 100%)}
.ls-how__inner{max-width:1100px;margin:0 auto;text-align:center}
.ls-how__title{font-family:var(--font-display);font-size:clamp(22px,3vw,30px);font-weight:800;color:var(--text);margin-bottom:6px}
.ls-how__sub{font-size:15px;color:var(--text-secondary);margin-bottom:28px}
.ls-how__steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;counter-reset:step}
.ls-how__step{position:relative;background:#fff;border:1px solid var(--border-light);border-radius:20px;padding:24px 20px 20px;text-align:left;box-shadow:0 8px 22px rgba(16,50,70,.05);transition:transform .25s ease,box-shadow .25s ease}
.ls-how__step:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(16,50,70,.1)}
.ls-how__num{position:absolute;top:-14px;left:18px;width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-family:var(--font-display);box-shadow:0 6px 14px rgba(var(--primary-rgb),.35);font-size:16px}
.ls-how__icon{font-size:42px;color:var(--primary);margin:8px 0 12px;display:block}
.ls-how__icon.ph-duotone::after{color:var(--secondary);opacity:1}
.ls-how__step h3{font-family:var(--font-display);font-size:17px;font-weight:800;color:var(--text);margin-bottom:6px}
.ls-how__step p{font-size:14px;color:var(--text-secondary);line-height:1.5}
.ls-how__more{display:inline-flex;align-items:center;gap:6px;margin-top:22px;color:var(--primary-dark);font-weight:700;text-decoration:none;font-size:14px}
.ls-how__more:hover{text-decoration:underline}
@media(max-width:768px){
  .ls-how{padding:32px 14px 24px}
  .ls-how__steps{grid-template-columns:1fr;gap:22px}
}

/* TESTIMONIALS — preuve sociale */
.ls-testimonials{padding:42px 20px;background:#fff;border-top:1px solid var(--border-light)}
.ls-testimonials__inner{max-width:1100px;margin:0 auto}
.ls-testimonials__title{font-family:var(--font-display);font-size:clamp(20px,2.6vw,26px);font-weight:800;color:var(--text);text-align:center;margin-bottom:24px}
.ls-testimonials__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.ls-testimonial{margin:0;background:var(--bg);border:1px solid var(--border-light);border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:12px}
.ls-testimonial__head{display:flex;align-items:center;gap:12px}
.ls-testimonial__avatar{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,var(--primary) 0%,var(--secondary) 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;font-family:var(--font-display);flex-shrink:0}
.ls-testimonial__head strong{display:block;font-size:14px;color:var(--text)}
.ls-testimonial__role{font-size:12px;color:var(--text-muted)}
.ls-testimonial blockquote{margin:0;font-size:14px;color:var(--text-secondary);font-style:italic;line-height:1.55;quotes:none}
.ls-testimonial__stars{color:var(--warning);font-size:14px;letter-spacing:1px}
@media(max-width:900px){.ls-testimonials__grid{grid-template-columns:1fr;gap:14px}}

/* VALUE STRIP (fusion Trust + Earnings) */
.ls-value-strip{background:#fff;padding:18px 20px;border-bottom:1px solid var(--border-light)}
.ls-value-strip__inner{
  max-width:1100px;margin:0 auto;
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;
}
.ls-value-item{
  display:flex;align-items:center;gap:12px;
  background:var(--bg);border:1px solid var(--border-light);border-radius:14px;
  padding:12px 14px;min-width:0;
}
.ls-value-item__icon{font-size:28px;color:var(--primary);flex:0 0 auto}
.ls-value-item__icon--accent{color:var(--secondary)}
.ls-value-item__icon--warn{color:var(--warning)}
.ls-value-item strong{display:block;font-size:15px;font-weight:800;color:var(--text);line-height:1.15;font-family:var(--font-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ls-value-item span{display:block;font-size:12px;color:var(--text-secondary);line-height:1.3;margin-top:2px}
@media(max-width:768px){
  .ls-value-strip__inner{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .ls-value-item{padding:10px 12px;gap:10px}
  .ls-value-item__icon{font-size:24px}
  .ls-value-item strong{font-size:14px}
}

@media(max-width:768px){
  .ls-hero h1{font-size:36px}
  .ls-hero__stats{grid-template-columns:repeat(2,minmax(0,1fr));max-width:420px;gap:10px}
  .float-icon{display:none}
}

/* LOCATION BAR */
.ls-location-bar{padding:12px 20px;max-width:1200px;margin:0 auto}
.ls-location-bar__btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:var(--secondary-light);border:1px solid #C6F7E2;border-radius:var(--radius-full);color:#0B8457;font-size:13px;font-weight:500;cursor:pointer;transition:var(--transition);font-family:var(--font)}
.ls-location-bar__btn:hover{background:#C6F7E2}
.ls-location-bar__btn.active{background:var(--secondary);color:#fff;border-color:var(--secondary)}

/* CATEGORIES */
.ls-categories{display:flex;gap:8px;padding:0 20px 16px;width:100%;max-width:none;overflow-x:auto;scrollbar-width:none;position:sticky;top:var(--header-h);z-index:50;background:var(--bg);padding-top:8px;box-sizing:border-box}
.ls-categories::-webkit-scrollbar{display:none}
.ls-cat-pill{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;transition:var(--transition);font-family:var(--font)}
.ls-cat-pill:hover{border-color:var(--primary);color:var(--primary)}
.ls-cat-pill--active{background:var(--secondary-light);color:var(--secondary-dark);border-color:var(--secondary-dark)}
.ls-cat-pill i{font-size:16px}

/* FEED — layout Instagram 1 colonne */
.ls-feed{display:flex;flex-direction:column;align-items:center;gap:0;padding:0 0 40px;max-width:614px;margin:0 auto}

/* CARD — style Instagram */
.ls-card{background:var(--bg-card);border-bottom:1px solid var(--border-light);width:100%;cursor:pointer;animation:fadeUp .4s ease both}
.ls-card:hover{transform:none;box-shadow:none}
.ls-card--highlight{box-shadow:none}

/* Header de carte (avatar + nom + ville) */
.ls-card__header{display:flex;align-items:center;gap:10px;padding:10px 14px}
.ls-card__header img{width:32px;height:32px;border-radius:50%;border:2px solid var(--border);flex-shrink:0}
.ls-card__header-info{flex:1;min-width:0}
.ls-card__header-name{font-size:13px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ls-card__header-loc{font-size:11px;color:var(--text-muted);display:flex;align-items:center;gap:3px}
.ls-card__header-loc i{font-size:12px;color:var(--primary)}
.ls-card__header-menu{background:none;border:none;cursor:pointer;font-size:20px;color:var(--text-muted);padding:4px}

/* Zone photo : carrousel Instagram */
.ls-card__img{position:relative;width:100%;aspect-ratio:4/5;overflow:hidden;background:#F7F1EC}
.ls-card__img img{width:100%;height:100%;object-fit:cover;transition:none}
.ls-card:hover .ls-card__img img{transform:none}
.ls-card__carousel{position:relative;width:100%;aspect-ratio:4/5;overflow:hidden;background:#F7F1EC}
.ls-card__carousel-track{display:flex;width:100%;height:100%;transition:transform .3s ease;will-change:transform}
.ls-card__carousel-track img{flex:0 0 100%;width:100%;height:100%;object-fit:cover}
.ls-card__carousel-nav{position:absolute;top:50%;transform:translateY(-50%);width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.85);border:none;cursor:pointer;font-size:14px;color:#262626;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px rgba(0,0,0,.15);opacity:0;transition:opacity .2s}
.ls-card__carousel:hover .ls-card__carousel-nav{opacity:1}
.ls-card__carousel-nav--prev{left:8px}
.ls-card__carousel-nav--next{right:8px}
.ls-card__carousel-nav:disabled{display:none}
.ls-card__carousel-dots{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);display:flex;gap:4px}
.ls-card__carousel-dots span{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.45);transition:background .2s}
.ls-card__carousel-dots span.active{background:#fff}

.ls-card__badge{position:absolute;top:12px;left:12px;padding:4px 10px;background:rgba(255,255,255,.9);backdrop-filter:blur(8px);color:var(--text);font-size:11px;font-weight:600;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.04em}
.ls-card__distance{position:absolute;top:12px;right:12px;padding:4px 10px;background:var(--secondary);color:#fff;font-size:11px;font-weight:600;border-radius:var(--radius-full);display:flex;align-items:center;gap:4px}

/* Actions Instagram : coeur / message / partager | sauvegarder */
.ls-card__actions{display:flex;align-items:center;padding:6px 14px 2px}
.ls-card__actions-left{display:flex;align-items:center;gap:14px;flex:1}
.ls-card__actions-right{flex:0 0 auto}
.ls-card__action{background:none;border:none;cursor:pointer;font-size:24px;color:var(--text);padding:4px;display:flex;align-items:center;gap:0;transition:transform .15s}
.ls-card__action:hover{transform:scale(1.1)}
.ls-card__action.is-active i{color:var(--danger)}
.ls-card__action--save.is-active i{color:var(--text)}
.ls-card__action small{display:none}

/* Corps texte : prix + titre */
.ls-card__body{padding:4px 14px 12px}
.ls-card__priceline{display:flex;align-items:baseline;gap:8px}
.ls-card__price{font-family:var(--font-display);font-size:15px;font-weight:800;color:var(--text)}
.ls-card__price span{font-size:13px;font-weight:400;color:var(--text-muted)}
.ls-card__title{font-size:14px;font-weight:400;color:var(--text);margin:2px 0 0;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ls-card__meta{display:none}
.ls-card__author{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
.ls-card__author img{width:24px;height:24px;border-radius:50%;border:2px solid var(--border)}
.ls-card__author span{font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ls-verified-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;background:var(--secondary-light);color:var(--secondary-dark);border:1px solid rgba(47,228,125,.28);border-radius:var(--radius-full);font-size:11px;font-weight:700;white-space:nowrap}
.ls-verified-badge i{font-size:14px}
.ls-verified-badge--large{font-size:12px;margin-top:6px}
.ls-verified-badge--pending{background:var(--primary-light);color:var(--primary-dark);border-color:rgba(16,174,234,.25)}
.ls-card__rating{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--warning);font-weight:600}
.ls-card__city{font-size:12px;color:var(--text-muted);display:flex;align-items:center;gap:4px;margin-top:6px}
.ls-card__city i{color:var(--primary)}

.ls-stars{display:inline-flex;gap:2px}
.ls-stars i{color:#9CA3AF;font-size:14px}.ls-stars i.filled{color:var(--warning)}

.ls-feed__loader,.ls-empty{grid-column:1/-1;text-align:center;padding:60px 20px;color:var(--text-muted)}
.ls-empty i{font-size:64px;margin-bottom:16px;opacity:.3}.ls-empty h3{color:var(--text);font-size:18px;margin-bottom:8px}
.ls-load-more{text-align:center;padding:0 20px 40px}

.ls-spinner{width:32px;height:32px;margin:0 auto 12px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* BUTTONS */
.ls-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;border-radius:var(--radius-full);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;border:none;font-family:var(--font)}
.ls-btn--primary{background:var(--primary);color:#fff}
.ls-btn--primary:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 4px 16px rgba(16,174,234,.3)}
.ls-btn--primary:active{transform:scale(.97)}
.ls-btn--outline{background:var(--bg-card);color:var(--text);border:1px solid var(--border)}
.ls-btn--outline:hover{border-color:var(--primary);color:var(--primary)}
.ls-btn--full{width:100%}.ls-btn--sm{padding:8px 16px;font-size:13px}
.ls-btn--danger{background:var(--danger);color:#fff}
.ls-btn--secondary{background:var(--secondary);color:#fff}
.ls-btn--secondary:hover{background:var(--secondary-dark)}

/* FORMS */
.ls-publish,.ls-auth{max-width:560px;margin:0 auto;padding:32px 20px}
.ls-publish__title{font-family:var(--font-display);font-size:24px;font-weight:700;margin-bottom:24px;display:flex;align-items:center;gap:10px}
.ls-publish__title i{color:var(--primary)}
.ls-form__group{margin-bottom:16px}
.ls-form__group label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--text-secondary)}
.ls-form__group input,.ls-form__group select,.ls-form__group textarea{width:100%;padding:11px 14px;background:#fff;border:1.5px solid var(--border);border-radius:var(--radius);font-size:14px;color:var(--text);outline:none;transition:var(--transition);font-family:var(--font)}
.ls-form__group input::placeholder,.ls-form__group textarea::placeholder{color:var(--text-muted)}
.ls-form__group input:focus,.ls-form__group select:focus,.ls-form__group textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
.ls-form__group textarea{resize:vertical;min-height:100px}
.ls-form__row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ls-form__upload{margin-bottom:20px}
.ls-form__upload-preview{width:100%;aspect-ratio:16/10;border:2px dashed var(--border);border-radius:var(--radius-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;cursor:pointer;color:var(--text-muted);transition:var(--transition);overflow:hidden;background:var(--bg)}
.ls-form__upload-preview:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}
.ls-form__upload-preview i{font-size:40px}.ls-form__upload-preview p{font-size:14px}
.ls-form__upload-preview img{width:100%;height:100%;object-fit:cover}

/* AUTH */
.ls-auth__tabs{display:flex;gap:0;margin-bottom:24px;border-bottom:2px solid var(--border)}
.ls-auth__tab{flex:1;padding:14px;text-align:center;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;font-size:15px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:var(--transition);font-family:var(--font)}
.ls-auth__tab--active{color:var(--primary);border-bottom-color:var(--primary)}
.ls-auth__form{display:none}.ls-auth__form--active{display:block;animation:fadeUp .3s ease}

/* PROFILE */
.ls-profile{max-width:800px;margin:0 auto;padding:32px 20px}
.ls-profile__header{display:flex;gap:24px;align-items:center;padding:32px;background:var(--bg-card);border-radius:var(--radius-xl);border:1px solid var(--border-light);margin-bottom:32px;box-shadow:var(--shadow)}
.ls-profile__avatar{width:96px;height:96px;border-radius:50%;object-fit:cover;aspect-ratio:1/1;object-position:center;border:3px solid var(--primary-light)}
.ls-profile__info h2{font-family:var(--font-display);font-size:24px;font-weight:700}
.ls-profile__joined{font-size:13px;color:var(--text-muted);margin-top:2px}
.ls-profile__stats{display:flex;gap:24px;margin-top:12px}
.ls-stat{text-align:center}.ls-stat strong{display:block;font-size:20px;font-weight:700;color:var(--primary)}.ls-stat span{font-size:12px;color:var(--text-muted)}
.ls-profile__section-title{font-size:18px;font-weight:700;margin-bottom:16px}
.ls-feed--profile{padding:0}
.ls-identity-card,.ls-contract-form,.ls-reservation-form{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:18px;margin-bottom:24px}
.ls-identity-card{display:flex;align-items:center;justify-content:space-between;gap:16px}
.ls-identity-card--doc-choice{align-items:stretch;flex-direction:column}
.ls-profile-details{align-items:flex-start}
.ls-profile-details__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;flex:1}
.ls-profile-details__grid input{width:100%}
.ls-profile-details{align-items:stretch;flex-direction:column}
.ls-profile-details__head{width:100%;padding-bottom:12px;border-bottom:1px solid var(--border-light)}
.ls-profile-details__section{width:100%;padding-top:16px}
.ls-profile-details__section h4{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800;color:var(--text);margin-bottom:10px}
.ls-profile-details__grid{width:100%;flex:none}
.ls-profile-details__grid .ls-form__group{margin-bottom:0}
.ls-form__group--wide{grid-column:1/-1}
.ls-profile-details__submit{align-self:flex-start;margin-top:4px}
.ls-contract-article-preview{margin-top:10px}
.ls-contract-article-preview__empty{border:1px dashed var(--border);border-radius:var(--radius);padding:12px;color:var(--text-secondary);font-size:13px;background:var(--bg)}
.ls-contract-article-preview__card{display:grid;grid-template-columns:78px 1fr;gap:12px;align-items:center;border:1px solid var(--border-light);border-radius:var(--radius);padding:10px;background:#F7FCFF}
.ls-contract-article-preview__card img{width:78px;height:78px;object-fit:cover;border-radius:10px;background:var(--bg)}
.ls-contract-article-preview__card strong{display:block;font-size:14px;font-weight:800;margin-bottom:4px}
.ls-contract-article-preview__card p{font-size:12px;color:var(--text-secondary);margin-bottom:3px}
.ls-contract-article-preview__card small{font-size:11px;font-weight:700;color:var(--primary)}
.ls-identity-card h3,.ls-contract-form h3,.ls-reservation-form h3{font-size:16px;font-weight:800;margin-bottom:4px;display:flex;align-items:center;gap:8px}
.ls-identity-card p,.ls-form__hint,.ls-contract-login,.ls-reservation-login{font-size:12px;color:var(--text-secondary)}
.ls-identity-card form{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ls-identity-card input[type=file],.ls-form input[type=file]{font-size:13px;max-width:260px}
.ls-contract-form,.ls-reservation-form{margin-top:20px}
.ls-contract-form__result,.ls-reservation-form__result{margin-top:12px;font-size:13px;color:var(--secondary-dark);font-weight:700}
.ls-reservation-form__result .ls-btn{margin-top:8px}
.ls-contract-link{display:inline-flex;align-items:center;gap:6px;color:var(--primary);font-weight:700;text-decoration:none}
.ls-contract-link:hover{text-decoration:underline}

/* MODAL */
.ls-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);backdrop-filter:blur(4px);z-index:200;opacity:0;pointer-events:none;transition:opacity .3s}.ls-modal-overlay.active{opacity:1;pointer-events:all}
.ls-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.95);width:90%;max-width:640px;max-height:90vh;background:#fff;border-radius:var(--radius-xl);z-index:201;overflow-y:auto;opacity:0;pointer-events:none;transition:all .3s;box-shadow:var(--shadow-lg)}
.ls-modal.active{opacity:1;pointer-events:all;transform:translate(-50%,-50%) scale(1)}
.ls-modal__close{position:absolute;top:16px;right:16px;z-index:10;width:36px;height:36px;border-radius:50%;background:rgba(0,0,0,.5);color:#fff;border:none;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center}
.ls-detail__img{width:100%;aspect-ratio:4/3;object-fit:cover}
.ls-detail__body{padding:24px}
.ls-detail__price-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.ls-detail__price{font-family:var(--font-display);font-size:28px;font-weight:800;color:var(--primary)}.ls-detail__price span{font-size:15px;font-weight:400;color:var(--text-muted)}
.ls-verified-badge--price{font-size:12px;padding:5px 10px}
.ls-detail__title{font-size:20px;font-weight:700;margin:8px 0}
.ls-detail__rating{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:13px;color:var(--text-secondary)}
.ls-detail__rating span{font-weight:700;color:var(--text)}
.ls-detail__desc{color:var(--text-secondary);line-height:1.7;margin-bottom:20px}
.ls-detail__tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}
.ls-detail__tag{padding:6px 12px;background:var(--bg);border-radius:var(--radius-full);font-size:12px;font-weight:500;color:var(--text-secondary);display:flex;align-items:center;gap:4px;border:1px solid var(--border)}
.ls-detail__footer-owner{margin-top:22px;padding:16px;border:1px solid var(--border-light);border-radius:var(--radius);background:var(--bg);display:flex;align-items:center;gap:12px;font-size:13px;color:var(--text-secondary)}
.ls-detail__footer-owner img{width:44px;height:44px;border-radius:50%;border:2px solid var(--border)}
.ls-detail__footer-owner div{display:grid;gap:3px;min-width:0}
.ls-detail__footer-owner strong{font-size:14px;color:var(--text);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ls-reservation-price{margin:-6px 0 14px;padding:10px 12px;border:1px solid rgba(16,174,234,.18);border-radius:var(--radius);background:var(--primary-light);display:grid;gap:3px;font-size:12px;color:var(--text-secondary)}
.ls-reservation-price strong{font-size:16px;color:var(--primary-dark)}

/* REVIEWS */
.ls-reviews{margin-top:24px;border-top:1px solid var(--border);padding-top:20px}
.ls-reviews__title{font-size:16px;font-weight:700;margin-bottom:16px}
.ls-review{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--border-light)}
.ls-review img{width:36px;height:36px;border-radius:50%}
.ls-review__content{flex:1}.ls-review__header{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.ls-review__header strong{font-size:13px}.ls-review__header span{font-size:11px;color:var(--text-muted)}
.ls-review p{font-size:13px;color:var(--text-secondary)}
.ls-review-form{margin-top:16px}
.ls-review-form p{font-size:13px;font-weight:700;margin-bottom:8px}
.ls-review-form textarea{width:100%;padding:10px;border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font);font-size:13px;margin-bottom:8px}
.ls-review-gate{font-size:13px;color:var(--text-muted);margin-top:12px;padding:10px 12px;border:1px dashed var(--border);border-radius:var(--radius);background:var(--bg)}
.ls-review-form__stars{display:flex;gap:4px;margin-bottom:12px}
.ls-review-form__stars i{font-size:24px;color:var(--text-muted);cursor:pointer;transition:var(--transition)}
.ls-review-form__stars i:hover,.ls-review-form__stars i.active{color:var(--warning)}

/* TOASTS */
.ls-toasts{position:fixed;bottom:24px;right:24px;z-index:300;display:flex;flex-direction:column;gap:8px}
.ls-toast{padding:14px 20px;background:#fff;color:var(--text);border:1px solid var(--border);border-radius:var(--radius);font-size:14px;font-weight:500;box-shadow:var(--shadow-lg);animation:slideIn .3s ease;max-width:360px}
.ls-toast--success{border-color:var(--secondary);color:#0B8457}.ls-toast--error{border-color:var(--danger);color:var(--danger)}
.ls-toast--info{border-color:var(--primary);color:var(--primary-dark)}
.ls-form__forgot{text-align:right;margin-top:8px}
.ls-form__forgot a{color:var(--primary-dark);text-decoration:none;font-weight:600;display:inline-flex;align-items:center;gap:4px}
.ls-form__forgot a:hover{text-decoration:underline}
@keyframes slideIn{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}

/* LEGAL PAGES */
.ls-page{max-width:800px;margin:0 auto;padding:40px 20px}
.ls-page__title{font-family:var(--font-display);font-size:28px;font-weight:800;margin-bottom:24px;color:var(--text)}
.ls-page__content{color:var(--text-secondary);line-height:1.8;font-size:15px}
.ls-page__content h2{font-size:20px;font-weight:700;color:var(--text);margin:28px 0 12px;padding-top:16px;border-top:1px solid var(--border-light)}
.ls-page__content ul{margin:8px 0 16px 24px}.ls-page__content li{margin-bottom:6px}
.ls-page__content table{width:100%;border-collapse:collapse;margin:16px 0;font-size:13px}
.ls-page__content th,.ls-page__content td{padding:10px 12px;border:1px solid var(--border);text-align:left}
.ls-page__content th{background:var(--bg);font-weight:600;color:var(--text)}
.ls-page__content a{color:var(--primary)}
.ls-page__content strong{color:var(--text)}
.ls-contract-page{max-width:920px}
.ls-contract-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.ls-contract-sign-panel{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--border-light);border-radius:var(--radius);background:#fff;padding:12px 14px;margin-bottom:18px}
.ls-contract-sign-panel p{margin:0;font-size:13px;color:var(--text-secondary)}
.ls-contract-print h1{font-family:var(--font-display);font-size:28px;color:var(--text);margin-bottom:10px}
.ls-contract-print h2{font-size:20px;margin:28px 0 12px;color:var(--primary)}
.ls-contract-print h3{font-size:16px;margin:16px 0 8px;color:var(--text)}
.ls-contract-parties{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.ls-contract-parties>div{border:1px solid var(--border);border-radius:var(--radius);padding:14px;background:var(--bg-card)}
.ls-contract-signature-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}
.ls-contract-signature-card{border:1px solid var(--border);border-radius:var(--radius);padding:12px;background:#fff}
.ls-contract-signature-card.is-signed{border-color:rgba(47,228,125,.38);background:#F0FFF7}
.ls-contract-signature-card.is-pending{border-style:dashed;background:var(--bg)}
.ls-contract-signature-card p{margin:5px 0;font-size:13px}
.ls-contract-cancelled{border:1px solid rgba(239,68,68,.22);border-left:4px solid var(--danger);border-radius:var(--radius);background:#FFF0F0;color:#8F1D1D;padding:12px 14px;margin:14px 0}
.ls-contract-gallery{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}
.ls-contract-gallery img{width:120px;height:90px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}
.ls-contract-condition-table{width:100%;border-collapse:collapse;margin:14px 0 18px;font-size:12px}
.ls-contract-condition-table th,.ls-contract-condition-table td{border:1px solid var(--border);padding:9px 10px;vertical-align:top;text-align:left}
.ls-contract-condition-table th{background:var(--bg);font-weight:800;color:var(--text)}
.ls-contract-condition-table td:nth-child(2),.ls-contract-condition-table td:nth-child(3){min-width:150px;height:42px}

@media print{
  .ls-header,.ls-footer,.ls-contract-actions,.ls-cookie-banner,.ls-modal-overlay,.ls-modal,.ls-toasts{display:none!important}
  .ls-app{padding:0}
  .ls-page{max-width:none;padding:0}
  body{background:#fff;color:#111}
  .ls-contract-parties>div{break-inside:avoid}
}
@media(max-width:720px){
  .ls-contract-actions{justify-content:stretch}
  .ls-contract-actions .ls-btn{width:100%}
  .ls-contract-signature-grid,.ls-contract-parties{grid-template-columns:1fr}
}

.ls-footer{padding:32px 20px 18px;border-top:1px solid var(--border-light);color:var(--text-muted);font-size:13px;background:#fff}
.ls-footer__cols{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:32px;max-width:1080px;margin:0 auto 18px;text-align:left}
.ls-footer__col h4{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--text);margin-bottom:10px;font-weight:800}
.ls-footer__col ul{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.ls-footer__col a{color:var(--text-secondary);text-decoration:none;font-size:13px;transition:color .15s ease}
.ls-footer__col a:hover{color:var(--primary);text-decoration:underline}
.ls-footer__logo{display:inline-flex;align-items:center;gap:9px;text-decoration:none;margin-bottom:8px;color:var(--primary)}
.ls-footer__logo:hover{text-decoration:none}
.ls-footer__logo-img{display:block;width:42px;height:42px;object-fit:contain;flex:0 0 auto}
.ls-footer__wordmark{display:inline-flex;align-items:center;font-family:var(--font-display);font-size:24px;font-weight:800;line-height:1;color:var(--primary);letter-spacing:0;white-space:nowrap}
.ls-footer__wordmark-share{color:var(--secondary)}
.ls-footer__wordmark-domain{color:var(--primary);font-size:.72em;font-weight:800;margin-left:1px;align-self:flex-end;line-height:.95}
.ls-footer__brand{font-family:var(--font-display);font-size:22px;font-weight:800;color:var(--primary);display:block;margin-bottom:6px}
.ls-footer__brand span{color:var(--secondary)}
.ls-footer__sub{font-size:12px;color:var(--text-muted);line-height:1.5;margin-bottom:10px}
.ls-footer__copy{font-size:12px;color:var(--text-muted);text-align:center;border-top:1px solid var(--border-light);padding-top:14px;margin:0}
.ls-footer__by{color:inherit;text-decoration:none;font-weight:600;transition:color .15s ease}
.ls-footer__by:hover{color:var(--primary);text-decoration:underline}
.ls-footer__social{display:flex;gap:10px;margin-top:6px}
.ls-footer__social a{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:var(--bg);color:var(--text-secondary);transition:all .2s ease;text-decoration:none}
.ls-footer__social a:hover{background:var(--primary);color:#fff;transform:translateY(-2px)}
.ls-footer__social i{font-size:18px}
@media(max-width:768px){
  .ls-footer__cols{grid-template-columns:1fr;gap:22px;text-align:left}
  .ls-footer__col h4{margin-bottom:8px}
}

/* Password strength meter */
.ls-pwd-strength{margin-top:8px}
.ls-pwd-strength__bar{height:4px;background:#E5EDF2;border-radius:99px;overflow:hidden;position:relative}
.ls-pwd-strength__fill{height:100%;width:0;background:var(--danger);border-radius:99px;transition:width .25s ease,background-color .25s ease}
.ls-pwd-strength__label{font-size:11px;font-weight:700;color:var(--text-muted);margin-top:4px;display:block;letter-spacing:.02em}
.ls-pwd-strength--weak   .ls-pwd-strength__fill{width:25%;background:#FF4757}
.ls-pwd-strength--fair   .ls-pwd-strength__fill{width:55%;background:#FBBF24}
.ls-pwd-strength--good   .ls-pwd-strength__fill{width:80%;background:#10AEEA}
.ls-pwd-strength--strong .ls-pwd-strength__fill{width:100%;background:var(--secondary)}
.ls-pwd-strength--weak   .ls-pwd-strength__label{color:var(--danger)}
.ls-pwd-strength--fair   .ls-pwd-strength__label{color:#9A6700}
.ls-pwd-strength--good   .ls-pwd-strength__label{color:var(--primary-dark)}
.ls-pwd-strength--strong .ls-pwd-strength__label{color:var(--secondary-dark)}

.ls-cookie-banner{position:fixed;bottom:0;left:0;right:0;z-index:250;background:#fff;border-top:1px solid var(--border);box-shadow:0 -4px 20px rgba(0,0,0,.1);padding:16px 20px}
.ls-cookie-banner__inner{max-width:1000px;margin:0 auto;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.ls-cookie-banner__inner p{flex:1;font-size:13px;color:var(--text-secondary);min-width:250px}
.ls-cookie-banner__inner a{color:var(--primary);text-decoration:underline}
.ls-cookie-banner__actions{display:flex;gap:8px;flex:0 0 auto}
.ls-cookie-banner__actions .ls-btn{white-space:nowrap}
@media(max-width:540px){
  .ls-cookie-banner__actions{width:100%;justify-content:flex-end}
  .ls-cookie-banner__actions .ls-btn{flex:1}
}

.ls-card__delete{position:absolute;bottom:12px;right:12px;width:32px;height:32px;border-radius:50%;background:rgba(255,71,87,.9);color:#fff;border:none;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;opacity:0;transition:var(--transition)}
.ls-card:hover .ls-card__delete{opacity:1}

/* ─── Verso prompt : encart affiché si extraction recto incomplète ─── */
.ls-id-doc__verso-prompt{margin:12px 0 0;padding:14px 14px;border-radius:14px;background:var(--secondary-light);border:1px solid rgba(var(--secondary-rgb),.35);display:flex;flex-direction:column;gap:10px;animation:fadeUp .25s ease}
.ls-id-doc__verso-msg{margin:0;display:flex;align-items:flex-start;gap:8px;font-size:13.5px;color:var(--text);line-height:1.5}
.ls-id-doc__verso-msg i{color:var(--secondary-dark);font-size:18px;flex:0 0 auto;margin-top:1px}
.ls-id-doc__verso-msg strong{color:var(--secondary-dark);font-weight:700}
.ls-id-doc__verso-btn{align-self:flex-start}

/* ─── Footer logo : copie stricte du header (.ls-logo) ─────────────
   Même image (logo-icon.png), mêmes dimensions, mêmes couleurs wordmark.
   Aucun effet (pas de drop-shadow, pas de hover-background) pour matcher
   exactement le header. */
.ls-footer__logo{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--primary);transition:transform .2s ease;margin-bottom:8px}
.ls-footer__logo:hover{transform:scale(1.02)}
.ls-footer__logo-img{display:block;height:50px;width:auto;max-width:170px;object-fit:contain;flex:0 0 auto}
.ls-footer__wordmark{display:inline-flex;align-items:center;font-family:var(--font-display);font-size:28px;font-weight:800;line-height:1;color:var(--primary);letter-spacing:0;white-space:nowrap;flex-shrink:0}
.ls-footer__wordmark-share{color:var(--secondary)}
.ls-footer__wordmark-domain{color:var(--primary);font-size:.74em;font-weight:800;margin-left:1px;align-self:flex-end;line-height:.95}
@media(max-width:768px){
  .ls-footer__logo{gap:8px}
  .ls-footer__logo-img{height:40px;width:40px;max-width:40px}
  .ls-footer__wordmark{font-size:22px}
}

/* RESPONSIVE */
@media(max-width:768px){
.ls-search{display:none}
.ls-logo__img,.custom-logo{height:42px;max-width:190px}
.ls-feed{padding:0 0 32px}
.ls-categories{padding:0 12px 12px}
.ls-profile__header{flex-direction:column;text-align:center;padding:24px}.ls-profile__stats{justify-content:center}
.ls-identity-card{align-items:flex-start;flex-direction:column}
.ls-identity-card form{width:100%}
.ls-modal{width:100%;max-width:100%;max-height:100vh;border-radius:0;top:0;left:0;transform:translateY(20px)}.ls-modal.active{transform:translateY(0)}
.ls-form__row{grid-template-columns:1fr}
.ls-card__title{font-size:13px}.ls-card__price{font-size:14px}
.ls-hero h1{font-size:24px}.ls-hero__stats{gap:10px}
/* C1 — Les anciennes règles transformant .ls-nav en barre basse mobile ont été
   retirées : sur mobile, .ls-nav (#main-nav) est masquée et remplacée par
   .ls-bottomnav (voir bloc « BOTTOM-NAV MOBILE » en fin de feuille). */
}
@media(max-width:480px){.ls-feed{padding:0}.ls-card__carousel,.ls-card__img{aspect-ratio:4/5}}
@media(max-width:640px){.ls-contract-parties{grid-template-columns:1fr}}

/* UX polish */
body{background:linear-gradient(180deg,#F7FCFF 0%,#F4FBF7 100%);overflow-x:hidden}
a,button,input,select,textarea{touch-action:manipulation}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--primary);outline-offset:3px;box-shadow:0 0 0 5px rgba(var(--primary-rgb),.18)}
button:disabled,.ls-btn:disabled{opacity:.68;cursor:not-allowed;transform:none!important;box-shadow:none!important}
.ls-header{background:rgba(255,255,255,.92)}
.ls-header__inner{gap:18px}
.ls-logo{min-width:178px}
.ls-logo__img,.custom-logo{height:44px;max-width:230px}
.ls-search input{height:44px;background:#fff;border-color:var(--border-light)}
.ls-hero{min-height:430px;padding:70px 20px 48px}
.ls-hero__bg{opacity:.5;filter:saturate(.9)}
.ls-hero__bg::after{background:linear-gradient(180deg,rgba(6,30,42,.72) 0%,rgba(6,30,42,.58) 48%,rgba(6,30,42,.82) 100%)}
.ls-hero__pill{background:rgba(255,255,255,.18);box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}
.ls-hero h1{font-size:clamp(34px,5vw,58px);letter-spacing:0}
.ls-hero p{max-width:680px;margin-left:auto;margin-right:auto}
.ls-hero__stats{gap:14px}
.ls-location-bar{padding-top:18px}
.ls-categories{top:var(--header-h);padding-bottom:12px;background:rgba(247,252,255,.92);backdrop-filter:blur(14px);border-bottom:1px solid rgba(221,239,246,.7)}
.ls-cat-pill{min-height:38px;background:#fff;box-shadow:0 1px 4px rgba(16,174,234,.04)}
.ls-feed{padding-bottom:52px}
.ls-card{border-radius:0;box-shadow:none}
.ls-card:hover{box-shadow:none}
.ls-card__carousel,.ls-card__img{aspect-ratio:4/5;background:#EAF8FD}
.ls-card__title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.35}
.ls-verified-badge{flex:0 0 auto}
.ls-publish,.ls-auth,.ls-profile{padding-top:42px}
.ls-form,.ls-auth__form--active{background:#fff;border:1px solid var(--border-light);border-radius:18px;box-shadow:0 10px 30px rgba(16,50,70,.06);padding:22px}
.ls-profile .ls-form{background:transparent;border:0;box-shadow:none;padding:0}
.ls-form__group input,.ls-form__group select,.ls-form__group textarea{min-height:44px}
.ls-form__hint{display:block;margin-top:6px;line-height:1.45}
.ls-auth__tabs{background:#fff;border:1px solid var(--border-light);border-radius:var(--radius-full);padding:4px;box-shadow:var(--shadow);margin-bottom:18px}
.ls-auth__tab{border:0;border-radius:var(--radius-full);margin:0;padding:11px 14px}
.ls-auth__tab--active{background:var(--primary);color:#fff;border:0}
.ls-profile__header,.ls-identity-card,.ls-contract-form,.ls-reservation-form{border-radius:18px;box-shadow:0 10px 30px rgba(16,50,70,.06)}
.ls-identity-card input[type=file],.ls-form input[type=file]{max-width:100%;padding:8px;background:var(--bg);border-radius:var(--radius)}
.ls-modal-overlay{background:rgba(7,24,33,.58)}
.ls-modal{max-width:880px;border-radius:20px;box-shadow:0 24px 80px rgba(7,24,33,.28)}
.ls-modal__close{background:rgba(7,24,33,.72)}
.ls-modal__close:hover{background:rgba(7,24,33,.92)}
.ls-detail__img{aspect-ratio:16/10;background:#EAF8FD}
.ls-detail__title{font-size:24px;line-height:1.25}
.ls-detail__desc{font-size:15px}
.ls-detail__tag{background:#F7FCFF}
.ls-reviews{margin-top:28px}
.ls-toasts{left:auto;right:20px;bottom:20px}
/* Mobile : toasts et cookie banner remontent au-dessus de la nav bottom */
@media(max-width:768px){
  .ls-toasts{bottom:calc(90px + env(safe-area-inset-bottom));right:12px;left:12px;align-items:stretch}
  .ls-cookie-banner{bottom:calc(72px + env(safe-area-inset-bottom));border-radius:14px 14px 0 0;margin:0 6px}
}
.ls-toast{border-left:4px solid var(--primary)}
.ls-cookie-banner{padding:14px 20px}

@media(min-width:900px){
  .ls-modal__content{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);max-height:88vh}
  .ls-detail__img{height:100%;min-height:520px;aspect-ratio:auto}
  .ls-detail__body{overflow:auto}
}

@media(max-width:768px){
  .ls-header__inner{padding:0 14px}
  .ls-logo{min-width:138px}
  .ls-logo__img,.custom-logo{height:34px;max-width:152px}
  .ls-hero{min-height:390px;padding:48px 16px 38px}
  .ls-hero p{font-size:16px}
  .ls-hero__cta{width:100%;max-width:360px;padding:14px 20px;font-size:15px}
  .ls-hero__stats{grid-template-columns:repeat(2,minmax(0,1fr));max-width:420px;gap:10px}
  .ls-feed{padding-left:0;padding-right:0}
  .ls-card__title{font-size:14px}
  .ls-card__price{font-size:14px}
  .ls-publish,.ls-auth,.ls-profile{padding:24px 14px}
  .ls-form,.ls-auth__form--active{padding:18px;border-radius:16px}
  .ls-modal{width:100%;max-width:100%;height:100%;max-height:100%;border-radius:0}
  .ls-detail__body{padding:20px 16px 90px}
  .ls-toasts{left:14px;right:14px;bottom:86px}
  .ls-toast{max-width:none}
  .ls-cookie-banner{bottom:64px}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}
}

/* Header logo lockup — l'image utilise toute la hauteur, le wordmark ne se coupe pas */
.ls-logo{width:auto;min-width:auto;height:54px;justify-content:flex-start;gap:10px;flex-shrink:0;overflow:visible}
.ls-logo__img,.custom-logo{height:50px;width:auto;max-width:170px;object-fit:contain;flex:0 0 auto}
.ls-logo__wordmark{display:inline-flex;align-items:center;font-family:var(--font-display);font-size:28px;font-weight:800;line-height:1;color:var(--primary);letter-spacing:0;white-space:nowrap;flex-shrink:0}
.ls-logo__wordmark-share{color:var(--secondary)}
@media(max-width:768px){
  .ls-logo{min-width:156px;height:46px;gap:8px}
  .ls-logo__img,.custom-logo{width:40px;height:40px;max-width:40px}
  .ls-logo__wordmark{font-size:22px}
}
@media(max-width:420px){
  .ls-logo{min-width:46px}
  .ls-logo__wordmark{display:none}
}

/* Email verification banner */
.ls-email-verify-banner{display:flex;align-items:center;gap:12px;background:#FFF8E7;border:1px solid #FFC107;border-radius:var(--radius-lg);padding:14px 18px;margin-bottom:20px;flex-wrap:wrap}
.ls-email-verify-banner i{font-size:22px;color:#FF9800;flex-shrink:0}
.ls-email-verify-banner p{flex:1;font-size:13px;color:var(--text);margin:0;min-width:160px}
/* Contract tab form */
.ls-contract-tab-form{border:none;box-shadow:none;padding:0;margin-bottom:0;background:transparent}
.ls-contract-renter-info{display:flex;align-items:flex-start;gap:10px;background:var(--bg-light);border:1px solid var(--border-light);border-radius:8px;padding:10px 14px;margin:8px 0 4px}
.ls-contract-renter-info i{font-size:20px;color:var(--primary);flex-shrink:0;margin-top:2px}
.ls-contract-renter-info div{display:flex;flex-direction:column;gap:2px}
.ls-contract-renter-info strong{font-size:14px;color:var(--text)}
.ls-contract-renter-info span{font-size:12px;color:var(--text-light)}
/* Identity extraction */
.ls-identity-extract-error{display:flex;align-items:center;gap:8px;background:#FFF3F3;border:1px solid #FFCDD2;border-radius:8px;padding:10px 14px;color:#C62828;font-size:13px;margin-top:10px}
.ls-identity-extract-error i{font-size:18px;flex-shrink:0}
.ls-identity-extracted{margin-top:14px;padding-top:14px;border-top:1px solid var(--border-light)}
.ls-identity-extracted__intro{font-size:13px;color:#2E7D32;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.ls-identity-extracted__intro i{font-size:16px}
/* Profile settings */
.ls-profile__settings-btn{margin-left:auto;align-self:flex-start;flex-shrink:0}
.ls-profile__settings-btn.is-active{background:var(--primary);color:#fff;border-color:var(--primary)}
.ls-profile__settings-panel{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-xl);padding:20px 24px;margin-bottom:24px;box-shadow:var(--shadow)}
.ls-profile__settings-panel h4{font-size:16px;font-weight:700;margin-bottom:16px;display:flex;align-items:center;gap:8px}
/* Account management */
.ls-account-tools{background:#fff;border:1px solid var(--border-light);border-radius:18px;box-shadow:0 10px 30px rgba(16,50,70,.06);padding:20px;margin-bottom:28px}
.ls-account-tools__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}
.ls-account-tools__head h3{font-size:18px;font-weight:800;margin-bottom:3px}
.ls-account-tools__head p{font-size:13px;color:var(--text-secondary)}
.ls-account-tabs{display:flex;gap:6px;background:var(--bg);border:1px solid var(--border-light);border-radius:var(--radius-full);padding:4px;margin-bottom:16px}
.ls-account-tab{flex:1;border:0;background:transparent;border-radius:var(--radius-full);padding:10px 14px;font-family:var(--font);font-size:13px;font-weight:700;color:var(--text-secondary);cursor:pointer}
.ls-account-tab.active{background:var(--primary);color:#fff}
.ls-account-panel{display:none}
.ls-account-panel.active{display:block}
.ls-account-list{display:grid;gap:14px}
.ls-account-empty{padding:22px;text-align:center;color:var(--text-muted);background:var(--bg);border-radius:var(--radius);font-size:13px}
.ls-management-card{display:grid;grid-template-columns:112px 1fr;gap:16px;border:1px solid var(--border-light);border-radius:16px;padding:14px;background:#fff}
.ls-management-card>img{width:112px;height:112px;object-fit:cover;border-radius:12px;background:var(--bg)}
.ls-management-card__top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.ls-management-card__top h4,.ls-location-row h4{font-size:15px;font-weight:800;margin-bottom:4px}
.ls-management-card__top p,.ls-location-row p{font-size:12px;color:var(--text-secondary)}
.ls-management-edit{background:transparent;border:0;box-shadow:none;padding:0}
.ls-management-actions{display:flex;flex-wrap:wrap;gap:8px}
.ls-status-pill{display:inline-flex;align-items:center;white-space:nowrap;border-radius:var(--radius-full);padding:4px 9px;font-size:11px;font-weight:800;border:1px solid var(--border)}
.ls-status-pill.is-live{background:var(--secondary-light);color:var(--secondary-dark);border-color:rgba(47,228,125,.28)}
.ls-status-pill.is-draft{background:var(--primary-light);color:var(--primary-dark);border-color:rgba(16,174,234,.25)}
.ls-status-pill.is-refused{background:#FFF0F0;color:var(--danger);border-color:rgba(239,68,68,.22)}
.ls-status-pill.is-role{background:var(--bg);color:var(--text-secondary);border-color:var(--border)}
.ls-location-row{display:flex;align-items:flex-start;gap:16px;border:1px solid var(--border-light);border-radius:16px;padding:14px;background:#fff;margin-bottom:10px;transition:border-color .15s ease,box-shadow .15s ease}
.ls-location-row:hover{border-color:rgba(var(--primary-rgb),.30);box-shadow:0 4px 14px rgba(var(--primary-rgb),.08)}
.ls-location-row__img{width:96px;height:96px;border-radius:12px;object-fit:cover;flex-shrink:0;background:var(--bg);display:block}

/* Image cliquable : overlay "Voir la conversation" au hover */
.ls-location-row__img-link{
  position:relative;flex-shrink:0;background:none;border:0;padding:0;cursor:pointer;
  border-radius:12px;overflow:hidden;display:block;
  transition:transform .15s ease;
}
.ls-location-row__img-link:hover{transform:scale(1.02)}
.ls-location-row__img-link:focus-visible{outline:3px solid var(--primary);outline-offset:2px}
.ls-location-row__img-overlay{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:6px;
  background:linear-gradient(135deg,rgba(16,174,234,.85),rgba(5,131,186,.85));
  color:#fff;font-size:11px;font-weight:700;text-align:center;padding:6px;line-height:1.25;
  opacity:0;transition:opacity .18s ease;border-radius:12px;
}
.ls-location-row__img-overlay i{font-size:18px}
.ls-location-row__img-link:hover .ls-location-row__img-overlay,
.ls-location-row__img-link:focus-visible .ls-location-row__img-overlay{opacity:1}

/* Titre cliquable : underline subtil + flèche */
.ls-location-row__title-link{
  background:none;border:0;padding:0;font:inherit;color:var(--text);
  cursor:pointer;display:inline-flex;align-items:center;gap:6px;
  text-align:left;transition:color .15s ease;
}
.ls-location-row__title-link i{font-size:14px;color:var(--text-muted);opacity:0;transform:translateX(-4px);transition:all .15s ease}
.ls-location-row__title-link:hover{color:var(--primary-dark);text-decoration:underline}
.ls-location-row__title-link:hover i{opacity:1;transform:translateX(0);color:var(--primary)}
.ls-location-row__title-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}

/* Highlight de la conversation cible après navigation depuis Réservations */
.ls-chat-card.is-highlighted{
  animation:lsHighlight 2.2s ease;
  border-color:var(--secondary) !important;
  box-shadow:0 0 0 4px rgba(var(--secondary-rgb),.22),0 10px 26px rgba(var(--secondary-rgb),.16) !important;
}
@keyframes lsHighlight{
  0%   { box-shadow:0 0 0 0   rgba(var(--secondary-rgb),0);    border-color:var(--border-light); }
  20%  { box-shadow:0 0 0 8px rgba(var(--secondary-rgb),.30),0 14px 30px rgba(var(--secondary-rgb),.22); border-color:var(--secondary); }
  100% { box-shadow:0 0 0 4px rgba(var(--secondary-rgb),.22),0 10px 26px rgba(var(--secondary-rgb),.16); border-color:var(--secondary); }
}
.ls-location-row__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.ls-location-row__pills{display:flex;gap:6px;flex-wrap:wrap}
.ls-location-row h4{font-size:15px;font-weight:800;margin:0}
.ls-location-row__meta{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;color:var(--text-secondary);margin:0}
.ls-location-row__meta span{display:inline-flex;align-items:center;gap:4px}
.ls-location-row__meta i{font-size:14px;color:var(--primary)}
.ls-location-row__price{display:flex;align-items:baseline;gap:8px;margin-top:2px}
.ls-location-row__price strong{font-size:16px;font-weight:800;color:var(--primary)}
.ls-location-row__price span{font-size:12px;color:var(--text-muted)}
.ls-location-row__created{font-size:11px;color:var(--text-muted);margin:0;font-style:italic}
.ls-location-row__actions{margin-top:8px;display:flex;gap:8px;flex-wrap:wrap}
.ls-location-row__actions .ls-btn{display:inline-flex;align-items:center;gap:6px}
@media(max-width:480px){.ls-location-row__actions .ls-btn{width:100%;justify-content:center}}
.ls-location-price{font-size:13px;font-weight:800;color:var(--primary);margin-top:4px}

@media(max-width:480px){
  .ls-location-row{flex-direction:column;align-items:stretch;padding:12px}
  .ls-location-row__img{width:100%;height:140px}
}
.ls-locations-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}
.ls-filter-pills{display:flex;flex-wrap:wrap;gap:6px}
.ls-filter-pill{border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);border-radius:var(--radius-full);padding:6px 14px;font-size:12px;font-weight:700;cursor:pointer;font-family:var(--font);transition:all .15s ease}
.ls-filter-pill:hover{border-color:var(--primary);color:var(--primary)}
.ls-filter-pill.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.ls-filter-dates{display:flex;align-items:center;gap:8px;margin-left:auto}
.ls-filter-dates label{font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:4px;font-weight:600}
.ls-filter-dates input[type="date"]{border:1px solid var(--border);border-radius:8px;padding:5px 10px;font-size:12px;font-family:var(--font);background:var(--bg-card);color:var(--text);cursor:pointer;outline:none}
.ls-filter-dates input[type="date"]:focus{border-color:var(--primary)}
.ls-chat-card{border:1px solid var(--border-light);border-radius:16px;background:#fff;padding:0;display:block;overflow:hidden}
.ls-chat-card.has-unread{border-color:rgba(47,228,125,.45);box-shadow:0 10px 26px rgba(47,228,125,.12)}
.ls-chat-card__summary{display:flex;align-items:center;gap:12px;padding:14px;cursor:pointer;list-style:none;-webkit-tap-highlight-color:transparent}
.ls-chat-card__summary::-webkit-details-marker,.ls-chat-card__summary::marker{display:none}
.ls-chat-card__summary:hover{background:var(--bg-card)}
.ls-chat-card__summary:focus-visible{outline:3px solid rgba(var(--primary-rgb),.28);outline-offset:-3px}
.ls-chat-card__thumb{width:58px;height:58px;border-radius:12px;object-fit:cover;flex:0 0 auto;background:var(--bg)}
.ls-chat-card__summary-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.ls-chat-card__summary-main>span,.ls-chat-card__summary-main>strong{min-width:0}
.ls-chat-card__title{font-size:15px;font-weight:850;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ls-chat-card__summary-side{flex:0 0 170px;display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right;min-width:0}
.ls-chat-card__summary-side strong{font-size:16px;font-weight:900;color:var(--primary-dark);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ls-chat-card__summary-side small{font-size:11px;font-weight:700;color:var(--text-secondary);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ls-chat-card__open-label{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:850;color:var(--primary-dark)}
.ls-chat-card__open-label i{font-size:14px;transition:transform .18s ease}
.ls-chat-card[open] .ls-chat-card__open-label i{transform:rotate(180deg)}
.ls-chat-card__body{display:grid;gap:14px;padding:0 16px 16px;border-top:1px solid var(--border-light)}
.ls-chat-card__body .ls-chat-card__price{margin-top:14px}
.ls-chat-card__price{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-radius:14px;background:var(--secondary-light);border:1px solid rgba(47,228,125,.28);color:var(--secondary-dark)}
.ls-chat-card__price span,.ls-chat-card__price small{font-size:12px;font-weight:700}
.ls-chat-card__price strong{font-size:18px;font-weight:900;color:var(--secondary-dark)}
.ls-chat-card__price.is-refused{background:#FFF0F0;border-color:rgba(239,68,68,.22);color:var(--danger)}
.ls-chat-card__price.is-refused strong{color:var(--danger)}
.ls-chat-card__price.is-draft{background:var(--primary-light);border-color:rgba(16,174,234,.25);color:var(--primary-dark)}
.ls-chat-card__price.is-draft strong{color:var(--primary-dark)}
.ls-chat-card__body-head,.ls-chat-card__head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.ls-chat-card__eyebrow,.ls-chat-actions,.ls-renter-review-form__row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ls-chat-card__head h4{font-size:15px;font-weight:800;margin:5px 0 3px}
.ls-chat-card__head p{font-size:12px;color:var(--text-secondary)}
.ls-chat-party,.ls-chat-preview{font-size:12px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ls-chat-party strong{color:var(--text)}
.ls-chat-meta,.ls-chat-state,.ls-chat-preview{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ls-chat-meta{font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-wrap:nowrap}
.ls-chat-preview{flex-wrap:nowrap;color:var(--text-muted)}
.ls-chat-preview i,.ls-chat-meta i,.ls-chat-state i{flex:0 0 auto;color:var(--primary)}
.ls-chat-state{font-size:12px;color:var(--text-secondary);margin:0}
.ls-unread-pill{display:inline-flex;align-items:center;border-radius:var(--radius-full);padding:4px 9px;background:var(--secondary);color:#fff;font-size:11px;font-weight:900}
.ls-renter-rating{display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding:3px 8px;border-radius:var(--radius-full);background:#FFF8E6;color:#9A6200;border:1px solid rgba(245,158,11,.25);font-size:11px;font-weight:900;white-space:nowrap}
.ls-renter-rating.is-empty{background:var(--bg);color:var(--text-muted);border-color:var(--border)}
.ls-renter-review-note{font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:6px}
.ls-renter-review-form{padding:12px;border:1px solid var(--border-light);border-radius:14px;background:#FFFDF7;display:grid;gap:8px}
.ls-renter-review-form label{font-size:12px;font-weight:800;color:var(--text)}
.ls-renter-review-form select,.ls-renter-review-form input{min-height:40px;border:1px solid var(--border);border-radius:10px;padding:8px 10px;font-family:var(--font)}
.ls-renter-review-form input{flex:1;min-width:180px}
.ls-chat-messages{display:grid;gap:8px;padding:12px;border-radius:14px;background:var(--bg);max-height:260px;overflow:auto}
.ls-chat-message{max-width:82%;padding:10px 12px;border-radius:14px;background:#fff;border:1px solid var(--border-light)}
.ls-chat-message.is-mine{justify-self:end;background:var(--primary-light);border-color:rgba(16,174,234,.22)}
.ls-chat-message strong{font-size:12px}
.ls-chat-message p{font-size:13px;margin:3px 0;white-space:pre-wrap}
.ls-chat-message small{font-size:10px;color:var(--text-muted)}
.ls-chat-reply{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}
.ls-chat-reply textarea{min-height:44px}
.ls-chat-contract{margin:0;background:#F7FCFF;box-shadow:none}
.ls-chat-contract h5{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800;margin-bottom:8px}

/* ─── Bouton "Archiver" discret (icône seule, hover doux) ─── */
.ls-chat-card__archive{
  flex:0 0 auto;align-self:flex-start;
  width:32px;height:32px;border-radius:50%;border:0;cursor:pointer;
  background:transparent;color:var(--text-muted);
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .15s ease,color .15s ease,transform .15s ease;
}
.ls-chat-card__archive i{font-size:16px;line-height:1}
.ls-chat-card__archive:hover{background:var(--bg);color:var(--text);transform:scale(1.05)}
.ls-chat-card__archive:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.ls-chat-card.is-archived .ls-chat-card__archive,
.ls-chat-card__archive[data-reservation-archive="0"]{color:var(--secondary-dark)}

/* ─── Statut "Contrat en cours de rédaction" (pendant la génération) ─── */
.ls-chat-contract-status{
  margin-top:8px;padding:10px 12px;border-radius:10px;
  background:linear-gradient(90deg,rgba(var(--primary-rgb),.08),rgba(var(--secondary-rgb),.08));
  border:1px solid rgba(var(--primary-rgb),.20);
  display:flex;align-items:center;gap:8px;
  color:var(--text);font-size:12.5px;line-height:1.4;
  animation:fadeUp .3s ease;
}
.ls-chat-contract-status i{color:var(--primary-dark);font-size:18px;flex:0 0 auto}
.ls-chat-contract-status strong{color:var(--primary-dark);font-weight:800}

@media(max-width:720px){
  .ls-account-tools__head,.ls-location-row{flex-direction:column;align-items:stretch}
  .ls-locations-filters{flex-direction:column;align-items:stretch}
  .ls-filter-dates{margin-left:0;flex-wrap:wrap}
  .ls-identity-card{flex-direction:column;align-items:stretch}
  .ls-profile-details__grid{grid-template-columns:1fr}
  .ls-management-card{grid-template-columns:1fr}
  .ls-management-card>img{width:100%;height:auto;aspect-ratio:16/9}
  .ls-management-card__top{flex-direction:column}
  .ls-chat-card__summary{display:grid;grid-template-columns:56px minmax(0,1fr);align-items:start}
  .ls-chat-card__summary-side{grid-column:1/-1;flex:1;width:100%;align-items:flex-start;text-align:left;flex-direction:row;justify-content:space-between;gap:10px}
  .ls-chat-card__summary-side small{display:none}
  .ls-chat-card__body-head{align-items:stretch}
  .ls-chat-reply{grid-template-columns:1fr}
  .ls-chat-message{max-width:100%}
}

/* Responsive consolidation */
img,video,canvas,svg{max-width:100%}
input,select,textarea,button{font-size:16px}
.ls-page__content,.ls-detail__body,.ls-management-card__body{min-width:0}
.ls-page__content table{display:block;max-width:100%;overflow-x:auto}

/* Tablette horizontale (legacy) — neutralisé : la sidebar Instagram s'applique désormais ici.
   Anciennes règles conservées seulement pour les conteneurs de contenu (formulaires/management) */
@media(min-width:769px) and (max-width:1024px){
  .ls-publish,.ls-auth,.ls-profile{max-width:720px}
  .ls-profile{padding-left:18px;padding-right:18px}
  .ls-management-card{grid-template-columns:140px 1fr}
  .ls-management-card>img{width:140px;height:140px}
}

@media(max-width:768px){
  :root{--header-h:58px}
  html,body{width:100%;overflow-x:hidden}
  body{padding-bottom:env(safe-area-inset-bottom)}
  .ls-app{padding-bottom:calc(86px + env(safe-area-inset-bottom))}
  .ls-header{height:var(--header-h)}
  .ls-header__inner{justify-content:space-between}
  .ls-logo{min-width:auto;max-width:54vw}
  .ls-logo__wordmark{font-size:21px;white-space:nowrap}
  .ls-nav{min-height:64px;padding:7px 8px calc(7px + env(safe-area-inset-bottom));box-shadow:0 -8px 28px rgba(16,50,70,.09)}
  .ls-nav__btn{min-width:58px;min-height:48px;justify-content:center;border-radius:14px}
  .ls-nav__btn--logout{min-width:48px}
  .ls-nav__avatar{width:24px;height:24px}
  .ls-location-bar{padding:12px 14px}
  .ls-location-bar__btn{width:100%;justify-content:center}
  .ls-categories{top:var(--header-h);padding:8px 14px 12px}
  .ls-cat-pill{flex:0 0 auto}
  .ls-hero{min-height:auto;padding:42px 16px 34px}
  .ls-hero h1{font-size:32px;line-height:1.08}
  .ls-hero p{font-size:15px;line-height:1.5}
  .ls-hero__stats{margin-top:22px}
  .ls-hero__stat{padding:12px 14px;min-width:0}
  .ls-hero__stat>i{font-size:28px}
  .ls-hero__stat strong{font-size:20px}
  .ls-feed{grid-template-columns:1fr;gap:14px;padding:0 14px 42px}
  .ls-card:hover{transform:none}
  .ls-card__delete{opacity:1}
  .ls-card__author>span{max-width:48vw}
  .ls-publish__title,.ls-profile__section-title{text-wrap:balance}
  .ls-profile__header{gap:16px;margin-bottom:20px}
  .ls-profile__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:100%}
  .ls-stat{min-width:0}
  .ls-account-tools{padding:16px;border-radius:16px}
  .ls-account-tabs{border-radius:14px}
  .ls-account-tab{border-radius:10px;padding:10px 8px}
  .ls-management-actions{display:grid;grid-template-columns:1fr 1fr}
  .ls-management-actions .ls-btn{width:100%;justify-content:center}

  /* Boutons identité pleine largeur */
  .ls-identity-card form{flex-direction:column;align-items:stretch}
  .ls-identity-card form .ls-btn,.ls-identity-extracted .ls-btn{width:100%;justify-content:center;min-height:46px}
  .ls-identity-card input[type=file]{width:100%}

  /* Filtres locations : scroll horizontal + dates empilées */
  .ls-filter-pills{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;scroll-snap-type:x mandatory}
  .ls-filter-pill{flex-shrink:0;scroll-snap-align:start;min-height:38px}
  .ls-filter-dates{width:100%;flex-wrap:wrap;gap:8px}
  .ls-filter-dates label{flex:1;min-width:120px}
  .ls-filter-dates input[type="date"]{flex:1;width:100%;min-height:38px}

  .ls-modal{height:100dvh;max-height:100dvh}
  .ls-modal__content{min-height:100%}
  .ls-modal__close{top:12px;right:12px}
  .ls-cookie-banner{bottom:calc(64px + env(safe-area-inset-bottom));padding:12px 14px}
  .ls-cookie-banner__inner{gap:10px}
  .ls-cookie-banner__inner p{min-width:0;flex-basis:100%}
  .ls-cookie-banner .ls-btn{width:100%;justify-content:center}
  .ls-footer{padding-bottom:calc(96px + env(safe-area-inset-bottom))}
}

@media(max-width:420px){
  .ls-header__inner{padding:0 10px}
  .ls-logo{max-width:44px}
  .ls-logo__img,.custom-logo{width:38px;height:38px;max-width:38px}
  .ls-hero h1{font-size:28px}
  .ls-hero__cta{font-size:14px}
  .ls-management-actions{grid-template-columns:1fr}
  .ls-nav__btn{min-width:52px;padding-left:8px;padding-right:8px}
  /* Mobile compact : 2×2 harmonisé */
  .ls-hero__stats{grid-template-columns:repeat(2,minmax(0,1fr));max-width:340px;gap:8px}
  .ls-hero__stat{padding:10px;gap:8px;align-items:center}
  .ls-hero__stat>i{font-size:22px}
  .ls-hero__stat strong{font-size:15px}
  .ls-hero__stat span{font-size:10.5px;line-height:1.25}
}

/* Publish location choice */
.ls-location-choice{padding:14px;border:1px solid var(--border-light);border-radius:16px;background:#F7FCFF}
.ls-location-choice__options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:8px}
.ls-location-choice__options label{display:flex;align-items:center;gap:8px;margin:0;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:#fff;color:var(--text);font-size:13px;font-weight:700;cursor:pointer}
.ls-location-choice__options input{width:18px;height:18px;accent-color:var(--primary);flex:0 0 auto}
.ls-location-address,.ls-location-gps{margin-bottom:18px;padding:16px;border:1px solid var(--border-light);border-radius:16px;background:#fff;box-shadow:0 6px 20px rgba(16,50,70,.04)}
.ls-location-address[hidden],.ls-location-gps[hidden]{display:none!important}
#geocode-status,#publish-gps-status{margin-top:10px}
#geocode-status a{color:var(--primary-dark);font-weight:800;text-decoration:underline;text-underline-offset:3px}

@media(max-width:560px){
  .ls-location-choice__options{grid-template-columns:1fr}
}

/* Mobile compatibility final pass */
.ls-logo__wordmark-domain{color:var(--primary);font-size:.74em;font-weight:800;margin-left:1px;align-self:flex-end;line-height:.95}
@media(max-width:768px){
  .ls-header__inner{min-width:0}
  .ls-logo{flex:1 1 auto;min-width:0;max-width:58vw}
  .ls-logo__wordmark{min-width:0;overflow:hidden;text-overflow:clip}
  .ls-logo__wordmark-domain{font-size:.7em}
  .ls-nav{gap:4px}
  .ls-nav__btn span{max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ls-publish,.ls-auth,.ls-profile{width:100%}
  .ls-form__upload-preview p,.ls-form__hint{overflow-wrap:anywhere}
  .ls-detail__tags{align-items:flex-start}
}
@media(max-width:420px){
  .ls-logo{max-width:132px;gap:6px}
  .ls-logo__wordmark{display:inline-flex;font-size:16px}
  .ls-logo__wordmark-domain{font-size:.68em}
  .ls-nav__btn{min-width:48px}
  .ls-nav__btn span{font-size:9px;max-width:52px}
}
@media(max-width:360px){
  .ls-logo{max-width:112px}
  .ls-logo__img,.custom-logo{width:34px;height:34px;max-width:34px}
  .ls-logo__wordmark{font-size:14px}
  .ls-nav__btn{min-width:44px;padding-left:6px;padding-right:6px}
}

/* Availability planning */
.ls-availability-editor,.ls-management-availability{padding:16px;border:1px solid var(--border-light);border-radius:16px;background:#F7FCFF;margin:18px 0}
.ls-availability-editor h3,.ls-management-availability h5{display:flex;align-items:center;gap:8px;font-weight:800;color:var(--text);margin-bottom:6px}
.ls-management-availability h5{font-size:14px}
.ls-availability{padding:18px;border:1px solid var(--border-light);border-radius:18px;background:#fff;box-shadow:0 8px 24px rgba(16,50,70,.05);margin:20px 0}
.ls-availability__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.ls-availability__head h3{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:800}
.ls-availability__next{font-size:12px;color:var(--text-secondary);text-align:right}
.ls-availability__legend{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px;font-size:11px;color:var(--text-secondary)}
.ls-availability__legend span{display:inline-flex;align-items:center;gap:5px}
.ls-availability__legend i,.ls-availability-dot{display:inline-block;width:10px;height:10px;border-radius:50%}
.ls-availability__grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:6px}
.ls-availability-day{min-height:46px;border-radius:12px;border:1px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fff;color:var(--text)}
.ls-availability-day strong{font-size:14px;line-height:1}
.ls-availability-day small{font-size:10px;color:var(--text-muted);text-transform:uppercase}
.ls-availability-day.is-available,.ls-availability__legend .is-available,.ls-availability-dot.is-available{background:var(--secondary-light);border-color:rgba(47,228,125,.35);color:var(--secondary-dark)}
.ls-availability-day.is-reserved,.ls-availability__legend .is-reserved,.ls-availability-dot.is-reserved{background:#FFF4D8;border-color:#FFE1A3;color:#9A6700}
.ls-availability-day.is-unavailable,.ls-availability__legend .is-unavailable,.ls-availability-dot.is-unavailable{background:#F3F6F8;border-color:#DDE6EA;color:var(--text-muted)}
.ls-availability-mini{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:12px;background:#fff;border:1px solid var(--border-light);font-size:12px;color:var(--text-secondary)}
.ls-availability-mini>div{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}

@media(max-width:768px){
  .ls-availability__head{flex-direction:column}
  .ls-availability__next{text-align:left}
  .ls-availability__grid{grid-template-columns:repeat(5,minmax(0,1fr))}
  .ls-availability-day{min-height:44px}
  .ls-availability-mini{align-items:flex-start;flex-direction:column}
}

/* ════════════════════════════════════════════════════════════
   MOBILE UX OPTIMIZATIONS — Thumb-Driven Design
   ════════════════════════════════════════════════════════════ */

/* — CTA "Publier" — vert sur les deux formats, cercle élevé uniquement sur mobile — */
.ls-nav__btn--cta{background:linear-gradient(135deg,var(--secondary) 0%,var(--secondary-dark) 100%);color:#fff;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}
.ls-nav__btn--cta i,.ls-nav__btn--cta span{color:#fff}
.ls-nav__btn--cta:hover,.ls-nav__btn--cta.active{background:linear-gradient(135deg,var(--secondary-dark) 0%,var(--secondary) 100%);color:#fff;transform:translateY(-1px);box-shadow:0 6px 14px rgba(47,228,125,.35)}
.ls-nav__btn--cta:hover i,.ls-nav__btn--cta:hover span,.ls-nav__btn--cta.active i,.ls-nav__btn--cta.active span{color:#fff}

/* Cache éléments desktop-only sur mobile */
.ls-nav__btn--desktop-only{display:inline-flex}

@media(max-width:768px){
  /* Search visible et compacte sur mobile */
  .ls-search{display:block!important;flex:1 1 auto;max-width:none;margin:0 8px;min-width:0}
  .ls-search input{height:42px;font-size:14px;padding:10px 16px 10px 40px}
  .ls-search i{font-size:16px;left:14px}

  /* Bottom nav: CTA central élevé en cercle (entièrement contenu dans la nav) */
  .ls-nav{justify-content:space-around;align-items:center;gap:2px;padding:14px 4px calc(8px + env(safe-area-inset-bottom));min-height:78px;overflow:visible}
  .ls-nav__btn{flex:1 1 0;min-width:0;max-width:80px;padding:6px 4px;min-height:56px}
  .ls-nav__btn--cta{flex:0 0 auto;width:54px;height:54px;min-height:54px;margin:0;padding:0;border:3px solid #fff;border-radius:50%!important;box-shadow:0 6px 18px rgba(47,228,125,.45),0 2px 6px rgba(0,0,0,.08);align-self:center}
  .ls-nav__btn--cta i{font-size:26px!important}
  .ls-nav__btn--cta span{display:none!important}
  .ls-nav__btn--desktop-only{display:none!important}

  /* Tap targets ≥48px partout */
  .ls-btn,.ls-cat-pill,.ls-filter-pill,.ls-account-tab,button[type=submit]{min-height:46px}
  .ls-form input,.ls-form select,.ls-form textarea{min-height:46px;font-size:16px} /* 16px évite zoom iOS */

  /* Espacement entre boutons d'action côte à côte */
  .ls-management-actions{gap:10px}
  .ls-management-actions .ls-btn{padding:11px 14px}

  /* Formulaire de réservation : positionné en flux normal sous le planning */
  .ls-reservation-form{margin-top:20px}
  .ls-reservation-form h3{font-size:15px;margin-bottom:8px}
  .ls-reservation-form .ls-btn{width:100%;justify-content:center;min-height:50px;font-size:15px;font-weight:800}
}

/* — Mini badge "vérifié" sur les avatars (rassurance visuelle) — */
.ls-avatar-wrap{position:relative;display:inline-block;flex-shrink:0;overflow:visible;line-height:0;font-size:0}
.ls-avatar-wrap img{display:block}
.ls-avatar-verified{position:absolute;bottom:-3px;right:-3px;width:14px;height:14px;border-radius:50%;background:var(--secondary);color:#fff;display:flex;align-items:center;justify-content:center;border:2px solid #fff;line-height:1;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.ls-avatar-verified i{font-size:8px;line-height:1;color:#fff;font-weight:900}
/* Badge plus grand pour les avatars > 40px */
.ls-detail__footer-owner .ls-avatar-verified{width:18px;height:18px;bottom:-2px;right:-2px}
.ls-detail__footer-owner .ls-avatar-verified i{font-size:10px}
/* Empêche le .ls-card__author span de masquer la pastille */
.ls-card__author .ls-avatar-wrap{overflow:visible;white-space:normal}

/* — Caution Swikly dans la publication — */
.ls-deposit-group{background:#F0FAFF;border:1px solid #BFE7FF;border-radius:12px;padding:14px;margin-top:6px}
.ls-deposit-group label{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--primary-dark);margin-bottom:8px}
.ls-deposit-group label i{font-size:20px;color:var(--primary)}
.ls-deposit-group .ls-form__row{margin-top:6px}
.ls-deposit-group select,.ls-deposit-group input{background:#fff}
.ls-deposit-group .ls-form__hint{margin-top:8px}

/* — Multi-photos publish : galerie de prévisualisation — */
.ls-gallery-preview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}
@media(max-width:480px){.ls-gallery-preview{grid-template-columns:repeat(3,minmax(0,1fr))}}
.ls-gallery-preview__item{position:relative;aspect-ratio:1/1;border-radius:10px;overflow:hidden;background:var(--bg);border:1px solid var(--border-light)}
.ls-gallery-preview__item img{width:100%;height:100%;object-fit:cover;display:block}
.ls-gallery-preview__badge{position:absolute;top:4px;left:4px;background:var(--primary);color:#fff;font-size:10px;padding:2px 6px;border-radius:4px;font-weight:700}
.ls-gallery-preview__remove{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;background:rgba(0,0,0,.7);color:#fff;border:none;font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.ls-gallery-preview__remove:hover{background:var(--danger)}
.ls-form__upload-sub{display:block;font-size:11px;color:var(--text-muted);margin-top:4px}

/* — Carousel galerie sur fiche détail — */
.ls-detail__gallery{position:relative;width:100%;aspect-ratio:4/3;background:#000;overflow:hidden}
@media(min-width:900px){.ls-detail__gallery{aspect-ratio:16/9}}
.ls-detail__slides{position:relative;width:100%;height:100%}
.ls-detail__slide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .3s ease;pointer-events:none}
.ls-detail__slide.is-active{opacity:1;pointer-events:auto}
.ls-detail__nav{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:22px;transition:background .2s}
.ls-detail__nav:hover{background:rgba(0,0,0,.8)}
.ls-detail__nav--prev{left:10px}
.ls-detail__nav--next{right:10px}
.ls-detail__dots{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);display:flex;gap:6px}
.ls-detail__dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.45);border:none;cursor:pointer;padding:0;transition:background .2s,transform .2s}
.ls-detail__dot.is-active{background:#fff;transform:scale(1.3)}
.ls-detail__counter{position:absolute;top:10px;right:12px;background:rgba(0,0,0,.55);color:#fff;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:700}
.ls-detail__gallery[data-count="1"] .ls-detail__nav,.ls-detail__gallery[data-count="1"] .ls-detail__dots,.ls-detail__gallery[data-count="1"] .ls-detail__counter{display:none}

/* — Page 404 custom — */
.ls-404{max-width:520px;margin:80px auto;padding:40px 20px;text-align:center}
.ls-404>i{font-size:72px;color:var(--primary);margin-bottom:18px;display:block}
.ls-404 h1{font-size:28px;font-weight:800;margin-bottom:12px;color:var(--text)}
.ls-404 p{color:var(--text-secondary);font-size:15px;margin-bottom:24px;line-height:1.5}
.ls-404__actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
@media(max-width:480px){.ls-404__actions{flex-direction:column;align-items:stretch}.ls-404__actions .ls-btn{justify-content:center}}

/* — Tri/select dans les filtres de l'espace client — */
.ls-account-sort{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary)}
.ls-account-sort select{border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:13px;background:#fff;font-family:var(--font);cursor:pointer}
@media(max-width:480px){.ls-account-sort{width:100%}.ls-account-sort select{flex:1}}

/* — Preview de la pièce d'identité uploadée — */
.ls-identity-preview{margin-top:14px;padding:12px;background:#F7FCFF;border:1px solid var(--border-light);border-radius:12px}
.ls-identity-preview__head{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--primary-dark);margin-bottom:10px}
.ls-identity-preview__head i{font-size:18px}
.ls-identity-preview__img{max-width:100%;max-height:200px;border-radius:8px;border:1px solid var(--border-light);display:block}

/* — Modal close button plus large + bouton retour en bas — */
.ls-modal__close{width:44px;height:44px;font-size:22px}
.ls-detail__bottom-close{margin-top:20px;padding-top:14px;border-top:1px solid var(--border-light)}
.ls-detail__bottom-close .ls-btn{justify-content:center}

/* — Checkbox CGU à l'inscription — */
.ls-form__checkbox{display:flex;align-items:flex-start;gap:10px;padding:10px 0;font-size:13px;color:var(--text-secondary);cursor:pointer}
.ls-form__checkbox input{width:18px;height:18px;margin-top:2px;flex-shrink:0;accent-color:var(--primary)}
.ls-form__checkbox a{color:var(--primary-dark);text-decoration:underline;text-underline-offset:2px}

/* — Champs verrouillés (compte vérifié) — */
.ls-locked-note{background:#E8F5E9;border:1px solid #A5D6A7;border-radius:10px;padding:10px 14px;margin-bottom:12px;color:#1B5E20;display:flex;align-items:center;gap:8px;font-size:13px}
.ls-locked-note i{font-size:18px;color:#2E7D32;flex-shrink:0}
input.is-locked,select.is-locked,textarea.is-locked{background:#F5F5F5;color:var(--text-secondary);cursor:not-allowed;border-color:var(--border-light)}
input.is-locked:focus{outline:none;box-shadow:none}

/* — Annonces du profil : dropdown via <details>/<summary> — */
.ls-management-card{display:block;border:1px solid var(--border-light);border-radius:16px;background:#fff;margin-bottom:10px;padding:0;overflow:hidden}
.ls-management-card>summary{display:flex;align-items:center;gap:12px;padding:12px;cursor:pointer;list-style:none;-webkit-tap-highlight-color:transparent}
.ls-management-card>summary::-webkit-details-marker,.ls-management-card>summary::marker{display:none}
.ls-management-card>summary>img{width:64px;height:64px;border-radius:10px;object-fit:cover;flex-shrink:0;background:var(--bg)}
.ls-management-card__head{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.ls-management-card__head h4{font-size:14px;font-weight:800;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ls-management-card__head p{font-size:12px;color:var(--text-secondary);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ls-management-card__head .ls-status-pill{align-self:flex-start;margin-top:2px}
.ls-management-card__chevron{font-size:18px;color:var(--text-muted);flex-shrink:0;transition:transform .2s ease}
.ls-management-card[open]>summary .ls-management-card__chevron{transform:rotate(180deg)}
.ls-management-card__body{padding:0 14px 14px;display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--border-light)}
.ls-management-card__detail{padding-top:12px;font-size:13px;color:var(--text-secondary)}
.ls-management-card__detail p{margin:4px 0}
.ls-management-card__detail strong{color:var(--text)}
.ls-management-edit{padding-top:8px;border-top:1px dashed var(--border)}

/* — Onglets nav : afficher/cacher selon clic (profil vs locations/etc.) — */
.ls-profile.is-view-profile-only .ls-account-tools{display:none}
.ls-profile.is-view-account-only .ls-profile__header,
.ls-profile.is-view-account-only .ls-profile__settings-panel,
.ls-profile.is-view-account-only .ls-identity-card,
.ls-profile.is-view-account-only .ls-email-verify-banner{display:none}
.ls-profile.is-view-account-only .ls-account-tools{padding:14px}
.ls-profile.is-view-account-only .ls-account-tools__head{margin-bottom:10px}

/* — Liste des contrats dans l'onglet Contrats — */
.ls-contracts-section{margin-top:28px;padding-top:24px;border-top:1px solid var(--border-light)}
.ls-contracts-section__head{margin-bottom:14px}
.ls-contracts-section__head h3{font-size:16px;font-weight:800;display:flex;align-items:center;gap:8px;color:var(--text);margin-bottom:4px}
.ls-contracts-section__head h3 i{color:var(--primary);font-size:20px}
.ls-contract-row{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--border-light);border-radius:16px;padding:16px;background:#fff;margin-bottom:10px}
.ls-contract-row__body{flex:1;min-width:0}
.ls-contract-row__pills{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.ls-contract-row h4{font-size:15px;font-weight:800;margin-bottom:4px}
.ls-contract-row p{font-size:12px;color:var(--text-secondary)}
.ls-contract-row__note{display:flex;align-items:flex-start;gap:6px;margin-top:6px;line-height:1.45;color:var(--text-muted)!important}
.ls-contract-row__note i{font-size:15px;color:var(--primary);flex:0 0 auto;margin-top:1px}
.ls-contract-row__actions{flex:0 0 auto;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:768px){
  .ls-contract-row{flex-direction:column;align-items:stretch}
  .ls-contract-row__actions{justify-content:stretch}
  .ls-contract-row__actions .ls-btn{width:100%;justify-content:center}
}

/* — CTA "Générer un contrat" dans les discussions — */
.ls-chat-contract-cta{margin-top:12px;padding-top:12px;border-top:1px dashed var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.ls-chat-contract-cta p{margin:0;font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:6px}
.ls-chat-contract-cta p i{font-size:14px}
.ls-chat-contract-cta p i.ph-warning-circle{color:#FF9800}
.ls-chat-contract-cta p i.ph-seal-check,.ls-chat-contract-cta p i.ph-check-circle{color:var(--secondary-dark)}
@media(max-width:768px){
  .ls-chat-contract-cta{flex-direction:column;align-items:stretch}
  .ls-chat-contract-cta .ls-btn{width:100%;justify-content:center}
}

/* — Champs manuels du locataire dans l'onglet Contrats — */
#contract-renter-manual-fields{background:#FFF8E7;border:1px solid #FFE4B0;border-radius:12px;padding:14px;margin-top:10px}
#contract-renter-manual-fields > .ls-form__hint{margin-bottom:10px;color:#8B6914;display:flex;align-items:center;gap:6px}
#contract-renter-manual-fields > .ls-form__hint i{font-size:16px;color:#FF9800;flex-shrink:0}

/* ════════════════════════════════════════════════════════════
   PUBLISH PROGRESS OVERLAY + PREVIEW + MULTI-DATE PICKER
   ════════════════════════════════════════════════════════════ */
.ls-publish-overlay{
  position:fixed;inset:0;z-index:400;
  background:rgba(7,24,33,.6);backdrop-filter:blur(6px);
  display:flex;align-items:center;justify-content:center;padding:20px;
  opacity:0;pointer-events:none;transition:opacity .25s ease;
}
.ls-publish-overlay.is-open{opacity:1;pointer-events:auto}
.ls-publish-overlay__card{
  background:#fff;border-radius:20px;padding:28px 26px;
  width:100%;max-width:440px;text-align:center;
  box-shadow:0 30px 80px rgba(7,24,33,.4);
}
.ls-publish-overlay__spinner .ls-spinner{width:42px;height:42px;border-width:3px;margin:0 auto 14px}
.ls-publish-overlay__title{font-family:var(--font-display);font-size:18px;font-weight:800;color:var(--text);margin-bottom:6px}
.ls-publish-overlay__step{font-size:13px;color:var(--text-secondary);margin-bottom:14px;min-height:18px}
.ls-publish-overlay__bar{height:8px;background:#E5EDF2;border-radius:99px;overflow:hidden;margin-bottom:8px}
.ls-publish-overlay__fill{height:100%;width:0;background:linear-gradient(90deg,var(--primary) 0%,var(--secondary) 100%);transition:width .35s ease}
.ls-publish-overlay__count{font-size:12px;font-weight:700;color:var(--primary-dark);margin-bottom:8px;min-height:14px}
.ls-publish-overlay__hint{font-size:11px;color:var(--text-muted)}

.ls-preview-overlay{
  position:fixed;inset:0;z-index:380;
  display:flex;align-items:center;justify-content:center;padding:20px;
  opacity:0;pointer-events:none;transition:opacity .2s ease;
}
.ls-preview-overlay.is-open{opacity:1;pointer-events:auto}
.ls-preview-overlay__backdrop{position:absolute;inset:0;background:rgba(7,24,33,.55);backdrop-filter:blur(4px)}
.ls-preview-overlay__panel{
  position:relative;background:#fff;border-radius:20px;
  width:100%;max-width:540px;max-height:90vh;overflow:auto;
  padding:22px;box-shadow:0 30px 80px rgba(7,24,33,.4);
}
.ls-preview-overlay__close{
  position:absolute;top:12px;right:12px;width:36px;height:36px;border-radius:50%;
  background:rgba(7,24,33,.08);color:var(--text);border:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:18px;
}
.ls-preview-overlay__title{font-family:var(--font-display);font-size:18px;font-weight:800;margin-bottom:16px;display:flex;align-items:center;gap:8px}
.ls-preview-card{border:1px solid var(--border-light);border-radius:16px;overflow:hidden;background:#fff;margin-bottom:18px}
.ls-preview-card__photos{position:relative;display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:2px;height:240px;background:#EAF8FD}
.ls-preview-card__photos img{width:100%;height:100%;object-fit:cover;display:block}
.ls-preview-card__photos img.is-main{grid-row:1/3}
.ls-preview-card__photos img:nth-child(1):not(.is-main),.ls-preview-card__photos img:only-child{grid-column:1/-1;grid-row:1/-1}
.ls-preview-card__nophoto{grid-column:1/-1;grid-row:1/-1;display:flex;align-items:center;justify-content:center;flex-direction:column;color:var(--text-muted);gap:6px}
.ls-preview-card__nophoto i{font-size:36px}
.ls-preview-card__more{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.65);color:#fff;padding:3px 10px;border-radius:99px;font-size:11px;font-weight:700}
.ls-preview-card__body{padding:14px 16px}
.ls-preview-card__price{font-family:var(--font-display);font-size:22px;font-weight:800;color:var(--primary)}
.ls-preview-card__price span{font-size:13px;font-weight:400;color:var(--text-muted)}
.ls-preview-card__title{font-size:16px;font-weight:700;margin:4px 0 6px}
.ls-preview-card__meta{font-size:12px;color:var(--text-secondary);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ls-preview-card__meta i{color:var(--primary)}
.ls-preview-card__desc{font-size:13px;color:var(--text-secondary);margin-top:8px;white-space:pre-wrap}
.ls-preview-overlay__actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.ls-preview-overlay__actions .ls-btn{min-width:140px;justify-content:center}
@media(max-width:540px){
  .ls-preview-overlay__actions .ls-btn{width:100%}
}

/* Multi-date picker — calendrier inline */
.ls-multidate{margin-top:10px;background:#fff;border:1px solid var(--border-light);border-radius:14px;padding:14px}
.ls-multidate__head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
.ls-multidate__head button{
  background:var(--bg);border:1px solid var(--border);border-radius:8px;
  width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;color:var(--text);font-size:18px;
}
.ls-multidate__head button:hover{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}
.ls-multidate__title{font-weight:800;font-size:14px;color:var(--text);text-transform:capitalize}
.ls-multidate__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}
.ls-multidate__weekdays span{font-size:10px;font-weight:800;color:var(--text-muted);text-align:center;text-transform:uppercase;letter-spacing:.03em}
.ls-multidate__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.ls-multidate__day{
  aspect-ratio:1/1;border:1px solid var(--border-light);border-radius:8px;
  background:#fff;color:var(--text);font-size:13px;font-weight:600;
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:all .12s ease;
}
.ls-multidate__day:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}
.ls-multidate__day:disabled,.ls-multidate__day--past{background:#F7F9FB;color:var(--text-muted);cursor:not-allowed;border-color:transparent}
.ls-multidate__day--blocked{background:var(--danger);border-color:var(--danger);color:#fff}
.ls-multidate__day--blocked:hover{background:#d63a48;border-color:#d63a48}
.ls-multidate__day--empty{visibility:hidden}
.ls-multidate__legend{display:flex;gap:14px;margin-top:10px;font-size:11px;color:var(--text-secondary)}
.ls-multidate__legend span{display:inline-flex;align-items:center;gap:5px}
.ls-multidate__legend i{width:10px;height:10px;border-radius:3px;display:inline-block;background:var(--border)}
.ls-multidate__legend .is-blocked{background:var(--danger)}

/* ═══════════════════════════════════════════════════════════
   PUBLISH FORM — refonte UX/UI complète
   ═══════════════════════════════════════════════════════════ */

/* Étapes : plus de cercle numéroté dans le header (la progress bar suffit) */
.ls-form-step{position:relative;padding:24px 0 8px;border-top:1px solid var(--border-light);margin-top:18px;scroll-margin-top:calc(var(--header-h) + 110px)}
.ls-form-step:first-of-type{border-top:none;margin-top:0;padding-top:4px}
.ls-form-step__header{display:flex;align-items:flex-start;gap:0;margin-bottom:16px}
.ls-form-step__title{font-size:18px;font-weight:800;color:var(--text);margin:0;line-height:1.25;display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;font-family:var(--font-display)}
.ls-form-step__title > i{color:var(--primary);font-size:22px;flex:0 0 auto}
.ls-form-step__title i.ph-duotone::after{color:var(--secondary);opacity:1}
.ls-form-step__hint{font-size:13px;color:var(--text-secondary);margin-top:4px;line-height:1.45}

/* ─── Badge "gratuit illimité" sous le titre h2 ─── */
.ls-publish__badge{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:99px;background:linear-gradient(135deg,var(--secondary-light),var(--primary-light));color:var(--secondary-dark);font-weight:700;font-size:13px;margin:0 0 18px;border:1px solid rgba(var(--secondary-rgb),.25)}
.ls-publish__badge i{font-size:18px;color:var(--secondary-dark)}
.ls-publish__badge i.ph-duotone::after{color:var(--primary);opacity:1}
.ls-publish__badge strong{color:var(--secondary-dark);font-weight:800}

/* ─── Progress bar STICKY en haut du form ─── */
.ls-form-progress{list-style:none;padding:14px 8px;margin:0 0 16px;display:flex;align-items:flex-start;justify-content:space-between;gap:8px;position:sticky;top:calc(var(--header-h) + 6px);z-index:60;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--border-light);border-radius:16px;box-shadow:0 6px 20px rgba(16,50,70,.06)}
.ls-form-progress::before{content:"";position:absolute;left:34px;right:34px;top:32px;height:3px;background:var(--border-light);border-radius:99px;z-index:0}
.ls-form-progress__step{flex:1;list-style:none;position:relative;z-index:1}
.ls-form-progress__btn{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;background:none;border:0;font-family:inherit;padding:0;width:100%}
.ls-form-progress__btn:hover .ls-form-progress__num{transform:scale(1.04)}
.ls-form-progress__num{width:36px;height:36px;border-radius:50%;background:#fff;color:var(--text-muted);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;border:2px solid var(--border-light);transition:all .25s ease}
.ls-form-progress__label{font-size:12px;font-weight:700;color:var(--text-muted);transition:color .2s ease;text-align:center;line-height:1.3}
.ls-form-progress__step.is-active .ls-form-progress__num{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;border-color:var(--primary);box-shadow:0 4px 12px rgba(var(--primary-rgb),.35);transform:scale(1.06)}
.ls-form-progress__step.is-active .ls-form-progress__label{color:var(--primary-dark)}
.ls-form-progress__step.is-done .ls-form-progress__num{background:var(--secondary);border-color:var(--secondary);color:#fff}
.ls-form-progress__step.is-done .ls-form-progress__label{color:var(--secondary-dark)}
@media(max-width:480px){
  .ls-form-progress{padding:10px 4px}
  .ls-form-progress__label{font-size:10.5px}
  .ls-form-progress__num{width:30px;height:30px;font-size:13px}
  .ls-form-progress::before{left:24px;right:24px;top:28px}
}

/* ─── Astérisque requis + libellé facultatif + compteur description ─── */
.ls-form__req{color:#E63946;font-weight:800;margin-left:2px;font-size:14px;line-height:1}
.ls-form__opt{color:var(--text-muted);font-weight:500;font-size:11px;margin-left:4px;letter-spacing:.02em}
.ls-form__counter{float:right;font-size:11px;font-weight:600;color:var(--text-muted);font-variant-numeric:tabular-nums;line-height:1.4}
.ls-form__counter.is-near-limit{color:#E69500}
.ls-form__counter.is-over-limit{color:#E63946}

/* Hint "tip" (lampe) distinct du hint info classique */
.ls-form__hint--tip{background:linear-gradient(90deg,rgba(255,215,0,.10),transparent);border-left:3px solid #FFD700;padding:6px 10px;border-radius:4px;margin-top:6px}
.ls-form__hint--tip i{color:#E69500}

/* Hint privacy (eye-slash) dans bloc adresse : visuel rassurant */
.ls-form__hint--privacy{background:var(--secondary-light);border:1px solid rgba(var(--secondary-rgb),.25);padding:10px 12px;border-radius:10px;margin-bottom:14px;color:var(--text);font-size:12.5px;line-height:1.5}
.ls-form__hint--privacy i{color:var(--secondary-dark);font-size:16px;flex:0 0 auto}
.ls-form__hint--privacy i.ph-duotone::after{color:var(--primary);opacity:1}

/* Row "N° + Rue" : N° plus étroit (90px), plus de hack inline */
.ls-form__row--street{grid-template-columns:90px 1fr}
@media(max-width:480px){.ls-form__row--street{grid-template-columns:80px 1fr}}

/* Boutons photo : caméra cachée sur desktop, label adaptatif */
.ls-btn__lbl-desktop{display:inline}
.ls-btn__lbl-mobile{display:none}
@media(max-width:768px){
  .ls-btn__lbl-desktop{display:none}
  .ls-btn__lbl-mobile{display:inline}
}
@media(min-width:769px){
  .ls-btn--photo-mobile{display:none !important}
}

/* ─── Catégorie en PILLS (cohérence DA avec .ls-cat-pill du feed) ─── */
.ls-publish-cats{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0}
.ls-publish-cat{cursor:pointer;margin:0;position:relative}
.ls-publish-cat input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.ls-publish-cat__pill{display:inline-flex;align-items:center;gap:6px;padding:9px 14px;background:#fff;border:1.5px solid var(--border);border-radius:var(--radius-full);color:var(--text-secondary);font-size:13px;font-weight:600;transition:all .15s ease;white-space:nowrap}
.ls-publish-cat__pill i{font-size:16px;color:var(--primary)}
.ls-publish-cat__pill i.ph-duotone::after{color:var(--secondary);opacity:1}
.ls-publish-cat:hover .ls-publish-cat__pill{border-color:var(--primary);color:var(--primary);transform:translateY(-1px)}
.ls-publish-cat input:checked + .ls-publish-cat__pill{background:linear-gradient(135deg,var(--primary),var(--primary-dark));border-color:var(--primary-dark);color:#fff;box-shadow:0 4px 12px rgba(var(--primary-rgb),.30)}
.ls-publish-cat input:checked + .ls-publish-cat__pill i{color:#fff}
.ls-publish-cat input:checked + .ls-publish-cat__pill i.ph-duotone::after{color:rgba(255,255,255,.6)}
.ls-publish-cat input:focus-visible + .ls-publish-cat__pill{outline:3px solid var(--primary);outline-offset:2px}

/* ─── Caution Swikly : 3 cartes radio + champ montant qui se déplie ─── */
.ls-deposit{padding:0}
.ls-deposit__label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--text);margin-bottom:10px}
.ls-deposit__label i{color:var(--primary);font-size:18px}
.ls-deposit__label i.ph-duotone::after{color:var(--secondary);opacity:1}
.ls-deposit__choices{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ls-deposit__option{margin:0;cursor:pointer;position:relative}
.ls-deposit__option input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.ls-deposit__card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px;background:#fff;border:1.5px solid var(--border);border-radius:14px;transition:all .15s ease;height:100%}
.ls-deposit__card i{font-size:22px;color:var(--text-muted);margin-bottom:2px}
.ls-deposit__card strong{font-size:13.5px;font-weight:800;color:var(--text);line-height:1.2}
.ls-deposit__card small{font-size:11.5px;color:var(--text-secondary);line-height:1.3}
.ls-deposit__option:hover .ls-deposit__card{border-color:var(--primary);transform:translateY(-1px)}
.ls-deposit__option input:checked + .ls-deposit__card{border-color:var(--primary);background:var(--primary-light);box-shadow:0 4px 12px rgba(var(--primary-rgb),.18)}
.ls-deposit__option input:checked + .ls-deposit__card i{color:var(--primary-dark)}
.ls-deposit__option input:focus-visible + .ls-deposit__card{outline:3px solid var(--primary);outline-offset:2px}
.ls-deposit__amount{margin-top:14px;padding:14px;border-radius:14px;background:var(--primary-light);border:1px solid rgba(var(--primary-rgb),.20);animation:fadeUp .2s ease}
.ls-deposit__amount label{display:block;font-size:13px;font-weight:700;color:var(--text);margin-bottom:6px}
@media(max-width:640px){
  .ls-deposit__choices{grid-template-columns:1fr}
}

/* ─── Disponibilités : sous-titre h4 aligné avec Caution (pas h3) ─── */
.ls-availability-editor__title{font-size:14px;font-weight:800;color:var(--text);margin:0 0 6px;display:flex;align-items:center;gap:8px}
.ls-availability-editor__title i{color:var(--primary);font-size:18px}
.ls-availability-editor__title i.ph-duotone::after{color:var(--secondary);opacity:1}

/* ─── CTA submit + hint : container ─── */
.ls-publish__submit{margin-top:24px}
.ls-publish__final-hint{text-align:center;margin-top:10px;font-size:12px;color:var(--text-muted)}

/* ─── CTA submit STICKY en bas sur mobile (au-dessus du bottom-nav) ─── */
@media(max-width:768px){
  .ls-publish__submit{position:sticky;bottom:calc(72px + env(safe-area-inset-bottom));z-index:50;padding:10px;margin:24px -12px -12px;background:rgba(255,255,255,.96);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--border-light);box-shadow:0 -6px 18px rgba(16,50,70,.08)}
  .ls-publish__submit .ls-publish__final-hint{margin-top:4px}
}

/* — Photo upload zone agrandie sur mobile — */
@media(max-width:768px){
  .ls-form__upload{min-height:200px;border-style:dashed;border-width:2px;border-radius:14px}
  .ls-form__upload-preview i{font-size:48px}
  .ls-form__upload-preview p{font-size:15px;font-weight:700}
}

/* — Boutons "Appareil photo" / "Galerie" sous la zone d'upload — */
.ls-form__upload-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.ls-form__upload-actions .ls-btn{width:100%;justify-content:center;min-height:46px}
@media(max-width:420px){
  .ls-form__upload-actions{grid-template-columns:1fr}
}

/* ════════════════════════════════════════════════════════════
   TIKTOK/INSTAGRAM FEED — cartes portrait immersives, infos en overlay
   ════════════════════════════════════════════════════════════ */

/* ── Conteneur feed ── */
.ls-feed.ls-feed--insta{
  display:flex;flex-direction:column;align-items:center;
  gap:20px;max-width:480px;margin:0 auto;
  padding:20px 0 80px;
}

/* ── Carte : cadre light avec image carrée + panneau texte sous ── */
.ls-feed--insta .ls-card{
  width:100%;
  display:block;
  position:relative;
  border-radius:20px;overflow:hidden;
  border:1px solid var(--border-light);
  box-shadow:0 6px 22px rgba(13,122,110,.06);
  background:var(--bg-card);
  opacity:0;transform:translateY(40px) scale(.97);
  transition:opacity .5s cubic-bezier(.2,.7,.3,1),transform .5s cubic-bezier(.2,.7,.3,1),box-shadow .2s ease;
}
.ls-feed--insta .ls-card.is-revealed{opacity:1;transform:translateY(0) scale(1)}
.ls-feed--insta .ls-card:hover{transform:translateY(-3px);box-shadow:0 16px 46px rgba(13,122,110,.14)}
.ls-feed--insta .ls-card.is-impression{box-shadow:0 0 0 1px rgba(13,122,110,.35),0 16px 46px rgba(13,122,110,.14)}

/* ── Image : ratio carré (1/1) — objet toujours entier ── */
.ls-feed--insta .ls-card__img{
  position:relative;
  width:100%;aspect-ratio:1/1;
  background:#EFF7F4;
}
.ls-feed--insta .ls-card__img img{
  width:100%;height:100%;object-fit:cover;
  display:block;
  transition:transform .6s ease;
}
.ls-feed--insta .ls-card:hover .ls-card__img img{transform:scale(1.03)}

/* Léger dégradé bas image pour la lisibilité des actions en overlay */
.ls-feed--insta .ls-card__img::after{
  content:'';
  position:absolute;inset:auto 0 0 0;
  height:38%;
  background:linear-gradient(to top,
    rgba(0,0,0,.35) 0%,
    rgba(0,0,0,.10) 45%,
    transparent 100%);
  pointer-events:none;
  z-index:1;
}

/* ── Actions overlay : rangée en bas droit de l'IMAGE ──
   Le <aside class="ls-card__actions"> est un enfant de .ls-card__img (voir JS
   createCard). Position absolute → ancrage relatif à l'image. */
.ls-feed--insta .ls-card__img .ls-card__actions{
  position:absolute;
  right:12px;bottom:12px;top:auto;left:auto;
  display:flex;flex-direction:row;align-items:center;
  gap:8px;padding:0;
  background:transparent;border:none;
  z-index:3;
}
.ls-feed--insta .ls-card__action{
  width:38px;height:38px;
  display:flex;align-items:center;justify-content:center;gap:0;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  border:1px solid rgba(13,122,110,.10);
  border-radius:50%;cursor:pointer;
  color:var(--primary-dark,#0B5E55);
  text-shadow:none;
  padding:0;font-family:var(--font);
  box-shadow:0 2px 6px rgba(13,122,110,.15);
  transition:transform .15s ease,background .15s ease,color .15s ease;
}
.ls-feed--insta .ls-card__action i{font-size:18px;line-height:1}
.ls-feed--insta .ls-card__action small{display:none}
.ls-feed--insta .ls-card__action:hover{
  transform:scale(1.08);
  background:#fff;color:var(--primary,#0D7A6E);
}
.ls-feed--insta .ls-card__action.is-active{color:var(--cta,#FF6B52);background:#fff}
.ls-feed--insta .ls-card__action.is-active i{animation:heartPop .35s ease}
.ls-feed--insta .ls-card__action--save.is-active{color:var(--primary,#0D7A6E)}
.ls-feed--insta .ls-card__action--share.is-active{color:var(--secondary-dark,#1A8570)}
/* Fallback pour anciennes règles orphelines */
.ls-card__actions{position:relative}
@keyframes heartPop{0%{transform:scale(1)}40%{transform:scale(1.4)}100%{transform:scale(1.1)}}
.ls-card__action--save.is-active{color:#10AEEA}
.ls-card__action--share.is-active{color:#a8edea}
.ls-card__distance-chip{
  display:inline-flex;flex-direction:column;align-items:center;gap:2px;
  color:rgba(255,255,255,.8);font-size:10px;font-weight:700;text-align:center;
}
.ls-card__distance-chip i{font-size:18px;color:#10AEEA}

/* ── Panneau infos SOUS l'image : lisible, palette DA teal ── */
.ls-feed--insta .ls-card__body{
  position:relative;
  padding:14px 16px 16px;
  background:var(--bg-card);
  z-index:2;
}
.ls-feed--insta .ls-card__priceline{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-bottom:4px;
}
.ls-feed--insta .ls-card__price{
  font-family:var(--font-display);
  font-size:22px;font-weight:900;
  color:var(--primary-dark, #0B5E55);
  text-shadow:none;
  line-height:1.15;
  display:inline-flex;align-items:baseline;gap:4px;flex-wrap:wrap;
}
.ls-feed--insta .ls-card__price span{
  font-size:13px;font-weight:600;color:var(--text-secondary,#5B7573);
}
/* v20260704 — icône seule, discrète : n'affecte jamais la hauteur/le retour à la
   ligne du prix, que la caution soit présente ou non sur l'annonce */
.ls-feed--insta .ls-card__swikly-badge{
  display:inline-flex;flex:0 0 auto;
  margin-left:5px;font-size:13px;line-height:1;
  color:var(--text-secondary,#5B7573);opacity:.75;
}
.ls-feed--insta .ls-card__rating{
  display:flex;align-items:center;gap:4px;
  color:#E8A000;font-size:12px;font-weight:700;
  text-shadow:none;
}
.ls-feed--insta .ls-card__rating span{color:var(--text-secondary,#5B7573);font-weight:500}
.ls-feed--insta .ls-card__title{
  font-size:15px;line-height:1.35;font-weight:600;
  color:var(--text,#1A2E2B);
  text-shadow:none;
  white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;margin:2px 0 8px;
}
.ls-feed--insta .ls-card__owner,
.ls-feed--insta .ls-card__meta{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:6px;
}
.ls-feed--insta .ls-card__author{display:flex;align-items:center;gap:8px;min-width:0}
.ls-feed--insta .ls-card__author img{
  width:26px;height:26px;border-radius:50%;flex-shrink:0;
  border:2px solid var(--bg-card);box-shadow:0 0 0 1px var(--border-light);
}
.ls-feed--insta .ls-card__author span{
  color:var(--text-secondary,#5B7573);font-size:12px;font-weight:600;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ls-feed--insta .ls-card__city{
  font-size:12px;color:var(--text-secondary,#5B7573);
  display:inline-flex;align-items:center;gap:4px;font-weight:500;
}
.ls-feed--insta .ls-card__city i{color:var(--primary,#0D7A6E);font-size:14px}

/* Badge et distance restent en haut */
.ls-feed--insta .ls-card__badge{top:14px;left:14px;z-index:3}
.ls-feed--insta .ls-card__distance{top:14px;right:14px;z-index:3}

/* ── Mobile ── */
@media(max-width:768px){
  .ls-feed.ls-feed--insta{padding:12px 12px 100px;gap:14px;max-width:100%}
  .ls-feed--insta .ls-card{border-radius:16px}
  .ls-feed--insta .ls-card__actions{right:8px;top:10px;gap:6px}
  .ls-feed--insta .ls-card__action{width:36px;height:36px}
  .ls-feed--insta .ls-card__action i{font-size:17px}
  .ls-feed--insta .ls-card__body{padding:12px 14px 14px}
  .ls-feed--insta .ls-card__price{font-size:20px}
  .ls-feed--insta .ls-card__title{font-size:14px}
}

/* Effet de transition au passage Hero → Feed (parallax-like) */
.ls-hero{transition:transform .8s cubic-bezier(.2,.7,.3,1),opacity .6s ease;will-change:transform}
.ls-app.is-scrolled-past-hero .ls-hero{transform:translateY(-12px);opacity:.96}

@media(prefers-reduced-motion:reduce){
  .ls-feed--insta .ls-card{transition:none!important;opacity:1;transform:none}
  .ls-hero{transition:none!important}
}

/* ════════════════════════════════════════════════════════════
   INSTAGRAM LAYOUT — sidebar gauche verticale ≥769px (tablette + desktop)
   ════════════════════════════════════════════════════════════ */
@media(min-width:769px){
  :root{--sidebar-w:220px}

  /* Header → sidebar verticale fixe à gauche */
  .ls-header{
    top:0;left:0;right:auto;bottom:0;
    width:var(--sidebar-w);height:100vh;
    background:#fff;backdrop-filter:none;
    border-right:1px solid var(--border-light);
    border-bottom:0;
    box-shadow:0 0 0 1px rgba(16,50,70,.02);
    padding:20px 12px 14px;
    overflow-y:auto;overflow-x:hidden;
  }
  .ls-header__inner{
    flex-direction:column;align-items:stretch;
    gap:6px;padding:0;height:auto;max-width:none;
  }

  /* Logo en haut, ample */
  .ls-logo{
    min-width:0;max-width:100%;width:100%;
    justify-content:flex-start;
    padding:10px 12px 6px;margin:0 0 14px;
    height:auto;gap:10px;
  }
  .ls-logo__img,.custom-logo{height:42px;max-width:42px;width:42px}
  .ls-logo__wordmark{font-size:22px}

  /* Search en haut, full-width style Insta */
  .ls-search{
    flex:0 0 auto;max-width:none;width:100%;
    margin:0 0 14px;
  }
  .ls-search input{height:42px;background:#F7FBFD;border-color:var(--border-light)}

  /* Nav verticale, items full-width */
  .ls-nav{
    flex-direction:column;align-items:stretch;
    gap:4px;margin:0;width:100%;
    flex:1 1 auto;min-height:0;
    background:none!important;backdrop-filter:none!important;
    position:static!important;
    padding:0;border:0;box-shadow:none;
  }
  .ls-nav__btn{
    width:100%;justify-content:flex-start;
    gap:14px;padding:12px 14px;
    border-radius:14px;font-size:15px;font-weight:500;
    color:var(--text);min-height:50px;
    flex-direction:row;
  }
  .ls-nav__btn i{font-size:26px;flex:0 0 auto;line-height:1}
  .ls-nav__btn span:not(.ls-nav__unread){
    display:inline-block!important;font-size:15px;font-weight:600;
    color:var(--text);text-align:left;flex:1 1 auto;
    max-width:none;overflow:visible;text-overflow:clip;white-space:normal;
  }
  .ls-nav__btn:hover{background:var(--primary-light);color:var(--primary-dark)}
  .ls-nav__btn:hover span{color:var(--primary-dark)}
  .ls-nav__btn.active{background:var(--primary-light);color:var(--primary-dark);font-weight:700}
  .ls-nav__btn.active span{font-weight:700;color:var(--primary-dark)}
  .ls-nav__avatar{width:28px;height:28px;flex:0 0 auto}
  .ls-nav__unread{
    position:static;margin-left:auto;
    background:var(--secondary);font-size:11px;
  }

  /* CTA Publier — gros bouton type Instagram Créer */
  .ls-nav__btn--cta{
    margin-top:6px;
    background:linear-gradient(135deg,var(--secondary) 0%,var(--secondary-dark) 100%)!important;
    color:#fff!important;border-radius:14px!important;
    width:100%!important;height:auto!important;
    padding:12px 14px!important;
    border:0!important;box-shadow:0 6px 16px rgba(var(--secondary-rgb),.28)!important;
  }
  .ls-nav__btn--cta i,.ls-nav__btn--cta span{color:#fff!important;font-size:26px}
  .ls-nav__btn--cta span{display:inline-block!important;font-size:15px!important;font-weight:700!important}

  /* Logout poussé en bas */
  .ls-nav__btn--logout{
    margin-top:auto;margin-bottom:4px;
    background:transparent;color:var(--text-secondary);
    padding:12px 14px;border-radius:14px;justify-content:flex-start;gap:14px;
  }
  .ls-nav__btn--logout i{font-size:24px}
  .ls-nav__btn--logout span{display:inline-block;font-size:15px;font-weight:600}
  .ls-nav__btn--logout:hover{background:#FFF0F0;color:var(--danger)}

  /* App décalée à droite, header-h annulé */
  .ls-app{
    padding-top:0;
    padding-left:var(--sidebar-w);
    padding-bottom:0;
  }
  .ls-app .ls-view{min-height:100vh}

  /* Categories sticky : colle au top maintenant (plus de header haut) */
  .ls-categories{top:0;padding-top:12px;background:rgba(247,252,255,.94)}

  /* Hero retrouve un padding-top normal */
  .ls-hero{padding-top:60px}

  /* Hamburger off */

  /* Footer aligné à la zone décalée */
  .ls-footer{padding-left:calc(var(--sidebar-w) + 20px);padding-right:20px}

  /* Cookie banner aligné aussi */
  .ls-cookie-banner{padding-left:calc(var(--sidebar-w) + 20px)}
}

/* Bouton toggle sidebar collapse — caché sur mobile, visible ≥769px */
.ls-sidebar-toggle{display:none}
@media(min-width:769px){
  .ls-sidebar-toggle{
    display:flex;align-items:center;justify-content:center;
    position:absolute;top:14px;right:-14px;
    width:28px;height:28px;border-radius:50%;
    background:#fff;border:1px solid var(--border);
    color:var(--text-secondary);cursor:pointer;
    box-shadow:0 4px 10px rgba(16,50,70,.08);
    z-index:10;transition:transform .2s ease,background .2s ease,color .2s ease;
  }
  .ls-sidebar-toggle:hover{color:var(--primary);background:var(--primary-light);transform:scale(1.06)}
  .ls-sidebar-toggle i{font-size:16px;transition:transform .3s cubic-bezier(.4,0,.2,1)}
  body.ls-sidebar-collapsed .ls-sidebar-toggle i{transform:rotate(180deg)}

  /* Sidebar collapsed → 72px, icons only */
  body.ls-sidebar-collapsed{--sidebar-w:72px}
  body.ls-sidebar-collapsed .ls-header{padding:20px 8px 14px;overflow:visible}
  body.ls-sidebar-collapsed .ls-logo{padding:8px 6px;margin-bottom:10px;justify-content:center;gap:0}
  body.ls-sidebar-collapsed .ls-logo__wordmark{display:none}
  body.ls-sidebar-collapsed .ls-logo__img,
  body.ls-sidebar-collapsed .custom-logo{height:36px;max-width:36px;width:36px}
  body.ls-sidebar-collapsed .ls-search{display:none}
  body.ls-sidebar-collapsed .ls-nav__btn{justify-content:center;gap:0;padding:12px 10px}
  body.ls-sidebar-collapsed .ls-nav__btn span:not(.ls-nav__unread){display:none!important}
  body.ls-sidebar-collapsed .ls-nav__btn--logout::after{display:none}
  body.ls-sidebar-collapsed .ls-nav__btn--cta{padding:10px!important;height:48px!important;border-radius:50%!important;width:48px!important;margin-left:auto;margin-right:auto}
  body.ls-sidebar-collapsed .ls-nav__btn--cta span{display:none!important}
  body.ls-sidebar-collapsed .ls-nav__unread{margin-left:0;position:absolute;top:6px;right:6px}
  body.ls-sidebar-collapsed .ls-nav__btn{position:relative}

  /* Tooltip natif au survol via title="" (Phosphor icon explicite) */
  body.ls-sidebar-collapsed .ls-nav__btn::after{
    content:attr(title);
    position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);
    background:#173443;color:#fff;padding:6px 10px;border-radius:6px;
    font-size:12px;font-weight:600;white-space:nowrap;
    opacity:0;pointer-events:none;transition:opacity .15s ease;
    box-shadow:0 4px 12px rgba(0,0,0,.18);z-index:30;
  }
  body.ls-sidebar-collapsed .ls-nav__btn:hover::after{opacity:1}

  /* App padding s'ajuste automatiquement via --sidebar-w */
}

/* Layout XL : sidebar plus large et feed un peu plus aéré */
@media(min-width:1024px){
  :root{--sidebar-w:244px}
  body.ls-sidebar-collapsed{--sidebar-w:72px}
}
@media(min-width:1024px) and (max-width:1279px){
  .ls-feed.ls-feed--insta{max-width:560px}
  .ls-feed--insta .ls-card{max-width:560px}
}
@media(min-width:1280px){
  :root{--sidebar-w:260px}
  .ls-feed.ls-feed--insta{max-width:600px}
  .ls-feed--insta .ls-card{max-width:600px}
}

/* Ajustements spécifiques tablette (769-1023px) pour ne pas écraser le feed */
@media(min-width:769px) and (max-width:1023px){
  .ls-feed.ls-feed--insta{max-width:480px;padding-left:10px;padding-right:10px}
  .ls-feed--insta .ls-card{max-width:480px}
  .ls-logo__img,.custom-logo{height:38px;max-width:38px;width:38px}
  .ls-logo__wordmark{font-size:19px}
  .ls-nav__btn{font-size:14px;min-height:46px;padding:10px 12px}
  .ls-nav__btn i{font-size:24px}
  .ls-nav__btn span:not(.ls-nav__unread){font-size:14px}
  .ls-hero{padding-top:48px;padding-left:16px;padding-right:16px}
  .ls-hero h1{font-size:clamp(28px,4.6vw,42px)}
  .ls-hero__stats{max-width:none}
}

/* ════════════════════════════════════════════════════════════
   LISIBILITÉ — léger agrandissement global pour confort
   ════════════════════════════════════════════════════════════ */
body { font-size: 16px; }
p { font-size: 15px; }
.ls-page__content { font-size: 16px; line-height: 1.7; }
.ls-page__content h2 { font-size: 22px; }
.ls-page__content h3 { font-size: 18px; }
.ls-page__content li { font-size: 15px; }
.ls-form__group label { font-size: 14px; }
.ls-form__group input,
.ls-form__group select,
.ls-form__group textarea { font-size: 16px; }
.ls-card__title { font-size: 16px; }
.ls-card__price { font-size: 24px; }
.ls-card__city,
.ls-card__author span { font-size: 13px; }
.ls-publish__title { font-size: 26px; }
.ls-detail__title { font-size: 26px; }
.ls-detail__desc { font-size: 16px; }
.ls-how__step h3 { font-size: 18px; }
.ls-how__step p { font-size: 15px; }
.ls-testimonial blockquote { font-size: 15px; }
.ls-testimonial__head strong { font-size: 15px; }
.ls-value-item strong { font-size: 16px; }
.ls-value-item span { font-size: 13px; }
.ls-help-modal h3 { font-size: 22px; }
.ls-help-modal__intro { font-size: 15px; }
.ls-help-faq summary { font-size: 15px; }
.ls-help-faq p { font-size: 14px; }
.ls-auth__tab { font-size: 16px; }
.ls-btn { font-size: 15px; }
.ls-btn--sm { font-size: 14px; }
.ls-footer { font-size: 14px; }
.ls-footer__col ul a { font-size: 14px; }
.ls-footer__copy { font-size: 13px; }
.ls-nav__btn { font-size: 15px; }

/* ════════════════════════════════════════════════════════════
   PIÈCE D'IDENTITÉ — choix CNI (recto+verso) ou Passeport
   ════════════════════════════════════════════════════════════ */
.ls-id-doc { display: grid; gap: 12px; padding: 16px; background: #F7FCFF; border: 1px solid var(--border-light); border-radius: 14px; }
.ls-identity-card .ls-id-doc { width: 100%; display: grid; align-items: stretch; justify-content: initial; }
.ls-id-doc--profile { margin-top: 2px; }
.ls-id-doc__label { font-size: 15px; font-weight: 700; color: var(--text); }
.ls-id-doc__intro { margin: 0; font-size: 14px; color: var(--text-secondary); }
.ls-id-doc__choice { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ls-id-doc__option { cursor: pointer; }
.ls-id-doc__option input { position: absolute; opacity: 0; pointer-events: none; }
.ls-id-doc__card {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 6px; padding: 16px 14px; background: #fff; border: 2px solid var(--border-light);
  border-radius: 14px; transition: all .15s ease; text-align: center;
}
.ls-id-doc__option:hover .ls-id-doc__card { border-color: var(--primary); transform: translateY(-1px); }
.ls-id-doc__option input:checked + .ls-id-doc__card {
  border-color: var(--primary); background: var(--primary-light);
  box-shadow: 0 4px 14px rgba(var(--primary-rgb), .18);
}
.ls-id-doc__option input:focus-visible + .ls-id-doc__card { outline: 3px solid rgba(var(--primary-rgb), .35); outline-offset: 3px; }
.ls-id-doc__icon { font-size: 38px; color: var(--primary); display: flex; align-items: center; justify-content: center; line-height: 1; }
.ls-id-doc__icon.ph-duotone::after,
.ls-id-doc__icon .ph-duotone::after { color: var(--secondary); opacity: 1; }
.ls-id-doc__card strong { font-size: 15px; font-weight: 700; color: var(--text); }
.ls-id-doc__card small { font-size: 12px; color: var(--text-secondary); }
.ls-id-doc__option input:checked + .ls-id-doc__card strong { color: var(--primary-dark); }

.ls-id-doc__fields[hidden] { display: none !important; }
.ls-id-doc__upload-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ls-id-doc__upload-card {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 6px; padding: 18px 14px; min-height: 130px;
  background: #fff; border: 2px dashed #C9DDE7; border-radius: 14px; cursor: pointer;
  transition: all .15s ease;
}
.ls-id-doc__upload-card:hover { border-color: var(--primary); background: #F0FAFF; }
.ls-id-doc__upload-card.is-filled { border-style: solid; border-color: var(--secondary); background: #ECFDF5; }
.ls-id-doc__upload-card--wide { min-height: 150px; }
.ls-id-doc__upload-icon { font-size: 34px; color: var(--primary); line-height: 1; }
.ls-id-doc__upload-icon.ph-duotone::after,
.ls-id-doc__upload-icon .ph-duotone::after { color: var(--secondary); opacity: 1; }
.ls-id-doc__upload-card.is-filled .ls-id-doc__upload-icon { color: var(--secondary-dark); }
.ls-id-doc__upload-title { font-size: 14px; font-weight: 700; color: var(--text); }
.ls-id-doc__upload-hint { font-size: 12px; color: var(--text-secondary); text-align: center; max-width: 95%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ls-id-doc__upload-card.is-filled .ls-id-doc__upload-hint { color: var(--secondary-dark); font-weight: 600; }
.ls-id-doc__fallback { margin: 4px 0 0; font-size: 12px; color: var(--text-muted); font-style: italic; }
@media (max-width: 540px) {
  .ls-id-doc__choice,
  .ls-id-doc__upload-row { grid-template-columns: 1fr; }
}

/* ─── Profil > Vérification d'identité ───
   Force les 2 cards CNI/Passeport côte à côte horizontalement,
   même sur les écrans étroits où la grille passerait en 1 colonne.
   Layout compact horizontal (icône à gauche, texte à droite) sur mobile. */
.ls-identity-card .ls-id-doc__choice {
  grid-template-columns: 1fr 1fr !important;
  gap: 8px;
}
@media (max-width: 540px) {
  .ls-identity-card .ls-id-doc__choice {
    grid-template-columns: 1fr 1fr !important;
  }
  .ls-identity-card .ls-id-doc__card {
    flex-direction: row;
    text-align: left;
    gap: 10px;
    padding: 12px 10px;
    align-items: center;
    justify-content: flex-start;
  }
  .ls-identity-card .ls-id-doc__icon {
    font-size: 28px;
    flex: 0 0 auto;
  }
  .ls-identity-card .ls-id-doc__card strong {
    font-size: 14px;
    display: block;
  }
  .ls-identity-card .ls-id-doc__card small {
    font-size: 11px;
    display: block;
    line-height: 1.3;
  }
}

/* ═══════════════════════════════════════════════════════════════════════
   REFONTE UX/UI — 2026-05-29  (audit "ludique, simple, intuitif")
   Objectif : réduire la charge d'information, supprimer les frictions de
   navigation, hiérarchiser les actions. Chaque bloc cite la stratégie suivie.
   N.B. : bloc d'overrides placé en fin de feuille → gagne la cascade sans
   toucher au code existant (réversible : supprimer ce bloc = retour à l'état
   d'origine).
   ═══════════════════════════════════════════════════════════════════════ */

/* ───────────────────────────────────────────────────────────────────────
   F5 — FEED PRIORITAIRE POUR LES UTILISATEURS CONNECTÉS
   Stratégie : "results first" (Airbnb, Leboncoin, Vinted). Un visiteur
   connecté récurrent vient chercher/gérer, pas relire l'argumentaire
   marketing. On masque le hero + sections de conversion (déjà vues lors de
   l'inscription) pour que la recherche, les catégories et les annonces
   soient visibles immédiatement (NN/g — "Aesthetic and minimalist design",
   loi de Hick : moins d'éléments avant l'action = décision plus rapide).
   `body.logged-in` est ajouté automatiquement par WordPress.
   ─────────────────────────────────────────────────────────────────────── */
body.logged-in[data-ls-view="feed"] .ls-hero,
body.logged-in[data-ls-view="feed"] .ls-how,
body.logged-in[data-ls-view="feed"] .ls-value-strip,
body.logged-in[data-ls-view="feed"] .ls-testimonials,
body.logged-in[data-ls-view="feed"] .ls-trust-banner,
body.logged-in[data-ls-view="feed"] .ls-earnings { display: none !important; }
/* Le feed commence juste sous le header → on rétablit une respiration en haut */
body.logged-in[data-ls-view="feed"] #view-feed { padding-top: 12px; }

/* ───────────────────────────────────────────────────────────────────────
   F4 — RECHERCHE TOUJOURS ACCESSIBLE SUR MOBILE
   Constat : sous 768px, le header devient la barre d'onglets du bas et la
   recherche (`.ls-search`) passe en display:none → la fonction n°1 d'une
   marketplace disparaît (Baymard : la recherche est le 1er point d'entrée).
   Correction : une barre de recherche dédiée, collante en haut du feed,
   visible uniquement sur mobile. Reprend le style "pilule" du header pour
   la cohérence de la DA.
   ─────────────────────────────────────────────────────────────────────── */
.ls-feed-search { display: none; }
@media (max-width: 768px) {
  .ls-feed-search {
    display: block;
    position: sticky; top: 8px; z-index: 80;
    margin: 0 0 12px;
  }
  .ls-feed-search__field { position: relative; }
  .ls-feed-search__field i {
    position: absolute; left: 16px; top: 50%; transform: translateY(-50%);
    color: var(--text-muted); font-size: 18px; pointer-events: none;
  }
  .ls-feed-search input {
    width: 100%; padding: 12px 16px 12px 46px;
    background: #fff; border: 1px solid var(--border);
    border-radius: var(--radius-full); font-size: 15px; color: var(--text);
    outline: none; font-family: var(--font);
    box-shadow: var(--shadow); transition: all .2s ease;
  }
  .ls-feed-search input::placeholder { color: var(--text-muted); }
  .ls-feed-search input:focus {
    border-color: var(--primary); box-shadow: 0 0 0 4px var(--primary-light);
  }
}

/* ───────────────────────────────────────────────────────────────────────
   F2 — FILTRES DE STATUT : DÉSENCOMBREMENT
   Constat : les panneaux Réservations / Conversations affichent 7 pastilles
   de filtre qui se replient sur 2-3 lignes sur mobile (bruit visuel, loi de
   Hick). Correction : sur mobile, rangée horizontale défilable (pattern
   éprouvé Leboncoin/Vinted/App Store "chips"), une seule ligne nette avec
   indice de défilement. On conserve le 1-tap (visibilité du filtre actif),
   supérieur à un <select> pour un filtre rapide récurrent.
   ─────────────────────────────────────────────────────────────────────── */
.ls-filter-pills { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
@media (max-width: 768px) {
  .ls-filter-pills {
    flex-wrap: nowrap; overflow-x: auto; scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch; padding-bottom: 4px;
    /* masque dégradé à droite = affordance "ça défile" */
    -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent);
            mask-image: linear-gradient(90deg, #000 85%, transparent);
  }
  .ls-filter-pills::-webkit-scrollbar { height: 0; display: none; }
  .ls-filter-pills { scrollbar-width: none; }
  .ls-filter-pill { scroll-snap-align: start; white-space: nowrap; flex: 0 0 auto; }
  /* Les filtres de dates passent sous les pills sur mobile, en pleine largeur */
  .ls-filter-dates { flex-wrap: wrap; gap: 8px; }
  .ls-filter-dates label { flex: 1 1 45%; }
}

/* ───────────────────────────────────────────────────────────────────────
   F1 — PROFIL : RÉDUIRE L'EMPILEMENT, RÉVÉLATION PROGRESSIVE
   Constat : l'onglet "Contrats" empile un formulaire de génération de 4
   sections TOUJOURS déplié AVANT la liste "Mes contrats". Or la majorité
   des visites = consulter/signer un contrat existant, pas en générer un.
   Correction (NN/g — "Progressive disclosure") :
   1) "Mes contrats" remonte en premier (CSS order, sans toucher au DOM/JS).
   2) Le formulaire de génération est replié dans un <details> (accordéon
      natif, accessible) ouvert à la demande.
   ─────────────────────────────────────────────────────────────────────── */
#account-panel-contrats { display: flex; flex-direction: column; gap: 22px; }
#account-panel-contrats .ls-contracts-section { order: -1; }       /* liste d'abord */
#account-panel-contrats .ls-contract-generator { order: 0; }

.ls-contract-generator {
  border: 1px solid var(--border); border-radius: var(--radius-lg);
  background: var(--bg-card); overflow: hidden;
}
.ls-contract-generator > summary {
  list-style: none; cursor: pointer; user-select: none;
  display: flex; align-items: center; gap: 10px;
  padding: 16px 18px; font-family: var(--font-display);
  font-weight: 700; font-size: 15px; color: var(--text);
  background: var(--bg-elevated); transition: background .2s ease;
}
.ls-contract-generator > summary::-webkit-details-marker { display: none; }
.ls-contract-generator > summary:hover { background: var(--primary-light); }
.ls-contract-generator > summary > i:first-child { font-size: 20px; color: var(--primary); }
.ls-contract-generator > summary .ls-contract-generator__chev {
  margin-left: auto; transition: transform .25s ease; color: var(--text-muted); font-size: 18px;
}
.ls-contract-generator[open] > summary .ls-contract-generator__chev { transform: rotate(180deg); }
.ls-contract-generator > summary .ls-contract-generator__tag {
  margin-left: 8px; font-family: var(--font); font-weight: 600; font-size: 11px;
  color: var(--primary-dark); background: var(--primary-light);
  padding: 3px 10px; border-radius: var(--radius-full);
}
.ls-contract-generator[open] > summary .ls-contract-generator__tag { margin-left: 8px; }
/* le formulaire conserve ses styles ; on enlève juste sa bordure car
   l'accordéon en fournit une */
.ls-contract-generator > .ls-contract-tab-form {
  border: none !important; box-shadow: none !important;
  padding: 18px; margin: 0;
}

/* Espace client : on allège le bandeau d'en-tête (chrome superflu) */
.ls-account-tools__head h3 { font-size: 18px; }
.ls-account-tools__head p { color: var(--text-secondary); font-size: 13.5px; }

/* Onglets du compte : défilables sur mobile comme les filtres (cohérence) */
@media (max-width: 768px) {
  .ls-account-tabs {
    flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -webkit-mask-image: linear-gradient(90deg, #000 88%, transparent);
            mask-image: linear-gradient(90deg, #000 88%, transparent);
  }
  .ls-account-tabs::-webkit-scrollbar { display: none; }
  .ls-account-tab { flex: 0 0 auto; white-space: nowrap; }
}

/* ───────────────────────────────────────────────────────────────────────
   F3 — PAGE CONTRAT : HIÉRARCHIE DES ACTIONS
   Constat : 3 boutons de poids visuel ÉGAL, dont "Annuler" (rouge plein,
   destructif) aussi proéminent que "Signer", et "Télécharger" en primaire
   alors que l'action attendue est "Signer". Anti-pattern (NN/g — "Error
   prevention" : une action destructive ne doit pas être au même niveau
   qu'une action constructive).
   Correction : 1 action PRIMAIRE (Signer) + 1 SECONDAIRE (Télécharger) +
   "Annuler" rétrogradé en lien discret. Barre d'actions collante pour
   rester atteignable sans re-scroller le contrat.
   (la ré-attribution des classes se fait dans single-locashare_contract.php)
   ─────────────────────────────────────────────────────────────────────── */
.ls-contract-actions {
  position: sticky; top: 12px; z-index: 30;
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
  padding: 12px 14px; margin-bottom: 18px;
  background: rgba(255,255,255,.92); backdrop-filter: blur(10px);
  border: 1px solid var(--border-light); border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
}
.ls-contract-actions .js-cancel-contract,
.ls-contract-actions .ls-btn--cancel-link {
  margin-left: auto;
  background: transparent !important; color: var(--text-muted) !important;
  box-shadow: none !important; border: none !important; padding: 8px 10px !important;
  font-weight: 600; text-decoration: underline; text-underline-offset: 3px;
}
.ls-contract-actions .js-cancel-contract:hover,
.ls-contract-actions .ls-btn--cancel-link:hover {
  color: var(--danger) !important; background: #FFF0F0 !important; text-decoration: none;
}
@media (max-width: 600px) {
  .ls-contract-actions { gap: 8px; }
  .ls-contract-actions .ls-btn { flex: 1 1 100%; justify-content: center; }
  .ls-contract-actions .js-cancel-contract,
  .ls-contract-actions .ls-btn--cancel-link { flex-basis: 100%; margin-left: 0; }
}

/* ───────────────────────────────────────────────────────────────────────
   F6 — BANDEAU COOKIES / FAB D'AIDE : SUPPRESSION DU CHEVAUCHEMENT
   Constat (captures) : le FAB d'aide (bottom-right) chevauche le bandeau
   cookies plein écran, et sur mobile les deux télescopent la barre d'onglets
   du bas. Correction : empilement vertical propre (NN/g — pas d'éléments qui
   se masquent). `:has()` lève le FAB tant que le bandeau est affiché.
   ─────────────────────────────────────────────────────────────────────── */
.ls-cookie-banner { z-index: 300; }
/* Tant que le bandeau est visible, le FAB monte au-dessus de lui */
body:has(#ls-cookie-banner:not([hidden])) .ls-help-fab-group { bottom: 92px; }
@media (max-width: 768px) {
  /* au-dessus de la barre d'onglets (64px) */
  .ls-help-fab-group { bottom: 76px; right: 16px; }
  .ls-cookie-banner { bottom: 64px; }
  body:has(#ls-cookie-banner:not([hidden])) .ls-help-fab-group { bottom: 148px; }
}
/* Fallback navigateurs sans :has() — laisse de la marge au bandeau pour ne
   pas passer sous le FAB */
@supports not selector(:has(*)) {
  .ls-cookie-banner__inner { padding-right: 84px; }
}
/* FIN REFONTE UX 2026-05-29 */

/* ── Catégories : bandeau UNE SEULE LIGNE défilant (≥769px) ──
   Même langage « chips défilantes » que le mobile (.ls-categories de base) et
   que .ls-filter-pills / .ls-account-tabs : ligne unique, scroll horizontal,
   scrollbar masquée, pills qui ne rétrécissent pas, fondu à droite comme
   affordance « ça défile ». Calé sur la largeur de la colonne feed. */
@media(min-width:769px){
  #categories-bar{
    flex-flow:row nowrap;justify-content:flex-start;
    overflow-x:auto;overflow-y:hidden;height:auto;
    width:100%;max-width:100%;margin:0 auto;
    scrollbar-width:none;
  }
  #categories-bar::-webkit-scrollbar{display:none}
  #categories-bar .ls-cat-pill{
    width:auto;flex:0 0 auto;justify-content:center;white-space:nowrap;
    padding:8px 16px;border-radius:var(--radius-full);
  }
}

/* Fondu de défilement du bandeau catégories — piloté par JS (footer.php) selon
   la position de scroll. S'applique mobile ET desktop (mêmes classes) :
   début → fondu à droite | milieu → fondu des deux côtés | fin → fondu à gauche
   | pas de débordement → aucun fondu. */
#categories-bar.is-scroll-none{-webkit-mask-image:none;mask-image:none}
#categories-bar.is-scroll-start{
  -webkit-mask-image:linear-gradient(90deg,#000 90%,transparent);
          mask-image:linear-gradient(90deg,#000 90%,transparent);
}
#categories-bar.is-scroll-middle{
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);
}
#categories-bar.is-scroll-end{
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 10%);
          mask-image:linear-gradient(90deg,transparent,#000 10%);
}

/* ════════════════════════════════════════════════════════════
   BOTTOM-NAV MOBILE (.ls-bottomnav) — rapatriée depuis functions.php
   (C2 : source de vérité unique). L'élément vit dans footer.php (enfant
   direct de <body>) pour ne pas être piégé par le backdrop-filter du header.
   Visible uniquement < 769px ; remplace l'ancienne .ls-nav (#main-nav).
   ════════════════════════════════════════════════════════════ */
.ls-bottomnav{display:none}
@media(max-width:768px){
  /* L'ancienne .ls-nav (barre header) est masquée puis remplacée par la
     bottom-nav. Ses boutons restent cliquables par programme (.click()). */
  #main-nav{display:none!important}
  .ls-bottomnav{
    display:flex;align-items:stretch;justify-content:space-around;
    position:fixed;left:0;right:0;bottom:0;z-index:300;
    background:rgba(255,255,255,.97);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
    border-top:1px solid var(--border-light,#DDEFF6);
    box-shadow:0 -6px 24px rgba(16,50,70,.08);
    padding:6px 4px calc(6px + env(safe-area-inset-bottom));
  }
  .ls-bottomnav__btn{
    position:relative;flex:1 1 0;min-width:0;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    background:none;border:0;cursor:pointer;padding:6px 2px;
    color:var(--text-secondary,#636E72);font-family:var(--font);font-size:10px;font-weight:600;
  }
  .ls-bottomnav__btn i{font-size:23px;line-height:1}
  .ls-bottomnav__btn span{font-size:10px;white-space:nowrap}
  .ls-bottomnav__btn:active{color:var(--primary,#10AEEA)}
  .ls-bottomnav__btn--cta{
    flex:0 0 auto;margin-top:-22px;
    width:54px;height:54px;border-radius:50%;
    background:linear-gradient(135deg,var(--secondary,#2FE47D),var(--secondary-dark,#18A957));
    color:#fff;box-shadow:0 6px 18px rgba(47,228,125,.4);
    align-self:flex-start;
  }
  .ls-bottomnav__btn--cta i{font-size:28px;color:#fff}
  .ls-bottomnav__unread{
    position:absolute;top:2px;right:calc(50% - 20px);
    min-width:16px;height:16px;padding:0 4px;border-radius:99px;
    background:var(--danger,#FF4757);color:#fff;border:2px solid #fff;
    font-size:9px;font-weight:800;line-height:12px;
    display:inline-flex;align-items:center;justify-content:center;
  }
  /* Espace bas pour ne pas masquer le contenu sous la barre */
  .ls-app{padding-bottom:calc(74px + env(safe-area-inset-bottom))!important}
  .ls-footer{padding-bottom:calc(80px + env(safe-area-inset-bottom))}
}

/* ════════════════════════════════════════════════════════════
   B1 — COLONNE FEED ALIGNÉE (desktop ≥769px)
   #view-feed est plafonné à une largeur de colonne unique et centré, pour que
   barre de localisation, catégories et feed partagent les mêmes bords. Corrige
   le feed insta qui s'élargissait à 1200px entre 1024 et 1279px et la barre de
   localisation qui débordait en pleine largeur.
   ════════════════════════════════════════════════════════════ */
@media(min-width:769px){
  #view-feed{max-width:600px;margin-left:auto;margin-right:auto;width:100%}
  .ls-feed.ls-feed--insta{max-width:100%}   /* largeur gouvernée par #view-feed */
  #categories-bar{max-width:100%}
}
@media(min-width:769px) and (max-width:1023px){
  #view-feed{max-width:480px}
}

/* B4 — Fond de vignette unifié avant chargement image (évite le flash de
   couleur incohérent #F7F1EC vs #EAF8FD selon les règles). */
.ls-card__img{background:var(--bg-elevated)}

/* B2 — Rayons alignés sur l'échelle 8/12/16/24 (cohérence du rythme d'arrondi). */
.ls-value-item{border-radius:var(--radius)}            /* 14 → 12 */
.ls-testimonial{border-radius:var(--radius-lg)}        /* 18 → 16 */
.ls-how__step{border-radius:var(--radius-lg)}          /* 20 → 16 */
.ls-help-modal__panel{border-radius:var(--radius-xl)}  /* 22 → 24 */

/* ════════════════════════════════════════════════════════════
   BOUTON « REMONTER EN HAUT » — essentiel avec le scroll infini : permet de
   revenir au hero / nav / recherche sans remonter à la main. Apparaît après
   600px de défilement. Placé en bas à GAUCHE pour ne pas chevaucher le FAB
   d'aide (bas droite) ni la bottom-nav mobile.
   ════════════════════════════════════════════════════════════ */
.ls-totop{
  position:fixed;bottom:24px;left:24px;z-index:280;
  width:46px;height:46px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);
  color:#fff;border:0;cursor:pointer;
  box-shadow:0 8px 22px rgba(var(--primary-rgb),.40),0 2px 6px rgba(0,0,0,.12);
  opacity:0;visibility:hidden;transform:translateY(12px);
  transition:opacity .25s ease,transform .25s ease,visibility .25s;
}
.ls-totop.is-visible{opacity:1;visibility:visible;transform:translateY(0)}
.ls-totop:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(var(--primary-rgb),.55),0 4px 10px rgba(0,0,0,.14)}
.ls-totop:active{transform:scale(.95)}
.ls-totop i{font-size:22px;line-height:1}
.ls-totop:focus-visible{outline:3px solid #fff;outline-offset:3px}
/* Masqué quand une modal plein écran est ouverte (cohérent avec le FAB d'aide) */
body.is-modal-open .ls-totop{display:none}
@media(max-width:768px){
  /* au-dessus de la bottom-nav (≈64px + safe-area) */
  .ls-totop{bottom:calc(82px + env(safe-area-inset-bottom));left:14px;width:42px;height:42px}
  .ls-totop i{font-size:20px}
}
@media(prefers-reduced-motion:reduce){
  .ls-totop{transition:opacity .2s ease}
}

/* === Fiche feed v2 (2026-06-12) : prix + etoiles en ligne, ville + pseudo regroupes en bas === */
.ls-card__priceline{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ls-card__priceline .ls-card__rating{margin:0}
.ls-card__owner{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap;row-gap:4px;font-size:12px;color:var(--text-muted)}
.ls-card__owner .ls-card__author{flex:0 1 auto;min-width:0}
.ls-card__owner .ls-card__city{margin:0}

/* === Fiche feed v2.1 (2026-06-12) : realignement note sur la ligne de base + tailles (disposition inchangee) === */
.ls-card__priceline{align-items:baseline;gap:8px}
.ls-card__priceline .ls-card__rating{margin:0;font-size:12px;gap:4px;font-weight:600}
.ls-card__priceline .ls-stars{display:inline-flex;align-items:center;gap:1px;font-size:13px;line-height:1}
.ls-card__owner{gap:10px}
.ls-card__owner .ls-card__author{gap:6px}
.ls-card__owner .ls-card__author img{width:22px;height:22px}
.ls-card__owner .ls-card__city{gap:3px}

/* === Zone specs rapides reservee (vide pour l instant ; remplie par categorie plus tard) === */
.ls-card__specs{position:absolute;right:58px;bottom:72px;display:flex;flex-direction:column;gap:6px;align-items:flex-end;z-index:3;pointer-events:none}
.ls-card__specs:empty{display:none}
.ls-spec{display:inline-flex;align-items:center;gap:4px;background:rgba(0,0,0,.5);color:#fff;font-size:11px;font-weight:600;padding:3px 8px;border-radius:999px;line-height:1.3}
.ls-spec i{font-size:13px}

/* ─── Logement (location saisonnière) ─── */
.ls-logement-fields{border:1px solid #e6e8ec;background:#f7faf9;border-radius:16px;padding:16px;margin:4px 0 18px;}
.ls-logement-fields__head{display:flex;align-items:center;gap:8px;font-weight:700;color:#1a2230;margin-bottom:14px;font-size:.98rem;}
.ls-logement-fields__head i{color:#0FA958;font-size:1.25rem;}
.ls-form__row--3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.ls-form__sublabel{display:block;font-weight:600;font-size:.9rem;color:#1a2230;margin:8px 0 10px;}
/* Grille équipements — 3 col desktop / 2 col mobile, hauteurs uniformes */
.ls-amenities{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
}
.ls-amenity{position:relative;cursor:pointer;}
.ls-amenity input{position:absolute;opacity:0;inset:0;cursor:pointer;margin:0;z-index:1;}
.ls-amenity__box{
  display:flex;align-items:center;gap:10px;
  padding:12px 12px;
  min-height:56px;                    /* hauteur uniforme */
  border:1.5px solid var(--border-light, #E0EFEC);
  border-radius:12px;background:#fff;
  font-size:.88rem;line-height:1.25;
  color:var(--text, #1A2E2B);font-weight:500;
  transition:border-color .15s,background .15s,box-shadow .15s,color .15s;
}
.ls-amenity__box i{
  font-size:1.35rem;
  color:var(--text-secondary, #5B7573);
  transition:color .15s;
  flex-shrink:0;
}
.ls-amenity:hover .ls-amenity__box{
  border-color:var(--primary, #0D7A6E);
  color:var(--primary-dark, #0B5E55);
}
.ls-amenity:hover .ls-amenity__box i{color:var(--primary, #0D7A6E)}
.ls-amenity input:checked + .ls-amenity__box{
  border-color:var(--primary, #0D7A6E);
  background:var(--primary-light, #E1F0EE);
  box-shadow:inset 0 0 0 1px var(--primary, #0D7A6E);
  color:var(--primary-dark, #0B5E55);
  font-weight:700;
}
.ls-amenity input:checked + .ls-amenity__box i{color:var(--primary, #0D7A6E);}
.ls-amenity input:focus-visible + .ls-amenity__box{
  outline:2px solid var(--primary, #0D7A6E);outline-offset:2px;
}
@media(max-width:640px){
  .ls-amenities{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .ls-amenity__box{padding:10px 11px;min-height:52px;font-size:.85rem;gap:8px}
  .ls-amenity__box i{font-size:1.2rem}
  .ls-form__row--3{gap:8px;}
}

/* Logement : fiche annonce */
.ls-logement-detail{margin:14px 0;}
.ls-logement-detail__title{display:flex;align-items:center;gap:8px;font-size:1rem;font-weight:700;color:#1a2230;margin:0 0 10px;}
.ls-logement-detail__title i{color:#0FA958;font-size:1.2rem;}
.ls-amenity-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
.ls-amenity-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:var(--primary-light,#E1F0EE);color:var(--primary-dark,#0B5E55);font-size:.85rem;font-weight:600;border:1px solid rgba(13,122,110,.20);}
.ls-amenity-chip i{font-size:1rem;color:var(--primary,#0D7A6E);}

/* ═══ AUTOCOMPLETE ADRESSE ═══════════════════════════════════════════════ */
.ls-address-search{position:relative;}
.ls-address-search__input{width:100%;padding:10px 14px;border:1.5px solid var(--border,#dde2e8);border-radius:var(--radius,10px);font-size:.95rem;font-family:inherit;background:#fff;outline:none;transition:border-color .15s;}
.ls-address-search__input:focus{border-color:var(--primary,#10AAEB);}
.ls-address-search__dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1.5px solid var(--border,#dde2e8);border-radius:var(--radius,10px);box-shadow:0 8px 24px rgba(0,0,0,.12);z-index:900;overflow:hidden;}
.ls-addr-suggestion{padding:10px 14px;font-size:.9rem;cursor:pointer;border-bottom:1px solid rgba(0,0,0,.06);transition:background .1s;}
.ls-addr-suggestion:last-child{border-bottom:none;}
.ls-addr-suggestion:hover,.ls-addr-suggestion:focus{background:var(--primary-light,#E8F6FE);outline:none;}

/* ═══ TARIFICATION DÉGRESSIVE ════════════════════════════════════════════ */
.ls-degressif-block{border:1.5px dashed var(--primary,#10AAEB);border-radius:var(--radius,10px);padding:14px;background:rgba(16,170,235,.04);}
.ls-price-tiers{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}
.ls-price-tier{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;background:rgba(16,170,235,.1);color:var(--primary-dark,#0880b5);border-radius:999px;font-size:.82rem;font-weight:600;}
.ls-price-tier i{font-size:.9rem;}
.ls-price-discount{display:inline-flex;align-items:center;gap:4px;font-size:.8rem;color:var(--primary-dark,#0880b5);font-weight:600;margin-left:6px;}
.ls-price-discount i{font-size:.9rem;}

/* ═══ SOURCE ADRESSE ═════════════════════════════════════════════════════ */
.ls-addr-source{display:inline-flex;align-items:center;gap:5px;font-size:.78rem;color:var(--text-muted,#888);margin-top:4px;}

/* ─── Conversion de devise indicative (≈ X $) — 24 juin 2026 ─── */
.ls-fx-hint{
  display:inline-block;
  margin-left:.45em;
  font-size:.72em;
  font-weight:600;
  color:var(--text-muted,#8a8f98);
  opacity:.85;
  white-space:nowrap;
  vertical-align:baseline;
}
.ls-card__price .ls-fx-hint{font-size:.62em;display:block;margin:.1em 0 0;opacity:.7}
.ls-detail__price .ls-fx-hint{font-size:.55em}
/* Support RTL global pour les langues ar/he */
html[dir="rtl"] .ls-fx-hint{margin-left:0;margin-right:.45em}
html[dir="rtl"] .ls-card__priceline,
html[dir="rtl"] .ls-detail__price-row{direction:rtl}

/* Avertissement tarif dégressif non avantageux */
.ls-degressif-warn{
  margin-top:.6rem;
  padding:.55rem .7rem;
  background:rgba(230,57,70,.08);
  border:1px solid rgba(230,57,70,.25);
  border-radius:8px;
  color:#c1121f;
  font-size:.82rem;
  line-height:1.4;
}
.ls-degressif-warn i{margin-right:.3em}
/* HELP FAB + FAQ Modal - correction brace manquante */
.ls-help-fab{
  display:inline-flex;align-items:center;gap:8px;
  padding:0 18px 0 14px;border:0;cursor:pointer;
  background:transparent;color:#fff;border-radius:99px;
  font-family:var(--font);font-size:15px;font-weight:700;line-height:1;
  min-height:40px;
  transition:background .15s ease,transform .15s ease;
}
.ls-help-fab:hover{background:rgba(255,255,255,.14);transform:none}
.ls-help-fab:active{background:rgba(255,255,255,.22)}
.ls-help-fab i{font-size:20px;line-height:1}
/* Masque le FAB Aide quand une modal plein écran est ouverte (pour ne pas cacher les CTAs principaux) */
body.is-modal-open .ls-help-fab{display:none}
  .ls-help-fab{bottom:calc(82px + env(safe-area-inset-bottom));right:14px;padding:12px 14px;font-size:14px}
.ls-categories{display:flex;gap:8px;padding:0 20px 16px;max-width:1200px;margin:0 auto;overflow-x:auto;scrollbar-width:none;position:sticky;top:var(--header-h);z-index:50;background:var(--bg);padding-top:8px}
.ls-cat-pill--active{background:var(--secondary-light);color:#0B8457;border-color:#0B8457}
.ls-card--highlight{transform:translateY(-4px);box-shadow:0 0 24px rgba(16,174,234,.18);border-color:rgba(16,174,234,.3)}
.ls-contract-actions{display:flex;justify-content:flex-end;margin-bottom:16px}
.ls-search{display:none}.ls-nav span{display:none}.ls-nav__btn{padding:8px}
.ls-nav{position:fixed;bottom:0;left:0;right:0;background:rgba(255,255,255,.95);backdrop-filter:blur(20px);border-top:1px solid var(--border-light);padding:8px 0;justify-content:space-around;margin-left:0}
.ls-nav span{display:block;font-size:10px}.ls-nav__btn{flex-direction:column;gap:2px;font-size:10px;padding:6px 12px}.ls-nav__btn i{font-size:22px}
.ls-app{padding-bottom:72px}
.ls-location-row{display:flex;align-items:flex-start;gap:16px;border:1px solid var(--border-light);border-radius:16px;padding:14px;background:#fff;margin-bottom:10px}
.ls-location-row__img{width:96px;height:96px;border-radius:12px;object-fit:cover;flex-shrink:0;background:var(--bg)}
.ls-chat-card{border:1px solid var(--border-light);border-radius:16px;background:#fff;padding:16px;display:grid;gap:14px}
.ls-chat-card__head{display:flex;justify-content:space-between;gap:12px}
.ls-chat-meta,.ls-chat-state{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ls-contract-row__actions{flex:0 0 auto}
/* — Étapes visuelles dans le formulaire de publication — */
.ls-form-step{position:relative;padding:18px 0 8px;border-top:1px solid var(--border-light);margin-top:18px}
.ls-form-step__header{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.ls-form-step__num{flex:0 0 auto;width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;box-shadow:0 2px 6px rgba(16,174,234,.3)}
.ls-form-step__title{font-size:16px;font-weight:800;color:var(--text);margin:0;line-height:1.2}
.ls-form-step__hint{font-size:12px;color:var(--text-secondary);margin-top:2px}
/* Anciennes règles Instagram-feed orphelines nettoyées ici — la feuille
   utilise désormais le bloc `.ls-feed--insta` complet (lignes 1560+). */

/* ═══════════════════════════════════════════════════════════════
   VIEWER LOCALSHARE — Style Instagram / Facebook Reels
   Navigation verticale (scroll-snap) mobile + desktop
   ═══════════════════════════════════════════════════════════════ */

/* ─── Conteneur plein écran ─── */
.ls-viewer {
  position: fixed;
  inset: 0;
  z-index: 500;
  background: #000;
  opacity: 0;
  visibility: hidden;                   /* + defense-in-depth vs reflow accidentel */
  pointer-events: none;
  transition: opacity .22s ease, visibility 0s linear .22s;
}
.ls-viewer.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: all;
  transition: opacity .22s ease, visibility 0s;
}

/* ─── Track : scroll-snap vertical (mobile ET desktop) ─── */
.ls-viewer__track {
  position: absolute;
  inset: 0;
  overflow-y: scroll;
  scroll-snap-type: y mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.ls-viewer__track::-webkit-scrollbar { display: none; }

/* ─── Chaque slide = 100dvh ─── */
.ls-viewer__slide {
  scroll-snap-align: start;
  scroll-snap-stop: always;
  height: 100dvh;
  display: flex;
  flex-direction: column;   /* mobile : image haut, info bas */
  overflow: hidden;
  position: relative;
}

/* ─── IMAGE / CARROUSEL ─── */
.ls-viewer__img-wrap {
  flex: 1 1 0;
  min-height: 0;
  position: relative;
  background: #0a0a0a;
  overflow: hidden;
}
.ls-viewer__img-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* Carrousel photo dans le viewer */
.ls-viewer__carousel-track {
  display: flex; width: 100%; height: 100%;
  transition: transform .3s ease; will-change: transform;
}
.ls-viewer__carousel-track img {
  flex: 0 0 100%; width: 100%; height: 100%; object-fit: cover;
}
.ls-viewer__carousel-nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 34px; height: 34px; border-radius: 50%;
  background: rgba(255,255,255,.85); border: none; cursor: pointer;
  font-size: 16px; color: #262626; display: flex;
  align-items: center; justify-content: center;
  box-shadow: 0 2px 6px rgba(0,0,0,.3);
  opacity: 0; transition: opacity .2s;
}
.ls-viewer__img-wrap:hover .ls-viewer__carousel-nav { opacity: 1; }
.ls-viewer__carousel-nav--prev { left: 12px; }
.ls-viewer__carousel-nav--next { right: 12px; }
.ls-viewer__carousel-nav:disabled { display: none; }
.ls-viewer__carousel-dots {
  position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%);
  display: flex; gap: 5px; z-index: 2;
}
.ls-viewer__carousel-dots span {
  width: 6px; height: 6px; border-radius: 50%;
  background: rgba(255,255,255,.4); transition: background .2s;
}
.ls-viewer__carousel-dots span.active { background: #fff; }
/* Gradient bas image → lisibilité infos */
.ls-viewer__img-wrap::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 120px;
  background: linear-gradient(to top, rgba(0,0,0,.7), transparent);
  pointer-events: none;
}

/* ─── PANNEAU INFO ─── */
.ls-viewer__info {
  flex: 0 0 auto;
  background: #111;
  padding: 16px 20px 24px;
  display: flex;
  flex-direction: column;
  gap: 0;
}
/* Poignée mobile */
.ls-viewer__handle {
  width: 32px; height: 3px;
  background: rgba(255,255,255,.2);
  border-radius: 2px;
  margin: 0 auto 14px;
}
/* Ligne prix */
.ls-viewer__price-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
  flex-wrap: wrap;
}
.ls-viewer__price {
  font-size: 20px;
  font-weight: 700;
  color: #fff;
  line-height: 1;
}
.ls-viewer__per {
  font-size: 12px;
  color: rgba(255,255,255,.45);
  font-weight: 400;
}
.ls-viewer__cond {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: rgba(255,255,255,.5);
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 100px;
  padding: 2px 9px;
}
/* Titre */
.ls-viewer__title {
  font-size: 15px;
  font-weight: 600;
  color: #fff;
  line-height: 1.3;
  margin: 0 0 8px;
}
/* Localisation */
.ls-viewer__loc {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  color: rgba(255,255,255,.45);
  margin-bottom: 8px;
}
.ls-viewer__loc i { font-size: 13px; }
.ls-viewer__dot { opacity: .4; }
/* Étoiles */
.ls-viewer__stars {
  display: flex;
  align-items: center;
  gap: 3px;
  font-size: 11px;
  color: #e8a000;
  margin-bottom: 12px;
}
.ls-viewer__stars span {
  color: rgba(255,255,255,.4);
  font-size: 11px;
  margin-left: 3px;
}
/* CTA */
.ls-viewer__cta {
  display: flex;
  gap: 8px;
  align-items: center;
}
.ls-viewer__cta-primary {
  flex: 1;
  padding: 11px 16px;
  background: var(--primary, #10AEEA);
  color: #fff;
  border: none;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  transition: background .2s, transform .15s;
}
.ls-viewer__cta-primary:hover { background: #0e9ed6; transform: scale(.98); }
.ls-viewer__cta-secondary {
  width: 42px; height: 42px;
  border: 1px solid rgba(255,255,255,.15);
  background: rgba(255,255,255,.06);
  border-radius: 10px;
  color: rgba(255,255,255,.6);
  font-size: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background .2s;
  flex-shrink: 0;
}
.ls-viewer__cta-secondary:hover { background: rgba(255,255,255,.12); color: #fff; }
/* Hint scroll (caché sur mobile) */
.ls-viewer__scroll-hint {
  display: none;
  align-items: center;
  gap: 5px;
  font-size: 10px;
  color: rgba(255,255,255,.2);
  margin-top: 10px;
  letter-spacing: .02em;
}
.ls-viewer__scroll-hint i { font-size: 12px; }

/* ─── Bouton Retour (accueil) — ferme le viewer + navigue à l'accueil ─── */
.ls-viewer__back {
  position: fixed;
  top: 16px; left: 16px;
  z-index: 600;
  height: 38px; padding: 0 14px 0 12px;
  border-radius: 99px;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: rgba(255,255,255,.9);
  border: 1px solid rgba(255,255,255,.12);
  cursor: pointer;
  font-size: 13px; font-weight: 600;
  display: inline-flex; align-items: center; gap: 6px;
  transition: background .2s;
}
.ls-viewer__back i { font-size: 16px; line-height: 1; }
.ls-viewer__back:hover { background: rgba(0,0,0,.8); color: #fff; }
@media (max-width: 480px) {
  .ls-viewer__back span { display: none; }
  .ls-viewer__back { padding: 0; width: 38px; justify-content: center; }
}

/* ─── Bouton fermer (croix) — placé en haut-droite pour ne pas chevaucher Retour ─── */
.ls-viewer__close {
  position: fixed;
  top: 16px; right: 16px; left: auto;
  z-index: 600;
  width: 38px; height: 38px;
  border-radius: 50%;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: rgba(255,255,255,.85);
  border: 1px solid rgba(255,255,255,.12);
  cursor: pointer;
  font-size: 17px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .2s;
}
.ls-viewer__close:hover { background: rgba(0,0,0,.8); color: #fff; }

/* ─── Stack nav ^ v (Instagram-style, droite de l'écran) ─── */
.ls-viewer__nav-stack {
  position: fixed;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 600;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ls-viewer__nav {
  width: 40px; height: 40px;
  border-radius: 50%;
  background: rgba(255,255,255,.12);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,.18);
  color: rgba(255,255,255,.85);
  cursor: pointer;
  font-size: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .2s, transform .15s;
}
.ls-viewer__nav:hover { background: rgba(255,255,255,.22); transform: scale(1.08); }
.ls-viewer__nav:disabled { opacity: .2; pointer-events: none; }

/* ══ DESKTOP ≥ 768px : layout 2 colonnes, scroll vertical inchangé ══ */
@media (min-width: 768px) {

  .ls-viewer__slide {
    flex-direction: row;   /* image gauche, info droite */
  }

  .ls-viewer__img-wrap {
    flex: 0 0 62%;
    height: 100dvh;
  }

  .ls-viewer__info {
    flex: 0 0 38%;
    padding: 0 36px;
    border-left: 1px solid rgba(255,255,255,.06);
    justify-content: center;
    gap: 0;
    min-height: 100dvh;
  }

  .ls-viewer__handle { display: none; }

  .ls-viewer__price { font-size: 26px; }
  .ls-viewer__title { font-size: 18px; margin-bottom: 10px; }
  .ls-viewer__loc   { margin-bottom: 10px; font-size: 13px; }
  .ls-viewer__stars { font-size: 12px; margin-bottom: 16px; }

  .ls-viewer__cta {
    margin-top: 20px;
  }

  /* Hint scroll visible sur desktop */
  .ls-viewer__scroll-hint {
    display: flex;
    margin-top: 28px;
  }

  /* Nav arrows : plus grands sur desktop */
  .ls-viewer__nav-stack { right: 20px; }
  .ls-viewer__nav { width: 44px; height: 44px; font-size: 20px; }
}

/* ══ GRAND ÉCRAN ══ */
@media (min-width: 1200px) {
  .ls-viewer__img-wrap { flex: 0 0 65%; }
  .ls-viewer__info     { flex: 0 0 35%; padding: 0 44px; }
  .ls-viewer__price    { font-size: 30px; }
  .ls-viewer__title    { font-size: 20px; }
}

/* ═══════════════════════════════════════════════════════
   OVERRIDES CTA CORAIL — Psychologie de conversion
   Le corail #FF6B52 crée le contraste maximal sur fond
   teal/blanc et active le circuit d'approche (chaleur).
   Réservé aux boutons de conversion primaires uniquement.
   ═══════════════════════════════════════════════════════ */

/* Hero CTA principal : corail sur fond sombre = contraste optimal */
.ls-hero__cta--primary {
  background: var(--cta) !important;
  box-shadow: 0 0 20px rgba(var(--cta-rgb),.45) !important;
}
.ls-hero__cta--primary:hover {
  background: var(--cta-dark) !important;
  transform: translateY(-2px);
}

/* Viewer : bouton "Voir l'annonce complète" = CTA de conversion */
.ls-viewer__cta-primary {
  background: var(--cta) !important;
  border-color: var(--cta) !important;
}
.ls-viewer__cta-primary:hover {
  background: var(--cta-dark) !important;
}

/* Bouton "Publier une annonce" dans le nav = action principale */
.ls-nav__btn--publish,
.ls-publish-fab,
[data-action="publish"],
.ls-btn--cta {
  background: var(--cta) !important;
  color: #fff !important;
}
.ls-nav__btn--publish:hover,
.ls-publish-fab:hover {
  background: var(--cta-dark) !important;
}

/* Location bar : bouton "À proximité" reste en vert secondaire */
.ls-location-bar__btn.active {
  background: var(--secondary) !important;
  border-color: var(--secondary) !important;
}

/* Badge distance : vert communauté */
.ls-card__distance {
  background: var(--secondary) !important;
}


/* ═══════════════════════════════════════════════════════════════════════
   ONGLET NOTIFICATIONS DANS L'ESPACE PROFIL — main.v20260701a.css
   ════════════════════════════════════════════════════════════════════ */

/* En-tête de l'onglet */
.ls-notif-tab__head {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  justify-content: space-between;
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.ls-notif-tab__head h3 {
  margin: 0 0 4px;
  font-size: 1.05rem;
  color: var(--text);
  display: flex;
  align-items: center;
  gap: 8px;
}
.ls-notif-tab__head h3 i {
  color: var(--primary);
}

.ls-notif-tab__mark-all {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  background: var(--primary-light);
  color: var(--primary-dark);
  border: 1px solid var(--primary);
  border-radius: 22px;
  font-size: .82rem;
  font-weight: 600;
  cursor: pointer;
  transition: background .15s, color .15s;
  white-space: nowrap;
}
.ls-notif-tab__mark-all:hover {
  background: var(--primary);
  color: #fff;
}
.ls-notif-tab__mark-all i { font-size: 1rem; }

/* Filtres */
.ls-notif-tab__filters {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}

/* Liste */
.ls-notif-tab__list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* Une ligne de notification */
.ls-notif-row {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 16px;
  background: var(--bg-card);
  border: 1px solid var(--border-light);
  border-radius: 12px;
  transition: background .15s, border-color .15s;
  cursor: pointer;
}
.ls-notif-row:hover {
  background: var(--bg-elevated);
  border-color: var(--border);
}
.ls-notif-row--unread {
  background: var(--primary-light);
  border-color: var(--primary);
}
.ls-notif-row--unread:hover {
  background: #d8ecea;
}

/* Icône circulaire */
.ls-notif-row__icon {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 1.2rem;
}
.ls-notif-row__icon--success { background: #dcfce7; color: #16a34a; }
.ls-notif-row__icon--error   { background: #fee2e2; color: #dc2626; }
.ls-notif-row__icon--info    { background: #fff; color: var(--primary); border: 1px solid var(--primary); }
.ls-notif-row__icon--warning { background: #fef3c7; color: #d97706; }
.ls-notif-row--unread .ls-notif-row__icon--info { background: #fff; }

/* Corps */
.ls-notif-row__body {
  flex: 1;
  min-width: 0;
}
.ls-notif-row__title {
  font-size: .92rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 3px;
  line-height: 1.3;
}
.ls-notif-row--unread .ls-notif-row__title { color: var(--primary-dark); }
.ls-notif-row__text {
  font-size: .84rem;
  color: var(--text-secondary);
  line-height: 1.45;
}
.ls-notif-row__meta {
  font-size: .74rem;
  color: var(--text-muted);
  margin-top: 6px;
}

/* Actions */
.ls-notif-row__actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
.ls-notif-row__mark,
.ls-notif-row__goto {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-secondary);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  transition: background .15s, color .15s, border-color .15s;
}
.ls-notif-row__mark:hover {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary);
}
.ls-notif-row__goto:hover {
  background: var(--secondary);
  color: #fff;
  border-color: var(--secondary);
}

/* État vide */
.ls-notif-empty {
  padding: 60px 20px;
  text-align: center;
  color: var(--text-muted);
}
.ls-notif-empty i {
  font-size: 2.8rem;
  opacity: .35;
  color: var(--primary);
  display: block;
  margin-bottom: 10px;
}
.ls-notif-empty p {
  font-size: .9rem;
  line-height: 1.5;
}

/* Badge onglet Notifications (hérite de .ls-tab-badge) */
.ls-account-tab[data-account-tab="notifications"] .ls-tab-badge {
  background: var(--cta);
}

/* Responsive */
@media (max-width: 640px) {
  .ls-notif-row {
    padding: 12px 14px;
    gap: 10px;
  }
  .ls-notif-row__icon {
    width: 38px;
    height: 38px;
    font-size: 1.05rem;
  }
  .ls-notif-row__actions {
    flex-direction: column;
  }
  .ls-notif-row__mark,
  .ls-notif-row__goto {
    width: 30px;
    height: 30px;
    font-size: .88rem;
  }
}

/* ─── Onglet Notifications : préférences email ─────────────────────── */
.ls-notif-prefs__head { margin-bottom: 14px; }
.ls-notif-prefs__head h3 {
  display: flex; align-items: center; gap: 8px;
  font-size: 1.05rem; margin: 0 0 6px;
  color: var(--primary-dark, #0B5E55);
}
.ls-notif-prefs { display: flex; flex-direction: column; gap: 10px; }
.ls-notif-pref {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 12px 14px;
  background: #FAFAF8;
  border: 1px solid #E3E9E7;
  border-radius: 12px;
  cursor: pointer;
  transition: border-color .15s, background .15s;
}
.ls-notif-pref:hover { border-color: #0D7A6E; background: #EFF7F4; }
.ls-notif-pref input[type="checkbox"] {
  margin-top: 3px; width: 18px; height: 18px; accent-color: #0D7A6E; flex-shrink: 0;
}
.ls-notif-pref__body { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; }
.ls-notif-pref__title {
  display: flex; align-items: center; gap: 6px;
  font-weight: 600; color: #1A2E2B; font-size: .95rem;
}
.ls-notif-pref__title i { color: #0D7A6E; font-size: 1.05rem; }
.ls-notif-pref__desc { font-size: .82rem; color: #5B7573; line-height: 1.45; }
.ls-notif-pref--select { cursor: default; }
.ls-notif-pref--select:hover { background: #FAFAF8; border-color: #E3E9E7; }
.ls-notif-pref--select select {
  margin-top: 6px; padding: 7px 10px;
  border: 1px solid #C7D3D1; border-radius: 8px;
  font-size: .9rem; background: #fff; color: #1A2E2B;
  max-width: 260px;
}
.ls-notif-prefs__actions {
  display: flex; align-items: center; gap: 14px;
  margin-top: 4px; flex-wrap: wrap;
}
.ls-notif-prefs__status { font-size: .85rem; font-weight: 500; }

/* ─── Safety : les icônes Phosphor doivent TOUJOURS s'afficher dans l'app.
   Défense en profondeur contre un override CSS parasite qui masquerait
   par erreur une icône ph-* (bug icons 2026-07-02). */
body.is-capacitor-app i[class^="ph"],
body.is-capacitor-app i[class*=" ph"] {
  display: inline-block !important;
  font-family: "Phosphor", "Phosphor-Fill", "Phosphor-Duotone" !important;
  visibility: visible !important;
}

/* ═══════════════════════════════════════════════════════════════
   MODE APP ANDROID (Capacitor) — layout smartphone dédié
   Activé par la classe `body.is-capacitor-app` (voir header.php).
   Objectifs : forcer le layout mobile même à largeurs "tablette",
   masquer les éléments non pertinents dans l'app (CMP, sidebar
   desktop, aide-FAB flottant), donner tout l'espace au feed.
   ═══════════════════════════════════════════════════════════════ */
body.is-capacitor-app {
  /* Force le layout mobile sur toutes largeurs */
  --sidebar-w: 0px;
}
/* Masque la sidebar/header desktop — l'app garde le layout mobile */
body.is-capacitor-app .ls-header,
body.is-capacitor-app .ls-sidebar-toggle { position: static; }
@media (min-width: 769px) {
  body.is-capacitor-app .ls-app {
    padding-left: 0 !important;
    padding-top: var(--header-h, 64px) !important;
  }
  body.is-capacitor-app .ls-header {
    position: fixed !important;
    inset: 0 0 auto 0 !important;
    width: auto !important; height: var(--header-h, 64px) !important;
    padding: 0 12px !important;
    border-right: 0 !important;
    border-bottom: 1px solid var(--border-light) !important;
    flex-direction: row !important;
    overflow: visible !important;
  }
  body.is-capacitor-app .ls-header__inner {
    flex-direction: row !important;
    height: 100% !important;
    padding: 0 !important;
  }
  body.is-capacitor-app .ls-logo { min-width: auto !important; margin: 0 !important; padding: 0 !important; }
  body.is-capacitor-app .ls-logo__wordmark { display: inline-flex !important; }
  body.is-capacitor-app .ls-nav { display: none !important; }  /* nav dans header cachée, bottom-nav prend le relais */
  body.is-capacitor-app .ls-bottomnav { display: flex !important; }
  body.is-capacitor-app .ls-search { display: none !important; }  /* recherche mobile intégrée dans le feed */
  body.is-capacitor-app .ls-sidebar-toggle { display: none !important; }
  body.is-capacitor-app .ls-footer,
  body.is-capacitor-app .ls-cookie-banner { padding-left: 20px !important; }
  body.is-capacitor-app .ls-feed.ls-feed--insta { max-width: 100% !important; padding-left: 8px !important; padding-right: 8px !important; }
  body.is-capacitor-app #view-feed { max-width: 100% !important; padding-left: 0 !important; padding-right: 0 !important; }
}
/* Éléments cachés dans l'app (nuisance mobile ou doublons natifs) */
body.is-capacitor-app .ls-cookie-banner,      /* consent géré côté app par Play Store policies */
body.is-capacitor-app iframe[src*="fundingchoicesmessages"] {
  display: none !important;
}
/* Bouton Aide flottant : conservé mais remonté au-dessus de la bottom-nav
   pour ne pas la chevaucher (+74px = hauteur bottom-nav + marge safe area). */
body.is-capacitor-app .ls-help-fab,
body.is-capacitor-app .ls-help-fab-group {
  bottom: calc(90px + env(safe-area-inset-bottom, 0px)) !important;
  right: 14px !important;
  z-index: 90 !important;   /* sous les modales (100) mais au-dessus du contenu */
}

/* ─── Footer app : mise en page compact, centrée, sans colonnes desktop ─── */
body.is-capacitor-app .ls-footer {
  padding: 22px 18px calc(90px + env(safe-area-inset-bottom, 0px)) !important;
  background: linear-gradient(180deg, #FAFAF8 0%, #EFF7F4 100%) !important;
  border-top: 1px solid var(--border-light, #E0EFEC) !important;
  text-align: center;
}
body.is-capacitor-app .ls-footer__cols {
  display: flex !important;
  flex-direction: column !important;
  gap: 20px !important;
  grid-template-columns: none !important;
  max-width: 480px;
  margin: 0 auto;
}
body.is-capacitor-app .ls-footer__col--brand {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
}
body.is-capacitor-app .ls-footer__logo {
  justify-content: center;
  padding: 0 !important;
}
body.is-capacitor-app .ls-footer__logo-img { width: 44px; height: 44px; max-width: 44px; }
body.is-capacitor-app .ls-footer__wordmark { font-size: 22px; }
body.is-capacitor-app .ls-footer__sub {
  font-size: 13px; line-height: 1.5;
  color: var(--text-secondary, #4A6B64);
  margin: 0;
  max-width: 320px;
}
body.is-capacitor-app .ls-footer__social {
  display: flex; justify-content: center; gap: 12px; margin-top: 4px;
}
body.is-capacitor-app .ls-footer__social a {
  width: 40px; height: 40px; border-radius: 50%;
  background: #fff; border: 1px solid var(--border-light);
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--primary, #0D7A6E);
  font-size: 18px;
  transition: background .2s, color .2s;
}
body.is-capacitor-app .ls-footer__social a:hover,
body.is-capacitor-app .ls-footer__social a:active {
  background: var(--primary, #0D7A6E); color: #fff;
}

/* Les 3 colonnes de liens (Plateforme / Découvrir / Légal) → pills en rangée */
body.is-capacitor-app .ls-footer__col:not(.ls-footer__col--brand) {
  background: rgba(255,255,255,.6);
  border: 1px solid var(--border-light);
  border-radius: 14px;
  padding: 12px 14px;
  text-align: left;
}
body.is-capacitor-app .ls-footer__col h4 {
  font-size: 12px; font-weight: 800;
  text-transform: uppercase; letter-spacing: .06em;
  color: var(--primary-dark, #0B5E55);
  margin: 0 0 8px;
  display: flex; align-items: center; gap: 6px;
}
body.is-capacitor-app .ls-footer__col h4::before {
  content: ''; width: 6px; height: 6px; border-radius: 50%;
  background: var(--secondary, #2EAD8A);
}
body.is-capacitor-app .ls-footer__col ul {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: 6px;
}
body.is-capacitor-app .ls-footer__col li { margin: 0; }
body.is-capacitor-app .ls-footer__col a {
  display: inline-flex; align-items: center;
  padding: 6px 12px;
  background: #fff;
  border: 1px solid var(--border-light);
  border-radius: 99px;
  font-size: 12.5px; font-weight: 600;
  color: var(--text, #1A2E2B);
  text-decoration: none;
  transition: border-color .15s, color .15s;
}
body.is-capacitor-app .ls-footer__col a:hover,
body.is-capacitor-app .ls-footer__col a:active {
  border-color: var(--primary, #0D7A6E);
  color: var(--primary-dark, #0B5E55);
}
body.is-capacitor-app .ls-footer__copy {
  font-size: 11px;
  color: var(--text-muted, #8AADA8);
  margin: 18px 0 0;
  padding-top: 14px;
  border-top: 1px dashed var(--border-light);
}
body.is-capacitor-app .ls-footer__by {
  color: var(--primary-dark, #0B5E55);
  font-weight: 700;
  text-decoration: none;
}
/* Safe area iOS/Android notch : padding-bottom pour la bottom-nav */
body.is-capacitor-app .ls-app {
  padding-bottom: calc(74px + env(safe-area-inset-bottom, 0px)) !important;
}
body.is-capacitor-app .ls-bottomnav {
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
body.is-capacitor-app .ls-header {
  padding-top: env(safe-area-inset-top, 0px);
  height: calc(var(--header-h, 64px) + env(safe-area-inset-top, 0px));
}
/* Feed : centrage pleine largeur, plus de max-width absurde */
body.is-capacitor-app .ls-feed--insta .ls-card { max-width: 100% !important; border-radius: 16px !important; }
body.is-capacitor-app .ls-feed--insta { gap: 14px !important; padding: 14px 10px 100px !important; }
/* Bloque le zoom involontaire dans les inputs sur Android WebView */
body.is-capacitor-app input,
body.is-capacitor-app select,
body.is-capacitor-app textarea { font-size: 16px !important; }
/* Retire les hover styles (pas de survol en tactile) */
@media (hover: none) {
  body.is-capacitor-app .ls-card:hover,
  body.is-capacitor-app .ls-btn:hover { transform: none !important; }
}

/* ─── Neutralisation des boutons GPS verts injectés par le plugin
   `localshare-security` (`ls_add_gps_location_script`).
   Ces boutons "📍 Utiliser ma position" / "📍 Actualiser ma position" font
   doublon avec les CTAs natifs du thème (#publish-use-gps, #geocode-address-btn,
   #profile-edit-address-btn) et cassent la DA (vert #28a745 hors palette teal).
   Masqués visuellement pour tous les utilisateurs le 2026-07-02. */
.ls-gps-btn { display: none !important; }

