Files
2CInfo/assets/exercices-commune.css
2026-09-21 10:56:04 +02:00

185 lines
4.5 KiB
CSS

/* ==================================================================
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; }
}