/* FTEJerez student — exam-specific styles */
/* ---- v5.1 additions ---- */
  .examcard{border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:14px;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;align-items:center}
.examcard h3{margin:0 0 4px}
.examcard .meta{font-size:13px;color:var(--muted)}
.examcard .state{font-size:12.5px;font-weight:700;padding:3px 10px;border-radius:14px;white-space:nowrap}
.state.open{background:var(--ok-tint);color:var(--ok)}
.state.soon{background:var(--blue-tint);color:var(--ref)}
.state.closed{background:var(--navy-tint);color:var(--muted)}
.state.done{background:var(--navy-tint);color:var(--navy)}
.instructions{background:var(--navy-tint);border-radius:10px;padding:16px 18px;white-space:pre-wrap;line-height:1.6;margin:14px 0}
.examwarn{background:#fff7e6;border:1px solid #ffe1a8;color:#7a5400;border-radius:8px;padding:11px 14px;margin:12px 0;font-size:14px}
/* ---- anti-leak watermark (online exam + review only) ---- */
  /* A faint, repeating, non-interactive identity+timestamp layer over the exam
     and results views. It cannot prevent screen recording (no web API can), but
     it makes any recording or screenshot self-identifying and attributable. */
  .wm-layer{position:fixed; inset:0; z-index:45; pointer-events:none; background-repeat:repeat; background-position:0 0}

/* v5.10.1: session-expired modal — above every layer incl. the pause overlay (z-index 60) */
.session-modal{position:fixed; inset:0; background:rgba(15,20,36,.62); z-index:600; display:flex; align-items:center; justify-content:center; padding:24px}
#sessionModal.hidden{display:none}
.session-modal-card{background:#fff; border-radius:12px; max-width:440px; width:100%; padding:24px 26px; box-shadow:0 12px 44px rgba(15,20,36,.4)}
.session-modal-card h2{margin:0 0 8px; color:var(--navy)}

/* v5.10.3+ (Stage 3): inline stacked fraction — numerator over a rule over denominator (authored via the editor fraction button) */
.frac{ display:inline-flex; flex-direction:column; vertical-align:middle; text-align:center; margin:0 .15em; line-height:1.08; }
.frac>.num{ padding:0 .3em; }
.frac>.den{ padding:0 .3em; border-top:1px solid currentColor; }

/* v5.10.4: nested practice picker — chapter (L2) -> section (L3) */
.topic-group{ border-bottom:1px solid var(--line); padding:5px 0; }
.topic-group:last-child{ border-bottom:0; }
.topic-chap{ display:block; font-weight:600; font-size:13.5px; }
.topic-chap input,.topic-sec input{ width:auto; margin-right:7px; vertical-align:-1px; }
.topic-secs{ margin:3px 0 5px 22px; display:flex; flex-direction:column; gap:3px; }
.topic-sec{ font-weight:500; font-size:12.5px; color:var(--ink); }

/* v5.10.5: stronger "do not navigate away" warning on the assigned-exam briefing */
.examwarn.stop{background:#fbeae8;border-color:#f2c4be;color:#b3261e}
.examwarn.stop b{color:inherit}

/* v5.11: robust question-image loading / failure states */
.qimg-wrap{position:relative}
.qimg-wrap .qimg{max-width:100%;border-radius:8px;border:1px solid var(--line);cursor:zoom-in;display:block}
.qimg-spin{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:13.5px;padding:14px 4px}
.qimg-dot{width:15px;height:15px;border-radius:50%;border:2.5px solid var(--line);border-top-color:var(--blue);display:inline-block;animation:qimgspin .8s linear infinite}
@keyframes qimgspin{to{transform:rotate(360deg)}}
.qimg-fail{border:1px solid #f0d089;background:#fff8ec;border-radius:9px;padding:13px 15px;color:#7a5400}
.qimg-fail-msg{font-size:14px;font-weight:600;margin-bottom:10px}
.qimg-fail-actions{display:flex;gap:9px;flex-wrap:wrap}
.qimg-btn{font-size:13.5px;font-weight:700;padding:7px 13px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--navy);cursor:pointer}
.qimg-btn:hover{background:var(--navy-tint)}
.qimg-btn.flag{border-color:var(--blue);color:var(--blue)}
.qimg-btn.flag.done{background:var(--blue);color:#fff;border-color:var(--blue);cursor:default}
