Index: admin/blog_theme.php
===================================================================
--- admin/blog_theme.php	(revision 3812)
+++ admin/blog_theme.php	(revision 3731)
@@ -20,6 +20,5 @@
     $core->themes,
     $core->blog->themes_path,
-    $core->blog->settings->system->store_theme_url,
-    !empty($_GET['nocache'])
+    $core->blog->settings->system->store_theme_url
 );
 adminThemesList::$distributed_modules = explode(',', DC_DISTRIB_THEMES);
@@ -106,10 +105,4 @@
 # -- Display modules lists --
 if ($core->auth->isSuperAdmin()) {
-
-    if (!$core->error->flag()) {
-        if (!empty($_GET['nocache'])) {
-            dcPage::success(__('Manual checking of themes update done successfully.'));
-        }
-    }
 
     # Updated modules from repo
@@ -141,10 +134,4 @@
 
             '</div>';
-    } else {
-        echo
-        '<form action="' . $list->getURL('', false) . '" method="get">' .
-        '<p><input type="hidden" name="nocache" value="1" />' .
-        '<input type="submit" value="' . __('Force checking update of themes') . '" /></p>' .
-            '</form>';
     }
 }
Index: admin/index.php
===================================================================
--- admin/index.php	(revision 3833)
+++ admin/index.php	(revision 3781)
@@ -115,5 +115,5 @@
 if ($core->auth->user_prefs->dashboard->doclinks) {
     if (!empty($__resources['doc'])) {
-        $doc_links = '<div class="box small dc-box" id="doc-and-support"><h3>' . __('Documentation and support') . '</h3><ul>';
+        $doc_links = '<div class="box small dc-box"><h3>' . __('Documentation and support') . '</h3><ul>';
 
         foreach ($__resources['doc'] as $k => $v) {
@@ -150,6 +150,4 @@
 -------------------------------------------------------- */
 dcPage::open(__('Dashboard'),
-    dcPage::jsLoad('js/jquery/jquery-ui.custom.js') .
-    dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js') .
     dcPage::jsLoad('js/_index.js') .
     $admin_post_behavior .
@@ -246,100 +244,32 @@
 }
 
-# Get current main orders
-$main_order = $core->auth->user_prefs->dashboard->main_order;
-$main_order = ($main_order != '' ? explode(',', $main_order) : array());
-
-# Get current boxes orders
-$boxes_order = $core->auth->user_prefs->dashboard->boxes_order;
-$boxes_order = ($boxes_order != '' ? explode(',', $boxes_order) : array());
-
-# Get current boxes items orders
-$boxes_items_order = $core->auth->user_prefs->dashboard->boxes_items_order;
-$boxes_items_order = ($boxes_items_order != '' ? explode(',', $boxes_items_order) : array());
-
-# Get current boxes contents orders
-$boxes_contents_order = $core->auth->user_prefs->dashboard->boxes_contents_order;
-$boxes_contents_order = ($boxes_contents_order != '' ? explode(',', $boxes_contents_order) : array());
-
-$composeItems = function ($list, $blocks, $flat = false) {
-
-    $ret   = array();
-    $items = array();
-
-    if ($flat) {
-        $items = $blocks;
-    } else {
-        foreach ($blocks as $i) {
-            foreach ($i as $v) {
-                $items[] = $v;
-            }
-        }
-    }
-
-    # First loop to find ordered indexes
-    $order = array();
-    $index = 0;
-    foreach ($items as $v) {
-        if (preg_match('/<div.*?id="([^"].*?)".*?>/ms', $v, $match)) {
-            $id       = $match[1];
-            $position = array_search($id, $list, true);
-            if ($position !== false) {
-                $order[$position] = $index;
-            }
-        }
-        $index++;
-    }
-
-    # Second loop to combine ordered items
-    $index = 0;
-    foreach ($items as $v) {
-        $position = array_search($index, $order, true);
-        if ($position !== false) {
-            $ret[$position] = $v;
-        }
-        $index++;
-    }
-    # Reorder items on their position (key)
-    ksort($ret);
-
-    # Third loop to combine unordered items
-    $index = 0;
-    foreach ($items as $v) {
-        $position = array_search($index, $order, true);
-        if ($position === false) {
-            $ret[count($ret)] = $v;
-        }
-        $index++;
-    }
-
-    return join('', $ret);
-};
-
-# Compose dashboard items (doc, …)
-$dashboardItems = $composeItems($boxes_items_order, $__dashboard_items);
-# Compose dashboard contents (plugin's modules)
-$dashboardContents = $composeItems($boxes_contents_order, $__dashboard_contents);
-
-$__dashboard_boxes = array();
-if ($dashboardItems != '') {
-    $__dashboard_boxes[] = '<div class="db-items" id="db-items">' . $dashboardItems . '</div>';
-}
-if ($dashboardContents != '') {
-    $__dashboard_boxes[] = '<div class="db-contents" id="db-contents">' . $dashboardContents . '</div>';
-}
-$dashboardBoxes = $composeItems($boxes_order, $__dashboard_boxes, true);
-
-# Compose main area
-$__dashboard_main = array();
+# Dashboard items and contents (processed first, as we need to know the result before displaying the icons.)
+$dashboardItems = '';
+foreach ($__dashboard_items as $i) {
+    foreach ($i as $v) {
+        $dashboardItems .= $v;
+    }
+}
+$dashboardContents = '';
+foreach ($__dashboard_contents as $i) {
+    foreach ($i as $v) {
+        $dashboardContents .= $v;
+    }
+}
+
+# Dashboard elements: icons then boxes (items then contents)
+echo '<div id="dashboard-main">';
+
 if (!$core->auth->user_prefs->dashboard->nofavicons) {
     # Dashboard icons
-    $dashboardIcons = '<div id="icons">';
+    echo '<div id="icons">';
     foreach ($__dashboard_icons as $i) {
-        $dashboardIcons .= '<p><a href="' . $i[1] . '"><img src="' . dc_admin_icon_url($i[2]) . '" alt="" />' .
+        echo
+        '<p><a href="' . $i[1] . '"><img src="' . dc_admin_icon_url($i[2]) . '" alt="" />' .
             '<br /><span class="db-icon-title">' . $i[0] . '</span></a></p>';
     }
-    $dashboardIcons .= '</div>';
-    $__dashboard_main[] = $dashboardIcons;
-}
+    echo '</div>';
+}
+
 if ($core->auth->user_prefs->dashboard->quickentry) {
     if ($core->auth->check('usage,contentadmin', $core->blog->id)) {
@@ -349,5 +279,5 @@
         );
 
-        $dashboardQuickEntry =
+        echo
         '<div id="quick">' .
         '<h3>' . __('Quick entry') . sprintf(' &rsaquo; %s', $core->auth->getOption('post_format')) . '</h3>' .
@@ -390,15 +320,16 @@
             '</form>' .
             '</div>';
-        $__dashboard_main[] = $dashboardQuickEntry;
-    }
-}
-if ($dashboardBoxes != '') {
-    $__dashboard_main[] = '<div id="dashboard-boxes">' . $dashboardBoxes . '</div>';
-}
-$dashboardMain = $composeItems($main_order, $__dashboard_main, true);
-
-# Dashboard elements
-echo '<div id="dashboard-main">' . $dashboardMain . '</div>';
-
+    }
+}
+
+if ($dashboardContents != '' || $dashboardItems != '') {
+    echo
+        '<div id="dashboard-boxes">' .
+        ($dashboardItems != '' ? '<div class="db-items">' . $dashboardItems . '</div>' : '') .
+        ($dashboardContents != '' ? '<div class="db-contents">' . $dashboardContents . '</div>' : '') .
+        '</div>';
+}
+
+echo '</div>'; #end dashboard-main
 dcPage::helpBlock('core_dashboard');
 dcPage::close();
