/* ============================================================================
   ÉCRAN CAMÉRA — « l'écran caméra impose sa loi » (DS v2).

   C'est LUI qui a rendu tout le produit sombre. Il n'a donc plus besoin d'une
   palette à part : il utilise les mêmes tokens que le reste de l'app. Une palette
   `--ds-cam-*` séparée était le symptôme d'un DS clair qui devait faire une
   exception ; le DS v2 a supprimé l'exception en supprimant le clair.
   ========================================================================== */

.seance {
  position: fixed;
  inset: 0;
  z-index: var(--ds-z-camera);
  display: flex;
  flex-direction: column;
  background: var(--ds-bg);
  color: var(--ds-text);
  overscroll-behavior: contain;
}

.seance__video,
.seance__squelette {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scaleX(-1); /* miroir : on se voit comme dans une glace */
}
.seance__squelette {
  opacity: 0.9;
}

.seance__voile {
  position: absolute;
  inset: 0;
  background: radial-gradient(120% 90% at 50% 30%, transparent 0%, var(--ds-bg) 82%);
  pointer-events: none;
}

.seance__entete {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: var(--ds-sp-2);
  flex-wrap: wrap;
  padding: calc(var(--ds-safe-top) + var(--ds-sp-3)) var(--ds-sp-4) 0;
}
.seance__quitter {
  display: grid;
  place-items: center;
  width: var(--ds-tap-min);
  height: var(--ds-tap-min);
  flex: none;
  border-radius: 50%;
  border: 1px solid var(--ds-border);
  background: var(--ds-surface);
  color: var(--ds-text-2);
  text-decoration: none;
}
.seance__entete .chip:last-child {
  margin-left: auto;
}

/* Le compteur vit dans la zone du pouce : bas de l'écran, jamais sous une barre. */
.seance__compteur {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(140px + var(--ds-safe-bottom));
  z-index: 2;
}
.seance__jauge {
  width: 64%;
  margin: var(--ds-sp-3) auto 0;
}

.seance__consigne {
  position: absolute;
  left: var(--ds-sp-4);
  right: var(--ds-sp-4);
  top: 42%;
  z-index: 2;
  text-align: center;
  font-weight: 600;
}
.seance__consigne span {
  display: inline-block;
  padding: var(--ds-sp-3) var(--ds-sp-4);
  border-radius: var(--ds-r-md);
  background: var(--ds-surface);
  border: 1px solid var(--ds-border);
}
/* Une rep refusée doit se VOIR : rejetée en silence, elle passe pour un bug. */
.seance__consigne[data-ton="alerte"] span {
  color: var(--ds-energy);
  border-color: var(--ds-energy);
}
.seance__consigne[data-ton="calibre"] span {
  color: var(--ds-accent-texte);
  border-color: var(--ds-accent);
}

.seance__teaser {
  position: absolute;
  inset: auto var(--ds-sp-4) calc(110px + var(--ds-safe-bottom));
  z-index: 2;
  text-align: center;
  font-size: var(--ds-fs-xs);
  color: var(--ds-text-3);
}

.seance__actions {
  position: absolute;
  left: var(--ds-sp-4);
  right: var(--ds-sp-4);
  bottom: calc(var(--ds-sp-4) + var(--ds-safe-bottom));
  z-index: 2;
  display: grid;
  gap: var(--ds-sp-2);
}
