/* Motor de ejercicios */
.exercise { display: grid; gap: var(--sp-4); animation: ex-in var(--dur-3) var(--ease); }
@keyframes ex-in { from { opacity: 0; transform: translateX(24px); } }
.ex-head { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.ex-prompt { font-size: var(--fs-xl); margin: 0; outline: none; }
.ex-term { font: 700 clamp(1.6rem, 5vw, 2.4rem)/1.2 var(--font-display); margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-3); }
.ex-sentence { font-size: var(--fs-lg); margin: 0; padding: var(--sp-4); border-radius: var(--radius); background: var(--surface); border: 1px solid var(--border); }
.error-line { text-decoration: underline wavy rgba(251, 113, 133, 0.7); text-underline-offset: 6px; }
.blank { display: inline-block; min-width: 4ch; border-bottom: 2px dashed var(--sky); color: transparent; }
.ex-listen { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
.ex-image { margin: 0; display: grid; place-items: center; font-size: clamp(3rem, 12vw, 5rem); padding: var(--sp-4); border-radius: var(--radius); background: var(--surface); }
.transcript summary, .type-instead summary { cursor: pointer; color: var(--sky-soft); font-size: var(--fs-sm); }
.transcript p { margin: var(--sp-2) 0 0; font-style: italic; }

.options { display: grid; gap: var(--sp-3); grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.option { display: flex; gap: var(--sp-3); align-items: center; text-align: left; min-height: 56px; padding: var(--sp-3) var(--sp-4); border-radius: var(--radius); cursor: pointer;
  background: var(--surface); border: 1.5px solid var(--border-strong); color: var(--text); font-weight: 600; transition: transform var(--dur-1), border-color var(--dur-1), background var(--dur-1); }
.option:hover:not(:disabled) { border-color: var(--sky); transform: translateY(-1px); }
.option[aria-checked='true'] { border-color: var(--sky); background: rgba(56, 189, 248, 0.14); box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.2); }
.option kbd { flex: none; width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center; font: 600 12px/1 var(--font-body); border: 1px solid var(--border-strong); color: var(--text-3); }
.option-emoji span { font-size: 2.2rem; }
.option.is-correct { border-color: var(--green); background: rgba(52, 211, 153, 0.14); }
.option.is-wrong { border-color: var(--danger); background: rgba(251, 113, 133, 0.12); animation: shake 300ms; }
@keyframes shake { 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } }

.order-answer { min-height: 64px; display: flex; flex-wrap: wrap; gap: var(--sp-2); align-items: center; padding: var(--sp-3); border-radius: var(--radius); border: 1.5px dashed var(--border-strong); background: rgba(5, 8, 20, 0.4); }
.order-bank { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.chip { min-height: 44px; padding: 0 var(--sp-4); border-radius: 12px; border: 1px solid var(--border-strong); background: var(--surface-2); color: var(--text); font-weight: 600; cursor: pointer; box-shadow: 0 3px 0 rgba(0, 0, 0, 0.35); transition: transform var(--dur-1); }
.chip:hover:not(:disabled) { transform: translateY(-2px); border-color: var(--sky); }
.chip:disabled { opacity: 0.25; box-shadow: none; cursor: default; }
.chip.placed { background: rgba(59, 130, 246, 0.25); }

.speak-zone { display: grid; justify-items: start; gap: var(--sp-2); }
.mic-btn { border-color: var(--sky); }
.criteria { margin: 0; padding-left: 1.2em; color: var(--text-2); font-size: var(--fs-sm); }
.dialogue { display: grid; gap: var(--sp-2); }
.bubble { margin: 0; padding: 10px 14px; border-radius: 14px; background: var(--surface-2); max-width: 90%; justify-self: start; display: flex; flex-wrap: wrap; gap: var(--sp-2); align-items: center; }
.bubble.right { justify-self: end; background: rgba(59, 130, 246, 0.2); }

.ex-actions { display: flex; justify-content: space-between; align-items: center; gap: var(--sp-3); flex-wrap: wrap; }
.ex-actions .ex-check { margin-left: auto; min-width: 200px; }
.fb { padding: var(--sp-4); border-radius: var(--radius); border: 1px solid; animation: toast-in var(--dur-2) var(--ease); }
.fb p:last-child { margin-bottom: 0; }
.fb-title { font: 700 var(--fs-lg)/1.3 var(--font-display); display: flex; gap: var(--sp-2); align-items: center; flex-wrap: wrap; }
.fb-ok { border-color: rgba(52, 211, 153, 0.5); background: rgba(52, 211, 153, 0.08); }
.fb-minor { border-color: rgba(56, 189, 248, 0.5); background: rgba(56, 189, 248, 0.08); }
.fb-bad { border-color: rgba(251, 191, 36, 0.5); background: rgba(251, 191, 36, 0.07); }
.fb-skip { border-color: var(--border-strong); background: var(--surface); }
.fb-error { border-color: rgba(251, 113, 133, 0.5); background: rgba(251, 113, 133, 0.08); }
.fb-expl { color: var(--text-2); font-size: var(--fs-sm); }
.checks { list-style: none; padding: 0; margin: 0 0 var(--sp-3); display: grid; gap: 4px; font-size: var(--fs-sm); }
.checks .ok { color: var(--green); }
.checks .no { color: var(--text-3); }
.xp-gain { animation: pop 600ms var(--ease); }
@keyframes pop { 0% { transform: scale(0.4); opacity: 0; } 60% { transform: scale(1.15); } }
@media (max-width: 560px) { .ex-actions .ex-check { width: 100%; } .ex-actions { flex-direction: column-reverse; align-items: stretch; } }
