/* ── PRODUCT LAYOUT ── */
.prod-layout { display: flex; gap: 14px; align-items: flex-start; margin-bottom: 14px; }
.prod-img {
  width: 88px;
  height: 88px;
  object-fit: contain;
  border-radius: 10px;
  background: #fff;
  border: 1px solid var(--line);
  flex-shrink: 0;
}
.prod-img-placeholder {
  width: 88px;
  height: 88px;
  border-radius: 10px;
  background: var(--accent);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

/* ── NUTRI-SCORE BADGE ── */
.nutri-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  border-radius: 6px;
  padding: 3px 10px;
  font-size: 12px;
  font-weight: 700;
  color: #fff;
}

/* ── BARCODE SCANNER ── */
.scanner-wrap { margin-top: 10px; }
.scanner-btn {
  width: 100%;
  padding: 12px;
  border-radius: 10px;
  border: 2px dashed var(--green);
  background: var(--accent);
  color: var(--green-dark);
  font-family: var(--sans);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  transition: background .15s;
}
.scanner-btn:hover { background: var(--card-soft); }

#scanner-video-container {
  margin-top: 12px;
  border-radius: 12px;
  overflow: hidden;
  border: 2px solid var(--green);
  display: none;
  position: relative;
}
#scanner-video { width: 100%; max-height: 260px; object-fit: cover; display: block; }
.scanner-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}
.scanner-frame {
  width: 200px;
  height: 80px;
  border: 3px solid rgba(255,255,255,.9);
  border-radius: 8px;
  box-shadow: 0 0 0 1000px rgba(0,0,0,.3);
}
.scanner-hint {
  position: absolute;
  bottom: 12px;
  left: 0;
  right: 0;
  text-align: center;
  color: #fff;
  font-size: 12px;
  font-weight: 500;
  text-shadow: 0 1px 3px rgba(0,0,0,.5);
}

/* ── HEURES D'OUVERTURE ── */
.hours-list { list-style: none; font-size: 12px; }
.hours-list li { display: flex; justify-content: space-between; padding: 3px 0; border-bottom: 1px solid var(--line); }
.hours-list li:last-child { border: none; }
.hours-list .today { font-weight: 600; color: var(--green); }

/* ── AVIS PLATEFORME ── */
.platform-reviews { margin-bottom: 4px; }
.reviews-title {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 400;
  color: var(--text);
  margin: 0 0 4px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.reviews-certified-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--accent);
  color: var(--green-dark);
  border-radius: 999px;
  padding: 2px 9px;
  font-size: 10px;
  font-weight: 700;
  font-family: var(--sans);
  letter-spacing: .04em;
  text-transform: uppercase;
}
.reviews-summary {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 16px;
  font-size: 13px;
  color: var(--text);
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
}
.reviews-count-badge { font-size: 11px; color: var(--muted); }

/* Carte avis certifié — style séparateur comme la maquette */
.review-item {
  padding: 16px 0;
  border-bottom: 1px solid var(--line);
}
.review-item:last-child { border-bottom: none; }
.review-header {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 8px;
}
.review-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--accent);
  color: var(--green-dark);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
}
.review-avatar:hover { opacity: .8; }
.review-meta { flex: 1; min-width: 0; }
.review-author, .review-name { font-size: 13px; font-weight: 600; color: var(--text); line-height: 1.2; text-decoration: none; }
.review-author:hover, .review-name:hover { text-decoration: underline; }
.review-date { font-size: 11px; color: var(--muted); margin-top: 1px; }
.review-rating-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
  flex-shrink: 0;
}
.review-hearts-main { display: flex; gap: 2px; }
.review-heart-main { font-size: 13px; color: var(--green); }
.review-heart-main.empty { color: var(--line); }
.review-score-label { font-size: 10px; color: var(--muted); }

.review-axes {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.review-axe-item {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 2px 8px;
  font-size: 11px;
  color: var(--muted);
}
.review-axe-label { font-weight: 600; color: var(--text); }
.review-axe-hearts { display: flex; gap: 1px; }
.review-heart-sm { font-size: 9px; color: var(--green); }
.review-heart-sm.empty { color: var(--line); }

.review-text {
  font-size: 13px;
  color: var(--text);
  line-height: 1.6;
  margin: 0 0 8px;
}
.review-asso-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: var(--accent);
  color: var(--green-dark);
  border-radius: 999px;
  padding: 3px 10px;
  font-size: 11px;
  font-weight: 500;
}
.reviews-more-btn {
  width: 100%;
  padding: 9px;
  margin-top: 12px;
  border-radius: 8px;
  border: 1.5px solid var(--line);
  background: none;
  font-family: var(--sans);
  font-size: 12px;
  color: var(--green-dark);
  cursor: pointer;
  transition: background .15s;
}
.reviews-more-btn:hover { background: var(--accent); }

