
/* ══════════════════════════════════════════════════════════════════════════════
   REFONTE GALERIE — Modal 3 onglets, Bento, Admin bar, Drag & Drop
══════════════════════════════════════════════════════════════════════════════ */

/* ── Modal galerie ──────────────────────────────────────────────────────── */
.modal-gallery-box {
  max-width: 860px; width: 96vw;
  max-height: 92vh; display: flex; flex-direction: column;
}
.gal-modal-header { border-bottom: 1px solid rgba(255,255,255,.08); padding-bottom: 0; flex-wrap: nowrap; }
.gallery-modal-tabs { display: flex; gap: 2px; flex: 1; }
.gal-tab {
  display: flex; align-items: center; gap: 7px;
  padding: 10px 18px; border: none; background: transparent;
  color: rgba(255,255,255,.45); font-size: .84rem; font-family: inherit;
  cursor: pointer; border-bottom: 2px solid transparent;
  transition: color .18s, border-color .18s;
  white-space: nowrap;
}
.gal-tab:hover  { color: rgba(255,255,255,.8); }
.gal-tab.active { color: #fff; border-bottom-color: var(--color-accent, #c9a96e); }
.gal-tab .gal-media-count {
  background: var(--color-accent, #c9a96e); color: #000;
  font-size: 10px; font-style: normal; font-weight: 700;
  border-radius: 10px; padding: 1px 6px; min-width: 18px; text-align: center;
}
.gal-panel { padding: 20px 4px; }
.gal-panel.hidden { display: none; }
.gal-modal-body { flex: 1; overflow-y: auto; padding: 0 20px; }
.gal-label { display: block; font-size: 11px; color: rgba(255,255,255,.45); letter-spacing: 1.5px; text-transform: uppercase; margin: 14px 0 5px; }
.gal-label:first-child { margin-top: 0; }
.gal-optional { font-size: 10px; opacity: .5; text-transform: none; letter-spacing: 0; }
.gal-textarea { resize: vertical; min-height: 64px; }

/* ── Layout cards ───────────────────────────────────────────────────────── */
.layout-cards {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 8px;
  margin-bottom: 20px;
}
.layout-card {
  display: flex; flex-direction: column; align-items: center; gap: 7px;
  padding: 14px 8px 12px;
  background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.1);
  border-radius: 10px; color: rgba(255,255,255,.55); font-size: .78rem;
  cursor: pointer; transition: all .18s;
}
.layout-card i { font-size: 1.3rem; }
.layout-card:hover { background: rgba(255,255,255,.08); color: #fff; border-color: rgba(255,255,255,.25); }
.layout-card.active { background: rgba(var(--color-accent-rgb),.15); border-color: var(--color-accent, #c9a96e); color: var(--color-accent, #c9a96e); }

/* ── Options sliders ────────────────────────────────────────────────────── */
.gal-options-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 24px; }
.gal-opt-row { display: flex; flex-direction: column; gap: 6px; }
.gal-col-full { grid-column: 1 / -1; }
.gal-range { width: 100%; accent-color: var(--color-accent, #c9a96e); }
.gal-select, .gal-select-sm {
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.12);
  border-radius: 8px; color: #fff; padding: 8px 12px; font-size: .85rem;
  font-family: inherit; width: 100%;
}
.gal-select-sm { width: auto; padding: 6px 10px; font-size: .8rem; }
.ratio-btns { display: flex; gap: 6px; flex-wrap: wrap; }
.ratio-btn {
  padding: 5px 12px; border-radius: 6px; border: 1px solid rgba(255,255,255,.15);
  background: transparent; color: rgba(255,255,255,.55); font-size: .8rem;
  cursor: pointer; transition: all .15s;
}
.ratio-btn:hover  { border-color: rgba(255,255,255,.35); color: #fff; }
.ratio-btn.active { background: rgba(var(--color-accent-rgb),.2); border-color: var(--color-accent, #c9a96e); color: var(--color-accent, #c9a96e); }

/* ── Section carousel ───────────────────────────────────────────────────── */
.gal-section { margin-top: 16px; padding: 14px 16px; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.08); border-radius: 10px; }
.gal-section.hidden { display: none; }
.gal-section-title { font-size: .8rem; color: rgba(255,255,255,.5); letter-spacing: 1px; text-transform: uppercase; margin: 0 0 12px; }
.gal-carousel-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; align-items: center; }
.gal-check-label { display: flex; align-items: center; gap: 6px; font-size: .83rem; color: rgba(255,255,255,.65); cursor: pointer; }
.gal-check-label input[type=checkbox] { accent-color: var(--color-accent, #c9a96e); width: 14px; height: 14px; }

/* ── Grille médias + Drag & Drop ────────────────────────────────────────── */
.gal-media-toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 14px; }
.gal-dnd-hint { font-size: .75rem; color: rgba(255,255,255,.3); display: flex; align-items: center; gap: 5px; }
.dnd-grid,
.gallery-media-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
  gap: 8px;
}
.gm-item {
  position: relative; border-radius: 8px; overflow: hidden;
  aspect-ratio: 1/1; background: rgba(255,255,255,.05);
  border: 2px solid transparent; cursor: grab; transition: border-color .15s, opacity .15s;
}
.gm-item img, .gm-item video { width: 100%; height: 100%; object-fit: cover; display: block; }
.gm-item.dragging   { opacity: .4; cursor: grabbing; }
.gm-item.drag-over  { border-color: var(--color-accent, #c9a96e); }
.gm-item-del {
  position: absolute; top: 3px; right: 3px;
  width: 20px; height: 20px; border-radius: 50%;
  background: rgba(220,38,38,.85); border: none; color: #fff;
  font-size: 9px; cursor: pointer; display: flex; align-items: center; justify-content: center;
  opacity: 0; transition: opacity .15s;
}
.gm-item:hover .gm-item-del { opacity: 1; }
.gm-item-exif {
  position: absolute; bottom: 3px; left: 3px;
  width: 20px; height: 20px; border-radius: 50%;
  background: rgba(0,0,0,.7); border: 1px solid rgba(255,255,255,.2);
  color: rgba(255,255,255,.5); font-size: 9px; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: border-color .15s, color .15s;
}
.gm-item-exif.has-exif { border-color: var(--color-accent, #c9a96e); color: var(--color-accent, #c9a96e); }
.gm-cover-btn {
  position: absolute; bottom: 3px; right: 3px;
  width: 20px; height: 20px; border-radius: 50%;
  background: rgba(0,0,0,.7); border: 1px solid rgba(255,255,255,.15);
  color: rgba(255,255,255,.3); font-size: 9px; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all .15s; opacity: 0;
}
.gm-item:hover .gm-cover-btn, .gm-cover-btn.active { opacity: 1; }
.gm-cover-btn.active { color: #f59e0b; border-color: #f59e0b; }
.gm-caption-preview {
  position: absolute; bottom: 0; left: 24px; right: 24px;
  font-size: 8px; color: rgba(255,255,255,.5);
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
  padding: 2px 0; pointer-events: none;
}
.gm-empty { color: rgba(255,255,255,.3); font-size: .83rem; text-align: center; padding: 24px 0; }

/* ── Modal EXIF ─────────────────────────────────────────────────────────── */
.exif-modal-box { max-width: 420px; }
.exif-modal-title { font-size: .95rem; margin: 0; }
.exif-modal-body { padding: 16px 22px; }
.exif-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 12px; }
.exif-label { display: block; font-size: 10px; color: rgba(255,255,255,.4); letter-spacing: 1.5px; text-transform: uppercase; margin-bottom: 4px; }

/* ── Bouton secondaire ──────────────────────────────────────────────────── */
.btn-secondary {
  padding: 8px 14px; border-radius: 8px; border: 1px solid rgba(255,255,255,.2);
  background: rgba(255,255,255,.06); color: rgba(255,255,255,.7);
  font-size: .83rem; cursor: pointer; display: flex; align-items: center; gap: 6px;
  transition: all .18s;
}
.btn-secondary:hover { background: rgba(255,255,255,.12); color: #fff; border-color: rgba(255,255,255,.35); }

/* ── Admin bar ──────────────────────────────────────────────────────────── */
.gallery-admin-bar {
  display: flex; align-items: center; gap: 12px;
  background: rgba(0,0,0,.45); border: 1px solid rgba(var(--color-accent-rgb),.25);
  border-radius: 10px 10px 0 0; padding: 10px 14px;
}
.gallery-admin-cover {
  width: 48px; height: 48px; border-radius: 6px; object-fit: cover; flex-shrink: 0;
}
.gallery-admin-cover-placeholder {
  width: 48px; height: 48px; border-radius: 6px; background: rgba(255,255,255,.07);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
  color: rgba(255,255,255,.2); font-size: 1.2rem;
}
.gallery-admin-info { flex: 1; min-width: 0; }
.gallery-admin-title { display: block; font-size: .9rem; font-weight: 600; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gallery-admin-meta  { display: block; font-size: .75rem; color: rgba(255,255,255,.4); margin-top: 2px; }
.gallery-admin-layout-badge { background: rgba(var(--color-accent-rgb),.15); color: var(--color-accent, #c9a96e); border-radius: 4px; padding: 1px 6px; font-size: .7rem; }
.gallery-admin-actions { display: flex; gap: 6px; flex-shrink: 0; }

/* ── Description galerie ────────────────────────────────────────────────── */
.gallery-block-title-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gallery-block-desc { font-size: .88rem; color: rgba(255,255,255,.55); margin: 6px 0 0; line-height: 1.5; }

/* ── Layout Bento ───────────────────────────────────────────────────────── */
.gallery-bento-layout {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  grid-auto-rows: 180px;
  gap: var(--gal-gap, 10px);
}
.gallery-bento-layout .gallery-item:nth-child(6n+1) { grid-column: span 4; grid-row: span 2; }
.gallery-bento-layout .gallery-item:nth-child(6n+2) { grid-column: span 2; }
.gallery-bento-layout .gallery-item:nth-child(6n+3) { grid-column: span 2; }
.gallery-bento-layout .gallery-item:nth-child(6n+4) { grid-column: span 2; }
.gallery-bento-layout .gallery-item:nth-child(6n+5) { grid-column: span 2; }
.gallery-bento-layout .gallery-item:nth-child(6n+6) { grid-column: span 2; }

/* ── CSS custom properties pour colonnes + gap ──────────────────────────── */
/* !important garantit que ces vars l'emportent sur les anciens blocs dupliqués */
.gallery-grid-layout {
  grid-template-columns: repeat(var(--gal-columns, 3), 1fr) !important;
  gap: var(--gal-gap, 10px) !important;
}
.gallery-masonry-layout {
  display: block !important;  /* pas grid — column-count exige display:block */
  column-count: var(--gal-columns, 3) !important;
  column-gap: var(--gal-gap, 10px) !important;
}
/* Chaque item ne doit pas se couper entre deux colonnes */
.gallery-masonry-layout .gallery-item {
  break-inside: avoid;
  page-break-inside: avoid;
  display: block !important;
  width: 100%;
  aspect-ratio: unset !important;  /* annule le 4/3 global */
  margin-bottom: var(--gal-gap, 10px);
  border-radius: var(--radius-sm, 4px);
}
/* Images à hauteur naturelle — c'est ça qui fait le "mosaïque" */
.gallery-masonry-layout .gallery-item img,
.gallery-masonry-layout .gallery-item video {
  width: 100%;
  height: auto !important;
  aspect-ratio: unset !important;
  object-fit: cover;
  min-height: 80px;
  display: block;
}

/* Responsive : force des breakpoints lisibles, !important pour battre les anciens overrides */
@media (max-width: 900px) {
  .gallery-masonry-layout { column-count: min(var(--gal-columns, 3), 3) !important; }
}
@media (max-width: 600px) {
  .gallery-grid-layout    { grid-template-columns: repeat(2, 1fr) !important; }
  .gallery-masonry-layout { column-count: 2 !important; }
}
@media (max-width: 400px) {
  .gallery-grid-layout    { grid-template-columns: 1fr !important; }
  .gallery-masonry-layout { column-count: 1 !important; }
}

/* ── Carousel dots (overlay absolute dans carousel-wrapper) ─────────────── */
.car-dot {
  width: 8px; height: 8px; border-radius: 50%; border: none;
  background: rgba(255,255,255,.35); cursor: pointer;
  transition: background .22s, transform .22s, width .22s;
  padding: 0; flex-shrink: 0;
}
.car-dot.active {
  background: var(--color-accent, #c9a96e);
  width: 22px; border-radius: 4px;
  transform: none;
}

/* ── Aspect-ratio dynamique ─────────────────────────────────────────────── */
.gallery-item { aspect-ratio: var(--gal-ratio, 4/3); }
.gallery-item.hover-zoom img { transition: transform .4s ease; }
.gallery-item.hover-zoom:hover img { transform: scale(1.07); }
.gallery-item.hover-caption .gallery-item-overlay { opacity: 1; background: transparent; }
.gallery-item.hover-none .gallery-item-overlay { display: none; }

/* ── Vide + états ───────────────────────────────────────────────────────── */
.gal-empty-guide {
  text-align: center; padding: 60px 20px;
  border: 2px dashed rgba(var(--color-accent-rgb),.25); border-radius: 12px; margin-bottom: 20px;
}
.gal-empty-guide i { font-size: 40px; display: block; margin-bottom: 16px; color: var(--color-accent); }
.gal-empty-guide p { font-size: 16px; font-weight: 600; color: var(--color-text-primary); margin: 0 0 8px; }
.gal-empty-guide small { font-size: 13px; color: var(--color-text-muted); }
.gal-empty-visitor { text-align: center; color: var(--color-text-muted); padding: 60px; font-size: 14px; }
.gal-no-media { color: var(--color-text-muted); font-size: 13px; padding: 20px; }

/* ── Responsive bento ───────────────────────────────────────────────────── */
@media (max-width: 768px) {
  .gallery-bento-layout { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 140px; }
  .gallery-bento-layout .gallery-item { grid-column: span 1 !important; grid-row: span 1 !important; }
  .gal-options-grid { grid-template-columns: 1fr; }
  .gal-carousel-grid { grid-template-columns: 1fr 1fr; }
  .layout-cards { grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); }
  .gallery-admin-bar { flex-wrap: wrap; }
}
