diff --git a/ranking.php b/ranking.php
index ff17962..d1124b8 100644
--- a/ranking.php
+++ b/ranking.php
@@ -1,7 +1,6 @@
 <html>
 <head>
 	<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans" />
-	<link rel="stylesheet" href="./css/basic.css" />
 	<link rel="stylesheet" href="./css/ranking.css" />
 </head>
 
@@ -29,45 +28,68 @@
 
 <div id="outter-container">
 	<div id="inner-container">
-		<h1>Rànquing</h1>
-		<p>La puntuació de cada jugador es calcula com a una suma ponderada entre companys de classe (mateix curs, mateix grau), companys de grau (mateix grau) i companys de facultat (diferents grau). Amb puntuacions +100, +150 i +200; respectivament.</p>
+		<header>
+			<div id="leftlinks"><a id="info" href="javascript:void(0);" onclick="js: toggleinfo();">+Info</a></div>
+			<div id="rightlinks"><a href="./index.php">Tornar a l'inici</a></div>
+		</header>
 		
-		<table id="ranking" cellspacing="0" cellpadding="0">
-			<tr id="header">
-				<th></th>
-				<th>Nom</th>
-				<th>Classe</th>
-				<th>Grau</th>
-				<th>Facu</th>
-				<th>Total</th>
-				<th>Punts</th>
-			</tr>
-			<?php
-				$id = 43;
-				$i = 1;
-				
-				while ($row = $results->fetch_object()) {
-					if ($i == 1) echo "<tr class='gold top3'>";
-					else if ($i == 2) echo "<tr class='silver top3'>";
-					else if ($i == 3) echo "<tr class='bronze top3'>";
-					else if ($row->id == $id) echo "<tr class='me'>";
-					else echo "<tr>";
+		<p><img src="./bin/images/info.png" width="32px" /> La puntuació de cada jugador es calcula com a una suma ponderada depenent del caràcter de les seves víctimes: companys de <b>c</b>lasse (mateix curs, mateix grau), companys de <b>g</b>rau (mateix grau) i companys de <b>f</b>acultat (diferents grau). Amb puntuacions +100, +150 i +200; respectivament.</p>
+		
+		<div id="table-container">
+			<table id="ranking" cellspacing="0" cellpadding="0">
+				<tr id="header">
+					<th></th>
+					<th>Assassins</th>
+					<th>T</th>
+					<th>P</th>
+					<th>C</th>
+					<th>G</th>
+					<th>F</th>
+				</tr>
+				<?php
+					$id = 0;
+					$i = 1;
 					
-					echo "<td>". ($i > 3 ? $i : '') ."</td>";
-					echo "<td>$row->nom</td>";
-					echo "<td>$row->companys_classe</td>";
-					echo "<td>$row->companys_grau</td>";
-					echo "<td>$row->companys_facu</td>";
-					echo "<td>$row->kills</td>";
-					echo "<td>$row->score</td>";
-					echo "</tr>";
-					
-					$i = $i + 1;
-				}
-			?>
-		</table>
+					while ($row = $results->fetch_object()) {
+						if ($i == 1) echo "<tr class='gold top3'>";
+						else if ($i == 2) echo "<tr class='silver top3'>";
+						else if ($i == 3) echo "<tr class='bronze top3'>";
+						else if ($row->id == $id) echo "<tr class='me'>";
+						else echo "<tr>";
+						
+						echo "<td>". ($i > 3 ? $i : '') ."</td>";
+						echo "<td class='name'><div>
+									<div class='username'>$row->nom</div>
+									<div class='userinfo'>".nomcurs($row->curs)." - ".nomgrau($row->grau)."</div>
+								</div></td>";
+						echo "<td>$row->kills</td>";
+						echo "<td><b>$row->score</b></td>";
+						echo "<td>$row->companys_classe</td>";
+						echo "<td>$row->companys_grau</td>";
+						echo "<td>$row->companys_facu</td>";
+						echo "</tr>";
+						
+						$i = $i + 1;
+					}
+				?>
+			</table>
+		</div>
 	</div>
 </div>
 
+<script>
+	function toggleinfo() {
+		let state = document.getElementsByTagName("p")[0].style.display;
+		if (state == "block") {
+			document.getElementsByTagName("p")[0].style.display = "none";
+			document.getElementsByTagName("a")[0].innerHTML = "+Info";
+		} else {
+			document.getElementsByTagName("p")[0].style.display = "block";
+			document.getElementsByTagName("a")[0].innerHTML = "-Info";
+		}
+		return false;
+	}
+</script>
+
 </body>
 </html>