/* ── AVIS EXTERNES (Google, etc.) ── */
.ext-reviews { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--line); }
.ext-reviews-title {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 400;
  color: var(--text);
  margin: 0 0 12px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.ext-review-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px 14px;
  background: var(--bg);
  border: 1.5px solid var(--line);
  border-radius: 10px;
  margin-bottom: 8px;
}
.ext-review-card:last-child { margin-bottom: 0; }
.ext-review-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ext-review-author { font-size: 13px; font-weight: 600; color: var(--text); flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ext-review-meta { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.ext-review-date { font-size: 11px; color: var(--muted); }
.ext-source-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border-radius: 999px;
  padding: 2px 8px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  background: var(--card);
  border: 1px solid var(--line);
  color: var(--muted);
}
.ext-source-badge.google { background: #e8f0fe; color: #1a73e8; border-color: #c5d5f8; }
html.dark .ext-source-badge.google { background: #0d1e3a; color: #7aacf8; border-color: #1a3a6a; }
.ext-review-stars { display: flex; gap: 1px; }
.ext-review-star { font-size: 12px; color: #f0b429; }
.ext-review-star.empty { color: var(--line); }
.ext-review-text { font-size: 12px; color: var(--muted); line-height: 1.55; margin: 0; }
.ext-review-link { font-size: 11px; color: var(--green); }
.ext-review-link:hover { color: var(--green-dark); }

/* coeurs utilisés dans la summary (JS list.js) */
.review-hearts { display: flex; gap: 1px; }
.review-heart { font-size: 13px; color: var(--green); }
.review-heart.empty { color: var(--line); }

/* ── FICHE LIEU — page styles ─────────────────────────────── */
.fp-breadcrumb{background:var(--card);border-bottom:1px solid var(--line)}
.fp-breadcrumb-inner{max-width:1100px;margin:0 auto;padding:10px 24px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.fp-breadcrumb-inner a{color:var(--muted);text-decoration:none}
.fp-breadcrumb-inner a:hover{color:var(--green)}
.fp-breadcrumb-sep{color:var(--line)}

.fp-hero{position:relative;height:280px;overflow:hidden;background:var(--card-soft)}
.fp-hero img{width:100%;height:100%;object-fit:cover}
.fp-hero-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 40%,rgba(13,20,16,.7))}
.fp-hero-placeholder{height:100%;display:flex;align-items:center;justify-content:center;font-size:80px;opacity:.2}

.fp-wrap{max-width:1100px;margin:0 auto;padding:32px 24px 80px;display:grid;grid-template-columns:1fr 360px;gap:28px;align-items:start}

.fp-entete{margin-bottom:24px}
.fp-pretitle{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--green);margin-bottom:8px}
.fp-name{font-family:var(--serif);font-size:clamp(1.8rem,4vw,2.8rem);font-weight:400;letter-spacing:-.03em;margin:0 0 8px;line-height:1.1;color:var(--text)}
.fp-address{font-size:14px;color:var(--muted);margin-bottom:14px;display:flex;align-items:center;gap:6px}
.fp-tags{display:flex;gap:8px;flex-wrap:wrap}
.fp-tag{border-radius:999px;padding:4px 12px;font-size:12px;font-weight:500}
.fp-tag-green{background:var(--accent);color:var(--green-dark)}
.fp-tag-gold{background:var(--gold-light);color:var(--gold)}
.fp-tag-muted{background:var(--bg);color:var(--muted);border:1px solid var(--line)}

/* Note agrégée + distribution */
.fp-rating-bar{display:flex;align-items:center;gap:14px;padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:16px}
.fp-score{font-family:var(--serif);font-size:3rem;font-weight:400;color:var(--text);line-height:1}
.fp-rating-right{flex:1}
.fp-stars{display:flex;gap:2px;margin-bottom:4px}
.fp-star{font-size:17px;color:#f0b429}
.fp-star.empty{color:var(--line)}
.fp-rating-count{font-size:12px;color:var(--muted)}
.fp-rbar-wrap{display:flex;flex-direction:column;gap:4px;min-width:140px}
.fp-rbar-row{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted)}
.fp-rbar-track{flex:1;height:4px;background:var(--line);border-radius:999px;overflow:hidden}
.fp-rbar-fill{height:100%;border-radius:999px;background:var(--green);transition:width .6s ease}

/* Stats plateforme */
.fp-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:28px}
.fp-stat{background:var(--card);border:1.5px solid var(--line);border-radius:12px;padding:14px;text-align:center}
.fp-stat-val{font-family:var(--serif);font-size:1.6rem;font-weight:400;color:var(--green);line-height:1;margin-bottom:4px}
.fp-stat-lab{font-size:11px;color:var(--muted)}

/* Associations soutenues */
.fp-asso-block{background:linear-gradient(135deg,var(--green-dark) 0%,var(--green-mid) 100%);border-radius:16px;padding:20px;margin-bottom:28px;color:#fff;position:relative;overflow:hidden}
.fp-asso-block::before{content:'';position:absolute;right:-30px;top:-30px;width:140px;height:140px;border-radius:50%;background:rgba(255,255,255,.07);pointer-events:none}
.fp-asso-title{font-family:var(--serif);font-size:1.1rem;margin:0 0 14px;opacity:.9}
.fp-asso-list{display:flex;flex-direction:column;gap:8px}
.fp-asso-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:rgba(255,255,255,.12);border-radius:10px}
.fp-asso-icon{width:32px;height:32px;border-radius:8px;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.fp-asso-info{flex:1;min-width:0}
.fp-asso-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fp-asso-count{font-size:11px;opacity:.75;margin-top:1px}
.fp-asso-pct{font-size:12px;font-weight:700;opacity:.9;flex-shrink:0}

.fp-section{margin-bottom:28px}
.fp-section-title{font-family:var(--serif);font-size:1.2rem;font-weight:400;color:var(--text);margin:0 0 14px;letter-spacing:-.01em}
.fp-desc{font-size:14px;color:var(--text);line-height:1.8;margin:0}

.fp-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fp-meta-item{background:var(--card);border:1.5px solid var(--line);border-radius:12px;padding:14px}
.fp-meta-item.full{grid-column:1/-1}
.fp-meta-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin-bottom:4px}
.fp-meta-value{font-size:13px;color:var(--text);font-weight:500;line-height:1.4}
.fp-meta-value a{color:var(--green);word-break:break-all;font-size:12px}
.fp-hours{margin:4px 0 0;padding:0;list-style:none;font-size:12px;line-height:1.9;color:var(--muted)}
.fp-hours li.today{color:var(--text);font-weight:600}

.fp-review-item{padding:16px 0;border-bottom:1px solid var(--line)}
.fp-review-item:last-child{border-bottom:none}
.fp-review-header{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px}
.fp-review-avatar{width:36px;height:36px;border-radius:50%;background:var(--accent);color:var(--green-dark);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0;text-decoration:none}
.fp-review-avatar:hover{opacity:.8}
.fp-review-meta{flex:1;min-width:0}
.fp-review-author{font-size:13px;font-weight:600;color:var(--text);text-decoration:none}
.fp-review-author:hover{text-decoration:underline}
.fp-review-date{font-size:11px;color:var(--muted)}
.fp-review-stars{display:flex;gap:1px;margin-top:2px}
.fp-review-star{font-size:11px;color:#f0b429}
.fp-review-star.empty{color:var(--line)}
.fp-review-text{font-size:13px;color:var(--text);line-height:1.6;margin-top:6px}

/* Sidebar */
.fp-sidebar{position:sticky;top:82px}
.fp-claim{border-radius:16px;padding:16px;margin-bottom:16px;display:flex;align-items:flex-start;gap:12px}
.fp-claim-unclaimed{background:var(--gold-light);border:1.5px solid rgba(176,125,30,.25)}
.fp-claim-pro{background:var(--accent);border:1.5px solid var(--green)}
.fp-claim-icon{font-size:20px;flex-shrink:0;margin-top:2px}
.fp-claim-title-unclaimed{font-size:13px;font-weight:600;color:var(--gold);margin-bottom:3px}
.fp-claim-title-pro{font-size:13px;font-weight:600;color:var(--green-dark);margin-bottom:3px}
.fp-claim-desc-unclaimed{font-size:12px;line-height:1.55;color:#8a5e0e}
.fp-claim-desc-pro{font-size:12px;line-height:1.55;color:var(--green-dark)}
.fp-btn-claim{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:999px;background:var(--gold);color:#fff;font-family:var(--sans);font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;margin-top:10px;width:100%;transition:background .15s}
.fp-btn-claim:hover{background:#8a5e0e;color:#fff}

.fp-minimap{border-radius:12px;overflow:hidden;border:1.5px solid var(--line);margin-bottom:16px;height:200px}
.fp-minimap iframe{width:100%;height:100%;border:0;display:block;border-radius:12px}
.fp-minimap-placeholder{height:100%;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted)}

.fp-quick{background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:16px;margin-bottom:16px}
.fp-quick-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin-bottom:12px}
.fp-quick-row{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;font-size:13px}
.fp-quick-row:last-child{margin-bottom:0}
.fp-quick-icon{font-size:15px;flex-shrink:0;margin-top:1px}
.fp-quick-val{color:var(--text);line-height:1.45}
.fp-quick-val a{color:var(--green)}

@media(max-width:900px){
  .fp-wrap{grid-template-columns:1fr;padding:20px 16px 60px}
  .fp-sidebar{position:static}
  .fp-stat-grid{grid-template-columns:repeat(3,1fr)}
  .fp-meta-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:480px){
  .fp-stat-grid{grid-template-columns:1fr 1fr}
  .fp-meta-grid{grid-template-columns:1fr}
  .fp-rbar-wrap{display:none}
}
