/* Testaa tietosi -visa. Merkkaus: convert.py convert_quizzes, napit:
 * assets/js/visa.js. Ilman skriptiä (ja tulostussivulla) kysymys on tekstiä,
 * vaihtoehdot lista ja perustelu tavallinen <details>. */

/* Oikean ja väärän väri tekstin kontrastilla; teemalla ei ole näille tokenia.
 * Rasti on Lucide x, teeman check-kuvakkeen (--md-admonition-icon--success) pari. */
:root {
  --jyu-visa-ok: #2e7d32;
  --jyu-visa-wrong: #c62828;
  --jyu-visa-icon-wrong: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24"><path d="M18 6 6 18M6 6l12 12"/></svg>');
}

[data-md-color-scheme="slate"] {
  --jyu-visa-ok: #7ed492;
  --jyu-visa-wrong: #ff8a80;
}

/* ---------------------------------------------------------------- kysymys */

.md-typeset .jyu-visa {
  counter-reset: jyu-visa-q;
}

.md-typeset .jyu-visa-q {
  counter-increment: jyu-visa-q;
  margin: 1.4em 0 1.8em;
}

/* Numero laskurista: kysymyksiä voi lisätä ja siirtää numeroimatta uudelleen. */
.md-typeset .jyu-visa-q > :first-child::before {
  content: counter(jyu-visa-q) ". ";
  font-weight: 700;
}

/* ------------------------------------------------------------ vaihtoehdot */

/* Kevyt ilme kuten teeman tehtävälistassa: pelkkä pallukka, ei laatikkoa. */

.md-typeset .jyu-visa-vaihtoehdot {
  list-style-type: lower-alpha;
}

[dir=ltr] .md-typeset .jyu-visa-tt,
[dir=ltr] .md-typeset .jyu-visa-js .jyu-visa-vaihtoehdot {
  display: flex;
  flex-wrap: wrap;
  gap: .1em;
  margin-left: 0;
  list-style: none;
}

[dir=ltr] .md-typeset .jyu-visa-tt > li,
[dir=ltr] .md-typeset .jyu-visa-js .jyu-visa-vaihtoehdot > li {
  margin: 0;
}

.md-typeset .jyu-visa-tt {
  gap: 1.2em;
}

/* Rivin pohja alkaa palstan reunasta kuten perustelulaatikko; pallukka jää
 * sen sisään sisennetyksi. */
[dir=ltr] .md-typeset .jyu-visa-js .jyu-visa-vaihtoehdot {
  flex-direction: column;
  counter-reset: jyu-visa-option;
}

[dir=ltr] .md-typeset .jyu-visa-js .jyu-visa-tt {
  flex-direction: row;
  gap: .4em;
}

.md-typeset .jyu-visa-js .jyu-visa-vaihtoehdot > li {
  counter-increment: jyu-visa-option;
}

.md-typeset .jyu-visa-nappi {
  display: flex;
  gap: .6em;
  align-items: flex-start;
  width: 100%;
  padding: .3em .6em;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
  background: transparent;
  border: 0;
  border-radius: .2rem;
  transition: background-color 125ms;
}

.md-typeset .jyu-visa-tt .jyu-visa-nappi {
  padding-right: .9em;
}

/* Pallukka. Kirjain laskurista, joten se ei tule kopioiduksi vaihtoehdon
 * mukana; totta/tarua-pallukka on tyhjä. margin-top keskittää ensimmäiselle
 * riville (rivikorkeus 1.6). */
.md-typeset .jyu-visa-nappi::before {
  box-sizing: border-box;
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 1.5em;
  height: 1.5em;
  margin-top: .25em;
  font-family: var(--md-text-font-family);
  font-size: .8em;
  font-weight: 600;
  line-height: 1;
  color: var(--md-default-fg-color--light);
  content: counter(jyu-visa-option, lower-alpha);
  border: .08rem solid currentcolor;
  border-radius: 50%;
  transition: color 125ms, background-color 125ms;
}

.md-typeset .jyu-visa-tt .jyu-visa-nappi::before {
  content: "";
}

.md-typeset .jyu-visa-q:not([data-vastattu]) .jyu-visa-nappi:hover {
  background-color: color-mix(in srgb, var(--md-accent-fg-color) 12%, transparent);
}

.md-typeset .jyu-visa-q:not([data-vastattu]) .jyu-visa-nappi:active {
  background-color: color-mix(in srgb, var(--md-accent-fg-color) 20%, transparent);
}

.md-typeset .jyu-visa-q:not([data-vastattu]) .jyu-visa-nappi:hover::before {
  color: var(--md-accent-fg-color);
  background-color: color-mix(in srgb, var(--md-accent-fg-color) 20%, transparent);
}

/* Tumma tausta imee värin, joten sama erottuvuus vaatii vahvemman sävyn. */
[data-md-color-scheme="slate"] .md-typeset .jyu-visa-q:not([data-vastattu]) .jyu-visa-nappi:hover {
  background-color: color-mix(in srgb, var(--md-accent-fg-color) 24%, transparent);
}

[data-md-color-scheme="slate"] .md-typeset .jyu-visa-q:not([data-vastattu]) .jyu-visa-nappi:active {
  background-color: color-mix(in srgb, var(--md-accent-fg-color) 34%, transparent);
}