Index: admin/js/_index.js
===================================================================
--- admin/js/_index.js	(revision 3839)
+++ admin/js/_index.js	(revision 3781)
@@ -155,6 +155,4 @@
         var xml = $('rsp>update', data).attr('ret');
         $('#content h2').after(xml);
-        // manage outgoing links
-        dotclear.outgoingLinks('#ajax-update a');
       }
     }
@@ -182,6 +180,4 @@
         }
         $('#dashboard-boxes div.db-items').prepend(xml);
-        // manage outgoing links
-        dotclear.outgoingLinks('#ajax-news a');
       }
     }
@@ -199,6 +195,6 @@
   }
   // Posts
-  var icon_post = $('#dashboard-main #icons p a[href="posts.php"]');
-  if (icon_post.length) {
+  var icon_com = $('#dashboard-main #icons p a[href="posts.php"]');
+  if (icon_com.length) {
     // Icon exists on dashboard
     // First pass
@@ -207,40 +203,3 @@
     dotclear.dbPostsCount_Timer = setInterval(dotclear.dbCommentsPost, 600 * 1000);
   }
-
-  // Dashboard boxes and their children are sortable
-  var set_positions = function(sel, id) {
-    var list = $(sel).sortable("toArray").join();
-    // Save positions (via services) for id
-    var params = {
-      f: 'setDashboardPositions',
-      xd_check: dotclear.nonce,
-      id: id,
-      list: list
-    };
-    $.post('services.php', params, function() {});
-  };
-  var init_positions = function(sel, id) {
-    $(sel).sortable({
-      cursor: 'move',
-      opacity: 0.5,
-      tolerance: "pointer",
-      update: function() {
-        set_positions(sel, id);
-      },
-      start: function() {
-        $(sel).addClass('sortable-area');
-      },
-      stop: function() {
-        $(sel).removeClass('sortable-area');
-      }
-    });
-  };
-  // Wait 5 seconds before activating ordering capabilities on dashboard
-  setTimeout(function() {
-    init_positions('#dashboard-main', 'main_order');
-    init_positions('#dashboard-boxes', 'boxes_order');
-    init_positions('#db-items', 'boxes_items_order');
-    init_positions('#db-contents', 'boxes_contents_order');
-  }, 5000);
-
 });
