diff --git a/mo/web/templates/parts/org_solution_table.html b/mo/web/templates/parts/org_solution_table.html
index 956981fc0813e3ff4f17b8edd7d266f9b24a04a0..c8cf78675ee0fb68171c67746e63e1a6da48cb2f 100644
--- a/mo/web/templates/parts/org_solution_table.html
+++ b/mo/web/templates/parts/org_solution_table.html
@@ -2,27 +2,27 @@
 {% set edit_create = rights.can_create_solutions() %}
 {% set edit_both = edit_points and edit_create %}
 
-<p><i>
+<p>
 {% if edit_form %}
 {% if edit_points %}
-Změňte body ve sloupečku "Přidělené body". Prázdná hodnota znamená "nebodováno".
+Změňte body ve sloupečku "Body". Prázdná hodnota znamená "nebodováno".
 {% endif %}
 {% if edit_create %}
 Zaškrtnutím políček u řešení, která dosud neexistují, tato řešení založíte.
 To se hodí, pokud se nechystáte do systému nahrávat soubory řešení, ale jen chcete řešení vytvořit, aby jim
 bylo možné vyplnit body. Pokud nějaké řešení založíte omylem, lze toto prázdné řešení smazat v jeho detailu.
 {% endif %}
-</i></p>
-<p><i>
+</p>
+<p>
 Změny uložíte tlačítkem na spodku tabulky.
 {% else %}
 Historii všech odevzdání, oprav a bodů pro každé řešení naleznete v jeho detailu.
 {% if rights.can_upload_feedback() or rights.can_edit_points() %}Tamtéž můžete odevzdávat nové verze a změnit, které řešení/oprava je
 finální (ve výchozím stavu poslední nahrané).{% elif rights.can_upload_solutions() %}Tamtéž můžete odevzdat nové řešení.{% endif %}
 {% endif %}
-</i></p>
+</p>
 
-<div class="table-responsive">
+<div class="table-responsive" style="clear: right">
 <table class="table table-bordered table-hover table-condensed">
 	<thead>
 		<tr>