[data-md-color-scheme="slate"] .md-typeset .jyu-visa-q:not([data-vastattu]) .jyu-visa-nappi:hover::before {
  color: var(--md-default-fg-color);
  background-color: color-mix(in srgb, var(--md-accent-fg-color) 45%, transparent);
}

.md-typeset .jyu-visa-nappi:focus-visible {
  outline: .1rem solid var(--md-accent-fg-color);
  outline-offset: -.1rem;
}

/* ---------------------------------------------------------------- vastattu */

/* Oma valinta on täytetty pallukka, oikea vihreä ja väärä punainen; merkki
 * tekstin perässä kertoo saman ilman väriä. */

.md-typeset .jyu-visa-q[data-vastattu] .jyu-visa-nappi {
  cursor: default;
}

.md-typeset .jyu-visa-q[data-vastattu] li:not(.jyu-visa-valittu, .jyu-visa-oikea) .jyu-visa-nappi {
  opacity: .55;
}

.md-typeset .jyu-visa-oikea .jyu-visa-nappi::before {
  color: var(--jyu-visa-ok);
}

.md-typeset .jyu-visa-valittu .jyu-visa-nappi {
  background-color: color-mix(in srgb, var(--jyu-visa-wrong) 8%, transparent);
}

.md-typeset .jyu-visa-valittu .jyu-visa-nappi::before {
  color: var(--md-default-bg-color);
  background-color: var(--jyu-visa-wrong);
  border-color: var(--jyu-visa-wrong);
}

.md-typeset .jyu-visa-valittu.jyu-visa-oikea .jyu-visa-nappi {
  background-color: color-mix(in srgb, var(--jyu-visa-ok) 10%, transparent);
}

.md-typeset .jyu-visa-valittu.jyu-visa-oikea .jyu-visa-nappi::before {
  background-color: var(--jyu-visa-ok);
  border-color: var(--jyu-visa-ok);
}

.md-typeset .jyu-visa-oikea .jyu-visa-nappi::after,
.md-typeset .jyu-visa-valittu .jyu-visa-nappi::after {
  flex: none;
  width: 1.1em;
  height: 1.1em;
  margin-top: .25em;
  content: "";
  background-color: var(--jyu-visa-ok);
  -webkit-mask: var(--md-admonition-icon--success) center / contain no-repeat;
  mask: var(--md-admonition-icon--success) center / contain no-repeat;
}

.md-typeset .jyu-visa-valittu:not(.jyu-visa-oikea) .jyu-visa-nappi::after {
  background-color: var(--jyu-visa-wrong);
  -webkit-mask-image: var(--jyu-visa-icon-wrong);
  mask-image: var(--jyu-visa-icon-wrong);
}

/* --------------------------------------------------------------- perustelu */

/* Napit korvaavat avaamisen: perustelu näkyy vasta vastauksen jälkeen. */
.md-typeset .jyu-visa-js .jyu-visa-q:not([data-vastattu]) > details {
  display: none;
}

/* Tulos laatikon väriin ja kuvakkeeseen (admonitions.css: --adm). Tarkkuus
 * voittaa luokattoman <details>-lohkon neutraalit säännöt. */
.md-typeset .jyu-visa-q > details[data-tulos="oikein"] {
  --adm: var(--jyu-visa-ok);
}

.md-typeset .jyu-visa-q > details[data-tulos="vaarin"] {
  --adm: var(--jyu-visa-wrong);
}

.md-typeset .jyu-visa-q > details[data-tulos] {
  border-color: var(--adm);
}

[dir=ltr] .md-typeset .jyu-visa-q > details[data-tulos] > summary,
[dir=ltr] .md-typeset .jyu-visa-q > details[data-tulos] > summary:hover {
  background-color: color-mix(in srgb, var(--adm) 10%, transparent);
}

[dir=ltr] .md-typeset .jyu-visa-q > details[data-tulos] > summary:before {
  background-color: var(--adm);
  -webkit-mask-image: var(--md-admonition-icon--success);
  mask-image: var(--md-admonition-icon--success);
  transform: none;
}

[dir=ltr] .md-typeset .jyu-visa-q > details[data-tulos="vaarin"] > summary:before {
  -webkit-mask-image: var(--jyu-visa-icon-wrong);
  mask-image: var(--jyu-visa-icon-wrong);
}

/* ----------------------------------------------------------------- nollaus */

.md-typeset .jyu-visa-nollaus {
  margin: 0;
  font-family: var(--md-text-font-family);
  font-size: .9em;
}

.md-typeset .jyu-visa-nollaus button {
  padding: 0;
  font: inherit;
  color: var(--md-default-fg-color--light);
  text-decoration: underline;
  text-underline-offset: .2em;
  cursor: pointer;
  background: none;
  border: 0;
}

.md-typeset .jyu-visa-nollaus button:hover {
  color: var(--md-accent-fg-color);
}

@media (prefers-reduced-motion: reduce) {
  .md-typeset .jyu-visa-nappi,
  .md-typeset .jyu-visa-nappi::before {
    transition: none;
  }
}
