diff --git a/App/assets/js/sim-metrics.js b/App/assets/js/sim-metrics.js
index e72bcb6..71610c5 100644
--- a/App/assets/js/sim-metrics.js
+++ b/App/assets/js/sim-metrics.js
@@ -118,14 +118,20 @@
}
function num(v, u){ return ''+(typeof v==='number'?v.toLocaleString('de-AT'):esc(v))+(u?' '+u+'':'')+''; }
+ function starsBlock(n, small){
+ n = Math.max(0, Math.min(5, Math.round(n)));
+ var c = ampPct(n/5*100);
+ var cls = 'ivm-stars'+(small?' sm':'')+' '+c;
+ return ''+'★'.repeat(n)+''+'★'.repeat(5-n)+''+bar(n/5*100, c);
+ }
function renderVal(f, v, src){
switch (f.type) {
- case 'stars': return stars(v);
- case 'starsSmall': return ''+'★'.repeat(Math.max(0,Math.min(5,Math.round(v))))+''+'★'.repeat(5-Math.max(0,Math.min(5,Math.round(v))))+'';
- case 'pct': return ''+Math.round(v)+'%'+bar(v, ampPct(v));
- case 'pctInv': return ''+Math.round(v)+'%'+bar(v, ampPct(100-v));
+ case 'stars': return starsBlock(v, false);
+ case 'starsSmall': return starsBlock(v, true);
+ case 'pct': return ''+Math.round(v)+'%'+bar(v, ampPct(v));
+ case 'pctInv': return ''+Math.round(v)+'%'+bar(v, ampPct(100-v));
case 'ratio': { var tot=src[f.t]; if(tot==null) return num(v); var pct=tot>0?(v/tot*100):0;
- return ''+v+'/ '+tot+''+bar(pct, ampPct(pct)); }
+ return ''+v+'/ '+tot+''+bar(pct, ampPct(pct)); }
case 'money': return money(v);
case 'temp': { var t=Math.round(v*10)/10, c=t<=2?'ivm-g':t<=3?'ivm-y':'ivm-r';
return ''+t.toLocaleString('de-AT')+' °C'; }
diff --git a/App/teacher.html b/App/teacher.html
index 6486ee7..3bc6f72 100644
--- a/App/teacher.html
+++ b/App/teacher.html
@@ -2131,14 +2131,14 @@ var IV_CSS = ''
+ '.iv-lgrow{display:flex;align-items:center;gap:8px;margin-top:5px}'
+ '.iv-lgbar{width:56px;height:8px;border-radius:4px;background:linear-gradient(90deg,var(--ivr),var(--ivy),var(--ivg))}'
+ '.iv-lgv{display:inline-flex;align-items:flex-end;gap:2px;height:14px}.iv-lgv i{width:4px;border-radius:1px}'
-+ '.iv-ov{position:fixed;inset:0;background:rgba(20,26,23,.5);display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;z-index:9999;overflow:auto}'
-+ '.iv-modal{background:#fff;border-radius:14px;max-width:640px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.3);padding:18px 20px 20px}'
++ '.iv-ov{position:fixed;inset:0;background:rgba(20,26,23,.5);display:flex;align-items:flex-start;justify-content:center;padding:4vh 20px;z-index:9999;overflow:auto}'
++ '.iv-modal{background:#fff;border-radius:14px;max-width:1120px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.3);padding:18px 24px 22px}'
+ '.iv-mh{display:flex;align-items:center;gap:10px;margin-bottom:12px}.iv-mh .em{font-size:1.6rem}.iv-mh h3{margin:0;font-size:1.1rem;font-weight:750;flex:1}.iv-mh .x{cursor:pointer;border:0;background:none;font-size:1.5rem;color:#8a8a8a;line-height:1}'
+ '.iv-sum{display:flex;gap:20px;flex-wrap:wrap;background:var(--ivsoft);border-radius:10px;padding:10px 14px;margin-bottom:14px;font-size:.8rem}.iv-sum b{font-size:1.05rem;margin-left:4px}'
+ '.iv-live{background:color-mix(in srgb,var(--ivg) 12%,transparent);border:1px solid color-mix(in srgb,var(--ivg) 30%,var(--ivline));border-radius:10px;padding:10px 14px;margin-bottom:14px;font-size:.82rem}'
+ '.iv-run{border:1px solid var(--ivline);border-radius:10px;padding:9px 12px;margin-bottom:8px}'
+ '.iv-run .rh{display:flex;align-items:center;gap:8px;font-size:.84rem;font-weight:700;margin-bottom:6px}.iv-run .rh .sc{font-weight:800}.iv-run .rh .d{margin-left:auto;font-size:.68rem;color:var(--ivmut);font-weight:400}'
-+ '.ivm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:7px}'
++ '.ivm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:7px}'
+ '.ivm{background:var(--ivsoft);border-radius:8px;padding:6px 9px;min-width:0}'
+ '.ivm-l{display:block;font-size:.58rem;color:var(--ivmut);text-transform:uppercase;letter-spacing:.03em;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}'
+ '.ivm-v{font-size:.92rem;font-weight:750}.ivm-u{font-size:.66rem;font-weight:600;color:var(--ivmut)}.ivm-txt{font-size:.8rem;font-weight:700}'