@@ -33,8 +33,9 @@ finální (ve výchozím stavu poslední nahrané).{% elif rights.can_upload_sol
 			{% endif %}
 			<th>Finální řešení
 			<th>Finální oprava
-			<th>Poznámky
-			<th>Přidělené body
+			<th>Poznámka pro účastníka
+			<th>Interní poznámka
+			<th style="min-width: 10rem">Body
 				{% if not for_user and edit_points and not edit_form %}
 				<a class="btn btn-xs btn-default" title="Editovat body" href="{{ ctx.url_for('org_contest_task_edit') }}"><span class="glyphicon glyphicon-pencil"></span></a>
 				{% endif %}
@@ -67,41 +68,48 @@ finální (ve výchozím stavu poslední nahrané).{% elif rights.can_upload_sol
 		<td>{% if sol.final_submit_obj %}
 			{% set p = sol.final_submit_obj %}
 			{% set late = p.check_deadline(round, contest) %}
-			{% if late %}<span class='text-danger icon' title="{{ late }}">⚠</span>{% endif %}
-			<a href='{{ paper_link(u, p) }}'>
-				{{- p.uploaded_at|timeformat }}
-				{% if p.is_broken() %}
-					(nekorektní PDF)
-				{% elif p.pages != None %}
-					({{ p.pages|inflected('strana', 'strany', 'stran') }})
+			{% set key = (obj.task_id if for_user else obj.user_id, "solution") %}
+			<a class="btn btn-xs btn-{% if late %}danger{% elif p.is_broken() %}warning{% else %}success{% endif %}"
+			   title="Řešení nahráno {{ late|none_value('') }} {{ p.uploaded_at|timeformat }} – {% if p.is_broken() %}nekorektní PDF{% elif p.pages != None %}{{ p.pages|inflected('strana', 'strany', 'stran') }}{% endif %}{% if key in paper_counts and paper_counts[key] > 1 %} – {{ paper_counts[key]|inflected('verze', 'verze', 'verzí') }}{% endif %}"
+			   href="{{ paper_link(u, p) }}">
+				{% if key in paper_counts and paper_counts[key] > 1 %}
+				<span class="glyphicon glyphicon-duplicate"></span>
+				{% else %}
+				<span class="glyphicon glyphicon-file"></span>
 				{% endif %}
+				{{ p.uploaded_by_obj.full_name() }}
 			</a>
-			{% if p.uploaded_by_obj != u %}
-				<a href="{{ url_for('org_user', id=p.uploaded_by) }}" title="nahrál {{ p.uploaded_by_obj.full_name() }}" class="icon">🛈</a>
-			{% endif %}
-			{% set key = (obj.task_id if for_user else obj.user_id, "solution") %}
-			{% if key in paper_counts and paper_counts[key] > 1 %}
-				<span title="Celkem {{ paper_counts[key]|inflected('verze', 'verze', 'verzí') }}" class="icon">🗐</span>
 			{% endif %}
-		    {% else %}–{% endif %}
 		<td>{% if sol.final_feedback_obj %}
 			{% set p = sol.final_feedback_obj %}
-			<a title="nahrál {{ p.uploaded_by_obj.full_name() }}" href='{{ paper_link(u, p) }}'>
-				{{ (p.uploaded_at if p else None)|timeformat }}
-				{% if p.is_broken() %}
-					(nekorektní PDF)
-				{% elif p.pages != None %}
-					({{ p.pages|inflected('strana', 'strany', 'stran') }})
+			{% set key = (obj.task_id if for_user else obj.user_id, "feedback") %}
+			<a class="btn btn-xs btn-info"
+			   title="Oprava nahrána {{ p.uploaded_at|timeformat }} – {% if p.is_broken() %}nekorektní PDF{% elif p.pages != None %}{{ p.pages|inflected('strana', 'strany', 'stran') }}{% endif %}{% if key in paper_counts and paper_counts[key] > 1 %} – {{ paper_counts[key]|inflected('verze', 'verze', 'verzí') }}{% endif %}"
+			   href="{{ paper_link(u, p) }}">
+				{% if key in paper_counts and paper_counts[key] > 1 %}
+				<span class="glyphicon glyphicon-duplicate"></span>
+				{% else %}
+				<span class="glyphicon glyphicon-file"></span>
 				{% endif %}
+				{{ p.uploaded_by_obj.full_name() }}
 			</a>
-			{% set key = (obj.task_id if for_user else obj.user_id, "feedback") %}
-			{% if key in paper_counts and paper_counts[key] > 1 %}
-				<span title="Celkem {{ paper_counts[key]|inflected('verze', 'verze', 'verzí') }}" class="icon">🗐</span>
 			{% endif %}
-		    {% else %}–{% endif %}
-		<td style="text-align: center;">
-			{% if sol.note %}<span class="glyphicon glyphicon-comment" title="Poznámka pro řešitele: {{ sol.note }}"></span>{% endif %}
-			{% if sol.org_note %} <span class="glyphicon glyphicon-comment" title="Interní poznámka: {{ sol.org_note }}"></span>{% endif %}
+		<td class="comment">
+			{% if sol.note %}
+				{% set lines = sol.note.strip().partition('\n') %}
+				{% if lines[2] != '' %}
+				<button class="btn btn-xs btn-default pull-right" data-container="body" data-toggle="popover" data-placement="left" data-trigger="hover focus" data-content="{{ sol.note }}"><span class="glyphicon glyphicon-option-horizontal"></span></button>
+				{% endif %}
+				<span title="{{ lines[0] }}">{{ lines[0] }}</span>
+			{% endif %}
+		<td class="comment">
+			{% if sol.org_note %}
+				{% set lines = sol.org_note.strip().partition('\n') %}
+				{% if lines[2] != '' %}
+				<button class="btn btn-xs btn-default pull-right" data-container="body" data-toggle="popover" data-placement="left" data-trigger="hover focus" data-content="{{ sol.org_note }}"><span class="glyphicon glyphicon-option-horizontal"></span></button>
+				{% endif %}
+				<span title="{{ lines[0] }}">{{ lines[0] }}</span>
+			{% endif %}
 		<td>
 			{% if edit_points and edit_form %}
 				<input
@@ -117,7 +125,7 @@ finální (ve výchozím stavu poslední nahrané).{% elif rights.can_upload_sol
 				{{ sol.points|decimal|none_value(Markup('<span class="unknown">?</span>')) }}
 			{% endif %}
 		{% elif edit_create and edit_form %}
-		<td colspan="{{ 3 if edit_points else 4 }}" class="text-center">
+		<td colspan="{{ 4 if edit_points else 5 }}" class="text-center">
 			<input
 				type="checkbox" name="create_sol_{{u.user_id}}" id="create_sol_{{u.user_id}}"
 				onchange="document.getElementById('points_{{u.user_id}}').disabled = !this.checked"
@@ -138,17 +146,20 @@ finální (ve výchozím stavu poslední nahrané).{% elif rights.can_upload_sol
 				{% set tabindex.value = tabindex.value + 1%}
 			{% endif %}
 		{% else %}
-		<td colspan="4" class="text-center">–
+		<td colspan="5" class="text-center">
 		{% endif %}
 		<td><div class="btn-group">
-				<a class="btn btn-xs btn-primary" href="{{ ctx.url_for('org_submit_list', user_id=u.user_id, task_id=task.task_id, site_id=ctx.site_id) }}">Detail</a>
+				<a class="btn btn-xs btn-primary" href="{{ ctx.url_for('org_submit_list', user_id=u.user_id, task_id=task.task_id, site_id=ctx.site_id) }}">
+					<span class="glyphicon glyphicon-search"></span>
+					Detail
+				</a>
 		</div>
 	</tr>
 {% endfor %}
 {% if edit_form %}
 <tfoot>
 	<tr><td><td><td>
-		<td colspan="3" class="text-center">
+		<td colspan="4" class="text-center">
 			<a class="btn btn-sm btn-default" href="#" onclick="checkAllAbove(event)">
 				<span class="glyphicon glyphicon-arrow-up"></span>
 				Zaškrtnout vše
@@ -161,12 +172,6 @@ finální (ve výchozím stavu poslední nahrané).{% elif rights.can_upload_sol
 </table>
 </div>
 
-{% if not edit_form %}
-<p><i>Legenda: <span class='text-danger icon'>⚠</span> odevzdané po termínu,
-	<span class="icon">🛈</span> nahráno někým jiným, než řešitelem, <span class="icon">🗐</span> existuje více verzí. Symboly po najetí myší zobrazí bližší informace.
-</i></p>
-{% endif %}
-
 <script type="text/javascript">
 	window.addEventListener("load", function() {
 		for (const ch of document.querySelectorAll("input[type=checkbox")) {
@@ -175,6 +180,8 @@ finální (ve výchozím stavu poslední nahrané).{% elif rights.can_upload_sol
 		for (const i of document.querySelectorAll("input[type=number]")) {
 			i.oninput();
 		}
+
+		$('[data-toggle="popover"]').popover();
 	});
 
 	checkAllAbove = function() {
diff --git a/static/mo.css b/static/mo.css
index daebb4b06b04b740de54a7972befb09c54d8cc61..1dde1513f9ec4a4d05a569d6562f0a79d15092d9 100644
--- a/static/mo.css
+++ b/static/mo.css
@@ -149,6 +149,19 @@ td ul {
     list-style-type: none;
 }
 
+td.comment {
+    font-size: 0.9em;
+    max-width: 15rem;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+.popover {
+    max-width: 360px;
+    white-space: pre-line;
+}
+
 table tr.state-disqualified, table tr.state-disqualified a:not(.btn) {
 	color: darkred;
 }