diff --git a/_assets/.editorconfig b/.editorconfig
similarity index 100%
rename from _assets/.editorconfig
rename to .editorconfig
diff --git a/_assets/_old/js/common_old.js b/_assets/_old/js/common_old.js
index 4fc09a5e..6ab995cb 100644
--- a/_assets/_old/js/common_old.js
+++ b/_assets/_old/js/common_old.js
@@ -1,7 +1,5 @@
 'use strict'
 
-var data = (window.data || window.alert('Something is wrong, please refresh!'))
-
 var tempID = '_fm_internal_temporary_id'
 
 var templates = {}
@@ -9,8 +7,6 @@ var selectedItems = []
 var overlay
 var clickOverlay
 
-
-
 // Sends a costum event to itself
 Document.prototype.sendCostumEvent = function (text) {
   this.dispatchEvent(new window.CustomEvent(text))
diff --git a/_assets/_old/js/listing.js b/_assets/_old/js/listing.js
index 097b3f65..e6610a2b 100644
--- a/_assets/_old/js/listing.js
+++ b/_assets/_old/js/listing.js
@@ -350,9 +350,6 @@ document.addEventListener('DOMContentLoaded', event => {
   let items = document.getElementsByClassName('item')
 
   if (user.AllowNew) {
-    buttons.upload.addEventListener('click', (event) => {
-      document.getElementById('upload-input').click()
-    })
 
     buttons.new.addEventListener('click', listing.newFileButton)    
   }
diff --git a/_assets/_old/templates/actions.tmpl b/_assets/_old/templates/actions.tmpl
index 0d50c9e1..41b3e6be 100644
--- a/_assets/_old/templates/actions.tmpl
+++ b/_assets/_old/templates/actions.tmpl
@@ -1,91 +1,33 @@
-{{ define "right-side-actions" }}
-    {{ template "info-button" }}
-{{ end }}
-
 {{ define "right" }}
 {{- if not .IsEditor }}
-    <a aria-label="Switch View" href="?display={{- if eq .Display "mosaic" }}list{{ else }}mosaic{{ end }}" class="action">
-        <i class="material-icons">{{- if eq .Display "mosaic" }}view_list{{ else }}view_module{{ end }}</i>
-        <span>Switch view</span>
-    </a>
 
-    <button aria-label="Select multiple" class="action mobile-only" id="multiple-selection-activate">
-        <i class="material-icons">check_circle</i>
-        <span>Select</span>
-    </button>
-    {{- end }}
+<button aria-label="Select multiple" class="action mobile-only" id="multiple-selection-activate">
+<i class="material-icons">check_circle</i>
+<span>Select</span>
+</button>
+{{- end }}
 
-    {{- if and (.User.AllowNew) (not .IsEditor) }}
-    <button aria-label="Upload" title="Upload" class="action" id="upload">
-        <i class="material-icons">file_upload</i>
-        <span>Upload</span>
-    </button>
-    {{- end }}
-
-
-    <button {{ if .IsDir }}data-dropdown{{ end }} aria-label="Download" title="Download" class="action" id="download">
-        {{- if .IsEditor}}<a href="?download=true">{{ end }}
-        <i class="material-icons">file_download</i><span>Download</span>
-        {{- if .IsEditor}}</a>{{ end }}
-
-        {{- if not .IsEditor }}
-        <ul class="dropdown" id="download-drop">
-            <a tabindex="0" aria-label="Download as Zip" data-format="zip" href="?download=zip"><li>zip</li></a>
-            <a tabindex="0" aria-label="Download as Tar" data-format="tar" href="?download=tar"><li>tar</li></a>
-            <a tabindex="0" aria-label="Download as TarGz" data-format="targz" href="?download=targz"><li>tar.gz</li></a>
-            <a tabindex="0" aria-label="Download as TarBz2" data-format="tarbz2" href="?download=tarbz2"><li>tar.bz2</li></a>
-            <a tabindex="0" aria-label="Download as TarXz" data-format="tarbz2" href="?download=tarxz"><li>tar.xz</li></a>
-        </ul>
-        {{- end }}
-    </button>
-
-    
 {{ end }} 
 
-
-{{ define "left-side-actions" }}
-  
-{{ end }}
-
 {{ define "left" }}
-  {{- if and (not .IsDir) (.User.AllowEdit) }}
-    {{- if .Editor}}
+{{- if and (not .IsDir) (.User.AllowEdit) }}
+{{- if .Editor}}
 
-    {{- if eq .Data.Mode "markdown" }}
-    <button aria-label="Preview" class="action" id="preview" onclick="notImplemented(event);">
-        <i class="material-icons" title="Preview">remove_red_eye</i>
-    </button>
-    {{- end }}
+{{- if eq .Data.Mode "markdown" }}
+<button aria-label="Preview" class="action" id="preview" onclick="notImplemented(event);">
+<i class="material-icons" title="Preview">remove_red_eye</i>
+</button>
+{{- end }}
 
-    {{- if eq .Data.Visual true }}
-    <button aria-label="Toggle edit source" class="action" id="edit-source">
-        <i class="material-icons" title="Toggle edit source">code</i>
-    </button>
-    {{- end }}
+{{- if eq .Data.Visual true }}
+<button aria-label="Toggle edit source" class="action" id="edit-source">
+<i class="material-icons" title="Toggle edit source">code</i>
+</button>
+{{- end }}
 
-    {{/* end if editor */}}
+{{/* end if editor */}}
 
-    <button aria-label="Save" class="action" id="save">
-        <i class="material-icons" title="Save">save</i>
-    </button>
-    {{- end }}
-    
-    {{/* end if not dir and AllowEdit */}}
-    {{- end }}
-
-    {{- if and .IsDir .User.AllowEdit }}
-    <button aria-label="Edit" class="action" id="rename">
-        <i class="material-icons" title="Edit">mode_edit</i>
-        <span>Rename</span>
-    </button>
-
-    <button aria-label="Move" class="action" id="move">
-        <i class="material-icons" title="Move">forward</i>
-        <span>Move file</span>
-    </button>
-
-    <button aria-label="Delete" class="action" id="delete">
-        <i class="material-icons" title="Delete">delete</i><span>Delete</span>
-    </button>
-    {{- end }}
-    {{ end }}
\ No newline at end of file
+<button aria-label="Save" class="action" id="save">
+<i class="material-icons" title="Save">save</i>
+</button>
+{{- end }}
diff --git a/_assets/build/webpack.prod.conf.js b/_assets/build/webpack.prod.conf.js
index e084e9cb..8cba2668 100644
--- a/_assets/build/webpack.prod.conf.js
+++ b/_assets/build/webpack.prod.conf.js
@@ -2,7 +2,7 @@ var fs = require('fs')
 var path = require('path')
 var utils = require('./utils')
 var webpack = require('webpack')
-var config = require('../config')
+var config = require('./config')
 var merge = require('webpack-merge')
 var baseWebpackConfig = require('./webpack.base.conf')
 var CopyWebpackPlugin = require('copy-webpack-plugin')
@@ -52,7 +52,7 @@ var webpackConfig = merge(baseWebpackConfig, {
     // you can customize output by editing /index.html
     // see https://github.com/ampedandwired/html-webpack-plugin
     new HtmlWebpackPlugin({
-      filename: config.prod.index,
+      filename: config.build.index,
       template: 'index.html',
       inject: true,
       minify: {
diff --git a/_assets/index.html b/_assets/index.html
index fe6e4260..420eddf7 100644
--- a/_assets/index.html
+++ b/_assets/index.html
@@ -42,6 +42,7 @@
       showHelp: false,
       showDelete: false,
       showRename: false,
+      showMove: false,
       listing: {
         selected: [],
         multiple: false
diff --git a/_assets/src/App.vue b/_assets/src/App.vue
index 08191c7f..67caad42 100644
--- a/_assets/src/App.vue
+++ b/_assets/src/App.vue
@@ -6,7 +6,12 @@
         <search></search>
       </div>
       <div>
+        <rename-button></rename-button>
+        <move-button></move-button>
         <delete-button></delete-button>
+        <switch-button v-show="req.kind !== 'editor'"></switch-button>
+        <download-button></download-button>
+        <upload-button v-show="showUpload()"></upload-button>
         <info-button></info-button>
       </div>
       <!-- <div id="click-overlay"></div> -->
@@ -22,10 +27,10 @@
       </div>
     </nav>
     <main>
-      <listing v-if="req.kind == 'listing'"></listing> 
+      <listing v-if="req.kind === 'listing'"></listing> 
     </main>
 
-    <preview v-if="req.kind == 'preview'"></preview> 
+    <preview v-if="req.kind === 'preview'"></preview> 
 
     <!-- TODO: show on listing and allowedit -->
     <div class="floating">
@@ -59,6 +64,11 @@ import Listing from './components/Listing'
 import InfoButton from './components/InfoButton'
 import InfoPrompt from './components/InfoPrompt'
 import DeleteButton from './components/DeleteButton'
+import RenameButton from './components/RenameButton'
+import UploadButton from './components/UploadButton'
+import DownloadButton from './components/DownloadButton'
+import SwitchButton from './components/SwitchViewButton'
+import MoveButton from './components/MoveButton'
 import css from './css.js'
 
 function updateColumnSizes () {
@@ -75,6 +85,7 @@ window.addEventListener('keydown', (event) => {
     window.info.showInfo = false
     window.info.showDelete = false
     window.info.showRename = false
+    window.info.showMove = false
 
     // Unselect all files and folders.
     if (window.info.req.kind === 'listing') {
@@ -123,18 +134,38 @@ window.addEventListener('keydown', (event) => {
 
 export default {
   name: 'app',
-  components: { Search, Preview, Listing, InfoButton, InfoPrompt, Help, DeleteButton },
+  components: {
+    Search,
+    Preview,
+    Listing,
+    InfoButton,
+    InfoPrompt,
+    Help,
+    DeleteButton,
+    RenameButton,
+    DownloadButton,
+    UploadButton,
+    SwitchButton,
+    MoveButton
+  },
   mounted: function () {
     updateColumnSizes()
     window.addEventListener('resize', updateColumnSizes)
-    window.history.replaceState({ url: window.location.pathname, name: document.title }, document.title, window.location.pathname)
+    window.history.replaceState({
+      url: window.location.pathname,
+      name: document.title
+    }, document.title, window.location.pathname)
   },
   data: function () {
     return window.info
   },
   methods: {
     showOverlay: function () {
-      return this.showInfo || this.showHelp
+      return this.showInfo || this.showHelp || this.showDelete || this.showRename || this.showMove
+    },
+    showUpload: function () {
+      if (this.req.kind === 'editor') return false
+      return this.user.allowNew
     }
   }
 }
diff --git a/_assets/src/components/DeleteButton.vue b/_assets/src/components/DeleteButton.vue
index 0e553bc7..559b6fb4 100644
--- a/_assets/src/components/DeleteButton.vue
+++ b/_assets/src/components/DeleteButton.vue
@@ -1,5 +1,5 @@
 <template>
-    <button @click="show" aria-label="Delete"  title="Delete" class="action" id="delete">
+    <button @click="show" aria-label="Delete"  title="Delete" class="action">
         <i class="material-icons">delete</i>
         <span>Delete</span>
     </button>
diff --git a/_assets/src/components/DownloadButton.vue b/_assets/src/components/DownloadButton.vue
new file mode 100644
index 00000000..93bd5394
--- /dev/null
+++ b/_assets/src/components/DownloadButton.vue
@@ -0,0 +1,35 @@
+<template>
+    <button @click="download" aria-label="Download" title="Download" class="action">
+        <i class="material-icons">file_download</i>
+        <span>Download</span>
+    </button>
+</template>
+
+<script>
+var $ = window.info
+
+export default {
+  name: 'download-button',
+  methods: {
+    download: function (event) {
+      if ($.req.kind !== 'listing') {
+        window.location = window.location.pathname + '?download=true'
+        return
+      }
+
+      /*
+           <ul class="dropdown" id="download-drop">
+            <a tabindex="0" aria-label="Download as Zip" data-format="zip" href="?download=zip"><li>zip</li></a>
+            <a tabindex="0" aria-label="Download as Tar" data-format="tar" href="?download=tar"><li>tar</li></a>
+            <a tabindex="0" aria-label="Download as TarGz" data-format="targz" href="?download=targz"><li>tar.gz</li></a>
+            <a tabindex="0" aria-label="Download as TarBz2" data-format="tarbz2" href="?download=tarbz2"><li>tar.bz2</li></a>
+            <a tabindex="0" aria-label="Download as TarXz" data-format="tarbz2" href="?download=tarxz"><li>tar.xz</li></a>
+        </ul>
+        */
+      // document.getElementById('upload-input').click()
+      // TODO
+      alert('Not Implemented!')
+    }
+  }
+}
+</script>
diff --git a/_assets/src/components/InfoButton.vue b/_assets/src/components/InfoButton.vue
index 4e101b6d..1704d887 100644
--- a/_assets/src/components/InfoButton.vue
+++ b/_assets/src/components/InfoButton.vue
@@ -1,5 +1,5 @@
 <template>
-    <button @click="show" title="Info" aria-label="Info" class="action" id="info">
+    <button @click="show" title="Info" aria-label="Info" class="action">
         <i class="material-icons">info</i>
         <span>Info</span>
     </button>
diff --git a/_assets/src/components/Listing.vue b/_assets/src/components/Listing.vue
index 0d3b96b3..6b22edf6 100644
--- a/_assets/src/components/Listing.vue
+++ b/_assets/src/components/Listing.vue
@@ -57,9 +57,7 @@
           </item>
         </div>
 
-        <!--
-          <input style="display:none" type="file" id="upload-input" onchange="listing.handleFiles(this.files, '')" value="Upload" multiple>
-          -->
+        <input style="display:none" type="file" id="upload-input" @change="uploadInput($event)" value="Upload" multiple>
     </div>
 </template>
 
@@ -155,6 +153,9 @@ export default {
         })
       }
     },
+    uploadInput: function (event) {
+      this.handleFiles(event.currentTarget.files, '')
+    },
     handleFiles: function (files, base) {
       // buttons.setLoading('upload')
       let promises = []
diff --git a/_assets/src/components/MoveButton.vue b/_assets/src/components/MoveButton.vue
new file mode 100644
index 00000000..d15ef264
--- /dev/null
+++ b/_assets/src/components/MoveButton.vue
@@ -0,0 +1,17 @@
+<template>
+    <button @click="show" aria-label="Move" title="Move" class="action">
+        <i class="material-icons">forward</i>
+        <span>Move file</span>
+    </button>
+</template>
+
+<script>
+export default {
+  name: 'move-button',
+  methods: {
+    show: function (event) {
+      window.info.showMove = true
+    }
+  }
+}
+</script>
diff --git a/_assets/src/components/Preview.vue b/_assets/src/components/Preview.vue
index aedfbf17..063169aa 100644
--- a/_assets/src/components/Preview.vue
+++ b/_assets/src/components/Preview.vue
@@ -4,7 +4,11 @@
             <button @click="back" class="action" aria-label="Close Preview" id="close">
                 <i class="material-icons">close</i>
             </button>
-            <!-- TODO: add more buttons -->
+            
+            <rename-button v-if="allowEdit()"></rename-button>
+            <delete-button v-if="allowEdit()"></delete-button>
+            <download-button></download-button>
+            <info-button></info-button>
         </div>
 
         <div class="preview">
@@ -24,9 +28,19 @@
 
 <script>
 import page from '../page'
+import InfoButton from './InfoButton'
+import DeleteButton from './DeleteButton'
+import RenameButton from './RenameButton'
+import DownloadButton from './DownloadButton'
 
 export default {
   name: 'preview',
+  components: {
+    InfoButton,
+    DeleteButton,
+    RenameButton,
+    DownloadButton
+  },
   data: function () {
     return window.info.req.data
   },
@@ -37,6 +51,9 @@ export default {
     back: function (event) {
       let url = page.removeLastDir(window.location.pathname)
       page.open(url)
+    },
+    allowEdit: function (event) {
+      return window.info.user.allowEdit
     }
   }
 }
diff --git a/_assets/src/components/RenameButton.vue b/_assets/src/components/RenameButton.vue
new file mode 100644
index 00000000..875dd5fa
--- /dev/null
+++ b/_assets/src/components/RenameButton.vue
@@ -0,0 +1,17 @@
+<template>
+    <button @click="show" aria-label="Rename" title="Rename" class="action">
+        <i class="material-icons">mode_edit</i>
+        <span>Rename</span>
+    </button>
+</template>
+
+<script>
+export default {
+  name: 'rename-button',
+  methods: {
+    show: function (event) {
+      window.info.showRename = true
+    }
+  }
+}
+</script>
diff --git a/_assets/src/components/SwitchViewButton.vue b/_assets/src/components/SwitchViewButton.vue
new file mode 100644
index 00000000..d2a1890a
--- /dev/null
+++ b/_assets/src/components/SwitchViewButton.vue
@@ -0,0 +1,33 @@
+<template>
+  <button @click="change" aria-label="Switch View" title="Switch View" class="action">
+    <i class="material-icons">{{ icon() }}</i>
+    <span>Switch view</span>
+  </button>
+</template>
+
+<script>
+import page from '../page'
+
+var $ = window.info
+
+export default {
+  name: 'switch-button',
+  methods: {
+    change: function (event) {
+      let url = window.location.pathname + '?display='
+
+      if ($.req.data.display === 'mosaic') {
+        url += 'list'
+      } else {
+        url += 'mosaic'
+      }
+
+      page.open(url)
+    },
+    icon: function () {
+      if ($.req.data.display === 'mosaic') return 'view_list'
+      return 'view_module'
+    }
+  }
+}
+</script>
diff --git a/_assets/src/components/UploadButton.vue b/_assets/src/components/UploadButton.vue
new file mode 100644
index 00000000..551fd072
--- /dev/null
+++ b/_assets/src/components/UploadButton.vue
@@ -0,0 +1,17 @@
+<template>
+    <button @click="upload" aria-label="Upload" title="Upload" class="action">
+        <i class="material-icons">file_upload</i>
+        <span>Upload</span>
+    </button>
+</template>
+
+<script>
+export default {
+  name: 'upload-button',
+  methods: {
+    upload: function (event) {
+      document.getElementById('upload-input').click()
+    }
+  }
+}
+</script>
diff --git a/_assets/src/css/listing.css b/_assets/src/css/listing.css
new file mode 100644
index 00000000..e2bcb119
--- /dev/null
+++ b/_assets/src/css/listing.css
@@ -0,0 +1,243 @@
+
+
+/* * * * * * * * * * * * * * * *
+ *            LISTING          *
+ * * * * * * * * * * * * * * * */
+
+#listing {
+    max-width: calc(100% - 1.2em);
+    width: 100%;
+}
+
+#listing h2 {
+    margin: 0 0 0 0.5em;
+    font-size: .9em;
+    color: rgba(0, 0, 0, 0.38);
+    font-weight: 500;
+}
+
+#listing .item div:last-of-type * {
+    text-overflow: ellipsis;
+    overflow: hidden;
+}
+
+#listing>div {
+    display: flex;
+    padding: 0;
+    flex-wrap: wrap;
+    justify-content: flex-start;
+    position: relative;
+}
+
+#listing .item {
+    background-color: #fff;
+    position: relative;
+    display: flex;
+    flex-wrap: nowrap;
+    color: #6f6f6f;
+    transition: .1s ease all;
+    align-items: center;
+    cursor: pointer;
+}
+
+#listing .item div:last-of-type {
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+}
+
+#listing .item p {
+    margin: 0;
+}
+
+#listing .item .size,
+#listing .item .modified {
+    font-size: 0.9em;
+}
+
+#listing .item .name {
+    font-weight: bold;
+}
+
+#listing .item i {
+    font-size: 4em;
+    margin-right: 0.1em;
+    vertical-align: bottom;
+}
+
+#listing h2.message,
+.message {
+    text-align: center;
+    font-size: 3em;
+    margin: 1em auto;
+    display: block !important;
+    width: 95%;
+    color: rgba(0, 0, 0, 0.3);
+    font-weight: 500;
+}
+
+.message i {
+    font-size: inherit;
+    vertical-align: middle;
+}
+
+
+/* * * * * * * * * * * * * * * *
+ *        LISTING - MOSAIC     *
+ * * * * * * * * * * * * * * * */
+
+#listing.mosaic {
+    padding-top: 1em;
+}
+
+#listing.mosaic .item {
+    width: calc(33% - 1em);
+    margin: .5em;
+    padding: 0.5em;
+    border-radius: 0.2em;
+    box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12);
+}
+
+#listing.mosaic .item:hover {
+    box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24) !important;
+}
+
+#listing.mosaic .header {
+    display: none;
+}
+
+#listing.mosaic .item div:first-of-type {
+    width: 5em;
+}
+
+#listing.mosaic .item div:last-of-type {
+    width: calc(100% - 5vw);
+}
+
+
+/* * * * * * * * * * * * * * * *
+  *        LISTING - DETAIL     *
+  * * * * * * * * * * * * * * * */
+
+#listing.list {
+    flex-direction: column;
+    padding-top: 3.25em;
+    width: 100%;
+    max-width: 100%;
+    margin: 0;
+}
+
+#listing.list .item {
+    width: 100%;
+    margin: 0;
+    border: 1px solid rgba(0, 0, 0, 0.1);
+    padding: 1em;
+    border-top: 0;
+}
+
+#listing.list h2 {
+    display: none;
+}
+
+#listing .item[aria-selected=true] {
+    background: #2196f3 !important;
+    color: #fff !important;
+}
+
+#listing.list .item div:first-of-type {
+    width: 3em;
+}
+
+#listing.list .item div:first-of-type i {
+    font-size: 2em;
+}
+
+#listing.list .item div:last-of-type {
+    width: calc(100% - 3em);
+    display: flex;
+    align-items: center;
+}
+
+#listing.list .item .name {
+    width: 50%;
+}
+
+#listing.list .item .size {
+    width: 25%;
+}
+
+#listing .item.header {
+    display: none !important;
+    background-color: #ccc;
+}
+
+#listing.list .header i {
+    font-size: 1.5em;
+    vertical-align: middle;
+    margin-left: .2em;
+}
+
+#listing.list .item.header {
+    display: flex !important;
+    background: #f8f8f8;
+    position: fixed;
+    width: 78%;
+    top: 4em;
+    left: 20%;
+    z-index: 999;
+    padding: .85em;
+    border: 0;
+    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+}
+
+#listing.list .item.header>div:first-child {
+    width: 0;
+}
+
+#listing.list .item.header .name {
+    margin-right: 3em;
+}
+
+#listing.list .header {
+    display: flex;
+    background: #fafafa;
+    position: fixed;
+    width: 100%;
+    top: 7.8em;
+    left: 0;
+    z-index: 999;
+}
+
+#listing.list .header a {
+    color: inherit;
+}
+
+#listing.list .item.header>div:first-child {
+    width: 0;
+}
+
+#listing.list .name {
+    font-weight: normal;
+}
+
+#listing.list .item.header .name {
+    margin-right: 3em;
+}
+
+#listing.list .header span {
+    vertical-align: middle;
+}
+
+#listing.list .header i {
+    opacity: 0;
+    transition: .1s ease all;
+}
+
+#listing.list .header p:hover i,
+#listing.list .header .active i {
+    opacity: 1;
+}
+
+#listing.list .item.header .active {
+    font-weight: bold;
+}
\ No newline at end of file
diff --git a/_assets/src/css/prompts.css b/_assets/src/css/prompts.css
index e4ac6c32..a28adf3a 100644
--- a/_assets/src/css/prompts.css
+++ b/_assets/src/css/prompts.css
@@ -26,7 +26,7 @@
 .overlay.active,
 .prompt.active,
 .help.active {
-    animation: .2s show forwards;
+    animation: .1s show forwards;
 }
 
 .prompt h3 {
diff --git a/_assets/src/css/styles.css b/_assets/src/css/styles.css
index 1c9c1598..b977bbb8 100644
--- a/_assets/src/css/styles.css
+++ b/_assets/src/css/styles.css
@@ -2,6 +2,7 @@
 @import "./normalize.css";
 @import "./header.css";
 @import "./prompts.css";
+@import "./listing.css";
 
 body {
     font-family: 'Roboto', sans-serif;
@@ -432,248 +433,6 @@ main {
 }
 
 
-/* * * * * * * * * * * * * * * *
- *            LISTING          *
- * * * * * * * * * * * * * * * */
-
-#listing {
-    max-width: calc(100% - 1.2em);
-    width: 100%;
-}
-
-#listing h2 {
-    margin: 0 0 0 0.5em;
-    font-size: .9em;
-    color: rgba(0, 0, 0, 0.38);
-    font-weight: 500;
-}
-
-#listing .item div:last-of-type * {
-    text-overflow: ellipsis;
-    overflow: hidden;
-}
-
-#listing>div {
-    display: flex;
-    padding: 0;
-    flex-wrap: wrap;
-    justify-content: flex-start;
-    position: relative;
-}
-
-#listing .item {
-    background-color: #fff;
-    position: relative;
-    display: flex;
-    flex-wrap: nowrap;
-    color: #6f6f6f;
-    transition: .1s ease all;
-    align-items: center;
-    cursor: pointer;
-}
-
-#listing .item div:last-of-type {
-    text-overflow: ellipsis;
-    white-space: nowrap;
-    overflow: hidden;
-}
-
-#listing .item p {
-    margin: 0;
-}
-
-#listing .item .size,
-#listing .item .modified {
-    font-size: 0.9em;
-}
-
-#listing .item .name {
-    font-weight: bold;
-}
-
-#listing .item i {
-    font-size: 4em;
-    margin-right: 0.1em;
-    vertical-align: bottom;
-}
-
-#listing h2.message,
-.message {
-    text-align: center;
-    font-size: 3em;
-    margin: 1em auto;
-    display: block !important;
-    width: 95%;
-    color: rgba(0, 0, 0, 0.3);
-    font-weight: 500;
-}
-
-.message i {
-    font-size: inherit;
-    vertical-align: middle;
-}
-
-
-/* * * * * * * * * * * * * * * *
- *        LISTING - MOSAIC     *
- * * * * * * * * * * * * * * * */
-
-#listing.mosaic {
-    padding-top: 1em;
-}
-
-#listing.mosaic .item {
-    width: calc(33% - 1em);
-    margin: .5em;
-    padding: 0.5em;
-    border-radius: 0.2em;
-    box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12);
-}
-
-#listing.mosaic .item:hover {
-    box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24) !important;
-}
-
-#listing.mosaic .header {
-    display: none;
-}
-
-#listing.mosaic .item div:first-of-type {
-    width: 5em;
-}
-
-#listing.mosaic .item div:last-of-type {
-    width: calc(100% - 5vw);
-}
-
-
-/* * * * * * * * * * * * * * * *
-  *        LISTING - DETAIL     *
-  * * * * * * * * * * * * * * * */
-
-#listing.list {
-    flex-direction: column;
-    padding-top: 3.25em;
-    width: 100%;
-    max-width: 100%;
-    margin: 0;
-}
-
-#listing.list .item {
-    width: 100%;
-    margin: 0;
-    border: 1px solid rgba(0, 0, 0, 0.1);
-    padding: 1em;
-    border-top: 0;
-}
-
-#listing.list h2 {
-    display: none;
-}
-
-#listing .item[aria-selected=true] {
-    background: #2196f3 !important;
-    color: #fff !important;
-}
-
-#listing.list .item div:first-of-type {
-    width: 3em;
-}
-
-#listing.list .item div:first-of-type i {
-    font-size: 2em;
-}
-
-#listing.list .item div:last-of-type {
-    width: calc(100% - 3em);
-    display: flex;
-    align-items: center;
-}
-
-#listing.list .item .name {
-    width: 50%;
-}
-
-#listing.list .item .size {
-    width: 25%;
-}
-
-#listing .item.header {
-    display: none !important;
-    background-color: #ccc;
-}
-
-#listing.list .header i {
-    font-size: 1.5em;
-    vertical-align: middle;
-    margin-left: .2em;
-}
-
-#listing.list .item.header {
-    display: flex !important;
-    background: #f8f8f8;
-    position: fixed;
-    width: 78%;
-    top: 7.8em;
-    left: 20%;
-    z-index: 999;
-    padding: .85em;
-    border: 0;
-    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
-}
-
-#listing.list .item.header>div:first-child {
-    width: 0;
-}
-
-#listing.list .item.header .name {
-    margin-right: 3em;
-}
-
-#listing.list .header {
-    display: flex;
-    background: #fafafa;
-    position: fixed;
-    width: 100%;
-    top: 7.8em;
-    left: 0;
-    z-index: 999;
-}
-
-#listing.list .header a {
-    color: inherit;
-}
-
-#listing.list .item.header>div:first-child {
-    width: 0;
-}
-
-#listing.list .name {
-    font-weight: normal;
-}
-
-#listing.list .item.header .name {
-    margin-right: 3em;
-}
-
-#listing.list .header span {
-    vertical-align: middle;
-}
-
-#listing.list .header i {
-    opacity: 0;
-    transition: .1s ease all;
-}
-
-#listing.list .header p:hover i,
-#listing.list .header .active i {
-    opacity: 1;
-}
-
-#listing.list .item.header .active {
-    font-weight: bold;
-}
-
 
 /* PREVIEWER */