diff --git a/capsule-prototype/css/online-theme.css b/capsule-prototype/css/online-theme.css
index 98202ca93fb4f17746981c23ed43af1e0c9ef736..44648b68d6cfe7de1024aae9b6181cb9204b32b9 100644
--- a/capsule-prototype/css/online-theme.css
+++ b/capsule-prototype/css/online-theme.css
@@ -302,7 +302,7 @@ html, body {
 }
 
 #popupMosaic {
-    background: #243538;
+	background: #243538;
 	box-shadow:				0 1px 3px rgba(0,0,0,.2) inset;  
 	border:					0;   
 	border-radius:			3px;     
@@ -322,26 +322,27 @@ html, body {
 }
 
 .mosaic_category {
-    display: grid;
-    grid-template-columns: repeat(auto-fit, minmax(125px, 1fr));
-    grid-auto-rows: 150px;
-    border-radius: 3px;
-    padding: 1.0em 1vw;
-    margin: 2vh 0 1.5vh 0;
+	display: grid;
+	grid-template-columns: repeat(auto-fit, minmax(125px, 1fr));
+	background:				rgba(0,0,0,.15); 
+	grid-auto-rows: 150px;
+	border-radius: 3px;
+	padding: 1.0em 1vw;
+	margin: 2vh 0 1.5vh 0;
 }
 
 .mosaic_item img {
-    /* To correctly align image, regardless of content height: */
-    vertical-align: top;
-    display: inline-block;
-    /* To horizontally center images and caption */
-    text-align: center;
-    /* The width of the container also implies margin around the images. */
-    width: 100px;
-    margin: 2vh 0 1.5vh 0;
+	/* To correctly align image, regardless of content height: */
+	vertical-align: top;
+	display: inline-block;
+	/* To horizontally center images and caption */
+	text-align: center;
+	/* The width of the container also implies margin around the images. */
+	width: 100px;
+	margin: 2vh 0 1.5vh 0;
 }
 .mosaic_item .caption {
-    display:block;
+	display:block;
 }
 
 
diff --git a/capsule-prototype/js/online-script.js b/capsule-prototype/js/online-script.js
index e68d867b0798684e03f6fa99f3787f55d7e9ff52..dd0c8a263aa2f9d54a841fcdca65c364d08615b7 100644
--- a/capsule-prototype/js/online-script.js
+++ b/capsule-prototype/js/online-script.js
@@ -816,33 +816,27 @@ function closeEdit() {
 
 function openMosaic() {
     function getMosaicItem(tagOrDoc) {
-            let path = Utils.getPreviewPath(tagOrDoc);
-            let name = tagOrDoc.getMetadata("Rekall->Name");
-            let type = tagOrDoc.getMetadata("Rekall->Type");
-            let url ='';
-        if (typeof path === 'undefined') {
-            if (type =='rekall/link') {
-                url = "../shared/css/images/img-link.png";
-            } else {
-                url = "../shared/css/images/img-note.png";
-            }
+        let path = Utils.getPreviewPath(tagOrDoc);
+        let name = tagOrDoc.getMetadata("Rekall->Name");
+        let url ='';
+        if ('undefined' === typeof path) {
+            let icon = ('rekall/link' === tagOrDoc.getMetadata("Rekall->Type")) ? "link" : "note";
+            url = "../shared/css/images/img-"+icon+".png";
         } else {
             url = path;
         }
-        let div=$('<div/>').addClass('mosaic_item')
+        let div=$('<div/>').addClass('mosaic_item').on('click', function() {tagOrDoc.openPopupEdit();});
         div.append($('<img/>').attr('src', url));
         div.append($('<span/>').addClass('caption').text(name));
-        div.on('click', function() {tagOrDoc.openPopupEdit();});
         return div;
     }
 
 	$("#popupMosaicSpace").show();  
     let container = $('#popupMosaicMosaic');
+    container.html('');
     // TODO is there a better way to iterate over tags or documents ?
     for ( let [k, v] of  Object.entries(rekall.sortings.colors.categories)) {
-        let category = $('<div/>');
-        category.addClass('mosaic_category');
-        category.css('background', v.color);
+        let category = $('<div/>').addClass('mosaic_category').css('background', getTagGradientColor(v));
         for (let i in v.tags){
             category.append(getMosaicItem(v.tags[i]));
         }
@@ -850,6 +844,24 @@ function openMosaic() {
     }
 }
 
+function getTagGradientColor(tag) {
+	var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;  // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
+	var isFirefox = typeof InstallTrigger !== 'undefined';   // Firefox 1.0+
+	var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;   // At least Safari 3+: "[object HTMLElementConstructor]"
+	var isChrome = !!window.chrome && !isOpera;              // Chrome 1+
+	var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6
+
+    if(isOpera) {
+        return  "-o-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)";
+    }
+    if(isFirefox) {
+        return "-moz-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)";          
+    }
+    if((isSafari)||(isChrome)){
+        return "-webkit-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)"; 
+    }
+}
+
 function closeMosaic() {
 	$("#popupMosaicSpace").hide();  
 }
@@ -866,17 +878,9 @@ function fillPopupEdit(tag) {
 	$("#popupTC").css("background",tag.color); 
 	/*$("#popupType").css("color",tag.color);*/
 
-	var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;  // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
-	var isFirefox = typeof InstallTrigger !== 'undefined';   // Firefox 1.0+
-	var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;   // At least Safari 3+: "[object HTMLElementConstructor]"
-	var isChrome = !!window.chrome && !isOpera;              // Chrome 1+
-	var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6
-
 	var bgColorLeft = tag.color.replace(/rgb/g, "rgba").replace(/\)/g, ",.35)");
 	
-    if(isOpera) bgColorLeft = "-o-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)";
-    else if(isFirefox) bgColorLeft = "-moz-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)";          
-    else if((isSafari)||(isChrome))  bgColorLeft = "-webkit-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)"; 
+    bgColorLeft = getTagGradientColor(tag);
 	
 	$("#popupLeft").css("background",bgColorLeft);
 
diff --git a/legacy/create.zip b/legacy/create.zip
index a2a703ea770860eb81d342239f65d7a857384d5a..4b2f2211e0693a3b02976ec59b92cf7ce0977b19 100644
Binary files a/legacy/create.zip and b/legacy/create.zip differ