/* =====================================================================
   CUSTOM — styles spécifiques au template (au-dessus de Bootstrap)
   Uniquement ce que les utilitaires Bootstrap ne couvrent pas.
   ===================================================================== */

body { font-family: var(--site-font); }

/* ---- Theming des composants Bootstrap par le token --bs-primary -------
   IMPORTANT (anti-footprint) : .btn-primary / .text-bg-primary sont compilés
   depuis Sass et n'écoutent PAS --bs-primary au runtime. Sans ce mapping,
   TOUS les sites du réseau gardent le bleu Bootstrap par défaut = signature.
   On recâble donc les variables de composant sur le token du thème. */
.btn-primary {
  --bs-btn-bg: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-bg: var(--bs-link-hover-color);
  --bs-btn-hover-border-color: var(--bs-link-hover-color);
  --bs-btn-active-bg: var(--bs-link-hover-color);
  --bs-btn-active-border-color: var(--bs-link-hover-color);
  --bs-btn-disabled-bg: var(--bs-primary);
  --bs-btn-disabled-border-color: var(--bs-primary);
}
.text-bg-primary { background-color: var(--bs-primary) !important; }
.btn-outline-light { --bs-btn-hover-color: var(--bs-primary); }
a { color: var(--bs-link-color); }

/* ---- Logo texte ---------------------------------------------------- */
.brand-logo { font-weight: 800; letter-spacing: -.02em; }
.brand-logo .dot { color: var(--bs-primary); }

/* ---- Carte profil (modèle) ----------------------------------------- */
.cam-card {
  --bs-card-bg: var(--bs-secondary-bg);
  --bs-card-border-color: var(--bs-border-color);
  --bs-card-border-radius: var(--site-radius);
  overflow: hidden;
  transition: transform .15s ease, box-shadow .15s ease;
}
.cam-card:hover { transform: translateY(-4px); box-shadow: 0 .75rem 2rem rgba(0,0,0,.45); }
.cam-card .cam-thumb { background: var(--bs-tertiary-bg); }
.cam-card .cam-thumb img { object-fit: cover; width: 100%; height: 100%; }

/* Badge "live" pulsé */
.badge-live {
  background: rgba(var(--site-live-rgb), .15);
  color: var(--site-live);
  border: 1px solid rgba(var(--site-live-rgb), .4);
}
.badge-live .dot {
  width: .5rem; height: .5rem; border-radius: 50%;
  background: var(--site-live); display: inline-block;
  box-shadow: 0 0 0 0 rgba(var(--site-live-rgb), .7);
  animation: live-pulse 1.6s infinite;
}
@keyframes live-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(var(--site-live-rgb), .6); }
  70%  { box-shadow: 0 0 0 .4rem rgba(var(--site-live-rgb), 0); }
  100% { box-shadow: 0 0 0 0 rgba(var(--site-live-rgb), 0); }
}

/* Bouton favori */
.btn-fav { --bs-btn-color: var(--bs-body-color); border: 0; background: transparent; }
.btn-fav.is-fav { color: var(--bs-primary); }

/* ---- Hero ---------------------------------------------------------- */
.hero { background:
  radial-gradient(1200px 400px at 80% -10%, rgba(var(--bs-primary-rgb), .18), transparent 60%),
  var(--bs-body-bg); }

/* ---- Sticky CTA mobile (conf : "Sticky CTA on mobile footer") ------ */
.sticky-cta {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 1030;
  background: var(--bs-secondary-bg);
  border-top: 1px solid var(--bs-border-color);
  padding: .65rem .9rem;
  padding-bottom: calc(.65rem + env(safe-area-inset-bottom));
}
@media (min-width: 992px) { .sticky-cta { display: none; } }
body.has-sticky-cta { padding-bottom: 5rem; }
@media (min-width: 992px) { body.has-sticky-cta { padding-bottom: 0; } }

/* ---- Age gate : flou du contenu (conf : "flou CSS + CTA") ---------- */
body.age-locked .age-blurable { filter: blur(14px); pointer-events: none; user-select: none; }

/* ---- Bannière consentement cookies --------------------------------- */
.cookie-consent {
  position: fixed; left: 1rem; right: 1rem; bottom: 1rem; z-index: 1040;
  max-width: 680px; margin-inline: auto;
  display: flex; flex-wrap: wrap; align-items: center; gap: .75rem;
  justify-content: space-between;
  background: var(--bs-secondary-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: var(--site-radius);
  padding: .75rem 1rem;
  box-shadow: 0 .5rem 1.5rem rgba(0,0,0,.4);
}
@media (max-width: 991.98px) { .cookie-consent { bottom: 5rem; } } /* au-dessus du sticky CTA */

/* ---- AI Girlfriend : bulle de chat mockup -------------------------- */
.chat-mock { background: var(--bs-secondary-bg); border: 1px solid var(--bs-border-color); border-radius: var(--site-radius); }
.chat-bubble { border-radius: 1rem; padding: .55rem .85rem; max-width: 80%; }
.chat-bubble.them { background: var(--bs-tertiary-bg); }
.chat-bubble.me { background: var(--bs-primary); color: #fff; margin-left: auto; }
