/* ===== Catalogue theme — match the PROMAX catalogue look ===== */
:root{
  --cb-brand:#ee0000;--cb-brand-d:#c30000;--cb-ink:#16161b;--cb-ink2:#55555f;
  --cb-ink3:#8a8a93;--cb-line:#ececf0;--cb-wash:#f6f6f8;
  --cb-font:'Inter',system-ui,-apple-system,Arial,sans-serif;
  --cb-display:'Montserrat',var(--cb-font);
}
body{font-family:var(--cb-font);color:var(--cb-ink);background:var(--cb-wash);}
h1,h2,h3,h4,h5,h6{font-family:var(--cb-display);}
.cb-head{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.92);
  -webkit-backdrop-filter:saturate(160%) blur(10px);backdrop-filter:saturate(160%) blur(10px);
  border-bottom:1px solid var(--cb-line);}
.cb-head__in{max-width:1000px;margin:0 auto;display:flex;align-items:center;gap:1rem;padding:.7rem 1rem;}
.cb-back{color:var(--cb-ink2);text-decoration:none;font-weight:600;font-size:.9rem;flex:0 0 auto;}
.cb-back:hover{color:var(--cb-brand);}
.cb-brand{display:flex;align-items:center;gap:.45rem;color:var(--cb-brand);
  font-family:var(--cb-display);font-size:1.02rem;margin:0 auto;}
