/* Testy, zaliczenia, panel oddziału. Mobile-first; zmienne kolorów z app.css. */
.ward-tabs { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1rem; }
.ward-moves { margin-top: 1rem; }
.ward-moves h3 { font-size: var(--fs-md); margin: 0 0 .4rem; }
.set-no { font-variant-numeric: tabular-nums; color: var(--accent); }
.fs { border: 1px solid var(--line); border-radius: var(--radius); padding: .75rem 1rem 1rem; margin: 1rem 0; }
.fs legend { font-weight: 650; padding: 0 .35rem; }
.form .field + .field, .form .form-row + .field, .form .field + .form-row { margin-top: .75rem; }
/* pola obok siebie (Od / Do) — bez odstępu pionowego, inaczej drugie pole „zjeżdża” o .75rem */
.form .form-row > .field + .field, .form .inline-form > .field + .field, .inline-form .field + .field { margin-top: 0; }
.form textarea, .form input:not([type="checkbox"]):not([type="radio"]), .form select { width: 100%; }

/* edytor */
.q-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.q-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: .8rem 1rem;
  box-shadow: var(--shadow-1); position: relative; }
.q-card.has-errors { border-left: 4px solid var(--warn); }
.q-card.is-dragging { opacity: .55; outline: 2px dashed var(--accent); }
.q-card fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.q-head { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-bottom: .5rem; }
.q-handle { cursor: grab; font-size: 1.2rem; color: var(--ink-3); user-select: none; padding: 0 .2rem; }
.q-no { font-size: var(--fs-md); }
.q-kind { width: auto; }
.q-meta { flex: 1 1 12rem; }
.q-move { display: inline-flex; gap: .2rem; }
.q-errors { margin: .25rem 0 .6rem; padding: .4rem .6rem .4rem 1.5rem; background: var(--warn-soft); color: var(--warn);
  border-radius: var(--radius-sm); }
.q-choices { margin-top: .75rem; }
.choice-list { margin: .3rem 0 .5rem; padding-left: 1.4rem; display: grid; gap: .35rem; }
.choice-row { display: flex; align-items: center; gap: .45rem; }
.choice-row input[name="choice_text"] { flex: 1; min-width: 0; }
.choice-row input[type="radio"] { width: 1.15rem; height: 1.15rem; accent-color: var(--ok); flex: none; }
.q-more { margin-top: .75rem; }
.q-more summary { cursor: pointer; color: var(--accent); font-size: var(--fs-sm); font-weight: 600; }
.q-more[open] summary { margin-bottom: .6rem; }
.q-actions { margin-top: .75rem; }
.q-del { position: absolute; right: 1rem; bottom: .8rem; }
details.panel > summary { cursor: pointer; }

/* generator */
.skill-pick { list-style: none; margin: 0; padding: 0; display: grid; gap: .3rem; max-height: 22rem; overflow: auto; }
.skill-pick .field-check { align-items: flex-start; font-weight: 400; }
.gen-status { display: inline-flex; align-items: center; gap: .5rem; color: var(--accent); font-weight: 600; }
.spinner { width: 1.1rem; height: 1.1rem; border: 3px solid var(--accent-soft); border-top-color: var(--accent);
  border-radius: 50%; animation: spin 0.9s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .spinner { animation-duration: 3s; } }

/* rozwiązywanie testu */
.take { max-width: 44rem; margin: 0 auto; }
.take-head { position: sticky; top: 0; z-index: 5; background: var(--paper); padding: .5rem 0 .6rem; }
.take-progress { font-weight: 700; margin: .2rem 0 .4rem; }
.timer { display: flex; align-items: center; gap: .6rem; }
.timer-bar { flex: 1; height: .8rem; background: var(--surface-2); border: 1px solid var(--line); border-radius: 99px;
  overflow: hidden; }
