/* ==================================================================
   Composants du moteur d'exercices de la 2e commune.
   Chargé après assets/theme.css, dont il reprend toutes les couleurs.
   ================================================================== */

/* ---------- bandeau de score ---------- */

.score {
  position: sticky;
  top: 0;
  z-index: 5;
  background: var(--blanc);
  border: 1px solid var(--trait);
  border-radius: .5rem;
  padding: .8rem 1.1rem 1rem;
  margin-bottom: 1.2rem;
}
.score__txt { font-size: .95rem; }
.score strong { color: var(--accent-encre); }
.score .action { margin-top: .7rem; }

.jauge {
  height: .7rem;
  background: var(--accent-fond);
  border-radius: .35rem;
  overflow: hidden;
  margin-top: .5rem;
}
.jauge span {
  display: block;
  height: 100%;
  width: 0;
  background: var(--juste);
  transition: width .3s;
}

/* ---------- carte d'exercice ---------- */

.ex {
  border: 1px solid var(--trait);
  border-radius: .5rem;
  padding: 1.1rem 1.2rem 1.2rem;
  margin: 1.2rem 0;
  background: var(--blanc);
}
.ex .consigne {
  font-family: var(--police-titre);
  font-weight: 700;
  font-size: .95rem;
  color: var(--accent-encre);
  margin: 0 0 .3rem;
  max-width: none;
  display: flex;
  flex-wrap: wrap;
  gap: .3rem 1rem;
  align-items: baseline;
  justify-content: space-between;
}
.ex .enonce { margin: 0 0 .9rem; }
.ex h4 { margin: 0 0 .5rem; color: var(--encre-douce); font-size: .85rem; }

.minuteur {
  font-family: var(--police-titre);
  font-weight: 700;
  color: var(--erreur);
}

/* ---------- boutons de réponse ---------- */

.opt, .jeton, .item {
  font: inherit;
  font-size: .97rem;
  display: inline-block;
  margin: .25rem .35rem .25rem 0;
  padding: .5rem .8rem;
  border: 1px solid var(--trait-fort);
  border-radius: .4rem;
  background: var(--blanc);
  color: var(--encre);
  cursor: pointer;
  text-align: left;
}
.opt { display: block; width: 100%; }
.jeton--bloc { display: block; width: 100%; }
.jeton--mini { font-size: .8rem; padding: .2rem .55rem; margin-left: .4rem; }

.opt:hover:not([disabled]),
.jeton:hover:not([disabled]),
.item:hover:not([disabled]) { border-color: var(--encre); }

.opt.choisi, .jeton.choisi, .item.choisi {
  background: var(--encre);
  color: var(--papier);
  border-color: var(--encre);
}

.opt.juste, .jeton.juste, .item.juste {
  background: var(--juste-fond);
  border-color: var(--juste);
}
.opt.faux, .jeton.faux, .item.faux {
  background: var(--erreur-fond);
  border-color: var(--erreur);
}
.opt[disabled], .jeton[disabled], .item[disabled] { cursor: default; }

/* ---------- tri en paniers ---------- */

.reserve { margin-bottom: .6rem; }

.paniers {
  display: flex;
  flex-wrap: wrap;
  gap: .8rem;
  margin-top: .8rem;
}
.panier {
  flex: 1 1 11rem;
  min-height: 6rem;
  border: 2px dashed var(--trait-fort);
  border-radius: .5rem;
  padding: .6rem;
  background: var(--papier);
  cursor: pointer;
}
.panier:hover { border-color: var(--accent); }
.panier.vise { border-color: var(--accent); background: var(--accent-fond); }
.panier h4 {
  margin: 0 0 .4rem;
  font-family: var(--police-titre);
  font-size: .85rem;
  color: var(--accent-encre);
}

/* ---------- association en deux colonnes ---------- */

.deux-col { display: flex; gap: 1.2rem; flex-wrap: wrap; }
.deux-col > div { flex: 1 1 14rem; }

/* ---------- remise en ordre ---------- */

.liste-ordre { margin-bottom: .6rem; }
.item--bloc { display: block; width: 100%; }

/* ---------- saisie ---------- */

.court {
  font: inherit;
  padding: .5rem .6rem;
  border: 1px solid var(--trait-fort);
  border-radius: .4rem;
  width: 11rem;
}

/* ---------- schéma à zones cliquables ---------- */

.schema { margin: .4rem 0 .8rem; }
.schema svg { max-width: 100%; height: auto; }
svg .zone {
  fill: transparent;
  stroke: var(--accent-encre);
  stroke-width: 2;
  cursor: pointer;
}
svg .zone:hover { fill: var(--accent-fond); fill-opacity: .55; }
svg .zone.juste { fill: var(--juste); fill-opacity: .3; stroke: var(--juste); }
svg .zone.faux  { fill: var(--erreur); fill-opacity: .3; stroke: var(--erreur); }
svg text { font-family: inherit; font-size: 13px; fill: var(--encre); pointer-events: none; }

/* ---------- verdict ---------- */

.retour {
  margin-top: .8rem;
  font-size: .93rem;
  padding: .55rem .7rem;
  border-radius: .4rem;
  display: none;
}
.retour--ok { display: block; background: var(--juste-fond); border: 1px solid var(--juste); }
.retour--ko { display: block; background: var(--erreur-fond); border: 1px solid var(--erreur); }

@media print {
  .score, .ex .action, .panier { display: none; }
}