.cb-brand b{font-weight:800;}.cb-brand span{color:var(--cb-ink);font-weight:600;}
.cb-head__spacer{flex:0 0 auto;width:64px;}
.cb-intro{text-align:center;margin:.4rem 0 1.8rem;}
.cb-title{font-size:clamp(1.6rem,4vw,2.2rem);font-weight:800;letter-spacing:-.02em;margin:0 0 .35rem;}
.cb-subtitle{color:var(--cb-ink3);margin:0;font-size:1rem;}
/* brand accents over the existing tunnel */
.cb-day.cb-free{border-color:var(--cb-brand);color:var(--cb-brand);}
.cb-day.cb-free:hover{border-color:var(--cb-brand);background:rgba(238,0,0,.06);}
.cb-day.cb-sel{background:var(--cb-brand);color:#fff;border-color:var(--cb-brand);}
.btn-dark{background:var(--cb-brand);border-color:var(--cb-brand);}
.btn-dark:hover,.btn-dark:focus{background:var(--cb-brand-d);border-color:var(--cb-brand-d);}
.btn-link{color:var(--cb-brand);}
.cb-slot.active,.cb-slot:active{background:var(--cb-brand)!important;border-color:var(--cb-brand)!important;color:#fff!important;}
.card{border:1px solid var(--cb-line);border-radius:16px;}

/* Catalogue de réservation — styles (complément Bootstrap 5). Fichier nouveau. */

/* Stepper — numbered circles with connectors */
.cb-steps { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0; }
.cb-step {
  display: inline-flex; align-items: center; gap: .5rem;
  font-size: .9rem; font-weight: 600; color: var(--cb-ink3);
  background: transparent; padding: .35rem .55rem; white-space: nowrap;
  transition: color .25s ease;
}
.cb-step:not(:first-child)::before {
  content: ""; display: block; width: clamp(14px, 4vw, 48px); height: 2px;
  background: var(--cb-line); margin: 0 .2rem; border-radius: 2px; transition: background .3s ease;
}
.cb-step i {
  flex: 0 0 auto; display: grid; place-items: center; width: 30px; height: 30px;
  border-radius: 50%; font-style: normal; font-weight: 800; font-size: .85rem;
  background: #fff; border: 2px solid var(--cb-line); color: var(--cb-ink3);
  transition: background .25s ease, border-color .25s ease, color .25s ease, box-shadow .25s ease;
}
.cb-step.active { color: var(--cb-ink); }
.cb-step.active i { background: var(--cb-brand); border-color: var(--cb-brand); color: #fff; box-shadow: 0 6px 16px rgba(238,0,0,.28); }
.cb-step.active:not(:first-child)::before { background: var(--cb-brand); }
@media (max-width: 560px) { .cb-step__t { display: none; } .cb-step:not(:first-child)::before { width: 18px; } }

.cb-card { transition: transform .15s ease, box-shadow .15s ease; }
.cb-card:hover { transform: translateY(-3px); box-shadow: 0 .5rem 1rem rgba(0,0,0,.12) !important; }
.cb-card-img { height: 170px; object-fit: cover; }
.cb-price { font-size: 1.15rem; }
.cb-desc { max-height: 7.5em; overflow: hidden; }
.cb-desc ul { padding-left: 1.1rem; margin-bottom: .4rem; }

/* Calendrier */
.cb-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.cb-h { text-align: center; font-size: .75rem; color: #6c757d; font-weight: 600; padding-bottom: 4px; }
.cb-day {
  aspect-ratio: 1 / 1; border: 1px solid #dee2e6; background: #fff; border-radius: 8px;
  font-size: .9rem; cursor: pointer; transition: background .12s ease, border-color .12s ease;
}
.cb-day.cb-free:hover { border-color: #212529; }
.cb-day.cb-free { border-color: #198754; color: #198754; font-weight: 600; }
.cb-day.cb-busy { background: #f8d7da; color: #a02834; text-decoration: line-through; cursor: not-allowed; }
.cb-day.cb-off  { background: #f1f3f5; color: #adb5bd; cursor: not-allowed; }
.cb-day.cb-sel  { background: #212529; color: #fff; border-color: #212529; }
.cb-slot {
  min-width: 84px; border: 1px solid var(--cb-line); border-radius: 12px;
  background: #fff; color: var(--cb-ink); font-family: var(--cb-display);
  font-weight: 700; font-size: .98rem; padding: .62rem .5rem; line-height: 1;
  font-variant-numeric: tabular-nums; cursor: pointer;
  transition: border-color .18s ease, background .18s ease, color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.cb-slot:hover {
  border-color: var(--cb-brand); color: var(--cb-brand); background: rgba(238,0,0,.05);
  transform: translateY(-2px); box-shadow: 0 8px 18px rgba(238,0,0,.16);
}
.cb-slot:focus-visible { outline: 2px solid var(--cb-brand); outline-offset: 2px; }

/* ===== Filtres catégories (pills) ===== */
.cb-filters { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .5rem; }
.cb-filter {
  border: 1px solid var(--cb-line); background: #fff; color: var(--cb-ink2);
  font-family: var(--cb-font); font-weight: 600; font-size: .85rem;
  padding: .45rem .95rem; border-radius: 999px; cursor: pointer; line-height: 1;
  transition: background .2s ease, border-color .2s ease, color .2s ease, box-shadow .2s ease;
}
.cb-filter:hover { border-color: var(--cb-brand); color: var(--cb-brand); }
.cb-filter.active { background: var(--cb-brand); border-color: var(--cb-brand); color: #fff; box-shadow: 0 6px 16px rgba(238,0,0,.22); }

/* ===== Cartes "types de séance" — identiques aux cartes Tarifs ===== */
.cb-types { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 18px; }
.cb-type-card {
  position: relative; display: flex; flex-direction: column; width: 100%; padding: 0;
  border: 1px solid var(--cb-line); border-radius: 15px; overflow: hidden; cursor: pointer;
  text-align: left; background: #fff; box-shadow: 0 6px 22px rgba(17,20,28,.06);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.cb-type-card:hover { transform: translateY(-3px); border-color: rgba(238,0,0,.28); box-shadow: 0 16px 32px -20px rgba(20,18,28,.45); }
.cb-type-card:focus-visible { outline: 3px solid var(--cb-brand); outline-offset: 2px; }
.cb-type-media {
  position: relative; width: 100%; aspect-ratio: 16 / 10;
  background-size: cover; background-position: center; background-color: var(--cb-wash);
}
.cb-type-scrim, .cb-type-sheen { display: none; }   /* image-top layout : pas d'overlay */
.cb-type-glass {
  position: relative; display: flex; flex-direction: column; gap: .35rem; flex: 1;
  padding: .9rem 1rem 1.05rem;
}
.cb-type-name { font-family: var(--cb-display); font-size: 1.02rem; font-weight: 700; color: var(--cb-ink); line-height: 1.25; margin: 0; }
.cb-type-desc {
  margin: 0; color: var(--cb-ink3); font-size: .86rem; line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.cb-type-foot { margin-top: auto; padding-top: .6rem; display: flex; align-items: center; justify-content: space-between; gap: .5rem; flex-wrap: wrap; }
.cb-type-price { color: var(--cb-brand); font-family: var(--cb-display); font-weight: 800; font-size: 1.05rem; }
/* "Réserver" button on every card (the whole card is clickable) */
.cb-type-book {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: .25rem;
  background: var(--cb-brand); color: #fff; font-weight: 700; font-size: .82rem;
  padding: .45em .9em; border-radius: 9px; transition: background .2s ease, transform .2s ease;
}
.cb-type-book i { font-style: normal; }
.cb-type-card:hover .cb-type-book { background: var(--cb-brand-d); transform: translateX(2px); }
/* Category badge over the image */
.cb-type-cat {
  position: absolute; top: 10px; left: 10px; z-index: 2;
  background: rgba(17,20,28,.62); color: #fff; font-size: .72rem; font-weight: 700;
  letter-spacing: .02em; text-transform: uppercase; padding: .28em .65em; border-radius: 999px;
  -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
}
/* Dégradés de remplacement pour les offres sans image */
.cb-grad-0 { background: linear-gradient(135deg,#ee0000,#ff6a3d); }
.cb-grad-1 { background: linear-gradient(135deg,#7048e8,#9775fa); }
.cb-grad-2 { background: linear-gradient(135deg,#0ca678,#63e6be); }
.cb-grad-3 { background: linear-gradient(135deg,#1c7ed6,#74c0fc); }
.cb-grad-4 { background: linear-gradient(135deg,#e8590c,#ffa94d); }
.cb-grad-5 { background: linear-gradient(135deg,#16161b,#495057); }
