:root{
  --bg:#f6f7fb;
  --card:#ffffff;
  --text:#0f172a;
  --muted:#64748b;
  --primary:#0f766e;
  --primary-2:#f97316;
  --border:#e2e8f0;
  --shadow: 0 10px 25px rgba(2,6,23,.08);
  --radius:18px;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,'Helvetica Neue',Arial;color:var(--text);background:var(--bg)}
a{color:inherit;text-decoration:none}
.container{width:min(1800px,100%);margin:0 auto}
.topbar{position:sticky;top:0;background:rgba(246,247,251,.9);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);z-index:10}
.topbar__inner{display:flex;gap:14px;align-items:center;padding:14px 0;flex-wrap:wrap}
.brand{font-weight:800;letter-spacing:.2px;display:flex;align-items:center;gap:10px;white-space:nowrap}
.brand__logo{width:28px;height:28px;display:block}
.search{display:flex;gap:5px;flex:1;min-width:min(640px,100%)}
.search input{flex:1;min-width:120px;padding:12px 12px;border:1px solid var(--border);border-radius:14px;outline:none;background:#fff}
.search__q{padding-left:44px;background-repeat:no-repeat;background-position:12px center;background-size:22px 22px}
.search input:focus{border-color:rgba(15,118,110,.5);box-shadow:0 0 0 4px rgba(15,118,110,.12)}

.cat__left{display:flex;align-items:center;gap:12px;min-width:0}
.cat__icon{width:44px;height:44px;border-radius:14px;flex:0 0 auto;background:#fff;border:1px solid var(--border)}
.nav{display:flex;gap:8px;align-items:center;margin-left:auto;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border-radius:999px;border:1px solid var(--border);background:#fff;cursor:pointer;font-weight:650}
.btn--primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn--primary:hover{filter:brightness(.95)}
.btn--accent{background:var(--primary-2);border-color:var(--primary-2);color:#fff}
.btn--ghost{background:transparent}
h1{font-size:28px;margin:22px 0 10px}
h2{font-size:18px;margin:18px 0 10px}
.muted{color:var(--muted)}
.grid{display:grid;gap:14px}
.grid--cats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin:16px 0 6px}
.cat{display:flex;align-items:center;justify-content:space-between;gap:12px}
.cat__left{display:flex;align-items:center;gap:12px;min-width:0}
.cat__icon{width:44px;height:44px;border-radius:14px;flex:0 0 auto;background:#fff;border:1px solid var(--border)}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}
.card__body{padding:14px}
.cat{display:flex;align-items:center;justify-content:space-between;padding:14px}
.cat b{font-size:15px}
.badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;border:1px solid var(--border);color:var(--muted);font-size:12px;background:#fff}
.ads{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:12px 0 30px}
.ad__img{width:100%;aspect-ratio:16/10;object-fit:cover;border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);border-bottom:1px solid var(--border);background:#eef2ff}
.price{font-weight:900}
.filters-row{display:flex;gap:14px;flex-wrap:wrap;}
.km-page--admin-locations .filters-row{flex-wrap:wrap;}
.km-page--admin-categories .admin-cols{display:flex;gap:14px;align-items:flex-start;}
.km-page--admin-categories .admin-cols > .card{min-width: 0;}
/*.km-page-admin-categories .row{flex-wrap: nowrap;overflow-x: auto;}*/
.row > *{flex:1;min-width:250px}
.form{display:grid;gap:10px}
.label{font-weight:650;font-size:14px}
.input, select, textarea{width:100%;padding:12px;border:1px solid var(--border);border-radius:14px;outline:none;background:#fff}
textarea{min-height:120px;resize:vertical}
.input:focus, select:focus, textarea:focus{border-color:rgba(15,118,110,.5);box-shadow:0 0 0 4px rgba(15,118,110,.12)}
.alert{padding:12px 14px;border-radius:14px;border:1px solid var(--border);background:#fff}
.alert--ok{border-color:rgba(15,118,110,.35);background:rgba(15,118,110,.06)}
.alert--err{border-color:rgba(249,115,22,.35);background:rgba(249,115,22,.06)}
.footer{border-top:1px solid var(--border);padding:20px 0;background:#fff}
.footer__inner{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden}
.table th,.table td{padding:10px;border-bottom:1px solid var(--border);text-align:left;font-size:14px}
.table th{background:#f8fafc}
.pills{display:flex;gap:8px;flex-wrap:wrap}
.pill{padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:#fff}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.gallery img{width:100%;border-radius:14px;border:1px solid var(--border);aspect-ratio:16/11;object-fit:cover}

.preview-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,90px);
  gap:10px;
  margin-top:10px;
}
.preview-item{
  position:relative;
}
.preview-item img{
  width:90px;
  height:90px;
  object-fit:cover;
  border-radius:8px;
}
.preview-item button{
  position:absolute;
  top:-6px;
  right:-6px;
  border:none;
  background:#e00;
  color:#fff;
  border-radius:50%;
  width:22px;
  height:22px;
  cursor:pointer;
}

.km-preview-item.main img{
  outline:2px solid rgba(17, 24, 39, .35);
  outline-offset:2px;
}

.km-phone{
  font-weight:900;
  font-size:18px;
  letter-spacing:.4px;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(0,0,0,.10);
  background:#fff;
}

.km-badge-new{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:30px;
  height:18px;
  padding:0 6px;
  margin-left:6px;
  border-radius:999px;
  font-size:12px;
  font-weight:900;
  background:#e11d48;
  color:#fff;
  line-height:18px;
}
.modal-overlay{
  position: fixed;
  inset: 0;
  z-index:9999;
  background: rgba(0,0,0,.55);
  display: flex;
  align-items: center;
  justify-content: center;

  padding: 16px;
  width:100vw;
  height:80%;
  top: 0;
right: 0;
bottom: 0;
left: 0;
}

.modal-box{
  position: relative;
  z-index: 100;
  width: min(100%,560px);
  overflow-y:auto;
  max-height:calc(100dvh-32px);
 max-width: 360px;
  background: #fff;
  border-radius: 12px;
  padding: 12px;
  box-shadow: 0 18px 38px rgba(0,0,0,.20);
  top:10%;
 right:0%;
}



.modal-actions,
.modal-actions form,
.modal-actions button,
.js-close-delete,
.btn-confirm{
  position: relative;
  z-index: 10000;
  pointer-events: auto;
}

.km-hidden{
  display:none;
}


.modal-box h3{
  margin: 0 0 8px 0;
  font-size: 18px;
}

.modal-box p{
  margin: 0;
  opacity: .85;
  font-size: 14px;
  line-height: 1.35;
}

.modal-actions{
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 16px;
}

.modal-actions form{
  margin: 0;
}

.btn-cancel,
.btn-confirm{
  border: 0;
  border-radius: 10px;
  padding: 10px 14px;
  cursor: pointer;
  font-weight: 600;
}

.btn-cancel{
  background: #e9ecef;
}

.btn-confirm{
  background: #dc3545;
  color: #fff;
}
.btn-confirm:hover{
  filter: brightness(.95);
}
/* Zone annonces + pub à droite (sans toucher au haut de page) */
.km-ads-area{
  display:grid;
  grid-template-columns: 1fr 320px;
  gap:16px;
  align-items:start;
  margin-top:14px;
}
.km-ads-right{
  position:sticky;
  top:14px;
  align-self:start;
}
.km-side__title{font-weight:900;font-size:16px;margin-bottom:10px}

/* Bloc vidéo pub   Users*/
.km-video-ad{position:relative;border-radius:14px;overflow:hidden;background:#000}
.km-video-ad video{width:100%;height:420px;object-fit:cover;display:block}
.km-video-overlay{
  position:absolute;left:0;right:0;bottom:0;
  padding:12px;color:#fff;
  background:linear-gradient(transparent, rgba(0,0,0,.75));
}
.km-video-overlay strong{display:block;font-size:14px;font-weight:900}
.km-video-overlay span{font-size:12px;opacity:.9}

/* Responsive  users*/
@media (max-width: 1100px){
  .km-ads-area{grid-template-columns:1fr}
  .km-ads-right{position:static}
}
/* zone avatar*/
.km-userchip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  text-decoration:none;
  color:inherit;
  padding:6px 10px;
  border-radius:999px;
  border:1px solid rgba(0,0,0,.08);
  background:#fff;
}
.km-userchip:hover{ box-shadow:0 8px 16px rgba(0,0,0,.06); }

.km-userchip__av{
  width:34px;
  height:34px;
  border-radius:999px;
  object-fit:cover;
  border:1px solid rgba(0,0,0,.10);
  background:#fff;
  display:block;
}
.km-userchip__av--fallback{
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:16px;
}
.km-userchip__name{ font-weight:900; font-size:13px; }

/* Pages légales */
.legal-page {
  max-width: 900px;
  margin: 40px auto;
  padding: 30px;
  background: #ffffff;
  border-radius: 10px;
  box-shadow: 0 10px 25px rgba(0,0,0,0.05);
}

.legal-page h1 {
  font-size: 32px;
  margin-bottom: 20px;
  color: #0f172a;
}

.legal-page h2 {
  margin-top: 25px;
  font-size: 20px;
  color: #1e293b;
}

.legal-page p {
  line-height: 1.7;
  color: #334155;
}

.legal-page .intro {
  font-size: 17px;
  background: #f1f5f9;
  padding: 15px;
  border-left: 4px solid #2563eb;
  border-radius: 6px;
}

.legal-page .update {
  margin-top: 30px;
  font-style: italic;
  color: #64748b;
}
/* Register/Login PRO (KodroMarket) */
.auth-wrap{
  min-height: calc(100vh - 160px);
  display:flex;
  align-items:center;
  justify-content:center;
  padding: 24px 12px;
}
.auth-card{
  width: 100%;
  max-width: 520px;
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 12px 30px rgba(0,0,0,.10);
  overflow:hidden;
  border: 1px solid rgba(0,0,0,.06);
}
.auth-head{
  padding: 18px 18px 0 18px;
  text-align:center;
}
.auth-head h1{ margin:0; font-size:22px; }
.auth-head p{ margin:6px 0 0; color:#667085; font-size:14px; }
.auth-body{ padding:18px; }

.form-row{ margin-bottom: 12px; }

.input-wrap{
  display:flex;
  align-items:center;
  gap:10px;
  border:1px solid rgba(0,0,0,.12);
  border-radius:10px;
  padding:10px 12px;
  background:#fafafa;
}
.input-wrap:focus-within{
  border-color: rgba(11, 104, 192, .45);
  box-shadow: 0 0 0 4px rgba(11, 104, 192, .10);
  background:#fff;
}
.input-wrap .input{
  width:100%;
  border:0 !important;
  outline:0;
  background:transparent;
}

.auth-help{
  font-size:12px;
  color:#667085;
  margin-top:6px;
}

.auth-check{
  font-size:13px;
  color:#475467;
  display:flex;
  gap:10px;
  align-items:flex-start;
  margin: 12px 0;
}
.auth-check input{ margin-top:3px; }

.btn-primary{
  width:100%;
  border:0;
  border-radius:10px;
  padding:12px 14px;
  font-weight:700;
  cursor:pointer;
  background:#0f766e;;
  color:#fff;
}
.btn-primary:hover{ filter: brightness(.95); }

.auth-foot{
  margin-top: 12px;
  text-align:center;
  font-size:13px;
  color:#475467;
}
.auth-foot a{ color:#0b68c0; text-decoration:none; }
.auth-foot a:hover{ text-decoration:underline; }
/* Green light button for Register only */
.btn-success{
  width:100%;
  border:0;
  border-radius:10px;
  padding:12px 14px;
  font-weight:800;
  cursor:pointer;
  background:#35c36b; /* vert clair */
  color:#fff;
}
.btn-success:hover{ filter: brightness(.95); }
/* ===== GLOBAL FULL-WIDTH FIX (override final) ===== */
html, body{
  margin: 0;
  padding: 0;
  width: 100%;
  max-width: 100%;
}

body{
  overflow-x: hidden; /* évite scroll horizontal global */
}

/* ton main container doit occuper l'écran */
main.container{
  width: 100%;
  max-width: 1600px !important;
  margin: 0 auto;
  padding-left: 25px;
  padding-right: 25px;
  box-sizing: border-box;
}

/* sécurise les gros blocs */
.km-layout3{
max-width: 1200%;
width: 100%;
margin: 0 auto;
padding:0 8px;
padding-right: 16px;
box-sizing: border-box;
display: grid;
grid-template-columns: 260px minmax(0,1fr)260px;
gap:12px;
align-items: start;

}
 .km-main, .km-side, .card, table{
  max-width: 100%;
}
img, svg, video{
  max-width: 100%;
  height: auto;
}
.auth-form{ max-width: 520px; }
.auth-devlink{ padding:12px; margin-top:10px; }
/* Affichage du lien reset complet (DEV) */
.auth-devlink a{
  display:block;
  white-space: normal;
  word-break: break-all;     /* coupe le token si besoin */
  overflow-wrap: anywhere;
}
.km-breadcrumbs{
  width: 100%;
  border-top: 1px solid rgba(255,255,255,.08);
  background: rgba(11, 19, 32, 0.88); /* même ambiance que topbar */
}

.km-bc-inline{
  display:flex;
  align-items:center;
  gap:6px;
  padding: 6px 0;          /* 0 car container gère les côtés */
  font-size: 13px;
  color: rgba(255,255,255,.70);
  overflow:hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.km-bc-inline a{
  color: rgba(255,255,255,.86);
  text-decoration:none;
  font-weight:700;
}

.km-bc-inline a:hover{ text-decoration: underline; }

.km-bc-current{
  color: rgba(255,255,255,.92);
  font-weight: 900;
}

.km-bc-sep{ opacity:.55; }
/* Empêche le logo d’être coupé quand il grossit */
.topbar,
.topbar .container,
.topbar__inner,
.brand{
  overflow: visible !important;
}
.km-breadcrumbs{
  border-top: 1px solid rgba(255,255,255,.08);
  background: rgba(11, 19, 32, 0.88);
}
.km-bc-inline{
  display:flex; flex-wrap:wrap; gap:8px; align-items:center;
  padding: 10px 0;
}
.km-bc-inline a{ color: rgba(255,255,255,.85); text-decoration:none; }
.km-bc-inline a:hover{ text-decoration:underline; }
.km-bc-sep{ color: rgba(255,255,255,.45); }
.km-bc-current{ color: rgba(255,255,255,.95); font-weight:800; }
/* ===== Global responsive images ===== */
img{
  max-width:100%;
  height:auto;
}

/* Empêche les images de “déborder” dans les cards */
.card img{
  display:block;
}
/* ===== Bloc image annonce (img OU div placeholder) ===== */
.ad__img{
  width:100%;
  aspect-ratio: 4 / 3;     /* garde une forme stable sur mobile */
  background:#f2f3f5;
  border-radius:14px;
  overflow:hidden;
}

/* si .ad__img est un <img> */
img.ad__img{
  height:auto;             /* l’aspect-ratio gère déjà la forme */
  object-fit:cover;
}

/* si c’est un <div class="ad__img"> placeholder */
div.ad__img{
  min-height: 160px;
}
/* ===== Grilles annonces responsive partout ===== */
.grid.ads{
  display:grid;
  gap:12px;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}

@media (max-width: 520px){
  .grid.ads{
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap:10px;
  }
}
@media (max-width: 900px){
  .km-layout3{
    grid-template-columns: 1fr !important;
  }
}
/* =========================
   MOBILE FIX PRO (global)
   ========================= */

/* ==============================
   LAYOUT GLOBAL CATEGORY / SEARCH
   ============================== */
.km-layout3{
  width:100%;
  max-width:none;
  margin:0;
  padding:0 0px;
  box-sizing:border-box;

  display:grid;
  grid-template-columns:200px minmax(0,1fr)260px;
  gap:18px;
  align-items:start;
}

/* filtre gauche */
.km-filters{
  grid-column:1;
  position:sticky;
  top:14px;
  padding:0px;
  
}

/* annonces centre */
.km-main{
 
  min-width:0;
 
}

/* pub droite */
.km-ads{
  grid-column:3;
  position:sticky;
  top:14px;
 
}
/* =====================================================
   ADMIN > HOMEPAGE ADS
   Scope unique : ne touche AUCUNE autre page
   ===================================================== */

/* zone principale (liste des pubs) */
.km-page--admin-homepage-ads .km-main{
  padding: 0px;
}

/* cartes de la liste */
.km-page--admin-homepage-ads .km-main .card{
  border: 1px solid rgba(0,0,0,.10);
  padding: 0px;
}

/* layout global : LISTE à gauche / FORM à droite */
.km-page--admin-homepage-ads .km-layout3{
  display: grid;
  grid-template-columns: minmax(0, 1fr) 420px;
  gap: 10px;                /* ✅ espace entre les deux blocs */
  align-items: start;
}

/* sidebar (formulaire) */
.km-page--admin-homepage-ads .km-side{
  position: sticky;
  top: 14px;
}
@media(max-width: 768px){
  
}.km-page--admin-homepage-ads .km-side{
  position: sticky;
  top: 14px;
}

/* =====================================================
   RESPONSIVE — mobile & tablette
   Les blocs deviennent SUPERPOSÉS (stack)
   ===================================================== */
@media (max-width: 900px){
  .km-page--admin-homepage-ads .km-layout3{
    grid-template-columns: 1fr;  /* empile */
  }

  .km-page--admin-homepage-ads .km-side{
    position: static;
  }
}

/* =====================================================
  CSS du Badge Simple/Vip
   ===================================================== */
.km-account-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin: 6px 0 14px;
}

.km-account-title{
  font-size:18px;
  font-weight:900;
}

.km-account-badge{
  display:inline-flex;
  align-items:center;
  padding:6px 12px;
  border-radius:999px;
  font-size:12px;
  font-weight:900;
  border:1px solid rgba(0,0,0,.12);
}

.km-account-badge.is-simple{
  background:#f3f4f6;
  color:#111827;
}

.km-account-badge.is-pro{
  background:#111827;
  color:#fff;
  border-color:rgba(0,0,0,.25);
}

.km-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 12px;
  border-radius:999px;
  font-size:12px;
  font-weight:900;
  letter-spacing:.35px;
  line-height:1;
  border:1px solid rgba(255,255,255,.14);
  position:relative;
  overflow:hidden;
  transform: translateZ(0);
  user-select:none;
}

.km-badge--simple{
  color: rgba(255,255,255,.92);
  background: rgba(255,255,255,.10);
  border-color: rgba(255,255,255,.18);
}

.km-badge--simple::after{
  content:"";
  position:absolute;
  inset:-40%;
  background: radial-gradient(circle at 30% 30%, rgba(255,255,255,.18), transparent 60%);
  opacity:.55;
  animation: kmSimpleBreathe 3.2s ease-in-out infinite;
}

@keyframes kmSimpleBreathe{
  0%,100%{ transform: translate(-6%, -6%) scale(1); opacity:.45; }
  50%{ transform: translate(6%, 6%) scale(1.05); opacity:.65; }
}

.km-badge--pro{
  color: rgba(255,255,255,.95);
  border-color: rgba(245,158,11,.45);
  background: linear-gradient(135deg, rgba(245,158,11,.22), rgba(17,24,39,.55));
  box-shadow: 0 10px 22px rgba(0,0,0,.20);
}

.km-badge--pro::before{
  content:"";
  position:absolute;
  top:-60%;
  left:-60%;
  width:55%;
  height:220%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.55), transparent);
  transform: rotate(25deg);
  animation: kmShine 2.6s ease-in-out infinite;
  opacity:.75;
}

@keyframes kmShine{
  0%{ transform: translateX(-140%) rotate(25deg); opacity:.0; }
  15%{ opacity:.75; }
  100%{ transform: translateX(360%) rotate(25deg); opacity:0; }
}

@media (prefers-reduced-motion: reduce){
  .km-badge--simple::after,
  .km-badge--pro::before{ animation: none; }
}
/* =========================================================
   MIGRATED FROM INLINE <style> BLOCKS (for CSP strict later)
   ========================================================= */

/* ===== FROM: public/_partials/footer.php ===== */
/* ========= FOOTER PREMIUM ========= */
.km-footer{
  margin-top:22px;
  background: radial-gradient(1200px 420px at 20% -20%, rgba(255,255,255,.06), transparent 60%),
              radial-gradient(900px 360px at 80% -10%, rgba(255,255,255,.05), transparent 60%),
              #0b1220;
  color: rgba(255,255,255,.86);
  border-top: 1px solid rgba(255,255,255,.08);
}
.km-footer .container{ padding: 26px 14px; }

.km-footer__top{
  display:grid;
  grid-template-columns: 1.1fr 1.9fr;
  gap: 22px;
  align-items:start;
}
@media(max-width:980px){
  .km-footer__top{ grid-template-columns:1fr; }
}

.km-footer__logo{
  font-weight: 950;
  font-size: 18px;
  letter-spacing:.2px;
}
.km-footer__desc{
  margin-top:10px;
  line-height:1.6;
  color: rgba(255,255,255,.70);
}

.km-footer__meta{
  margin-top:12px;
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  color: rgba(255,255,255,.70);
  font-size: 13px;
}
.km-pill{
  display:inline-flex;
  align-items:center;
  padding:6px 10px;
  border-radius:999px;
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.10);
}
.km-dot{ opacity:.55; }

.km-footer__social{
  display:flex;
  gap:10px;
  margin-top:14px;
  flex-wrap:wrap;
}
.km-social{
  width:38px;
  height:38px;
  border-radius:999px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-decoration:none;

  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  color: rgba(255,255,255,.82);

  transition: transform .12s ease, background .12s ease, border-color .12s ease;
}
.km-social svg{ fill: currentColor; }
.km-social:hover{
  transform: translateY(-1px);
  background: rgba(255,255,255,.10);
  border-color: rgba(255,255,255,.18);
}

.km-footer__cols{
  display:grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}
@media(max-width:980px){
  .km-footer__cols{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media(max-width:520px){
  .km-footer__cols{ grid-template-columns: 1fr; }
}

.km-footer__title{
  font-weight: 900;
  margin-bottom: 10px;
  color: rgba(255,255,255,.92);
  letter-spacing:.2px;
}
.km-footer__link{
  display:flex;
  align-items:center;
  gap:8px;
  padding: 7px 0;
  color: rgba(255,255,255,.72);
  text-decoration:none;
  transition: color .12s ease, transform .12s ease;
}
.km-footer__link::before{
  content:"";
  width:6px;
  height:6px;
  border-radius:999px;
  background: rgba(255,255,255,.22);
  flex:0 0 auto;
  opacity:.8;
}
.km-footer__link:hover{
  color: rgba(255,255,255,.92);
  transform: translateX(2px);
}
.km-footer__link:hover::before{
  background: rgba(255,255,255,.42);
}

.km-footer__bottom{
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,.10);
  display:flex;
  gap: 10px;
  justify-content: space-between;
  flex-wrap:wrap;
}
.km-footer__copy{
  color: rgba(255,255,255,.66);
  font-size: 13px;
}
.km-footer__bottomlinks a{
  color: rgba(255,255,255,.72);
  text-decoration:none;
  font-size: 13px;
}
.km-footer__bottomlinks a:hover{ color: rgba(255,255,255,.92); }
.km-sep{ color: rgba(255,255,255,.35); padding: 0 6px; }

.km-footer__note{
  margin-top: 12px;
  font-size: 13px;
  color: rgba(255,255,255,.60);
}

/* Accessibilité focus */
.km-footer a:focus{
  outline: 2px solid rgba(255,255,255,.35);
  outline-offset: 3px;
  border-radius: 10px;
}

/* ===== FROM: public/_partials/header.php ===== */
.topbar{
  position:sticky; top:0; z-index:60;
  backdrop-filter: blur(10px);
  background: rgba(11, 19, 32, 0.88);
  border-bottom: 1px solid rgba(255,255,255,.08);
}
.topbar .brand span{ color: rgba(255,255,255,.92); font-weight:900; letter-spacing:.2px; }
.topbar .nav .btn{ border-color: rgba(255,255,255,.12); color: rgba(255,255,255,.82); }
.topbar .nav .btn:hover{ color: rgba(255,255,255,.95); border-color: rgba(255,255,255,.18); }
.search__q, .search input[list], .search input[type="text"]{
  background: rgba(255, 255, 255, 0.25) !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  color: rgba(255,255,255,.92) !important;
}
.search__q::placeholder, .search input::placeholder{ color: rgba(255,255,255,.55) !important; }
.km-logo{
  width:44px;height:44px;border-radius:12px;margin-right:8px;
  transition: transform 220ms cubic-bezier(.2,.9,.25,1.25), filter 200ms ease;
  transform-origin:center; cursor:pointer; user-select:none; -webkit-tap-highlight-color: transparent;
}
.km-logo:hover{ transform: scale(1.25); filter: drop-shadow(0 10px 18px rgba(0,0,0,.25)); }
.km-logo:active{ transform: scale(1.10); }

/* ===== FROM: public/account.php ===== */
.km-rec-grid{
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:12px;
  margin-top:10px;
}
@media (max-width:1100px){ .km-rec-grid{ grid-template-columns:repeat(3, minmax(0, 1fr)); } }
@media (max-width:850px){ .km-rec-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)); } }
@media (max-width:520px){ .km-rec-grid{ grid-template-columns:1fr; } }

.km-card{
  display:block;
  text-decoration:none;
  border-radius:14px;
  overflow:hidden;
  border:1px solid rgba(0,0,0,.08);
  background:#fff;
}
.km-card__img{
  width:100%;
  height:160px;
  object-fit:cover;
  display:block;
  background:#f3f4f6;
}
.km-card__body{ padding:10px; }
.km-card__title{
  font-weight:800;
  line-height:1.2;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.km-card__price{ margin-top:8px; font-weight:900; }

/* ===== FROM: public/ad.php ===== */
.ad-layout{display:grid;grid-template-columns:1.6fr .9fr;gap:16px}
@media (max-width:980px){.ad-layout{grid-template-columns:1fr}.ad-side{position:static}}
.ad-side{position:sticky;top:14px;align-self:start}
.ad-title{margin:10px 0 0 0}
.ad-price{font-size:26px;font-weight:900;margin-top:8px}
.ad-desc{line-height:1.6}

.km-carousel{position:relative;display:flex;align-items:center;gap:10px}
.km-stage{position:relative;flex:1;border-radius:14px;overflow:hidden;background:#111;min-height:320px}
.km-stage img{width:100%;height:440px;object-fit:cover;display:block;cursor:zoom-in}
@media (max-width:980px){.km-stage img{height:320px}}
.km-count{position:absolute;right:10px;bottom:10px;font-size:12px;padding:4px 8px;border-radius:999px;background:rgba(0,0,0,.65);color:#fff;font-weight:800}
.km-nav{width:44px;height:44px;border-radius:999px;border:none;cursor:pointer;font-size:28px;font-weight:900;background:rgba(17,24,39,.85);color:#fff;transition:transform .12s ease}
.km-nav:hover{transform:scale(1.04)}
.km-nav:active{transform:scale(.98)}
.km-thumbs{display:flex;gap:8px;margin-top:10px;overflow:auto;padding-bottom:4px}
.km-thumb{border:none;background:transparent;padding:0;cursor:pointer;border-radius:10px;flex:0 0 auto}
.km-thumb img{width:78px;height:58px;object-fit:cover;border-radius:10px;border:2px solid rgba(0,0,0,.12);display:block}
.km-thumb.active img{border-color:rgba(0,0,0,.65)}

.km-spec{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid rgba(0,0,0,.06)}
.km-spec:last-child{border-bottom:none}
.km-spec dt{color:rgba(0,0,0,.65)}
.km-spec dd{margin:0;font-weight:800;text-align:right}

.km-actions{display:flex;flex-direction:column;gap:8px}
.km-phone{font-weight:900;font-size:18px;letter-spacing:.4px;padding:10px 12px;border-radius:12px;border:1px solid rgba(0,0,0,.10);background:#fff}

/* Similar */
.km-sim-grid{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:12px}
@media (max-width:980px){ .km-sim-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)); } }

@media (max-width:560px){.km-sim-grid{ grid-template-columns:1fr; } }
.km-sim-card{display:block;text-decoration:none;border-radius:14px;overflow:hidden;border:1px solid rgba(0,0,0,.08);background:#fff}
.km-sim-card img{width:100%;height:150px;object-fit:cover;display:block;background:#f3f4f6}
.km-sim-body{padding:10px}
.km-sim-title{font-weight:800;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.km-sim-price{margin-top:8px;font-weight:900}

/* Modal */
.km-modal{position:fixed;inset:0;z-index:9999;display:none}
.km-modal.active{display:block}
.km-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.78)}
.km-modal-content{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:18px}
.km-modal-content img{max-width:92vw;max-height:92vh;border-radius:14px;background:#fff;box-shadow:0 20px 60px rgba(0,0,0,.55)}
.km-modal-close{position:absolute;top:16px;right:16px;width:44px;height:44px;border-radius:999px;border:none;cursor:pointer;font-size:24px;font-weight:800;background:rgba(0,0,0,.7);color:#fff}
.km-report{width:min(520px, 92vw);background:#fff;border-radius:16px;padding:14px;box-shadow:0 20px 60px rgba(0,0,0,.45)}

/* ===== FROM: public/admin/ads.php ===== */
.admin-ad-details{
  padding: 10px 12px;
  background: rgba(0,0,0,.02);
  border-radius: 12px;
  margin: 8px 0 0;
}
.admin-ad-desc{
  white-space: pre-wrap;
  margin: 0 0 10px;
}
.admin-gallery{
  display: grid;
  grid-template-columns: repeat(auto-fill, 92px);
  gap: 8px;
}
.admin-gallery a{ display:block; }
.admin-gallery img{
  width: 92px;
  height: 92px;
  object-fit: cover;
  border-radius: 10px;
  border: 1px solid rgba(0,0,0,.08);
  display:block;
  background:#fff;
}
.admin-muted{
  color: rgba(0,0,0,.6);
  font-size: 13px;
}
.admin-img-btn{
  border:0;
  padding:0;
  background:transparent;
  cursor:pointer;
}

/* ===== FROM: public/admin/categories.php ===== */
.km-page--admin-categories .badge{display:inline-block;padding:10px 20px;border-radius:219px;font-weight:200;font-size:12px}
.km-page--admin-categories .badge--ok{background:rgba(16,185,129,.15)}
.km-page--admin-categories .badge--muted{background:rgba(0,0,0,.08)}

/* ===== FROM: public/admin/locations.php ===== */
.km-page-admin-locations .badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:900}
.km-page-admin-locations .badge--ok{background:rgba(34,197,94,.12);color:#15803d;border:1px solid rgba(34,197,94,.25)}
.km-page-admin-locations .badge--muted{background:rgba(0,0,0,.06);color:rgba(0,0,0,.65);border:1px solid rgba(0,0,0,.10)}

/* ===== FROM: public/category.php ===== */
/* Layout 3 colonnes */
.km-layout3{display:grid;grid-template-columns:minmax(240px,280px)minmax(0,1fr)minmax(240px,280px);gap:2px;align-items:start}
.km-side{position:sticky;top:14px;align-self:start}
.km-side__title{font-weight:900;font-size:16px;margin-bottom:10px}
.km-adbox{display:block;border:1px solid rgba(0,0,0,.08);border-radius:14px;padding:12px;text-decoration:none;color:inherit;background:#fff}
.km-banner{margin-top:10px;height:180px;border-radius:12px;background:rgba(0,0,0,.06)}
.km-pagination{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}

/* Sous-catégories horizontales */
.km-subbar{display:flex;gap:10px;overflow:auto;padding:10px 2px;margin:10px 0 14px;border-bottom:1px solid rgba(0,0,0,.06)}
.km-subitem{flex:0 0 auto;padding:10px 14px;border:1px solid rgba(0,0,0,.10);border-radius:14px;background:#fff;text-decoration:none;color:inherit;font-weight:900;white-space:nowrap}
.km-subitem:hover{transform:translateY(-1px)}

/* Grille annonces */
.grid.ads{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:980px){.grid.ads{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.grid.ads{grid-template-columns:1fr}}
.ad__img{width:100%;height:160px;object-fit:cover;display:block;background:#f3f4f6}

/* Responsive: cache pub à droite sur petit écran */
@media (max-width: 100px){
  .km-layout3{grid-template-columns:minmax(240px,280px)minmax(0,1fr)}
}
@media (max-width: 800px){
  .km-layout3{grid-template-columns:1fr}
  .km-side{position:static}
}

/* ===== FROM: public/edit.php ===== */
.km-preview-grid{display:grid;grid-template-columns:repeat(auto-fill,92px);gap:10px;margin-top:10px}
.km-preview-item{position:relative;border-radius:10px;cursor:grab}
.km-preview-item img{width:92px;height:92px;object-fit:cover;border-radius:10px;display:block;border:1px solid rgba(0,0,0,.08);background:#fff}
.km-preview-item button{position:absolute;top:-7px;right:-7px;width:24px;height:24px;border-radius:999px;border:none;cursor:pointer;background:#e11d48;color:#fff;font-weight:700;line-height:24px}
.km-preview-item:active{cursor:grabbing}
.km-preview-item.dragging{opacity:.55;transform:scale(.98)}
.km-preview-item.over{outline:2px dashed rgba(17,24,39,.35);outline-offset:4px}
.km-badge{position:absolute;left:6px;bottom:6px;font-size:11px;padding:3px 6px;
  border-radius:999px;background:rgba(0,0,0,.72);color:#fff;font-weight:700}

/* ===== FROM: public/index.php ===== */
/* ===== Accueil: layout 2 colonnes (main + pubs) ===== */
.km-page--home .km-home-layout{
  display:grid;
  grid-template-columns: 1fr 320px;
  gap:16px;
  align-items:start;
}
.km-page--home .km-home-ads{
  position: sticky;
  top: 90px;
  align-self: start;
}
@media (max-width: 1100px){
  .km-page--home .km-home-layout{ grid-template-columns: 1fr; }
  .km-page--home .km-home-ads{ position:static; }
}

/* CATEGORIES — ultra minimal + dense */
.km-page--home .km-cats{
  display:grid;
  gap:8px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 10px 0 14px;
}
@media (min-width: 720px){
  .km-page--home .km-cats{ grid-template-columns: repeat(5, minmax(0, 1fr)); }
}
@media (min-width: 1024px){
  .km-page--home .km-cats{ grid-template-columns: repeat(7, minmax(0, 1fr)); }
}

.km-page--home .km-catcard{
  display:flex;
  flex-direction:column;
  text-decoration:none;
  color:inherit;
  border:none;
  background:#fff;
  border-radius:14px;
  padding:8px;
  min-height:112px;
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.km-page--home .km-catcard:hover{
  transform: translateY(-1px);
  border-color: rgba(0,0,0,.16);
  box-shadow: 0 8px 16px rgba(0,0,0,.08);
}

.km-page--home .km-catcard__top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:6px;
}
.km-page--home .km-catcard__title{
  font-weight:900;
  font-size:12.5px;
  line-height:1.1;
  background:#f5f6f8;
  padding:4px 6px;
  border-radius:8px;
  display:inline-block;
}
.km-page--home .km-catcard:hover .km-catcard__iconWrap,
.km-page--home .km-catcard:hover .km-catcard__title{
  background:#eef0f3;
}

.km-page--home .km-catcard__arrow{
  font-weight:900;
  font-size:14px;
  opacity:.55;
  transition: transform .12s ease, opacity .12s ease;
}
.km-page--home .km-catcard:hover .km-catcard__arrow{
  opacity:.9;
  transform: translateX(2px);
}

.km-page--home .km-catcard__iconWrap{
  flex:1;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:6px;
  overflow:hidden;
  background:#f5f6f8;
  border-radius:10px;
}
.km-page--home .km-catcard:hover .km-catcard__iconWrap{
  background:#eef0f3;
}

.km-page--home .km-catcard__icon{
  max-width:108px;
  max-height:108px;
  width:100%;
  height:100%;
  object-fit:contain;
  filter: drop-shadow(0 1px 1px rgba(0,0,0,.18))
          contrast(1.1)
          saturate(1.05);
  transition: transform .16s ease, filter .16s ease;
}
.km-page--home .km-catcard:hover .km-catcard__icon{
  transform: scale(1.06);
  filter: drop-shadow(0 2px 3px rgba(0,0,0,.22))
          contrast(1.15)
          saturate(1.12);
}

@media (max-width: 480px){
  .km-page--home .km-catcard{ min-height:108px; padding:7px; }
  .km-page--home .km-catcard__title{ font-size:12px; }
  .km-page--home .km-catcard__icon{ max-width:96px; max-height:96px; }
}

/* (Ton fichier avait une 2e occurrence du layout home, je la laisse identique) */
.km-page--home .km-home-layout{
  display:grid;
  grid-template-columns: 1fr 320px;
  gap:16px;
  align-items:start;
  overflow: visible;
}
.km-page--home .km-home-ads{
  position: sticky;
  top: 90px;
  align-self: start;
  max-height: none;
  overflow: visible;
}
.km-page--home .km-side__title{
  font-weight:900;
  font-size:16px;
  margin-bottom:10px;
}
@media (max-width: 1100px){
  .km-page--home .km-home-layout{ grid-template-columns: 1fr; }
  .km-page--home .km-home-ads{ position:static; max-height:none; overflow:visible; }
}

/* ===== PUB VIDÉO VERTICALE (HOME) ===== */
.km-page--home .km-video-ad{
  position:relative;
  border-radius:14px;
  overflow:hidden;
  background:#000;
  margin-bottom:12px;
}
.km-page--home .km-video-ad video{
  width:100%;
  height:520px;
  object-fit:cover;
  display:block;
  background:#000;
}
.km-page--home .km-video-overlay{
  position:absolute;
  left:0; right:0; bottom:0;
  padding:12px;
  background:linear-gradient(to top, rgba(0,0,0,.75), transparent);
  color:#fff;
}
.km-page--home .km-video-overlay strong{
  display:block;
  font-weight:900;
  font-size:15px;
}
.km-page--home .km-video-overlay span{
  font-size:13px;
  opacity:.9;
}
@media (max-width: 1100px){
  .km-page--home .km-video-ad video{ height:360px; }
}

/* ===== FROM: public/post.php ===== */
.km-preview-grid{display:grid;grid-template-columns:repeat(auto-fill,92px);gap:10px;margin-top:10px}
.km-preview-item{position:relative;border-radius:10px;cursor:grab}
.km-preview-item img{width:92px;height:92px;object-fit:cover;border-radius:10px;display:block;border:1px solid rgba(0,0,0,.08);background:#fff}
.km-preview-item button{position:absolute;top:-7px;right:-7px;width:24px;height:24px;border-radius:999px;border:none;cursor:pointer;background:#e11d48;color:#fff;font-weight:700;line-height:24px}
.km-preview-item:active{cursor:grabbing}
.km-preview-item.dragging{opacity:.55;transform:scale(.98)}
.km-preview-item.over{outline:2px dashed rgba(17,24,39,.35);outline-offset:4px}
.km-badge{position:absolute;left:980px;bottom:100px;font-size:11px;padding:3px 6px;border-radius:999px;background:rgba(0,0,0,.72);color:#fff;font-weight:700}

/* ===== FROM: public/search.php ===== */
.km-layout3{display:grid;grid-template-columns:320px 1fr 320px;gap:16px;align-items:start}
.km-side{position:sticky;top:14px}
.km-side__title{font-weight:900;font-size:16px;margin-bottom:10px}
.km-adbox{display:block;border:1px solid rgba(0,0,0,.08);border-radius:14px;padding:12px;text-decoration:none;color:inherit;background:#fff}
.km-banner{margin-top:10px;height:180px;border-radius:12px;background:rgba(0,0,0,.06)}
@media (max-width: 1100px){
  .km-layout3{grid-template-columns:280px 1fr}
  .km-ads{display:none}
}
@media (max-width: 820px){
  .km-layout3{grid-template-columns:1fr}
  .km-side{position:static}
}
/* --- CSP strict utilities (Account.php) --- */
.km-flex{ display:flex; }
.km-flex-wrap{ flex-wrap:wrap; }
.km-gap-8{ gap:8px; }

.km-mb-10{ margin-bottom:10px; }
.km-mt-6{ margin-top:6px; }
.km-mt-18{ margin-top:18px; }

/* --- CSP strict utilities (index.php) --- */
.km-fw-800{ font-weight:800; }
.km-my-6{ margin-top:6px; margin-bottom:6px; }

/* --- CSP strict utilities (category.php) --- */
.km-mt-4{ margin-top:4px; }
.km-mt-10{ margin-top:10px; }
.km-mt-12{ margin-top:12px; }
.km-my-6{ margin-top:6px; margin-bottom:6px; }

.km-flex{ display:flex; }
.km-flex-wrap{ flex-wrap:wrap; }
.km-gap-8{ gap:8px; }

.km-fw-800{ font-weight:800; }
.km-fw-900{ font-weight:900; }

.km-h-10{ height:10px; }
/* --- CSP strict utilities (search.php) --- */
.km-mt-4{ margin-top:4px; }
.km-mt-10{ margin-top:10px; }
.km-mt-12{ margin-top:12px; }
.km-my-6{ margin-top:6px; margin-bottom:6px; }

.km-flex{ display:flex; }
.km-flex-wrap{ flex-wrap:wrap; }
.km-gap-8{ gap:8px; }

.km-fw-800{ font-weight:800; }
.km-fw-900{ font-weight:900; }

.km-h-10{ height:10px; }
/* --- CSP strict utilities (ad.php) --- */
.km-mt-0{ margin-top:0 !important; }
.km-mt-8{ margin-top:8px; }
.km-mt-10{ margin-top:10px; }
.km-mt-12{ margin-top:12px; }
.km-mt-14{ margin-top:14px; }

.km-h-12{ height:12px; }

.km-flex{ display:flex; }
.km-flex-wrap{ flex-wrap:wrap; }
.km-gap-8{ gap:8px; }

.km-hidden{ display:none !important; }
/* --- CSP strict utilities (post.php) --- */
.km-p-14{ padding:14px; }
.km-mt-14{ margin-top:14px; }
.km-mt-6{ margin-top:6px; }
.km-hidden{ display:none !important; }
/* --- CSP strict utilities (edit.php) --- */
.km-hidden{ display:none !important; }
.km-mt-6{ margin-top:6px; }
.km-p-14{ padding:14px; }
/* --- CSP strict utilities (account.php) --- */
.km-self-center{ align-self:center; }
/* --- CSP strict utilities (admin index) --- */
.km-stat-number{
  font-size:28px;
  font-weight:900;
}

.km-my-14{
  margin-top:14px;
  margin-bottom:14px;
}
.km-grid-auto{
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap:12px;
}
/* --- CSP strict utilities (admin/categories.php) --- */
.km-gap-14{ gap:14px; }
.km-items-start{ align-items:flex-start; }

.km-flex{ display:flex; }
.km-items-end{ align-items:flex-end; }  /* "end" => flex-end */
.km-items-center{ align-items:center; }

.km-flex-360{ flex:0 0 360px; }
.km-flex-1{ flex:1 1 auto; }

.km-nowrap{ white-space:nowrap; }

.km-inline{ display:inline; }

.km-mt-10{ margin-top:10px; }
.km-mt-12{ margin-top:12px; }
.km-m-0{ margin:0 !important; }
/* --- CSP strict utilities (admin/locations.php) --- */
.km-gap-14{ gap:14px; }
.km-items-start{ align-items:flex-start; }

.km-flex{ display:flex; }
.km-flex-wrap{ flex-wrap:wrap; }
.km-gap-8{ gap:8px; }
.km-gap-10{ gap:10px; }
.km-gap-12{ gap:12px; }

.km-justify-between{ justify-content:space-between; }
.km-items-center{ align-items:center; }

.km-flex-360{ flex:0 0 360px; }
.km-flex-1{ flex:1 1 auto; }

.km-mt-0{ margin-top:0 !important; }
.km-mt-10{ margin-top:10px; }
.km-mt-12{ margin-top:12px; }

.km-my-16{
  margin-top:16px;
  margin-bottom:16px;
}

.km-opacity-15{ opacity:.15; }

.km-w-160{ width:160px; }

.km-text-right{ text-align:right; }

.km-inline{ display:inline; }
.km-mb-10{ margin-bottom:10px; }
.km-flex{ display:flex; }
.km-gap-8{ gap:8px; }
.km-mt-12{ margin-top:12px; }
.km-flex-wrap{ flex-wrap:wrap; }
/* --- homepage_ads.php utilities --- */
.km-grid-1col-gap-10{ grid-template-columns:1fr; gap:10px; }
.km-border-soft{ border:1px solid rgba(0,0,0,.08); }
.km-sticky-14{ position:sticky; top:14px; }

.km-m-0{ margin:0 !important; }
.km-fs-12{ font-size:12px; }
/* --- admin/reports.php utilities --- */
.km-mb-12{ margin-bottom:12px; }

.km-p-12{ padding:12px; }

.km-gap-10{ gap:10px; }
.km-gap-6{ gap:6px; }

.km-items-end{ align-items:flex-end; }

.km-minw-220{ min-width:220px; }

.km-maxw-320{ max-width:320px; }

.km-prewrap{ white-space:pre-wrap; }
.km-mt-6{ margin-top:6px; }
.km-fs-12{ font-size:12px; }
.km-relative{ position:relative; }
/* --- admin/ads.php utilities --- */
.km-my-8{ margin-top:8px; margin-bottom:8px; }
.km-mb-6{ margin-bottom:6px; }
.km-flex{ display:flex; }
.km-gap-6{ gap:6px; }
.km-flex-wrap{ flex-wrap:wrap; }
/* --- admin/boosts.php utilities --- */

.km-fs-12{ font-size:12px; }

.km-flex{ display:flex; }
.km-flex-wrap{ flex-wrap:wrap; }
.km-gap-6{ gap:6px; }
/* --- admin/users.php utilities --- */
.km-inline{
  display:inline;
}
/* --- admin/vip.php utilities --- */
.km-inline{ display:inline; }
/* --- admin/logins.php utilities --- */
.km-overflow-auto{ overflow:auto; }

.km-ellipsis-420{
  max-width:420px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
/*                    */
.km-mt-4{margin-top:4px;}
.km-mt-6{margin-top:6px;}
.km-mt-8{margin-top:8px;}
.km-mt-10{margin-top:10px;}

.km-h-10{height:10px;}
.km-h-12{height:12px;}

.km-p-14{padding:14px;}

.km-overflow-hidden{overflow:hidden;}
.km-fw-800{font-weight:800;}
.km-block-link{display:block;color:inherit;text-decoration:none;}
.km-fw-800{font-weight:800;}
/* sitemap.php */
.km-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
/*header */
.km-bg-none{background-image:none;}
.km-block-link{
  display:block;
  color:inherit;
  text-decoration:none;
}
.km-mt-10{margin-top:10px;}
.km-mt-12{margin-top:12px;}
.km-mt-16{margin-top:16px;}
.km-mb-6{margin-bottom:6px;}
.km-mb-12{margin-bottom:12px;}

.km-fw-800{font-weight:800;}

.km-overflow-hidden{overflow:hidden;}
.km-block-link{display:block;color:inherit;text-decoration:none;}

.km-fs-12{font-size:12px;}
.km-prewrap{white-space:pre-wrap;}

.km-flex{display:flex;}
.km-gap-6{gap:6px;}
.km-flex-wrap{flex-wrap:wrap;}

.km-msg-row{padding:10px 0;border-bottom:1px solid var(--border);}
.km-maxw-320{max-width:320px;}
.km-hidden {
  display: none !important;
}
.km-hidden{display:none!important;}
/* */
.km-hidden{display:none!important;}
.km-grid-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.km-ads-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.km-shop-logo{width:84px;height:84px;object-fit:cover;border-radius:16px;border:1px solid var(--border)}
.km-shop-mini-logo{width:48px;height:48px;object-fit:cover;border-radius:12px;border:1px solid var(--border)}
.km-shop-banner-wrap{margin:-14px -14px 14px -14px;overflow:hidden;border-radius:18px 18px 0 0}
.km-shop-banner{display:block;width:100%;height:220px;object-fit:cover}
.km-shop-head{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.km-shop-inline{display:flex;gap:12px;align-items:center}
.km-inline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.km-input-auto{width:auto;min-width:160px}
@media (max-width:768px){
  .km-shop-banner{height:140px}
}


.km-shop-line{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  margin-top:6px;
}

.km-shop-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:4px 10px;
  border-radius:999px;
  border:1px solid var(--border);
  background:#eef6ff;
  color:#0f3d91;
  font-size:12px;
  font-weight:800;
  line-height:1;
}

.km-shop-badge::before{
  content:"✓";
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:16px;
  height:16px;
  border-radius:50%;
  background:#0f3d91;
  color:#fff;
  font-size:11px;
  font-weight:900;
}

.km-shop-name{
  font-size:13px;
  font-weight:700;
  color:var(--text);
}
.km-shop-card-logo{
  width:24px;
  height:24px;
  border-radius:15%;
  object-fit:cover;
  border:1px solid var(--border);
  background:#fff;
  flex:0 0 28px;
}
/* BADGES PLANS */

.km-badge{
  display:inline-flex;
  align-items:center;
   margin-right: auto;
  padding:5px 12px;
  border-radius:999px;
  font-size:11px;
  font-weight:800;
  letter-spacing:.4px;
  text-transform:uppercase;
}
/* Badge SIMPLE */
.km-badge--simple{
  background:#eef2ff;  color:#3730a3;  border:1px solid #c7d2fe;}
/* Badge PRO */
.km-badge--pro{
  background:#e0f2fe;  color:#0369a1;  border:1px solid #7dd3fc;}
/* Badge PREMIUM */
.km-badge--premium{
  background:#fff7ed;  color:#c2410c;  border:1px solid #fdba74;}
  /* Badge HEADER */
  .km-account-badge.is-premium{  background:#fff7ed;  color:#c2410c;  border:1px solid #fdba74;}
  /* Badge BOOST */
.km-adcard__media{
  position:relative;
}
 /* Badge AD.PHP */
.km-boost-badge{
  position:absolute;
  top:1px;
  left:10px;
  z-index:2;
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:4px 1px;
  border-radius:999px;
  font-size:12px;
  font-weight:800;
  line-height:1;
  background:#111827;
  color:#fff;
  box-shadow:0 6px 18px rgba(0,0,0,.18);
}

.km-ad-boost-wrap{
  margin:10px 0 8px;
}

.km-boost-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 10px;
  border-radius:999px;
  font-size:12px;
  font-weight:800;
  line-height:1;
  background:#111827;
  color:#fff;
  box-shadow:0 6px 18px rgba(0,0,0,.18);
}

.km-boost-badge--detail{
  font-size:13px;
  padding:8px 12px;
}
/*  */
.km-lang-switch{
  display:flex;
  align-items:center;
  gap:8px;
  margin-right:8px;
}

.km-lang-switch a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:34px;
  height:34px;
  padding:0 10px;
  border:1px solid var(--border,#ddd);
  border-radius:999px;
  text-decoration:none;
  font-weight:700;
}

.km-lang-switch a[aria-current="true"]{
  background:var(--text,#111);
  color:#fff;
  border-color:var(--text,#111);
}
.km-lang-dropdown{
  position:relative;
}

.km-lang-btn{
  height:34px;
  padding:0 12px;
  border:1px solid var(--border,#ddd);
  border-radius:999px;
  background:#fff;
  cursor:pointer;
  font-weight:700;
}

.km-lang-menu{
  position:absolute;
  top:110%;
  right:5;
  background:#fff;
  border:1px solid var(--border,#ddd);
  border-radius:10px;
  box-shadow:0 10px 25px rgba(0,0,0,.08);
  display:none;
  min-width:90px;
  z-index:1000;
}
.km-lang-menu{
  background:#fff;
  color:#111; /* 🔥 force la couleur du texte */
}

.km-lang-menu a{
  color:#111 !important; /* 🔥 empêche héritage blanc mobile */
}
.km-lang-menu a{
  display:block;
  padding:10px 12px;
  text-decoration:none;
  color:inherit;
}

.km-lang-menu a:hover{
  background:#f5f5f5;
}

.km-lang-dropdown.open .km-lang-menu{
  display:block;
}

.table-responsive{
  width:100%;
  overflow-x:auto;
}
/*Admin/Users*/
.admin-users-table td,
.admin-users-table th{
  vertical-align:top;
}

.admin-user-email-current{
  margin-bottom:8px;
}

.admin-user-email-form,
.admin-user-password-form{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  align-items:center;
}

.admin-user-actions{
  display:flex;
  flex-direction:column;
  gap:10px;
  align-items:flex-start;
}

.admin-user-email-input{
  min-width:220px;
}

.admin-user-password-input{
  min-width:180px;
}

@media (max-width: 900px){
  .admin-user-email-input,
  .admin-user-password-input{
    min-width:160px;
    width:100%;
  }

  .admin-user-email-form,
  .admin-user-password-form{
    align-items:stretch;
  }

  .admin-user-email-form .btn,
  .admin-user-password-form .btn{
    width:100%;
  }
}
/*admin/ total users*/
.admin-stats{
  display:flex;
  gap:16px;
  margin:16px 0 20px;
}

.admin-stat-card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:16px 20px;
  box-shadow:var(--shadow);
  min-width:220px;
}

.admin-stat-number{
  font-size:24px;
  font-weight:800;
  line-height:1.1;
}

.admin-stat-label{
  margin-top:4px;
  color:var(--muted);
  font-size:13px;
}
.admin-stats{
  display:flex;
  gap:16px;
  margin:16px 0 20px;
}

.admin-stat-card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:16px 20px;
  box-shadow:var(--shadow);
  min-width:160px;
}

.admin-stat-number{
  font-size:24px;
  font-weight:800;
}

.admin-stat-label{
  font-size:13px;
  color:var(--muted);
}
/* -------- Sticky OFF sur mobile -------- */
@media (max-width: 814px){
  .km-sticky-14,
  .km-ads-right,
  .km-home-ads,
  .km-home-aside,
  .km-filters,
  .km-ads,
  .ad-side{
    position:static !important;
    top:auto !important;
  }
}
/* ===== FIX FINAL ACCOUNT (PROBLEME LARGEUR) ===== */
@media (max-width:1100px){
  .km-ads-area{
    display:block !important;
    width:100% !important;
  }

  .km-ads-area > *{
    width:100% !important;
    max-width:100% !important;
  }
}
body{
  overflow-x:hidden !important;
}
/* ===== cacher badge SIMPLE sur mobile ===== */
@media (max-width:768px){
  .km-badge--simple{
    display:none !important;
  }
}
.km-payment-select{
  display:flex;
  align-items:center;
  gap:10px;
}

.km-payment-select img{
  width:24px;
  height:24px;
  object-fit:contain;
  flex:0 0 24px;
}

.km-payment-select select{
  flex:1;
  min-width:0;
}
.km-payment-select{
  display:flex;
  align-items:center;
  gap:10px;
}

.km-payment-select img{
  width:30px;
  height:30px;
  object-fit:contain;
}