Index: admin/js/common.js
===================================================================
--- admin/js/common.js	(revision 3842)
+++ admin/js/common.js	(revision 3843)
@@ -140,10 +140,19 @@
     $(ctarget).click(function(e) {
       if (p.user_pref && set_user_pref) {
-        jQuery.post('services.php', {
-          'f': 'setSectionFold',
-          'section': p.user_pref,
-          'value': (p.hide ^ p.reverse_user_pref ? 1 : 0),
-          xd_check: dotclear.nonce
-        }, function() {});
+        if (p.hide ^ p.reverse_user_pref) {
+          jQuery.post('services.php', {
+            'f': 'setSectionFold',
+            'section': p.user_pref,
+            'value': 1,
+            xd_check: dotclear.nonce
+          }, function() {});
+        } else {
+          jQuery.post('services.php', {
+            'f': 'setSectionFold',
+            'section': p.user_pref,
+            'value': 0,
+            xd_check: dotclear.nonce
+          }, function() {});
+        }
         jQuery.cookie(p.user_pref, '', {
           expires: -1
@@ -160,27 +169,30 @@
 (function($) {
   $.expandContent = function(opts) {
+    var defaults = {};
+    $.expandContent.options = $.extend({}, defaults, opts);
     if (opts == undefined || opts.callback == undefined || !$.isFunction(opts.callback)) {
       return;
     }
     if (opts.line != undefined) {
-      multipleExpander(opts.line, opts.lines, opts.callback);
+      multipleExpander(opts.line, opts.lines);
     }
     opts.lines.each(function() {
-      singleExpander(this, opts.callback);
-    });
-  };
-  var singleExpander = function singleExpander(line, callback) {
+      singleExpander(this);
+    });
+  };
+  var singleExpander = function singleExpander(line) {
     $('<button type="button" class="details-cmd" aria-label="' + dotclear.img_plus_alt + '">' + dotclear.img_plus_txt + '</button>').click(function (e) {
       toggleArrow(this);
-      callback(line);
+      $.expandContent.options.callback.call(this, line);
       e.preventDefault();
     }).prependTo($(line).children().get(0)); // first td
   };
-  var multipleExpander = function multipleExpander(line, lines, callback) {
+  var multipleExpander = function multipleExpander(line, lines) {
     $('<button type="button" class="details-cmd" aria-label="' + dotclear.img_plus_alt + '">' + dotclear.img_plus_txt + '</button>').click(function (e) {
+      var that = this;
       var action = toggleArrow(this);
       lines.each(function() {
         toggleArrow(this.firstChild.firstChild, action);
-        callback(this, action);
+        $.expandContent.options.callback.call(that, this, action);
       });
       e.preventDefault();
@@ -299,5 +311,5 @@
   enterKeyInForm: function(frm_id, ok_id, cancel_id) {
     $(frm_id + ':not(' + cancel_id + ')').keyup(function(e) {
-      if ((e.key == 'Enter') && ($(ok_id).prop('disabled') !== true)) {
+      if (e.key == 'Enter') {
         e.preventDefault();
         e.stopPropagation();
@@ -433,17 +445,4 @@
       return true;
     });
-  },
-  outgoingLinks: function(target) {
-    $(target).filter(function() {
-      return ((this.hostname && this.hostname != location.hostname && !$(this).hasClass('modal') && !$(this).hasClass('modal-image')) || $(this).hasClass('outgoing'));
-    }).each(function() {
-      $(this).prop('title', $(this).prop('title') + ' (' + dotclear.msg.new_window + ')');
-      if (!$(this).hasClass('outgoing')) {
-        $(this).append('&nbsp;<img class="outgoing-js" src="images/outgoing-link.svg" alt=""/>');
-      }
-    }).click(function(e) {
-      e.preventDefault();
-      window.open($(this).attr('href'));
-    });
   }
 };
@@ -461,5 +460,15 @@
   });
   // manage outgoing links
-  dotclear.outgoingLinks('a');
+  $('a').filter(function() {
+    return ((this.hostname && this.hostname != location.hostname && !$(this).hasClass('modal') && !$(this).hasClass('modal-image')) || $(this).hasClass('outgoing'));
+  }).each(function() {
+    $(this).prop('title', $(this).prop('title') + ' (' + dotclear.msg.new_window + ')');
+    if (!$(this).hasClass('outgoing')) {
+      $(this).append('&nbsp;<img class="outgoing-js" src="images/outgoing-link.svg" alt=""/>');
+    }
+  }).click(function(e) {
+    e.preventDefault();
+    window.open($(this).attr('href'));
+  });
   // Popups: dealing with Escape key fired
   $('#dotclear-admin.popup').keyup(function(e) {
Index: admin/plugins.php
===================================================================
--- admin/plugins.php	(revision 3812)
+++ admin/plugins.php	(revision 3731)
@@ -16,6 +16,5 @@
     $core->plugins,
     DC_PLUGINS_ROOT,
-    $core->blog->settings->system->store_plugin_url,
-    !empty($_GET['nocache'])
+    $core->blog->settings->system->store_plugin_url
 );
 
@@ -116,10 +115,4 @@
 # -- Display modules lists --
 if ($core->auth->isSuperAdmin()) {
-
-    if (!$core->error->flag()) {
-        if (!empty($_GET['nocache'])) {
-            dcPage::success(__('Manual checking of plugins update done successfully.'));
-        }
-    }
 
     # Updated modules from repo
@@ -151,10 +144,4 @@
 
             '</div>';
-    } else {
-        echo
-        '<form action="' . $list->getURL('', false) . '" method="get">' .
-        '<p><input type="hidden" name="nocache" value="1" />' .
-        '<input type="submit" value="' . __('Force checking update of plugins') . '" /></p>' .
-            '</form>';
     }
 }
Index: admin/preferences.php
===================================================================
--- admin/preferences.php	(revision 3836)
+++ admin/preferences.php	(revision 3800)
@@ -60,5 +60,5 @@
 if (!empty($_GET['append']) || !empty($_GET['removed']) || !empty($_GET['neworder']) ||
     !empty($_GET['replaced']) || !empty($_POST['appendaction']) || !empty($_POST['removeaction']) ||
-    !empty($_GET['db-updated']) || !empty($_POST['resetorder'])) {
+    !empty($_GET['db-updated'])) {
     $default_tab = 'user-favorites';
 } elseif (!empty($_GET['updated'])) {
@@ -401,17 +401,4 @@
 }
 
-# Reset dashboard items order
-if (!empty($_POST['resetorder'])) {
-    $core->auth->user_prefs->dashboard->drop('main_order');
-    $core->auth->user_prefs->dashboard->drop('boxes_order');
-    $core->auth->user_prefs->dashboard->drop('boxes_items_order');
-    $core->auth->user_prefs->dashboard->drop('boxes_contents_order');
-
-    if (!$core->error->flag()) {
-        dcPage::addSuccessNotice(__('Dashboard items order have been successfully reset.'));
-        $core->adminurl->redirect("admin.user.preferences", array(), '#user-favorites');
-    }
-}
-
 /* DISPLAY
 -------------------------------------------------------- */
@@ -682,5 +669,4 @@
 echo '<h3>' . __('My dashboard') . '</h3>';
 
-# Favorites
 echo '<form action="' . $core->adminurl->get("admin.user.preferences") . '" method="post" id="favs-form" class="two-boxes odd">';
 
@@ -788,5 +774,4 @@
 echo '</form>';
 
-# Dashboard items
 echo
 '<form action="' . $core->adminurl->get("admin.user.preferences") . '" method="post" id="db-forms" class="two-boxes even">' .
@@ -850,14 +835,4 @@
     '</form>';
 
-# Dashboard items order (reset)
-echo '<form action="' . $core->adminurl->get("admin.user.preferences") . '" method="post" id="order-reset" class="two-boxes even">';
-echo '<div class="fieldset"><h4>' . __('Dashboard items order') . '</h4>';
-echo
-'<p>' .
-$core->formNonce() .
-'<input type="submit" name="resetorder" value="' . __('Reset dashboard items order') . '" /></p>';
-echo '</div>';
-echo '</form>';
-
 echo '</div>'; # /multipart-user-favorites
 
Index: admin/services.php
===================================================================
--- admin/services.php	(revision 3833)
+++ admin/services.php	(revision 3781)
@@ -25,5 +25,4 @@
 $core->rest->addFunction('setSectionFold', array('dcRestMethods', 'setSectionFold'));
 $core->rest->addFunction('getModuleById', array('dcRestMethods', 'getModuleById'));
-$core->rest->addFunction('setDashboardPositions', array('dcRestMethods', 'setDashboardPositions'));
 
 $core->rest->serve();
@@ -87,5 +86,5 @@
                 $feed = $feed_reader->parse($GLOBALS['__resources']['rss_news']);
                 if ($feed) {
-                    $ret = '<div class="box medium dc-box" id="ajax-news"><h3>' . __('Dotclear news') . '</h3><dl id="news">';
+                    $ret = '<div class="box medium dc-box"><h3>' . __('Dotclear news') . '</h3><dl id="news">';
                     $i   = 1;
                     foreach ($feed->items as $item) {
@@ -133,5 +132,5 @@
                 if (version_compare(phpversion(), $updater->getPHPVersion()) >= 0) {
                     $ret =
-                    '<div class="dc-update" id="ajax-update"><h3>' . sprintf(__('Dotclear %s is available!'), $new_v) . '</h3> ' .
+                    '<div class="dc-update"><h3>' . sprintf(__('Dotclear %s is available!'), $new_v) . '</h3> ' .
                     '<p><a class="button submit" href="' . $core->adminurl->get("admin.update") . '">' . sprintf(__('Upgrade now'), $new_v) . '</a> ' .
                     '<a class="button" href="' . $core->adminurl->get("admin.update", array('hide_msg' => 1)) . '">' . __('Remind me later') . '</a>' .
@@ -567,24 +566,4 @@
     }
 
-    public static function setDashboardPositions($core, $get, $post)
-    {
-        if (empty($post['id'])) {
-            throw new Exception('No zone name');
-        }
-        if (empty($post['list'])) {
-            throw new Exception('No sorted list of id');
-        }
-
-        if ($core->auth->user_prefs->dashboard === null) {
-            $core->auth->user_prefs->addWorkspace('dashboard');
-        }
-
-        $zone  = $post['id'];
-        $order = $post['list'];
-
-        $core->auth->user_prefs->dashboard->put($zone, $order);
-        return true;
-    }
-
     public static function getModuleById($core, $get, $post)
     {
Index: admin/style/default-dark.css
===================================================================
--- admin/style/default-dark.css	(revision 3842)
+++ admin/style/default-dark.css	(revision 3843)
@@ -229,7 +229,5 @@
 /* Typographie */
 :root {
-  --html-font-size: 62.5%;
-  --body-color: #dcdee0;
-  --body-background: #272b30; }
+  --html-font-size: 62.5%; }
 
 html {
@@ -1083,8 +1081,4 @@
   margin-bottom: .3em; }
 
-input[type=color] {
-  width: 4em;
-  height: 3em; }
-
 optgroup {
   font-weight: bold;
@@ -1589,6 +1583,10 @@
   padding: 0;
   overflow: hidden;
+  position: absolute;
+  top: 3em;
+  left: 0;
   background: #a2cbe9;
-  width: 100%; }
+  width: 100%;
+  z-index: 100; }
   #prelude li {
     list-style-type: none;
@@ -2113,10 +2111,7 @@
 #dashboard-main {
   text-align: center; }
-  #dashboard-main > *:last-child {
-    margin-bottom: 1em; }
 
 /* raccourcis */
 #icons {
-  margin: 1em auto 2em;
   display: flex;
   flex-wrap: wrap;
@@ -2155,7 +2150,7 @@
 /* billet rapide */
 #quick {
+  padding: 1em;
   max-width: 72em;
-  margin: 1em auto 2em;
-  padding: 1em;
+  margin: 0 auto;
   background: #323334;
   border: 1px solid #dbdcdd;
@@ -2170,5 +2165,7 @@
     padding: .2em 1em .1em 24px;
     color: #323334; }
-  #quick #new_cat, #quick .q-cat, #quick .q-cat label {
+  #quick #new_cat,
+  #quick .q-cat,
+  #quick .q-cat label {
     display: inline-block;
     vertical-align: top;
@@ -2182,5 +2179,6 @@
 /* modules additionnels */
 #dashboard-boxes {
-  margin: 1em auto 2em;
+  margin: 1em auto 1em;
+  padding-top: 2em;
   display: flex;
   flex-wrap: wrap;
@@ -2194,16 +2192,20 @@
     text-align: left; }
 
-.db-items, .db-contents {
+.db-items,
+.db-contents {
   display: flex;
   flex-wrap: wrap;
   justify-content: center;
   flex: 1 1 auto; }
-  .db-items img, .db-contents img {
+  .db-items img,
+  .db-contents img {
     vertical-align: middle; }
-  .db-items ul, .db-contents ul {
+  .db-items ul,
+  .db-contents ul {
     display: block;
     padding-left: 1.5em;
     list-style: square; }
-  .db-items li, .db-contents li {
+  .db-items li,
+  .db-contents li {
     margin: 0.25em 0 0 0; }
 
@@ -3161,6 +3163,5 @@
 
 .offline {
-  color: #86888c;
-  background: #323334; }
+  color: #86888c; }
 
 /* caché pour tout le monde */
@@ -3191,10 +3192,4 @@
 
 /* ---------------------------------------------- Couleurs ajoutées via javascript
-
-/* Sortable (jQuery UI) */
-.sortable-area {
-  border: 1px dashed currentColor;
-  background-color: #4c4d4f; }
-
 /* color-picker.js */
 .color-color-picker {
Index: admin/style/default.css
===================================================================
--- admin/style/default.css	(revision 3842)
+++ admin/style/default.css	(revision 3843)
@@ -229,7 +229,5 @@
 /* Typographie */
 :root {
-  --html-font-size: 62.5%;
-  --body-color: #323232;
-  --body-background: #fff; }
+  --html-font-size: 62.5%; }
 
 html {
@@ -1083,8 +1081,4 @@
   margin-bottom: .3em; }
 
-input[type=color] {
-  width: 4em;
-  height: 3em; }
-
 optgroup {
   font-weight: bold;
@@ -1589,6 +1583,10 @@
   padding: 0;
   overflow: hidden;
+  position: absolute;
+  top: 3em;
+  left: 0;
   background: #a2cbe9;
-  width: 100%; }
+  width: 100%;
+  z-index: 100; }
   #prelude li {
     list-style-type: none;
@@ -2113,10 +2111,7 @@
 #dashboard-main {
   text-align: center; }
-  #dashboard-main > *:last-child {
-    margin-bottom: 1em; }
 
 /* raccourcis */
 #icons {
-  margin: 1em auto 2em;
   display: flex;
   flex-wrap: wrap;
@@ -2155,7 +2150,7 @@
 /* billet rapide */
 #quick {
+  padding: 1em;
   max-width: 72em;
-  margin: 1em auto 2em;
-  padding: 1em;
+  margin: 0 auto;
   background: #f3f3f3;
   border: 1px solid #dbdbdb;
@@ -2170,5 +2165,7 @@
     padding: .2em 1em .1em 24px;
     color: #323232; }
-  #quick #new_cat, #quick .q-cat, #quick .q-cat label {
+  #quick #new_cat,
+  #quick .q-cat,
+  #quick .q-cat label {
     display: inline-block;
     vertical-align: top;
@@ -2182,5 +2179,6 @@
 /* modules additionnels */
 #dashboard-boxes {
-  margin: 1em auto 2em;
+  margin: 1em auto 1em;
+  padding-top: 2em;
   display: flex;
   flex-wrap: wrap;
@@ -2194,16 +2192,20 @@
     text-align: left; }
 
-.db-items, .db-contents {
+.db-items,
+.db-contents {
   display: flex;
   flex-wrap: wrap;
   justify-content: center;
   flex: 1 1 auto; }
-  .db-items img, .db-contents img {
+  .db-items img,
+  .db-contents img {
     vertical-align: middle; }
-  .db-items ul, .db-contents ul {
+  .db-items ul,
+  .db-contents ul {
     display: block;
     padding-left: 1.5em;
     list-style: square; }
-  .db-items li, .db-contents li {
+  .db-items li,
+  .db-contents li {
     margin: 0.25em 0 0 0; }
 
@@ -3161,6 +3163,5 @@
 
 .offline {
-  color: #676e78;
-  background: #f3f3f3; }
+  color: #676e78; }
 
 /* caché pour tout le monde */
@@ -3191,10 +3192,4 @@
 
 /* ---------------------------------------------- Couleurs ajoutées via javascript
-
-/* Sortable (jQuery UI) */
-.sortable-area {
-  border: 1px dashed currentColor;
-  background-color: #f3f3f3; }
-
 /* color-picker.js */
 .color-color-picker {
Index: admin/style/scss/partials/_classes.scss
===================================================================
--- admin/style/scss/partials/_classes.scss	(revision 3811)
+++ admin/style/scss/partials/_classes.scss	(revision 3774)
@@ -333,5 +333,4 @@
 .offline {
 	color: $offline;
-  background: $offline-background;
 }
 
Index: admin/style/scss/partials/_common.scss
===================================================================
--- admin/style/scss/partials/_common.scss	(revision 3828)
+++ admin/style/scss/partials/_common.scss	(revision 3763)
@@ -4,7 +4,4 @@
 	// May be superseed by user pref (typically from 50% to 75%, default 62.5%)
 	--html-font-size: #{$html-font-size};
-  // Main colors
-  --body-color: #{$body-color};
-  --body-background: #{$body-background};
 }
 
Index: admin/style/scss/partials/_forms.scss
===================================================================
--- admin/style/scss/partials/_forms.scss	(revision 3823)
+++ admin/style/scss/partials/_forms.scss	(revision 3780)
@@ -180,8 +180,4 @@
   margin-bottom: .3em;
 }
-input[type=color] {
-  width: 4em;
-  height: 3em;
-}
 optgroup {
   font-weight: bold;
Index: admin/style/scss/partials/_header.scss
===================================================================
--- admin/style/scss/partials/_header.scss	(revision 3822)
+++ admin/style/scss/partials/_header.scss	(revision 3763)
@@ -6,6 +6,10 @@
 	padding: 0;
 	overflow: hidden;
+	position: absolute;
+	top: 3em;
+	left: 0;
 	background: $prelude-background;
 	width: 100%;
+	z-index: 100;
 	li {
 		list-style-type: none;
Index: admin/style/scss/partials/_index.scss
===================================================================
--- admin/style/scss/partials/_index.scss	(revision 3839)
+++ admin/style/scss/partials/_index.scss	(revision 3787)
@@ -1,142 +1,157 @@
 #dashboard-main {
-  text-align: center;
-  & > *:last-child {
-    margin-bottom: 1em;
-  }
+	text-align: center;
 }
+
+
 /* raccourcis */
 
 #icons {
-  margin: 1em auto 2em;
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: center;
-  p {
-    width: 13em;
-    margin: 1em 0 2em;
+	display: flex;
+	flex-wrap: wrap;
+	justify-content: center;
+	p {
+		width: 13em;
+		margin: 1em 0 2em;
     display: flex;
     flex-direction: column;
     justify-content: flex-start;
     align-items: center;
-  }
-  a {
-    &, &:link, &:visited, &:hover, &:focus {
-      border-bottom-width: 0;
-      text-decoration: none;
-    }
-    span {
+	}
+	a {
+		&,
+		&:link,
+		&:visited,
+		&:hover,
+		&:focus {
+			border-bottom-width: 0;
+			text-decoration: none;
+		}
+		span {
       color: $index-link-color;
-      border-bottom: 1px dotted $index-link-border;
-    }
-    img {
-      padding: 1.5em;
-      background-color: $index-icon-background;
-      border-radius: 8px;
-      border: 1px solid $index-icon-border;
-      display: inline-block;
+			border-bottom: 1px dotted $index-link-border;
+		}
+		img {
+			padding: 1.5em;
+			background-color: $index-icon-background;
+			border-radius: 8px;
+			border: 1px solid $index-icon-border;
+			display: inline-block;
       filter: contrast($index-icon-contrast);
-    }
-    &:focus {
-      outline: 0;
-      span {
-        border: 2px solid $index-icon-outline;
-      }
-    }
-    &:focus, &:hover {
-      img {
-        background: $index-icon-outline;
-        outline: 0;
-        border-color: $index-icon-border;
-      }
-      span {
-        border-bottom-style: solid;
-      }
-    }
-  }
+		}
+		&:focus {
+			outline: 0;
+			span {
+				border: 2px solid $index-icon-outline;
+			}
+		}
+		&:focus,
+		&:hover {
+			img {
+				background: $index-icon-outline;
+				outline: 0;
+				border-color: $index-icon-border;
+			}
+			span {
+				border-bottom-style: solid;
+			}
+		}
+	}
 }
+
+
 /* billet rapide */
 
 #quick {
-  max-width: 72em;
-  margin: 1em auto 2em;
-  padding: 1em;
-  background: $quick-background;
+	padding: 1em;
+	max-width: 72em;
+	margin: 0 auto;
+	background: $quick-background;
   border: 1px solid $quick-border;
-  text-align: left;
-  h3 {
-    margin-bottom: 0.2em;
-    font-size: 1.2em;
-  }
-  p.qinfo {
-    margin: -.7em -1em 1em;
-    background: $quick-info-background url(msg-info.png) no-repeat .2em .2em;
-    border: 1px solid $quick-info-border;
-    padding: .2em 1em .1em 24px;
-    color: $quick-info-color;
-  }
-  #new_cat, .q-cat, .q-cat label {
-    display: inline-block;
-    vertical-align: top;
-    margin-right: 1em;
-    margin-top: 0;
-  }
-  .q-cat label {
-    margin-right: .3em;
-  }
-  #new_cat {
-    margin-bottom: 2em;
-  }
+	text-align: left;
+	h3 {
+		margin-bottom: 0.2em;
+		font-size: 1.2em;
+	}
+	p.qinfo {
+		margin: -.7em -1em 1em;
+		background: $quick-info-background url(msg-info.png) no-repeat .2em .2em;
+		border: 1px solid $quick-info-border;
+		padding: .2em 1em .1em 24px;
+		color: $quick-info-color;
+	}
+	#new_cat,
+	.q-cat,
+	.q-cat label {
+		display: inline-block;
+		vertical-align: top;
+		margin-right: 1em;
+		margin-top: 0;
+	}
+	.q-cat label {
+		margin-right: .3em;
+	}
+	#new_cat {
+		margin-bottom: 2em;
+	}
 }
+
+
 /* modules additionnels */
 
 #dashboard-boxes {
-  margin: 1em auto 2em;
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: center;
-  .box {
-    padding: 10px;
-    border: 1px solid $index-box-border;
-    border-radius: 3px;
-    min-height: 200px;
-    margin: 10px;
-    text-align: left;
-  }
+	margin: 1em auto 1em;
+	padding-top: 2em;
+	display: flex;
+	flex-wrap: wrap;
+	justify-content: center;
+	.box {
+		padding: 10px;
+		border: 1px solid $index-box-border;
+		border-radius: 3px;
+		min-height: 200px;
+		margin: 10px;
+		text-align: left;
+	}
 }
-.db-items, .db-contents {
-  //  display: inline-block;
-  //  text-align: center;
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: center;
-  flex: 1 1 auto;
-  img {
-    vertical-align: middle;
-  }
-  ul {
-    display: block;
-    padding-left: 1.5em;
-    list-style: square;
-  }
-  li {
-    margin: 0.25em 0 0 0;
-  }
+
+.db-items,
+.db-contents {
+	//	display: inline-block;
+	//	text-align: center;
+	display: flex;
+	flex-wrap: wrap;
+	justify-content: center;
+	flex: 1 1 auto;
+	img {
+		vertical-align: middle;
+	}
+	ul {
+		display: block;
+		padding-left: 1.5em;
+		list-style: square;
+	}
+	li {
+		margin: 0.25em 0 0 0;
+	}
 }
+
 .no-js .outgoing img {
-  display: none;
+	display: none;
 }
+
 .dc-box {
-  background: transparent url(dc_logos/sq-logo-32.png) no-repeat top right;
+	background: transparent url(dc_logos/sq-logo-32.png) no-repeat top right;
 }
+
 #news {
-  dt {
-    font-weight: bold;
-    margin: 0 0 0.4em 0;
-  }
-  dd {
-    margin: 0 0 1em 0;
-    p {
-      margin: 0.2em 0 0 0;
-    }
-  }
+	dt {
+		font-weight: bold;
+		margin: 0 0 0.4em 0;
+	}
+	dd {
+		margin: 0 0 1em 0;
+		p {
+			margin: 0.2em 0 0 0;
+		}
+	}
 }
Index: admin/style/scss/partials/_utils.scss
===================================================================
--- admin/style/scss/partials/_utils.scss	(revision 3839)
+++ admin/style/scss/partials/_utils.scss	(revision 3763)
@@ -1,11 +1,3 @@
 /* ---------------------------------------------- Couleurs ajoutées via javascript
-
-/* Sortable (jQuery UI) */
-
-.sortable-area {
-  border: 1px dashed currentColor;
-  background-color: $main-menu-background;
-}
-
 /* color-picker.js */
 
Index: admin/style/scss/themes/_dark.scss
===================================================================
--- admin/style/scss/themes/_dark.scss	(revision 3811)
+++ admin/style/scss/themes/_dark.scss	(revision 3780)
@@ -420,5 +420,4 @@
 
 $offline:                         $gray-semi-dark;
-$offline-background:              $gray-very-dark;
 
 $mark-attach-img:                 url('../images/attach.svg');
Index: admin/style/scss/themes/_light.scss
===================================================================
--- admin/style/scss/themes/_light.scss	(revision 3811)
+++ admin/style/scss/themes/_light.scss	(revision 3780)
@@ -419,5 +419,4 @@
 
 $offline:                         $gray-dark;                         // #676e78
-$offline-background:              $gray-very-light;                   // #f3f3f3
 
 $mark-attach-img:                 url('../images/attach.svg');
