diff --git a/App/teacher.html b/App/teacher.html
index 80b8275..62aae63 100644
--- a/App/teacher.html
+++ b/App/teacher.html
@@ -1225,7 +1225,7 @@ async function _loadCockpitReflections() {
var when = it.recordedAt ? new Date(it.recordedAt).toLocaleString('de-AT', {day:'2-digit',month:'2-digit',hour:'2-digit',minute:'2-digit'}) : '';
html += '
'
+ '
'
- + '
' + esc(it.emoji + ' ' + (it.displayName||'—')) + ''
+ + '' + _avatarHtml(it.avatarSlug, it.emoji, 1.2) + ' ' + esc(it.displayName||'—') + ''
+ ' · ' + esc(it.simId) + ''
+ (it.level ? ' · Stufe ' + esc(it.level) : '') + ''
+ '' + esc(when) + ''
@@ -1366,6 +1366,18 @@ function _liveIsActive(ls) {
// Uhrzeit HH:MM aus ms-Epoch.
function _hhmm(ms){ if(!ms) return '—'; var d=new Date(ms); return ('0'+d.getHours()).slice(-2)+':'+('0'+d.getMinutes()).slice(-2); }
+// Avatar als Bild rendern — egal ob der Slug in avatar_slug ODER als
+// „avatar:" im emoji_avatar-Feld steckt (Daten sind uneinheitlich).
+// Sonst wird sonst der rohe String „avatar:kartografin" als Text angezeigt.
+function _avatarHtml(slug, emoji, sizeEm){
+ sizeEm = sizeEm || 1.4;
+ var st = 'width:'+sizeEm+'em;height:'+sizeEm+'em;border-radius:50%;object-fit:cover;vertical-align:middle';
+ if (slug) return '
';
+ if (typeof emoji === 'string' && emoji.indexOf('avatar:') === 0)
+ return '
';
+ return ''+(emoji||'🧑🎓')+'';
+}
+
// „Heute nicht mehr aktiv" — Schüler:innen, die HEUTE gespielt haben, gerade aber
// offline sind: zuletzt aktiv (Uhrzeit) + letzte Aktivität + deren Leistung.
// Wiederverwendet in „Aktuell" und „Fortschritt". activeSet = {studentId:true}
@@ -2268,9 +2280,7 @@ async function openLiveSessionDetail(sessionKey) {
document.getElementById('sessdet-title').textContent =
(sess.simIcon||'📚') + ' ' + (sess.simTitle||sess.simId) + (sess.lessonLabel?' · '+sess.lessonLabel:'');
var body = document.getElementById('sessdet-body');
- var avatarHtml = sess.studentAvatarSlug
- ? '
'
- : ''+(sess.studentEmoji||'🧑🎓')+'';
+ var avatarHtml = _avatarHtml(sess.studentAvatarSlug, sess.studentEmoji, 2);
var startTime = new Date(sess.startMs).toLocaleString('de-AT',{hour:'2-digit',minute:'2-digit',day:'2-digit',month:'2-digit'});
var endTime = new Date(sess.endMs).toLocaleString('de-AT',{hour:'2-digit',minute:'2-digit'});
var dur = _liveFmtMin(sess.durationSec||0);