.timer-bar span { display: block; height: 100%; width: 100%; background: var(--accent); transition: width .2s linear; }
.timer-sec { min-width: 3.5rem; text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; font-size: var(--fs-lg); }
.timer.is-warning .timer-bar span { background: var(--danger); }
.timer.is-warning .timer-sec { color: var(--danger); }
.take-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 1rem;
  box-shadow: var(--shadow-1); margin-bottom: 1rem; }
.take-q { font-size: var(--fs-lg); line-height: 1.4; margin: .2rem 0 1rem; white-space: pre-line; }
.take-q:focus { outline: none; }
.take-choices { border: 0; margin: 0 0 1rem; padding: 0; display: grid; gap: .5rem; }
.take-choice { display: flex; gap: .6rem; align-items: flex-start; padding: .8rem .85rem; border: 1px solid var(--line-strong);
  border-radius: var(--radius); cursor: pointer; background: var(--surface); min-height: 44px; }
.take-choice:has(input:checked) { border-color: var(--accent); background: var(--accent-soft); box-shadow: inset 0 0 0 1px var(--accent); }
.take-choice input { margin-top: .2rem; width: 1.2rem; height: 1.2rem; flex: none; accent-color: var(--accent); }
.take-letter { font-weight: 700; color: var(--ink-3); }
.take-next { width: 100%; min-height: 48px; font-size: var(--fs-md); }
#take-text { width: 100%; font-size: var(--fs-md); }
@media (min-width: 900px) { .take-next { width: auto; } }

/* listy wyników */
.exam-row-head { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: space-between; align-items: center; }
.attempt-list { margin: .6rem 0 0; padding-left: 1.1rem; }
.review-list { padding-left: 0; list-style: none; display: grid; gap: .75rem; }
.review-item { border: 1px solid var(--line); border-radius: var(--radius); padding: .75rem .9rem; }
.review-item.is-ok { border-left: 4px solid var(--ok); }
.review-item.is-bad { border-left: 4px solid var(--danger); }
.is-correct { color: var(--ok); font-weight: 600; }
.is-chosen { text-decoration: underline; text-underline-offset: 3px; }
.open-answer { background: var(--surface-2); border-radius: var(--radius-sm); padding: .6rem .75rem; white-space: normal; }
.grade-cols { display: grid; gap: 1rem; }
@media (min-width: 800px) { .grade-cols { grid-template-columns: 1fr 1fr; } }
.grade-cols h3 { font-size: var(--fs-sm); margin: .5rem 0 .3rem; }
.grade-form { margin-top: .75rem; align-items: flex-end; }
.att-chip { display: inline-block; padding: .1rem .45rem; border: 1px solid var(--line); border-radius: 99px; font-size: var(--fs-sm);
  margin: .1rem 0; }
.result-box .big-num { margin: 0; }
.q-text { white-space: normal; }

/* druk zestawu */
.print-qs { padding-left: 1.3rem; display: grid; gap: .9rem; }
.print-q { break-inside: avoid; }
.print-choices { margin: .3rem 0; }
.answer-lines { height: 6rem; border-bottom: 1px solid var(--line); background: repeating-linear-gradient(transparent 0 1.45rem, var(--line) 1.45rem 1.5rem); }
@media print {
  .take-card { box-shadow: none; }
  .q-card { break-inside: avoid; }
}
.form .form-row { align-items: start; }
.take [hidden], .q-list [hidden], #gen-form [hidden] { display: none !important; }
.skill-pick input[type=checkbox] { flex: none; margin-top: .15rem; }

/* generowanie w tle */
.job-head { display: flex; align-items: center; gap: .6rem; margin-top: 0; }
.job-panel progress { width: 100%; height: 12px; accent-color: var(--accent); }
.job-state { display: inline-block; padding: .1rem .55rem; border-radius: 999px; font-size: var(--fs-sm); font-weight: 600; background: var(--surface-2); color: var(--ink-2); }
.job-running, .job-pending { background: var(--info-soft); color: var(--ink); }
.job-done { background: var(--ok-soft); color: var(--ok); }
.job-error { background: var(--danger-soft); color: var(--danger); }
