Upgrade to react-bootstrap V2 with Bootstrap V5 (#1394)

The upgrade to bootstrap V5 required migrating from Less to Sass.
All CSS was updated to use variables instead of color literals,
leading to all colors being defined in _variables.scss.
Similar colors were also removed in order to improve consistency across
different pages and components.
diff --git a/.gitignore b/.gitignore
index 8928229..96b4010 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,6 +30,7 @@
 !i18n.json.default.json
 test/test.config.js
 app/initialize.js
+assets/scss/_variable_overrides.scss
 .module-cache
 test/nightwatch_tests/nightwatch.json
 test/nightwatch_tests/reports/*
@@ -45,5 +46,6 @@
 # test coverage dir
 coverage
 
-# Jetbrains IDE
+# IDEs
 .idea/
+.vscode
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 2bc0c87..a0cf61f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -46,8 +46,7 @@
 Before you submit the Pull Request, please [run our test suite](#tests.md) and make sure that it passes.
 
 We regularly check the PR list for Fauxton and should get back
-to you with a code review. If no one has responded to you yet, you can find us on [Freenode IRC in #couchdb-dev][8].
-Ping **garren**, **robertkowalski** or **michellep** though anyone in the room should be able to help you.
+to you with a code review.
 
 ## Get in Touch
 
diff --git a/app/addons/activetasks/__tests__/components.test.js b/app/addons/activetasks/__tests__/components.test.js
index d5dea22..e239ed8 100644
--- a/app/addons/activetasks/__tests__/components.test.js
+++ b/app/addons/activetasks/__tests__/components.test.js
@@ -10,7 +10,7 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 import TableHeader from '../components/tableheader';
-import FilterTabs from '../components/filtertabs';
+import {ActiveTasksFilterTabs, ActiveTasksFilter} from '../components/filtertabs';
 import React from "react";
 import {mount} from 'enzyme';
 import sinon from "sinon";
@@ -31,7 +31,7 @@
         radioTexts.forEach((text) => {
           let spy = sinon.spy();
           const tabs = mount(
-            <FilterTabs
+            <ActiveTasksFilterTabs
               onRadioClick={spy}
               selectedRadio={"All Tasks"}
               radioNames={radioTexts}
@@ -46,12 +46,12 @@
       it('should trigger change to search term', () => {
         const spy = sinon.spy();
         const tabs = mount(
-          <FilterTabs
+          <ActiveTasksFilter
             onSearch={spy}
-            selectedRadio={"All Tasks"}
           />
         );
-        tabs.find('.searchbox').simulate('change', {target: {value: 'searching'}});
+
+        tabs.find('input.form-control[name="search"]').simulate('change', {target: {value: 'searching'}});
         expect(spy.calledOnce).toBeTruthy();
       });
     });
@@ -64,7 +64,6 @@
       ];
 
       it('should trigger change to radio buttons', () => {
-
         tableTexts.forEach((text) => {
           let spy = sinon.spy();
           const table = mount(
@@ -77,7 +76,7 @@
             </table>
           );
 
-          table.find(`.${text}`).simulate('click');
+          table.find(`.header-${text}`).simulate('click');
           expect(spy.calledOnce).toBeTruthy();
         });
       });
diff --git a/app/addons/activetasks/assets/less/activetasks.less b/app/addons/activetasks/assets/less/activetasks.less
deleted file mode 100644
index 5b4cb7a..0000000
--- a/app/addons/activetasks/assets/less/activetasks.less
+++ /dev/null
@@ -1,155 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-@import "../../../../../assets/less/bootstrap/variables.less";
-@import "../../../../../assets/less/variables.less";
-@import "../../../../../assets/less/bootstrap/mixins.less";
-@import "../../../../../assets/less/mixins.less";
-
-#active-tasks-page {
-  overflow: auto;
-
-  .inner {
-    overflow: auto;
-    height: 100%;
-  }
-
-  .task-tabs li,
-  .active-tasks td.tableheader {
-    cursor: pointer;
-    padding-bottom: 15px;
-
-    &.type {
-      width: 10%;
-    }
-
-    &.database {
-      width: 30%;
-    }
-
-    &.started-on {
-      width: 13%;
-    }
-
-    &.updated-on {
-      width: 13%;
-    }
-
-    &.pid {
-      width: 10%;
-    }
-
-    &.progress {
-      width: 23%;
-    }
-  }
-
-  #active-tasks-table {
-    min-width: 725px;
-    td.header-field {
-      padding: 0px;
-    }
-
-    p.multiline-active-tasks-message {
-      margin: 0;
-      line-height: 1.3;
-      margin-bottom: 3px;
-
-      &.time:nth-child(2) {
-        color: #888;
-      }
-
-      &.to-from-database{
-        &:first-child {
-          border-bottom: 1px solid #ddd;
-        }
-        padding-bottom: 15px;
-      }
-    }
-  }
-
-  .task-search-database {
-    margin: 20px;
-  }
-
-  .active-tasks.dashboard-upper-menu {
-    left: 220px;
-
-    .closeMenu & {
-      left: 64px;
-    }
-  }
-
-  .component-tab-element-wrapper {
-    #active-tasks-search-box {
-      display: inline;
-      font-size: 14px;
-      font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
-      height: 51px;
-      background-color: #eee;
-      width: 200px;
-      margin: 9px 0 0 0;
-
-      &:focus {
-        background-color: #fff;
-        outline-color: #fff;
-      };
-    }
-  }
-
-  .dashboard-lower-menu {
-    padding-top: 90px;
-    padding-left: 20px;
-  }
-
-  .header-field {
-    background-color: #ccc;
-
-
-    &.radio {
-      display: none;
-    }
-
-    &.label-text {
-      display: block;
-      font-weight: bold;
-      padding:10px;
-      margin: 0px;
-      height: 50px;
-      .noselect()
-    }
-
-    .table td& {
-      padding: 0px;
-      margin: 0px;
-    }
-
-    .active-tasks-header {
-      background-color: #ccc;
-    }
-
-    .icon-caret-up, .icon-caret-down {
-      color: @brandHighlight;
-    }
-  }
-}
-
-.active-tasks__polling-wrapper {
-  display: flex;
-  align-items: center;
-  flex-direction: row;
-  height: 100%;
-
-  &--ie1X {
-      align-items: stretch;
-  }
-}
diff --git a/app/addons/activetasks/assets/scss/activetasks.scss b/app/addons/activetasks/assets/scss/activetasks.scss
new file mode 100644
index 0000000..44bda09
--- /dev/null
+++ b/app/addons/activetasks/assets/scss/activetasks.scss
@@ -0,0 +1,89 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+@import '../../../../../assets/scss/variables';
+@import '../../../../../assets/scss/mixins';
+
+#active-tasks-page {
+  overflow: auto;
+
+  .inner {
+    overflow: auto;
+    height: 100%;
+  }
+
+  .table-active-tasks {
+    font-size: 0.875rem;
+    th {
+      cursor: pointer;
+
+      &.header-type {
+        width: 10%;
+      }
+
+      &.header-database {
+        width: 30%;
+      }
+
+      &.header-tarted-on {
+        width: 13%;
+      }
+
+      &.header-updated-on {
+        width: 13%;
+      }
+
+      &.header-pid {
+        width: 10%;
+      }
+
+      &.header-progress {
+        width: 23%;
+      }
+
+      .fonticon-up-dir,
+      .fonticon-down-dir {
+        color: $cf-brand-highlight;
+      }
+    }
+
+    p.multiline-active-tasks-message {
+      margin: 0;
+      line-height: 1.3;
+      margin-bottom: 3px;
+
+      &.time:nth-child(2) {
+        color: $cf-text01-muted;
+      }
+
+      &.to-from-database {
+        &:first-child {
+          border-bottom: 1px solid $cf-border-color01;
+        }
+        padding-bottom: 15px;
+      }
+    }
+  }
+
+  div#active-tasks-search {
+    margin-top:1.5rem;
+    padding: 0 30px;
+  }
+
+  .component-tab-element-wrapper {
+    #active-tasks-search-box {
+      display: inline;
+      width: 220px;
+      margin-left:8px;
+    }
+  }
+}
\ No newline at end of file
diff --git a/app/addons/activetasks/base.js b/app/addons/activetasks/base.js
index f51cf89..af769a3 100644
--- a/app/addons/activetasks/base.js
+++ b/app/addons/activetasks/base.js
@@ -12,7 +12,7 @@
 
 import FauxtonAPI from "../../core/api";
 import Activetasks from "./routes";
-import "./assets/less/activetasks.less";
+import "./assets/scss/activetasks.scss";
 import reducers from './reducers';
 
 Activetasks.initialize = function () {
diff --git a/app/addons/activetasks/components/controller.js b/app/addons/activetasks/components/controller.js
index ec8a841..3947596 100644
--- a/app/addons/activetasks/components/controller.js
+++ b/app/addons/activetasks/components/controller.js
@@ -10,7 +10,7 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 import React from 'react';
-import ActiveTasksFilterTabs from './filtertabs';
+import {ActiveTasksFilterTabs, ActiveTasksFilter} from './filtertabs';
 import ActiveTaskTable from './table';
 
 export default class ActiveTasksController extends React.Component {
@@ -42,8 +42,16 @@
           <ActiveTasksFilterTabs
             searchTerm={searchTerm}
             selectedRadio={selectedRadio}
-            onSearch={setSearchTerm}
             onRadioClick={this.switchTab}/>
+
+          <div className="row">
+            <div id="active-tasks-search" className="col-12 col-md-6">
+              <ActiveTasksFilter
+                onSearch={setSearchTerm}
+              />
+            </div>
+          </div>
+
           <ActiveTaskTable
             isLoading={isLoading}
             tasks={tasks}
diff --git a/app/addons/activetasks/components/filtertabs.js b/app/addons/activetasks/components/filtertabs.js
index 8d5410c..22b7805 100644
--- a/app/addons/activetasks/components/filtertabs.js
+++ b/app/addons/activetasks/components/filtertabs.js
@@ -12,8 +12,9 @@
 import React from 'react';
 import Components from "../../components/react-components";
 const {TabElement, TabElementWrapper} = Components;
+import { Form, InputGroup } from 'react-bootstrap';
 
-export default class ActiveTasksFilterTabs extends React.Component {
+export class ActiveTasksFilterTabs extends React.Component {
   static defaultProps = {
     radioNames : [
       'All Tasks',
@@ -49,27 +50,35 @@
     );
   };
 
+  render() {
+    const filterTabs = this.createFilterTabs();
+    return (
+      <TabElementWrapper>
+        {filterTabs}
+      </TabElementWrapper>
+    );
+  }
+}
+
+export class ActiveTasksFilter extends React.Component {
   searchTermChange = (e) => {
     var searchTerm = e.target.value;
     this.props.onSearch(searchTerm);
   };
 
   render() {
-    const filterTabs = this.createFilterTabs();
     return (
-      <TabElementWrapper>
-        {filterTabs}
-        <li className="component-tab-list-element">
-          <input
-            id="active-tasks-search-box"
-            className="searchbox"
-            type="text"
-            name="search"
-            placeholder="Search for databases..."
-            value={this.props.searchTerm}
-            onChange={this.searchTermChange} />
-        </li>
-      </TabElementWrapper>
+      <InputGroup id="replication-filter-group">
+        <InputGroup.Text><i className="fonticon-filter" /></InputGroup.Text>
+        <Form.Control
+          id="active-tasks-search-box"
+          type="text"
+          name="search"
+          placeholder="Search for databases..."
+          value={this.props.searchTerm}
+          onChange={this.searchTermChange}
+        />
+      </InputGroup>
     );
   }
 }
diff --git a/app/addons/activetasks/components/polling.js b/app/addons/activetasks/components/polling.js
index 6e3d52e..c68eb09 100644
--- a/app/addons/activetasks/components/polling.js
+++ b/app/addons/activetasks/components/polling.js
@@ -11,7 +11,6 @@
 // the License.
 
 import React from 'react';
-import Helpers from '../../../helpers';
 import Components from "../../components/react-components";
 const { Polling } = Components;
 
@@ -27,12 +26,8 @@
 
 
   render() {
-    let activePollingClass = "active-tasks__polling-wrapper";
-    if (Helpers.isIE1X()) {
-      activePollingClass += " " + activePollingClass + "--ie1X";
-    }
     return (
-      <div className={activePollingClass}>
+      <div>
         <Polling
           min={1}
           max={30}
diff --git a/app/addons/activetasks/components/table.js b/app/addons/activetasks/components/table.js
index b006090..5656f88 100644
--- a/app/addons/activetasks/components/table.js
+++ b/app/addons/activetasks/components/table.js
@@ -12,6 +12,7 @@
 import React from 'react';
 import ActiveTasksTableBody from './tablebody';
 import ActiveTasksTableHeader from './tableheader';
+import { Table } from 'react-bootstrap';
 
 export default class ActiveTaskTable extends React.Component {
   render() {
@@ -27,7 +28,7 @@
 
     return (
       <div id="dashboard-lower-content">
-        <table id="active-tasks-table" className="table table-bordered table-striped active-tasks">
+        <Table striped className="table-active-tasks">
           <ActiveTasksTableHeader
             onTableHeaderClick={onTableHeaderClick}
             sortByHeader={sortByHeader}
@@ -37,7 +38,7 @@
             selectedRadio={selectedRadio}
             isLoading={isLoading}
             searchTerm={searchTerm}/>
-        </table>
+        </Table>
       </div>
     );
   }
diff --git a/app/addons/activetasks/components/tableheader.js b/app/addons/activetasks/components/tableheader.js
index 2b85cc5..e1e9105 100644
--- a/app/addons/activetasks/components/tableheader.js
+++ b/app/addons/activetasks/components/tableheader.js
@@ -24,7 +24,7 @@
     const sortBy = this.props.sortByHeader;
     const currentName = this.props.headerName;
     const headerIsAscending = this.props.headerIsAscending;
-    const arrow = headerIsAscending ? 'icon icon-caret-up' : 'icon icon-caret-down';
+    const arrow = headerIsAscending ? 'fonticon fonticon-up-dir' : 'fonticon fonticon-down-dir';
 
     if (sortBy === currentName) {
       return <i className={arrow}></i>;
@@ -37,11 +37,9 @@
 
   render() {
     return (
-      <td className={`header-field ${this.props.headerName} tableheader`} onClick={this.onTableHeaderClick}>
-        <label className="header-field label-text active-tasks-header noselect">
-          {this.props.displayName} {this.arrow()}
-        </label>
-      </td>
+      <th className={`header-${this.props.headerName}`} onClick={this.onTableHeaderClick}>
+        {this.props.displayName} {this.arrow()}
+      </th>
     );
   }
 }
diff --git a/app/addons/auth/__tests__/components.test.js b/app/addons/auth/__tests__/components.test.js
index 8a1066e..222d284 100644
--- a/app/addons/auth/__tests__/components.test.js
+++ b/app/addons/auth/__tests__/components.test.js
@@ -61,13 +61,13 @@
 
     it('should update state on password change', () => {
       const changePasswordForm = mount(<ChangePasswordForm />);
-      changePasswordForm.find('#password').simulate('change', { target: { value: 'bobsyouruncle' }});
+      changePasswordForm.find('input#password').simulate('change', { target: { value: 'bobsyouruncle' }});
       expect(changePasswordForm.state('password')).toEqual('bobsyouruncle');
     });
 
     it('should update state on password confirm change', () => {
       const changePasswordForm = mount(<ChangePasswordForm />);
-      changePasswordForm.find('#password-confirm').simulate('change', { target: { value: 'hotdiggity' }});
+      changePasswordForm.find('input#password-confirm').simulate('change', { target: { value: 'hotdiggity' }});
       expect(changePasswordForm.state('passwordConfirm')).toEqual('hotdiggity');
     });
 
@@ -82,13 +82,13 @@
   describe('CreateAdminForm', () => {
     it('should update username state', () => {
       const createAdminForm = mount(<CreateAdminForm loginAfter={false} />);
-      createAdminForm.find('#username').simulate('change',  { target: { value: 'catsmeow' }});
+      createAdminForm.find('input#username').simulate('change',  { target: { value: 'catsmeow' }});
       expect(createAdminForm.state('username')).toEqual('catsmeow');
     });
 
     it('should call action to update password confirm on field change', () => {
       const createAdminForm = mount(<CreateAdminForm loginAfter={false} />);
-      createAdminForm.find('#password').simulate('change',  { target: { value: 'topnotch' }});
+      createAdminForm.find('input#password').simulate('change',  { target: { value: 'topnotch' }});
       expect(createAdminForm.state('password')).toEqual('topnotch');
     });
   });
diff --git a/app/addons/auth/assets/less/auth.less b/app/addons/auth/assets/scss/auth.scss
similarity index 89%
rename from app/addons/auth/assets/less/auth.less
rename to app/addons/auth/assets/scss/auth.scss
index bf6ddcc..781a080 100644
--- a/app/addons/auth/assets/less/auth.less
+++ b/app/addons/auth/assets/scss/auth.scss
@@ -10,7 +10,7 @@
 //  License for the specific language governing permissions and limitations under
 //  the License.
 
-@import "../../../../../assets/less/variables.less";
+@import "../../../../../assets/scss/variables";
 
 .sidenav header {
   padding-left: 24px !important;
@@ -22,6 +22,7 @@
 .faux__auth-page {
   padding: 20px !important;
   h3 {
-    margin-top: 0;
+    margin-bottom: 1rem;
+    
   }
 }
diff --git a/app/addons/auth/base.js b/app/addons/auth/base.js
index 0fce5f8..0b638f1 100644
--- a/app/addons/auth/base.js
+++ b/app/addons/auth/base.js
@@ -12,7 +12,7 @@
 
 import FauxtonAPI from "../../core/api";
 import RouteObjects from './routes';
-import "./assets/less/auth.less";
+import "./assets/scss/auth.scss";
 import Session from './session';
 
 const cleanupAuthSection = () => {
diff --git a/app/addons/auth/components/changepasswordform.js b/app/addons/auth/components/changepasswordform.js
index 14943d7..f4e33c2 100644
--- a/app/addons/auth/components/changepasswordform.js
+++ b/app/addons/auth/components/changepasswordform.js
@@ -11,7 +11,7 @@
 // the License.
 
 import React from "react";
-import ReactDOM from "react-dom";
+import { Button, Form } from 'react-bootstrap';
 import FauxtonAPI from '../../../core/api';
 import {
   changePassword
@@ -52,35 +52,33 @@
         <h3>Change Password</h3>
 
         <form id="change-password" onSubmit={this.changePassword.bind(this)}>
-          <p>
-            Enter your new password.
-          </p>
-
-          <input
-            id="password"
-            type="password"
-            ref={node => this.passwordField = node}
-            name="password"
-            placeholder="Password"
-            size="24"
-            onChange={this.onChangePassword.bind(this)}
-            value={this.state.password}
-          />
-          <br />
-          <input
-            id="password-confirm"
-            type="password"
-            name="password_confirm"
-            placeholder="Verify Password"
-            size="24"
-            onChange={this.onChangePasswordConfirm.bind(this)}
-            value={this.state.passwordConfirm}
-          />
-
-          <br />
-          <p>
-            <button type="submit" className="btn btn-primary">Change</button>
-          </p>
+          <div className='row'>
+            <div className='col-12 col-md-5 col-xl-4 mb-3'>
+              <label>Enter your new password</label>
+              <Form.Control type="password"
+                id="password"
+                ref={node => this.passwordField = node}
+                name="password"
+                placeholder="Password"
+                onChange={this.onChangePassword.bind(this)}
+                value={this.state.password} />
+            </div>
+          </div>
+          <div className='row'>
+            <div className='col-12 col-md-5 col-xl-4 mb-3'>
+              <Form.Control type="password"
+                id="password-confirm"
+                name="password_confirm"
+                placeholder="Verify Password"
+                onChange={this.onChangePasswordConfirm.bind(this)}
+                value={this.state.passwordConfirm} />
+            </div>
+          </div>
+          <div className='row'>
+            <div className='col-12 mb-3'>
+              <Button type="submit" variant="cf-primary">Change</Button>
+            </div>
+          </div>
         </form>
       </div>
     );
diff --git a/app/addons/auth/components/createadminform.js b/app/addons/auth/components/createadminform.js
index 333b419..7eb285b 100644
--- a/app/addons/auth/components/createadminform.js
+++ b/app/addons/auth/components/createadminform.js
@@ -10,13 +10,15 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import React from "react";
+import { Button, Form } from 'react-bootstrap';
+import {connect} from 'react-redux';
 import PropTypes from 'prop-types';
 
-import React from "react";
 import {
   createAdmin
 } from "./../actions";
-import {connect} from 'react-redux';
+
 
 export class CreateAdminForm extends React.Component {
   constructor(props) {
@@ -56,47 +58,50 @@
 
         <p>
           Before a server admin is configured, all clients have admin privileges. This is fine when
-
-          HTTP access is restricted to trusted users. <strong>
+          HTTP access is restricted to trusted users.
+          <strong>
             If end-users will be accessing this
             CouchDB, you must create an admin account to prevent accidental (or malicious) data
-
             loss.
           </strong>
         </p>
         <p>
           Server admins can create and destroy databases, install and update _design documents, run
-
           the test suite, and edit all aspects of CouchDB configuration.
         </p>
 
         <form id="create-admin-form" onSubmit={this.createAdmin.bind(this)}>
-          <input
-            id="username"
-            type="text"
-            ref={node => this.usernameField = node}
-            name="name"
-            placeholder="Username"
-            size="24"
-            onChange={this.onChangeUsername.bind(this)}
-          />
-          <br />
-          <input
-            id="password"
-            type="password"
-            name="password"
-            placeholder="Password"
-            size="24"
-            onChange={this.onChangePassword.bind(this)}
-          />
-          <p>
+          <div className='row'>
+            <div className='col-12 col-md-5 col-xl-4 mb-3'>
+              <Form.Control type="text"
+                id="username"
+                ref={node => this.usernameField = node}
+                name="name"
+                placeholder="Username"
+                onChange={this.onChangeUsername.bind(this)} />
+            </div>
+          </div>
+          <div className='row'>
+            <div className='col-12 col-md-5 col-xl-4 mb-3'>
+              <Form.Control type="password"
+                id="password"
+                name="password"
+                placeholder="Password"
+                onChange={this.onChangePassword.bind(this)} />
+            </div>
+          </div>
+          <div className='row'>
+            <p>
             Non-admin users have read and write access to all databases, which
             are controlled by validation. CouchDB can be configured to block all
             access to anonymous users.
-          </p>
-          <button type="submit" id="create-admin" className="btn btn-primary">
-            Create Admin
-          </button>
+            </p>
+            <div className='col-12 col-md-5 col-xl-4 mb-3'>
+              <Button id="create-admin" type="submit" variant="cf-primary">
+                Create Admin
+              </Button>
+            </div>
+          </div>
         </form>
       </div>
     );
diff --git a/app/addons/auth/components/loginform.js b/app/addons/auth/components/loginform.js
index b961c93..34a56eb 100644
--- a/app/addons/auth/components/loginform.js
+++ b/app/addons/auth/components/loginform.js
@@ -13,8 +13,8 @@
 import PropTypes from 'prop-types';
 
 import React from "react";
-import ReactDOM from "react-dom";
 import { login } from "./../actions";
+import { Button, Form } from 'react-bootstrap';
 
 class LoginForm extends React.Component {
   constructor() {
@@ -63,40 +63,40 @@
   render() {
     return (
       <div className="couch-login-wrapper">
-        <div className="row-fluid">
-          <div className="span12">
-            <form id="login" onSubmit={this.submit.bind(this)}>
-              <p className="help-block">
-                Enter your username and password.
-              </p>
-              <input
+        <form id="login" onSubmit={this.submit.bind(this)}>
+          <div className="row">
+            <div className="col12 col-md-5 col-xl-4 mb-3">
+              <label>
+                Enter your username and password
+              </label>
+              <Form.Control type="text"
                 id="username"
-                type="text"
                 name="username"
                 ref={node => this.usernameField = node}
                 placeholder="Username"
-                size="24"
                 onChange={this.onUsernameChange.bind(this)}
-                value={this.state.username}
-              />
-              <br />
-              <input
+                value={this.state.username} />
+            </div>
+          </div>
+          <div className="row">
+            <div className="col12 col-md-5 col-xl-4 mb-3">
+              <Form.Control type="password"
                 id="password"
-                type="password"
                 name="password"
                 ref={node => this.passwordField = node}
                 placeholder="Password"
-                size="24"
                 onChange={this.onPasswordChange.bind(this)}
-                value={this.state.password}
-              />
-              <br />
-              <button id="submit" className="btn btn-success" type="submit">
-                Log In
-              </button>
-            </form>
+                value={this.state.password} />
+            </div>
           </div>
-        </div>
+          <div className="row">
+            <div className="col12 col-md-5 col-xl-4 mb-3">
+              <Button id="login-btn" variant="cf-primary" type="submit">
+                Log In
+              </Button>
+            </div>
+          </div>
+        </form>
       </div>
     );
   }
diff --git a/app/addons/auth/components/passwordmodal.js b/app/addons/auth/components/passwordmodal.js
index b652c66..e8c28f7 100644
--- a/app/addons/auth/components/passwordmodal.js
+++ b/app/addons/auth/components/passwordmodal.js
@@ -13,7 +13,7 @@
 import PropTypes from 'prop-types';
 
 import React from "react";
-import { Modal } from "react-bootstrap";
+import { Button, Modal } from "react-bootstrap";
 import { hidePasswordModal, authenticate } from "./../actions";
 import Components from "../../components/react-components";
 import FauxtonAPI from "../../../core/api";
@@ -74,7 +74,7 @@
           />
         </Modal.Body>
         <Modal.Footer>
-          <a className="cancel-link" onClick={() => onClose()}>Cancel</a>
+          <Button href="#" data-bypass="true" variant="cf-cancel" className="cancel-link" onClick={() => onClose()}>Cancel</Button>
           <Components.ConfirmButton
             text={submitBtnLabel}
             onClick={this.authenticate}
diff --git a/app/addons/cluster/cluster.js b/app/addons/cluster/cluster.js
index 7a4d1a3..727d9f6 100644
--- a/app/addons/cluster/cluster.js
+++ b/app/addons/cluster/cluster.js
@@ -19,7 +19,7 @@
       <div className="config-warning-cluster-wrapper">
         <div className="config-warning-cluster-container">
           <div>
-            <div className="config-warning-icon-container pull-left">
+            <div className="config-warning-icon-container float-start">
               <i className="fonticon-attention-circled"></i>
             </div>
             It seems that you are running a cluster with {this.props.nodes.length} nodes. For CouchDB 2.0
diff --git a/app/addons/components/__tests__/badges.test.js b/app/addons/components/__tests__/badges.test.js
index 5cb84cc..b0d6eb0 100644
--- a/app/addons/components/__tests__/badges.test.js
+++ b/app/addons/components/__tests__/badges.test.js
@@ -19,7 +19,7 @@
       <ReactComponents.BadgeList elements={['foo', 'bar']} removeBadge={() => {}} />
     );
 
-    expect(el.find('.component-badge').length).toBe(2);
+    expect(el.find('.badge').length).toBe(2);
   });
 
   it('supports custom label formatters', () => {
@@ -27,8 +27,8 @@
       <ReactComponents.BadgeList elements={['foo', 'bar']} removeBadge={() => {}} getLabel={(el) => { return el + 'foo'; }} />
     );
 
-    expect(el.find('.component-badge').first().text()).toBe('foofoo×');
-    expect(el.find('.component-badge').last().text()).toBe('barfoo×');
+    expect(el.find('.badge').first().text()).toBe('foofoo×');
+    expect(el.find('.badge').last().text()).toBe('barfoo×');
   });
 
 });
diff --git a/app/addons/components/__tests__/codeEditorPanel.test.js b/app/addons/components/__tests__/codeEditorPanel.test.js
index a13608b..53ca082 100644
--- a/app/addons/components/__tests__/codeEditorPanel.test.js
+++ b/app/addons/components/__tests__/codeEditorPanel.test.js
@@ -24,14 +24,14 @@
       const codeEditorEl = mount(
         <ReactComponents.CodeEditorPanel defaultCode={code} />
       );
-      expect(codeEditorEl.find('.icon-question-sign').length).toBe(0);
+      expect(codeEditorEl.find('.fonticon-help-circled').length).toBe(0);
     });
     it('hidden by default', () => {
 
       const codeEditorEl = mount(
         <ReactComponents.CodeEditorPanel defaultCode={code} docLink="http://link.com" />
       );
-      expect(codeEditorEl.find('.icon-question-sign').length).toBe(1);
+      expect(codeEditorEl.find('.fonticon-help-circled').length).toBe(1);
     });
   });
 
diff --git a/app/addons/components/__tests__/copy.test.js b/app/addons/components/__tests__/copy.test.js
index 5579745..fd128df 100644
--- a/app/addons/components/__tests__/copy.test.js
+++ b/app/addons/components/__tests__/copy.test.js
@@ -18,12 +18,12 @@
 
   it('shows a copy icon by default', () => {
     const wrapper = mount(<Copy uniqueKey={uuidv4()} text="copy me"/>);
-    expect(wrapper.find('.icon-paste').length).toBe(1);
+    expect(wrapper.find('.fonticon-copy').length).toBe(1);
   });
 
   it('shows text if specified', () => {
     const wrapper = mount(<Copy uniqueKey={uuidv4()} text="copy me" displayType="text" />);
-    expect(wrapper.find('.icon-paste').length).toBe(0);
+    expect(wrapper.find('.fonticon-copy').length).toBe(0);
   });
 
   it('shows custom text if specified', () => {
diff --git a/app/addons/components/__tests__/deleteDatabaseModal.test.js b/app/addons/components/__tests__/deleteDatabaseModal.test.js
index 9c12cd7..4ad084a 100644
--- a/app/addons/components/__tests__/deleteDatabaseModal.test.js
+++ b/app/addons/components/__tests__/deleteDatabaseModal.test.js
@@ -14,6 +14,7 @@
 import {mount} from 'enzyme';
 
 const noop = () => {};
+const SELECTOR_BTN_DELETE_DB = 'button#delete-db-btn';
 
 describe('DeleteDatabaseModal', function () {
 
@@ -24,7 +25,7 @@
         modalProps={{isSystemDatabase: false, showDeleteModal: true, dbId: 'fooo'}} />
     );
 
-    expect(modal.find('button.delete').first().prop('disabled')).toBe(true);
+    expect(modal.find(SELECTOR_BTN_DELETE_DB).first().prop('disabled')).toBe(true);
   });
 
   it('submitting is disabled when garbage entered', function () {
@@ -37,7 +38,7 @@
     const input = modal.find('input');
 
     input.simulate('change', {target: {value: 'Hello, world'}});
-    expect(modal.find('button.delete').prop('disabled')).toBe(true);
+    expect(modal.find(SELECTOR_BTN_DELETE_DB).prop('disabled')).toBe(true);
   });
 
   it('submitting is enabled when same db name entered', function () {
@@ -50,7 +51,7 @@
     var input = modal.find('.modal').find('input');
 
     input.simulate('change', {target: {value: 'fooo'}});
-    expect(modal.find('button.delete').prop('disabled')).toBeFalsy();
+    expect(modal.find(SELECTOR_BTN_DELETE_DB).prop('disabled')).toBeFalsy();
   });
 
 
diff --git a/app/addons/components/__tests__/stringEditModal.test.js b/app/addons/components/__tests__/stringEditModal.test.js
index ffd5921..2867f0a 100644
--- a/app/addons/components/__tests__/stringEditModal.test.js
+++ b/app/addons/components/__tests__/stringEditModal.test.js
@@ -25,7 +25,7 @@
       const el = mount(
         <ReactComponents.StringEditModal visible={true} onClose={stub} onSave={spy} value={string} />
       );
-      el.find('#string-edit-save-btn').simulate('click');
+      el.find('button#string-edit-save-btn').simulate('click');
       sinon.assert.calledOnce(spy);
       sinon.assert.calledWith(spy, string);
     });
diff --git a/app/addons/components/__tests__/styledSelect.test.js b/app/addons/components/__tests__/styledSelect.test.js
deleted file mode 100644
index a1e6366..0000000
--- a/app/addons/components/__tests__/styledSelect.test.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-import ReactComponents from "../react-components";
-import React from "react";
-import {mount} from 'enzyme';
-import sinon from "sinon";
-
-describe('styled select', () => {
-  let selectorEl, spy = sinon.spy();
-
-  beforeEach(() => {
-    const selectContent = (
-      <optgroup label="Select a document">
-        <option value="new">New Design Document</option>
-        <option value="foo">New Design Document</option>
-      </optgroup>
-    );
-
-    selectorEl = mount(
-      <ReactComponents.StyledSelect
-        selectValue={"foo"}
-        selectId="new-ddoc"
-        selectClass=""
-        selectContent={selectContent}
-        selectChange={spy} />
-    );
-  });
-
-  it('calls the callback on select', () => {
-    selectorEl.find('#new-ddoc').simulate('change', {
-      target: {
-        value: 'new'
-      }
-    });
-    expect(spy.calledOnce).toBeTruthy();
-  });
-
-});
diff --git a/app/addons/components/assets/less/components.less b/app/addons/components/assets/less/components.less
deleted file mode 100644
index a334648..0000000
--- a/app/addons/components/assets/less/components.less
+++ /dev/null
@@ -1,29 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-@import "../../../../../assets/less/variables.less";
-
-@import "accordion.less";
-@import "header-togglebutton.less";
-@import "styled-select.less";
-@import "docs.less";
-@import "loading-lines.less";
-@import "code-editor.less";
-@import "bulk-selector.less";
-@import "badges.less";
-@import "modals.less";
-@import "tab-element.less";
-@import "header-breadcrumbs.less";
-@import "layouts.less";
-@import "polling.less";
-@import "jsonlink.less";
-@import "menudropdown.less";
diff --git a/app/addons/components/assets/less/docs.less b/app/addons/components/assets/less/docs.less
deleted file mode 100644
index a148d08..0000000
--- a/app/addons/components/assets/less/docs.less
+++ /dev/null
@@ -1,133 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-@import "../../../../../assets/less/variables.less";
-@import "../../../../../assets/less/bootstrap/mixins.less";
-
-#doc-list {
-  .custom-inputs {
-    display: none;
-  }
-  padding: 30px 12px 0 12px;
-  div.doc-row {
-    margin-bottom: 20px;
-    .doc-item {
-      vertical-align: top;
-      position: relative;
-      .box-shadow(3px 4px 0 rgba(0, 0, 0, 0.3));
-      .doc-data {
-        border-bottom: 1px solid @docHeaderBorderBottom;
-        border-left: 1px solid @docHeaderOtherBorders;
-        border-right: 1px solid @docHeaderOtherBorders;
-        font-family: monospace;
-        .prettyprint--small {
-          font-size: 11px;
-        }
-        .prettyprint--large {
-          font-size: 15px;
-        }
-      }
-      header {
-        cursor: pointer;
-        font-weight: bold;
-        position: relative;
-        padding: 5px 10px;
-        background-color: @docHeaderBG;
-        border-bottom: 1px solid @docHeaderBorderBottom;
-        border-left: 1px solid @docHeaderOtherBorders;
-        border-right: 1px solid @docHeaderOtherBorders;
-        border-top: 1px solid @docHeaderOtherBorders;
-        .header-doc-id {
-          color: @docHeaderDocId;
-          margin-left: 0;
-        }
-        .header-keylabel {
-          margin-right: 10px;
-        }
-        .header-keylabel:empty
-        {
-          display:none;
-        }
-        .header-keylabel,
-        .fonticon-pencil {
-          color: @docHeaderLabels;
-        }
-        .doc-edit-symbol {
-          position: relative;
-        }
-        .fonticon-pencil {
-          font-size: 16px;
-        }
-        .fonticon-pencil:hover {
-          color: @hoverHighlight;
-        }
-      }
-    }
-  }
-}
-
-.view #doc-list {
-  padding-top: 12px;
-}
-
-.show-select {
-  #doc-list {
-    padding: 0px 0 30px 0;
-    .custom-inputs {
-      display: block;
-      float: left;
-    }
-  }
-  .checkbox.inline {
-    padding-top: 17px;
-    padding-left: 0;
-    label {
-      padding-left: 23px; // 7px to the right-border + 16px around
-    }
-  }
-  .checkbox-dummy {
-    width: 20px;
-    height: 20px;
-    padding-left: 23px;
-    margin-right: 15px;
-  }
-  .doc-item {
-    width: auto;
-    overflow: hidden;
-  }
-  label.label-checkbox-doclist {
-    // https://code.google.com/p/chromium/issues/detail?id=411065
-    -webkit-user-select: none;
-    height: 1px;
-    width: 1px;
-  }
-  /* checkboxes in doc-list */
-  input[type="checkbox"] + label:before {
-    background-color: @docCheckBoxUncheckedBG;
-    border: @docCheckBoxUncheckedBorder;
-  }
-  input[type="checkbox"] + label:hover:before {
-    border: @docCheckBoxHoverBorder;
-  }
-  input[type="checkbox"]:checked + label::before {
-    border: @docCheckBoxCheckedBorder;
-    background-color: @docCheckBoxCheckedBG;
-  }
-}
-
-.doc-content-truncated {
-  background-color: #4d4d4d;
-  color: #bbbbbb;
-  padding: 10px;
-  font-size: 13px;
-  margin: 0;
-}
diff --git a/app/addons/components/assets/less/loading-lines.less b/app/addons/components/assets/less/loading-lines.less
deleted file mode 100644
index ce3a5d8..0000000
--- a/app/addons/components/assets/less/loading-lines.less
+++ /dev/null
@@ -1,76 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
-@import "../../../../../assets/less/variables.less";
-
-
-@loadingLinesHeight: 30px;
-@loadingLinesMargin: 3px;
-@loadingLinesWidth: 10px;
-@loadingLinesTime: 0.8s;
-@loadingLinesEffect: linear;
-@loadingLinesColor: @brandHighlight;
-
-.loading-lines {
-  display: block;
-  width: 80px;
-  margin-left: auto;
-  margin-right: auto;
-  div {
-    background-color: @loadingLinesColor;
-    width: @loadingLinesWidth;
-    height: 1px;
-    float: left;
-    animation: height-change @loadingLinesTime infinite @loadingLinesEffect;
-    -webkit-animation: height-change @loadingLinesTime infinite @loadingLinesEffect;
-  }
-}
-
-#line2 {
-  animation-delay: 0.1s;
-  -webkit-animation-delay: 0.1s;
-  margin-left: @loadingLinesMargin;
-}
-#line3 {
-  animation-delay: 0.2s;
-  -webkit-animation-delay: 0.2s;
-  margin-left: @loadingLinesMargin;
-}
-#line4 {
-  animation-delay: 0.3s;
-  -webkit-animation-delay: 0.3s;
-  margin-left: @loadingLinesMargin;
-}
-
-@-webkit-keyframes height-change {
-  0% {
-    height: 1px;
-  }
-  50% {
-    height: @loadingLinesHeight;
-  }
-  100% {
-    height: 1px;
-  }
-}
-@keyframes height-change {
-  0% {
-    height: 1px;
-  }
-  50% {
-    height: @loadingLinesHeight;
-  }
-  100% {
-    height: 1px;
-  }
-}
diff --git a/app/addons/components/assets/less/modals.less b/app/addons/components/assets/less/modals.less
deleted file mode 100644
index 93e1ba3..0000000
--- a/app/addons/components/assets/less/modals.less
+++ /dev/null
@@ -1,25 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
-@import "../../../../../assets/less/variables.less";
-
-.modal .cancel-link {
-  margin: 0 15px;
-  font-size: 14px;
-  color: #666;
-  &:hover {
-    color: @hoverHighlight;
-    text-decoration: none;
-    cursor: pointer;
-  }
-}
diff --git a/app/addons/components/assets/less/styled-select.less b/app/addons/components/assets/less/styled-select.less
deleted file mode 100644
index 78a83e3..0000000
--- a/app/addons/components/assets/less/styled-select.less
+++ /dev/null
@@ -1,78 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-.styled-select {
-  width: 200px;
-}
-
-.styled-select label {
-  margin: 0;
-}
-
-.styled-select select {
-  -webkit-appearance: none;
-  -moz-appearance: none;
-  appearance: none;
-  background-color: #e6e6e6;
-  border: 1px solid #b3b3b3;
-  width: 200px;
-  text-indent: 4px;
-  height: 46px;
-  padding-right: 35px;
-  color: #333;
-}
-
-//bug in firefox for text-indent
-@-moz-document url-prefix() {
-  .styled-select  select {
-    text-indent: 0px;
-  }
-}
-
-.styled-select select:-moz-focusring {
-  color: transparent;
-  text-shadow: 0 0 0 #000;
-}
-
-.styled-select select::-ms-expand {
-  display: none;
-}
-
-.styled-select-icon {
-  pointer-events: none;
-  position: absolute;
-  right: 10px;
-  top: 12px;
-  color: #333;
-}
-
-.styled-select-hover-icon {
-  pointer-events: none;
-  position: absolute;
-  right: 10px;
-  top: 12px;
-  color: @hoverHighlight;
-  display: none;
-  z-index: 30;
-}
-
-//this is a litte css trick to create a hover effect for the triangle. We can't use the normal hover event because we
-//need to set pointer-events to none so that a click on the triangle is actually a click on the select dropdown
-.styled-select:hover {
-  .styled-select-hover-icon {
-    display: inline;
-  }
-
-  .styled-select-icon {
-    display: none;
-  }
-}
diff --git a/app/addons/components/assets/less/accordion.less b/app/addons/components/assets/scss/accordion.scss
similarity index 100%
rename from app/addons/components/assets/less/accordion.less
rename to app/addons/components/assets/scss/accordion.scss
diff --git a/app/addons/components/assets/less/badges.less b/app/addons/components/assets/scss/badges.scss
similarity index 92%
rename from app/addons/components/assets/less/badges.less
rename to app/addons/components/assets/scss/badges.scss
index a049758..b8c72b3 100644
--- a/app/addons/components/assets/less/badges.less
+++ b/app/addons/components/assets/scss/badges.scss
@@ -9,12 +9,16 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+
 ul.component-badgelist {
-  margin: 0;
+  margin-top:15px;
   display: inline-block;
+  padding-left:0;
+
   li {
+    margin: 0;
+    margin-left: 5px;
     list-style-type: none;
     float: left;
-    margin-left: 5px;
   }
 }
diff --git a/app/addons/components/assets/less/bulk-selector.less b/app/addons/components/assets/scss/bulk-selector.scss
similarity index 74%
rename from app/addons/components/assets/less/bulk-selector.less
rename to app/addons/components/assets/scss/bulk-selector.scss
index a55ba7f..dd9869b 100644
--- a/app/addons/components/assets/less/bulk-selector.less
+++ b/app/addons/components/assets/scss/bulk-selector.scss
@@ -28,15 +28,12 @@
     list-style-type: none;
 
     &.disabled {
-      color: #cccccc;
       cursor: default;
-      &:hover {
-        background-color: inherit;
-      }
+      color: $cf-text02-muted;
     }
 
     &:hover {
-      background-color: #fbcece; // light red
+      background-color: $cf-brand-hightlight-hover;
     }
     &:last-child {
       -webkit-border-bottom-right-radius: 5px;
@@ -68,46 +65,27 @@
   min-height: 43px;
 
   button {
-    height: 26px;
-    width: 26px;
-    background-color: @background;
-    border: 1px solid @darkBorder;
+    height: 30px;
+    width: 30px;
+    background-color: $cf-background01;
+    border: 1px solid $cf-border-color01;
     margin-left: 7px;
   }
 
-  .fonticon-trash:before {
-    font-size: 12px;
-    margin-left: 2px;
-    margin-top: 1px;
-  }
-
-
   .separator {
-    border-left: 1px solid @darkBorder;
+    border-left: 1px solid $cf-border-color01;
     margin: 5px 0;
     height: 15px;
   }
 
-  .bulk-action-component-selector-group {
-
-    .fonticon {
-      font-size: 8px;
-      color: #505050;
-      padding: 3px 0;
-      &:hover {
-        color: @dangerRed;
-      }
-    }
-
-  }
-
   .bulk-action-component-panel {
     input[type="checkbox"] {
       margin: 6px;
+      font-size: 0.875rem;
     }
 
-    border: 1px solid @darkBorder;
-
+    border: 1px solid $cf-border-color01;
+    min-height: 30px;
     position: relative;
     float: left;
     div.arrow-button {
diff --git a/app/addons/components/assets/less/code-editor.less b/app/addons/components/assets/scss/code-editor.scss
similarity index 85%
rename from app/addons/components/assets/less/code-editor.less
rename to app/addons/components/assets/scss/code-editor.scss
index eff819b..9855892 100644
--- a/app/addons/components/assets/less/code-editor.less
+++ b/app/addons/components/assets/scss/code-editor.scss
@@ -14,6 +14,9 @@
   float: right;
   font-size: 13px;
   margin-top: 3px;
+  &:hover {
+    color: $cf-brand-highlight;
+  }
 }
 
 .full-page-editor-modal-wrapper {
@@ -28,13 +31,13 @@
   z-index: 1025;
 
   &.zen-theme-dark {
-    background-color: #323232;
+    background-color: $cf-code-bg;
   }
   &.zen-theme-light {
-    background-color: #ffffff;
+    background-color: $cf-white;
   }
 
-  &>div {
+  & > div {
     height: 100%;
     &.zen-mode-controls {
       height: 96px;
@@ -47,7 +50,8 @@
     line-height: 25px;
     background-color: inherit;
 
-    .ace_gutter, .ace_gutter-active-line {
+    .ace_gutter,
+    .ace_gutter-active-line {
       background-color: inherit;
     }
   }
@@ -55,7 +59,7 @@
 
 .zen-theme-light {
   .zen-mode-controls {
-    color: #999999;
+    color: $cf-text01;
   }
 }
 
@@ -64,7 +68,7 @@
   right: 30px;
   top: 30px;
   font-size: 20px;
-  color: white;
+  color: $cf-text02;
 
   .zen-mode-controls-wrapper {
     position: relative;
@@ -94,7 +98,3 @@
     display: inline-block;
   }
 }
-
-html body .ace_editor .ace_marker-layer .ace_selection {
-  background-color: rgba(29, 151, 215, 0.5);
-}
diff --git a/app/addons/components/assets/scss/components.scss b/app/addons/components/assets/scss/components.scss
new file mode 100644
index 0000000..0bd67a9
--- /dev/null
+++ b/app/addons/components/assets/scss/components.scss
@@ -0,0 +1,29 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+@import "../../../../../assets/scss/variables";
+
+@import "accordion";
+@import "header-togglebutton";
+@import "docs";
+@import "loading-lines";
+@import "code-editor";
+@import "bulk-selector";
+@import "badges";
+@import "modals";
+@import "tab-element";
+@import "header-breadcrumbs";
+@import "layouts";
+@import "polling";
+@import "jsonlink";
+@import "menudropdown";
+@import "toolbarbutton";
diff --git a/app/addons/components/assets/scss/docs.scss b/app/addons/components/assets/scss/docs.scss
new file mode 100644
index 0000000..e7febd7
--- /dev/null
+++ b/app/addons/components/assets/scss/docs.scss
@@ -0,0 +1,111 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+@import "../../../../../assets/scss/variables";
+
+#doc-list {
+  padding: 30px 0 0 0;
+  div.doc-row {
+    margin-bottom: 20px;
+    .doc-item {
+      vertical-align: top;
+      position: relative;
+      box-shadow: $cf-box-shadow;
+      .doc-data {
+        border-bottom: 1px solid $cf-jsondocs-data-border;
+        border-left: 1px solid $cf-jsondocs-data-border;
+        border-right: 1px solid $cf-jsondocs-data-border;
+        font-family: monospace;
+        .prettyprint--small {
+          font-size: 11px;
+        }
+        .prettyprint--large {
+          font-size: 15px;
+        }
+      }
+      header {
+        cursor: pointer;
+        font-weight: bold;
+        position: relative;
+        padding: 5px 10px;
+        background-color: $cf-jsondocs-header-bg;
+        border-bottom: 1px solid $cf-jsondocs-header-border;
+        border-left: 1px solid $cf-jsondocs-header-border;
+        border-right: 1px solid $cf-jsondocs-header-border;
+        border-top: 1px solid $cf-jsondocs-header-border;
+        .header-doc-id {
+          color: $cf-jsondocs-header-docid;
+          margin-left: 0;
+          word-wrap: break-word;
+          &:hover {
+            color: $cf-brand-hightlight-hover;
+          }
+        }
+        .header-keylabel {
+          margin-right: 10px;
+        }
+        .header-keylabel:empty {
+          display: none;
+        }
+        .header-keylabel,
+        .fonticon-pencil {
+          color: $cf-jsondocs-header-label;
+        }
+        .doc-edit-symbol {
+          position: relative;
+        }
+        .fonticon-pencil {
+          font-size: 16px;
+        }
+        .fonticon-pencil:hover {
+          color: $cf-brand-hightlight-hover;
+        }
+      }
+    }
+  }
+}
+
+.view #doc-list {
+  padding-top: 12px;
+}
+
+.show-select {
+  #doc-list {
+    padding: 0px 0 30px 0;
+  }
+  .checkbox.inline {
+    padding-top: 6px;
+    padding-left: 6px;
+    padding-right: 1rem;
+    label  {
+      padding-left: 23px; // 7px to the right-border + 16px around
+    }
+  }
+  .checkbox-dummy {
+    width: 20px;
+    height: 20px;
+    padding-left: 23px;
+    margin-right: 15px;
+  }
+  .doc-item {
+    width: auto;
+    overflow: hidden;
+  }
+}
+
+.doc-content-truncated {
+  background-color: $cf-code-bg; // should match the code editor bg
+  color: $cf-text02-muted;
+  padding: 0px 16px 8px 16px;
+  font-size: 13px;
+  margin: 0;
+}
diff --git a/app/addons/components/assets/less/header-breadcrumbs.less b/app/addons/components/assets/scss/header-breadcrumbs.scss
similarity index 73%
rename from app/addons/components/assets/less/header-breadcrumbs.less
rename to app/addons/components/assets/scss/header-breadcrumbs.scss
index 7e4b8a0..7a17adc 100644
--- a/app/addons/components/assets/less/header-breadcrumbs.less
+++ b/app/addons/components/assets/scss/header-breadcrumbs.scss
@@ -10,16 +10,16 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-@import "../../../../../assets/less/variables.less";
+@import "../../../../../assets/scss/variables";
 
 .faux-header__breadcrumbs {
-  .display-flex();
-  height: @collapsedNavWidth;
+  @include display-flex();
+  height: $cf-navbar-width-collapsed;
 }
 
 .faux-header__breadcrumbs-element {
   margin: 0 4px 0 4px;
-  color: #333;
+  color: $cf-topheader-title-color;
   padding: 18px 10px;
   font-size: 24px;
   text-shadow: none;
@@ -29,23 +29,23 @@
 }
 
 a.faux-header__breadcrumbs-link {
-  color: @brandHighlight;
+  color: $cf-brand-highlight;
   &:hover {
-  color: @hoverHighlight;
-  text-decoration: none;
-  cursor: pointer;
+    color: $cf-brand-hightlight-hover;
+    text-decoration: none;
+    cursor: pointer;
   }
 }
 
-
 .faux-header__breadcrumbs-divider {
   width: 13px;
   padding-top: 22px;
   font-size: 20px;
+  color: $cf-topheader-title-color;
 }
 
 .faux-header__controlbox-backlink {
-  border-right: 1px solid #ccc;
+  border-right: 1px solid $cf-border-color01;
   padding-left: 10px;
   padding-right: 2px;
 }
diff --git a/app/addons/components/assets/less/header-togglebutton.less b/app/addons/components/assets/scss/header-togglebutton.scss
similarity index 66%
rename from app/addons/components/assets/less/header-togglebutton.less
rename to app/addons/components/assets/scss/header-togglebutton.scss
index 9df3672..f03e48c 100644
--- a/app/addons/components/assets/less/header-togglebutton.less
+++ b/app/addons/components/assets/scss/header-togglebutton.scss
@@ -9,17 +9,18 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
-@import "../../../../../assets/less/variables.less";
+
+@import "../../../../../assets/scss/variables";
 
 .header-control-box {
-  color: #666;
+  color: $cf-topheader-color;
   font-size: 13px;
   line-height: 33px;
   padding: 12px 20px 12px 20px;
-  height: @collapsedNavWidth;
+  height: $cf-navbar-width-collapsed;
   background-color: transparent;
   border: none;
-  border-left: 1px solid @btnBorder;
+  border-left: 1px solid $cf-border-color01;
   text-decoration: none;
   .icon {
     font-size: 20px;
@@ -31,16 +32,11 @@
   span {
     margin-left: 6px;
   }
-  .icon.fontawesome {
-    &:before {
-      margin: 6px 6px 0 0;
-    }
-  }
 }
 
 .header-control-square {
-  height: @collapsedNavWidth;
-  width: @collapsedNavWidth;
+  height: $cf-navbar-width-collapsed;
+  width: $cf-navbar-width-collapsed;
   float: left;
   .icon {
     &:before {
@@ -51,23 +47,15 @@
 }
 
 .header-control-box:hover {
+  background-color: $cf-topheader-bg-hover;
+
   .icon, span {
-    color: @hoverHighlight;
+    color: $cf-topheader-color-hover;
   }
 }
 
 .js-headerbar-togglebutton-selected {
   .icon, span {
-    color: @linkColor;
+    color: $cf-brand-highlight;
   }
 }
-
-button.control-toggle-alternative-header {
-  float: left;
-  border-right: 1px solid @btnBorder;
-  border-left: none;
-}
-
-button.control-toggle-alternative-header.js-headerbar-togglebutton-selected {
-  border-right: none;
-}
diff --git a/app/addons/components/assets/less/jsonlink.less b/app/addons/components/assets/scss/jsonlink.scss
similarity index 79%
rename from app/addons/components/assets/less/jsonlink.less
rename to app/addons/components/assets/scss/jsonlink.scss
index efcd139..d85eb98 100644
--- a/app/addons/components/assets/less/jsonlink.less
+++ b/app/addons/components/assets/scss/jsonlink.scss
@@ -12,16 +12,19 @@
 
 .faux__jsonlink {
   /*width: 76px; Static width cause rendering problems on Edge */
-  border-left: 1px solid #ccc;
+  border-left: 1px solid $cf-border-color01;
   padding: 16px 12px 12px 12px !important;
   height: 64px;
-  background-color: rgba(0, 0, 0, 0);
   text-align: center;
   min-width: 55px;
+
+  &:hover {
+    background-color: $cf-topheader-bg-hover;
+  }
 }
 
 .faux__jsonlink-link {
-  color: #666;
+  color: $cf-topheader-color;
   text-decoration: none;
   line-height: 33px;
   font-size: 13px;
@@ -31,7 +34,7 @@
 .faux__jsonlink-link:focus,
 .faux__jsonlink-link:active {
   text-decoration: none;
-  color: #666;
+  color: $cf-topheader-color;
 }
 
 .faux__jsonlink-link-brackets {
@@ -43,14 +46,17 @@
 .faux__doclink {
   text-align: center;
   width: 55px;
-  border-left: 1px solid #ccc;
+  border-left: 1px solid $cf-border-color01;
   padding: 18px 12px 12px 12px !important;
   height: 64px;
-  background-color: rgba(0, 0, 0, 0);
+
+  &:hover {
+    background-color: $cf-topheader-bg-hover;
+  }
 }
 
 .faux__doclink-link {
-  color: #666;
+  color: $cf-topheader-color;
   text-decoration: none;
   line-height: 33px;
   font-size: 20px;
@@ -64,12 +70,12 @@
 .faux__doclink-link:focus,
 .faux__doclink-link:visited {
   text-decoration: none;
-  color: #666;
+  color: $cf-topheader-color;
 }
 
 @media (max-width: 1090px) {
   #main:not(.closeMenu) {
-    .faux__jsonlink-link-label{
+    .faux__jsonlink-link-label {
       display: none;
     }
   }
@@ -77,7 +83,7 @@
 
 @media (max-width: 1120px) {
   #main.closeMenu {
-    .faux__jsonlink-link-label{
+    .faux__jsonlink-link-label {
       display: none;
     }
   }
diff --git a/app/addons/components/assets/less/layouts.less b/app/addons/components/assets/scss/layouts.scss
similarity index 94%
rename from app/addons/components/assets/less/layouts.less
rename to app/addons/components/assets/scss/layouts.scss
index 8d72807..7803f5e 100644
--- a/app/addons/components/assets/less/layouts.less
+++ b/app/addons/components/assets/scss/layouts.scss
@@ -19,8 +19,8 @@
   flex-direction: row;
   height: 100%;
 
-  &--ie1X{
-     align-items:stretch;
+  &--ie1X {
+    align-items: stretch;
   }
 }
 
@@ -33,5 +33,5 @@
 }
 
 div.faux__jsondoc-wrapper {
-  display:flex;
+  display: flex;
 }
diff --git a/app/addons/components/assets/scss/loading-lines.scss b/app/addons/components/assets/scss/loading-lines.scss
new file mode 100644
index 0000000..c5f50ab
--- /dev/null
+++ b/app/addons/components/assets/scss/loading-lines.scss
@@ -0,0 +1,64 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+@import "../../../../../assets/scss/variables";
+
+$loadingLinesHeight: 30px;
+$loadingLinesMargin: 3px;
+$loadingLinesWidth: 10px;
+$loadingLinesTime: 0.8s;
+$loadingLinesEffect: linear;
+$loadingLinesColor: $cf-brand-highlight;
+
+.loading-lines {
+  display: block;
+  width: 84px;
+  margin-left: auto;
+  margin-right: auto;
+  div {
+    background-color: $loadingLinesColor;
+    width: $loadingLinesWidth;
+    height: 1px;
+    float: left;
+    animation: height-change $loadingLinesTime infinite $loadingLinesEffect;
+    -webkit-animation: height-change $loadingLinesTime infinite
+      $loadingLinesEffect;
+  }
+}
+
+#line2 {
+  animation-delay: 0.1s;
+  -webkit-animation-delay: 0.1s;
+  margin-left: $loadingLinesMargin;
+}
+#line3 {
+  animation-delay: 0.2s;
+  -webkit-animation-delay: 0.2s;
+  margin-left: $loadingLinesMargin;
+}
+#line4 {
+  animation-delay: 0.3s;
+  -webkit-animation-delay: 0.3s;
+  margin-left: $loadingLinesMargin;
+}
+
+@keyframes height-change {
+  0% {
+    height: 1px;
+  }
+  50% {
+    height: $loadingLinesHeight;
+  }
+  100% {
+    height: 1px;
+  }
+}
diff --git a/app/addons/components/assets/less/menudropdown.less b/app/addons/components/assets/scss/menudropdown.scss
similarity index 81%
rename from app/addons/components/assets/less/menudropdown.less
rename to app/addons/components/assets/scss/menudropdown.scss
index 2638a29..faf687b 100644
--- a/app/addons/components/assets/less/menudropdown.less
+++ b/app/addons/components/assets/scss/menudropdown.scss
@@ -10,8 +10,10 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-
-.dropdown-menu > li > a.fonticon-placeholder:before {
-  padding-right: 17px;
+.fonticon-placeholder:before {
+  padding-left: 17px;
   content: "";
 }
+.dropdown-toggle > .fonticon-mixer {
+  margin-right: 0 !important;
+}
diff --git a/app/addons/components/assets/less/tab-window-wrapper.less b/app/addons/components/assets/scss/modals.scss
similarity index 85%
copy from app/addons/components/assets/less/tab-window-wrapper.less
copy to app/addons/components/assets/scss/modals.scss
index 5c2da30..6fea38c 100644
--- a/app/addons/components/assets/less/tab-window-wrapper.less
+++ b/app/addons/components/assets/scss/modals.scss
@@ -10,10 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-#dashboard-content > .tab__wrapper {
-  padding: 0;
-}
+@import "../../../../../assets/scss/variables";
 
-.tab__container > div {
-	padding: 20px;
-}
\ No newline at end of file
+.modal .cancel-link {
+  margin: 0 0.5rem;
+}
diff --git a/app/addons/components/assets/less/polling.less b/app/addons/components/assets/scss/polling.scss
similarity index 73%
rename from app/addons/components/assets/less/polling.less
rename to app/addons/components/assets/scss/polling.scss
index dee32ce..0945f6d 100644
--- a/app/addons/components/assets/less/polling.less
+++ b/app/addons/components/assets/scss/polling.scss
@@ -15,24 +15,24 @@
   width: 236px;
 
   .rc-slider-rail {
-    background-color: @sliderBackground;
+    background-color: $cf-slider-bg;
     height: 8px;
-    border: 1px solid @sliderBorderColor;
+    border: 1px solid $cf-slider-border-color;
   }
 
   .rc-slider-track {
-    background-color: @sliderBackgroundHighlight;
+    background-color: $cf-slider-bg-highlight;
     height: 8px;
-    border: 1px solid @sliderBackgroundHighlight;
+    border: 1px solid $cf-slider-bg-highlight;
   }
 
   .rc-slider-handle {
     height: 14px;
     width: 14px;
     margin-top: -3px;
-    border: 1px solid @sliderBackgroundHighlight;
+    border: 1px solid $cf-slider-bg-highlight;
     border-radius: 8px;
-    background-color: @sliderBackgroundHighlight;
+    background-color: $cf-slider-bg-highlight;
     opacity: 1;
   }
 }
@@ -42,7 +42,7 @@
 }
 
 .faux__polling-info-text {
-  color: #666;
+  color: $cf-text-fonticon01;
 }
 
 .faux__polling-info-value {
@@ -50,11 +50,11 @@
 }
 
 .faux__polling-info-value--off {
-  color: #999;
+  color: $cf-text-fonticon01;
 }
 
 .faux__polling-info-value--active {
-  color: @brandHighlight;
+  color: $cf-brand-highlight;
 }
 
 .faux__polling-info-slider {
@@ -64,9 +64,9 @@
 }
 
 div.faux__refresh-btn {
-  border-left: 1px solid #ccc;
+  border-left: 1px solid $cf-border-color01;
   line-height: 40px;
-  padding: 12px 13px;
+  padding: 10px 13px;
   flex: 0 0 auto;
 }
 
@@ -78,12 +78,12 @@
 .faux__refresh-link:visited,
 .faux__refresh-link:focus,
 .faux__refresh-link {
-  color: #666;
+  color: $cf-text-fonticon01;
   font-size: 14px;
   text-decoration: none;
 }
 
 .faux__refresh-link:hover {
   text-decoration: none;
-  color: @hoverHighlight;
+  color: $cf-brand-hightlight-hover;
 }
diff --git a/app/addons/components/assets/less/tab-element.less b/app/addons/components/assets/scss/tab-element.scss
similarity index 73%
rename from app/addons/components/assets/less/tab-element.less
rename to app/addons/components/assets/scss/tab-element.scss
index 63060d3..4737074 100644
--- a/app/addons/components/assets/less/tab-element.less
+++ b/app/addons/components/assets/scss/tab-element.scss
@@ -10,14 +10,14 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-@import "../../../../../assets/less/mixins.less";
+@import "../../../../../assets/scss/mixins";
 
 .component-tab-element-wrapper {
   margin-left: 0;
   padding-left: 0;
   margin-bottom: 0;
   height: 60px;
-  background-color: #CBCBCB;
+  background-color: $cf-tab-wrapper-bg;
   padding-left: 20px;
   overflow: hidden;
   width: 100%;
@@ -26,10 +26,12 @@
 
 .component-tab-list-element {
   list-style-type: none;
+  padding: 11px;
 }
 
 .component-tab-element {
-  background-color: #eee;
+  background-color: $cf-tab-element-bg;
+  color: $cf-tab-element-color;
   margin-top: 10px;
   margin-right: 5px;
   margin-bottom: -1px;
@@ -42,10 +44,12 @@
   }
 
   label {
+    cursor: pointer;
     margin-right: 0;
     margin-bottom: 0;
     line-height: 25px;
-    .noselect()
+    font-size: 1rem;
+    @include noselect();
   }
 
   .tab-element-content {
@@ -61,11 +65,11 @@
     min-width: 10px;
     padding: 3px 7px;
     line-height: 1;
-    color: #fff;
+    color: $cf-white;
     text-align: center;
     white-space: nowrap;
     vertical-align: middle;
-    background-color: @linkColorHover;
+    background-color: $cf-tab-element-badge;
     border-radius: 10px;
     margin-left: 0.25rem;
     font-size: 0.75rem;
@@ -73,16 +77,17 @@
 
   .tab-element-indicator {
     height: 0px;
-    transition: all .25s linear;
+    transition: all 0.25s linear;
   }
 
   &.tab-element-checked .tab-element-indicator {
     height: 5px;
-    background-color: @linkColorHover;
-  };
+    background-color: $cf-tab-element-indicator-active;
+  }
 
   &.tab-element-checked {
-    background-color: #fff;
+    background-color: $cf-tab-element-bg-active;
+    color: $cf-tab-element-color-active;
     label {
       cursor: default;
       pointer-events: none;
@@ -93,23 +98,23 @@
     font-weight: bold;
   }
 
-  transition: all .25s linear;
+  transition: all 0.25s linear;
 
   &:hover {
-    background-color: #fff;
-    color: @linkColorHover;
-  };
+    background-color: $cf-tab-element-bg-hover;
+    color: $cf-tab-element-color-hover;
+  }
 
   &.tab-element-checked .tab-element-content:hover {
     color: initial;
-  };
+  }
 
   &.tab-element-checked:hover {
     color: initial;
-  };
+  }
 
   &:hover .tab-element-indicator {
     height: 5px;
-    background-color: @linkColorHover;
-  };
+    background-color: $cf-tab-element-indicator-hover;
+  }
 }
diff --git a/app/addons/components/assets/less/tab-window-wrapper.less b/app/addons/components/assets/scss/tab-window-wrapper.scss
similarity index 96%
rename from app/addons/components/assets/less/tab-window-wrapper.less
rename to app/addons/components/assets/scss/tab-window-wrapper.scss
index 5c2da30..2efaba7 100644
--- a/app/addons/components/assets/less/tab-window-wrapper.less
+++ b/app/addons/components/assets/scss/tab-window-wrapper.scss
@@ -15,5 +15,5 @@
 }
 
 .tab__container > div {
-	padding: 20px;
-}
\ No newline at end of file
+  padding: 20px;
+}
diff --git a/app/addons/components/assets/scss/toolbarbutton.scss b/app/addons/components/assets/scss/toolbarbutton.scss
new file mode 100644
index 0000000..03bd0d1
--- /dev/null
+++ b/app/addons/components/assets/scss/toolbarbutton.scss
@@ -0,0 +1,37 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+.toolbar-btn {
+  background-color: transparent;
+  border-color: $cf-border-color01;
+  border-width: 1px;
+  border-style: solid;
+  color: $cf-text-fonticon01;
+  border-radius: $cf-border-radius;
+  &:hover {
+    background-color: $cf-brand-hightlight-hover;
+    border-color: $cf-brand-hightlight-hover;
+    color: $cf-text02;
+    &:disabled {
+      background-color: transparent;
+      border-color: $cf-border-color01;
+      color: $cf-text01-muted;
+    }
+  }
+  &:focus {
+    box-shadow: 0 0 0 0.15rem $cf-brand-hightlight-hover;
+    border-color: $cf-brand-hightlight-hover;
+  }
+  &:disabled {
+    color: $cf-text01-muted;
+  }
+}
diff --git a/app/addons/components/base.js b/app/addons/components/base.js
index 47789ef..64957a0 100644
--- a/app/addons/components/base.js
+++ b/app/addons/components/base.js
@@ -10,8 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import "./assets/less/components.less";
+import "./assets/scss/components.scss";
 
 export default {
-  initialize () {}
+  initialize() {},
 };
diff --git a/app/addons/components/components/badge.js b/app/addons/components/components/badge.js
index 47dd2e5..0f56c3d 100644
--- a/app/addons/components/components/badge.js
+++ b/app/addons/components/components/badge.js
@@ -67,15 +67,17 @@
 
   render() {
     return (
-      <li className="component-badge">
-        <span className="label label-info">{this.props.label}</span>
-        <a
-          href="#"
-          className="label label-info remove-filter"
-          onClick={this.remove} data-bypass="true"
-        >
-          &times;
-        </a>
+      <li className="badge">
+        <div className="remove-filter">
+          <span>{this.props.label}</span>
+          <a
+            href="#"
+            onClick={this.remove}
+            data-bypass="true"
+            className="ms-1">
+            &times;
+          </a>
+        </div>
       </li>
     );
   }
diff --git a/app/addons/components/components/beautify.js b/app/addons/components/components/beautify.js
index 79f4df9..9cd2a0f 100644
--- a/app/addons/components/components/beautify.js
+++ b/app/addons/components/components/beautify.js
@@ -50,7 +50,7 @@
       <OverlayTrigger placement="right" overlay={tooltip}>
         <button
           onClick={this.beautify}
-          className="beautify beautify_map btn btn-primary btn-small beautify-tooltip"
+          className="beautify beautify_map btn btn-cf-primary btn-small beautify-tooltip"
           type="button"
         >
           Format Code
diff --git a/app/addons/components/components/bulkaction.js b/app/addons/components/components/bulkaction.js
index fc63a81..296704c 100644
--- a/app/addons/components/components/bulkaction.js
+++ b/app/addons/components/components/bulkaction.js
@@ -11,10 +11,9 @@
 // the License.
 
 import PropTypes from 'prop-types';
-
 import React from "react";
-import ReactDOM from "react-dom";
-import {OverlayTrigger, Popover} from "react-bootstrap";
+import { OverlayTrigger, Popover, Form } from "react-bootstrap";
+import { ToolbarButton } from './toolbarbutton';
 
 export class BulkActionComponent extends React.Component {
   static propTypes = {
@@ -51,19 +50,17 @@
       return null;
     }
 
-    return (
-      <button
-        onClick={this.props.removeItem}
-        className={'fonticon ' + this.props.bulkIcon}
-        title={this.props.buttonTitle} />
-    );
+    return <ToolbarButton icon={this.props.bulkIcon}
+      title={this.props.buttonTitle}
+      aria-label={this.props.buttonTitle}
+      onClick={this.props.removeItem} />;
   };
 
   getPopupContent = () => {
     return (
       <ul className="bulk-action-component-popover-actions">
         <li onClick={this.selectAll} >
-          <i className="icon fonticon-cancel"></i> {this.props.dropdownContentText}
+          <i className="fonticon fonticon-cancel"></i> {this.props.dropdownContentText}
         </li>
       </ul>
     );
@@ -96,10 +93,12 @@
   getMasterSelector = () => {
     return (
       <div className="bulk-action-component-panel">
-        <input type="checkbox"
+        <Form.Check
           checked={this.props.isChecked}
           onChange={this.props.toggleSelect}
-          disabled={this.props.disabled} />
+          disabled={this.props.disabled}
+          type="checkbox"
+        />
         {this.props.enableOverlay ? <div className="separator"></div> : null}
         {this.props.enableOverlay ? this.getOverlay() : null}
       </div>
diff --git a/app/addons/components/components/codeeditor.js b/app/addons/components/components/codeeditor.js
index a27e1ab..d6c788c 100644
--- a/app/addons/components/components/codeeditor.js
+++ b/app/addons/components/components/codeeditor.js
@@ -372,7 +372,7 @@
           title="Edit string"
           disabled={!this.state.stringEditIconVisible || this.props.disabled}
           style={this.state.stringEditIconStyle} onClick={this.openStringEditModal}>
-          <i className="icon icon-edit"></i>
+          <i className="icon fonticon-pencil"></i>
         </button>
         <StringEditModal
           ref={node => this.stringEditModal = node}
diff --git a/app/addons/components/components/codeeditorpanel.js b/app/addons/components/components/codeeditorpanel.js
index 825138d..eb8deac 100644
--- a/app/addons/components/components/codeeditorpanel.js
+++ b/app/addons/components/components/codeeditorpanel.js
@@ -65,7 +65,7 @@
           target="_blank"
           rel="noopener noreferrer"
         >
-          <i className="icon-question-sign"></i>
+          <i className="fonticon-help-circled"></i>
         </a>
       );
     }
@@ -115,9 +115,9 @@
   state = this.getStoreState();
 
   render() {
-    var classes = 'control-group';
+    var classes = '';
     if (this.props.className) {
-      classes += ' ' + this.props.className;
+      classes = this.props.className;
     }
     return (
       <div className={classes}>
diff --git a/app/addons/components/components/confirmbutton.js b/app/addons/components/components/confirmbutton.js
index 1846592..e989089 100644
--- a/app/addons/components/components/confirmbutton.js
+++ b/app/addons/components/components/confirmbutton.js
@@ -11,9 +11,8 @@
 // the License.
 
 import PropTypes from 'prop-types';
-
-import React from "react";
-import ReactDOM from "react-dom";
+import React from 'react';
+import { Button } from 'react-bootstrap';
 
 export class ConfirmButton extends React.Component {
   static propTypes = {
@@ -21,7 +20,11 @@
     id: PropTypes.string,
     customIcon: PropTypes.string,
     style: PropTypes.object,
-    buttonType: PropTypes.string,
+    variant: PropTypes.oneOf([
+      'primary',
+      'secondary',
+      'danger',
+    ]),
     'data-id': PropTypes.string,
     onClick: PropTypes.func,
     disabled: PropTypes.bool,
@@ -31,36 +34,34 @@
     disabled: false,
     showIcon: true,
     customIcon: 'fonticon-ok-circled',
-    buttonType: 'btn-primary',
+    variant: 'primary',
     style: {},
     'data-id': null,
-    onClick () { }
+    onClick() {},
   };
 
   getIcon = () => {
     if (!this.props.showIcon) {
       return null;
     }
-    return (
-      <i className={"icon " + this.props.customIcon} />
-    );
+    return <i className={'icon ' + this.props.customIcon} />;
   };
 
   render() {
-    const { onClick, buttonType, id, style, text, disabled } = this.props;
+    const { onClick, variant, id, text, disabled, style } = this.props;
     return (
-      <button
+      <Button
         onClick={onClick}
         type="submit"
-        disabled={disabled}
-        data-id={this.props['data-id']}
-        className={'btn save ' + buttonType}
-        id={id}
         style={style}
+        disabled={disabled}
+        variant={'cf-' + variant}
+        data-id={this.props['data-id']}
+        id={id}
       >
         {this.getIcon()}
         {text}
-      </button>
+      </Button>
     );
   }
 }
diff --git a/app/addons/components/components/copy.js b/app/addons/components/components/copy.js
index 83f0ed8..821241a 100644
--- a/app/addons/components/components/copy.js
+++ b/app/addons/components/components/copy.js
@@ -48,7 +48,7 @@
 
   getClipboardElement () {
     if (this.props.displayType === 'icon') {
-      return (<i aria-hidden="true" className="fontawesome icon-paste"></i>);
+      return (<i aria-hidden="true" className="fonticon-copy"></i>);
     }
     return this.props.textDisplay;
   }
diff --git a/app/addons/components/components/deletedatabasemodal.js b/app/addons/components/components/deletedatabasemodal.js
index 004ad68..7601cb7 100644
--- a/app/addons/components/components/deletedatabasemodal.js
+++ b/app/addons/components/components/deletedatabasemodal.js
@@ -11,22 +11,20 @@
 // the License.
 
 import PropTypes from 'prop-types';
-
-import React from "react";
-import ReactDOM from "react-dom";
-import {Modal} from "react-bootstrap";
-import Actions from "../actions";
+import React from 'react';
+import { Button, Modal } from 'react-bootstrap';
+import Actions from '../actions';
 
 export class DeleteDatabaseModal extends React.Component {
   static propTypes = {
     showHide: PropTypes.func.isRequired,
     modalProps: PropTypes.object,
-    onSuccess: PropTypes.func
+    onSuccess: PropTypes.func,
   };
 
   state = {
     inputValue: '',
-    disableSubmit: true
+    disableSubmit: true,
   };
 
   close = (e) => {
@@ -36,14 +34,14 @@
 
     this.setState({
       inputValue: '',
-      disableSubmit: true
+      disableSubmit: true,
     });
 
-    this.props.showHide({showModal: false});
+    this.props.showHide({ showModal: false });
   };
 
   open = () => {
-    this.props.showHide({showModal: true});
+    this.props.showHide({ showModal: true });
   };
 
   getDatabaseName = () => {
@@ -54,11 +52,11 @@
     const val = e.target.value.trim();
 
     this.setState({
-      inputValue: val
+      inputValue: val,
     });
 
     this.setState({
-      disableSubmit: val !== this.getDatabaseName()
+      disableSubmit: val !== this.getDatabaseName(),
     });
   };
 
@@ -80,38 +78,53 @@
     var dbId = this.props.modalProps.dbId;
 
     var warning = isSystemDatabase ? (
-      <p style={{color: '#d14'}} className="warning">
+      <p style={{ color: '#d14' }} className="warning">
         <b>You are about to delete a system database, be careful!</b>
       </p>
     ) : null;
 
     return (
-      <Modal dialogClassName="delete-db-modal" show={showDeleteModal} onHide={this.close}>
+      <Modal
+        dialogClassName="delete-db-modal"
+        show={showDeleteModal}
+        onHide={this.close}
+      >
         <Modal.Header closeButton={true}>
           <Modal.Title>Confirm Deletion</Modal.Title>
         </Modal.Header>
         <Modal.Body>
           {warning}
           <p>
-            Warning: This action will permanently delete <code>{dbId}</code>.
-            To confirm the deletion of the database and all of the
-            database&apos;s documents, you must enter the database&apos;s name.
+            Warning: This action will permanently delete <code>{dbId}</code>. To
+            confirm the deletion of the database and all of the database&apos;s
+            documents, you must enter the database&apos;s name.
           </p>
           <input
             type="text"
-            className="input-block-level"
+            className="form-control"
             onKeyUp={this.onInputKeypress}
             onChange={this.onInputChange}
-            autoFocus={true} />
+            autoFocus={true}
+          />
         </Modal.Body>
         <Modal.Footer>
-          <a href="#" onClick={this.close} data-bypass="true" className="cancel-link">Cancel</a>
-          <button
+          <Button
+            href="#"
+            onClick={this.close}
+            data-bypass="true"
+            variant="cf-cancel"
+            className="cancel-link"
+          >
+            Cancel
+          </Button>
+          <Button
+            id="delete-db-btn"
             disabled={this.state.disableSubmit}
             onClick={this.onDeleteClick}
-            className="btn btn-danger delete">
-            <i className="icon icon-trash" /> Delete Database
-          </button>
+            variant="cf-danger"
+          >
+            <i className="fonticon fonticon-trash" /> Delete Database
+          </Button>
         </Modal.Footer>
       </Modal>
     );
diff --git a/app/addons/components/components/document.js b/app/addons/components/components/document.js
index abb6a68..96e9af0 100644
--- a/app/addons/components/components/document.js
+++ b/app/addons/components/components/document.js
@@ -36,8 +36,7 @@
     docType: Constants.INDEX_RESULTS_DOC_TYPE.VIEW
   };
 
-  onChange = (e) => {
-    e.preventDefault();
+  onChange = () => {
     this.props.docChecked(this.props.doc.id, this.props.doc._rev);
   };
 
@@ -47,7 +46,7 @@
     }
 
     return (
-      <div className="doc-edit-symbol pull-right" title="Edit document">
+      <div className="doc-edit-symbol float-end" title="Edit document">
         {this.props.children}
       </div>
     );
@@ -82,11 +81,13 @@
           checked={this.props.checked}
           data-checked={this.props.checked}
           type="checkbox"
-          onChange={this.onChange}
-          className="js-row-select" />
-        <label onClick={this.onChange}
-          className="label-checkbox-doclist"
-          htmlFor={'checkbox-' + this.props.docIdentifier} />
+          className="form-check-input"
+          onChange={this.onChange} />
+        <label
+          className="visually-hidden"
+          htmlFor={'checkbox-' + this.props.docIdentifier}>
+          Select document {this.props.docIdentifier}
+        </label>
       </div>
     );
   };
@@ -123,11 +124,11 @@
 
   render() {
     return (
-      <div data-id={this.props.docIdentifier} className="doc-row">
-        <div className="custom-inputs">
+      <div data-id={this.props.docIdentifier} className="row gx-0 doc-row">
+        <div className="col-auto">
           {this.getCheckbox()}
         </div>
-        <div className="doc-item">
+        <div className="col doc-item">
           <header onClick={this.onClick}>
             <span className="header-keylabel">
               {this.getDocumentTypeIcon()}
@@ -137,11 +138,10 @@
               {this.props.header ? '"' + this.props.header + '"' : null}
             </span>
             {this.getUrlFragment()}
-            <div className="doc-item-extension-icons pull-right">{this.getExtensionIcons()}</div>
+            <div className="doc-item-extension-icons float-end">{this.getExtensionIcons()}</div>
           </header>
           {this.getDocContent()}
         </div>
-        <div className="clearfix"></div>
       </div>
     );
   }
diff --git a/app/addons/components/components/menudropdown.js b/app/addons/components/components/menudropdown.js
index 91e7dc5..83ff174 100644
--- a/app/addons/components/components/menudropdown.js
+++ b/app/addons/components/components/menudropdown.js
@@ -12,26 +12,27 @@
 
 import classnames from 'classnames';
 import PropTypes from 'prop-types';
-import React from "react";
-import { Button, Dropdown } from "react-bootstrap";
-import RootCloseWrapper from 'react-overlays/lib/RootCloseWrapper';
+import React from 'react';
+import { Button, Dropdown } from 'react-bootstrap';
 
 export class MenuDropDown extends React.Component {
   static defaultProps = {
     icon: 'fonticon-plus-circled',
     hideArrow: false,
-    toggleType: 'link'
+    toggleType: 'link',
   };
 
   static propTypes = {
     icon: PropTypes.string,
     hideArrow: PropTypes.bool,
     links: PropTypes.array.isRequired,
-    toggleType: PropTypes.string.isRequired
+    toggleType: PropTypes.string.isRequired,
   };
 
   createSectionLinks = (links) => {
-    if (!links) { return null; }
+    if (!links) {
+      return null;
+    }
 
     return links.map((link, key) => {
       return this.createEntry(link, key);
@@ -39,17 +40,21 @@
   };
 
   createEntry = (link, key) => {
+    let itemType = (link.url == null) ? 'button' : "a";
     return (
-      <li key={key}>
-        <a className={classnames('icon', link.icon, { 'fonticon-placeholder': !link.icon})}
-          data-bypass={link.external ? 'true' : ''}
-          href={link.url}
-          onClick={link.onClick}
-          rel="noreferrer noopener"
-          target={link.external ? '_blank' : ''}>
-          {link.title}
-        </a>
-      </li>
+      <Dropdown.Item
+        as={itemType}
+        key={key}
+        href={link.url}
+        onClick={link.onClick}
+        className={"py-2 ps-0"}
+      >
+        <div className='ms-0'>
+          <span className={classnames('ms-2 align-middle icon', link.icon, {'fonticon-placeholder': !link.icon})}>
+            {link.title}
+          </span>
+        </div>
+      </Dropdown.Item>
     );
   };
 
@@ -59,17 +64,17 @@
     }
 
     return (
-      <li key={key} className="header-label">{title}</li>
+      <Dropdown.Header key={key}>{title}</Dropdown.Header>
     );
   };
 
   createSection = () => {
     return this.props.links.map((linkSection, key) => {
       if (linkSection.title && linkSection.links) {
-        return ([
+        return [
           this.createSectionTitle(linkSection.title, 'title_' + key),
-          this.createSectionLinks(linkSection.links)
-        ]);
+          this.createSectionLinks(linkSection.links),
+        ];
       }
       return this.createEntry(linkSection, 'el' + key);
     });
@@ -77,79 +82,58 @@
 
   render() {
     const menuItems = this.createSection();
-    const arrowClass = this.props.hideArrow ? '' : 'arrow';
-    const CustomMenuToggle = this.props.toggleType === 'button' ? CustomMenuButtonToggle : CustomMenuLinkToggle;
+    const CustomMenuToggle =
+      this.props.toggleType === 'button'
+        ? CustomMenuButtonToggle
+        : CustomMenuLinkToggle;
     return (
-      <Dropdown id="dropdown-menu">
-        <CustomMenuToggle bsRole="toggle" icon={this.props.icon}>
-        </CustomMenuToggle>
-        <CustomMenu bsRole="menu" className={arrowClass}>
+      <Dropdown
+        id="dropdown-menu">
+        <Dropdown.Toggle
+          as={CustomMenuToggle}
+          icon={this.props.icon}
+        ></Dropdown.Toggle>
+        <Dropdown.Menu
+          className={"pt-0 dropdown-arrow"}
+        >
           {menuItems}
-        </CustomMenu>
+        </Dropdown.Menu>
       </Dropdown>
     );
   }
 }
 
-class CustomMenuButtonToggle extends React.Component {
-  constructor(props, context) {
-    super(props, context);
-    this.handleClick = this.handleClick.bind(this);
-  }
-
-  handleClick(e) {
-    e.preventDefault();
-    this.props.onClick(e);
-  }
-
-  render() {
+const CustomMenuButtonToggle = React.forwardRef(
+  ({ children, onClick, icon }, ref) => {
+    const handleClick = (e) => {
+      e.preventDefault();
+      onClick(e);
+    };
     return (
-      <Button
-        onClick={this.handleClick}>
-        <i className={"dropdown-toggle " + this.props.icon}
-          style={{ fontSize: '1rem', boxShadow: '0px 0px 0px' }}>
-        </i>
-        {this.props.children}
+      <Button className="dropdown-toggle" ref={ref} onClick={handleClick} variant="cf-secondary">
+        <i className={icon} />
+        {children}
       </Button>
     );
   }
-}
+);
 
-class CustomMenuLinkToggle extends React.Component {
-  constructor(props, context) {
-    super(props, context);
-    this.handleClick = this.handleClick.bind(this);
-  }
+const CustomMenuLinkToggle = React.forwardRef(
+  ({ children, onClick, icon }, ref) => {
+    const handleClick = (e) => {
+      e.preventDefault();
+      onClick(e);
+    };
 
-  handleClick(e) {
-    e.preventDefault();
-    this.props.onClick(e);
-  }
-
-  render() {
     return (
-      <a className={"dropdown-toggle icon " + this.props.icon}
-        style={{ fontSize: '1rem', boxShadow: '0px 0px 0px' }}
-        onClick={this.handleClick}>
-        {this.props.children}
+      <a
+        ref={ref}
+        className={'dropdown-toggle cursor-pointer icon ' + icon}
+        style={{ fontSize: '1rem', boxShadow: '0px 0px 0px'}}
+        onClick={handleClick}
+      >
+        {children}
       </a>
     );
   }
-}
-
-export class CustomMenu extends React.Component {
-  constructor(props, context) {
-    super(props, context);
-  }
-
-  render() {
-    const { children, open, onClose, className } = this.props;
-    return (
-      <RootCloseWrapper disabled={!open} onRootClose={onClose}>
-        <ul className={classnames('dropdown-menu', className)} role="menu" aria-labelledby="dLabel">
-          {children}
-        </ul>
-      </RootCloseWrapper>
-    );
-  }
-}
+);
diff --git a/app/addons/components/components/stringeditmodal.js b/app/addons/components/components/stringeditmodal.js
index 501a72e..8edcf2a 100644
--- a/app/addons/components/components/stringeditmodal.js
+++ b/app/addons/components/components/stringeditmodal.js
@@ -12,7 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from "react";
-import {Modal} from "react-bootstrap";
+import { Button, Modal } from "react-bootstrap";
 import ace from "ace-builds";
 import Helpers from "../../documents/helpers";
 
@@ -47,7 +47,10 @@
     }
   };
 
-  closeModal = () => {
+  closeModal = (ev) => {
+    if (ev) {
+      ev.preventDefault();
+    }
     this.props.onClose();
   };
 
@@ -57,14 +60,17 @@
 
   getSaveBtn = () => {
     return this.state.editorInitialized && (
-      <button id="string-edit-save-btn" onClick={this.save} className="btn btn-primary save">
-        <i className="fonticon-circle-check"></i> Modify Text
-      </button>);
+      <Button
+        id="string-edit-save-btn"
+        onClick={this.save}
+        variant="cf-primary">
+        <i className="fonticon-circle-check"></i>Modify Text
+      </Button>);
   };
 
   render() {
     return (
-      <Modal className="string-editor-modal" show={this.props.visible} onHide={this.closeModal}>
+      <Modal dialogClassName="string-editor-modal" show={this.props.visible} onHide={this.closeModal} scrollable>
         <Modal.Header closeButton={true}>
           <Modal.Title>Edit Value <span id="string-edit-header"></span></Modal.Title>
         </Modal.Header>
@@ -75,7 +81,7 @@
           </div>
         </Modal.Body>
         <Modal.Footer>
-          <a className="cancel-link" onClick={this.closeModal}>Cancel</a>
+          <Button href="#" data-bypass="true" variant="cf-cancel" className="cancel-link" onClick={this.closeModal}>Cancel</Button>
           { this.getSaveBtn() }
         </Modal.Footer>
       </Modal>
diff --git a/app/addons/components/components/styledselect.js b/app/addons/components/components/styledselect.js
deleted file mode 100644
index 5a4d5c5..0000000
--- a/app/addons/components/components/styledselect.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-import PropTypes from 'prop-types';
-
-import React from "react";
-import ReactDOM from "react-dom";
-
-export class StyledSelect extends React.Component {
-  static propTypes = {
-    selectValue: PropTypes.string.isRequired,
-    selectId: PropTypes.string.isRequired,
-    selectChange: PropTypes.func.isRequired
-  };
-
-  render() {
-    return (
-      <div className="styled-select">
-        <label htmlFor={this.props.selectId}>
-          <i className="fonticon-down-dir styled-select-icon"></i>
-          <i className="fonticon-down-dir styled-select-hover-icon"></i>
-          <select
-            value={this.props.selectValue}
-            id={this.props.selectId}
-            className={this.props.selectValue}
-            onChange={this.props.selectChange}
-          >
-            {this.props.selectContent}
-          </select>
-        </label>
-      </div>
-    );
-  }
-}
diff --git a/app/addons/components/components/tabelement.js b/app/addons/components/components/tabelement.js
index 37f1e72..c94e34e 100644
--- a/app/addons/components/components/tabelement.js
+++ b/app/addons/components/components/tabelement.js
@@ -26,9 +26,6 @@
     <li className={`component-tab-element ${additionalClass}`}>
 
       <label>
-        <div className="tab-element-indicator-wrapper">
-          <div className="tab-element-indicator"></div>
-        </div>
         <div className="tab-element-content">
           <i className={iconClass}></i>
           <input
@@ -40,6 +37,9 @@
           {text}
           {badge}
         </div>
+        <div className="tab-element-indicator-wrapper">
+          <div className="tab-element-indicator"></div>
+        </div>
       </label>
     </li>
 
diff --git a/app/addons/components/components/toolbarbutton.js b/app/addons/components/components/toolbarbutton.js
new file mode 100644
index 0000000..954eb57
--- /dev/null
+++ b/app/addons/components/components/toolbarbutton.js
@@ -0,0 +1,57 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+import PropTypes from 'prop-types';
+import React from 'react';
+
+export class ToolbarButton extends React.Component {
+  static propTypes = {
+    id: PropTypes.string,
+    icon: PropTypes.string,
+    style: PropTypes.object,
+    'data-id': PropTypes.string,
+    onClick: PropTypes.func,
+    disabled: PropTypes.bool,
+  };
+
+  static defaultProps = {
+    disabled: false,
+    style: {},
+    'data-id': null,
+    onClick: () => {},
+  };
+
+  getIcon = () => {
+    if (!this.props.icon) {
+      return null;
+    }
+    return <i className={'fonticon ' + this.props.icon} />;
+  };
+
+  render() {
+    const { onClick, id, children, disabled, ...otherProps } = this.props;
+    return (
+      <button
+        onClick={onClick}
+        type="button"
+        disabled={disabled}
+        className="toolbar-btn"
+        data-id={this.props['data-id']}
+        id={id}
+        {...otherProps}
+      >
+        {this.getIcon()}
+        {children}
+      </button>
+    );
+  }
+}
diff --git a/app/addons/components/components/tray.js b/app/addons/components/components/tray.js
index e37d18e..5d622c9 100644
--- a/app/addons/components/components/tray.js
+++ b/app/addons/components/components/tray.js
@@ -83,7 +83,7 @@
         show={this.props.contentVisible}
         onHide={this.props.closeTray}
         placement={"bottom"}
-        container={this.props.container}
+        target={this.props.container}
         rootClose={true}
         onEnter={this.props.onEnter}
       >
diff --git a/app/addons/components/react-components.js b/app/addons/components/react-components.js
index d5223aa..e22c966 100644
--- a/app/addons/components/react-components.js
+++ b/app/addons/components/react-components.js
@@ -14,7 +14,6 @@
 import {Badge, BadgeList} from './components/badge';
 import {ToggleHeaderButton} from './components/toggleheaderbutton';
 import {BulkActionComponent} from './components/bulkaction';
-import {StyledSelect} from './components/styledselect';
 import {StringEditModal} from './components/stringeditmodal';
 import {CodeEditorPanel} from './components/codeeditorpanel';
 import {CodeEditor} from './components/codeeditor';
@@ -32,6 +31,7 @@
 import {Copy} from './components/copy';
 import {TabWindowWrapper} from './components/tabwindowwrapper';
 import {ThrottledReactSelectAsync} from './components/throttledreacselect';
+import {ToolbarButton} from './components/toolbarbutton';
 
 export default {
   Accordion,
@@ -41,7 +41,6 @@
   BulkActionComponent,
   ConfirmButton,
   ToggleHeaderButton,
-  StyledSelect,
   CodeEditorPanel,
   CodeEditor,
   StringEditModal,
@@ -61,5 +60,6 @@
   RefreshBtn,
   Copy,
   TabWindowWrapper,
-  ThrottledReactSelectAsync
+  ThrottledReactSelectAsync,
+  ToolbarButton
 };
diff --git a/app/addons/config/__tests__/components.test.js b/app/addons/config/__tests__/components.test.js
index 1c6110d..b051eab 100644
--- a/app/addons/config/__tests__/components.test.js
+++ b/app/addons/config/__tests__/components.test.js
@@ -11,8 +11,12 @@
 // the License.
 
 import React from 'react';
+import { act } from 'react-dom/test-utils';
+import { Provider } from 'react-redux';
+import { createStore, combineReducers } from 'redux';
 import {mount} from 'enzyme';
 import sinon from 'sinon';
+import reducer from '../reducers';
 import FauxtonAPI from '../../../core/api';
 import AddOptionButton from '../components/AddOptionButton';
 import ConfigOption from '../components/ConfigOption';
@@ -40,44 +44,62 @@
       node,
       options
     };
+    let store;
+    beforeEach(() => {
+      store = createStore(
+        combineReducers({ permissions: reducer})
+      );
+    });
 
     it('deletes options', () => {
       const spy = sinon.stub();
-      const wrapper = mount(<ConfigTableScreen
-        {...defaultProps}
-        deleteOption={spy}/>
+      const wrapper = mount(
+        <Provider store={store}>
+          <ConfigTableScreen
+            {...defaultProps}
+            deleteOption={spy}/>
+        </Provider>
       );
-      wrapper.instance().deleteOption({});
+      wrapper.find(ConfigTableScreen).instance().deleteOption({});
       sinon.assert.called(spy);
     });
 
     it('saves options', () => {
       const spy = sinon.stub();
-      const wrapper = mount(<ConfigTableScreen
-        {...defaultProps}
-        saveOption={spy}/>
+      const wrapper = mount(
+        <Provider store={store}>
+          <ConfigTableScreen
+            {...defaultProps}
+            saveOption={spy}/>
+        </Provider>
       );
-      wrapper.instance().saveOption({});
+      wrapper.find(ConfigTableScreen).instance().saveOption({});
       sinon.assert.called(spy);
     });
 
     it('edits options', () => {
       const spy = sinon.stub();
-      const wrapper = mount(<ConfigTableScreen
-        {...defaultProps}
-        editOption={spy}/>
+      const wrapper = mount(
+        <Provider store={store}>
+          <ConfigTableScreen
+            {...defaultProps}
+            editOption={spy}/>
+        </Provider>
       );
-      wrapper.instance().editOption({});
+      wrapper.find(ConfigTableScreen).instance().editOption({});
       sinon.assert.called(spy);
     });
 
     it('cancels editing', () => {
       const spy = sinon.stub();
-      const wrapper = mount(<ConfigTableScreen
-        {...defaultProps}
-        cancelEdit={spy}/>
+      const wrapper = mount(
+        <Provider store={store}>
+          <ConfigTableScreen
+            {...defaultProps}
+            cancelEdit={spy}/>
+        </Provider>
       );
-      wrapper.instance().cancelEdit();
+      wrapper.find(ConfigTableScreen).instance().cancelEdit();
       sinon.assert.called(spy);
     });
   });
@@ -143,7 +165,7 @@
         </tr></tbody></table>
       );
 
-      expect(el.find('input.config-value-input').length).toBe(1);
+      expect(el.find('input.form-control').length).toBe(1);
       expect(el.find('button.btn-config-cancel').length).toBe(1);
       expect(el.find('button.btn-config-save').length).toBe(1);
     });
@@ -155,7 +177,7 @@
         </tr></tbody></table>
       );
 
-      expect(el.find('input.config-value-input').prop('disabled')).toBe(true);
+      expect(el.find('input.form-control').prop('disabled')).toBe(true);
     });
 
     it('saves changed value of input when save clicked', () => {
@@ -167,7 +189,7 @@
         </tr></tbody></table>
       );
 
-      el.find('input.config-value-input').simulate('change', change);
+      el.find('input.form-control').simulate('change', change);
       el.find('button.btn-config-save').simulate('click');
       expect(spy.calledWith('new_value')).toBeTruthy();
     });
@@ -197,7 +219,7 @@
         <table><tbody><tr><ConfigOptionTrash {...defaultProps}/></tr></tbody></table>
       );
 
-      el.find('i.icon').simulate('click');
+      el.find('i.fonticon-trash').simulate('click');
       expect(el.find('div.confirmation-modal').length).toBe(1);
     });
 
@@ -207,57 +229,69 @@
         <table><tbody><tr><ConfigOptionTrash {...defaultProps} onDelete={spy}/></tr></tbody></table>
       );
 
-      el.find('i.icon').simulate('click');
-      el.find('div.confirmation-modal .btn').simulate('click');
+      el.find('i.fonticon-trash').simulate('click');
+      el.find('div.confirmation-modal .btn-cf-primary').simulate('click');
       sinon.assert.calledOnce(spy);
     });
   });
 
   describe('AddOptionButton', () => {
-    it('displays add option controls when clicked', () => {
+    it('displays add option controls when clicked', async() => {
       const el = mount(
         <AddOptionButton onAdd={() => {}}/>
       );
 
       el.find('button#add-option-button').simulate('click');
-      expect(el.find('div#add-option-popover .input-section-name').length).toBe(1);
-      expect(el.find('div#add-option-popover .input-option-name').length).toBe(1);
-      expect(el.find('div#add-option-popover .input-value').length).toBe(1);
-      expect(el.find('div#add-option-popover .btn-create').length).toBe(1);
+      await act(async () => {
+        el.update();
+      });
+      expect(el.find('div#add-option-popover input[name="section"]').length).toBe(1);
+      expect(el.find('div#add-option-popover input[name="name"]').length).toBe(1);
+      expect(el.find('div#add-option-popover input[name="value"]').length).toBe(1);
+      expect(el.find('div#add-option-popover .btn').length).toBe(1);
     });
 
-    it('does not hide popover if create clicked with invalid input', () => {
+    it('does not hide popover if create clicked with invalid input', async() => {
       const el = mount(
         <AddOptionButton onAdd={() => {}}/>
       );
 
       el.find('button#add-option-button').simulate('click');
-      el.find('div#add-option-popover .btn-create').simulate('click');
+      el.find('div#add-option-popover .btn').simulate('click');
+      await act(async () => {
+        el.update();
+      });
       expect(el.find('div#add-option-popover').length).toBe(1);
     });
 
-    it('does not add option if create clicked with invalid input', () => {
+    it('does not add option if create clicked with invalid input', async() => {
       const spy = sinon.spy();
       const el = mount(
         <AddOptionButton onAdd={spy}/>
       );
 
       el.find('button#add-option-button').simulate('click');
-      el.find('div#add-option-popover .btn-create').simulate('click');
+      el.find('div#add-option-popover .btn').simulate('click');
+      await act(async () => {
+        el.update();
+      });
       sinon.assert.notCalled(spy);
     });
 
-    it('adds option when create clicked with valid input', () => {
+    it('adds option when create clicked with valid input', async() => {
       const spy = sinon.spy();
       const el = mount(
         <AddOptionButton onAdd={spy}/>
       );
 
       el.find('button#add-option-button').simulate('click');
-      el.find('div#add-option-popover .input-section-name').simulate('change', { target: { value: 'test_section' } });
-      el.find('div#add-option-popover .input-option-name').simulate('change', { target: { value: 'test_option' } });
-      el.find('div#add-option-popover .input-value').simulate('change', { target: { value: 'test_value' } });
-      el.find('div#add-option-popover .btn-create').simulate('click');
+      el.find('div#add-option-popover input[name="section"]').simulate('change', { target: { value: 'test_section' } });
+      el.find('div#add-option-popover input[name="name"]').simulate('change', { target: { value: 'test_option' } });
+      el.find('div#add-option-popover input[name="value"]').simulate('change', { target: { value: 'test_value' } });
+      el.find('div#add-option-popover .btn').simulate('click');
+      await act(async () => {
+        el.update();
+      });
       sinon.assert.calledWithMatch(spy, {
         sectionName: 'test_section',
         optionName: 'test_option',
diff --git a/app/addons/config/assets/less/config.less b/app/addons/config/assets/less/config.less
deleted file mode 100644
index 57c6cf3..0000000
--- a/app/addons/config/assets/less/config.less
+++ /dev/null
@@ -1,208 +0,0 @@
-//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
-//  use this file except in compliance with the License. You may obtain a copy of
-//  the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-//  License for the specific language governing permissions and limitations under
-//  the License.
-
-@import "../../../../../assets/less/variables.less";
-@import "../../../../../assets/less/bootstrap/mixins.less";
-
-.config-item {
-  height: 65px;
-
-  .config-value-form {
-    button {
-      margin-left: 8px;
-    }
-  }
-
-  .config-value-input {
-    width: 80%;
-    margin: 0;
-  }
-
-  .config-show-value,
-  .config-delete-value {
-    cursor: pointer;
-  }
-
-  .text-center {
-    text-align: center;
-  }
-
-  button { width: 7%;}
-  transition: background-color 100ms;
-}
-
-.config-item-trash:hover {
-  color: @dangerRed;
-}
-
-.config-item-deleting {
-  text-decoration: line-through;
-  text-decoration-color: red;
-}
-
-#config-trash {
-  width: 5%;
-}
-
-table.config {
-  thead th {
-    border-left: none;
-    border-bottom: 2px solid #999;
-  }
-  tr {
-    th, td {
-      vertical-align: middle;
-      .btn.btn-small {
-        padding: 10px 3px;
-      }
-    }
-  }
-}
-
-#add-option-button {
-  line-height: 40px;
-  cursor: pointer;
-  border-left: 1px solid #ccc;
-  border-right: none;
-  border-top: none;
-  border-bottom: none;
-  padding: 12px 14px;
-
-  &:hover {
-    transition: none;
-    text-decoration: none;
-    color: @linkColorHover;
-  }
-}
-
-#add-section-button {
-
-}
-
-.add-section-tray {
-  padding: 20px;
-  width: 300px;
-
-  &:before {
-    right: 138px;
-  }
-
-  input {
-    width: 100%;
-  }
-
-  form {
-    margin-bottom: 0px;
-  }
-
-  a.btn {
-    color: white;
-    background-color: @linkColor;
-    line-height: 1.5em;
-    border: 0px;
-    padding: 10px 10px 9px;
-    font-size: 14px;
-    .border-radius(5px);
-
-    &:hover {
-      background-color: #cbcbcb;
-      color: white;
-    }
-  }
-
-  .typeahead {
-    width: 260px;
-    margin-top: 0px;
-
-    a {
-      color: #ffffff;
-    }
-  }
-}
-
-#add-option-popover {
-  background-color: #333;
-  color: white;
-  padding: 20px;
-  border-radius: 0;
-  width: 300px;
-  max-width: none;
-  display: block;
-
-  .popover-content {
-    padding: 0;
-  }
-
-  .popover-title {
-    font-size: 16px;
-    padding: 0;
-    margin: 10px 0;
-    border: none;
-    display: block;
-    text-align: left;
-    color: #fff;
-    text-shadow: none;
-    height: auto;
-    line-height: 1em;
-    background-color: #333;
-  }
-
-  input {
-    width: 100%;
-  }
-
-  a.btn {
-    color: white;
-    background-color: @linkColor;
-    line-height: 1.5em;
-    border: 0;
-    padding: 10px 10px 9px;
-    font-size: 14px;
-    .border-radius(5px);
-
-    &:hover {
-      background-color: #cbcbcb;
-      color: white;
-    }
-  }
-
-  .arrow, .arrow::after {
-    border-bottom-color: #333 !important;
-  }
-
-}
-
-#add-option-popover::before {
-  display: none;
-}
-
-.config-warning-cluster-wrapper {
-  .config-warning-cluster-container {
-    margin-left: -50px;
-  }
-  margin: 40px auto;
-  width: 70%;
-  .fonticon-attention-circled {
-    font-size: 40px;
-  }
-  .config-warning-icon-container {
-    width: 50px;
-    margin-top: -5px;
-  }
-  .config-warning-other-text {
-    margin-left: 50px;
-  }
-}
-
-div.faux__config-breadcrumbs {
-  flex: 0 0 331px !important;
-}
diff --git a/app/addons/config/assets/scss/config.scss b/app/addons/config/assets/scss/config.scss
new file mode 100644
index 0000000..9325648
--- /dev/null
+++ b/app/addons/config/assets/scss/config.scss
@@ -0,0 +1,75 @@
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License. You may obtain a copy of
+//  the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+
+@import "../../../../../assets/scss/variables";
+@import "../../../../../assets/scss/mixins";
+
+.config-item {
+  height: 65px;
+  vertical-align: middle;
+
+  .btn-config-save {
+    margin-right: 4px;
+  }
+
+  .config-show-value,
+  .config-delete-value {
+    cursor: pointer;
+    overflow-wrap: anywhere;
+  }
+
+  .text-center {
+    text-align: center;
+  }
+
+  transition: background-color 100ms;
+}
+
+.config-item-trash:hover {
+  color: $cf-danger;
+}
+
+.config-item-deleting {
+  text-decoration: line-through;
+  text-decoration-color: $cf-danger;
+}
+
+#config-trash {
+  width: 5%;
+}
+
+#add-option-popover {
+  display: block;
+  width: 300px;
+}
+
+.config-warning-cluster-wrapper {
+  .config-warning-cluster-container {
+    margin-left: -50px;
+  }
+  margin: 40px auto;
+  width: 70%;
+  .fonticon-attention-circled {
+    font-size: 40px;
+  }
+  .config-warning-icon-container {
+    width: 50px;
+    margin-top: -5px;
+  }
+  .config-warning-other-text {
+    margin-left: 50px;
+  }
+}
+
+div.faux__config-breadcrumbs {
+  flex: 0 0 331px !important;
+}
diff --git a/app/addons/config/base.js b/app/addons/config/base.js
index ffa6cab..feffb49 100644
--- a/app/addons/config/base.js
+++ b/app/addons/config/base.js
@@ -13,7 +13,7 @@
 import FauxtonAPI from '../../core/api';
 import Config from './routes';
 import reducers from './reducers';
-import './assets/less/config.less';
+import './assets/scss/config.scss';
 
 Config.initialize = function () {
   FauxtonAPI.addHeaderLink({
diff --git a/app/addons/config/components/AddOptionButton.js b/app/addons/config/components/AddOptionButton.js
index ddaf479..04f609f 100644
--- a/app/addons/config/components/AddOptionButton.js
+++ b/app/addons/config/components/AddOptionButton.js
@@ -12,7 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
-import {Button, Overlay, Popover} from 'react-bootstrap';
+import {Button, Form, Overlay, Popover} from 'react-bootstrap';
 
 export default class AddOptionButton extends React.Component {
   static propTypes = {
@@ -82,47 +82,58 @@
 
   getPopover () {
     return (
-      <Popover className="tray" id="add-option-popover" title="Add Option">
-        <input
-          className="input-section-name"
-          onChange={this.updateSectionName.bind(this)}
-          type="text" name="section" placeholder="Section" autoComplete="off" autoFocus/>
-        <input
-          className="input-option-name"
-          onChange={this.updateOptionName.bind(this)}
-          type="text" name="name" placeholder="Name"/>
-        <input
-          className="input-value"
-          onChange={this.updateValue.bind(this)}
-          type="text" name="value" placeholder="Value"/>
-        <a
-          className="btn btn-create"
-          onClick={this.onAdd.bind(this)}>
-          Create
-        </a>
+      <Popover className="tray" id="add-option-popover">
+        <Popover.Header as="h3">Add Option</Popover.Header>
+        <Popover.Body>
+          <Form.Control type="text"
+            className="mb-3"
+            onChange={this.updateSectionName.bind(this)}
+            name="section"
+            placeholder="Section"
+            autoComplete="off"
+            autoFocus />
+          <Form.Control type="text"
+            className="mb-3"
+            onChange={this.updateOptionName.bind(this)}
+            name="name"
+            placeholder="Name" />
+          <Form.Control type="text"
+            className="mb-3"
+            onChange={this.updateValue.bind(this)}
+            name="value"
+            placeholder="Value"/>
+          <div className="col12 text-end">
+            <Button id="add-option-btn-create" variant="cf-primary" onClick={this.onAdd.bind(this)}>
+            Create
+            </Button>
+          </div>
+        </Popover.Body>
       </Popover>
     );
   }
 
   render () {
     return (
-      <div id="add-option-panel">
-        <Button
-          id="add-option-button"
-          onClick={this.togglePopover.bind(this)}
-          ref={node => this.target = node}>
-          <i className="icon icon-plus header-icon"></i>
-          Add Option
-        </Button>
-
-        <Overlay
-          show={this.state.show}
-          onHide={this.hidePopover.bind(this)}
-          placement="bottom"
-          rootClose={true}
-          target={() => this.target}>
-          {this.getPopover()}
-        </Overlay>
+      <div className="row mb-3">
+        <div className="col-12 text-end">
+          <Button
+            id="add-option-button"
+            variant="cf-primary"
+            className="col-12 col-md-auto"
+            onClick={this.togglePopover.bind(this)}
+            ref={node => this.target = node}>
+            <i className="fonticon-plus" />
+            Add Option
+          </Button>
+          <Overlay
+            show={this.state.show}
+            onHide={this.hidePopover.bind(this)}
+            placement="bottom-end"
+            rootClose={true}
+            target={() => this.target}>
+            {this.getPopover()}
+          </Overlay>
+        </div>
       </div>
     );
   }
diff --git a/app/addons/config/components/ConfigOptionTrash.js b/app/addons/config/components/ConfigOptionTrash.js
index a37f031..ae91a1b 100644
--- a/app/addons/config/components/ConfigOptionTrash.js
+++ b/app/addons/config/components/ConfigOptionTrash.js
@@ -13,6 +13,7 @@
 import PropTypes from 'prop-types';
 import React from 'react';
 import FauxtonComponents from '../../fauxton/components';
+import ReactComponents from '../../components/react-components';
 
 export default class ConfigOptionTrash extends React.Component {
   constructor (props) {
@@ -44,12 +45,13 @@
   render() {
     return (
       <td className="text-center config-item-trash config-delete-value">
-        <i className="icon icon-trash" onClick={this.showModal}></i>
         <FauxtonComponents.ConfirmationModal
+          title="Confirm Deletion"
           text={`Are you sure you want to delete ${this.props.sectionName}/${this.props.optionName}?`}
           onClose={this.hideModal}
           onSubmit={this.onDelete}
           visible={this.state.show}/>
+        <ReactComponents.ToolbarButton icon="fonticon-trash" onClick={this.showModal}/>
       </td>
     );
   }
diff --git a/app/addons/config/components/ConfigOptionValue.js b/app/addons/config/components/ConfigOptionValue.js
index dc46aaf..e65e9d6 100644
--- a/app/addons/config/components/ConfigOptionValue.js
+++ b/app/addons/config/components/ConfigOptionValue.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
+import { Button } from 'react-bootstrap';
 
 export default class ConfigOptionValue extends React.Component {
   static propTypes = {
@@ -44,12 +45,14 @@
     }
     return (
       <span>
-        <button
-          className="btn btn-primary fonticon-ok-circled btn-small btn-config-save"
+        <Button
+          variant="cf-primary"
+          className="fonticon-ok-circled btn-config-save"
           onClick={this.onSave.bind(this)}
         />
-        <button
-          className="btn fonticon-cancel-circled btn-small btn-config-cancel"
+        <Button
+          variant="cf-secondary"
+          className="fonticon-cancel-circled btn-config-cancel"
           onClick={this.props.onCancelEdit}
         />
       </span>
@@ -61,14 +64,18 @@
     if (this.props.editing) {
       return (
         <td>
-          <div className="config-value-form">
-            <input
-              onChange={this.onChange.bind(this)}
-              defaultValue={this.props.value}
-              disabled={this.props.saving}
-              autoFocus type="text" className="config-value-input"
-            />
-            {this.getButtons()}
+          <div className="row g-2">
+            <div className="col">
+              <input
+                onChange={this.onChange.bind(this)}
+                defaultValue={this.props.value}
+                disabled={this.props.saving}
+                autoFocus type="text" className="form-control"
+              />
+            </div>
+            <div className="col-auto">
+              {this.getButtons()}
+            </div>
           </div>
         </td>
       );
diff --git a/app/addons/config/components/ConfigTable.js b/app/addons/config/components/ConfigTable.js
index 5e7a57d..121a626 100644
--- a/app/addons/config/components/ConfigTable.js
+++ b/app/addons/config/components/ConfigTable.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
+import { Table } from 'react-bootstrap';
 import ConfigOption from './ConfigOption';
 
 export default class ConfigTable extends React.Component {
@@ -46,9 +47,8 @@
 
   render() {
     const options = this.createOptions();
-
     return (
-      <table className="config table table-striped table-bordered">
+      <Table striped>
         <thead>
           <tr>
             <th id="config-section" width="22%">Section</th>
@@ -60,7 +60,7 @@
         <tbody>
           {options}
         </tbody>
-      </table>
+      </Table>
     );
   }
 }
diff --git a/app/addons/config/components/ConfigTableScreen.js b/app/addons/config/components/ConfigTableScreen.js
index de4971e..9a9ebc3 100644
--- a/app/addons/config/components/ConfigTableScreen.js
+++ b/app/addons/config/components/ConfigTableScreen.js
@@ -13,6 +13,7 @@
 import PropTypes from 'prop-types';
 import React from 'react';
 import Components from '../../components/react-components';
+import AddOptionButtonContainer from './AddOptionButtonContainer';
 import ConfigTable from './ConfigTable';
 
 export default class ConfigTableScreen extends React.Component {
@@ -57,13 +58,16 @@
       );
     }
     return (
-      <ConfigTable
-        saving={this.props.saving}
-        onDeleteOption={this.deleteOption}
-        onSaveOption={this.saveOption}
-        onEditOption={this.editOption}
-        onCancelEdit={this.cancelEdit}
-        options={this.props.options}/>
+      <>
+        <AddOptionButtonContainer node={this.props.node} />
+        <ConfigTable
+          saving={this.props.saving}
+          onDeleteOption={this.deleteOption}
+          onSaveOption={this.saveOption}
+          onEditOption={this.editOption}
+          onCancelEdit={this.cancelEdit}
+          options={this.props.options}/>
+      </>
     );
   }
 }
diff --git a/app/addons/config/components/ConfigTabs.js b/app/addons/config/components/ConfigTabs.js
index beab5ee..0c21fe4 100644
--- a/app/addons/config/components/ConfigTabs.js
+++ b/app/addons/config/components/ConfigTabs.js
@@ -24,7 +24,7 @@
   });
   return (
     <nav className="sidenav">
-      <ul className="nav nav-list">
+      <ul className="nav flex-column">
         {tabItems}
       </ul>
     </nav>
diff --git a/app/addons/config/layout.js b/app/addons/config/layout.js
index 7774e06..c377c56 100644
--- a/app/addons/config/layout.js
+++ b/app/addons/config/layout.js
@@ -11,7 +11,6 @@
 // the License.
 
 import React from 'react';
-import AddOptionButtonContainer from './components/AddOptionButtonContainer';
 import ConfigTableContainer from './components/ConfigTableContainer';
 import ConfigTabs from './components/ConfigTabs';
 import CORSComponents from '../cors/components';
@@ -19,7 +18,7 @@
 import NotificationCenterButton from '../fauxton/notifications/components/NotificationCenterButton';
 import { ApiBarWrapper } from '../components/layouts';
 
-export const ConfigHeader = ({ node, crumbs, docURL, endpoint }) => {
+export const ConfigHeader = ({ crumbs, docURL, endpoint }) => {
   return (
     <header className="two-panel-header">
       <div className="flex-layout flex-row">
@@ -28,11 +27,8 @@
         </div>
         <div className="right-header-wrapper flex-layout flex-row flex-body">
           <div id="react-headerbar" className="flex-body"> </div>
-          <div id="right-header" className="flex-fill">
-            <AddOptionButtonContainer node={node} />
-          </div>
           <ApiBarWrapper docURL={docURL} endpoint={endpoint} />
-          <div id="notification-center-btn" className="flex-fill">
+          <div id="notification-center-btn">
             <NotificationCenterButton />
           </div>
         </div>
diff --git a/app/addons/cors/__tests__/components.test.js b/app/addons/cors/__tests__/components.test.js
index b26368c..11faf6d 100644
--- a/app/addons/cors/__tests__/components.test.js
+++ b/app/addons/cors/__tests__/components.test.js
@@ -15,7 +15,7 @@
 import utils from "../../../../test/mocha/testUtils";
 import React from "react";
 import sinon from "sinon";
-import { shallow, mount } from 'enzyme';
+import { mount } from 'enzyme';
 
 FauxtonAPI.router = new FauxtonAPI.Router([]);
 const { restore } = utils;
@@ -32,7 +32,7 @@
       const spy = sinon.stub(window, 'confirm');
       spy.returns(false);
 
-      const wrapper = shallow(<Views.CORSScreen
+      const wrapper = mount(<Views.CORSScreen
         corsEnabled={true}
         isAllOrigins={false}
         origins={['https://localhost']}
@@ -42,7 +42,7 @@
         hideDeleteDomainConfirmation={sinon.stub()}
       />);
 
-      wrapper.find('.enable-disable.btn').simulate('click');
+      wrapper.find('button#enable-disable-cors').simulate('click');
       sinon.assert.calledOnce(spy);
     });
 
@@ -50,7 +50,7 @@
       const spy = sinon.stub(window, 'confirm');
       spy.returns(false);
 
-      const wrapper = shallow(<Views.CORSScreen
+      const wrapper = mount(<Views.CORSScreen
         corsEnabled={true}
         isAllOrigins={true}
         origins={[]}
@@ -59,7 +59,7 @@
         fetchAndLoadCORSOptions={sinon.stub()}
         hideDeleteDomainConfirmation={sinon.stub()}
       />);
-      wrapper.find('.enable-disable.btn').simulate('click');
+      wrapper.find('button#enable-disable-cors').simulate('click');
       sinon.assert.notCalled(spy);
     });
 
@@ -133,7 +133,7 @@
 
     it('calls validates each domain', () => {
       const spyValidateDomain = sinon.spy(Helpers, 'validateDomain');
-      const wrapper = shallow(<Views.OriginInput isVisible={true} addOrigin={sinon.stub()} />);
+      const wrapper = mount(<Views.OriginInput isVisible={true} addOrigin={sinon.stub()} />);
 
       wrapper.find('input').simulate('change', { target: { value: newOrigin } });
       wrapper.find('.btn').simulate('click', { preventDefault: sinon.stub() });
@@ -151,7 +151,7 @@
 
     it('shows notification if origin is not valid', () => {
       const spyAddNotification = sinon.spy(FauxtonAPI, 'addNotification');
-      const wrapper = shallow(<Views.OriginInput isVisible={true} addOrigin={sinon.stub()} />);
+      const wrapper = mount(<Views.OriginInput isVisible={true} addOrigin={sinon.stub()} />);
 
       wrapper.find('input').simulate('change', { target: { value: 'badOrigin' } });
       wrapper.find('.btn').simulate('click', { preventDefault: sinon.stub() });
@@ -167,14 +167,14 @@
     });
 
     it('calls changeOrigin() when you switch from "Select List of Origins" to "Allow All Origins"', () => {
-      const wrapper = shallow(<Views.Origins corsEnabled={true} isAllOrigins={false} originChange={spyChangeOrigin} />);
+      const wrapper = mount(<Views.Origins corsEnabled={true} isAllOrigins={false} originChange={spyChangeOrigin} />);
 
       wrapper.find('input[value="all"]').simulate('change', { target: { checked: true, value: 'all' } });
       expect(spyChangeOrigin.calledWith(true)).toBeTruthy();
     });
 
     it('calls changeOrigin() when you switch from "Allow All Origins" to "Select List of Origins"', () => {
-      const wrapper = shallow(<Views.Origins corsEnabled={true} isAllOrigins={true} originChange={spyChangeOrigin} />);
+      const wrapper = mount(<Views.Origins corsEnabled={true} isAllOrigins={true} originChange={spyChangeOrigin} />);
 
       wrapper.find('input[value="selected"]').simulate('change', { target: { checked: true, value: 'selected' } });
       expect(spyChangeOrigin.calledWith(false)).toBeTruthy();
diff --git a/app/addons/cors/assets/less/cors.less b/app/addons/cors/assets/less/cors.less
deleted file mode 100644
index c9aaf45..0000000
--- a/app/addons/cors/assets/less/cors.less
+++ /dev/null
@@ -1,146 +0,0 @@
-//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
-//  use this file except in compliance with the License. You may obtain a copy of
-//  the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-//  License for the specific language governing permissions and limitations under
-//  the License.
-
-@import "../../../../../assets/less/bootstrap/variables.less";
-@import "../../../../../assets/less/variables.less";
-@import "../../../../../assets/less/bootstrap/mixins.less";
-
-.cors-page {
-  .loading-lines {
-    margin-top: 20px;
-  }
-  .enable-disable.btn {
-    margin-top: 10px;
-  }
-
-}
-
-
-
-#cors-header {
-  margin: 18px 30px 0 30px;
-}
-
-#corsForm {
-  margin: 0;
-
-  .checkbox {
-    font-size: 16px;
-
-    input[type='checkbox'] {
-      margin-top: 4px;
-    }
-  }
-  .radio {
-    font-size: 16px;
-
-    input[type='radio'] {
-      margin-top: 4px;
-    }
-  }
-
-  .cors-enable {
-    padding: 10px 30px 18px 30px;
-    border-bottom: 1px solid #ccc;
-  }
-  #origin-domains-container {
-    button.add-domain {
-      height: 46px;
-    }
-  }
-  #collapsing-container {
-    border-top: 1px solid #fff;
-    border-bottom: 1px solid #ccc;
-    padding: 18px 30px;
-  }
-  .origin-domains {
-    margin: 0;
-    padding: 18px 0px;
-
-    p {
-      line-height: 36px;
-    }
-    .controls {
-      margin-top: 18px;
-    }
-  }
-  .localhost-tip {
-    padding: 18px 30px;
-    border-top: 1px solid #fff;
-    border-bottom: 1px solid #ccc;
-  }
-  .form-actions {
-    padding: 18px 30px;
-    margin-top: 0;
-    border-top: 1px solid #fff;
-  }
-
-  .input-append {
-      width: 80%;
-  }
-
-  input[type='text'] {
-    width: 100%;
-  }
-
-  .input-append.edit-domain-section {
-    width : 100%;
-    margin-bottom: 0px;
-
-    input {
-      width: calc(100% ~"-" 82px);
-      /*
-        the 'update' button is 76 px wide,
-        so 82px gives it a little room
-        compatible browsers: http://caniuse.com/#feat=calc
-      */
-    }
-  }
-}
-
-#origin-domain-table {
-  td {
-    padding: 8px 2px;
-  }
-  span {
-    cursor: pointer;
-    color: @brandHighlight;
-    display: inline-block;
-    padding-top: 9px;
-  }
-
-  tr a {
-    text-decoration: none;
-    color: @subListGray;
-  }
-
-  tr a:hover {
-    color: @hoverHighlight;
-  }
-
-  .edit-domain-section {
-    .btn {
-      height: 46px;
-    }
-  }
-  .url-display {
-    padding: 10px;
-  }
-
-  .update-domain-btn {
-    position: absolute;
-    right: -2px;
-    top: 0;
-    padding: 9px;
-    border-radius: 0 6px 6px 0;
-  }
-}
diff --git a/app/addons/cors/assets/scss/cors.scss b/app/addons/cors/assets/scss/cors.scss
new file mode 100644
index 0000000..ea9b9ef
--- /dev/null
+++ b/app/addons/cors/assets/scss/cors.scss
@@ -0,0 +1,79 @@
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License. You may obtain a copy of
+//  the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+
+@import "../../../../../assets/scss/variables";
+
+.cors-page {
+  .loading-lines {
+    margin-top: 20px;
+  }
+  .btn#enable-disable-cors {
+    margin-top: 10px;
+  }
+}
+
+#cors-header {
+  margin: 16px 30px 0 30px;
+}
+
+#corsForm {
+  margin: 0;
+
+  .checkbox {
+    font-size: 16px;
+
+    input[type="checkbox"] {
+      margin-top: 4px;
+    }
+  }
+  .radio {
+    font-size: 16px;
+
+    input[type="radio"] {
+      margin-top: 4px;
+    }
+  }
+
+  .cors-enable {
+    padding: 10px 30px 18px 30px;
+    border-bottom: 1px solid $cf-border-color01;
+  }
+  #origin-domains-container {
+    button#add-domain {
+      height: 46px;
+    }
+  }
+  #collapsing-container {
+    padding: 18px 30px;
+  }
+  .origin-domains {
+    margin: 0;
+    padding: 18px 0px;
+
+    p {
+      line-height: 36px;
+    }
+    .controls {
+      margin-top: 18px;
+    }
+  }
+}
+
+#origin-domain-table {
+  margin-top: 1rem;
+  border-top: 1px solid $cf-border-color01;
+
+  .action-btn-col {
+    width: 30px;
+    vertical-align: middle;
+  }
+}
diff --git a/app/addons/cors/base.js b/app/addons/cors/base.js
index f9c475f..62b6a7d 100644
--- a/app/addons/cors/base.js
+++ b/app/addons/cors/base.js
@@ -11,7 +11,7 @@
 // the License.
 
 import FauxtonAPI from "../../core/api";
-import "./assets/less/cors.less";
+import "./assets/scss/cors.scss";
 import reducers from "./reducers";
 
 const CORS = FauxtonAPI.addon();
@@ -19,7 +19,7 @@
 CORS.initialize = function () {};
 
 FauxtonAPI.addReducers({
-  cors: reducers
+  cors: reducers,
 });
 
 export default CORS;
diff --git a/app/addons/cors/components/CORSScreen.js b/app/addons/cors/components/CORSScreen.js
index e5d76b8..1e01922 100644
--- a/app/addons/cors/components/CORSScreen.js
+++ b/app/addons/cors/components/CORSScreen.js
@@ -1,4 +1,5 @@
 import React, { Component } from "react";
+import { Button } from 'react-bootstrap';
 import app from "../../../app";
 import ReactComponents from "../../components/react-components";
 import FauxtonComponents from "../../fauxton/components";
@@ -124,14 +125,15 @@
           <div className="cors-enable">
             {this.props.corsEnabled ? 'CORS is currently enabled.' : 'CORS is currently disabled.'}
             <br />
-            <button
+            <Button
               type="button"
-              className="enable-disable btn btn-secondary"
+              id="enable-disable-cors"
+              variant="cf-primary"
               onClick={this.enableCorsChange.bind(this)}
-              disabled={this.props.isLoading ? 'disabled' : null}
+              disabled={this.props.isLoading}
             >
               {this.props.corsEnabled ? 'Disable CORS' : 'Enable CORS'}
-            </button>
+            </Button>
           </div>
           {originSettings}
         </form>
@@ -140,7 +142,6 @@
           title="Confirm Deletion"
           visible={this.props.deleteDomainModalVisible}
           text={deleteMsg}
-          buttonClass="btn-danger"
           onClose={this.props.hideDeleteDomainConfirmation}
           onSubmit={this.deleteOrigin.bind(this)}
           successButtonLabel="Delete Domain" />
diff --git a/app/addons/cors/components/OriginInput.js b/app/addons/cors/components/OriginInput.js
index 6ef352c..81d93a9 100644
--- a/app/addons/cors/components/OriginInput.js
+++ b/app/addons/cors/components/OriginInput.js
@@ -1,5 +1,6 @@
 import PropTypes from 'prop-types';
 import React, { Component } from "react";
+import { Button, Form, InputGroup } from 'react-bootstrap';
 import { validateDomain, normalizeUrls } from "../helpers";
 
 export default class OriginInput extends Component {
@@ -41,13 +42,18 @@
     return (
       <div id="origin-domains-container">
         <div className="origin-domains">
-          <div className="input-append">
-            <input type="text" name="new_origin_domain" placeholder="https://example.com"
-              onChange={this.onInputChange.bind(this)} value={this.state.origin} />
-            <button onClick={this.addOrigin.bind(this)} className="btn btn-secondary add-domain">
-              <i className="icon fonticon-ok-circled"></i> Add Domain
-            </button>
-          </div>
+          <InputGroup>
+            <Form.Control
+              name="new_origin_domain"
+              placeholder="https://example.com"
+              onChange={this.onInputChange.bind(this)}
+              value={this.state.origin}
+              aria-label="New domain name"
+            />
+            <Button variant="cf-secondary" id="add-domain" onClick={this.addOrigin.bind(this)}>
+              <i className="fonticon-ok-circled"></i> Add Domain
+            </Button>
+          </InputGroup>
         </div>
       </div>
     );
diff --git a/app/addons/cors/components/OriginRow.js b/app/addons/cors/components/OriginRow.js
index 0e72c5b..693bd75 100644
--- a/app/addons/cors/components/OriginRow.js
+++ b/app/addons/cors/components/OriginRow.js
@@ -1,7 +1,8 @@
 import PropTypes from 'prop-types';
 import React, { Component } from "react";
+import { Button, Form, InputGroup } from 'react-bootstrap';
 import { validateDomain } from "../helpers";
-
+import ReactComponents from '../../components/react-components';
 
 export default class OriginRow extends Component {
 
@@ -48,13 +49,20 @@
   createOriginDisplay () {
     if (this.state.edit) {
       return (
-        <div className="input-append edit-domain-section">
-          <input type="text" name="update_origin_domain" onChange={ this.onInputChange.bind(this) } onKeyUp={ this.onKeyUp.bind(this) } value={this.state.updatedOrigin} />
-          <button onClick={ this.updateOrigin.bind(this) } className="btn btn-primary update-origin"> Update </button>
-        </div>
+        <InputGroup>
+          <Form.Control
+            name="update_origin_domain"
+            onChange={ this.onInputChange.bind(this) }
+            onKeyUp={ this.onKeyUp.bind(this) }
+            value={this.state.updatedOrigin}
+            aria-label="Edit domain name"
+          />
+          <Button variant="cf-primary" onClick={ this.updateOrigin.bind(this) }>Update</Button>
+        </InputGroup>
+
       );
     }
-    return <div className="js-url url-display">{this.props.origin}</div>;
+    return <div>{this.props.origin}</div>;
   }
 
   render () {
@@ -64,15 +72,11 @@
         <td>
           {display}
         </td>
-        <td width="30">
-          <span>
-            <a className="fonticon-pencil" onClick={ this.editOrigin.bind(this) } title="Edit domain." />
-          </span>
+        <td className="action-btn-col">
+          <ReactComponents.ToolbarButton icon="fonticon-pencil" onClick={ this.editOrigin.bind(this) } aria-label="Edit domain"/>
         </td>
-        <td width="30">
-          <span>
-            <a href="#" data-bypass="true" className="fonticon-trash" onClick={ this.deleteOrigin.bind(this) } title="Delete domain." />
-          </span>
+        <td className="action-btn-col">
+          <ReactComponents.ToolbarButton icon="fonticon-trash" onClick={ this.deleteOrigin.bind(this) } aria-label="Delete domain"/>
         </td>
       </tr>
     );
diff --git a/app/addons/cors/components/Origins.js b/app/addons/cors/components/Origins.js
index e64bf24..4a39815 100644
--- a/app/addons/cors/components/Origins.js
+++ b/app/addons/cors/components/Origins.js
@@ -1,5 +1,6 @@
 import PropTypes from 'prop-types';
 import React, { Component } from "react";
+import { Form } from 'react-bootstrap';
 
 export default class Origins extends Component {
 
@@ -28,12 +29,20 @@
       <div>
         <p><strong> Origin Domains </strong> </p>
         <p>Databases will accept requests from these domains: </p>
-        <label className="radio">
-          <input type="radio" checked={this.props.isAllOrigins} value="all" onChange={ this.onOriginChange.bind(this) } name="all-domains"/> All domains ( * )
-        </label>
-        <label className="radio">
-          <input type="radio" checked={!this.props.isAllOrigins} value="selected" onChange={ this.onOriginChange.bind(this) } name="selected-domains"/> Restrict to specific domains
-        </label>
+        <Form.Check
+          type="radio"
+          value="all"
+          label="All domains ( * )"
+          checked={this.props.isAllOrigins}
+          onChange={ this.onOriginChange.bind(this) }
+        />
+        <Form.Check
+          type="radio"
+          value="selected"
+          label="Restrict to specific domains"
+          checked={!this.props.isAllOrigins}
+          onChange={ this.onOriginChange.bind(this) }
+        />
       </div>
     );
   }
diff --git a/app/addons/databases/assets/less/databases.less b/app/addons/databases/assets/less/databases.less
deleted file mode 100644
index 4158f3e..0000000
--- a/app/addons/databases/assets/less/databases.less
+++ /dev/null
@@ -1,138 +0,0 @@
-//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
-//  use this file except in compliance with the License. You may obtain a copy of
-//  the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-//  License for the specific language governing permissions and limitations under
-//  the License.
-
-@import "../../../../../assets/less/bootstrap/variables.less";
-@import "../../../../../assets/less/variables.less";
-@import "../../../../../assets/less/bootstrap/mixins.less";
-
-.tools .nav {
-  margin-bottom: 10px;
-}
-
-.new-database-tray {
-
-  &:before {
-    right: 250px;
-  }
-
-  input.input-xxlarge {
-    margin-bottom: 0px;
-    width: 100%;
-  }
-
-  a.btn {
-    margin-left: 0;
-    line-height: 1.5em;
-    border: 0px;
-    padding: 10px 10px 9px;
-    font-size: 14px;
-
-    &.btn-cancel {
-      background-color: transparent;
-      border-color: @background;
-      border-width: 1px;
-      border-style: solid;
-      color: @buttonText;
-      &:hover {
-        background-color: @background;
-        color: @hoverHighlight;
-      }
-    }
-  }
-
-  .tray-contents {
-    display: flex;
-    flex-direction: column;
-    height: 100%;
-    width: 352px;
-    overflow-y: scroll;
-  }
-
-  .tray-header {
-    padding-right: 20px;
-    padding-left: 20px;
-    padding-top: 10px;
-  }
-  .tray-body {
-    flex: 1;
-    padding-right: 20px;
-    padding-left: 20px;
-  }
-  .tray-footer {
-    display: flex;
-    justify-content: space-between;
-    padding: 20px;
-    a.btn {
-      min-width: 140px;
-    }
-  }
-
-  .db-name-label {
-    font-weight: bold;
-  }
-
-  .partitioned-db-section {
-    flex: 1;
-  }
-  .partitioned-db-label {
-    font-weight: bold;
-    padding-top: 1rem;
-  }
-  .partitioned-db-options {
-    display: flex;
-    align-items: baseline;
-    padding-top: 1rem;
-    input {
-      margin: 0px 10px 0px 0px;
-    }
-  }
-  .partitioned-db-help {
-    padding-top: 1rem;
-    font-size: 0.875rem;
-    border-bottom: 2px solid rgba(255, 255, 255, 0.1);
-  }
-}
-
-.new-database-tray--expanded {
-  height: calc(100% - 64px);
-}
-
-#database-pagination {
-  float: right;
-}
-
-.database-load-fail {
-  color: #999999;
-  height: 49px;
-}
-
-.database-actions > * {
-  margin-right: 10px;
-}
-
-@media screen and (max-width: 768px) {
-  .add-new-database-btn span{
-    display: none;
-  }
-  .new-database-tray:before {
-    right: 185px;
-  }
-}
-
-@media screen and (max-width: 1120px) {
-  // Left nav menuy is closed
-  .new-database-tray {
-    .tray-contents {
-      width: 332px;
-    }
-  }
-}
diff --git a/app/addons/databases/assets/scss/databases.scss b/app/addons/databases/assets/scss/databases.scss
new file mode 100644
index 0000000..778b1e0
--- /dev/null
+++ b/app/addons/databases/assets/scss/databases.scss
@@ -0,0 +1,93 @@
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License. You may obtain a copy of
+//  the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+
+@import "../../../../../assets/scss/variables";
+
+.tools .nav {
+  margin-bottom: 10px;
+}
+
+.new-database-tray {
+  .btn {
+    min-width: 140px;
+    &.btn-cf-cancel {
+      color: $cf-text02;
+      &:hover {
+        color: $cf-btn-cancel-color-hover;
+      }
+    }
+  }
+
+  .tray-contents {
+    display: flex;
+    flex-direction: column;
+    height: 100%;
+    width: 352px;
+    overflow-y: auto;
+    padding: 20px;
+  }
+
+  .tray-header {
+    margin-bottom: 1rem;
+  }
+
+  .tray-body {
+    flex: 1;
+  }
+
+  .tray-footer {
+    display: flex;
+    justify-content: space-between;
+  }
+
+  ul.partitioned-db-help {
+    padding-left: 0;
+  }
+}
+
+.database-name-input{
+  background-color: transparent;
+}
+
+.new-database-tray--expanded {
+  height: calc(100% - 64px);
+}
+
+#database-pagination {
+  float: right;
+}
+
+.database-load-fail {
+  height: 49px;
+}
+
+.database-actions > * {
+  margin-right: 10px;
+}
+
+@media screen and (max-width: 768px) {
+  .add-new-database-btn span {
+    display: none;
+  }
+  .new-database-tray:before {
+    right: 185px;
+  }
+}
+
+@media screen and (max-width: 1120px) {
+  // Left nav menuy is closed
+  .new-database-tray {
+    .tray-contents {
+      width: 332px;
+    }
+  }
+}
diff --git a/app/addons/databases/base.js b/app/addons/databases/base.js
index 8cfd0d3..eff5bf1 100644
--- a/app/addons/databases/base.js
+++ b/app/addons/databases/base.js
@@ -17,7 +17,7 @@
 import Databases from "./routes";
 import Actions from "./actions";
 import reducers from './reducers';
-import "./assets/less/databases.less";
+import "./assets/scss/databases.scss";
 
 Databases.initialize = function () {
   FauxtonAPI.addHeaderLink({
diff --git a/app/addons/databases/components.js b/app/addons/databases/components.js
index 109e4a9..79cf5f1 100644
--- a/app/addons/databases/components.js
+++ b/app/addons/databases/components.js
@@ -23,12 +23,15 @@
 import Stores from "./stores";
 import Actions from "./actions";
 
-import { Tooltip, OverlayTrigger } from 'react-bootstrap';
+import { Tooltip, OverlayTrigger, Button, Form, ButtonGroup } from 'react-bootstrap';
 
 const databasesStore = Stores.databasesStore;
 const deleteDbModalStore = ComponentsStore.deleteDbModalStore;
 
-const { Accordion, AccordionItem, DeleteDatabaseModal, ToggleHeaderButton, TrayContents } = Components;
+const {Accordion, AccordionItem, DeleteDatabaseModal,
+  ToggleHeaderButton,
+  TrayContents,
+  ToolbarButton } = Components;
 
 
 class DatabasesController extends React.Component {
@@ -230,19 +233,9 @@
         {this.getExtensionColumns(item)}
 
         <td className="database-actions">
-          <a className="db-actions btn fonticon-replicate set-replication-start"
-            aria-label={`Replicate ${id}`}
-            title={"Replicate " + name}
-            href={"#/replication/_create/" + encodedId} />
-          <a
-            aria-label={`Set permissions for ${id}`}
-            className="db-actions btn icon-lock set-permissions"
-            title={"Set permissions for " + name} href={"#/database/" + encodedId + "/permissions"} />
-          <a
-            aria-label={`Delete ${id}`}
-            className="db-actions btn icon-trash"
-            onClick={this.showDeleteDatabaseModal.bind(this, id, encodedId)}
-            title={'Delete ' + id} data-bypass="true" />
+          <ToolbarButton icon="fonticon-replicate" title={`Replicate ${id}`} aria-label={`Replicate ${id}`} onClick={() => FauxtonAPI.navigate("#/replication/_create/" + encodedId)} />
+          <ToolbarButton icon="fonticon-lock" title={`Set permission for ${id}`} aria-label={`Set permission for ${id}`} onClick={() => FauxtonAPI.navigate("#/database/" + encodedId + "/permissions")} />
+          <ToolbarButton icon="fonticon-trash" title={`Delete ${id}`} aria-label={`Delete ${id}`} onClick={this.showDeleteDatabaseModal.bind(this, id, encodedId)} />
         </td>
       </tr>
     );
@@ -255,7 +248,7 @@
 
   return (
     <OverlayTrigger placement="top" overlay={tooltip}>
-      <i className="js-db-graveyard icon icon-exclamation-sign" title={graveyardTitle}></i>
+      <i className="js-db-graveyard fonticon fonticon-attention-circled" title={graveyardTitle}></i>
     </OverlayTrigger>
   );
 };
@@ -380,34 +373,28 @@
       </Accordion>
     ) : null;
     return (
-      <div className='partitioned-db-section' >
-        <label htmlFor="partitioned-db" className='partitioned-db-label'>
-          Partitioning
-        </label>
-        <div className='partitioned-db-options'>
-          <form>
-            <label htmlFor="non-partitioned-option">
-              <input
-                id="non-partitioned-option"
-                type="radio"
-                checked={this.state.partitionedSelected === false}
-                onChange={this.onTogglePartitioned}
-              />
-              Non-partitioned - recommended for most workloads
-            </label>
-            <label htmlFor="partitioned-option">
-              <input
-                id="partitioned-option"
-                type="radio"
-                checked={this.state.partitionedSelected === true}
-                onChange={this.onTogglePartitioned}
-              />
-              Partitioned
-            </label>
-          </form>
+      <Form.Group className="mb-3" controlId="formBasicCheckbox">
+        <Form.Label>Partitioning</Form.Label>
+        <div key="partition-radio" className="mb-3">
+          <Form.Check
+            label="Non-partitioned - recommended for most workloads"
+            name="group1"
+            type="radio"
+            id="non-partitioned-option"
+            checked={this.state.partitionedSelected === false}
+            onChange={this.onTogglePartitioned}
+          />
+          <Form.Check
+            label="Partitioned"
+            name="group1"
+            type="radio"
+            id="partitioned-option"
+            checked={this.state.partitionedSelected === true}
+            onChange={this.onTogglePartitioned}
+          />
         </div>
         {partitionedDbHelp}
-      </div>
+      </Form.Group>
     );
   }
 
@@ -425,6 +412,7 @@
           title="Create Database"
           fonticon="fonticon-new-database"
           text="Create Database" />
+
         <TrayContents
           className={classNames}
           contentVisible={this.state.isPromptVisible}
@@ -432,31 +420,32 @@
           onEnter={this.focusInput} >
           <div className='tray-contents'>
             <div className='tray-header'>
-              <h3>Create Database</h3>
+              <h3 >Create Database</h3>
             </div>
             <div className='tray-body'>
-              <label htmlFor="js-new-database-name" className='db-name-label'>
-                Database name
-              </label>
-              <input
-                id="js-new-database-name"
-                ref={node => this.newDbName = node}
-                type="text"
-                value={this.state.databaseName}
-                onChange={this.onChange} onKeyUp={this.onKeyUpInInput}
-                className="input-xxlarge"
-                placeholder="database-name"
-              />
-              {this.partitionedOption()}
+              <Form>
+                <Form.Group className="mb-3">
+                  <Form.Label htmlFor="js-new-database-name">Database name</Form.Label>
+                  <Form.Control
+                    id="js-new-database-name"
+                    ref={node => this.newDbName = node}
+                    type="text"
+                    value={this.state.databaseName}
+                    onChange={this.onChange}
+                    onKeyUp={this.onKeyUpInInput}
+                    placeholder="database-name"/>
+                </Form.Group>
+                {this.partitionedOption()}
+              </Form>
             </div>
-            <div className='tray-footer'>
-              <a className="btn btn-cancel" id="js-cancel-create-database" onClick={this.closeTray}>
-                Cancel
-              </a>
-              <a className="btn btn-primary" id="js-create-database" onClick={this.onAddDatabase}>
+            <ButtonGroup bsPrefix="tray-footer" >
+              <Button variant='cf-cancel' id="js-cancel-create-database" onClick={this.closeTray}>
+               Cancel
+              </Button>
+              <Button variant='cf-primary' id="js-create-database" onClick={this.onAddDatabase}>
                 Create
-              </a>
-            </div>
+              </Button>
+            </ButtonGroup>
           </div>
         </TrayContents>
       </div>
diff --git a/app/addons/databases/tests/nightwatch/checkDatabaseTooltip.js b/app/addons/databases/tests/nightwatch/checkDatabaseTooltip.js
index b3af0ee..da09055 100644
--- a/app/addons/databases/tests/nightwatch/checkDatabaseTooltip.js
+++ b/app/addons/databases/tests/nightwatch/checkDatabaseTooltip.js
@@ -31,7 +31,7 @@
 
       //this opens the alternative header
       .clickWhenVisible('.tableview-checkbox-cell input[type="checkbox"]')
-      .clickWhenVisible('.bulk-action-component-selector-group button.fonticon-trash', waitTime, false)
+      .clickWhenVisible('.bulk-action-component-selector-group button.toolbar-btn', waitTime, false)
       .acceptAlert()
       .waitForElementVisible('.Toastify__toast-container .Toastify__toast--info', waitTime, false)
 
@@ -43,7 +43,7 @@
       .moveToElement('.js-db-graveyard', 1, 1)
 
       // confirm the tooltip element has been inserted
-      .waitForElementPresent('.tooltip.fade.top.in', waitTime, false)
+      .waitForElementPresent('.tooltip-inner', waitTime, false)
       .end();
   }
 };
diff --git a/app/addons/databases/tests/nightwatch/createsDatabasePartitioned.js b/app/addons/databases/tests/nightwatch/createsDatabasePartitioned.js
index a4a5b70..fcc9dd1 100644
--- a/app/addons/databases/tests/nightwatch/createsDatabasePartitioned.js
+++ b/app/addons/databases/tests/nightwatch/createsDatabasePartitioned.js
@@ -58,12 +58,13 @@
       .checkForDatabaseCreated(newDatabaseName, waitTime)
       .url(baseUrl + '/_all_dbs')
       .waitForElementVisible('html', waitTime, false)
+
       .getText('html', function (result) {
         var data = result.value,
             createdDatabaseIsPresent = data.indexOf(newDatabaseName);
 
         this.verify.ok(createdDatabaseIsPresent > 0,
-          'Checking if new database shows up in _all_dbs.');
+          'Checking if new database shows up in _all_dbs (partitioned).');
       })
       .end();
   },
@@ -92,7 +93,7 @@
             createdDatabaseIsPresent = data.indexOf(invalidDatabaseName);
 
         this.verify.ok(createdDatabaseIsPresent === -1,
-          'Checking if new database shows up in _all_dbs.');
+          'Checking if new database does not show up in _all_dbs (partitioned).');
       })
       .end();
   }
diff --git a/app/addons/databases/tests/nightwatch/deletesDatabase.js b/app/addons/databases/tests/nightwatch/deletesDatabase.js
index 9c6926d..47978d2 100644
--- a/app/addons/databases/tests/nightwatch/deletesDatabase.js
+++ b/app/addons/databases/tests/nightwatch/deletesDatabase.js
@@ -22,8 +22,8 @@
       .createDatabase(newDatabaseName)
       .loginToGUI()
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_all_docs')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-toggle')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-itemwrapper .fonticon-trash')
+      .clickWhenVisible('#faux-header__doc-header-dropdown-toggle')
+      .clickWhenVisible('div[aria-labelledby="faux-header__doc-header-dropdown-toggle"] .fonticon-trash')
       .waitForElementVisible('.delete-db-modal', waitTime, false)
       .clickWhenVisible('.delete-db-modal input[type="text"]', waitTime, false)
       .setValue('.delete-db-modal input[type="text"]', [newDatabaseName, client.Keys.ENTER])
@@ -43,7 +43,11 @@
 
       .waitForElementPresent('a[href="database/' + newDatabaseName + '/_all_docs"]', waitTime, false)
       .assert.elementPresent('a[href="database/' + newDatabaseName + '/_all_docs"]')
-      .clickWhenVisible('[title="Delete ' + newDatabaseName + '"]', waitTime, false)
+
+      .waitForElementPresent('button[aria-label="Delete ' + newDatabaseName + '"]', waitTime, false)
+      .execute('button[aria-label="Delete ' + newDatabaseName + '"]").scrollIntoView();')
+      .clickWhenVisible('button[aria-label="Delete ' + newDatabaseName + '"]', waitTime, false)
+
       .waitForElementVisible('.delete-db-modal', waitTime, false)
       .clickWhenVisible('.delete-db-modal input[type="text"]', waitTime, false)
       .setValue('.delete-db-modal input[type="text"]', [newDatabaseName, client.Keys.ENTER])
diff --git a/app/addons/databases/tests/nightwatch/deletesDatabaseSpecialChars.js b/app/addons/databases/tests/nightwatch/deletesDatabaseSpecialChars.js
index 363dadd..916c260 100644
--- a/app/addons/databases/tests/nightwatch/deletesDatabaseSpecialChars.js
+++ b/app/addons/databases/tests/nightwatch/deletesDatabaseSpecialChars.js
@@ -21,8 +21,8 @@
       .createDatabase(newDatabaseName)
       .loginToGUI()
       .url(baseUrl + '/#/database/' + encodeURIComponent(newDatabaseName) + '/_all_docs')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-toggle')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-itemwrapper .fonticon-trash')
+      .clickWhenVisible('#faux-header__doc-header-dropdown-toggle')
+      .clickWhenVisible('div[aria-labelledby="faux-header__doc-header-dropdown-toggle"] button .fonticon-trash')
       .waitForElementVisible('.delete-db-modal', waitTime, false)
       .clickWhenVisible('.delete-db-modal input[type="text"]', waitTime, false)
       .setValue('.delete-db-modal input[type="text"]', [newDatabaseName, client.Keys.ENTER])
@@ -43,7 +43,7 @@
 
       .waitForElementPresent('a[href="database/' + encodeURIComponent(newDatabaseName) + '/_all_docs"]', waitTime, false)
       .assert.elementPresent('a[href="database/' + encodeURIComponent(newDatabaseName) + '/_all_docs"]')
-      .clickWhenVisible('[title="Delete ' + newDatabaseName + '"]', waitTime, false)
+      .clickWhenVisible('button[aria-label="Delete ' + newDatabaseName + '"]', waitTime, false)
       .waitForElementPresent('.delete-db-modal', waitTime, false)
       .clickWhenVisible('.delete-db-modal input[type="text"]', waitTime, false)
       .setValue('.delete-db-modal input[type="text"]', [newDatabaseName, client.Keys.ENTER])
diff --git a/app/addons/documentation/assets/less/documentation.less b/app/addons/documentation/assets/less/documentation.less
deleted file mode 100644
index 1cba0eb..0000000
--- a/app/addons/documentation/assets/less/documentation.less
+++ /dev/null
@@ -1,65 +0,0 @@
-/*// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.*/
-
-#documentation-page {
-
-  table{
-    margin: 50px;
-
-    .icons-container {
-      width: 80px;
-      height: 80px;
-      max-width: 200px;
-      max-height: 100px;
-      padding-right: 20px;
-    }
-
-    .couchdb-icon {
-      background: transparent url('../../../../../assets/img/couchdb-logo.png') no-repeat 50% 50%;
-      height: 60px;
-      width: 60px;
-      background-size: 60px auto;
-    }
-
-    .github-icon {
-      background: transparent url('../../../../../assets/img/github.png') no-repeat 50% 50%;
-      height: 40px;
-      width: 40px;
-      background-size: 40px auto;
-    }
-
-    .asf-feather-icon {
-      background: transparent url('../../../../../assets/img/asf-feather-logo.png') no-repeat 50% 50%;
-      height: 70px;
-      width: 100px;
-      background-size: 70px;
-    }
-
-    .linkedin-icon {
-      background: transparent url('../../../../../assets/img/linkedin.png') no-repeat 50% 50%;
-      height: 40px;
-      width: 40px;
-      background-size: 40px auto;
-    }
-
-    .twitter-icon {
-      background: transparent url('../../../../../assets/img/twitter.png') no-repeat 50% 50%;
-      height: 50px;
-      width: 50px;
-      background-size: 60px;
-    }
-
-    .icon {
-      margin: auto;
-    }
-  }
-}
diff --git a/app/addons/documentation/assets/scss/documentation.scss b/app/addons/documentation/assets/scss/documentation.scss
new file mode 100644
index 0000000..61e3874
--- /dev/null
+++ b/app/addons/documentation/assets/scss/documentation.scss
@@ -0,0 +1,62 @@
+/*// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.*/
+
+#dashboard-content #documentation-page {
+  padding: 1.5rem;
+
+  .links {
+    div.logo {
+      padding-top: 0.75rem;
+      padding-bottom: 0.75rem;
+    }
+  }
+
+  .couchdb-icon {
+    background: transparent url('../../../../../assets/img/couchdb-logo.png')
+      no-repeat 50% 50%;
+    background-size: 60px auto;
+    background-position-x: left;
+    padding-left: 70px;
+  }
+
+  .github-icon {
+    background: transparent url('../../../../../assets/img/github.png')
+      no-repeat 50% 50%;
+    background-size: 48px auto;
+    background-position-x: left;
+    padding-left: 70px;
+  }
+
+  .asf-feather-icon {
+    background: transparent
+      url('../../../../../assets/img/asf-feather-logo.png') no-repeat 50% 50%;
+    background-size: 70px;
+    background-position-x: left;
+    padding-left: 70px;
+  }
+
+  .linkedin-icon {
+    background: transparent url('../../../../../assets/img/linkedin.png')
+      no-repeat 50% 50%;
+    background-size: 40px auto;
+    background-position-x: left;
+    padding-left: 70px;
+  }
+
+  .twitter-icon {
+    background: transparent url('../../../../../assets/img/twitter.png')
+      no-repeat 50% 50%;
+    background-size: 60px;
+    background-position-x: left;
+    padding-left: 70px;
+  }
+}
diff --git a/app/addons/documentation/base.js b/app/addons/documentation/base.js
index 28e68d6..c233663 100644
--- a/app/addons/documentation/base.js
+++ b/app/addons/documentation/base.js
@@ -12,7 +12,7 @@
 
 import FauxtonAPI from "../../core/api";
 import Documentation from "./routes";
-import "./assets/less/documentation.less";
+import "./assets/scss/documentation.scss";
 
 Documentation.initialize = function () {
   FauxtonAPI.addHeaderLink({
diff --git a/app/addons/documentation/components.js b/app/addons/documentation/components.js
index 8ca1d8e..9f56172 100644
--- a/app/addons/documentation/components.js
+++ b/app/addons/documentation/components.js
@@ -12,84 +12,63 @@
 
 import React from "react";
 
-const docLinks = [
-  {
-    title: 'CouchDB Official Documentation — Online',
-    link: 'http://docs.couchdb.org/en/latest/',
-    iconClassName: 'couchdb-icon'
-  },
-  {
-    title: 'CouchDB Official Documentation — Offline',
-    link: './docs/index.html',
-    iconClassName: 'couchdb-icon'
-  },
-  {
-    title: 'CouchDB Weekly News',
-    link: 'http://blog.couchdb.org/',
-    iconClassName: 'couchdb-icon'
-  },
-  {
-    title: 'CouchDB Homepage',
-    link: 'https://couchdb.apache.org/',
-    iconClassName: 'couchdb-icon'
-  },
-  {
-    title: 'CouchDB on GitHub',
-    link: 'https://github.com/apache/couchdb',
-    iconClassName: 'github-icon'
-  },
-  {
-    title: 'Fauxton on GitHub',
-    link: 'https://github.com/apache/couchdb-fauxton',
-    iconClassName: 'github-icon'
-  },
-  {
-    title: 'Fauxton Visual Guide',
-    link: 'https://couchdb.apache.org/fauxton-visual-guide/index.html',
-    iconClassName: 'couchdb-icon'
-  },
-  {
-    title: 'The Apache Software Foundation',
-    link: 'http://www.apache.org/',
-    iconClassName: 'asf-feather-icon'
-  },
-  {
-    title: 'Follow CouchDB on Twitter',
-    link: 'https://twitter.com/couchdb',
-    iconClassName: 'twitter-icon'
-  },
-  {
-    title: 'Follow CouchDB on LinkedIn',
-    link: 'https://www.linkedin.com/company/apache-couchdb',
-    iconClassName: 'linkedin-icon'
-  }
-];
+const DocumentationItem = ({iconClassName, link, title}) => {
+  return <div className="col-12 col-sm-6 col-lg-4 mb-4">
+    <div className={'logo ' + iconClassName}>
+      <a href={link} target="_blank" rel="noopener noreferrer" data-bypass="true">{title}</a>
+    </div>
+  </div>;
+};
 
-const DocumentationPage = ({links = docLinks}) => {
-
-  function createLinkRows (linkList) {
-    return linkList.map(function (linkObject) {
-      return (
-        <tr key={linkObject.title}>
-          <td className="icons-container">
-            <div className={"icon " + linkObject.iconClassName}> </div>
-          </td>
-          <td>
-            <a href={linkObject.link} target="_blank" rel="noopener noreferrer" data-bypass="true">{linkObject.title}</a>
-          </td>
-        </tr>
-      );
-    });
-  }
-
+const DocumentationPage = () => {
   return (
     <div id="documentation-page" className="scrollable">
-      <div className="links">
-        <table>
-          <tbody>
-            {createLinkRows(links)}
-          </tbody>
-        </table>
+      <div className="links row mb-4">
+        <DocumentationItem
+          iconClassName='couchdb-icon'
+          link='http://docs.couchdb.org/en/latest/'
+          title='CouchDB Official Documentation — Online' />
+        <DocumentationItem
+          iconClassName='couchdb-icon'
+          link='./docs/index.html'
+          title='CouchDB Official Documentation — Offline' />
+        <DocumentationItem
+          iconClassName='couchdb-icon'
+          link='http://blog.couchdb.org/'
+          title='CouchDB Weekly News' />
+        <DocumentationItem
+          iconClassName='couchdb-icon'
+          link='https://couchdb.apache.org/'
+          title='CouchDB Homepage' />
+        <DocumentationItem
+          iconClassName='couchdb-icon'
+          link='https://couchdb.apache.org/fauxton-visual-guide/index.html'
+          title='Fauxton Visual Guide' />
+      </div>
+      <div className="links row mb-4">
+        <DocumentationItem
+          iconClassName='github-icon'
+          link='https://github.com/apache/couchdb'
+          title='CouchDB on GitHub' />
+        <DocumentationItem
+          iconClassName='github-icon'
+          link='https://github.com/apache/couchdb-fauxton'
+          title='Fauxton on GitHub' />
+      </div>
+
+      <div className="links row mb-4">
+        <DocumentationItem
+          iconClassName='asf-feather-icon'
+          link='http://www.apache.org/'
+          title='The Apache Software Foundation' />
+        <DocumentationItem
+          iconClassName='twitter-icon'
+          link='https://twitter.com/couchdb'
+          title='Follow CouchDB on Twitter' />
+        <DocumentationItem
+          iconClassName='linkedin-icon'
+          link='https://www.linkedin.com/company/apache-couchdb'
+          title='Follow CouchDB on LinkedIn' />
       </div>
     </div>
   );
diff --git a/app/addons/documentation/routes.js b/app/addons/documentation/routes.js
index 1d828ca..6ff7008 100644
--- a/app/addons/documentation/routes.js
+++ b/app/addons/documentation/routes.js
@@ -10,27 +10,29 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import React from 'react';
+import React from "react";
 import FauxtonAPI from "../../core/api";
 import DocumentationComponents from "./components";
-import {OnePaneSimpleLayout} from '../components/layouts';
+import { OnePaneSimpleLayout } from '../components/layouts';
 
 var DocumentationRouteObject = FauxtonAPI.RouteObject.extend({
-  selectedHeader: 'Documentation',
+  selectedHeader: "Documentation",
   hideApiBar: true,
   hideNotificationCenter: true,
   routes: {
-    'documentation': 'documentation'
+    documentation: "documentation",
   },
-  roles: ['fx_loggedIn'],
-  documentation: function () {
+  roles: ["fx_loggedIn"],
+  documentation: () => {
     return <OnePaneSimpleLayout
       component={<DocumentationComponents.DocumentationPage/>}
+      docURL=""
+      endpoint=""
       crumbs={[
         {'name': 'Documentation'}
       ]}
     />;
-  }
+  },
 });
 DocumentationRouteObject.RouteObjects = [DocumentationRouteObject];
 
diff --git a/app/addons/documents/__tests__/additional-params.test.js b/app/addons/documents/__tests__/additional-params.test.js
index 1231e3a..58f438f 100644
--- a/app/addons/documents/__tests__/additional-params.test.js
+++ b/app/addons/documents/__tests__/additional-params.test.js
@@ -26,7 +26,7 @@
       updateSkip={spy}
     />);
 
-    wrapper.find('#qoSkip').simulate('change');
+    wrapper.find('input#qoSkip').simulate('change');
     expect(spy.calledOnce).toBe(true);
   });
 
@@ -39,7 +39,7 @@
       updateLimit={spy}
     />);
 
-    wrapper.find('#qoLimit').simulate('change');
+    wrapper.find('select#qoLimit').simulate('change');
     expect(spy.calledOnce).toBe(true);
   });
 
@@ -52,7 +52,7 @@
       toggleDescending={spy}
     />);
 
-    wrapper.find('#qoDescending').simulate('change');
+    wrapper.find('input#qoDescending').simulate('change');
     expect(spy.calledOnce).toBe(true);
   });
 });
diff --git a/app/addons/documents/__tests__/changes.test.js b/app/addons/documents/__tests__/changes.test.js
index 6e0ce29..630d85e 100644
--- a/app/addons/documents/__tests__/changes.test.js
+++ b/app/addons/documents/__tests__/changes.test.js
@@ -34,7 +34,7 @@
       filters={['I wandered lonely as a filter', 'A second filter']}
     />);
 
-    expect(el.find('.remove-filter').length).toBe(2);
+    expect(el.find('.remove-filter > a').length).toBe(2);
   });
 
   it('should call addFilter action on click', () => {
@@ -43,8 +43,8 @@
       {...defaultProps}
       addFilter={addFilterStub}
     />);
-    const submitBtn = el.find('[type="submit"]'),
-          addItemField = el.find('.js-changes-filter-field');
+    const submitBtn = el.find('button[type="submit"]');
+    const addItemField = el.find('input#changes-filter-field');
 
     addItemField.simulate('change', {target: {value: 'I wandered lonely as a filter'}});
     submitBtn.simulate('submit');
@@ -59,7 +59,7 @@
       filters={['I wandered lonely as a filter']}
       removeFilter={removeFilterStub}
     />);
-    el.find('.remove-filter').simulate('click');
+    el.find('.remove-filter > a').simulate('click');
 
     expect(removeFilterStub.calledOnce).toBeTruthy();
   });
@@ -70,8 +70,8 @@
       {...defaultProps}
       addFilter={addFilterStub}
     />);
-    const submitBtn = el.find('[type="submit"]'),
-          addItemField = el.find('.js-changes-filter-field');
+    const submitBtn = el.find('button[type="submit"]'),
+          addItemField = el.find('input#changes-filter-field');
 
     addItemField.simulate('change', {target: {value: ''}});
     submitBtn.simulate('submit');
@@ -83,7 +83,7 @@
     const el = mount(<ChangesTabContent
       {...defaultProps}
     />);
-    expect(el.find('.remove-filter').length).toBe(0);
+    expect(el.find('.remove-filter > a').length).toBe(0);
   });
 
   it('should not add the same filter twice', () => {
@@ -94,8 +94,8 @@
       addFilter={(f) => {filters.push(f); callCount++;}}
       filters={filters}
     />);
-    const submitBtn = el.find('[type="submit"]'),
-          addItemField = el.find('.js-changes-filter-field');
+    const submitBtn = el.find('button[type="submit"]'),
+          addItemField = el.find('input#changes-filter-field');
 
     const filter = 'I am unique in the whole wide world';
     addItemField.simulate('change', {target: {value: filter}});
@@ -175,13 +175,14 @@
   it('deleted docs should not be clickable', () => {
     change.deleted = true;
     const changeRow = mount(<ChangeRow change={change} databaseName="testDatabase" />);
-    expect(changeRow.find('a.js-doc-link').length).toBe(0);
+    expect(changeRow.find('a').length).toBe(0);
   });
 
   it('non-deleted docs should be clickable', () => {
     change.deleted = false;
     const changeRow = mount(<ChangeRow change={change} databaseName="testDatabase" />);
-    expect(changeRow.find('a.js-doc-link').length).toBe(1);
+    expect(changeRow.find('a').length).toBe(1);
+    expect(changeRow.find('a').text()).toBe(change.id);
   });
 
   it('generates correct URL for doc and db with special chars', () => {
@@ -192,6 +193,6 @@
       changes: { code: 'here' }
     };
     const changeRow = mount(<ChangeRow change={changeSpecialChars} databaseName="db/name" />);
-    expect(changeRow.find('a.js-doc-link').at(0).prop('href')).toBe('#/database/db%2Fname/space%20newline%0Aquestion_mark%3F');
+    expect(changeRow.find('a').prop('href')).toBe('#/database/db%2Fname/space%20newline%0Aquestion_mark%3F');
   });
 });
diff --git a/app/addons/documents/__tests__/key-search-fields.test.js b/app/addons/documents/__tests__/key-search-fields.test.js
index d337ab1..b534e11 100644
--- a/app/addons/documents/__tests__/key-search-fields.test.js
+++ b/app/addons/documents/__tests__/key-search-fields.test.js
@@ -23,16 +23,6 @@
     include: true
   };
 
-  it('keysGroupClass contains \'hide\' when showByKeys and showBetweenKeys are false', () => {
-    const wrapper = mount(<KeySearchFields
-      showByKeys={false}
-      showBetweenKeys={false}
-      betweenKeys={betweenKeys}
-    />);
-
-    expect(wrapper.find('.js-query-keys-wrapper').hasClass('hide')).toBe(true);
-  });
-
   it('byKeysClass contains \'hide\' and byKeysButtonClass contains \'active\' when showByKeys is false', () => {
     const wrapper = mount(<KeySearchFields
       showByKeys={false}
@@ -41,7 +31,7 @@
     />);
 
     expect(wrapper.find('#js-showKeys').hasClass('hide')).toBe(true);
-    expect(wrapper.find('#betweenKeys').hasClass('active')).toBe(true);
+    expect(wrapper.find('label[htmlFor="betweenKeys"]').hasClass('active')).toBe(true);
   });
 
   it('betweenKeysClass contains \'hide\' and betweenKeysButtonClass contains \'active\' when showBetweenKeys is false', () => {
@@ -52,7 +42,7 @@
     />);
 
     expect(wrapper.find('#js-showStartEnd').hasClass('hide')).toBe(true);
-    expect(wrapper.find('#byKeys').hasClass('active')).toBe(true);
+    expect(wrapper.find('label[htmlFor="byKeys"]').hasClass('active')).toBe(true);
   });
 
   it('calls toggleByKeys onClick', () => {
@@ -64,7 +54,7 @@
       toggleByKeys={spy}
     />);
 
-    wrapper.find('#byKeys').simulate('click');
+    wrapper.find('label[htmlFor="byKeys"]').simulate('click');
     expect(spy.calledOnce).toBe(true);
   });
 
@@ -77,7 +67,7 @@
       toggleBetweenKeys={spy}
     />);
 
-    wrapper.find('#betweenKeys').simulate('click');
+    wrapper.find('label[htmlFor="betweenKeys"]').simulate('click');
     expect(spy.calledOnce).toBe(true);
   });
 
@@ -90,8 +80,8 @@
       updateBetweenKeys={spy}
     />);
 
-    wrapper.find('#startkey').simulate('change');
-    wrapper.find('#endkey').simulate('change');
+    wrapper.find('input#startkey').simulate('change');
+    wrapper.find('input#endkey').simulate('change');
     expect(spy.calledTwice).toBe(true);
   });
 
@@ -104,7 +94,7 @@
       updateBetweenKeys={spy}
     />);
 
-    wrapper.find('#qoIncludeEndKeyInResults').simulate('change');
+    wrapper.find('input#qoIncludeEndKeyInResults').simulate('change');
     expect(spy.calledOnce).toBe(true);
   });
 
@@ -117,7 +107,7 @@
       updateByKeys={spy}
     />);
 
-    wrapper.find('#keys-input').simulate('change');
+    wrapper.find('textarea#keys-input').simulate('change');
     expect(spy.calledOnce).toBe(true);
   });
 });
diff --git a/app/addons/documents/__tests__/main-fields-view.test.js b/app/addons/documents/__tests__/main-fields-view.test.js
index 3a5b960..29feb00 100644
--- a/app/addons/documents/__tests__/main-fields-view.test.js
+++ b/app/addons/documents/__tests__/main-fields-view.test.js
@@ -35,7 +35,7 @@
       docURL={docURL}
     />);
 
-    expect(wrapper.find('#qoReduce').length).toBe(0);
+    expect(wrapper.find('input#qoReduce').length).toBe(0);
   });
 
   it('render reduce when showReduce is true but does not render grouplevel when reduce is false', () => {
@@ -48,7 +48,7 @@
       docURL={docURL}
     />);
 
-    expect(wrapper.find('#qoReduce').length).toBe(1);
+    expect(wrapper.find('input#qoReduce').length).toBe(1);
     expect(wrapper.find('#qoGroupLevelGroup').length).toBe(0);
   });
 
@@ -63,7 +63,7 @@
       docURL={docURL}
     />);
 
-    wrapper.find('#qoIncludeDocs').simulate('change');
+    wrapper.find('input#qoIncludeDocs').simulate('change');
     expect(spy.calledOnce).toBe(true);
   });
 
@@ -80,7 +80,7 @@
       docURL={docURL}
     />);
 
-    wrapper.find('#qoGroupLevel').simulate('change');
+    wrapper.find('select#qoGroupLevel').simulate('change');
     expect(spy.calledOnce).toBe(true);
   });
 
@@ -97,7 +97,7 @@
       docURL={docURL}
     />);
 
-    wrapper.find('#qoReduce').simulate('change');
+    wrapper.find('input#qoReduce').simulate('change');
     expect(spy.calledOnce).toBe(true);
   });
 
@@ -114,7 +114,7 @@
       enableStable={true}
     />);
 
-    wrapper.find('#qoStable').simulate('change');
+    wrapper.find('input#qoStable').simulate('change');
     expect(spy.calledOnce).toBe(true);
   });
 
@@ -130,7 +130,7 @@
       docURL={docURL}
     />);
 
-    wrapper.find('#qoUpdate').simulate('change');
+    wrapper.find('select#qoUpdate').simulate('change');
     expect(spy.calledOnce).toBe(true);
   });
 });
diff --git a/app/addons/documents/__tests__/partition-key.test.js b/app/addons/documents/__tests__/partition-key.test.js
index de28f1a..a74ed18 100644
--- a/app/addons/documents/__tests__/partition-key.test.js
+++ b/app/addons/documents/__tests__/partition-key.test.js
@@ -11,8 +11,7 @@
 // the License.
 
 import React from 'react';
-import ReactDOM from 'react-dom';
-import { shallow } from 'enzyme';
+import { shallow, mount } from 'enzyme';
 import PartitionKeySelector from '../partition-key/PartitionKeySelector';
 import sinon from 'sinon';
 
@@ -91,7 +90,7 @@
 
   it('calls onPartitionKeySelected when a new value is set by pressing Enter', () => {
     const spyOnKeySelected = sinon.spy();
-    const wrapper = shallow(<PartitionKeySelector
+    const wrapper = mount(<PartitionKeySelector
       {...defaultProps}
       partitionKey=''
       globalMode={true}
@@ -109,7 +108,7 @@
 
   it('calls onPartitionKeySelected when a new value is set and the component loses focus', () => {
     const spyOnKeySelected = sinon.spy();
-    const wrapper = shallow(<PartitionKeySelector
+    const wrapper = mount(<PartitionKeySelector
       {...defaultProps}
       partitionKey=''
       globalMode={true}
diff --git a/app/addons/documents/__tests__/results-options.test.js b/app/addons/documents/__tests__/results-options.test.js
index 62be559..c36a644 100644
--- a/app/addons/documents/__tests__/results-options.test.js
+++ b/app/addons/documents/__tests__/results-options.test.js
@@ -15,6 +15,7 @@
 import sinon from 'sinon';
 import ResultsOptions from '../components/results-options';
 import Constants from '../constants';
+import { act } from 'react-dom/test-utils';
 
 describe('Results Options', () => {
 
@@ -26,38 +27,73 @@
     updateStyle: () => {}
   };
 
-  it('calls updateStyle when one of the options is clicked', () => {
+  it('calls updateStyle when one of the options is clicked', async() => {
     const mockUpdateStyle = sinon.spy();
     const wrapper = mount(<ResultsOptions
       {...defaultProps}
       updateStyle={mockUpdateStyle}/>
     );
-    wrapper.find('a.icon').at(0).simulate('click');
+
+    // expand the dropdown
+    const dropdownButton = wrapper.find('#result-style-menu button.dropdown-toggle');
+    dropdownButton.simulate('click');
+    await act(async () => {
+      wrapper.update();
+    });
+
+    // click the 'large' font size toggle button
+    const largeButton = wrapper.find('DropdownItem button').at(3);
+    largeButton.simulate('click');
+
     sinon.assert.called(mockUpdateStyle);
   });
 
-  it('shows the two sections by default', () => {
+  it('shows the two sections by default', async() => {
     const wrapper = mount(<ResultsOptions
       {...defaultProps} />
     );
-    expect(wrapper.find('li.header-label').length).toBe(2);
+
+    // expand the dropdown
+    const dropdownButton = wrapper.find('#result-style-menu button.dropdown-toggle');
+    dropdownButton.simulate('click');
+    await act(async () => {
+      wrapper.update();
+    });
+
+    expect(wrapper.find('DropdownHeader div.dropdown-header').length).toBe(2);
   });
 
-  it('hides Display Density when prop is set to false', () => {
+  it('hides Display Density when prop is set to false', async() => {
     const wrapper = mount(<ResultsOptions
       {...defaultProps}
       showDensity={false} />
     );
-    expect(wrapper.find('li.header-label').length).toBe(1);
-    expect(wrapper.find('li.header-label').text()).toBe('Font size');
+
+    // expand the dropdown
+    const dropdownButton = wrapper.find('#result-style-menu button.dropdown-toggle');
+    dropdownButton.simulate('click');
+    await act(async () => {
+      wrapper.update();
+    });
+
+    expect(wrapper.find('DropdownHeader').length).toBe(1);
+    expect(wrapper.find('DropdownHeader div.dropdown-header').text()).toBe('Font size');
   });
 
-  it('hides Font Size when prop is set to false', () => {
+  it('hides Font Size when prop is set to false', async() => {
     const wrapper = mount(<ResultsOptions
       {...defaultProps}
       showFontSize={false} />
     );
-    expect(wrapper.find('li.header-label').length).toBe(1);
-    expect(wrapper.find('li.header-label').text()).toBe('Display density');
+
+    // expand the dropdown
+    const dropdownButton = wrapper.find('#result-style-menu button.dropdown-toggle');
+    dropdownButton.simulate('click');
+    await act(async () => {
+      wrapper.update();
+    });
+
+    expect(wrapper.find('DropdownHeader').length).toBe(1);
+    expect(wrapper.find('DropdownHeader div.dropdown-header').text()).toBe('Display density');
   });
 });
diff --git a/app/addons/documents/__tests__/results-toolbar.test.js b/app/addons/documents/__tests__/results-toolbar.test.js
index 614d1e1..f288f91 100644
--- a/app/addons/documents/__tests__/results-toolbar.test.js
+++ b/app/addons/documents/__tests__/results-toolbar.test.js
@@ -17,6 +17,7 @@
 import FauxtonAPI from '../../../core/api';
 import {ResultsToolBar} from '../components/results-toolbar';
 import Constants from '../constants';
+import { act } from 'react-dom/test-utils';
 
 describe('Results Toolbar', () => {
 
@@ -54,7 +55,7 @@
     );
     expect(wrapper.find('.bulk-action-component').length).toBe(1);
     expect(wrapper.find('div.two-sides-toggle-button').length).toBe(1);
-    expect(wrapper.find('.document-result-screen__toolbar-create-btn').length).toBe(1);
+    expect(wrapper.find('Button#create-new-doc-btn').length).toBe(1);
   });
 
   it('does not render bulk action component when list is not deletable', () => {
@@ -65,7 +66,7 @@
     );
     expect(wrapper.find('.bulk-action-component').length).toBe(0);
     expect(wrapper.find('div.two-sides-toggle-button').length).toBe(1);
-    expect(wrapper.find('.document-result-screen__toolbar-create-btn').length).toBe(1);
+    expect(wrapper.find('Button#create-new-doc-btn').length).toBe(1);
   });
 
   it('includes default partition key when one is selected', () => {
@@ -74,10 +75,11 @@
       hasResults={true}
       isListDeletable={false}
       partitionKey={'partKey1'} />);
-    expect(wrapper.find('a.document-result-screen__toolbar-create-btn').prop('href')).toMatch(/\?partitionKey=partKey1$/);
+    expect(wrapper.find('Button#create-new-doc-btn').prop('href')).toMatch(/\?partitionKey=partKey1$/);
   });
 
-  it('toggles display density', () => {
+  it('toggles display density', async() => {
+    // i.e. 'show full values'/'truncate values'
     const mockUpdateStyle = sinon.spy();
     const wrapper = mount(<ResultsToolBar
       {...defaultProps}
@@ -86,11 +88,25 @@
       updateResultsStyle={mockUpdateStyle}
       selectedLayout={Constants.LAYOUT_ORIENTATION.METADATA}/>
     );
-    wrapper.find('a.icon').first().simulate('click');
+
+    // expand the dropdown
+    const dropdownButton = wrapper.find('#result-style-menu button.dropdown-toggle');
+    dropdownButton.simulate('click');
+    await act(async () => {
+      wrapper.update();
+    });
+
+    // 'show full values'
+    const smallButton = wrapper.find('DropdownItem button').at(0);
+    smallButton.simulate('click');
+    await act(async () => {
+      wrapper.update();
+    });
+
     sinon.assert.calledWith(mockUpdateStyle, { textOverflow: Constants.INDEX_RESULTS_STYLE.TEXT_OVERFLOW_FULL});
   });
 
-  it('switches font size', () => {
+  it('switches font size', async() => {
     const mockUpdateStyle = sinon.spy();
     const wrapper = mount(<ResultsToolBar
       {...defaultProps}
@@ -99,42 +115,85 @@
       updateResultsStyle={mockUpdateStyle}
       selectedLayout={Constants.LAYOUT_ORIENTATION.METADATA}/>
     );
-    wrapper.find('a.icon').at(1).simulate('click');
+
+    // expand the dropdown
+    const dropdownButton = wrapper.find('#result-style-menu button.dropdown-toggle');
+    dropdownButton.simulate('click');
+    await act(async () => {
+      wrapper.update();
+    });
+
+    // get the 'small' button
+    const smallButton = wrapper.find('DropdownItem button').at(1);
+    smallButton.simulate('click');
     sinon.assert.calledWith(mockUpdateStyle, { fontSize: Constants.INDEX_RESULTS_STYLE.FONT_SIZE_SMALL});
 
-    wrapper.find('a.icon').at(2).simulate('click');
+    // get the 'medium' button
+    const mediumButton = wrapper.find('DropdownItem button').at(2);
+    mediumButton.simulate('click');
     sinon.assert.calledWith(mockUpdateStyle, { fontSize: Constants.INDEX_RESULTS_STYLE.FONT_SIZE_MEDIUM});
 
-    wrapper.find('a.icon').at(3).simulate('click');
+    // get the 'medium' button
+    const largeButton = wrapper.find('DropdownItem button').at(3);
+    largeButton.simulate('click');
     sinon.assert.calledWith(mockUpdateStyle, { fontSize: Constants.INDEX_RESULTS_STYLE.FONT_SIZE_LARGE});
   });
 
-  it('does not show Display Density option in JSON layout', () => {
+  it('does not show Display Density option in JSON layout', async() => {
     const toolbarJson = mount(<ResultsToolBar
       {...defaultProps}
       hasResults={true}
       isListDeletable={false}
       selectedLayout={Constants.LAYOUT_ORIENTATION.JSON}/>
     );
-    expect(toolbarJson.find('li.header-label').text()).toBe('Font size');
 
-    const toolbarMetadata = mount(<ResultsToolBar
+    // expand the dropdown
+    const dropdownButton = toolbarJson.find('#result-style-menu button.dropdown-toggle');
+    dropdownButton.simulate('click');
+    await act(async () => {
+      toolbarJson.update();
+    });
+
+    expect(toolbarJson.find('DropdownHeader div.dropdown-header').text()).toBe('Font size');
+
+  });
+
+  it('shows Display Density and Font Size options in Metadata layout', async() => {
+    const wrapper = mount(<ResultsToolBar
       {...defaultProps}
       hasResults={true}
       isListDeletable={false}
       selectedLayout={Constants.LAYOUT_ORIENTATION.METADATA}/>
     );
-    expect(toolbarMetadata.find('li.header-label').at(0).text()).toBe('Display density');
-    expect(toolbarMetadata.find('li.header-label').at(1).text()).toBe('Font size');
 
-    const toolbarTable = mount(<ResultsToolBar
+    // expand the dropdown
+    const dropdownButton = wrapper.find('#result-style-menu button.dropdown-toggle');
+    dropdownButton.simulate('click');
+    await act(async () => {
+      wrapper.update();
+    });
+
+    expect(wrapper.find('DropdownHeader div.dropdown-header').at(0).text()).toBe('Display density');
+    expect(wrapper.find('DropdownHeader div.dropdown-header').at(1).text()).toBe('Font size');
+  });
+
+  it('shows Display Density and Font Size options in Table layout', async() => {
+    const wrapper = mount(<ResultsToolBar
       {...defaultProps}
       hasResults={true}
       isListDeletable={false}
       selectedLayout={Constants.LAYOUT_ORIENTATION.TABLE}/>
     );
-    expect(toolbarTable.find('li.header-label').at(0).text()).toBe('Display density');
-    expect(toolbarTable.find('li.header-label').at(1).text()).toBe('Font size');
+
+    // expand the dropdown
+    const dropdownButton = wrapper.find('#result-style-menu button.dropdown-toggle');
+    dropdownButton.simulate('click');
+    await act(async () => {
+      wrapper.update();
+    });
+
+    expect(wrapper.find('DropdownHeader div.dropdown-header').at(0).text()).toBe('Display density');
+    expect(wrapper.find('DropdownHeader div.dropdown-header').at(1).text()).toBe('Font size');
   });
 
   it('shows Table, Metadata and JSON modes when querying a global view', () => {
diff --git a/app/addons/documents/assets/less/changes.less b/app/addons/documents/assets/less/changes.less
deleted file mode 100644
index 4f38662..0000000
--- a/app/addons/documents/assets/less/changes.less
+++ /dev/null
@@ -1,151 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-@import "../../../../../assets/less/animations.less";
-@import "../../../../../assets/less/variables.less";
-
-// used in changes.html
-.change-box {
-  margin: 0 20px 20px 20px;
-}
-
-.change-wrapper {
-  margin-top: 20px;
-  border-bottom: 1px solid #dddddd;
-  &:last-child {
-    border-bottom: none;
-  }
-  .row-fluid {
-    padding: 4px 0 4px 0;
-  }
-  .row-fluid:first {
-    padding: 0px 0 4px 0;
-  }
-  a:hover.js-copy {
-    text-decoration: none;
-  }
-  .js-json-container {
-    display: none;
-  }
-  .span2 {
-    font-weight: bold;
-  }
-  .clipboard-copy-element {
-    color: #666666;
-  }
-}
-
-.changes-header {
-  text-align: center;
-  padding: 26px 20px 0;
-  border-bottom: 1px solid #999999;
-  .label {
-    float: left;
-    margin-right: 5px;
-  }
-  fieldset {
-    text-align: left;
-    display: inline-block;
-    position: relative;
-
-    .btn-secondary {
-      padding: 12px;
-      &:hover {
-        background-color: @hoverHighlight;
-      }
-    }
-  }
-  .fonticon-filter {
-    position: absolute;
-    left: -25px;
-    top: 10px;
-    color: #777777;
-    font-size: 20px;
-  }
-  form {
-    margin: 0;
-  }
-  .help-block {
-    margin-bottom: 0;
-    padding-bottom: 0;
-  }
-  .component-badgelist li {
-    margin: 20px 0;
-  }
-  .remove-filter {
-    color: #333333;
-    text-shadow: none;
-    background-color: transparent;
-    font-size: 20px;
-    margin-top: -3px;
-    padding-left: 0;
-    margin-right: 8px;
-    &:hover {
-      color: @hoverHighlight;
-    }
-  }
-}
-
-.changes-tab-content {
-  padding-top: 70px;
-}
-
-#dashboard-upper-content .changes-header-section .tab-content {
-  padding: 0;
-  overflow: hidden;
-}
-
-.keyframes(slideDownChangesFilter, {
-  opacity: 0;
-  height: 0;
-},
-{
-  opacity: 1;
-  height: 160px;
-});
-
-.keyframes(slideUpChangesFilter, {
-  opacity: 1;
-  height: 160px;
-},
-{
-  opacity: 0;
-  height: 0;
-});
-
-.toggle-changes-filter-enter {
-  .animation(slideDownChangesFilter 1s both);
-}
-
-.toggle-changes-filter-leave {
-  .animation(slideUpChangesFilter 1s both);
-}
-
-.toggle-changes-code-enter {
-  .animation(slideDown .6s both);
-}
-
-.toggle-changes-code-leave {
-  .animation(slideUp .6s both);
-}
-
-.changes-result-limit {
-  margin-left: 20px;
-}
-
-.new-change-row {
-  -webkit-animation: slideDown 1.5s both, highlight-element 2.0s 1;
-}
-
-.no-doc-changes {
-  padding: 30px 0;
-}
diff --git a/app/addons/documents/assets/less/header-docs-left.less b/app/addons/documents/assets/less/header-docs-left.less
deleted file mode 100644
index 2b19048..0000000
--- a/app/addons/documents/assets/less/header-docs-left.less
+++ /dev/null
@@ -1,82 +0,0 @@
-@import "../../../../../assets/less/variables.less";
-
-.faux-header__doc-header-left {
-  top: 0;
-  right: 0;
-  height: @collapsedNavWidth;
-  border-right: 1px solid @grayLight;
-  width: @sidebarWidth + 1px;
-
-  .display-flex();
-  .flex-direction(row);
-}
-
-.faux-header__doc-header-title {
-  height: @collapsedNavWidth;
-  width: 247px;
-  color: #333;
-  font-size: 24px;
-  line-height: 24px;
-  padding: 22px 10px;
-  border-right: 1px solid #ccc;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-button.faux-header__doc-header-dropdown-toggle {
-  border: none;
-  height: @collapsedNavWidth;
-  right: 0;
-  padding: 10px 16px;
-  width: 43px;
-  background-color: transparent !important;
-  border: none;
-  box-shadow: none !important;
-}
-
-button.faux-header__doc-header-dropdown-toggle:focus {
-  color: @hoverHighlight;
-  background-color: transparent !important;
-  border: none;
-  box-shadow: none !important;
-}
-
-.faux-header__doc-header-dropdown-toggle:hover {
-  color: @hoverHighlight;
-  background-color: transparent;
-}
-
-.faux-header__doc-header-dropdown-toggle-icon:before {
-  width: 6px;
-  font-size: 20px;
-  padding-top: 4px;
-}
-
-.faux-header__doc-header-backlink {
-  font-size: 24px;
-  border: none;
-  background-color: transparent;
-  border-right: 1px solid #ccc;
-  width: 40px;
-  padding: 11px;
-}
-
-.faux-header__doc-header-backlink__icon:before {
-  width: 18px;
-}
-
-.faux-header__doc-header-backlink:hover {
-  text-decoration: none;
-  color: @hoverHighlight;
-}
-
-// override bootstrap styles
-.faux-header__doc-header-dropdown-itemwrapper .faux-header__doc-header-dropdown-item {
-  padding: 10px 15px 10px 12px;
-}
-.faux-header__doc-header-dropdown-itemwrapper .faux-header__doc-header-dropdown-item:hover {
-  background-color: @hoverHighlight;
-  color: #fff;
-  cursor: pointer;
-}
diff --git a/app/addons/documents/assets/less/query-options.less b/app/addons/documents/assets/less/query-options.less
deleted file mode 100644
index 14f7c2d..0000000
--- a/app/addons/documents/assets/less/query-options.less
+++ /dev/null
@@ -1,183 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-#query-options-tray:before {
-  right: 225px;
-}
-
-#query-options-tray {
-  width: 490px;
-  padding-top: 6px;
-  max-height: calc(100vh - 64px);
-  overflow-y: scroll;
-
-  .query-group:first-child {
-    margin-top: 0;
-    padding-top: 0;
-  }
-
-  .icon-question-sign {
-    margin-left: 3px;
-    font-size: 17.5px;
-    color: @secondaryBlue;
-    &:hover {
-      color: @hoverHighlight;
-    }
-  }
-
-  .query-group {
-    padding: 20px;
-    border-bottom: 1px solid #555;
-  }
-
-  .query-group:last-child {
-    border-bottom: none;
-  }
-  .controls-group {
-    margin: 0;
-  }
-  .controls-group:last-child {
-    margin: 0;
-  }
-
-  form {
-    overflow: auto;
-    margin-bottom: 0;
-    .dropdown.inline {
-      display: inline-block;
-    }
-
-    #keys-input {
-      resize: none;
-    }
-
-    #qoGroupLevelGroup {
-      width: 34%;
-    }
-
-    .input-small {
-      width: 74px;
-      margin-left: 5px;
-    }
-    .checkbox {
-      padding: 0;
-      margin: 0;
-    }
-    .btn-success {
-      .border-radius(5px);
-    }
-    .btn-cancel, .btn-cancel:active {
-      background: none;
-      border: none;
-      box-shadow: none;
-      color: @hoverHighlight;
-      line-height: 1em;
-    }
-    .btn-cancelDark, .btn-cancelDark:active {
-      background: none;
-      border: none;
-      box-shadow: none;
-      color: #CCC;
-      line-height: 1em;
-    }
-    select {
-      margin-top: -4px;
-      margin-bottom: 0px;
-    }
-    .include-end-key-row {
-      line-height: 20px;
-      margin-left: 8px;
-    }
-  }
-
-  .toggle-btns {
-    .btn {
-      padding: 5px 12px 5px;
-      background: #727A82;
-      color: #fff;
-      font-size: 12px;
-      border: none;
-    }
-    .btn.active {
-      background: #fff;
-      color: @linkColorHover;
-      box-shadow: none;
-    }
-    label:first-child {
-      .border-radius(5px 0 0 5px);
-    }
-    label:last-child {
-      .border-radius(0 5px 5px 0);
-      margin-left: 1px;
-    }
-  }
-
-  label {
-    margin-right: 0;
-    font-size: 13px;
-
-    /*
-    due to: https://code.google.com/p/chromium/issues/detail?id=411065 - that bug causes the checkbox state not to
-    update when the user clicks on labels quickly. It can be removed once the fix is in Chrome stable
-    */
-    -webkit-user-select: none;
-  }
-  label.disabled {
-    cursor: not-allowed;
-    opacity: .5;
-  }
-  div.controls-group.well{
-    height: 156px;
-    background: none;
-    border: none;
-    padding: 10px 0;
-  }
-  .row-fluid.fieldsets {
-    .inline {
-      width: 32%;
-    }
-    .inline:nth-child(3) {
-      text-align: right;
-      width: 34%;
-    }
-  }
-  .qo-main-fields-row .row-fluid.fieldsets {
-    .inline:nth-child(2) {
-      width: 30%;
-    }
-    .inline:nth-child(3) {
-      text-align: right;
-      width: 36%;
-    }
-  }
-
-  .row-fluid.fieldsets {
-    margin-bottom: 5px;
-    :last-child {
-      margin-bottom: 2px;
-    }
-  }
-
-  #skipRows {
-    margin-left: 5px;
-  }
-  .add-on {
-    height: 28px;
-  }
-  .hide {
-    display: none;
-  }
-
-  .additionalParams {
-    margin-bottom: 2px;
-  }
-}
diff --git a/app/addons/documents/assets/less/revision-browser.less b/app/addons/documents/assets/less/revision-browser.less
deleted file mode 100644
index a3f04df..0000000
--- a/app/addons/documents/assets/less/revision-browser.less
+++ /dev/null
@@ -1,98 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-div#dashboard-content div.revision-wrapper {
-  padding: 0 0 15px 0;
-  margin-top: 60px;
-
-  .rev-subtree-selector {
-    font-family: monospace;
-    margin-bottom: 20px;
-  }
-  .left-area {
-    text-align: center;
-  }
-  .ours-rev {
-    font-size: 16px;
-    color: #fff;
-    text-align: center;
-    margin-top: 15px;
-  }
-
-  .revision-browser-controls {
-    color: #fff;
-    margin: 30px 0;
-  }
-
-  .revision-browser-controls .Select .Select-control {
-    border-radius: inherit;
-    border-color: #ccc;
-  }
-
-  .revision-browser-controls .Select .is-focused:not(.is-open) > .Select-control {
-    box-shadow: transparent;
-    border-color: #ccc;
-  }
-
-  .revision-browser-controls .Select .Select-menu-outer {
-    border-radius: inherit;
-  }
-
-  .revision-browser-controls .Select div.Select-placeholder {
-    color: #9d261d;
-  }
-
-  .revision-view-controls {
-    border-top: 1px solid grey;
-    text-align: center;
-  }
-
-  .revision-split-area {
-    padding: 20px 15px;
-    .display-flex();
-    color: #fff;
-  }
-
-  .conflicting-revs-dropdown {
-    max-width: 370px;
-    .display-flex();
-    margin-left: -17px;
-  }
-
-  .revision-split-area pre {
-    border: none;
-    background-color: transparent;
-  }
-  .revision-diff-area {
-    color: #fff;
-    margin-left: 60px;
-  }
-  .revision-diff-area .jsondiffpatch-unchanged, .revision-diff-area .jsondiffpatch-unchanged pre {
-    color: #fff;
-    background-color: transparent;
-    border: none;
-  }
-  .revision-diff-area .jsondiffpatch-added, .revision-diff-area .jsondiffpatch-deleted {
-    color: #000;
-  }
-  .revision-diff-area .jsondiffpatch-modified .jsondiffpatch-left-value pre,
-  .jsondiffpatch-textdiff-deleted,
-  .jsondiffpatch-deleted .jsondiffpatch-property-name,
-  .jsondiffpatch-deleted pre {
-    text-decoration: none;
-  }
-
-  .two-sides-toggle-button {
-    z-index: 0;
-  }
-
-}
diff --git a/app/addons/documents/assets/less/view-editor.less b/app/addons/documents/assets/less/view-editor.less
deleted file mode 100644
index 5c23149..0000000
--- a/app/addons/documents/assets/less/view-editor.less
+++ /dev/null
@@ -1,268 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-@import "../../../../../assets/less/variables.less";
-
-.define-view {
-  padding: 15px;
-  .help-link {
-    margin-left: 4px;
-  }
-  .design-doc-group #new-ddoc-section {
-    margin-top: 24px;
-    label {
-      padding-top: 12px;
-    }
-  }
-}
-
-/* to remove once Mango has moved to the standard 2-panel layout */
-.mango-editor-wrapper {
-  label {
-    font-size: 16px;
-    margin-right: 0;
-  }
-  .bordered-box {
-    border-bottom: 1px solid #ccc;
-  }
-  .padded-box {
-    margin: 15px;
-  }
-  .db-title {
-    color: @brandHighlight;
-    line-height: 30px;
-  }
-  #index-name {
-    height: 46px;
-    width: 200px;
-  }
-  .new-ddoc-input {
-    margin-top: 25px;
-    height: 46px;
-  }
-  pre.prettyprint-left {
-    padding: 5px;
-  }
-  form {
-    padding-bottom: 15px;
-  }
-  a.edit-link {
-    float: right;
-    margin-right: 5px;
-    cursor: pointer;
-  }
-  .help-link {
-    margin-left: 4px;
-  }
-}
-
-.mango-select {
-  width: inherit;
-  overflow: visible;
-
-  div {
-    z-index: 100;
-  }
-
-  .mango-select-entry {
-    background-color: @queryHistoryBGColor;
-    color: @queryHistoryColor;
-
-    &.is-selected, &.is-focused {
-      background-color: @brandHighlight;
-      color: @queryHistoryBGColor;
-    }
-  }
-}
-
-// 940px grid without margin
-// -------------------------
-@gridColumnWidthNoMargin:         60px;
-@gridGutterWidthNoMargin:         0px;
-@gridRowWidthNoMargin:            (@gridColumns * @gridColumnWidthNoMargin) + (@gridGutterWidthNoMargin * (@gridColumns - 1));
-
-// 1200px min
-@gridColumnWidth1200NoMargin:     70px;
-@gridGutterWidth1200NoMargin:     0px;
-@gridRowWidth1200NoMargin:        (@gridColumns * @gridColumnWidth1200NoMargin) + (@gridGutterWidth1200NoMargin * (@gridColumns - 1));
-
-// 768px-979px
-@gridColumnWidth768NoMargin:      42px;
-@gridGutterWidth768NoMargin:      0px;
-@gridRowWidth768NoMargin:         (@gridColumns * @gridColumnWidth768NoMargin) + (@gridGutterWidth768NoMargin * (@gridColumns - 1));
-// Fluid grid
-// -------------------------
-@fluidGridColumnWidthNoMargin:    percentage(@gridColumnWidthNoMargin/@gridRowWidthNoMargin);
-@fluidGridGutterWidthNoMargin:    percentage(@gridGutterWidthNoMargin/@gridRowWidthNoMargin);
-// 1200px min
-@fluidGridColumnWidth1200NoMargin:     percentage(@gridColumnWidth1200NoMargin/@gridRowWidth1200NoMargin);
-@fluidGridGutterWidth1200NoMargin:     percentage(@gridGutterWidth1200NoMargin/@gridRowWidth1200NoMargin);
-// 768px-979px
-@fluidGridColumnWidth768NoMargin:      percentage(@gridColumnWidth768NoMargin/@gridRowWidth768NoMargin);
-@fluidGridGutterWidth768NoMargin:      percentage(@gridGutterWidth768NoMargin/@gridRowWidth768NoMargin);
-
-
-.two-pane > .fluid(@fluidGridColumnWidth1200NoMargin, @fluidGridGutterWidth1200NoMargin);
-
-.two-pane {
-
-  .core (@gridColumnWidth, @gridGutterWidth) {
-
-    .spanX (@index) when (@index > 0) {
-      .span@{index} { .span(@index); }
-      .spanX(@index - 1);
-    }
-    .spanX (0) {}
-
-    .offsetX (@index) when (@index > 0) {
-      .offset@{index} { .offset(@index); }
-      .offsetX(@index - 1);
-    }
-    .offsetX (0) {}
-
-    .offset (@columns) {
-      margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns + 1));
-    }
-
-    .span (@columns) {
-      width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
-    }
-
-    .row {
-      margin-left: @gridGutterWidth * -1;
-      .clearfix();
-    }
-
-    [class*="span"] {
-      float: left;
-      min-height: 1px; // prevent collapsing columns
-      margin-left: @gridGutterWidth;
-    }
-
-    // Set the container width, and override it for fixed navbars in media queries
-    .container,
-    .navbar-static-top .container,
-    .navbar-fixed-top .container,
-    .navbar-fixed-bottom .container { .span(@gridColumns); }
-
-    // generate .spanX and .offsetX
-    .spanX (@gridColumns);
-    .offsetX (@gridColumns);
-
-  }
-
-  .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
-
-    .spanX (@index) when (@index > 0) {
-      .span@{index} { .span(@index); }
-      .spanX(@index - 1);
-    }
-    .spanX (0) {}
-
-    .offsetX (@index) when (@index > 0) {
-      .offset@{index} { .offset(@index); }
-      .offset@{index}:first-child { .offsetFirstChild(@index); }
-      .offsetX(@index - 1);
-    }
-    .offsetX (0) {}
-
-    .offset (@columns) {
-      margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth*2);
-      *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + (@fluidGridGutterWidth*2) - (.5 / @gridRowWidth * 100 * 1%);
-    }
-
-    .offsetFirstChild (@columns) {
-      margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth);
-      *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
-    }
-
-    .span (@columns) {
-      width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
-      *width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%);
-    }
-
-    .row-fluid {
-      width: 100%;
-      .clearfix();
-      [class*="span"] {
-        .input-block-level();
-        float: left;
-        margin-left: @fluidGridGutterWidth;
-        *margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
-      }
-      [class*="span"]:first-child {
-        margin-left: 0;
-      }
-
-      // Space grid-sized controls properly if multiple per line
-      .controls-row [class*="span"] + [class*="span"] {
-        margin-left: @fluidGridGutterWidth;
-      }
-
-      // generate .spanX and .offsetX
-      .spanX (@gridColumns);
-      .offsetX (@gridColumns);
-    }
-
-  }
-
-  .input(@gridColumnWidth, @gridGutterWidth) {
-
-    .spanX (@index) when (@index > 0) {
-      input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index} { .span(@index); }
-      .spanX(@index - 1);
-    }
-    .spanX (0) {}
-
-    .span(@columns) {
-      width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 14;
-    }
-
-    input,
-    textarea,
-    .uneditable-input {
-      margin-left: 0; // override margin-left from core grid system
-    }
-
-    // Space grid-sized controls properly if multiple per line
-    .controls-row [class*="span"] + [class*="span"] {
-      margin-left: @gridGutterWidth;
-    }
-
-    // generate .spanX
-    .spanX (@gridColumns);
-  }
-}
-
-a.index-cancel-link {
-  margin-left: 10px;
-  font-size: 14px;
-  color: #666;
-  &:hover {
-    color: @hoverHighlight;
-    text-decoration: none;
-    cursor: pointer;
-  }
-}
-
-.ddoc-selector-partitioned {
-  clear: both;
-  padding-top: 16px;
-
-  label.check--disabled {
-    cursor: default
-  }
-}
-
-.reduce-editor-warning {
-  padding-bottom: 1rem;
-}
diff --git a/app/addons/documents/assets/scss/changes.scss b/app/addons/documents/assets/scss/changes.scss
new file mode 100644
index 0000000..bcc620e
--- /dev/null
+++ b/app/addons/documents/assets/scss/changes.scss
@@ -0,0 +1,151 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+@import "../../../../../assets/scss/animations";
+@import "../../../../../assets/scss/variables";
+
+// used in changes.html
+.change-box {
+  margin: 0 20px 20px 20px;
+  .row {
+    padding:5px 0;
+  }
+}
+
+.change-wrapper {
+  margin-top: 20px;
+  border-bottom: 1px solid $cf-border-color02;
+  &:last-child {
+    border-bottom: none;
+  }
+  .row-fluid {
+    padding: 4px 0 4px 0;
+  }
+  .row-fluid:first {
+    padding: 0px 0 4px 0;
+  }
+  a:hover.js-copy {
+    text-decoration: none;
+  }
+  .js-json-container {
+    display: none;
+  }
+  .span2 {
+    font-weight: bold;
+  }
+  .clipboard-copy-element {
+    color: $cf-text-fonticon01;
+  }
+}
+
+.changes-header {
+  padding: 36px 20px 0;
+  border-bottom: 1px solid $cf-border-color02;
+  
+  form {
+    margin: 0;
+  }
+
+  .help-block {
+    margin-bottom: 0;
+    padding-bottom: 0;
+  }
+
+  .remove-filter {
+    padding:10px;
+    background-color: $cf-pill-bg;
+    border-radius:5px;
+    
+    a {
+      color: $cf-pill-color;
+      font-size: 16px;
+      &:hover {
+        color: $cf-pill-color-hover;
+      }
+    }
+
+    span {
+      padding:0;
+      margin:0;
+      color: $cf-pill-color;
+      font-size:14px;
+    }
+  }
+}
+
+.changes-tab-content {
+  padding-top: 70px;
+}
+
+#dashboard-upper-content .changes-header-section .tab-content {
+  padding: 0;
+  overflow: hidden;
+}
+
+@keyframes slideDownChangesFilter {
+  from {
+    opacity: 0;
+    height: 0;
+  }
+  to {
+    opacity: 1;
+    height: 160px;
+  }
+}
+@keyframes slideUpChangesFilter {
+  from {
+    opacity: 1;
+    height: 160px;
+  }
+  to {
+    opacity: 0;
+    height: 0;
+  }
+}
+
+.toggle-changes-filter-enter {
+  @include animation(slideDownChangesFilter 1s both);
+}
+
+.toggle-changes-filter-leave {
+  @include animation(slideUpChangesFilter 1s both);
+}
+
+.toggle-changes-code-enter {
+  @include animation(slideDown 0.6s both);
+}
+
+.toggle-changes-code-leave {
+  @include animation(slideUp 0.6s both);
+}
+
+.changes-result-limit {
+  margin-left: 20px;
+}
+
+@keyframes highlight-element {
+  from {
+    background-color: $cf-border-color01;
+  }
+  to {
+    background-color: $cf-background01;
+  }
+}
+
+.new-change-row {
+  -webkit-animation: slideDown 1.5s both, highlight-element 2s 1;
+  animation: slideDown 1.5s both, highlight-element 2s 1;
+}
+
+.no-doc-changes {
+  padding: 30px 0;
+}
diff --git a/app/addons/documents/assets/less/doc-editor.less b/app/addons/documents/assets/scss/doc-editor.scss
similarity index 66%
rename from app/addons/documents/assets/less/doc-editor.less
rename to app/addons/documents/assets/scss/doc-editor.scss
index 2866610..920347c 100644
--- a/app/addons/documents/assets/less/doc-editor.less
+++ b/app/addons/documents/assets/scss/doc-editor.scss
@@ -10,13 +10,10 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-@import "../../../../../assets/less/mixins.less";
-@import "../../../../../assets/less/variables.less";
-
+@import "../../../../../assets/scss/mixins";
+@import "../../../../../assets/scss/variables";
 
 #dashboard.doc-editor-page {
-  background-color: #4d4d4d;
-
   #dashboard-content {
     padding-bottom: 0;
     top: 0;
@@ -25,7 +22,8 @@
 
 #editor-container {
   height: 100%;
-  &>div:not(.loading-lines), &>div>div {
+  & > div:not(.loading-lines),
+  & > div > div {
     height: 100%;
   }
 }
@@ -46,14 +44,14 @@
     right: 0;
     left: 0;
     width: 100%;
-    background-color: #f1f1f1;
+    background-color: $cf-background01;
     height: 61px;
   }
 
   &#dashboard > header {
     z-index: 2;
     > div {
-      .box-shadow(none);
+      box-shadow: none;
     }
   }
 
@@ -70,7 +68,7 @@
     float: left;
     padding: 9px 0;
     button {
-      margin: 0 10px 0 30px;
+      margin: 0 8px 0 14px;
     }
     div {
       display: inline-block;
@@ -78,35 +76,8 @@
   }
 
   .cancel-button {
-    font-size: 14px;
-    color: #666;
-    &:hover {
-      color: @hoverHighlight;
-      text-decoration: none;
-      cursor: pointer;
-    }
-    &--disabled {
-      opacity: 0.5;
-      cursor: not-allowed;
-      color: #666;
-    }
-    &--disabled:hover {
-      opacity: 0.5;
-      cursor: not-allowed;
-      color: #666;
-    }
-  }
-  .panel-button {
-    color: #666;
-    &:hover {
-      color: @hoverHighlight;
-      text-decoration: none;
-      cursor: pointer;
-    }
-    &:disabled {
-      color: @grayLight;
-      cursor: not-allowed;
-    }
+    font-size: 16px;
+    vertical-align: middle;
   }
 
   .bgEditorGutter {
@@ -114,34 +85,15 @@
     position: absolute;
     top: 0;
     bottom: 0;
-    background-color: #3b3b3b;
   }
 
-  .panel-button {
-    border: 0;
-    background-color: #f1f1f1;
-    padding: 11px;
-    color: #555555;
-
-    span:first-of-type {
-      margin-left: 4px;
-    }
-
-    .icon {
-      font-size: 18px;
-    }
-
-    .button-text {
-      padding-right: 5px;
-    }
-  }
   .panel-section {
-    border-left: 1px solid #cccccc;
     text-align: center;
-    padding: 9px 0;
+    padding: 10px 8px 10px 0px;
     display: inline-block;
 
-    &.open .dropdown-toggle, &:active {
+    &.open .dropdown-toggle,
+    &:active {
       box-shadow: none;
       background-color: inherit;
     }
@@ -151,7 +103,7 @@
     font-size: 0; // prevents whitespace gaps between elements
   }
   .row-fluid.content-area {
-    background-color: #4d4d4d;
+    background-color: $cf-code-bg;
   }
 
   // overriding the ace editor inline styles
@@ -164,14 +116,17 @@
 
   .ace_marker-layer .ace_bracket {
     margin: 0;
-    border: 1px solid #999999;
+    border: 1px solid $cf-border-color02;
   }
 
   // hide the labels on the buttons when the screen is shrunk too small,
   @media screen and (max-width: 1000px) {
-    .panel-button span {
+    .panel-section button span {
       display: none;
     }
+    .panel-section button i[class*=fonticon-] {
+      margin-right: 0;
+    }
   }
 
   // hides the API Url header link when the page is too small (prevents wrapping)
@@ -204,24 +159,23 @@
   max-width: 540px;
   text-align: left;
   overflow: hidden;
-  a:hover {
-    color: @hoverHighlight;
-  }
+  padding-bottom:0;
+  border-radius:0;
 }
 
 div.string-editor-modal {
   width: 80%;
-
-  .modal-content {
-    min-width: initial;
-  }
-
+  max-width: none!important;
   .modal-body {
     padding: 0px;
   }
+
+  .hide {
+    display: none;
+  }
 }
 
 .attachment-delimiter {
-  color: #999999;
+  color: $cf-border-color02;
   margin: 0 4px;
 }
diff --git a/app/addons/documents/assets/less/documents.less b/app/addons/documents/assets/scss/documents.scss
similarity index 60%
rename from app/addons/documents/assets/less/documents.less
rename to app/addons/documents/assets/scss/documents.scss
index 6e31c63..a139ea0 100644
--- a/app/addons/documents/assets/less/documents.less
+++ b/app/addons/documents/assets/scss/documents.scss
@@ -10,37 +10,31 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 /*ALL DOCS TABLE*/
-@import "../../../../../assets/less/variables.less";
-@import "../../../../../assets/less/bootstrap/variables.less";
-@import "../../../../../assets/less/bootstrap/mixins.less";
-@import "query-options.less";
-@import "view-editor.less";
-@import "changes.less";
-@import "sidenav.less";
-@import "index-results.less";
-@import "doc-editor.less";
-@import "header.less";
-@import "revision-browser.less";
-@import "header-docs-left.less";
-@import "partition-key.less";
 
+@import "../../../../../assets/scss/variables";
+@import "query-options";
+@import "view-editor";
+@import "changes";
+@import "sidenav";
+@import "index-results";
+@import "doc-editor";
+@import "header";
+@import "revision-browser";
+@import "header-docs-left";
+@import "partition-key";
 
 button.beautify {
   margin-top: 20px;
 }
 
-.toggle-btns {
-  label {
-    margin-right: 0;
-  }
-}
-
 #per-page {
   float: right;
+  margin-right: 16px;
 
   #select-per-page {
     margin-top: 10px;
-    width: 60px;
+    width: auto;
+    display: inline-block;
   }
 }
 
@@ -49,32 +43,16 @@
   margin-right: 17px;
 }
 
-/** used in view_editor.html **/
-.design-doc-group {
-  .span3 {
-    margin: 0;
-  }
-  #new-ddoc-section {
-    margin-top: 10px;
-    width: 325px;
-    label {
-      width: 100px
-    }
-    .controls {
-      margin-left: 100px;
-    }
-  }
-}
-
-#map-function, #reduce-function {
+#map-function,
+#reduce-function {
   width: 100%;
   font-size: 13px;
   line-height: 22px;
+  border-radius: $cf-border-radius;
 }
 
 .metadata-page {
   font-size: 14px;
-  padding: 20px;
 
   .preheading {
     font-size: 14px;
@@ -89,11 +67,11 @@
   header {
     padding-bottom: 10px;
   }
-  .icon-question-sign {
+  .fonticon-help-circled {
     margin-left: 4px;
-    color: @secondaryBlue;
+    color: $cf-secondary;
     &:hover {
-      color: @hoverHighlight;
+      color: $cf-brand-hightlight-hover;
     }
   }
   section {
@@ -111,16 +89,18 @@
   }
 }
 
-button.delete {
-  margin-left: 4px;
-}
-
 button.string-edit {
   position: absolute;
   padding: 0;
   z-index: 1000;
-  width: 20px;
-  left: 22px;
+  width: 22px;
+  left: 20px;
+  font-size: 0.75rem;
+  background-color: $cf-code-btn-string-edit-color;
+
+  &:hover {
+    background-color: $cf-code-btn-string-edit-color-hover;
+  }
 
   i.icon {
     margin-right: 0px;
@@ -135,7 +115,7 @@
   height: 500px;
   width: 100%;
 
-  &>div {
+  & > div {
     height: 100%;
   }
 }
@@ -152,31 +132,6 @@
   word-wrap: break-word;
 }
 
-#dashboard-upper-content {
-  .js-query-keys-wrapper {
-    padding-top: 0;
-  }
-
-  /** used in query-options.html**/
-  .custom-inputs {
-    .row-fluid {
-      padding-top: 20px;
-      .radio, .checkbox {
-        padding-left: 0;
-      }
-      .checkbox.inline,
-      #skipRows {
-        margin-bottom: 0;
-        padding: 6px;
-      }
-    }
-  }
-}
-
-.nav-list {
-  border-top: none;
-}
-
 .end-of-results {
   margin-bottom: 30px;
 
@@ -198,16 +153,14 @@
   .footer-table-control label {
     margin: 0;
     padding: 0;
-    line-height: initial;
   }
 
   .footer-table-control {
     float: right;
-    display: inline-block;
     input {
       margin: 0 5px 0 15px;
     }
-    margin: 17px 40px 17px 20px;
+    margin: 15px 40px 17px 20px;
   }
 
   .footer-doc-control-prioritized-wrapper {
@@ -215,9 +168,8 @@
   }
 
   .page-controls {
-    border-right: solid 1px @btnBorder;
+    border-right: solid 1px $cf-pagination-border;
   }
-
 }
 
 .two-pane .faux-header__breadcrumbs {
diff --git a/app/addons/documents/assets/scss/header-docs-left.scss b/app/addons/documents/assets/scss/header-docs-left.scss
new file mode 100644
index 0000000..7ab460f
--- /dev/null
+++ b/app/addons/documents/assets/scss/header-docs-left.scss
@@ -0,0 +1,80 @@
+@import "../../../../../assets/scss/variables";
+
+.faux-header__doc-header-left {
+  top: 0;
+  right: 0;
+  height: $cf-navbar-width-collapsed;
+  border-right: 1px solid $cf-border-color02;
+  width: $cf-sidebar-width + 1px;
+
+  @include display-flex();
+  @include flex-direction(row);
+}
+
+.faux-header__doc-header-title {
+  height: $cf-navbar-width-collapsed;
+  width: 247px;
+  color: $cf-topheader-title-color;
+  font-size: 24px;
+  line-height: 24px;
+  padding: 22px 10px;
+  border-right: 1px solid $cf-border-color01;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+#faux-header__doc-header-dropdown-toggle {
+  border: none;
+  height: $cf-navbar-width-collapsed;
+  right: 0;
+  padding: 10px 16px;
+  width: 43px;
+  background-color: $cf-topheader-bg;
+  color: $cf-topheader-color;
+  border: none;
+  box-shadow: none !important;
+
+  > i {
+    margin:0 !important;
+
+    &:before {
+      width: 6px;
+      font-size: 20px;
+      padding-top: 4px;
+    }
+  }
+
+  &:focus{
+    color: $cf-topheader-color-hover;
+    background-color: transparent !important;
+    border: none;
+    box-shadow: none !important;
+  }
+
+  &:hover{
+    color: $cf-topheader-color-hover;
+    background-color: $cf-topheader-bg-hover;
+  }
+}
+
+.faux-header__doc-header-backlink {
+  font-size: 24px;
+  border: none;
+  background-color: transparent;
+  border-right: 1px solid $cf-border-color01;
+  width: 40px;
+  padding: 11px;
+  color: $cf-topheader-title-color;
+}
+
+.faux-header__doc-header-backlink__icon:before {
+  width: 18px;
+}
+
+.faux-header__doc-header-backlink:hover {
+  text-decoration: none;
+  color: $cf-topheader-color-hover;
+  background-color: $cf-topheader-bg-hover;
+}
+
diff --git a/app/addons/documents/assets/less/header.less b/app/addons/documents/assets/scss/header.scss
similarity index 79%
rename from app/addons/documents/assets/less/header.less
rename to app/addons/documents/assets/scss/header.scss
index 24b2921..de6687a 100644
--- a/app/addons/documents/assets/less/header.less
+++ b/app/addons/documents/assets/scss/header.scss
@@ -10,10 +10,9 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-
 #react-headerbar {
   .control-toggle-include-docs {
-    border-right: 1px solid @btnBorder;
+    border-right: 1px solid $cf-border-color01;
     .icon-check {
       &:before {
         margin: 6px 6px 0 0;
@@ -31,16 +30,8 @@
   justify-content: flex-end;
 }
 
-.two-sides-toggle-button {
-  .btn {
-    height: 43px;
-    .fonticon-table {
-      vertical-align: middle;
-    }
-    
-    .fonticon-json {
-      vertical-align: middle;
-    }
+.alternative-header {
+  .two-sides-toggle-button {
+    margin-right: 1rem;
   }
 }
-
diff --git a/app/addons/documents/assets/less/index-results.less b/app/addons/documents/assets/scss/index-results.scss
similarity index 67%
rename from app/addons/documents/assets/less/index-results.less
rename to app/addons/documents/assets/scss/index-results.scss
index a015a45..f60ec0c 100644
--- a/app/addons/documents/assets/less/index-results.less
+++ b/app/addons/documents/assets/scss/index-results.scss
@@ -10,13 +10,13 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-@import "../../../../../assets/less/variables.less";
+@import "../../../../../assets/scss/variables";
 
 .document-result-screen {
   .loading-lines-wrapper {
     margin-left: auto;
     margin-right: auto;
-    width: 80px;
+    width: 84px;
   }
 
   .loading-lines {
@@ -26,69 +26,30 @@
 
 .document-result-screen__toolbar {
   display: flex;
-  padding-bottom: 20px;
-  position: relative;
+  align-items: center;
+  margin-bottom: 1.25rem;
 
   .bulk-action-component {
-    min-width: 90px;
-    min-height: 26px;
-    padding: 8px 0;
-  }
-
-  .text-overflow-switch {
-    min-width: 145px;
+    min-width: 85px;
     min-height: 26px;
     padding: 8px 0;
   }
 
   .toolbar-dropdown {
-    .btn {
-      color: #666;
-    }
-
-    .dropdown-menu.arrow:before {
-      right: 80%;
-    }
-
-    a.dropdown-toggle {
-      padding-left: 16px;
-    }
-
-    .dropdown-menu li a {
-      padding: 10px 15px 10px 12px;
-      &:hover {
-        background-color: @hoverHighlight;
-        color: white;
-      }
+    margin-right: 1rem;
+    .dropdown-toggle:empty::after {
+      margin-left: 0.25rem;
     }
   }
 }
 
-.document-result-screen__toolbar-flex-container {
-  width: 100%;
-  display: flex;
-  justify-content: flex-end;
-}
-
-.document-result-screen__toolbar-create-btn {
-  display: flex;
-  align-items: center;
-  height: 42px;
-}
-
-a.document-result-screen__toolbar-create-btn:active,
-a.document-result-screen__toolbar-create-btn:visited {
-  color: #fff;
-}
-
 .no-results-screen {
   position: absolute;
-  margin: -15px;
   top: 50%;
   margin-top: -125px;
-  width: 100%;
+  width: 95%;
   h3 {
-    border-top: 1px solid #ccc;
+    border-top: 1px solid $cf-border-color01;
     height: 45px;
     font-size: 20px;
     font-weight: normal;
@@ -116,8 +77,6 @@
 }
 
 .table-view-docs {
-  position: absolute;
-
   .bulk-action-component {
     padding-bottom: 0;
     min-height: 0;
@@ -128,7 +87,7 @@
 
   .tableview-data-cell-id {
     a {
-      color: @linkColor;
+      color: $link-hover-color;
     }
     div:first-of-type {
       font-weight: 700;
@@ -140,13 +99,19 @@
   }
   tbody tr {
     cursor: pointer;
+    border-left: 2px solid transparent;
+
     &:hover {
-      border-left: 2px solid @hoverHighlight;
+      border-left: 2px solid $cf-brand-hightlight-hover;
       td {
-        color: @hoverHighlight;
-        input[type="checkbox"] {
-          margin-left: 7px;
-        }
+        color: $cf-brand-hightlight-hover;
+        
+      }
+    }
+
+    td {
+      input[type="checkbox"] {
+        margin-left: 7px;
       }
     }
   }
@@ -160,7 +125,6 @@
 
   td,
   th {
-    color: @defaultHTag;
     max-width: 160px;
     overflow: hidden;
     text-overflow: ellipsis;
@@ -184,11 +148,11 @@
     padding-left: 0px;
   }
   .tableview-conflict {
-    color: #f00;
-  }
-  .icon-code-fork {
-    padding-right: 2px;
-    color: #f00;
+    color: $cf-brand-highlight;
+    .fonticon {
+      padding-right: 4px;
+      vertical-align: middle;
+    }
   }
   .tableview-el-last {
     width: 75px;
@@ -203,29 +167,9 @@
     overflow: visible;
   }
 
-  .table-dropdown-item {
-    padding: 2px 6px;
-    cursor: pointer;
-    background: #2b2f33;
-    color: white;
-    margin: 0 2px;
-  }
-  .table-dropdown-item-highlight {
-    background: #e23632;
-  }
-
-  .icon.icon-filter {
-    position: absolute;
-    right: 6px;
-    top: 6px;
-    pointer-events: none;
-    color: #999;
-  }
-
   .table-container-autocomplete {
     position: relative;
     width: 128px;
-    height: 29px;
   }
 
   th {
@@ -236,6 +180,11 @@
     width: inherit;
     overflow: visible;
   }
+
+  .tableview-conflict i {
+    margin-right: 0.4rem;
+    vertical-align: middle;
+  }
 }
 
 .document-result-screen {
@@ -250,8 +199,9 @@
 .execution-stats-popup {
   font-size: 14px;
   .execution-stats-popup-component {
+    margin: 0.5rem;
     [data-status="false"] {
-      color: @fontGrey;
+      color: $cf-text01-muted;
     }
     [data-status="true"] {
       .value {
@@ -260,8 +210,8 @@
     }
   }
   .warning {
-    color: @errorAlertColor;
-    margin-top: 8px;
+    color: $cf-alert-error-color;
+    margin: 0.5rem;
   }
 }
 
diff --git a/app/addons/documents/assets/less/partition-key.less b/app/addons/documents/assets/scss/partition-key.scss
similarity index 66%
rename from app/addons/documents/assets/less/partition-key.less
rename to app/addons/documents/assets/scss/partition-key.scss
index bf8d1a9..fd20fd8 100644
--- a/app/addons/documents/assets/less/partition-key.less
+++ b/app/addons/documents/assets/scss/partition-key.scss
@@ -10,7 +10,7 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-@import "../../../../../assets/less/variables.less";
+@import "../../../../../assets/scss/variables";
 
 .partition-selector {
   display: flex;
@@ -20,33 +20,40 @@
 }
 
 .partition-selector__switch {
-  background-color: transparent;
+  background-color: $cf-partition-selector-bg;
   border: none;
-  color: #666;
+  color: $cf-partition-selector-color;
   font-size: 1rem;
-  .fonticon-filter {
-    font-size: 1.25rem;
-    padding-right: 6px;
-  }
+
   &:hover {
-    color: @hoverHighlight;
+    color: $cf-partition-selector-color-hover;
+  }
+
+  i {
+    margin-right: 10px;
   }
 }
 
 .partition-selector__switch--active {
-  color: @brandHighlight;
+  color: $cf-partition-selector-color-active;
   padding-right: 0px;
 }
 
 .partition-selector__key {
   flex: 1;
-  color: #666;
+  color: $cf-partition-selector-color;
+  input {
+    max-width: 20rem;
+  }
+  &:hover {
+    cursor: pointer;
+  }
 }
 
 .partition-selector__key--active {
-  color: @brandHighlight;
+  color: $cf-partition-selector-color-active;
 }
 
 .partition-selector__global {
-  color: #666;
+  color: $cf-partition-selector-color-active;
 }
diff --git a/app/addons/documents/assets/scss/query-options.scss b/app/addons/documents/assets/scss/query-options.scss
new file mode 100644
index 0000000..8b8340a
--- /dev/null
+++ b/app/addons/documents/assets/scss/query-options.scss
@@ -0,0 +1,72 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+@import "../../../../../assets/scss/mixins";
+
+#query-options-tray:before {
+  right: 225px;
+}
+
+#query-options-tray {
+  width: 490px;
+  padding-top: 6px;
+  max-height: calc(100vh - 64px);
+  overflow-y: scroll;
+
+  .fonticon-help-circled {
+    margin-left: 3px;
+    font-size: 17.5px;
+    color: $cf-secondary;
+    &:hover {
+      color: $cf-brand-hightlight-hover;
+    }
+  }
+
+  .controls-group {
+    margin: 0;
+  }
+  .controls-group:last-child {
+    margin: 0;
+  }
+
+  label.disabled {
+    cursor: not-allowed;
+    opacity: 0.5;
+  }
+  div.controls-group.well {
+    height: 156px;
+    background: none;
+    border: none;
+    padding: 10px 0;
+  }
+
+  #skipRows {
+    margin-left: 5px;
+  }
+  .add-on {
+    height: 28px;
+  }
+  .hide {
+    display: none;
+  }
+
+  div#button-options {
+    .btn-cf-cancel {
+      margin-right: 0.5rem;
+      color: $cf-text02;
+
+      &:hover {
+        color: $cf-btn-cancel-color-hover;
+      }
+    }
+  }
+}
diff --git a/app/addons/documents/assets/scss/revision-browser.scss b/app/addons/documents/assets/scss/revision-browser.scss
new file mode 100644
index 0000000..a855b83
--- /dev/null
+++ b/app/addons/documents/assets/scss/revision-browser.scss
@@ -0,0 +1,148 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+div#dashboard-content div.revision-wrapper {
+  padding: 0 0 15px 0;
+  margin-top: $cf-topheader-height;
+
+  .rev-subtree-selector {
+    font-family: monospace;
+    margin-bottom: 20px;
+  }
+  .left-area {
+    text-align: center;
+  }
+
+  .revision-browser-no-conflict {
+    text-align: center;
+    color: $cf-text02;
+  }
+
+  .revision-browser-controls {
+    padding: 1rem;
+    background-color: $cf-background01;
+  }
+
+  .revision-browser-controls-label-col {
+    min-width: 185px;
+  }
+
+  .revision-browser-controls .Select .Select-control {
+    border-radius: inherit;
+    border-color: $cf-border-color01;
+  }
+
+  .revision-browser-controls
+    .Select
+    .is-focused:not(.is-open)
+    > .Select-control {
+    box-shadow: transparent;
+    border-color: $cf-border-color01;
+  }
+
+  .revision-browser-controls .Select .Select-menu-outer {
+    border-radius: inherit;
+  }
+
+  .revision-view-controls {
+    background-color: $cf-background01;
+    padding: 1rem;
+    border-top: 1px solid $cf-border-color01;
+  }
+
+  .revision-split-area {
+    background-color: $cf-code-bg;
+    color: $cf-white;
+    margin: 0rem 1rem 1rem 1rem;
+    padding: 1rem;
+    box-shadow: $cf-box-shadow;
+    @include display-flex();
+
+    .ours-area {
+      width: 50%;
+      padding-right: 1.5rem;
+    }
+
+    .theirs-area {
+      width: 50%;
+    }
+
+    .doc-title {
+      margin-bottom: 1.5rem;
+      border-bottom: 1px solid $cf-border-color01;  
+    }
+
+    pre {
+      border: none;
+      background-color: transparent;
+    }
+  }
+
+  .conflicting-revs-dropdown {
+    @include display-flex();
+    align-items: center;
+    select {
+      margin-left: 0.5rem;
+      margin-right: 0.5rem;
+    }
+  }
+
+  .revision-diff-area {
+    background-color: $cf-code-bg;
+    color: $cf-code-token-variable-color;
+    margin: 0rem 1rem 1rem 1rem;
+    padding: 1rem;
+    box-shadow: $cf-box-shadow;
+  }
+
+  .revision-diff-area .jsondiffpatch-unchanged,
+  .revision-diff-area .jsondiffpatch-unchanged pre {
+    color: $cf-code-token-variable-color;
+    background-color: transparent;
+    border: none;
+  }
+
+  .revision-diff-area .jsondiffpatch-added,
+  .revision-diff-area .jsondiffpatch-deleted {
+    color: $cf-black;
+  }
+
+  .revision-diff-area .jsondiffpatch-modified .jsondiffpatch-left-value pre,
+  .jsondiffpatch-textdiff-deleted,
+  .jsondiffpatch-deleted .jsondiffpatch-property-name,
+  .jsondiffpatch-deleted pre {
+    text-decoration: none;
+  }
+
+  .revision-diff-area .jsondiffpatch-modified .jsondiffpatch-value {
+    color: $cf-black;
+    
+  }
+
+  .revision-diff-area .jsondiffpatch-delta {
+    font-size: 13px;
+    padding: 0;
+    pre {
+      font-size: 13px;
+    }
+  }
+
+  .two-sides-toggle-button {
+    z-index: 0;
+  }
+}
+
+.delete-conflicts-modal {
+  .do-not-show-again label {
+    font-size: 13px;
+  }
+}
diff --git a/app/addons/documents/assets/less/sidenav.less b/app/addons/documents/assets/scss/sidenav.scss
similarity index 64%
rename from app/addons/documents/assets/less/sidenav.less
rename to app/addons/documents/assets/scss/sidenav.scss
index 8ba51a5..7036935 100644
--- a/app/addons/documents/assets/less/sidenav.less
+++ b/app/addons/documents/assets/scss/sidenav.scss
@@ -9,9 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
-@import "../../../../../assets/less/variables.less";
-@import "../../../../../assets/less/mixins.less";
-
+@import "../../../../../assets/scss/variables";
+@import "../../../../../assets/scss/mixins";
 
 #sidebar-content {
   .loading-lines {
@@ -25,27 +24,31 @@
   }
 
   // selected nav item row styles
-  .nav-list .active > a {
+  .nav .active > a {
     text-shadow: none;
-    background-color: #f1f0f1;
-    color: @brandHighlight;
+    background-color: $cf-sidebar-bg-active;
+    color: $cf-sidebar-color-active;
     &:hover {
-      color: white;
+      color: $cf-sidebar-color-hover;
     }
   }
 
-  .dropdown-toggle:hover {
-    color: @hoverHighlight;
+  .dropdown-toggle {
+    color: $cf-sidebar-icon-color;
+
+    &:hover {
+      color: $cf-sidebar-icon-color-hover;
+    }
   }
 
   // ugly! This styles the (+) icon to make it white when a user hovers over a row. Better solution would be to move the
   // active class to the <li> instead of the child <a>
-  .accordion-list-item:hover, .nav-list > li a:hover {
+  .accordion-list-item:hover,
+  .nav > li a:hover {
     & + div.add-dropdown .dropdown-toggle,
     & + span.index-menu-toggle {
-      color: white;
+      color: $cf-sidebar-color-hover;
     }
-
   }
 
   li {
@@ -56,17 +59,18 @@
   }
 
   .design-doc-section {
-    border-bottom: 1px solid #d3d7db;
+    border-bottom: 1px solid $cf-border-color01;
     .accordion-list-item:hover {
-      p, .fonticon-play {
-        color: white;
+      p,
+      .fonticon-play {
+        color: $cf-sidebar-color-hover;
       }
       p {
-        background-color: @hoverHighlight;
+        background-color: $cf-sidebar-bg-hover;
       }
     }
     .accordion-list-item p {
-      .transition(all 0.25s linear);
+      @include transition(all 0.25s linear);
     }
     .fonticon-play {
       font-size: 12px;
@@ -74,52 +78,62 @@
       left: 12px;
     }
     &.down .fonticon-play {
-      .rotate(90deg);
+      @include rotate(90deg);
     }
     .add-dropdown {
       right: 15px;
     }
   }
 
-  li.nav-header .index-list li a {
-    padding-left: 46px;
-  }
-
   li.nav-header {
     margin-top: 0;
     position: relative;
 
-    .design-doc-body.in {
-      border-bottom: 1px solid #d3d7db;
+    .index-list {
+      li {
+        a.toggle-view {
+          padding-left: 46px;
+        }
+      }
     }
 
     .accordion-body {
-      color: #eee;
       margin-left: 0;
 
       li {
         cursor: pointer;
         &.active > a {
-          background-color: #f1f0f1;
+          background-color: $cf-sidebar-bg-active;
+          color: $cf-sidebar-color-active;
         }
         > a.down .fonticon-play {
-          .rotate(90deg);
+          @include rotate(90deg);
         }
         &:hover .fonticon-play {
-          color: #dddddd;
+          color: $cf-sidebar-color-hover;
         }
         a {
           font-size: 14px;
-          background-color: rgba(0, 0, 0, 0.02);
-          &:hover {
-            color: #fff;
-            text-decoration: none;
-            background-color: @hoverHighlight;
-          }
+          background-color: $cf-sidebar-subitem-bg;
+          color: $cf-sidebar-subitem-color;
           border-top: none;
-          &.accordion-header{
+
+          &:hover {
+            color: $cf-sidebar-subitem-color-hover;
+            text-decoration: none;
+            background-color: $cf-sidebar-subitem-bg-hover;
+          }
+          &.accordion-header {
             padding: 8px 5px 8px 36px;
           }
+
+          &.icon {
+            background-color:$cf-transparent;
+
+            &:hover {
+              color: $cf-sidebar-icon-color-hover;
+            }
+          }
         }
       }
     }
@@ -129,13 +143,12 @@
     }
     .fonticon-play {
       font-size: 8px;
-      top: 11px;
+      top: 16px;
       left: 15px;
-      color: @subListGray;
+      color: $cf-sidebar-subitem-color;
       position: absolute;
       display: block;
-      vertical-align: bottom;
-      .transition(all 0.25s linear);
+      @include transition(all 0.25s linear);
     }
     .fonticon:before {
       margin-right: 6px;
@@ -144,16 +157,15 @@
       position: relative;
     }
     .accordion-header:hover .fonticon-play {
-      color: white;
+      color: $cf-sidebar-color-hover;
     }
   }
 
   .design-doc-name {
     cursor: pointer;
     margin: 0;
-    color: #222222;
     span {
-      width: @sidebarWidth - 30px;
+      width: $cf-sidebar-width - 30px;
       display: block;
       padding: 10px 13px 10px 36px;
       text-overflow: ellipsis;
@@ -172,14 +184,14 @@
     position: absolute;
     top: 0;
     right: 0;
-    color: #767f89;
+    color: $cf-sidebar-icon-color;
     height: 30px;
     width: 40px;
     padding-top: 2px;
     padding-left: 4px;
-    .transition(all 0.25s linear);
+    @include transition(all 0.25s linear);
     &:hover {
-      color: @hoverHighlight;
+      color: $cf-sidebar-icon-color-hover;
     }
     &:before {
       font-size: 17px;
@@ -189,10 +201,10 @@
 }
 
 #index-menu-component-popover {
-  .border-radius(0);
-  .box-shadow(2px 2px rgba(0, 0, 0, 0.2));
-  background-color: @brandDark2;
-  color: #FFF;
+  @include border-radius(0);
+  box-shadow: 2px 2px rgba(0, 0, 0, 0.2);
+  background-color: $cf-navbar-bg;
+  color: $cf-white;
   font-size: 12px;
   padding: 0;
   margin-left: -7px;
@@ -203,12 +215,12 @@
   }
   li {
     padding: 10px;
-    background-color: @brandDark1;
+    background-color: $cf-dropdown-item-bg;
     margin-bottom: 2px;
     cursor: pointer;
-    .transition(all 0.25s linear);
+    @include transition(all 0.25s linear);
     &:hover {
-      background-color: @hoverHighlight;
+      background-color: $cf-brand-hightlight-hover;
     }
     &:last-child {
       margin-bottom: 0;
@@ -216,8 +228,8 @@
   }
   .arrow {
     &:after {
-      border-bottom-color: black;
-      border-top-color: black;
+      border-bottom-color: $cf-black;
+      border-top-color: $cf-black;
     }
   }
   .fonticon {
@@ -233,10 +245,12 @@
     padding: 20px;
   }
   /* the index label ("view" / "search index", etc.) is passed dynamically to the clone index modal. This fixes the text case */
-  .modal-title, .btn-success, .new-index-title-label {
+  .modal-title,
+  .btn-success,
+  .new-index-title-label {
     text-transform: capitalize;
   }
-  .styled-select, select {
+  select {
     width: 230px;
   }
   .row {
@@ -256,6 +270,10 @@
         margin-top: 15px;
       }
     }
+
+    select {
+      width: 100%;
+    }
   }
   .ddoc-selector-partitioned {
     padding-top: 0px;
diff --git a/app/addons/documents/assets/scss/view-editor.scss b/app/addons/documents/assets/scss/view-editor.scss
new file mode 100644
index 0000000..5452615
--- /dev/null
+++ b/app/addons/documents/assets/scss/view-editor.scss
@@ -0,0 +1,82 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+@import "../../../../../assets/scss/variables";
+
+.define-view {
+  .help-link {
+    margin-left: 0.25rem;
+  }
+}
+
+/* to remove once Mango has moved to the standard 2-panel layout */
+.mango-editor-wrapper {
+  label {
+    font-size: 16px;
+    margin-right: 0;
+    display: block;
+  }
+  .bordered-box {
+    border-bottom: 1px solid $cf-border-color01;
+  }
+  .padded-box {
+    margin: 15px;
+  }
+  .actions-panel {
+    display: flex;
+    align-items: center;
+  }
+  .right-side-actions {
+    flex-grow: 1;
+    .edit-link {
+      float: right;
+    }
+  }
+  .db-title {
+    color: $cf-brand-highlight;
+    line-height: 30px;
+  }
+  #index-name {
+    height: 46px;
+    width: 200px;
+  }
+  .new-ddoc-input {
+    margin-top: 25px;
+    height: 46px;
+  }
+  pre.prettyprint-left {
+    padding: 5px;
+  }
+  form {
+    padding-bottom: 15px;
+  }
+  .help-link {
+    margin-left: 4px;
+  }
+}
+
+.mango-select {
+  width: inherit;
+  overflow: visible;
+
+  div {
+    z-index: 100;
+  }
+}
+
+a.index-cancel-link {
+  margin-left: 0.5rem;
+}
+
+.reduce-editor-warning {
+  padding-bottom: 1rem;
+}
diff --git a/app/addons/documents/base.js b/app/addons/documents/base.js
index 0a49fbe..d2407fc 100644
--- a/app/addons/documents/base.js
+++ b/app/addons/documents/base.js
@@ -23,7 +23,7 @@
 import docEditorReducers from './doc-editor/reducers';
 import changesReducers from './changes/reducers';
 import indexEditorReducers from './index-editor/reducers';
-import "./assets/less/documents.less";
+import "./assets/scss/documents.scss";
 
 FauxtonAPI.addReducers({
   indexResults: reducers,
diff --git a/app/addons/documents/changes/components/AddFilterForm.js b/app/addons/documents/changes/components/AddFilterForm.js
index 8e0b795..5d10df2 100644
--- a/app/addons/documents/changes/components/AddFilterForm.js
+++ b/app/addons/documents/changes/components/AddFilterForm.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
+import { Button, Form, InputGroup } from 'react-bootstrap';
 import ReactDOM from 'react-dom';
 
 export default class AddFilterForm extends React.Component {
@@ -55,29 +56,22 @@
     this.addItem.focus();
   }
 
-  inputClassNames () {
-    let className = 'js-changes-filter-field';
-    if (this.state.error) {
-      className += ' errorHighlight';
-    }
-    return className;
-  }
-
   render () {
     return (
-      <form className="form-inline js-filter-form" onSubmit={this.submitForm}>
-        <fieldset>
-          <i className="fonticon-filter" />
-          <input
-            type="text"
+      <form onSubmit={this.submitForm}>
+        <InputGroup>
+          <Form.Control
+            id="changes-filter-field"
             ref={node => this.addItem = node}
-            className={this.inputClassNames()}
             placeholder="Sequence or ID"
             onChange={(e) => this.setState({ filter: e.target.value })}
-            value={this.state.filter} />
-          <button type="submit" className="btn btn-secondary">Filter</button>
-          <div className="help-block"></div>
-        </fieldset>
+            value={this.state.filter}
+            aria-label="sequence or ID value"
+            type="text" />
+
+          <Button type="submit" variant="cf-secondary" aria-label="Filter results"><i className="fonticon-filter" /> Filter</Button>
+        </InputGroup>
+        <div className="help-block"></div>
       </form>
     );
   }
diff --git a/app/addons/documents/changes/components/ChangeID.js b/app/addons/documents/changes/components/ChangeID.js
index 6a2b1a4..782f2b3 100644
--- a/app/addons/documents/changes/components/ChangeID.js
+++ b/app/addons/documents/changes/components/ChangeID.js
@@ -23,7 +23,7 @@
     }
     const link = '#' + FauxtonAPI.urls('document', 'app', encodeURIComponent(databaseName), encodeURIComponent(id));
     return (
-      <a href={link} className="js-doc-link">{id}</a>
+      <a href={link} className="text-break">{id}</a>
     );
   }
 }
diff --git a/app/addons/documents/changes/components/ChangeRow.js b/app/addons/documents/changes/components/ChangeRow.js
index 698f19b..af543be 100644
--- a/app/addons/documents/changes/components/ChangeRow.js
+++ b/app/addons/documents/changes/components/ChangeRow.js
@@ -20,6 +20,7 @@
 import ChangeID from './ChangeID';
 
 const {Copy} = ReactComponents;
+import {Button} from 'react-bootstrap';
 
 export default class ChangeRow extends React.Component {
   constructor (props) {
@@ -65,10 +66,10 @@
     return (
       <div className={wrapperClass}>
         <div className="change-box" data-id={change.id}>
-          <div className="row-fluid">
-            <div className="span2">seq</div>
-            <div className="span8 change-sequence">{change.seq}</div>
-            <div className="span2 text-right">
+          <div className="row">
+            <div className="col-2 fw-bold">seq</div>
+            <div className="col-8 change-sequence">{change.seq}</div>
+            <div className="col-2 align-middle text-end">
               <Copy
                 uniqueKey={uuidv4()}
                 text={change.seq.toString()}
@@ -76,12 +77,12 @@
             </div>
           </div>
 
-          <div className="row-fluid">
-            <div className="span2">id</div>
-            <div className="span8">
+          <div className="row">
+            <div className="col-2 fw-bold">id</div>
+            <div className="col-8">
               <ChangeID id={change.id} deleted={change.deleted} databaseName={databaseName} />
             </div>
-            <div className="span2 text-right">
+            <div className="col-2 text-end">
               <Copy
                 uniqueKey={uuidv4()}
                 text={change.id}
@@ -89,17 +90,15 @@
             </div>
           </div>
 
-          <div className="row-fluid">
-            <div className="span2">deleted</div>
-            <div className="span10">{change.deleted ? 'True' : 'False'}</div>
+          <div className="row">
+            <div className="col-2 fw-bold">deleted</div>
+            <div className="col-10">{change.deleted ? 'True' : 'False'}</div>
           </div>
 
-          <div className="row-fluid">
-            <div className="span2">changes</div>
-            <div className="span10">
-              <button type="button" className='btn btn-small btn-secondary' onClick={this.toggleJSON.bind(this)}>
-                {codeVisible ? 'Close JSON' : 'View JSON'}
-              </button>
+          <div className="row">
+            <div className="col-2 fw-bold">changes</div>
+            <div className="col-10">
+              <Button variant="cf-secondary" onClick={this.toggleJSON.bind(this)}>{codeVisible ? 'Close JSON' : 'View JSON'}</Button>
             </div>
           </div>
 
diff --git a/app/addons/documents/components/header-docs-left.js b/app/addons/documents/components/header-docs-left.js
index 94b58d7..3aa6941 100644
--- a/app/addons/documents/components/header-docs-left.js
+++ b/app/addons/documents/components/header-docs-left.js
@@ -31,29 +31,31 @@
 
     if (el.title && el.links) {
       const items = el.links.map((subel) => {
-        return <Item key={subel.title} onClick={subel.onClick} icon={subel.icon} url={subel.url}>{subel.title}</Item>;
+        return <Item key={subel.title} title={subel.title} url={subel.url} icon={subel.icon} onClick={subel.onClick}></Item>;
       });
 
       return ([
-        <li key={el.title} className="header-label">{el.title}</li>,
+        <Dropdown.Header key={el.title}>{el.title}</Dropdown.Header>,
         items
       ]);
     }
 
-    return (
-      <Item icon={el.icon} url={el.url} onClick={el.onClick} key={i}>{el.title}</Item>
-    );
+    return <Item key={i} title={el.title} url={el.url} icon={el.icon} onClick={el.onClick}></Item>;
   });
 }
 
 
-const Item = ({url, icon, onClick, children}) => {
+const Item = ({title, url, icon, onClick}) => {
+  let itemType = (url == null) ? 'button' : "a";
   return (
-    <li role="presentation">
-      <a className={"faux-header__doc-header-dropdown-item icon " + icon} onClick={onClick} href={url}>
-        {children}
-      </a>
-    </li>
+    <Dropdown.Item as={itemType} onClick={onClick} href={url}>
+      <div className='py-1 ms-1'>
+        <i className={"align-middle icon fonticon-fw " + icon}></i>
+        <span className="ms-2 align-middle">
+          {title}
+        </span>
+      </div>
+    </Dropdown.Item>
   );
 };
 
@@ -69,11 +71,11 @@
       <div className="faux-header__doc-header-title flex-fill" title={dbName}>
         {dbName}
       </div>
-      <Dropdown id="faux-header__doc-header-left-1">
-        <Dropdown.Toggle noCaret className="faux-header__doc-header-dropdown-toggle">
-          <i className="faux-header__doc-header-dropdown-toggle-icon fonticon-vertical-ellipsis"></i>
+      <Dropdown>
+        <Dropdown.Toggle id="faux-header__doc-header-dropdown-toggle">
+          <i className="fonticon-vertical-ellipsis"></i>
         </Dropdown.Toggle>
-        <Dropdown.Menu className="faux-header__doc-header-dropdown-itemwrapper">
+        <Dropdown.Menu>
           {dropdownItems}
         </Dropdown.Menu>
       </Dropdown>
diff --git a/app/addons/documents/components/results-toolbar.js b/app/addons/documents/components/results-toolbar.js
index a610d2f..9cc4b1c 100644
--- a/app/addons/documents/components/results-toolbar.js
+++ b/app/addons/documents/components/results-toolbar.js
@@ -10,8 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 import PropTypes from 'prop-types';
-
 import React from 'react';
+import { Button } from 'react-bootstrap';
 import BulkDocumentHeaderController from "../header/header";
 import ResultsOptions from './results-options';
 import Components from "../../components/react-components";
@@ -67,10 +67,10 @@
     let createDocumentLink = null;
     if (databaseName) {
       createDocumentLink = (
-        <div className="document-result-screen__toolbar-flex-container">
-          <a href={Helpers.getNewDocUrl(databaseName, partitionKey)} className="btn save document-result-screen__toolbar-create-btn btn-primary">
+        <div className="ms-auto">
+          <Button id="create-new-doc-btn" href={Helpers.getNewDocUrl(databaseName, partitionKey)} variant="cf-primary">
             Create Document
-          </a>
+          </Button>
         </div>
       );
     }
diff --git a/app/addons/documents/doc-editor/__tests__/doc-editor.components.test.js b/app/addons/documents/doc-editor/__tests__/doc-editor.components.test.js
index 5602ebb..ad97635 100644
--- a/app/addons/documents/doc-editor/__tests__/doc-editor.components.test.js
+++ b/app/addons/documents/doc-editor/__tests__/doc-editor.components.test.js
@@ -27,6 +27,7 @@
 import { createStore, applyMiddleware, combineReducers } from 'redux';
 import actiontypes from '../actiontypes';
 import docEditorReducer from '../reducers';
+import { act } from 'react-dom/test-utils';
 
 import '../../base';
 
@@ -95,7 +96,7 @@
 describe('DocEditorScreen', () => {
 
   it('loading indicator appears on load', () => {
-    const el = mount(<DocEditorScreen {...defaultProps} />);
+    const el = mount(<DocEditorScreen {...defaultProps} isSaving={false} />);
     expect(el.find('.loading-lines').length).toBe(1);
   });
 
@@ -105,13 +106,14 @@
       {...defaultProps}
       isLoading={false}
       isNewDoc={true}
+      isSaving={false}
       database={database}
       doc={doc} />);
 
     expect(el.find('.loading-lines').length).toBe(0);
-    expect(el.find('.icon-circle-arrow-up').length).toBe(0);
-    expect(el.find('.icon-repeat').length).toBe(0);
-    expect(el.find('.icon-trash').length).toBe(0);
+    expect(el.find('.fonticon-fonticon-up-circled').length).toBe(0);
+    expect(el.find('.fonticon-cw').length).toBe(0);
+    expect(el.find('.fonticon-trash').length).toBe(0);
   });
 
   it('view attachments button does not appear with no attachments', () => {
@@ -119,6 +121,7 @@
     const el = mount(<DocEditorScreen
       {...defaultProps}
       isLoading={false}
+      isSaving={false}
       isNewDoc={false}
       database={database}
       doc={doc} />);
@@ -131,6 +134,7 @@
     const el = mount(<DocEditorScreen
       {...defaultProps}
       isLoading={false}
+      isSaving={false}
       isNewDoc={false}
       database={database}
       doc={doc} />);
@@ -138,31 +142,42 @@
     expect(el.find('.view-attachments-section').length).toBe(1);
   });
 
-  it('view attachments dropdown contains right number of docs', () => {
+  it('view attachments dropdown contains right number of docs', async () => {
     const doc = new Documents.Doc(docWithAttachmentsJSON, { database: database });
     const el = mount(<DocEditorScreen
       {...defaultProps}
       isLoading={false}
+      isSaving={false}
       isNewDoc={false}
       database={database}
       doc={doc} />);
 
-    expect(el.find('.view-attachments-section .dropdown-menu li').length).toBe(2);
+    const dropdownButton = el.find('.view-attachments-section button.dropdown-toggle');
+    dropdownButton.simulate('click');
+    await act(async () => {
+      el.update();
+    });
+    const menuItems = el.find('.view-attachments-section a.dropdown-item');
+    expect(menuItems.length).toBe(2);
   });
 
-  it('view attachments dropdown contains correct urls', () => {
+  it('view attachments dropdown contains correct urls', async () => {
     const doc = new Documents.Doc(docWithAttachmentsJSON, { database: database });
     const el = mount(<DocEditorScreen
       {...defaultProps}
       isLoading={false}
+      isSaving={false}
       isNewDoc={false}
       database={database}
       doc={doc} />);
 
-    const $attachmentNode = el.find('.view-attachments-section .dropdown-menu li');
-    const attachmentURLactual = $attachmentNode.find('a').first().prop('href');
-
-    expect(attachmentURLactual).toBe('./a%2Fspecial%3Fdb/_design%2Ftest%23doc/one%252F.png');
+    const dropdownButton = el.find('.view-attachments-section button.dropdown-toggle');
+    dropdownButton.simulate('click');
+    await act(async () => {
+      el.update();
+    });
+    const menuItems = el.find('.view-attachments-section a.dropdown-item');
+    expect(menuItems.first().prop('href')).toBe('./a%2Fspecial%3Fdb/_design%2Ftest%23doc/one%252F.png');
   });
 
   it('auto-generated ID for new docs starts with colon for partitioned databases', () => {
@@ -170,6 +185,7 @@
     const el = mount(<DocEditorScreen
       {...defaultProps}
       isLoading={false}
+      isSaving={false}
       isNewDoc={true}
       isDbPartitioned={true}
       database={database}
@@ -184,6 +200,7 @@
     const el = mount(<DocEditorScreen
       {...defaultProps}
       isLoading={false}
+      isSaving={false}
       isNewDoc={true}
       isDbPartitioned={true}
       database={database}
@@ -198,6 +215,7 @@
     const el = mount(<DocEditorScreen
       {...defaultProps}
       isLoading={false}
+      isSaving={false}
       isNewDoc={true}
       isDbPartitioned={true}
       database={database}
@@ -315,6 +333,7 @@
     const el = mount(<DocEditorScreen
       {...defaultProps}
       isLoading={false}
+      isSaving={false}
       isNewDoc={false}
       database={database} />);
     expect(/Oh\sno\sshe\sdi'n't!/.test(el.html())).toBe(true);
diff --git a/app/addons/documents/doc-editor/components/AttachmentsPanelButton.js b/app/addons/documents/doc-editor/components/AttachmentsPanelButton.js
index 36b683e..ed5bdd6 100644
--- a/app/addons/documents/doc-editor/components/AttachmentsPanelButton.js
+++ b/app/addons/documents/doc-editor/components/AttachmentsPanelButton.js
@@ -14,7 +14,7 @@
 import PropTypes from 'prop-types';
 import React from 'react';
 import ReactDOM from 'react-dom';
-import { Dropdown, MenuItem } from 'react-bootstrap';
+import { Dropdown } from 'react-bootstrap';
 import Helpers from '../../../../helpers';
 
 
@@ -38,11 +38,11 @@
     return _.map(this.props.doc.get('_attachments'), (item, filename) => {
       const url = FauxtonAPI.urls('document', 'attachment', db, doc, encodeURIComponent(filename));
       return (
-        <MenuItem key={filename} href={url} target="_blank" data-bypass="true">
+        <Dropdown.Item key={filename} href={url} target="_blank" data-bypass="true">
           <strong>{filename}</strong>
           <span className="attachment-delimiter">-</span>
           <span>{item.content_type}{item.content_type ? ', ' : ''}{Helpers.formatSize(item.length)}</span>
-        </MenuItem>
+        </Dropdown.Item>
       );
     });
   };
@@ -55,8 +55,8 @@
     return (
       <div className="panel-section view-attachments-section btn-group">
         <Dropdown id="view-attachments-menu" disabled={this.props.disabled} >
-          <Dropdown.Toggle noCaret className="panel-button dropdown-toggle btn" data-bypass="true">
-            <i className="icon icon-paper-clip"></i>
+          <Dropdown.Toggle variant="cf-secondary" className="panel-button dropdown-toggle" data-bypass="true">
+            <i className="fonticon-paperclip"></i>
             <span className="button-text">View Attachments</span>
             <span className="caret"></span>
           </Dropdown.Toggle>
diff --git a/app/addons/documents/doc-editor/components/CloneDocModal.js b/app/addons/documents/doc-editor/components/CloneDocModal.js
index 7ae7968..259826a 100644
--- a/app/addons/documents/doc-editor/components/CloneDocModal.js
+++ b/app/addons/documents/doc-editor/components/CloneDocModal.js
@@ -13,7 +13,7 @@
 import PropTypes from 'prop-types';
 import React from 'react';
 import ReactDOM from 'react-dom';
-import { Modal } from 'react-bootstrap';
+import { Modal, Button, Form } from 'react-bootstrap';
 import Helpers from '../../../../helpers';
 
 
@@ -71,6 +71,8 @@
       return false;
     }
 
+    this.nodeRef = React.createRef();
+
     return (
       <Modal dialogClassName="clone-doc-modal" show={this.props.visible} onHide={this.closeModal}>
         <Modal.Header closeButton={true}>
@@ -84,15 +86,23 @@
             <p>
               You can modify the following generated ID for your new document.
             </p>
-            <input ref={node => this.newDocId = node} type="text" autoFocus={true} className="input-block-level"
-              onChange={this.docIDChange} value={this.state.uuid} />
+            <Form.Control
+              type="text"
+              autoFocus={true}
+              className="form-control"
+              onChange={this.docIDChange}
+              ref={this.nodeRef}
+              value={this.state.uuid} />
           </form>
         </Modal.Body>
         <Modal.Footer>
-          <a href="#" data-bypass="true" className="cancel-link" onClick={this.closeModal}>Cancel</a>
-          <button className="btn btn-primary save" onClick={this.cloneDoc}>
-            <i className="icon-repeat"></i> Clone Document
-          </button>
+          <Button href="#" data-bypass="true" variant="cf-cancel" className="cancel-link" onClick={this.closeModal}>Cancel</Button>
+          <Button
+            variant="cf-primary"
+            onClick={this.cloneDoc}
+          >
+            <i className="fonticon-cw"></i> Clone Document
+          </Button>
         </Modal.Footer>
       </Modal>
     );
diff --git a/app/addons/documents/doc-editor/components/DocEditorScreen.js b/app/addons/documents/doc-editor/components/DocEditorScreen.js
index f14c019..ce92346 100644
--- a/app/addons/documents/doc-editor/components/DocEditorScreen.js
+++ b/app/addons/documents/doc-editor/components/DocEditorScreen.js
@@ -12,7 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
-import ReactDOM from 'react-dom';
+import { Button } from 'react-bootstrap';
 import FauxtonAPI from '../../../../core/api';
 import FauxtonComponents from '../../../fauxton/components';
 import GeneralComponents from '../../../components/react-components';
@@ -166,22 +166,22 @@
 
         {this.props.conflictCount ? <PanelButton
           title={`Conflicts (${this.props.conflictCount})`}
-          iconClass="icon-columns"
+          iconClass="fonticon-columns"
           className="conflicts"
           disabled={this.props.isSaving}
           onClick={() => { FauxtonAPI.navigate(FauxtonAPI.urls('revision-browser', 'app', this.props.database.safeID(), this.props.doc.id));}}/> : null}
 
         <PanelButton className="upload"
           title="Upload Attachment"
-          iconClass="icon-circle-arrow-up"
+          iconClass="fonticon-up-circled"
           disabled={this.props.isSaving}
           onClick={this.props.showUploadModal} />
         <PanelButton title="Clone Document"
-          iconClass="icon-repeat"
+          iconClass="fonticon-cw"
           disabled={this.props.isSaving}
           onClick={this.props.showCloneDocModal} />
         <PanelButton title="Delete"
-          iconClass="icon-trash"
+          iconClass="fonticon-trash"
           disabled={this.props.isSaving}
           onClick={this.props.showDeleteDocModal} />
       </div>
@@ -195,17 +195,18 @@
     const endpoint = this.props.previousUrl ?
       this.props.previousUrl :
       FauxtonAPI.urls('allDocs', 'app', FauxtonAPI.url.encode(this.props.database.id));
-    let cancelBtClass = `js-back cancel-button ${this.props.isSaving ? 'cancel-button--disabled' : ''}`;
     return (
       <div>
         <div id="doc-editor-actions-panel">
           <div className="doc-actions-left">
-            <button disabled={this.props.isSaving} className="save-doc btn btn-primary save" type="button" onClick={this.saveDoc}>
-              <i className="icon fonticon-ok-circled"></i> {saveButtonLabel}
-            </button>
+            <Button id="save-doc-btn" disabled={this.props.isSaving} variant="cf-primary" onClick={this.saveDoc}>
+              <i className="fonticon-ok-circled"></i> {saveButtonLabel}
+            </Button>
             <div>
-              <a href={this.props.isSaving ? undefined : `#/${endpoint}`}
-                className={cancelBtClass}>Cancel</a>
+              <Button href={this.props.isSaving ? undefined : `#/${endpoint}`}
+                variant="cf-cancel" className="js-back cancel-button" disabled={this.props.isSaving}>
+                  Cancel
+              </Button>
             </div>
           </div>
           <div className="alignRight">
diff --git a/app/addons/documents/doc-editor/components/PanelButton.js b/app/addons/documents/doc-editor/components/PanelButton.js
index 682f9df..d1ebcb0 100644
--- a/app/addons/documents/doc-editor/components/PanelButton.js
+++ b/app/addons/documents/doc-editor/components/PanelButton.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
+import { Button } from 'react-bootstrap';
 
 export default class PanelButton extends React.Component {
   static propTypes = {
@@ -30,17 +31,16 @@
   };
 
   render() {
-    var iconClasses = 'icon ' + this.props.iconClass;
     return (
       <div className="panel-section">
-        <button className={`panel-button ${this.props.className}`}
-          title={this.props.title}
+        <Button variant='cf-secondary'
           onClick={this.props.onClick}
+          title={this.props.title}
+          className={this.props.className}
           disabled={this.props.disabled} >
-
-          <i className={iconClasses}></i>
+          <i className={this.props.iconClass}></i>
           <span>{this.props.title}</span>
-        </button>
+        </Button>
       </div>
     );
   }
diff --git a/app/addons/documents/doc-editor/components/UploadModal.js b/app/addons/documents/doc-editor/components/UploadModal.js
index eb907f5..18d9ece 100644
--- a/app/addons/documents/doc-editor/components/UploadModal.js
+++ b/app/addons/documents/doc-editor/components/UploadModal.js
@@ -13,7 +13,7 @@
 import PropTypes from 'prop-types';
 import React from 'react';
 import ReactDOM from 'react-dom';
-import { Modal } from 'react-bootstrap';
+import { Modal, Button, Form, ProgressBar } from 'react-bootstrap';
 
 
 export default class UploadModal extends React.Component {
@@ -29,6 +29,13 @@
     uploadAttachment: PropTypes.func.isRequired
   };
 
+  constructor (props) {
+    super(props);
+    this.state = {
+      isFileSelected: false,
+    };
+  }
+
   closeModal = (e) => {
     if (e) {
       e.preventDefault();
@@ -49,18 +56,28 @@
     });
   };
 
+  handleSelectedFile = (e) => {
+    this.attachments = e.target;
+    this.setState({
+      isFileSelected: this.attachments && this.attachments.files && this.attachments.files.length > 0
+    });
+  };
+
+
   render() {
     let errorClasses = 'alert alert-error';
     if (this.props.errorMessage === '') {
-      errorClasses += ' hide';
+      errorClasses += ' d-none';
     }
-    let loadIndicatorClasses = 'progress progress-info';
-    let disabledAttribute = {disabled: 'disabled'};
+
+    let loadIndicatorClasses = 'progress progress-info mt-3';
     if (!this.props.inProgress) {
-      loadIndicatorClasses += ' hide';
-      disabledAttribute = {};
+      loadIndicatorClasses += ' d-none';
     }
 
+    this.attachmentsRef = React.createRef();
+    const { isFileSelected } = this.state;
+
     return (
       <Modal dialogClassName="upload-file-modal" show={this.props.visible} onHide={this.closeModal}>
         <Modal.Header closeButton={true}>
@@ -69,25 +86,40 @@
         <Modal.Body>
           <div className={errorClasses}>{this.props.errorMessage}</div>
           <div>
-            <form ref={node => this.uploadForm = node} className="form">
-              <p>
-                Select a file to upload as an attachment to this document. Uploading a file saves the document as a new
-                revision.
-              </p>
-              <input ref={el => this.attachments = el} type="file" name="_attachments" {...disabledAttribute}/>
-              <br />
+            <form className="form">
+              <Form.Group>
+                <p>
+                  Select a file to upload as an attachment to this document. Uploading a file saves the document as a new
+                  revision.
+                </p>
+                <Form.Control
+                  onChange={this.handleSelectedFile}
+                  type="file"
+                  name="_attachments"
+                  disabled={this.props.inProgress}
+                />
+              </Form.Group>
             </form>
 
-            <div className={loadIndicatorClasses}>
-              <div className="bar" style={{ width: this.props.uploadPercentage + '%'}}></div>
-            </div>
+            <ProgressBar
+              id="upload-progress-bar"
+              now={this.props.uploadPercentage}
+              className={ loadIndicatorClasses }
+            />
           </div>
         </Modal.Body>
         <Modal.Footer>
-          <a href="#" data-bypass="true" className="cancel-link" onClick={this.closeModal}>Cancel</a>
-          <button href="#" id="upload-btn" data-bypass="true" className="btn btn-primary save" onClick={this.upload} {...disabledAttribute}>
-            <i className="icon icon-upload" /> Upload Attachment
-          </button>
+          <Button href="#" data-bypass="true" variant="cf-cancel" className="cancel-link" onClick={this.closeModal}>Cancel</Button>
+          <Button
+            id="upload-btn"
+            data-bypass="true"
+            variant="cf-primary"
+            onClick={this.upload}
+            disabled={this.props.inProgress || !isFileSelected}
+            type="button"
+          >
+            <i className="fonticon-up-circled" /> Upload Attachment
+          </Button>
         </Modal.Footer>
       </Modal>
     );
diff --git a/app/addons/documents/header/header.js b/app/addons/documents/header/header.js
index c481e23..fd13dd4 100644
--- a/app/addons/documents/header/header.js
+++ b/app/addons/documents/header/header.js
@@ -29,10 +29,10 @@
 
     let metadata, json, table;
     if (docType === Constants.INDEX_RESULTS_DOC_TYPE.VIEW) {
-      metadata = <Button
-        className={selectedLayout === Constants.LAYOUT_ORIENTATION.METADATA ? 'active' : ''}
+      metadata = <Button type="button"
+        active={selectedLayout === Constants.LAYOUT_ORIENTATION.METADATA}
         onClick={this.toggleLayout.bind(this, Constants.LAYOUT_ORIENTATION.METADATA)}
-      >
+        variant="cf-secondary">
           Metadata
       </Button>;
     } else if (docType === Constants.INDEX_RESULTS_DOC_TYPE.MANGO_INDEX) {
@@ -44,17 +44,17 @@
     const isAllDocsQuery = fetchUrl && fetchUrl.includes('/_all_docs');
     const isMangoQuery = docType === Constants.INDEX_RESULTS_DOC_TYPE.MANGO_QUERY;
     if (isAllDocsQuery || isMangoQuery || (!queryOptionsParams.reduce)) {
-      table = <Button
-        className={selectedLayout === Constants.LAYOUT_ORIENTATION.TABLE ? 'active' : ''}
+      table = <Button type="button"
+        active={selectedLayout === Constants.LAYOUT_ORIENTATION.TABLE}
         onClick={this.toggleLayout.bind(this, Constants.LAYOUT_ORIENTATION.TABLE)}
-      >
+        variant="cf-secondary">
         <i className="fonticon-table" /> Table
       </Button>;
 
-      json = <Button
-        className={selectedLayout === Constants.LAYOUT_ORIENTATION.JSON ? 'active' : ''}
+      json = <Button type="button"
+        active={selectedLayout === Constants.LAYOUT_ORIENTATION.JSON}
         onClick={this.toggleLayout.bind(this, Constants.LAYOUT_ORIENTATION.JSON)}
-      >
+        variant="cf-secondary">
         <i className="fonticon-json" /> JSON
       </Button>;
     }
diff --git a/app/addons/documents/helpers.js b/app/addons/documents/helpers.js
index 27623a9..5c5b888 100644
--- a/app/addons/documents/helpers.js
+++ b/app/addons/documents/helpers.js
@@ -78,7 +78,7 @@
   }, {
     title: 'Delete',
     icon: 'fonticon-trash',
-    onClick: ReactComponentsActions.showDeleteDatabaseModal.bind(this, {showDeleteModal: true, dbId: databaseName})
+    onClick: () => {ReactComponentsActions.showDeleteDatabaseModal({showDeleteModal: true, dbId: databaseName});}
   }];
 };
 
diff --git a/app/addons/documents/index-editor/__tests__/components.test.js b/app/addons/documents/index-editor/__tests__/components.test.js
index 33936d7..030e18f 100644
--- a/app/addons/documents/index-editor/__tests__/components.test.js
+++ b/app/addons/documents/index-editor/__tests__/components.test.js
@@ -82,7 +82,7 @@
         onSelectDesignDoc={spy}
       />);
 
-    selectorEl.find('.styled-select select').first().simulate('change', {
+    selectorEl.find('select#faux__edit-view__design-doc').first().simulate('change', {
       target: {
         value: '_design/test-doc'
       }
@@ -235,7 +235,7 @@
       changeViewName={spy}
     />);
 
-    editorEl.find('#index-name').simulate('change', {
+    editorEl.find('input#index-name').simulate('change', {
       target: {
         value: 'newViewName'
       }
diff --git a/app/addons/documents/index-editor/components.js b/app/addons/documents/index-editor/components.js
index 3cf69bd..0b816eb 100644
--- a/app/addons/documents/index-editor/components.js
+++ b/app/addons/documents/index-editor/components.js
@@ -10,18 +10,14 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import ReactComponents from '../../components/react-components';
 import DesignDocSelector from './components/DesignDocSelector';
 import IndexEditor from './components/IndexEditor';
 import IndexEditorContainer from './components/IndexEditorContainer';
 import ReduceEditor from './components/ReduceEditor';
 
-const StyledSelect = ReactComponents.StyledSelect;
-
 export default {
   IndexEditorContainer,
   IndexEditor,
   ReduceEditor,
-  DesignDocSelector,
-  StyledSelect
+  DesignDocSelector
 };
diff --git a/app/addons/documents/index-editor/components/DesignDocSelector.js b/app/addons/documents/index-editor/components/DesignDocSelector.js
index a524c32..9698366 100644
--- a/app/addons/documents/index-editor/components/DesignDocSelector.js
+++ b/app/addons/documents/index-editor/components/DesignDocSelector.js
@@ -12,10 +12,9 @@
 
 import PropTypes from 'prop-types';
 import React, { Component } from 'react';
+import { Form } from 'react-bootstrap';
 import FauxtonAPI from '../../../../core/api';
-import ReactComponents from '../../../components/react-components';
 
-const { StyledSelect } = ReactComponents;
 
 export default class DesignDocSelector extends Component {
 
@@ -59,13 +58,13 @@
       return;
     }
     return (
-      <div id="new-ddoc-section" className="span5">
+      <div id="new-ddoc-section" className={this.props.className}>
         <label className="control-label" htmlFor="new-ddoc">_design/</label>
-        <div className="controls">
-          <input type="text" id="new-ddoc" placeholder="newDesignDoc"
-            ref={(el) => { this.newDesignDocInput = el; }}
-            onChange={this.updateDesignDocName.bind(this)} />
-        </div>
+        <Form.Control type="text"
+          id="new-ddoc"
+          placeholder="newDesignDoc"
+          ref={(el) => { this.newDesignDocInput = el; }}
+          onChange={this.updateDesignDocName.bind(this)} />
       </div>
     );
   }
@@ -76,7 +75,7 @@
     }
     return (
       <a className="help-link" data-bypass="true" href={this.props.docLink} target="_blank" rel="noopener noreferrer">
-        <i className="icon-question-sign" />
+        <i className="fonticon-help-circled" />
       </a>
     );
   }
@@ -93,23 +92,20 @@
     const checked = isExistingDDoc ?
       this.props.selectedDesignDocPartitioned :
       this.props.newDesignDocPartitioned;
-    const labelClass = isExistingDDoc ? 'check--disabled' : '';
     const inputTitle = isExistingDDoc ?
       (this.props.selectedDesignDocPartitioned ? 'Design document is partitioned' : 'Design document is not partitioned') :
       (this.props.newDesignDocPartitioned ? 'New document will be partitioned' : 'New document will not be partitioned');
     return (
-      <div className="ddoc-selector-partitioned">
-        <label className={labelClass} title={inputTitle}>
-          <input
+      <div className="row">
+        <div className={"ddoc-selector-partitioned " + this.props.className}>
+          <Form.Check type="checkbox"
             id="js-ddoc-selector-partitioned"
-            type="checkbox"
             title={inputTitle}
+            label="Partitioned"
             checked={checked}
             onChange={this.onTogglePartitioned}
-            style={{margin: '0px 10px 0px 0px'}}
-            disabled={isExistingDDoc}/>
-          Partitioned
-        </label>
+            disabled={isExistingDDoc} />
+        </div>
       </div>
     );
   }
@@ -122,21 +118,26 @@
       </optgroup>;
 
     return (
-      <div className="design-doc-group control-group">
-        <div className="span3">
-          <label htmlFor="ddoc">{this.props.designDocLabel}
-            {this.getDocLink()}
-          </label>
-          <StyledSelect
-            selectChange={this.selectDesignDoc.bind(this)}
-            selectValue={this.props.selectedDesignDocName}
-            selectId={"faux__edit-view__design-doc"}
-            selectContent={selectContent}
-          />
+      <>
+        <div className="row">
+          <div className={this.props.className}>
+            <label htmlFor="ddoc">{this.props.designDocLabel}
+              {this.getDocLink()}
+            </label>
+            <Form.Select
+              onChange={this.selectDesignDoc.bind(this)}
+              value={this.props.selectedDesignDocName}
+              id="faux__edit-view__design-doc"
+            >
+              {selectContent}
+            </Form.Select>
+          </div>
+
+
+          {this.getNewDDocField()}
         </div>
-        {this.getNewDDocField()}
         {this.getPartitionedCheckbox()}
-      </div>
+      </>
     );
   }
 }
@@ -144,7 +145,8 @@
 DesignDocSelector.defaultProps = {
   designDocLabel: 'Design Document',
   selectedDesignDocName: '',
-  newDesignDocName: ''
+  newDesignDocName: '',
+  className: 'mb-3 col-12 col-lg-6 col-xxl-4'
 };
 
 DesignDocSelector.propTypes = {
diff --git a/app/addons/documents/index-editor/components/IndexEditor.js b/app/addons/documents/index-editor/components/IndexEditor.js
index 1ffafae..dd01627 100644
--- a/app/addons/documents/index-editor/components/IndexEditor.js
+++ b/app/addons/documents/index-editor/components/IndexEditor.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React, { Component } from 'react';
+import { Button, Form } from 'react-bootstrap';
 import app from '../../../../app';
 import FauxtonAPI from '../../../../core/api';
 import ReactComponents from '../../../components/react-components';
@@ -137,41 +138,46 @@
               docLink={getDocUrl('DESIGN_DOCS')} />
           </div>
 
-          <div className="control-group">
-            <label htmlFor="index-name">
-              <span>Index name</span>
-              <a
-                className="help-link"
-                data-bypass="true"
-                href={getDocUrl('VIEW_FUNCS')}
-                target="_blank"
-                rel="noopener noreferrer">
-                <i className="icon-question-sign"></i>
-              </a>
-            </label>
-            <input
-              type="text"
-              id="index-name"
-              value={this.props.viewName}
-              onChange={this.viewChange}
-              placeholder="Index name" />
+          <div className="row">
+            <div className="mb-3 col-12 col-lg-6 col-xxl-4">
+              <label htmlFor="index-name">
+                <span>Index name</span>
+                <a
+                  className="help-link"
+                  data-bypass="true"
+                  href={getDocUrl('VIEW_FUNCS')}
+                  target="_blank"
+                  rel="noopener noreferrer">
+                  <i className="fonticon-help-circled"></i>
+                </a>
+              </label>
+              <Form.Control type="text"
+                id="index-name"
+                value={this.props.viewName}
+                onChange={this.viewChange}
+                placeholder="Index name" />
+            </div>
           </div>
-          <CodeEditorPanel
-            id={'map-function'}
-            ref={(el) => { this.mapEditor = el; }}
-            title={"Map function"}
-            docLink={getDocUrl('MAP_FUNCS')}
-            blur={this.updateMapCode}
-            allowZenMode={false}
-            defaultCode={this.props.map} />
+
+          <div className="mb-3">
+            <CodeEditorPanel
+              id={'map-function'}
+              ref={(el) => { this.mapEditor = el; }}
+              title={"Map function"}
+              docLink={getDocUrl('MAP_FUNCS')}
+              blur={this.updateMapCode}
+              allowZenMode={false}
+              defaultCode={this.props.map} />
+          </div>
+
           <ReduceEditor
             ref={(el) => { this.reduceEditor = el; }}
             customReducerSupported={this.isCustomReduceSupported()}
             {...this.props} />
-          <div className="padded-box">
-            <div className="control-group">
+          <div className="row mt-3">
+            <div className="col-12">
               <ConfirmButton id="save-view" text={btnLabel} />
-              <a href={this.getCancelLink()} className="index-cancel-link">Cancel</a>
+              <Button href={this.getCancelLink()} variant="cf-cancel" className="index-cancel-link">Cancel</Button>
             </div>
           </div>
         </form>
diff --git a/app/addons/documents/index-editor/components/ReduceEditor.js b/app/addons/documents/index-editor/components/ReduceEditor.js
index 2520576..5ee6085 100644
--- a/app/addons/documents/index-editor/components/ReduceEditor.js
+++ b/app/addons/documents/index-editor/components/ReduceEditor.js
@@ -14,9 +14,10 @@
 import React, { Component } from 'react';
 import app from '../../../../app';
 import ReactComponents from '../../../components/react-components';
+import Form from 'react-bootstrap/Form';
 
 const getDocUrl = app.helpers.getDocUrl;
-const {CodeEditorPanel, StyledSelect} = ReactComponents;
+const {CodeEditorPanel} = ReactComponents;
 
 export default class ReduceEditor extends Component {
 
@@ -76,8 +77,8 @@
     }
 
     return (
-      <div>
-        <div className="control-group">
+      <div className="row">
+        <div className="mb-3 col-12 col-lg-6 col-xxl-4">
           <label htmlFor="reduce-function-selector">
             <span>Reduce (optional)</span>
             <a
@@ -87,14 +88,16 @@
               target="_blank"
               rel="noopener noreferrer"
             >
-              <i className="icon-question-sign"></i>
+              <i className="fonticon-help-circled"></i>
             </a>
           </label>
-          <StyledSelect
-            selectContent={reduceOptions}
-            selectChange={this.selectChange.bind(this)}
-            selectId="reduce-function-selector"
-            selectValue={this.props.reduceSelectedOption} />
+          <Form.Select
+            onChange={this.selectChange.bind(this)}
+            id="reduce-function-selector"
+            value={this.props.reduceSelectedOption}
+          >
+            {reduceOptions}
+          </Form.Select>
         </div>
         {customReduceSection}
       </div>
diff --git a/app/addons/documents/index-results/components/pagination/PagingControls.js b/app/addons/documents/index-results/components/pagination/PagingControls.js
index 4be683e..cb6fc75 100644
--- a/app/addons/documents/index-results/components/pagination/PagingControls.js
+++ b/app/addons/documents/index-results/components/pagination/PagingControls.js
@@ -29,11 +29,11 @@
   return (
     <div className="documents-pagination">
       <ul className="pagination">
-        <li className={canShowPreviousClassName} >
-          <a id="previous" onClick={previousClicked} className="icon fonticon-left-open" href="#" data-bypass="true"></a>
+        <li className={'page-item ' + canShowPreviousClassName} >
+          <a id="previous" onClick={previousClicked} className="page-link fonticon-left-open" href="#" data-bypass="true"></a>
         </li>
-        <li className={canShowNextClassName} >
-          <a id="next" onClick={nextClicked} className="icon fonticon-right-open" href="#" data-bypass="true"></a>
+        <li className={'page-item ' + canShowNextClassName} >
+          <a id="next" onClick={nextClicked} className="page-link fonticon-right-open" href="#" data-bypass="true"></a>
         </li>
       </ul>
     </div>
diff --git a/app/addons/documents/index-results/components/pagination/PerPageSelector.js b/app/addons/documents/index-results/components/pagination/PerPageSelector.js
index 97373f6..058b973 100644
--- a/app/addons/documents/index-results/components/pagination/PerPageSelector.js
+++ b/app/addons/documents/index-results/components/pagination/PerPageSelector.js
@@ -35,7 +35,7 @@
       <div id="per-page">
         <label htmlFor="select-per-page" className="drop-down inline">
           {this.props.label} &nbsp;
-          <select id="select-per-page" onChange={this.perPageChange.bind(this)} value={this.props.perPage.toString()} className="input-small">
+          <select id="select-per-page" onChange={this.perPageChange.bind(this)} value={this.props.perPage.toString()} className="form-select form-select-sm">
             {this.getOptions()}
           </select>
         </label>
diff --git a/app/addons/documents/index-results/components/pagination/TableControls.js b/app/addons/documents/index-results/components/pagination/TableControls.js
index 58a5740..c104e5a 100644
--- a/app/addons/documents/index-results/components/pagination/TableControls.js
+++ b/app/addons/documents/index-results/components/pagination/TableControls.js
@@ -24,14 +24,14 @@
 
     if (fields.shown === fields.allFieldCount) {
       return (
-        <div className="pull-left shown-fields">
+        <div className="float-start shown-fields">
           Showing {fields.shown} columns.
         </div>
       );
     }
 
     return (
-      <div className="pull-left shown-fields">
+      <div className="float-start shown-fields">
         Showing {fields.shown} of {fields.allFieldCount} columns.
       </div>
     );
@@ -43,7 +43,7 @@
     return (
       <div className="footer-table-control">
         {this.getAmountShownFields()}
-        <div className="footer-doc-control-prioritized-wrapper pull-left">
+        <div className="footer-doc-control-prioritized-wrapper float-start">
           <label htmlFor="footer-doc-control-prioritized">
             <input
               id="footer-doc-control-prioritized"
diff --git a/app/addons/documents/index-results/components/queryoptions/AdditionalParams.js b/app/addons/documents/index-results/components/queryoptions/AdditionalParams.js
index 48f09b9..9e59fcc 100644
--- a/app/addons/documents/index-results/components/queryoptions/AdditionalParams.js
+++ b/app/addons/documents/index-results/components/queryoptions/AdditionalParams.js
@@ -12,6 +12,7 @@
 
 import React from 'react';
 import FauxtonAPI from '../../../../../core/api';
+import Form from 'react-bootstrap/Form';
 
 export default class AdditionalParams extends React.Component {
   updateSkip (e) {
@@ -41,38 +42,58 @@
 
   render () {
     return (
-      <div className="query-group" id="query-options-additional-params">
-        <div className="add-on additionalParams">Additional Parameters</div>
-        <div className="row-fluid fieldsets">
-          <div className="dropdown inline">
-            <label className="drop-down">
-              Limit
-              <select id="qoLimit" onChange={this.updateLimit.bind(this)} name="limit" value={this.props.limit} className="input-small">
-                <option value="none">None</option>
-                <option value={5}>5</option>
-                <option value={10}>10</option>
-                <option value={20}>20</option>
-                <option value={30}>30</option>
-                <option value={50}>50</option>
-                <option value={100}>100</option>
-                <option value={500}>500</option>
-              </select>
-            </label>
+      <>
+        <div className="row m-2 mt-0 mb-3">
+          <div className="col-12">
+            <h5>Additional Parameters</h5>
           </div>
         </div>
-        <div className="row-fluid fieldsets">
-          <div className="checkbox inline">
-            <input id="qoDescending" type="checkbox" onChange={this.toggleDescending.bind(this)} checked={this.props.descending} />
-            <label htmlFor="qoDescending">Descending</label>
+        <div className='row m-2 mt-0 mb-3'>
+          <div className="col-auto">
+            <label htmlFor="qoLimit" className="col-form-label">Limit</label>
           </div>
-          <div className="dropdown inline">
-            <label htmlFor="qoSkip" className="drop-down">
-              Skip
-              <input value={this.props.skip} onChange={this.updateSkip.bind(this)} className="input-small" type="number" id="qoSkip" placeholder="# of rows" />
-            </label>
+          <div className="col">
+            <Form.Select
+              id="qoLimit"
+              onChange={this.updateLimit.bind(this)}
+              value={this.props.limit}
+            >
+              <option value="none">None</option>
+              <option value={5}>5</option>
+              <option value={10}>10</option>
+              <option value={20}>20</option>
+              <option value={30}>30</option>
+              <option value={50}>50</option>
+              <option value={100}>100</option>
+              <option value={500}>500</option>
+            </Form.Select>
+          </div>
+          <div className="col-auto">
+            <label htmlFor="qoSkip" className="col-form-label">Skip</label>
+          </div>
+          <div className="col">
+            <Form.Control
+              id="qoSkip"
+              type="number"
+              value={this.props.skip}
+              placeholder="# of rows"
+              onChange={this.updateSkip.bind(this)}
+            />
           </div>
         </div>
-      </div>
+
+        <div className='row m-2 mt-0 mb-3'>
+          <div className="col-6">
+            <Form.Check
+              id="qoDescending"
+              label="Descending"
+              onChange={this.toggleDescending.bind(this)}
+              checked={this.props.descending}
+              type="checkbox"
+            />
+          </div>
+        </div>
+      </>
     );
   }
 }
diff --git a/app/addons/documents/index-results/components/queryoptions/KeySearchFields.js b/app/addons/documents/index-results/components/queryoptions/KeySearchFields.js
index 1fb2f90..aef4d0e 100644
--- a/app/addons/documents/index-results/components/queryoptions/KeySearchFields.js
+++ b/app/addons/documents/index-results/components/queryoptions/KeySearchFields.js
@@ -12,6 +12,7 @@
 
 import React from 'react';
 import ReactDOM from 'react-dom';
+import {Form, ButtonGroup, ToggleButton} from 'react-bootstrap';
 
 export default class KeySearchFields extends React.Component {
   constructor (props) {
@@ -47,15 +48,10 @@
   }
 
   render () {
-    let keysGroupClass = 'controls-group well js-query-keys-wrapper ';
-    let byKeysClass = 'row-fluid js-keys-section ';
-    let betweenKeysClass = byKeysClass;
-    let byKeysButtonClass = 'drop-down btn ';
-    let betweenKeysButtonClass = byKeysButtonClass;
-
-    if (!this.props.showByKeys && !this.props.showBetweenKeys) {
-      keysGroupClass += 'hide';
-    }
+    let betweenKeysClass = 'row-fluid js-keys-section ';
+    let byKeysClass = betweenKeysClass;
+    let betweenKeysButtonClass = 'drop-down btn ';
+    let byKeysButtonClass = betweenKeysButtonClass;
 
     if (!this.props.showByKeys) {
       byKeysClass += 'hide';
@@ -70,57 +66,87 @@
     }
 
     return (
-      <div className="query-group" id="query-options-key-search">
-        <div className="add-on">Keys</div>
-        <div className="btn-group toggle-btns row-fluid">
-          <label style={{width: '101px'}} id="byKeys" onClick={this.toggleByKeys.bind(this)} className={byKeysButtonClass}>By Key(s)</label>
-          <label style={{width: '101px'}} id="betweenKeys" onClick={this.toggleBetweenKeys.bind(this)} className={betweenKeysButtonClass}>Between Keys</label>
+      <div className="row m-2 mt-0">
+        <div className="col-12 mb-3">
+          <h5>Keys</h5>
         </div>
+        <div className="col-12 mb-3">
+          <ButtonGroup>
+            <ToggleButton
+              id="byKeys"
+              type="checkbox"
+              variant="cf-secondary"
+              onClick={this.toggleByKeys.bind(this)}
+              className={byKeysButtonClass}
+            >
+              By Key(s)
+            </ToggleButton>
 
-        <div className={keysGroupClass}>
+            <ToggleButton
+              id="betweenKeys"
+              type="checkbox"
+              variant="cf-secondary"
+              onClick={this.toggleBetweenKeys.bind(this)}
+              className={betweenKeysButtonClass}
+            >
+              Between Keys
+            </ToggleButton>
+          </ButtonGroup>
+        </div>
+        <div className="col-12">
           <div className={byKeysClass} id="js-showKeys">
-            <div className="controls controls-row">
-              <label htmlFor="keys-input" className="drop-down">A key, or an array of keys.</label>
-              <textarea value={this.props.byKeys} onChange={this.updateByKeys.bind(this)} id="keys-input" className="input-xxlarge" rows="5" type="text"
-                placeholder='Enter either a single key ["123"] or an array of keys ["123", "456"]. A key value is the first parameter emitted in a map function. For example emit("123", 1) the key is "123".'></textarea>
-              <div id="keys-error" className="inline-block js-keys-error"></div>
-            </div>
+            <label htmlFor="keys-input" className="form-label">A key, or an array of keys</label>
+            <Form.Control
+              value={this.props.byKeys}
+              onChange={this.updateByKeys.bind(this)}
+              id="keys-input"
+              className="form-control"
+              rows="5"
+              as="textarea"
+              placeholder='Enter either a single key ["123"] or an array of keys ["123", "456"]. A key value is the first parameter emitted in a map function. For example emit("123", 1) the key is "123".'
+            />
           </div>
 
           <div className={betweenKeysClass} id="js-showStartEnd">
-            <div className="controls controls-row">
-              <div>
-                <label htmlFor="startkey" className="drop-down">Start key</label>
-                <input
+            <div className="row">
+              <div className="col-12">
+                <label htmlFor="startkey" className="form-label">Start key</label>
+                <Form.Control
                   id="startkey"
                   ref={node => this.startkey = node}
                   type="text"
                   onChange={this.updateBetweenKeys.bind(this)}
                   value={this.props.betweenKeys.startkey}
-                  placeholder='e.g., "1234"' />
+                  placeholder='e.g., "1234"'
+                />
               </div>
-              <div>
-                <label htmlFor="endkey" className="drop-down">End key</label>
-                <input
+            </div>
+            <div className="row mt-2">
+              <div className="col-12">
+                <label htmlFor="endkey" className="form-label">End key</label>
+                <Form.Control
                   id="endkey"
                   ref={node => this.endkey = node}
+                  type="text"
                   onChange={this.updateBetweenKeys.bind(this)}
                   value={this.props.betweenKeys.endkey}
-                  type="text"
-                  placeholder='e.g., "1234"'/>
-                <div className="controls include-end-key-row checkbox controls-row inline">
-                  <input
-                    id="qoIncludeEndKeyInResults"
-                    type="checkbox"
-                    onChange={this.updateInclusiveEnd.bind(this)}
-                    checked={this.props.betweenKeys.include}/>
-                  <label htmlFor="qoIncludeEndKeyInResults">Include End Key in results</label>
-                </div>
+                  placeholder='e.g., "1234"'
+                />
+              </div>
+            </div>
+            <div className="row mt-2">
+              <div className="col-12">
+                <Form.Check
+                  id="qoIncludeEndKeyInResults"
+                  label="Include end key in results"
+                  onChange={this.updateInclusiveEnd.bind(this)}
+                  checked={this.props.betweenKeys.include}
+                  type="checkbox"
+                />
               </div>
             </div>
           </div>
         </div>
-
       </div>
     );
   }
diff --git a/app/addons/documents/index-results/components/queryoptions/MainFieldsView.js b/app/addons/documents/index-results/components/queryoptions/MainFieldsView.js
index 179acf7..d4e9b0e 100644
--- a/app/addons/documents/index-results/components/queryoptions/MainFieldsView.js
+++ b/app/addons/documents/index-results/components/queryoptions/MainFieldsView.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
+import Form from 'react-bootstrap/Form';
 
 export default class MainFieldsView extends React.Component {
   constructor(props) {
@@ -45,23 +46,32 @@
     }
 
     return (
-      <label className="drop-down inline" id="qoGroupLevelGroup">
-          Group Level
-        <select onChange={this.groupLevelChange.bind(this)} id="qoGroupLevel" value={this.props.groupLevel}
-          name="group_level" className="input-small">
-          <option value="0">None</option>
-          <option value="1">1</option>
-          <option value="2">2</option>
-          <option value="3">3</option>
-          <option value="4">4</option>
-          <option value="5">5</option>
-          <option value="6">6</option>
-          <option value="7">7</option>
-          <option value="8">8</option>
-          <option value="9">9</option>
-          <option value="exact">Exact</option>
-        </select>
-      </label>
+      <div className="col-6 mb-2">
+        <div className="row">
+          <div className="col-auto">
+            <label id="qoGroupLevelGroup" htmlFor="qoLimit" className="col-form-label">Group Level</label>
+          </div>
+          <div className="col-auto">
+            <Form.Select
+              id="qoGroupLevel"
+              onChange={this.groupLevelChange.bind(this)}
+              value={this.props.groupLevel}
+            >
+              <option value="0">None</option>
+              <option value="1">1</option>
+              <option value="2">2</option>
+              <option value="3">3</option>
+              <option value="4">4</option>
+              <option value="5">5</option>
+              <option value="6">6</option>
+              <option value="7">7</option>
+              <option value="8">8</option>
+              <option value="9">9</option>
+              <option value="exact">Exact</option>
+            </Form.Select>
+          </div>
+        </div>
+      </div>
     );
   }
 
@@ -76,11 +86,15 @@
   includeDocsOption() {
     const {includeDocs, reduce} = this.props;
     return (
-      <div className="checkbox inline">
-        <input disabled={reduce} onChange={this.toggleIncludeDocs} id="qoIncludeDocs"
-          name="include_docs" type="checkbox" checked={includeDocs}/>
-        <label className={reduce ? 'disabled' : ''} htmlFor="qoIncludeDocs" id="qoIncludeDocsLabel">Include
-            Docs</label>
+      <div className="col-12">
+        <Form.Check
+          id="qoIncludeDocs"
+          disabled={reduce}
+          label="Include Docs"
+          onChange={this.toggleIncludeDocs}
+          checked={includeDocs}
+          type="checkbox"
+        />
       </div>
     );
   }
@@ -92,14 +106,18 @@
     }
 
     return (
-      <span>
-        <div className="checkbox inline">
-          <input id="qoReduce" name="reduce" onChange={this.toggleReduce.bind(this)} type="checkbox"
-            checked={reduce}/>
-          <label htmlFor="qoReduce">Reduce</label>
+      <React.Fragment>
+        <div className="col-6">
+          <Form.Check
+            id="qoReduce"
+            label="Reduce"
+            onChange={this.toggleReduce.bind(this)}
+            checked={reduce}
+            type="checkbox"
+          />
         </div>
         {this.groupLevel()}
-      </span>
+      </React.Fragment>
     );
   }
 
@@ -112,11 +130,18 @@
     }
 
     return (
-      <div className="checkbox inline">
-        <input onChange={this.toggleStable} id="qoStable" name="stable"
-          type="checkbox" checked={stable} disabled={!enableStable}/>
-        <label className={enableStable ? '' : 'disabled'} htmlFor="qoStable" id="qoStableLabel">Stable</label>
-      </div>
+      <React.Fragment>
+        <div className="col-6">
+          <Form.Check
+            id="qoStable"
+            label="Stable"
+            onChange={this.toggleStable}
+            checked={stable}
+            type="checkbox"
+            disabled={!enableStable}
+          />
+        </div>
+      </React.Fragment>
     );
   }
 
@@ -126,33 +151,49 @@
       return <option key={option.value} value={option.value}>{option.label}</option>;
     });
     return (
-      <div className="dropdown inline">
-        <label className="drop-down">
-          Update
-          <select className="input-small" id="qoUpdate" value={update} onChange={this.onUpdateChange}>
-            {selectOptions}
-          </select>
-        </label>
-      </div>
+      <React.Fragment>
+        <div className="col-6">
+          <div className="row">
+            <div className="col-auto">
+              <label htmlFor="qoUpdate" className="col-form-label">Update</label>
+            </div>
+            <div className="col-auto">
+              <Form.Select
+                id="qoUpdate"
+                onChange={this.onUpdateChange}
+                value={update}
+              >
+                {selectOptions}
+              </Form.Select>
+            </div>
+          </div>
+        </div>
+      </React.Fragment>
     );
   }
 
   render() {
     return (
-      <div className="query-group" id="query-options-main-fields">
-        <span className="add-on">
-          Query Options
-          <a className="help-link" href={this.props.docURL} target="_blank" rel="noopener noreferrer" data-bypass="true">
-            <i className="icon-question-sign"/>
-          </a>
-        </span>
-        <div className="row-fluid fieldsets">
-          {this.includeDocsOption()}
-          {this.reduceOption()}
+      <div className="row m-2">
+        <div className="col-12">
+          <h5>
+            Query Options
+            <a className="help-link ms-1" href={this.props.docURL} target="_blank" rel="noopener noreferrer" data-bypass="true">
+              <i className="fonticon-help-circled"/>
+            </a>
+          </h5>
         </div>
-        <div className="row-fluid fieldsets">
-          {this.stableOption()}
-          {this.updateOption()}
+        <div className="col-12">
+          <div className="row align-items-center">
+            {this.includeDocsOption()}
+            {this.reduceOption()}
+          </div>
+        </div>
+        <div className="col-12">
+          <div className="row align-items-center">
+            {this.stableOption()}
+            {this.updateOption()}
+          </div>
         </div>
       </div>
     );
diff --git a/app/addons/documents/index-results/components/queryoptions/QueryButtons.js b/app/addons/documents/index-results/components/queryoptions/QueryButtons.js
index 712f79a..7111ae5 100644
--- a/app/addons/documents/index-results/components/queryoptions/QueryButtons.js
+++ b/app/addons/documents/index-results/components/queryoptions/QueryButtons.js
@@ -13,22 +13,27 @@
 import PropTypes from 'prop-types';
 
 import React from 'react';
+import { Button } from 'react-bootstrap';
 
 export default class QueryButtons extends React.Component {
   constructor (props) {
     super(props);
+    this.hideTray = this.hideTray.bind(this);
   }
 
-  hideTray () {
+  hideTray (ev) {
+    if (ev && ev.preventDefault) {
+      ev.preventDefault();
+    }
     this.props.onCancel();
   }
 
   render () {
     return (
-      <div className="controls-group query-group">
-        <div id="button-options" className="controls controls-row">
-          <button type="submit" className="btn btn-secondary">Run Query</button>
-          <a onClick={this.hideTray.bind(this)} className="btn btn-cancelDark">Cancel</a>
+      <div className="row mx-2 mb-3 mt-0 text-end">
+        <div id="button-options" className="col">
+          <Button href="#" data-bypass="true" variant="cf-cancel" onClick={this.hideTray}>Cancel</Button>
+          <Button type="submit" variant="cf-primary">Run Query</Button>
         </div>
       </div>
     );
diff --git a/app/addons/documents/index-results/components/queryoptions/QueryOptions.js b/app/addons/documents/index-results/components/queryoptions/QueryOptions.js
index 3c63c92..b52e13e 100644
--- a/app/addons/documents/index-results/components/queryoptions/QueryOptions.js
+++ b/app/addons/documents/index-results/components/queryoptions/QueryOptions.js
@@ -103,7 +103,7 @@
         className="query-options" id="query-options-tray"
         container={this}>
 
-        <form onSubmit={this.executeQuery.bind(this)} className="js-view-query-update custom-inputs">
+        <form onSubmit={this.executeQuery.bind(this)} id="query-options_js-view-query-update">
           <MainFieldsView
             includeDocs={this.props.includeDocs}
             toggleIncludeDocs={this.props.queryOptionsToggleIncludeDocs}
@@ -119,6 +119,7 @@
             update={this.props.update}
             changeUpdateField={this.props.queryOptionsChangeUpdate}
           />
+          <hr />
           <KeySearchFields
             key={1}
             showByKeys={this.props.showByKeys}
@@ -129,6 +130,7 @@
             updateBetweenKeys={this.props.queryOptionsUpdateBetweenKeys}
             byKeys={this.props.byKeys}
             updateByKeys={this.props.queryOptionsUpdateByKeys} />
+          <hr />
           <AdditionalParams
             descending={this.props.descending}
             toggleDescending={this.props.queryOptionsToggleDescending}
@@ -136,6 +138,7 @@
             updateSkip={this.props.queryOptionsUpdateSkip}
             updateLimit={this.props.queryOptionsUpdateLimit}
             limit={this.props.limit} />
+          <hr />
           <QueryButtons onCancel={this.closeTray.bind(this)} />
         </form>
       </TrayContents>
diff --git a/app/addons/documents/index-results/components/results/TableRow.js b/app/addons/documents/index-results/components/results/TableRow.js
index aec28b8..4a7d962 100644
--- a/app/addons/documents/index-results/components/results/TableRow.js
+++ b/app/addons/documents/index-results/components/results/TableRow.js
@@ -17,6 +17,7 @@
 import FauxtonAPI from '../../../../../core/api';
 import Components from '../../../../components/react-components';
 import Constants from '../../../constants';
+import Form from 'react-bootstrap/Form';
 
 const { Copy } = Components;
 
@@ -64,11 +65,12 @@
   maybeGetCheckboxCell (el, i) {
     return (
       <td className="tableview-checkbox-cell" key={"tableview-checkbox-cell-" + i}>
-        {el.isDeletable ? <input
+        {el.isDeletable ? <Form.Check
           id={"checkbox-" + this.props.docIdentifier}
           checked={this.props.isSelected}
           type="checkbox"
-          onChange={this.onChange.bind(this)} /> : null}
+          onChange={this.onChange.bind(this)}
+        /> : null}
       </td>
     );
   }
@@ -78,7 +80,7 @@
     let attachmentIndicator = null;
     let textAttachments = null;
 
-    const conflictCount = Object.keys(el._conflicts || {}).length;
+    let conflictCount = Object.keys(el._conflicts || {}).length;
     let conflictIndicator = null;
     let textConflicts = null;
 
@@ -97,8 +99,7 @@
       conflictIndicator = (
         <div className="tableview-conflict" data-conflicts-indicator style={{display: 'inline'}} title={textConflicts}>
           <i
-            style={{fontSize: '17px'}}
-            className="icon icon-code-fork"></i>{conflictCount}
+            className="fonticon-code-branch"></i>{conflictCount}
         </div>
       );
     }
diff --git a/app/addons/documents/index-results/reducers.js b/app/addons/documents/index-results/reducers.js
index 817ae6e..838dbc8 100644
--- a/app/addons/documents/index-results/reducers.js
+++ b/app/addons/documents/index-results/reducers.js
@@ -43,7 +43,7 @@
   },
   queryOptionsPanel: {
     isVisible: false,
-    showByKeys: false,
+    showByKeys: true,
     showBetweenKeys: false,
     includeDocs: false,
     betweenKeys: {
diff --git a/app/addons/documents/layouts.js b/app/addons/documents/layouts.js
index 9c39f13..ab4ec4e 100644
--- a/app/addons/documents/layouts.js
+++ b/app/addons/documents/layouts.js
@@ -73,7 +73,7 @@
           <div style={{flex:1, padding: '18px 6px 12px 12px'}}>
             {partKeySelector}
           </div>
-          <div id="right-header" className="flex-fill">
+          <div id="right-header">
             <RightAllDocsHeader
               hideQueryOptions={hideQueryOptions}
               hideJumpToDoc={hideJumpToDoc}
@@ -85,7 +85,7 @@
               selectedNavItem={selectedNavItem} />
           </div>
           <ApiBarContainer docURL={docURL} endpoint={endpoint} endpointAddQueryOptions={endpointAddQueryOptions} />
-          <div id="notification-center-btn" className="flex-fill">
+          <div id="notification-center-btn">
             <NotificationCenterButton />
           </div>
         </div>
diff --git a/app/addons/documents/mango/__tests__/mango.components.test.js b/app/addons/documents/mango/__tests__/mango.components.test.js
index 738add6..f4a575f 100644
--- a/app/addons/documents/mango/__tests__/mango.components.test.js
+++ b/app/addons/documents/mango/__tests__/mango.components.test.js
@@ -222,7 +222,7 @@
       />
     );
 
-    wrapper.find('#explain-btn').simulate('click', { preventDefault: () => {} });
+    wrapper.find('button#explain-btn').simulate('click', { preventDefault: () => {} });
     sinon.assert.called(runExplainQueryStub);
     const { partitionKey } = runExplainQueryStub.firstCall.args[0];
     expect(partitionKey).toBe('part1');
diff --git a/app/addons/documents/mango/components/ExplainPage.js b/app/addons/documents/mango/components/ExplainPage.js
index cf44918..927780f 100644
--- a/app/addons/documents/mango/components/ExplainPage.js
+++ b/app/addons/documents/mango/components/ExplainPage.js
@@ -25,7 +25,7 @@
 
   render () {
     return (
-      <div>
+      <div id="explain-plan-wrapper">
         <pre className="prettyprint">{JSON.stringify(this.props.explainPlan, null, ' ')}</pre>
       </div>
     );
diff --git a/app/addons/documents/mango/components/MangoIndexEditor.js b/app/addons/documents/mango/components/MangoIndexEditor.js
index 28ba57d..a53fc94 100644
--- a/app/addons/documents/mango/components/MangoIndexEditor.js
+++ b/app/addons/documents/mango/components/MangoIndexEditor.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React, { Component } from 'react';
+import { Button } from 'react-bootstrap';
 import ReactSelect from 'react-select';
 import '../../../../../assets/js/plugins/prettify';
 import app from '../../../../app';
@@ -20,7 +21,6 @@
 
 const PaddedBorderedBox = ReactComponents.PaddedBorderedBox;
 const CodeEditorPanel = ReactComponents.CodeEditorPanel;
-const ConfirmButton = ReactComponents.ConfirmButton;
 const LoadLines = ReactComponents.LoadLines;
 const getDocUrl = app.helpers.getDocUrl;
 
@@ -120,9 +120,13 @@
             {this.partitionedCheckobx()}
           </PaddedBorderedBox>
           <div className="padded-box">
-            <div className="control-group">
-              <ConfirmButton text="Create index" id="create-index-btn" showIcon={false} />
-              <a className="edit-link" href={editQueryURL}>edit query</a>
+            <div className="actions-panel">
+              <Button variant="cf-primary" className="btn-space" id="create-index-btn" onClick={this.saveIndex}>
+              Create Index
+              </Button>
+              <div className="right-side-actions">
+                <Button variant="cf-secondary" className="edit-link" href={editQueryURL}>Edit Query</Button>
+              </div>
             </div>
           </div>
         </form>
diff --git a/app/addons/documents/mango/components/MangoQueryEditor.js b/app/addons/documents/mango/components/MangoQueryEditor.js
index a702955..eb005fb 100644
--- a/app/addons/documents/mango/components/MangoQueryEditor.js
+++ b/app/addons/documents/mango/components/MangoQueryEditor.js
@@ -11,8 +11,8 @@
 // the License.
 
 import PropTypes from 'prop-types';
-
 import React, { Component } from "react";
+import { Button } from 'react-bootstrap';
 import ReactSelect from "react-select";
 import "../../../../../assets/js/plugins/prettify";
 import app from "../../../../app";
@@ -100,11 +100,13 @@
               defaultCode={this.props.queryFindCode} />
           </PaddedBorderedBox>
           <div className="padded-box">
-            <div className="control-group">
-              <button type="submit" id="create-index-btn" className="btn btn-primary btn-space">Run Query</button>
-              <button type="button" id="explain-btn" className="btn btn-secondary btn-space"
-                onClick={(ev) => {this.runExplain(ev);} }>Explain</button>
-              <a className="edit-link" style={{} } onClick={(ev) => {this.manageIndexes(ev);}}>manage indexes</a>
+            <div className="actions-panel">
+              <Button type="submit" id="create-index-btn" variant="cf-primary" className="btn-space">Run Query</Button>
+              <Button type="button" id="explain-btn" variant="cf-secondary" className="btn-space"
+                onClick={(ev) => {this.runExplain(ev);} }>Explain</Button>
+              <div className="right-side-actions">
+                <Button variant="cf-secondary" className="edit-link" onClick={(ev) => {this.manageIndexes(ev);}}>Manage Indexes</Button>
+              </div>
             </div>
             <div>
               <ExecutionStats {...this.props} />
diff --git a/app/addons/documents/partition-key/PartitionKeySelector.js b/app/addons/documents/partition-key/PartitionKeySelector.js
index 1230bde..24129d2 100644
--- a/app/addons/documents/partition-key/PartitionKeySelector.js
+++ b/app/addons/documents/partition-key/PartitionKeySelector.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
+import { Form } from 'react-bootstrap';
 
 export default class PartitionKeySelector extends React.Component {
 
@@ -77,15 +78,14 @@
   globalHeader() {
     return (
       <button onClick={this.onModeSwitchClick} title="Partition Key Selector" className="button partition-selector__switch">
-        <i className="fonticon-filter"></i>
-        No partition selected
+        <i className="fonticon-filter"></i><span>No partition selected</span>
       </button>
     );
   }
 
   partitionHeader() {
     const editor = (
-      <input type="text"
+      <Form.Control type="text"
         style={{padding:2, fontSize:16, margin: 0, display: this.state.editMode ? 'block' : 'none'}}
         onKeyPress={this.onKeyPress}
         onChange={this.onChange}
@@ -99,6 +99,7 @@
       partName = this.props.partitionKey;
       className += ' partition-selector__key--active';
     }
+
     return (
       <React.Fragment>
         <button onClick={this.onModeSwitchClick} title="Partition Key Selector" className="button partition-selector__switch button partition-selector__switch--active">
diff --git a/app/addons/documents/rev-browser/components/confirmmodal.js b/app/addons/documents/rev-browser/components/confirmmodal.js
index 16e6796..23b7f77 100644
--- a/app/addons/documents/rev-browser/components/confirmmodal.js
+++ b/app/addons/documents/rev-browser/components/confirmmodal.js
@@ -12,9 +12,8 @@
 
 import PropTypes from 'prop-types';
 import React from "react";
-import ReactDOM from "react-dom";
 import ReactComponents from "../../../components/react-components";
-import { Modal } from "react-bootstrap";
+import { Button, Form, Modal } from "react-bootstrap";
 
 const ConfirmButton = ReactComponents.ConfirmButton;
 
@@ -31,7 +30,10 @@
     this.onDeleteConflicts = this.onDeleteConflicts.bind(this);
   }
 
-  close () {
+  close (ev) {
+    if (ev && ev.preventDefault) {
+      ev.preventDefault();
+    }
     this.props.toggleConfirmModal(false, null);
   }
 
@@ -48,33 +50,35 @@
         </Modal.Header>
         <Modal.Body>
           <p>
-            <i className="icon-warning-sign"></i> Do you want to delete all conflicting revisions for this document?
+            Do you want to delete all conflicting revisions for this document?
           </p>
-
-
         </Modal.Body>
         <Modal.Footer>
-          <div style={{float: 'left', marginTop: '10px'}}>
-            <label>
-              <input
-                style={{margin: '0 5px 3px 0'}}
-                onChange={() => { this.setState({checked: !this.state.checked }); }}
-                type="checkbox" />
-                Do not show this warning message again
-            </label>
-          </div>
-          <a
-            style={{marginRight: '10px', cursor: 'pointer'}}
-            onClick={this.close}
-            data-bypass="true"
-          >
-            Cancel
-          </a>
 
-          <ConfirmButton
-            onClick={this.onDeleteConflicts}
-            text="Delete Revisions"
-            buttonType="btn-danger" />
+          <div className='col-12'>
+            <Form.Check type="checkbox"
+              className='do-not-show-again'
+              label="Do not show this warning message again"
+              onChange={() => { this.setState({checked: !this.state.checked }); }} />
+          </div>
+
+          <div className="col-auto">
+            <Button href="#"
+              variant="cf-cancel"
+              className='cancel-link'
+              onClick={this.close}
+              data-bypass="true"
+            >
+            Cancel
+            </Button>
+          </div>
+          <div className="col-auto">
+            <ConfirmButton
+              onClick={this.onDeleteConflicts}
+              text="Delete Revisions"
+              variant="danger" />
+          </div>
+
         </Modal.Footer>
       </Modal>
     );
diff --git a/app/addons/documents/rev-browser/components/conflictingrevisiondropdown.js b/app/addons/documents/rev-browser/components/conflictingrevisiondropdown.js
index 78c6a6d..afa369c 100644
--- a/app/addons/documents/rev-browser/components/conflictingrevisiondropdown.js
+++ b/app/addons/documents/rev-browser/components/conflictingrevisiondropdown.js
@@ -11,33 +11,37 @@
 // the License.
 
 import React from 'react';
-import ReactDOM from "react-dom";
 import PropTypes from 'prop-types';
-import ReactSelect from "react-select";
+import { Form } from 'react-bootstrap';
 
 const BackForwardControls = ({onClick, forward}) => {
   const icon = forward ? 'fonticon-right-open' : 'fonticon-left-open';
-  const style = {height: '20px', width: '11px', marginTop: '7px'};
-
-  return <div style={style} className={icon} onClick={onClick}></div>;
+  return <div className={icon} onClick={onClick}></div>;
 };
 
 BackForwardControls.propTypes = {
   onClick: PropTypes.func.isRequired,
+  forward: PropTypes.bool,
+};
+
+BackForwardControls.defaultProps = {
+  forward: false,
 };
 
 const ConflictingRevisionsDropDown = ({options, selected, onRevisionClick, onBackwardClick, onForwardClick}) => {
+  const selectOptions = !options ? undefined :
+    options.map(el => <option value={el.value} key={el.value}>{el.label}</option>);
+
   return (
     <div className="conflicting-revs-dropdown">
-      <BackForwardControls backward onClick={onBackwardClick} />
-      <div style={{width: '345px', margin: '0 5px'}}>
-        <ReactSelect
-          name="form-field-name"
-          value={selected}
-          options={options}
-          clearable={false}
-          onChange={onRevisionClick} />
-      </div>
+      <BackForwardControls onClick={onBackwardClick} />
+      <Form.Select
+        name="form-field-name"
+        value={selected}
+        onChange={onRevisionClick}>
+        {selectOptions}
+      </Form.Select>
+
       <BackForwardControls forward onClick={onForwardClick} />
     </div>
   );
diff --git a/app/addons/documents/rev-browser/components/controller.js b/app/addons/documents/rev-browser/components/controller.js
index 11b5472..3f3fff2 100644
--- a/app/addons/documents/rev-browser/components/controller.js
+++ b/app/addons/documents/rev-browser/components/controller.js
@@ -45,27 +45,29 @@
 
     // no conflicts happened for this doc
     if (!theirs || !conflictingRevs.length) {
-      return <div style={{textAlign: 'center', color: '#fff'}}><h2>No conflicts</h2></div>;
+      return <div className="revision-browser-no-conflict"><h2>No conflicts</h2></div>;
     }
 
     return (
       <div className="revision-wrapper scrollable">
         <RevisionBrowserControls {...this.props} />
-        <div className="revision-view-controls">
+        <div className="revision-view-controls text-center">
           <ButtonGroup className="two-sides-toggle-button">
             <Button
-              style={{width: '120px'}}
+              style={{width: '130px'}}
+              variant='cf-secondary'
               className={isDiffViewEnabled ? 'active' : ''}
               onClick={this.toggleDiffViewTrue}
             >
-              <i className="icon-columns" /> Diff
+              <i className="fonticon-columns" /> Diff
             </Button>
             <Button
-              style={{width: '120px'}}
+              style={{width: '130px'}}
+              variant='cf-secondary'
               className={isDiffViewEnabled ? '' : 'active'}
               onClick={this.toggleDiffViewFalse}
             >
-              <i className="icon-file-text" /> Document
+              <i className="fonticon-document" /> Document
             </Button>
           </ButtonGroup>
         </div>
diff --git a/app/addons/documents/rev-browser/components/revisionbrowsercontrols.js b/app/addons/documents/rev-browser/components/revisionbrowsercontrols.js
index 7cc7dec..883e772 100644
--- a/app/addons/documents/rev-browser/components/revisionbrowsercontrols.js
+++ b/app/addons/documents/rev-browser/components/revisionbrowsercontrols.js
@@ -11,10 +11,10 @@
 // the License.
 
 import React from 'react';
-import ReactDOM from "react-dom";
 import PropTypes from 'prop-types';
+import { Form } from 'react-bootstrap';
 import app from '../../../../app';
-import ReactComponents from "../../../components/react-components";
+import ReactComponents from '../../../components/react-components';
 import ConflictingRevisionsDropDown from './conflictingrevisiondropdown';
 import ConfirmModal from './confirmmodal';
 
@@ -22,24 +22,29 @@
 const storageKeyDeleteConflictsModal = 'deleteConflictsHideModal';
 
 export default class RevisionBrowserControls extends React.Component {
-
-  constructor (props) {
+  constructor(props) {
     super(props);
 
-    this.state = {showModal: false};
+    this.state = { showModal: false };
     this.selectAsWinner = this.selectAsWinner.bind(this);
-    this.onSelectAsWinnerClickOurs = this.onSelectAsWinnerClick.bind(this, this.props.ours);
-    this.onSelectAsWinnerClickTheirs = this.onSelectAsWinnerClick.bind(this, this.props.theirs);
+    this.onSelectAsWinnerClickOurs = this.onSelectAsWinnerClick.bind(
+      this,
+      this.props.ours
+    );
+    this.onSelectAsWinnerClickTheirs = this.onSelectAsWinnerClick.bind(
+      this,
+      this.props.theirs
+    );
     this.onRevisionClick = this.onRevisionClick.bind(this);
     this.onForwardClick = this.onForwardClick.bind(this);
     this.onBackwardClick = this.onBackwardClick.bind(this);
   }
 
-  onRevisionClick (revTheirs) {
+  onRevisionClick(revTheirs) {
     this.props.chooseLeaves(this.props.ours, revTheirs.value);
   }
 
-  onForwardClick () {
+  onForwardClick() {
     const conflictingRevs = this.props.conflictingRevs;
     const index = conflictingRevs.indexOf(this.props.theirs._rev);
 
@@ -52,7 +57,7 @@
     this.props.chooseLeaves(this.props.ours, next);
   }
 
-  onBackwardClick () {
+  onBackwardClick() {
     const conflictingRevs = this.props.conflictingRevs;
     const index = conflictingRevs.indexOf(this.props.theirs._rev);
 
@@ -65,7 +70,7 @@
     this.props.chooseLeaves(this.props.ours, next);
   }
 
-  selectAsWinner (docToWin, doNotShowModalAgain) {
+  selectAsWinner(docToWin, doNotShowModalAgain) {
     if (doNotShowModalAgain) {
       app.utils.localStorageSet(storageKeyDeleteConflictsModal, true);
     }
@@ -73,7 +78,7 @@
     this.props.selectRevAsWinner(docToWin._id, docToWin._rev, this.props.tree);
   }
 
-  onSelectAsWinnerClick (docToWin) {
+  onSelectAsWinnerClick(docToWin) {
     if (app.utils.localStorageGet(storageKeyDeleteConflictsModal) !== true) {
       this.props.toggleConfirmModal(true, docToWin);
       return;
@@ -82,9 +87,8 @@
     this.selectAsWinner(docToWin);
   }
 
-  render () {
-    const {tree} = this.props;
-    const cellStyle = {paddingRight: '30px'};
+  render() {
+    const { tree } = this.props;
 
     return (
       <div className="revision-browser-controls">
@@ -94,48 +98,43 @@
           docToWin={this.props.docToWin}
           show={this.props.showConfirmModal}
         />
-        <table style={{margin: '10px 60px', width: '100%'}}>
-          <tbody>
-            <tr style={{height: '60px'}}>
-              <td style={cellStyle}>Server-Selected Rev: </td>
-              <td style={cellStyle}>
-                <div style={{lineHeight: '36px', height: '36px', width: '337px', color: '#000', backgroundColor: '#ffbbbb'}}>
-                  <b style={{paddingLeft: '10px'}}>{tree.winner}</b>
-                </div>
-              </td>
-              <td>
-                <ConfirmButton
-                  onClick={this.onSelectAsWinnerClickOurs}
-                  style={{marginRight: '10px', width: '220px'}}
-                  text="Delete Other Conflicts"
-                  buttonType="btn-secondary"
-                  customIcon="icon-trophy" />
-              </td>
-            </tr>
-            <tr style={{height: '60px'}}>
-              <td style={cellStyle}>Conflicting Revisions: </td>
-              <td style={cellStyle}>
-                <ConflictingRevisionsDropDown
-                  onRevisionClick={this.onRevisionClick}
-                  onForwardClick={this.onForwardClick}
-                  onBackwardClick={this.onBackwardClick}
-                  options={this.props.dropdownData}
-                  selected={this.props.theirs._rev} />
-              </td>
-              <td>
-                <ConfirmButton
-                  data-id="button-select-theirs"
-                  onClick={this.onSelectAsWinnerClickTheirs}
-                  style={{marginRight: '10px', width: '220px'}}
-                  text="Select as Winner"
-                  buttonType="btn-secondary"
-                  customIcon="icon-trophy" />
-              </td>
-            </tr>
-          </tbody>
-        </table>
-      </div>
 
+        <div className="row align-items-center mb-3">
+          <div className="revision-browser-controls-label-col col-auto">Server-Selected Rev:</div>
+          <div className="col-5 col-xl-4">
+            <Form.Control type="text" placeholder={tree.winner} readOnly /></div>
+          <div className="col">
+            <ConfirmButton
+              onClick={this.onSelectAsWinnerClickOurs}
+              text="Delete Other Conflicts"
+              variant="secondary"
+              customIcon="fonticon-trophy"
+            />
+          </div>
+        </div>
+
+        <div className="row">
+          <div className="revision-browser-controls-label-col col-auto">Conflicting Revisions:</div>
+          <div className="col-5 col-xl-4">
+            <ConflictingRevisionsDropDown
+              onRevisionClick={this.onRevisionClick}
+              onForwardClick={this.onForwardClick}
+              onBackwardClick={this.onBackwardClick}
+              options={this.props.dropdownData}
+              selected={this.props.theirs._rev}
+            />
+          </div>
+          <div className="col-3">
+            <ConfirmButton
+              data-id="button-select-theirs"
+              onClick={this.onSelectAsWinnerClickTheirs}
+              text="Select as Winner"
+              variant="secondary"
+              customIcon="fonticon-trophy"
+            />
+          </div>
+        </div>
+      </div>
     );
   }
 }
diff --git a/app/addons/documents/rev-browser/components/revisiondiffarea.js b/app/addons/documents/rev-browser/components/revisiondiffarea.js
index d96c855..f79c69f 100644
--- a/app/addons/documents/rev-browser/components/revisiondiffarea.js
+++ b/app/addons/documents/rev-browser/components/revisiondiffarea.js
@@ -11,7 +11,6 @@
 // the License.
 
 import React from 'react';
-import ReactDOM from "react-dom";
 import PropTypes from 'prop-types';
 import * as jdp from "jsondiffpatch";
 import "jsondiffpatch/dist/formatters-styles/html.css";
@@ -27,7 +26,6 @@
   return (
     <div className="revision-diff-area">
       <div
-        style={{marginTop: '30px'}}
         dangerouslySetInnerHTML={{__html: html}}
       >
       </div>
diff --git a/app/addons/documents/rev-browser/components/splitscreenarea.js b/app/addons/documents/rev-browser/components/splitscreenarea.js
index 3cb0798..f1c044d 100644
--- a/app/addons/documents/rev-browser/components/splitscreenarea.js
+++ b/app/addons/documents/rev-browser/components/splitscreenarea.js
@@ -56,13 +56,13 @@
 
     return (
       <div className="revision-split-area">
-        <div data-id="ours" style={{width: '50%'}}>
-          <div style={{marginBottom: '20px'}}>{ours._rev} (Server-Selected Rev)</div>
+        <div data-id="ours" className="ours-area">
+          <div className="doc-title">{ours._rev} (Server-Selected Rev)</div>
           <pre ref={node => this.revLeftOurs = node}></pre>
         </div>
 
-        <div data-id="theirs" style={{width: '50%'}}>
-          <div style={{marginBottom: '20px'}}>{theirs._rev}</div>
+        <div data-id="theirs" className="theirs-area">
+          <div className="doc-title">{theirs._rev}</div>
           <pre ref={node => this.revRightTheirs = node}></pre>
         </div>
       </div>
diff --git a/app/addons/documents/rev-browser/rev-browser.components.js b/app/addons/documents/rev-browser/rev-browser.components.js
deleted file mode 100644
index 4ae29e0..0000000
--- a/app/addons/documents/rev-browser/rev-browser.components.js
+++ /dev/null
@@ -1,429 +0,0 @@
-import app from "../../../app";
-
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-import PropTypes from 'prop-types';
-
-import React from "react";
-import ReactDOM from "react-dom";
-import RevActions from "./rev-browser.actions";
-import RevStores from "./rev-browser.stores";
-import ReactComponents from "../../components/react-components";
-import { ButtonGroup, Button, Modal } from "react-bootstrap";
-import ReactSelect from "react-select";
-import jdp from "jsondiffpatch";
-import jdpformatters from "jsondiffpatch/src/formatters/html";
-import ace from "brace";
-import "jsondiffpatch/public/formatters-styles/html.css";
-
-const storageKeyDeleteConflictsModal = 'deleteConflictsHideModal';
-
-const store = RevStores.revBrowserStore;
-const ConfirmButton = ReactComponents.ConfirmButton;
-
-require('brace/ext/static_highlight');
-const highlight = ace.acequire('ace/ext/static_highlight');
-
-require('brace/mode/json');
-const JavaScriptMode = ace.acequire('ace/mode/json').Mode;
-
-require('brace/theme/idle_fingers');
-const theme = ace.acequire('ace/theme/idle_fingers');
-
-
-class DiffyController extends React.Component {
-
-  constructor (props) {
-    super(props);
-
-    this.state = this.getStoreState();
-  }
-
-  getStoreState () {
-
-    return {
-      tree: store.getRevTree(),
-      ours: store.getOurs(),
-      theirs: store.getTheirs(),
-      conflictingRevs: store.getConflictingRevs(),
-      dropdownData: store.getDropdownData(),
-      isDiffViewEnabled: store.getIsDiffViewEnabled(),
-      databaseName: store.getDatabaseName()
-    };
-  }
-
-  componentDidMount () {
-    store.on('change', this.onChange, this);
-  }
-
-  componentWillUnmount () {
-    store.off('change', this.onChange);
-  }
-
-  onChange () {
-    this.setState(this.getStoreState());
-  }
-
-  toggleDiffView (enableDiff) {
-    RevActions.toggleDiffView(enableDiff);
-  }
-
-  render () {
-    const {tree, ours, theirs, conflictingRevs, isDiffViewEnabled} = this.state;
-
-    if (!tree) {
-      return null;
-    }
-
-    // no conflicts happened for this doc
-    if (!theirs || !conflictingRevs.length) {
-      return <div style={{textAlign: 'center', color: '#fff'}}><h2>No conflicts</h2></div>;
-    }
-
-    return (
-      <div className="revision-wrapper scrollable">
-        <RevisionBrowserControls {...this.state} />
-        <div className="revision-view-controls">
-          <ButtonGroup className="two-sides-toggle-button">
-            <Button
-              style={{width: '120px'}}
-              className={isDiffViewEnabled ? 'active' : ''}
-              onClick={this.toggleDiffView.bind(this, true)}
-            >
-              <i className="icon-columns" /> Diff
-            </Button>
-            <Button
-              style={{width: '120px'}}
-              className={isDiffViewEnabled ? '' : 'active'}
-              onClick={this.toggleDiffView.bind(this, false)}
-            >
-              <i className="icon-file-text" /> Document
-            </Button>
-          </ButtonGroup>
-        </div>
-
-        {isDiffViewEnabled ?
-          <RevisionDiffArea ours={ours} theirs={theirs} /> :
-          <SplitScreenArea ours={ours} theirs={theirs} /> }
-      </div>
-    );
-  }
-}
-
-
-class SplitScreenArea extends React.Component {
-
-  constructor (props) {
-    super(props);
-  }
-
-  componentDidUpdate () {
-    this.hightlightAfterRender();
-  }
-
-  componentDidMount () {
-    this.hightlightAfterRender();
-  }
-
-  hightlightAfterRender () {
-    const format = (input) => { return JSON.stringify(input, null, '  '); };
-
-    const jsmode = new JavaScriptMode();
-    const left = this.revLeftOurs;
-    const right = this.revRightTheirs;
-
-    const leftRes = highlight.render(format(this.props.ours), jsmode, theme, 0, true);
-    left.innerHTML = leftRes.html;
-    const rightRes = highlight.render(format(this.props.theirs), jsmode, theme, 0, true);
-    right.innerHTML = rightRes.html;
-  }
-
-  render () {
-    const {ours, theirs} = this.props;
-
-    if (!ours || !theirs) {
-      return <div></div>;
-    }
-
-    return (
-      <div className="revision-split-area">
-        <div data-id="ours" style={{width: '50%'}}>
-          <div style={{marginBottom: '20px'}}>{ours._rev} (Server-Selected Rev)</div>
-          <pre ref={node => this.revLeftOurs = node}></pre>
-        </div>
-
-        <div data-id="theirs" style={{width: '50%'}}>
-          <div style={{marginBottom: '20px'}}>{theirs._rev}</div>
-          <pre ref={node => this.revRightTheirs = node}></pre>
-        </div>
-      </div>
-    );
-  }
-}
-
-const RevisionDiffArea = ({ours, theirs}) => {
-  if (!ours || !theirs) {
-    return <div></div>;
-  }
-
-  const delta = jdp.diff(ours, theirs);
-  const html = jdpformatters.format(delta, ours);
-
-  return (
-    <div className="revision-diff-area">
-      <div
-        style={{marginTop: '30px'}}
-        dangerouslySetInnerHTML={{__html: html}}
-      ></div>
-    </div>
-  );
-};
-RevisionDiffArea.propTypes = {
-  ours: PropTypes.object,
-  theirs: PropTypes.object,
-  currentRev: PropTypes.string
-};
-
-
-const ConflictingRevisionsDropDown = ({options, selected, onRevisionClick, onBackwardClick, onForwardClick}) => {
-  return (
-    <div className="conflicting-revs-dropdown">
-      <BackForwardControls backward onClick={onBackwardClick} />
-      <div style={{width: '345px', margin: '0 5px'}}>
-        <ReactSelect
-          name="form-field-name"
-          value={selected}
-          options={options}
-          clearable={false}
-          onChange={onRevisionClick} />
-      </div>
-      <BackForwardControls forward onClick={onForwardClick} />
-    </div>
-  );
-};
-ConflictingRevisionsDropDown.propTypes = {
-  options: PropTypes.array.isRequired,
-  selected: PropTypes.string.isRequired,
-  onRevisionClick: PropTypes.func.isRequired,
-  onBackwardClick: PropTypes.func.isRequired,
-  onForwardClick: PropTypes.func.isRequired,
-};
-
-class RevisionBrowserControls extends React.Component {
-
-  constructor (props) {
-    super(props);
-
-    this.state = {showModal: false};
-  }
-
-  onRevisionClick (revTheirs) {
-
-    RevActions.chooseLeaves(this.props.ours, revTheirs.value);
-  }
-
-  onForwardClick () {
-    const conflictingRevs = this.props.conflictingRevs;
-    const index = conflictingRevs.indexOf(this.props.theirs._rev);
-
-    const next = conflictingRevs[index + 1];
-
-    if (!next) {
-      return;
-    }
-
-    RevActions.chooseLeaves(this.props.ours, next);
-  }
-
-  onBackwardClick () {
-    const conflictingRevs = this.props.conflictingRevs;
-    const index = conflictingRevs.indexOf(this.props.theirs._rev);
-
-    const next = conflictingRevs[index - 1];
-
-    if (!next) {
-      return;
-    }
-
-    RevActions.chooseLeaves(this.props.ours, next);
-  }
-
-  selectAsWinner (docToWin, doNotShowModalAgain) {
-    if (doNotShowModalAgain) {
-      app.utils.localStorageSet(storageKeyDeleteConflictsModal, true);
-    }
-
-    RevActions.selectRevAsWinner(this.props.databaseName, docToWin._id, this.props.tree.paths, docToWin._rev);
-  }
-
-  onSelectAsWinnerClick (docToWin) {
-    if (app.utils.localStorageGet(storageKeyDeleteConflictsModal) !== true) {
-      RevActions.showConfirmModal(true, docToWin);
-      return;
-    }
-
-    this.selectAsWinner(docToWin);
-  }
-
-  render () {
-    const {tree} = this.props;
-    const cellStyle = {paddingRight: '30px'};
-
-    return (
-      <div className="revision-browser-controls">
-        <ConfirmModal onConfirm={this.selectAsWinner.bind(this)} />
-        <table style={{margin: '10px 60px', width: '100%'}}>
-          <tbody>
-            <tr style={{height: '60px'}}>
-              <td style={cellStyle}>Server-Selected Rev: </td>
-              <td style={cellStyle}>
-                <div style={{lineHeight: '36px', height: '36px', width: '337px', color: '#000', backgroundColor: '#ffbbbb'}}>
-                  <b style={{paddingLeft: '10px'}}>{tree.winner}</b>
-                </div>
-              </td>
-              <td>
-                <ConfirmButton
-                  onClick={this.onSelectAsWinnerClick.bind(this, this.props.ours)}
-                  style={{marginRight: '10px', width: '220px'}}
-                  text="Delete Other Conflicts"
-                  buttonType="btn-secondary"
-                  customIcon="icon-trophy" />
-              </td>
-            </tr>
-            <tr style={{height: '60px'}}>
-              <td style={cellStyle}>Conflicting Revisions: </td>
-              <td style={cellStyle}>
-                <ConflictingRevisionsDropDown
-                  onRevisionClick={this.onRevisionClick.bind(this)}
-                  onForwardClick={this.onForwardClick.bind(this)}
-                  onBackwardClick={this.onBackwardClick.bind(this)}
-                  options={this.props.dropdownData}
-                  selected={this.props.theirs._rev} />
-              </td>
-              <td>
-                <ConfirmButton
-                  data-id="button-select-theirs"
-                  onClick={this.onSelectAsWinnerClick.bind(this, this.props.theirs)}
-                  style={{marginRight: '10px', width: '220px'}}
-                  text="Select as Winner"
-                  buttonType="btn-secondary"
-                  customIcon="icon-trophy" />
-              </td>
-            </tr>
-          </tbody>
-        </table>
-      </div>
-
-    );
-  }
-}
-RevisionBrowserControls.propTypes = {
-  tree: PropTypes.object.isRequired,
-  ours: PropTypes.object.isRequired,
-  conflictingRevs: PropTypes.array.isRequired,
-};
-
-class ConfirmModal extends React.Component {
-
-  constructor (props) {
-    super(props);
-
-    this.state = this.getStoreState();
-  }
-
-  getStoreState () {
-    return {
-      show: store.getShowConfirmModal(),
-      docToWin: store.getDocToWin(),
-      checked: false
-    };
-  }
-
-  componentDidMount () {
-    store.on('change', this.onChange, this);
-  }
-
-  componentWillUnmount () {
-    store.off('change', this.onChange);
-  }
-
-  onChange () {
-    this.setState(this.getStoreState());
-  }
-
-  close () {
-    RevActions.showConfirmModal(false, null);
-  }
-
-  onDeleteConflicts () {
-    const hideModal = this.state.checked;
-    this.props.onConfirm(this.state.docToWin, hideModal);
-  }
-
-  render () {
-    return (
-      <Modal dialogClassName="delete-conflicts-modal" show={this.state.show} onHide={this.close}>
-        <Modal.Header closeButton={false}>
-          <Modal.Title>Solve Conflicts</Modal.Title>
-        </Modal.Header>
-        <Modal.Body>
-          <p>
-            <i className="icon-warning-sign"></i> Do you want to delete all conflicting revisions for this document?
-          </p>
-
-
-        </Modal.Body>
-        <Modal.Footer>
-          <div style={{float: 'left', marginTop: '10px'}}>
-            <label>
-              <input
-                style={{margin: '0 5px 3px 0'}}
-                onChange={() => { this.setState({checked: !this.state.checked }); }}
-                type="checkbox" />
-                Do not show this warning message again
-            </label>
-          </div>
-          <a
-            style={{marginRight: '10px', cursor: 'pointer'}}
-            onClick={this.close}
-            data-bypass="true"
-          >
-            Cancel
-          </a>
-
-          <ConfirmButton
-            onClick={this.onDeleteConflicts.bind(this)}
-            text="Delete Revisions"
-            buttonType="btn-danger" />
-        </Modal.Footer>
-      </Modal>
-    );
-  }
-}
-ConfirmModal.propTypes = {
-  onConfirm: PropTypes.func.isRequired,
-};
-
-const BackForwardControls = ({onClick, forward}) => {
-  const icon = forward ? 'fonticon-right-open' : 'fonticon-left-open';
-  const style = {height: '20px', width: '11px', marginTop: '7px'};
-
-  return <div style={style} className={icon} onClick={onClick}></div>;
-};
-BackForwardControls.propTypes = {
-  onClick: PropTypes.func.isRequired,
-};
-
-export default {
-  DiffyController: DiffyController
-};
diff --git a/app/addons/documents/sidebar/__tests__/sidebar.components.test.js b/app/addons/documents/sidebar/__tests__/sidebar.components.test.js
index c3db18a..9f80522 100644
--- a/app/addons/documents/sidebar/__tests__/sidebar.components.test.js
+++ b/app/addons/documents/sidebar/__tests__/sidebar.components.test.js
@@ -19,6 +19,7 @@
 import DesignDoc from '../components/DesignDoc';
 import IndexSection from '../components/IndexSection';
 import MainSidebar from '../components/MainSidebar';
+import { act } from 'react-dom/test-utils';
 
 const { restore} = utils;
 
@@ -48,14 +49,22 @@
     restore(FauxtonAPI.urls);
   });
 
-  it('confirm URLs are properly encoded when design doc name has special chars', () => {
+  it('confirm URLs are properly encoded when design doc name has special chars', async() => {
     const wrapper = mount(<DesignDoc
       {...defaultProps}
       designDocName={'doc-$-#-.1'}
     />);
 
-    expect(wrapper.find('a.icon.fonticon-plus-circled').at(1).props()['href']).toContain('/doc-%24-%23-.1');
     expect(wrapper.find('a.toggle-view.accordion-header').props()['href']).toContain('/doc-%24-%23-.1');
+    const dropdownBtn = wrapper.find('a.icon.fonticon-plus-circled').at(0);
+    dropdownBtn.simulate('click');
+
+    await act(async () => {
+      wrapper.update();
+    });
+
+    const menuItem = wrapper.find('a.dropdown-item');
+    expect(menuItem.first().prop('href')).toContain('/doc-%24-%23-.1');
   });
 
   it('check toggle() works when design doc name has special characters', () => {
@@ -159,7 +168,7 @@
     expect(wrapper2.find('i.fonticon-documents').exists()).toBeTruthy();
   });
 
-  it('confirms links only include the partition key when one is selected', () => {
+  it('confirms links only include the partition key when one is selected', async() => {
     const wrapper = mount(<DesignDoc
       {...defaultProps}
       selectedPartitionKey={'part-key-$-%1'}
@@ -167,14 +176,32 @@
     // Metadata link
     expect(wrapper.find('a.toggle-view.accordion-header').props()['href']).toContain('/_partition/part-key-%24-%251/');
     // New View link
-    expect(wrapper.find('li > a.icon.fonticon-plus-circled').props()['href']).toContain('/_partition/part-key-%24-%251/');
+    const dropdownBtn = wrapper.find('a.icon.fonticon-plus-circled').at(0);
+    dropdownBtn.simulate('click');
+
+    await act(async () => {
+      wrapper.update();
+    });
+
+    const menuItem = wrapper.find('a.dropdown-item');
+    expect(menuItem.first().prop('href')).toContain('/doc-%24-%23-.1');
 
     const wrapper2 = mount(<DesignDoc
       {...defaultProps}
     />);
 
+    // Metadata link (ii)
     expect(wrapper2.find('a.toggle-view.accordion-header').props()['href']).not.toContain('/_partition/');
-    expect(wrapper2.find('li > a.icon.fonticon-plus-circled').props()['href']).not.toContain('/_partition/');
+    // New View link (ii)
+    const dropdownBtn2 = wrapper2.find('a.icon.fonticon-plus-circled').at(0);
+    dropdownBtn2.simulate('click');
+
+    await act(async () => {
+      wrapper2.update();
+    });
+
+    const menuItem2 = wrapper2.find('a.dropdown-item');
+    expect(menuItem2.first().prop('href')).not.toContain('/_partition/');
   });
 });
 
diff --git a/app/addons/documents/sidebar/components/CloneIndexModal.js b/app/addons/documents/sidebar/components/CloneIndexModal.js
index ca83562..de9d083 100644
--- a/app/addons/documents/sidebar/components/CloneIndexModal.js
+++ b/app/addons/documents/sidebar/components/CloneIndexModal.js
@@ -12,8 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
-import { Modal } from 'react-bootstrap';
-import ReactDOM from 'react-dom';
+import { Button, Modal } from 'react-bootstrap';
 import FauxtonAPI from '../../../../core/api';
 import IndexEditorComponents from '../../index-editor/components';
 
@@ -73,7 +72,7 @@
 
   render() {
     return (
-      <Modal dialogClassName="clone-index-modal" show={this.props.visible} onHide={this.close}>
+      <Modal dialogClassName="clone-index-modal" id="clone-index-modal" show={this.props.visible} onHide={this.close}>
         <Modal.Header closeButton={true}>
           <Modal.Title>{this.props.title}</Modal.Title>
         </Modal.Header>
@@ -85,32 +84,33 @@
               a name for the cloned {this.props.indexLabel}.
             </p>
 
-            <div className="row">
-              <DesignDocSelector
-                ref={node => this.designDocSelector = node}
-                designDocList={this.props.designDocArray}
-                isDbPartitioned={this.props.isDbPartitioned}
-                selectedDesignDocName={this.props.selectedDesignDoc}
-                selectedDesignDocPartitioned={this.props.selectedDesignDocPartitioned}
-                newDesignDocName={this.props.newDesignDocName}
-                newDesignDocPartitioned={this.props.newDesignDocPartitioned}
-                onSelectDesignDoc={this.props.selectDesignDoc}
-                onChangeNewDesignDocName={this.props.updateNewDesignDocName}
-                onChangeNewDesignDocPartitioned={this.props.updateNewDesignDocPartitioned} />
-            </div>
+            <DesignDocSelector
+              ref={node => this.designDocSelector = node}
+              designDocList={this.props.designDocArray}
+              isDbPartitioned={this.props.isDbPartitioned}
+              selectedDesignDocName={this.props.selectedDesignDoc}
+              selectedDesignDocPartitioned={this.props.selectedDesignDocPartitioned}
+              newDesignDocName={this.props.newDesignDocName}
+              newDesignDocPartitioned={this.props.newDesignDocPartitioned}
+              onSelectDesignDoc={this.props.selectDesignDoc}
+              onChangeNewDesignDocName={this.props.updateNewDesignDocName}
+              onChangeNewDesignDocPartitioned={this.props.updateNewDesignDocPartitioned}
+              className="mb-3 col-12"
+            />
 
-            <div className="clone-index-name-row">
-              <label className="new-index-title-label" htmlFor="new-index-name">{this.props.indexLabel} Name</label>
-              <input type="text" id="new-index-name" value={this.props.newIndexName} onChange={this.setNewIndexName}
-                placeholder="New view name" />
+            <div className="row pt-0">
+              <div className="col-12">
+                <label htmlFor="new-index-name" className="form-label mb-0 text-capitalize">{this.props.indexLabel} Name</label>
+                <input type="text" placeholder={"New view name"} value={this.props.newIndexName} className="form-control" id="new-index-name" onChange={this.setNewIndexName} />
+              </div>
             </div>
           </form>
 
         </Modal.Body>
         <Modal.Footer>
-          <a href="#" className="cancel-link" onClick={this.close} data-bypass="true">Cancel</a>
-          <button onClick={this.submit} data-bypass="true" className="btn btn-primary save">
-            <i className="icon fonticon-ok-circled" /> Clone {this.props.indexLabel}</button>
+          <Button href="#" variant="cf-cancel" className="cancel-link" onClick={this.close} data-bypass="true">Cancel</Button>
+          <Button onClick={this.submit} data-bypass="true" variant="cf-primary" className="save">
+            <i className="icon fonticon-ok-circled" /> Clone {this.props.indexLabel}</Button>
         </Modal.Footer>
       </Modal>
     );
diff --git a/app/addons/documents/sidebar/components/DesignDocList.js b/app/addons/documents/sidebar/components/DesignDocList.js
index c520659..8c3d18b 100644
--- a/app/addons/documents/sidebar/components/DesignDocList.js
+++ b/app/addons/documents/sidebar/components/DesignDocList.js
@@ -79,7 +79,7 @@
 
   render() {
     return (
-      <ul className="nav nav-list">
+      <ul className="nav flex-column">
         {this.designDocList()}
       </ul>
     );
diff --git a/app/addons/documents/sidebar/components/IndexSection.js b/app/addons/documents/sidebar/components/IndexSection.js
index ec57842..e341d44 100644
--- a/app/addons/documents/sidebar/components/IndexSection.js
+++ b/app/addons/documents/sidebar/components/IndexSection.js
@@ -12,10 +12,13 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
-import { Collapse, OverlayTrigger, Popover } from 'react-bootstrap';
+import { Collapse } from 'react-bootstrap';
+import Components from '../../../components/react-components';
 import ReactDOM from 'react-dom';
 import FauxtonAPI from '../../../../core/api';
 
+const { MenuDropDown } = Components;
+
 export default class IndexSection extends React.Component {
   static propTypes = {
     urlNamespace: PropTypes.string.isRequired,
@@ -46,8 +49,30 @@
     this.setState({ placement: placement });
   };
 
-  createItems = () => {
+  getItemLinks = (indexName) => {
+    let listItems =  [{
+      title: 'Edit',
+      icon: 'fonticon-file-code-o',
+      onClick: () => {this.indexAction('edit', { indexName: indexName, onEdit: this.props.onEdit });}
+    },
+    {
+      title: 'Clone',
+      icon: 'fonticon-files-o',
+      onClick: () => {this.indexAction('clone', { indexName: indexName, onClone: this.props.onClone });}
+    },
+    {
+      title: 'Delete',
+      icon: 'fonticon-trash',
+      onClick: () => {this.indexAction('delete', { indexName: indexName, onDelete: this.props.onDelete });}
+    }];
 
+    return [{
+      title: "Manage View",
+      links: listItems
+    }];
+  };
+
+  createItems = () => {
     // sort the indexes alphabetically
     const sortedItems = this.props.items.sort();
 
@@ -61,6 +86,8 @@
       }
       const className = (this.props.selectedIndex === indexName) ? 'active' : '';
 
+      const links = this.getItemLinks(indexName);
+
       return (
         <li className={className} key={index}>
           <a
@@ -69,42 +96,15 @@
             className="toggle-view">
             {indexName}
           </a>
-          <OverlayTrigger
-            trigger="click"
-            onEnter={this.setPlacement.bind(this, this.props.designDocName + '_' + indexName)}
-            placement={this.state.placement}
-            rootClose={true}
-            ref={overlay => this.itemOverlay = overlay}
-            overlay={
-              <Popover id="index-menu-component-popover">
-                <ul>
-                  <li onClick={this.indexAction.bind(this, 'edit', { indexName: indexName, onEdit: this.props.onEdit })}>
-                    <span className="fonticon fonticon-file-code-o"></span>
-                    Edit
-                  </li>
-                  <li onClick={this.indexAction.bind(this, 'clone', { indexName: indexName, onClone: this.props.onClone })}>
-                    <span className="fonticon fonticon-files-o"></span>
-                    Clone
-                  </li>
-                  <li onClick={this.indexAction.bind(this, 'delete', { indexName: indexName, onDelete: this.props.onDelete })}>
-                    <span className="fonticon fonticon-trash"></span>
-                    Delete
-                  </li>
-                </ul>
-              </Popover>
-            }>
-            <span className="index-menu-toggle fonticon fonticon-wrench2"></span>
-          </OverlayTrigger>
+          <div className='new-button add-dropdown sidebar-sub-item'>
+            <MenuDropDown links={links} icon={"fonticon-wrench"}/>
+          </div>
         </li>
       );
     });
   };
 
-  indexAction = (action, params, e) => {
-    e.preventDefault();
-
-    this.itemOverlay.hide();
-
+  indexAction = (action, params) => {
     switch (action) {
       case 'delete':
         this.props.showDeleteIndexModal(params.indexName, this.props.designDocName, this.props.indexLabel, params.onDelete);
@@ -118,8 +118,7 @@
     }
   };
 
-  toggle = (e) => {
-    e.preventDefault();
+  toggle = () => {
     this.props.toggle(this.props.designDocName, this.props.title);
   };
 
diff --git a/app/addons/documents/sidebar/components/MainSidebar.js b/app/addons/documents/sidebar/components/MainSidebar.js
index 0bbad14..f386146 100644
--- a/app/addons/documents/sidebar/components/MainSidebar.js
+++ b/app/addons/documents/sidebar/components/MainSidebar.js
@@ -57,7 +57,7 @@
     const buttonLinks = this.getNewButtonLinks();
 
     return (
-      <ul className="nav nav-list">
+      <ul className="nav flex-column">
         <li className={this.getNavItemClass('all-docs')}>
           <a id="all-docs"
             href={"#/" + databaseUrl}
diff --git a/app/addons/documents/tests/nightwatch/bulkDelete.js b/app/addons/documents/tests/nightwatch/bulkDelete.js
index 9016c05..ff44c70 100644
--- a/app/addons/documents/tests/nightwatch/bulkDelete.js
+++ b/app/addons/documents/tests/nightwatch/bulkDelete.js
@@ -33,7 +33,7 @@
       .waitForElementVisible('.prettyprint', waitTime, false)
 
       .clickWhenVisible('.bulk-action-component-selector-group input[type="checkbox"]')
-      .clickWhenVisible('.bulk-action-component-selector-group button.fonticon-trash', waitTime, false)
+      .clickWhenVisible('.bulk-action-component-selector-group button.toolbar-btn[icon="fonticon-trash"]', waitTime, false)
       .acceptAlert()
       .waitForElementVisible('.Toastify__toast-container .Toastify__toast--info', waitTime, false)
       .waitForElementNotPresent('[data-id="' + newDocumentName1 + '"]', waitTime, false)
@@ -67,7 +67,7 @@
       .waitForElementVisible('.table-view-docs', waitTime, false)
 
       .clickWhenVisible('.bulk-action-component-selector-group input[type="checkbox"]')
-      .clickWhenVisible('.bulk-action-component-selector-group button.fonticon-trash', waitTime, false)
+      .clickWhenVisible('.bulk-action-component-selector-group button.toolbar-btn[icon="fonticon-trash"]', waitTime, false)
       .acceptAlert()
       .waitForElementVisible('.Toastify__toast-container .Toastify__toast--info', waitTime, false)
       .waitForElementNotPresent('.table-view-docs ', waitTime, false)
diff --git a/app/addons/documents/tests/nightwatch/changes.js b/app/addons/documents/tests/nightwatch/changes.js
index 88ccdd6..9c5c817 100644
--- a/app/addons/documents/tests/nightwatch/changes.js
+++ b/app/addons/documents/tests/nightwatch/changes.js
@@ -26,7 +26,7 @@
       .waitForElementPresent('.change-box[data-id="doc_1"]', waitTime, false)
 
       // confirm only the single result is now listed in the page
-      .clickWhenVisible('.js-doc-link')
+      .clickWhenVisible('div.col-8 > a')
       .waitForElementPresent('#doc-editor-actions-panel', waitTime, false)
       .end();
   }
diff --git a/app/addons/documents/tests/nightwatch/changesFilter.js b/app/addons/documents/tests/nightwatch/changesFilter.js
index 9c05810..c14417f 100644
--- a/app/addons/documents/tests/nightwatch/changesFilter.js
+++ b/app/addons/documents/tests/nightwatch/changesFilter.js
@@ -40,12 +40,12 @@
       .waitForElementPresent('.change-box[data-id="doc_3"]', waitTime, false)
 
       // add a filter
-      .waitForElementVisible('.js-changes-filter-field', waitTime, false)
-      .setValue('.js-changes-filter-field', "doc_1")
-      .clickWhenVisible('.js-filter-form button[type="submit"]')
+      .waitForElementVisible('input#changes-filter-field', waitTime, false)
+      .setValue('input#changes-filter-field', "doc_1")
+      .clickWhenVisible('.changes-header .input-group button[type="submit"]')
 
       // confirm only the single result is now listed in the page
-      .waitForElementVisible('span.label-info', waitTime, false)
+      .waitForElementVisible('li.badge', waitTime, false)
       .waitForElementPresent('.change-box[data-id="doc_1"]', waitTime, false)
       .waitForElementNotPresent('.change-box[data-id="doc_2"]', waitTime, false)
       .waitForElementNotPresent('.change-box[data-id="doc_3"]', waitTime, false)
diff --git a/app/addons/documents/tests/nightwatch/checkSidebarBehavior.js b/app/addons/documents/tests/nightwatch/checkSidebarBehavior.js
index 5ed28f8..16a9084 100644
--- a/app/addons/documents/tests/nightwatch/checkSidebarBehavior.js
+++ b/app/addons/documents/tests/nightwatch/checkSidebarBehavior.js
@@ -26,7 +26,7 @@
       .createDocument('_design/' + docNormal, newDatabaseName)
       .createDocument('_design/' + docSpecialChars, newDatabaseName)
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_all_docs')
-      .waitForElementPresent('.nav-list', waitTime, false)
+      .waitForElementPresent('.nav', waitTime, false)
       // Verify 'Metadata' subitem is not visible
       .assert.not.visible('a[href="#/database/' + newDatabaseName + '/_design/' + docNormal + '/_info"]')
       .assert.not.visible('a[href="#/database/' + newDatabaseName + '/_design/' + docSpecialCharsEncoded + '/_info"]')
diff --git a/app/addons/documents/tests/nightwatch/cloneDoc.js b/app/addons/documents/tests/nightwatch/cloneDoc.js
index 2e840a7..af8fbbc 100644
--- a/app/addons/documents/tests/nightwatch/cloneDoc.js
+++ b/app/addons/documents/tests/nightwatch/cloneDoc.js
@@ -35,7 +35,7 @@
       .clearValue('.clone-doc-modal input')
       .setValue('.clone-doc-modal input', [clonedDocName])
 
-      .clickWhenVisible('.clone-doc-modal button.btn.btn-primary')
+      .clickWhenVisible('.clone-doc-modal button.btn.btn-cf-primary')
       .closeNotification()
 
       .waitForElementVisible('.faux-header__breadcrumbs .faux-header__breadcrumbs-element:last-child', waitTime, false)
diff --git a/app/addons/documents/tests/nightwatch/createsDocument.js b/app/addons/documents/tests/nightwatch/createsDocument.js
index 3523f9e..950829d 100644
--- a/app/addons/documents/tests/nightwatch/createsDocument.js
+++ b/app/addons/documents/tests/nightwatch/createsDocument.js
@@ -41,7 +41,7 @@
         editor.insert("' + newDocumentName + '");\
       ')
 
-      .clickWhenVisible('#doc-editor-actions-panel .save-doc')
+      .clickWhenVisible('#doc-editor-actions-panel button#save-doc-btn')
       .checkForDocumentCreated(newDocumentName)
       .url(baseUrl + '#/database/' + newDatabaseName + '/_all_docs')
       .clickWhenVisible('.fonticon-json')
@@ -86,7 +86,7 @@
         editor.insert("' + newDocumentName + '");\
       ')
 
-      .clickWhenVisible('#doc-editor-actions-panel .save-doc')
+      .clickWhenVisible('#doc-editor-actions-panel button#save-doc-btn')
       .checkForDocumentCreated(newDocumentName)
       .url(baseUrl + '#/database/' + newDatabaseName + '/' + newDocumentName)
 
@@ -119,7 +119,7 @@
       .loginToGUI()
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_all_docs')
       .waitForElementPresent('.tableview-checkbox-cell', waitTime, false)
-      .clickWhenVisible('.document-result-screen__toolbar-create-btn')
+      .clickWhenVisible('#create-new-doc-btn')
       .waitForElementPresent('#editor-container', waitTime, false)
       .verify.urlEquals(baseUrl + '/#database/' + newDatabaseName + '/_new')
       .waitForElementPresent('.ace_gutter-active-line', waitTime, false)
@@ -135,7 +135,7 @@
         editor.insert("' + newDocumentName + '");\
       ')
 
-      .clickWhenVisible('#doc-editor-actions-panel .save-doc')
+      .clickWhenVisible('#doc-editor-actions-panel button#save-doc-btn')
       .checkForDocumentCreated(newDocumentName)
       .url(baseUrl + '#/database/' + newDatabaseName + '/_all_docs')
       .clickWhenVisible('.fonticon-json')
diff --git a/app/addons/documents/tests/nightwatch/createsDocumentWithoutId.js b/app/addons/documents/tests/nightwatch/createsDocumentWithoutId.js
index 666cea9..03c1846 100644
--- a/app/addons/documents/tests/nightwatch/createsDocumentWithoutId.js
+++ b/app/addons/documents/tests/nightwatch/createsDocumentWithoutId.js
@@ -42,7 +42,7 @@
       ')
 
       .checkForStringPresent(newDatabaseName + '/_all_docs', '"total_rows":0')
-      .clickWhenVisible('#doc-editor-actions-panel .save-doc')
+      .clickWhenVisible('#doc-editor-actions-panel button#save-doc-btn')
       .checkForStringPresent(newDatabaseName + '/_all_docs', '"total_rows":1')
 
       .end();
diff --git a/app/addons/documents/tests/nightwatch/deleteDatabaseModal.js b/app/addons/documents/tests/nightwatch/deleteDatabaseModal.js
index a52c8da..27dd6e5 100644
--- a/app/addons/documents/tests/nightwatch/deleteDatabaseModal.js
+++ b/app/addons/documents/tests/nightwatch/deleteDatabaseModal.js
@@ -37,8 +37,8 @@
       .loginToGUI()
       .url(baseUrl + '/#/database/_replicator/_all_docs')
 
-      .clickWhenVisible('.faux-header__doc-header-dropdown-toggle')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-itemwrapper .fonticon-trash')
+      .clickWhenVisible('#faux-header__doc-header-dropdown-toggle')
+      .clickWhenVisible('button.dropdown-item .fonticon-trash')
 
       .waitForElementVisible('.delete-db-modal', waitTime, false)
       .waitForElementVisible('.delete-db-modal input[type="text"]', waitTime, false)
@@ -55,8 +55,8 @@
       .loginToGUI()
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_all_docs')
 
-      .clickWhenVisible('.faux-header__doc-header-dropdown-toggle')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-itemwrapper .fonticon-trash')
+      .clickWhenVisible('#faux-header__doc-header-dropdown-toggle')
+      .clickWhenVisible('button.dropdown-item .fonticon-trash')
 
       .waitForElementVisible('.delete-db-modal', waitTime, false)
       .waitForElementVisible('.delete-db-modal input[type="text"]', waitTime, false)
diff --git a/app/addons/documents/tests/nightwatch/deletesDocuments.js b/app/addons/documents/tests/nightwatch/deletesDocuments.js
index fd8bc38..0342101 100644
--- a/app/addons/documents/tests/nightwatch/deletesDocuments.js
+++ b/app/addons/documents/tests/nightwatch/deletesDocuments.js
@@ -29,15 +29,15 @@
       .waitForElementPresent('#dashboard-content a[href="database/' + newDatabaseName + '/_all_docs"]', waitTime, false)
       .clickWhenVisible('#dashboard-content a[href="database/' + newDatabaseName + '/_all_docs"]', waitTime, false)
       .clickWhenVisible('.fonticon-json')
-      .waitForElementVisible('label[for="checkbox-' + newDocumentName + '"]', waitTime, false)
-      .clickWhenVisible('label[for="checkbox-' + newDocumentName + '"]', waitTime, false)
-      .clickWhenVisible('.bulk-action-component-selector-group button.fonticon-trash', waitTime, false)
+      .waitForElementVisible('input[id="checkbox-' + newDocumentName + '"][type="checkbox"]', waitTime, false)
+      .clickWhenVisible('input[id="checkbox-' + newDocumentName + '"][type="checkbox"]', waitTime, false)
+      .clickWhenVisible('.bulk-action-component-selector-group button.toolbar-btn[icon="fonticon-trash"]', waitTime, false)
       .acceptAlert()
       .waitForElementVisible('.Toastify__toast-container .Toastify__toast--info', waitTime, false)
 
-      .waitForElementVisible('label[for="checkbox-' + newDocumentName + '2' + '"]', waitTime, false)
-      .clickWhenVisible('label[for="checkbox-' + newDocumentName + '2' + '"]', waitTime, false)
-      .clickWhenVisible('.bulk-action-component-selector-group button.fonticon-trash', waitTime, false)
+      .waitForElementVisible('input[id="checkbox-' + newDocumentName + '2' + '"][type="checkbox"]', waitTime, false)
+      .clickWhenVisible('input[id="checkbox-' + newDocumentName + '2' + '"][type="checkbox"]', waitTime, false)
+      .clickWhenVisible('.bulk-action-component-selector-group button.toolbar-btn[icon="fonticon-trash"]', waitTime, false)
       .acceptAlert()
 
       .checkForStringNotPresent(newDatabaseName + '/_all_docs', newDocumentName)
@@ -72,12 +72,12 @@
       .waitForElementPresent('#dashboard-content a[href="database/' + newDatabaseName + '/_all_docs"]', waitTime, false)
       .clickWhenVisible('#dashboard-content a[href="database/' + newDatabaseName + '/_all_docs"]', waitTime, false)
       .clickWhenVisible('#checkbox-' + newDocumentName, waitTime, false)
-      .clickWhenVisible('.bulk-action-component-selector-group button.fonticon-trash', waitTime, false)
+      .clickWhenVisible('.bulk-action-component-selector-group button.toolbar-btn[icon="fonticon-trash"]', waitTime, false)
       .acceptAlert()
       .waitForElementVisible('.Toastify__toast-container .Toastify__toast--info', waitTime, false)
 
       .clickWhenVisible('#checkbox-' + newDocumentName + '2', waitTime, false)
-      .clickWhenVisible('.bulk-action-component-selector-group button.fonticon-trash', waitTime, false)
+      .clickWhenVisible('.bulk-action-component-selector-group button.toolbar-btn[icon="fonticon-trash"]', waitTime, false)
       .acceptAlert()
 
       .checkForStringNotPresent(newDatabaseName + '/_all_docs', newDocumentName)
@@ -123,12 +123,12 @@
       // confirm the design doc appears in the sidebar
       .waitForElementPresent('#sidebar-content span[title="_design/sidebar-update"]', waitTime, false)
 
-      .execute('document.querySelector("div[data-id=\'_design/sidebar-update\']").scrollIntoView();')
-      .clickWhenVisible('div[data-id="_design/sidebar-update"] label[for="checkbox-_design/sidebar-update"]', waitTime, false)
+      .execute('document.querySelector("input[id=\'checkbox-_design/sidebar-update\'][type=\'checkbox\']").scrollIntoView();')
+      .clickWhenVisible('input[id="checkbox-_design/sidebar-update"][type="checkbox"]', waitTime, false)
 
-      .waitForElementPresent('.bulk-action-component-selector-group .fonticon-trash', waitTime, false)
-      .execute('document.querySelector(".bulk-action-component-selector-group .fonticon-trash").scrollIntoView();')
-      .clickWhenVisible('.bulk-action-component-selector-group .fonticon-trash')
+      .waitForElementPresent('.bulk-action-component-selector-group button.toolbar-btn[icon="fonticon-trash"]', waitTime, false)
+      .execute('document.querySelector(".bulk-action-component-selector-group button.toolbar-btn[icon="fonticon-trash"]").scrollIntoView();')
+      .clickWhenVisible('.bulk-action-component-selector-group button.toolbar-btn[icon="fonticon-trash"]')
       .acceptAlert()
 
       // now confirm it's gone
@@ -150,8 +150,8 @@
       .waitForElementPresent('#editor-container', waitTime, false)
       .clickWhenVisible('#doc-editor-actions-panel button[title="Delete"]')
       .waitForElementVisible('.confirmation-modal', waitTime, false)
-      .clickWhenVisible('.confirmation-modal button.btn.btn-primary')
-      .waitForElementNotPresent('.confirmation-modal button.btn-primary', waitTime, true)
+      .clickWhenVisible('.confirmation-modal button.btn.btn-cf-primary')
+      .waitForElementNotPresent('.confirmation-modal button.btn-cf-primary', waitTime, true)
       .waitForElementPresent('.jump-to-doc', waitTime, false)
 
       //check raw JSON
diff --git a/app/addons/documents/tests/nightwatch/doubleEmitResults.js b/app/addons/documents/tests/nightwatch/doubleEmitResults.js
index 4c50e21..ce91b07 100644
--- a/app/addons/documents/tests/nightwatch/doubleEmitResults.js
+++ b/app/addons/documents/tests/nightwatch/doubleEmitResults.js
@@ -24,7 +24,6 @@
       .populateDatabase(newDatabaseName)
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_design/testdesigndoc/_view/stubview')
       .clickWhenVisible('.fonticon-json')
-      .waitForElementPresent('.clearfix', waitTime, false)
       .waitForElementPresent('.doc-row', waitTime, false)
       .execute(function () {
         return document.querySelectorAll('.doc-row').length;
diff --git a/app/addons/documents/tests/nightwatch/mangoIndex.js b/app/addons/documents/tests/nightwatch/mangoIndex.js
index 8593c67..c54670a 100644
--- a/app/addons/documents/tests/nightwatch/mangoIndex.js
+++ b/app/addons/documents/tests/nightwatch/mangoIndex.js
@@ -58,7 +58,7 @@
       .waitForElementPresent('#doc-list', waitTime, false)
       .assert.textContains('#dashboard-lower-content', 'ente_ente_mango_ananas')
       .clickWhenVisible('.bulk-action-component-panel input[type="checkbox"]')
-      .clickWhenVisible('.bulk-action-component-selector-group button.fonticon-trash', waitTime, false)
+      .clickWhenVisible('.bulk-action-component-selector-group button.toolbar-btn[icon="fonticon-trash"]', waitTime, false)
       .acceptAlert()
 
       .checkForStringNotPresent(newDatabaseName + '/_index', '"name":"rocko-artischocko"')
diff --git a/app/addons/documents/tests/nightwatch/queryOptions.js b/app/addons/documents/tests/nightwatch/queryOptions.js
index e0cb801..2b5b70b 100644
--- a/app/addons/documents/tests/nightwatch/queryOptions.js
+++ b/app/addons/documents/tests/nightwatch/queryOptions.js
@@ -26,9 +26,9 @@
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_all_docs')
       .waitForElementNotPresent('.loading-lines', waitTime, false)
       .clickWhenVisible('.control-toggle-queryoptions')
-      .clickWhenVisible('#betweenKeys', waitTime, false)
-      .setValue('#startkey', '"document_2"')
-      .clickWhenVisible('.query-options .btn-secondary')
+      .clickWhenVisible('label[for="betweenKeys"]', waitTime, false)
+      .setValue('input#startkey', '"document_2"')
+      .clickWhenVisible('#query-options-tray #button-options .btn-cf-primary')
       .waitForElementNotPresent('.loading-lines', waitTime, false)
       .clickWhenVisible('.fonticon-json')
       .waitForElementNotPresent('.loading-lines', waitTime, false)
diff --git a/app/addons/documents/tests/nightwatch/queryOptionsCloseBug.js b/app/addons/documents/tests/nightwatch/queryOptionsCloseBug.js
index 8fd4ce2..cc31707 100644
--- a/app/addons/documents/tests/nightwatch/queryOptionsCloseBug.js
+++ b/app/addons/documents/tests/nightwatch/queryOptionsCloseBug.js
@@ -1,3 +1,4 @@
+
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
 // the License at
@@ -27,15 +28,15 @@
       .clickWhenVisible('.fonticon-json')
       .waitForElementNotPresent('.loading-lines', waitTime, false)
       .clickWhenVisible('.control-toggle-queryoptions')
-      .clickWhenVisible('#betweenKeys', waitTime, false)
-      .setValue('#startkey', '"document_2"')
-      .clickWhenVisible('.query-options .btn-secondary')
+      .clickWhenVisible('label[for="betweenKeys"]', waitTime, false)
+      .setValue('input#startkey', '"document_2"')
+      .clickWhenVisible('#query-options-tray #button-options .btn-cf-primary')
       .waitForElementNotPresent('.loading-lines', waitTime, false)
       .waitForElementNotPresent('#doc-list [data-id="document_1"]', waitTime, false)
       .clickWhenVisible('.control-toggle-queryoptions')
-      .clickWhenVisible('.query-options .btn-cancelDark')
+      .clickWhenVisible('#query-options-tray #button-options .btn-cf-cancel')
 
-      .waitForElementNotPresent('.query-options .js-view-query-update', waitTime, false)
+      .waitForElementNotPresent('#query-options_js-view-query-update', waitTime, false)
 
       .end();
   }
diff --git a/app/addons/documents/tests/nightwatch/replicateDatabaseButton.js b/app/addons/documents/tests/nightwatch/replicateDatabaseButton.js
index e13cd45..eb2991b 100644
--- a/app/addons/documents/tests/nightwatch/replicateDatabaseButton.js
+++ b/app/addons/documents/tests/nightwatch/replicateDatabaseButton.js
@@ -31,22 +31,22 @@
   'Shows correct view on replicate database': function (client) {
     const waitTime = client.globals.maxWaitTime,
           baseUrl = client.options.launch_url;
-    const srcDbSelector = '.replication__page .replication__section:nth-child(3) .replication__input-react-select .Select-value-label';
+    const srcDbSelector = 'select#replication-source-local-database-select';
     client
       .loginToGUI()
       .url(baseUrl + '/#/database/' + testDbName + '/_all_docs')
 
-      .clickWhenVisible('.faux-header__doc-header-dropdown-toggle')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-itemwrapper .fonticon-replicate')
+      .clickWhenVisible('#faux-header__doc-header-dropdown-toggle')
+      .clickWhenVisible('a.dropdown-item .fonticon-replicate')
 
       //Wait for replication page to show up
       .waitForElementVisible('.replication__page', waitTime, false)
 
       //Wait for source select to show
-      .waitForElementVisible(srcDbSelector, waitTime, false)
+      .waitForElementVisible(srcDbSelector + " > option", waitTime, false)
 
       //Get the text values
-      .getText(srcDbSelector, function (data) {
+      .getValue(srcDbSelector, function (data) {
         this.verify.ok(data.value === testDbName,
           'Check if database name is filled in source name');
       })
diff --git a/app/addons/documents/tests/nightwatch/resultsToolbar.js b/app/addons/documents/tests/nightwatch/resultsToolbar.js
index 09ffd9d..b8c2c85 100644
--- a/app/addons/documents/tests/nightwatch/resultsToolbar.js
+++ b/app/addons/documents/tests/nightwatch/resultsToolbar.js
@@ -51,9 +51,9 @@
 
       // turn include_docs on through query options
       .clickWhenVisible('.control-toggle-queryoptions')
-      .waitForElementPresent('#qoIncludeDocsLabel', waitTime, false)
-      .clickWhenVisible('#qoIncludeDocsLabel')
-      .clickWhenVisible('.query-options .btn-secondary')
+      .waitForElementPresent('input#qoIncludeDocs', waitTime, false)
+      .clickWhenVisible('input#qoIncludeDocs')
+      .clickWhenVisible('#query-options-tray #button-options .btn-cf-primary')
       .waitForElementPresent('.two-sides-toggle-button', waitTime, false)
       .assert.textContains('.two-sides-toggle-button button.active', 'Table')
 
@@ -61,10 +61,10 @@
       .clickWhenVisible('.fonticon-json')
       .assert.textContains('.two-sides-toggle-button button.active', 'JSON')
       .clickWhenVisible('.control-toggle-queryoptions')
-      .waitForElementPresent('#qoIncludeDocsLabel', waitTime, false)
-      .assert.attributeEquals('#qoIncludeDocs', 'checked', 'true')
-      .clickWhenVisible('#qoIncludeDocsLabel')
-      .clickWhenVisible('.query-options .btn-secondary')
+      .waitForElementPresent('input#qoIncludeDocs', waitTime, false)
+      .assert.attributeEquals('input#qoIncludeDocs', 'checked', 'true')
+      .clickWhenVisible('input#qoIncludeDocs')
+      .clickWhenVisible('#query-options-tray #button-options .btn-cf-primary')
       .waitForElementPresent('.two-sides-toggle-button', waitTime, false)
       .assert.textContains('.two-sides-toggle-button button.active', 'Metadata')
       .end();
diff --git a/app/addons/documents/tests/nightwatch/revBrowser.js b/app/addons/documents/tests/nightwatch/revBrowser.js
index 3256cd5..a670107 100644
--- a/app/addons/documents/tests/nightwatch/revBrowser.js
+++ b/app/addons/documents/tests/nightwatch/revBrowser.js
@@ -43,7 +43,7 @@
 
       .clickWhenVisible('[data-id="button-select-theirs"]')
       .clickWhenVisible('.modal-footer input[type="checkbox"]')
-      .clickWhenVisible('.modal-footer button.btn-danger')
+      .clickWhenVisible('.modal-footer button.btn-cf-danger')
       .clickWhenVisible('.fonticon-json')
 
       .clickWhenVisible('[data-id="zebra"] a')
@@ -89,7 +89,7 @@
 
       .clickWhenVisible('[data-id="button-select-theirs"]')
       .clickWhenVisible('.modal-footer input[type="checkbox"]')
-      .clickWhenVisible('.modal-footer button.btn-danger')
+      .clickWhenVisible('.modal-footer button.btn-cf-danger')
       .clickWhenVisible('.fonticon-json')
       .waitForElementNotVisible('.Toastify__toast-container .Toastify__toast', waitTime, false)
       .clickWhenVisible('[data-id="_design/animals"] a')
diff --git a/app/addons/documents/tests/nightwatch/selectDocViaTypeahead.js b/app/addons/documents/tests/nightwatch/selectDocViaTypeahead.js
index 7480860..065cab8 100644
--- a/app/addons/documents/tests/nightwatch/selectDocViaTypeahead.js
+++ b/app/addons/documents/tests/nightwatch/selectDocViaTypeahead.js
@@ -41,7 +41,7 @@
           .sendKeys(Key.DOWN)
           .sendKeys(Key.ENTER);
       })
-      .waitForElementPresent('.panel-button.upload', waitTime, false)
+      .waitForElementPresent('.panel-section button[title="Upload Attachment"]', waitTime, false)
       .end();
   },
 
@@ -72,7 +72,7 @@
           .sendKeys(Key.DOWN)
           .sendKeys(Key.ENTER);
       })
-      .waitForElementPresent('.panel-button.upload', waitTime, false)
+      .waitForElementPresent('.panel-section button[title="Upload Attachment"]', waitTime, false)
       .end();
   }
 };
diff --git a/app/addons/documents/tests/nightwatch/viewClone.js b/app/addons/documents/tests/nightwatch/viewClone.js
index 518f855..b635356 100644
--- a/app/addons/documents/tests/nightwatch/viewClone.js
+++ b/app/addons/documents/tests/nightwatch/viewClone.js
@@ -25,11 +25,11 @@
       .clickWhenVisible('.fonticon-json')
       .waitForElementPresent('.prettyprint', waitTime, false)
       .assert.textContains('.prettyprint', 'stub')
-      .clickWhenVisible('.index-list .active span', waitTime, true)
-      .clickWhenVisible('.popover-content .fonticon-files-o', waitTime, true)
+      .clickWhenVisible('.index-list .active div.sidebar-sub-item', waitTime, true)
+      .clickWhenVisible('.dropdown-menu span.fonticon-files-o', waitTime, true)
       .waitForElementVisible('#new-index-name', waitTime, true)
       .setValue('#new-index-name', 'cloned-view')
-      .clickWhenVisible('.clone-index-modal .btn-primary', waitTime, true)
+      .clickWhenVisible('.clone-index-modal .btn-cf-primary', waitTime, true)
 
       // now wait for the sidebar to be updated with the new view
       .waitForElementVisible('#testdesigndoc_cloned-view', waitTime, true)
diff --git a/app/addons/documents/tests/nightwatch/viewCreate.js b/app/addons/documents/tests/nightwatch/viewCreate.js
index 5b76ec1..06b7c70 100644
--- a/app/addons/documents/tests/nightwatch/viewCreate.js
+++ b/app/addons/documents/tests/nightwatch/viewCreate.js
@@ -19,8 +19,8 @@
     openDifferentDropdownsAndClick(client)
       .waitForElementPresent('#new-ddoc', waitTime, false)
       .setValue('#new-ddoc', 'test_design_doc-selenium-0')
-      .clearValue('#index-name')
-      .setValue('#index-name', 'furbie')
+      .clearValue('input#index-name')
+      .setValue('input#index-name', 'furbie')
       .execute('\
         var editor = ace.edit("map-function");\
         editor.getSession().setValue("function (doc) { if (doc != \'\') { emit(\'blerg\'); } else { emit(\'nana\'); }  }");\
@@ -40,8 +40,8 @@
     openDifferentDropdownsAndClick(client)
       .waitForElementPresent('#new-ddoc', waitTime, false)
       .setValue('#new-ddoc', 'test_design_doc-selenium-1')
-      .clearValue('#index-name')
-      .setValue('#index-name', 'hasenindex')
+      .clearValue('input#index-name')
+      .setValue('input#index-name', 'hasenindex')
       .execute('\
         var editor = ace.edit("map-function");\
         editor.getSession().setValue("function (doc) { emit(\'hasehase\'); }");\
@@ -61,8 +61,8 @@
     openDifferentDropdownsAndClick(client)
       .waitForElementPresent('#new-ddoc', waitTime, false)
       .setValue('#new-ddoc', 'test_design_doc-selenium-3')
-      .clearValue('#index-name')
-      .setValue('#index-name', 'hasenindex')
+      .clearValue('input#index-name')
+      .setValue('input#index-name', 'hasenindex')
       .execute('\
         var editor = ace.edit("map-function");\
         editor.getSession().setValue("function (doc) { emit(\'hasehase\'); }");\
@@ -84,8 +84,8 @@
     openDifferentDropdownsAndClick(client)
       .waitForElementPresent('#new-ddoc', waitTime, false)
       .setValue('#new-ddoc', 'test_design_doc-selenium-2')
-      .clearValue('#index-name')
-      .setValue('#index-name', 'gaenseindex')
+      .clearValue('input#index-name')
+      .setValue('input#index-name', 'gaenseindex')
       .execute('\
         var editor = ace.edit("map-function");\
         editor.getSession().setValue("function (doc) { emit(\'gansgans\'); }");\
@@ -109,10 +109,10 @@
       .populateDatabase(newDatabaseName)
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_all_docs')
       .clickWhenVisible('#sidebar-tab-testdesigndoc a.dropdown-toggle.icon.fonticon-plus-circled', waitTime, false)
-      .clickWhenVisible('#sidebar-tab-testdesigndoc a[href*="new_view"]', waitTime, false)
-      .waitForElementVisible('#index-name', waitTime, false)
-      .clearValue('#index-name')
-      .setValue('#index-name', 'test-new-view')
+      .clickWhenVisible('div.design-doc-section div.dropdown-menu a[href*="new_view"]')
+      .waitForElementVisible('input#index-name', waitTime, false)
+      .clearValue('input#index-name')
+      .setValue('input#index-name', 'test-new-view')
       .execute('\
         var editor = ace.edit("map-function");\
         editor.getSession().setValue("function (doc) { emit(\'enteente\', 1); }");\
@@ -135,7 +135,7 @@
     .loginToGUI()
     .populateDatabase(newDatabaseName)
     .url(baseUrl + '/#/database/' + newDatabaseName + '/_all_docs')
-    .clickWhenVisible('.faux-header__doc-header-dropdown-toggle')
-    .clickWhenVisible('.faux-header__doc-header-dropdown-itemwrapper a[href*="new_view"]')
+    .clickWhenVisible('#faux-header__doc-header-dropdown-toggle')
+    .clickWhenVisible('div[aria-labelledby="faux-header__doc-header-dropdown-toggle"] a[href*="new_view"]')
     .waitForElementPresent('.index-cancel-link', waitTime, false);
 }
diff --git a/app/addons/documents/tests/nightwatch/viewCreateBadView.js b/app/addons/documents/tests/nightwatch/viewCreateBadView.js
index 39c6414..18d3974 100644
--- a/app/addons/documents/tests/nightwatch/viewCreateBadView.js
+++ b/app/addons/documents/tests/nightwatch/viewCreateBadView.js
@@ -22,12 +22,12 @@
       .loginToGUI()
       .populateDatabase(newDatabaseName)
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_all_docs')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-toggle')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-itemwrapper a[href*="new_view"]')
+      .clickWhenVisible('#faux-header__doc-header-dropdown-toggle')
+      .clickWhenVisible('div.dropdown-menu a[href*="new_view"]')
       .waitForElementVisible('#new-ddoc', waitTime, false)
       .setValue('#new-ddoc', 'test_design_doc-selenium-bad-reduce')
-      .clearValue('#index-name')
-      .setValue('#index-name', 'hasenindex')
+      .clearValue('input#index-name')
+      .setValue('input#index-name', 'hasenindex')
       .clickWhenVisible('select[id="reduce-function-selector"] option[value="_sum"]')
       .execute('\
         var editor = ace.edit("map-function");\
@@ -37,7 +37,7 @@
       .closeNotifications()
       .clickWhenVisible('.control-toggle-queryoptions', waitTime, false)
       .clickWhenVisible('label[for="qoReduce"]', waitTime, false)
-      .clickWhenVisible('.query-options .btn-secondary', waitTime, false)
+      .clickWhenVisible('#query-options-tray #button-options .btn-cf-primary', waitTime, false)
       .waitForElementVisible('div.table-view-docs', waitTime, false)
       .waitForAttribute('.table-view-docs td:nth-child(4)', 'title', function (docContents) {
         return (/_sum function requires/).test(docContents);
@@ -56,7 +56,7 @@
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_design/brokenview/_view/brokenview')
       .clickWhenVisible('.control-toggle-queryoptions', waitTime, false)
       .clickWhenVisible('label[for="qoReduce"]', waitTime, false)
-      .clickWhenVisible('.query-options .btn-secondary', waitTime, false)
+      .clickWhenVisible('#query-options-tray #button-options .btn-cf-primary', waitTime, false)
       .waitForElementVisible('div.table-view-docs', waitTime, false)
       .waitForAttribute('.table-view-docs td:nth-child(4)', 'title', function (docContents) {
         return (/_sum function requires/).test(docContents);
diff --git a/app/addons/documents/tests/nightwatch/viewDelete.js b/app/addons/documents/tests/nightwatch/viewDelete.js
index 44d60b0..ae88439 100644
--- a/app/addons/documents/tests/nightwatch/viewDelete.js
+++ b/app/addons/documents/tests/nightwatch/viewDelete.js
@@ -31,10 +31,10 @@
       // confirm the sidebar shows the testdesigndoc design doc
       .waitForElementVisible('#design-doc-menu-testdesigndoc', waitTime, true)
 
-      .clickWhenVisible('.index-list .active span', waitTime, true)
-      .clickWhenVisible('.popover-content .fonticon-trash', waitTime, true)
-      .clickWhenVisible('.confirmation-modal button.btn-primary', waitTime, true)
-      .waitForElementNotPresent('.confirmation-modal button.btn-primary', waitTime, true)
+      .clickWhenVisible('ul.index-list li.active a.icon', waitTime, true)
+      .clickWhenVisible('ul.index-list li.active .fonticon-trash', waitTime, true)
+      .clickWhenVisible('.confirmation-modal button.btn-cf-primary', waitTime, true)
+      .waitForElementNotPresent('.confirmation-modal button.btn-cf-primary', waitTime, true)
 
       // now wait for the sidebar to have removed the design doc
       .waitForElementNotPresent('#testdesigndoc', waitTime, true)
diff --git a/app/addons/documents/tests/nightwatch/viewEdit.js b/app/addons/documents/tests/nightwatch/viewEdit.js
index f9de809..ac42bee 100644
--- a/app/addons/documents/tests/nightwatch/viewEdit.js
+++ b/app/addons/documents/tests/nightwatch/viewEdit.js
@@ -26,7 +26,7 @@
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_design/testdesigndoc/_view/stubview/edit')
       .waitForElementPresent('.index-cancel-link', waitTime, true)
       .waitForElementNotPresent('.loading-lines', waitTime, true)
-      .waitForElementVisible('#index-name', waitTime, true)
+      .waitForElementVisible('input#index-name', waitTime, true)
       .waitForElementPresent('.faux-header__doc-header-title', waitTime, false)
       .getText('.faux-header__doc-header-title', function (result) {
         const headerContent = result && result.value;
@@ -36,11 +36,11 @@
           `expected header text to contain '${newDatabaseName}' and found '${headerContent}'`
         );
       })
-      .waitForAttribute('#index-name', 'value', function (val) {
+      .waitForAttribute('input#index-name', 'value', function (val) {
         return val === 'stubview';
       })
-      .clearValue('#index-name')
-      .setValue('#index-name', 'hasenindex5000')
+      .clearValue('input#index-name')
+      .setValue('input#index-name', 'hasenindex5000')
 
       .clickWhenVisible('#save-view')
 
@@ -66,7 +66,7 @@
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_design/testdesigndoc/_view/stubview/edit')
       .waitForElementPresent('.index-cancel-link', waitTime, true)
       .waitForElementNotPresent('.loading-lines', waitTime, true)
-      .waitForElementVisible('#index-name', waitTime, true)
+      .waitForElementVisible('input#index-name', waitTime, true)
       .waitForElementPresent('.faux-header__doc-header-title', waitTime, false)
       .getText('.faux-header__doc-header-title', function (result) {
         const headerContent = result && result.value;
@@ -77,7 +77,7 @@
         );
       })
 
-      .waitForAttribute('#index-name', 'value', function (val) {
+      .waitForAttribute('input#index-name', 'value', function (val) {
         return val === 'stubview';
       })
 
@@ -126,8 +126,8 @@
 
       // create the first view
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_all_docs')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-toggle')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-itemwrapper a[href*="new_view"]')
+      .clickWhenVisible('#faux-header__doc-header-dropdown-toggle')
+      .clickWhenVisible('div[aria-labelledby="faux-header__doc-header-dropdown-toggle"].dropdown-menu a[href*="new_view"].dropdown-item ')
       .waitForElementNotPresent('.loading-lines', waitTime, true)
       .waitForElementPresent('.faux-header__doc-header-title', waitTime, false)
       .getText('.faux-header__doc-header-title', function (result) {
@@ -140,8 +140,8 @@
       })
       .waitForElementVisible('#new-ddoc', waitTime, false)
       .setValue('#new-ddoc', 'view1-name')
-      .clearValue('#index-name')
-      .setValue('#index-name', 'view1')
+      .clearValue('input#index-name')
+      .setValue('input#index-name', 'view1')
       .clickWhenVisible('select[id="reduce-function-selector"] option[value="_sum"]')
       .execute('\
         var editor = ace.edit("map-function");\
@@ -152,8 +152,9 @@
       // create the second view
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_all_docs')
 
-      .clickWhenVisible('.faux-header__doc-header-dropdown-toggle')
-      .clickWhenVisible('.faux-header__doc-header-dropdown-itemwrapper a[href*="new_view"]')
+      .clickWhenVisible('#faux-header__doc-header-dropdown-toggle')
+      // new view
+      .clickWhenVisible('div[aria-labelledby="faux-header__doc-header-dropdown-toggle"].dropdown-menu a[href*="new_view"].dropdown-item ')
 
       .waitForElementPresent('.index-cancel-link', waitTime, false)
       .waitForElementVisible('#new-ddoc', waitTime, false)
@@ -169,8 +170,8 @@
       })
 
       .setValue('#new-ddoc', 'view2-name')
-      .clearValue('#index-name')
-      .setValue('#index-name', 'view2')
+      .clearValue('input#index-name')
+      .setValue('input#index-name', 'view2')
       .clickWhenVisible('select[id="reduce-function-selector"] option[value="_count"]')
       .execute('\
         var editor = ace.edit("map-function");\
@@ -243,7 +244,8 @@
       })
 
       .waitForElementPresent('.index-cancel-link', waitTime, true)
-      .waitForElementVisible('.styled-select select', waitTime, true)
+      //aa
+      .waitForElementVisible('select#reduce-function-selector', waitTime, true)
       .waitForElementNotPresent('.loading-lines', waitTime, true)
       .clickWhenVisible('select[id="faux__edit-view__design-doc"] option[value="new-doc"]')
 
diff --git a/app/addons/documents/tests/nightwatch/viewQueryOptions.js b/app/addons/documents/tests/nightwatch/viewQueryOptions.js
index 75743ef..c59fcf7 100644
--- a/app/addons/documents/tests/nightwatch/viewQueryOptions.js
+++ b/app/addons/documents/tests/nightwatch/viewQueryOptions.js
@@ -24,9 +24,9 @@
       .loginToGUI()
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_design/keyview/_view/keyview')
       .clickWhenVisible('.control-toggle-queryoptions')
-      .clickWhenVisible('#byKeys', waitTime, false)
-      .setValue('#keys-input', '["document_1"]')
-      .clickWhenVisible('.query-options .btn-secondary')
+      .clickWhenVisible('label[for="byKeys"]', waitTime, false)
+      .setValue('textarea#keys-input', '["document_1"]')
+      .clickWhenVisible('#query-options-tray #button-options .btn-cf-primary')
       .clickWhenVisible('.fonticon-json')
       .waitForElementNotPresent('#doc-list [data-id="document_2"]', waitTime, false)
       .assert.not.elementPresent('#doc-list [data-id="document_2"]')
@@ -46,9 +46,9 @@
       .loginToGUI()
       .url(baseUrl + '/#/database/' + newDatabaseName + '/_design/keyview/_view/keyview')
       .clickWhenVisible('.control-toggle-queryoptions', waitTime, false)
-      .clickWhenVisible('#byKeys', waitTime, false)
-      .setValue('#keys-input', '["document_1",\n"document_2"]')
-      .clickWhenVisible('.query-options .btn-secondary')
+      .clickWhenVisible('label[for="byKeys"]', waitTime, false)
+      .setValue('textarea#keys-input', '["document_1",\n"document_2"]')
+      .clickWhenVisible('#query-options-tray #button-options .btn-cf-primary')
       .clickWhenVisible('.fonticon-json')
       .waitForElementNotPresent('#doc-list [data-id="document_0"]', waitTime, false)
       .assert.not.elementPresent('#doc-list [data-id="document_0"]')
diff --git a/app/addons/fauxton/appwrapper.js b/app/addons/fauxton/appwrapper.js
index 522454f..0dc7973 100644
--- a/app/addons/fauxton/appwrapper.js
+++ b/app/addons/fauxton/appwrapper.js
@@ -82,7 +82,7 @@
     return (
       <div>
         <ToastContainer
-          className='toast-container'
+          className='toastify-toast-container'
           position="top-right"
           autoClose={5000}
           closeButton={false}
diff --git a/app/addons/fauxton/assets/less/components.less b/app/addons/fauxton/assets/less/components.less
deleted file mode 100644
index 0be4844..0000000
--- a/app/addons/fauxton/assets/less/components.less
+++ /dev/null
@@ -1,72 +0,0 @@
-@import "../../../../../assets/less/variables.less";
-@import "../../../../../assets/less/bootstrap/variables.less";
-@import "../../../../../assets/less/bootstrap/mixins.less";
-
-.api-bar-tray {
-  padding: 16px 20px;
-
-  input[type="text"].text-field-to-copy {
-    .border-radius(5px 0 0 5px);
-  }
-  .input-append.input-prepend {
-    margin-bottom: 0;
-
-    .btn {
-      background-color: @secondaryBlue;
-      color: @buttonText;
-      margin-left: -1px;
-      padding: 10px 10px 9px;
-      border: none;
-      line-height: 1.5em;
-      &:hover{
-        background-color: #cbcbcb;
-      }
-    }
-
-    .icon-question-sign {
-      margin-left: 3px;
-      color: @secondaryBlue;
-      &:hover {
-        color: @hoverHighlight;
-      }
-    }
-  }
-}
-
-.api-bar-tray:before {
-  right: 80px;
-}
-
-.clipboard-copy-element {
-  i:before {
-    margin-right: 0px;
-  }
-
-}
-
-button.clipboard-copy-element {
-  background: transparent;
-  border: 0;
-  &:hover {
-    color: @hoverHighlight;
-  }
-}
-
-#perma-warning {
-  background-color: white;
-  height: 3.5rem;
-  border-bottom-style: solid;
-  border-width: 2px;
-  border-top-style: solid;
-  border-color: #B11925; 
-  overflow-y: auto;
-}
-
-.perma-warning__content {
-  margin: 0rem;
-  padding: 0.5rem 1rem 0.5rem 1rem;
-  color: #B11925;
-  top: 50%;
-  transform: translateY(-50%);
-  position: relative;
-}
diff --git a/app/addons/fauxton/assets/less/fauxton.less b/app/addons/fauxton/assets/less/fauxton.less
deleted file mode 100644
index c248f69..0000000
--- a/app/addons/fauxton/assets/less/fauxton.less
+++ /dev/null
@@ -1,2 +0,0 @@
-@import "components.less";
-@import "navigation.less";
diff --git a/app/addons/fauxton/assets/less/navigation.less b/app/addons/fauxton/assets/less/navigation.less
deleted file mode 100644
index 4d04553..0000000
--- a/app/addons/fauxton/assets/less/navigation.less
+++ /dev/null
@@ -1,223 +0,0 @@
-.faux-navbar {
-  background-color: @brandDark2;
-  position: absolute;
-  left: 0;
-  top: 0;
-  bottom: 0;
-  z-index: 5;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-
-.faux-navbar nav {
-  height: 100%;
-}
-
-.faux-navbar__linkcontainer {
-  display: flex;
-  flex-direction: column;
-  justify-content: space-between;
-  height: 100%;
-}
-
-.faux-navbar__itemarea {
-  .box-sizing(border-box);
-  border-bottom: 1px solid @brandDark2;
-  height: 48px;
-  padding: 10px 20px;
-  line-height: 24px;
-}
-
-.faux-navbar__version-footer {
-  color: @buttonText;
-  font-size: 10px;
-  text-align: center;
-  background-color: @brandDark2;
-  padding-bottom: 10px;
-}
-
-.faux-navbar__burger {
-  background-color: @brandDark2;
-  padding: 19px 0 18px 20px;
-  height: 65px;
-}
-
-.faux-navbar--narrow {
-  width: @collapsedNavWidth;
-}
-
-.faux-navbar--wide {
-  width: @navWidth;
-}
-
-.faux-navbar__burger:hover .faux-navbar__burger__icon {
-  color: @navIconActive;
-}
-
-.faux-navbar__burger {
-  background-color: @brandDark2;
-  padding: 18px 0 18px 20px;  // left padding to 20px to match the other icons
-  // Set min-height and line-height so the row height doesn't change since the burger and close icons have different font sizes.
-  min-height: 64px;
-  line-height: 32px;
-}
-
-.faux-navbar__burger__icon {
-  color: @navIconColor;
-  font-size: 24px;  // reduce to 24px to match the other navbar icons
-}
-
-.faux-navbar__link, .faux-logout__link, .faux-login__link {
-  display: block;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-.faux-navbar__link--active {
-  background-color: @brandHighlight;
-  text-decoration: none;
-}
-
-.faux-navbar__link--inactive {
-  background-color: @brandDark1;
-}
-
-.faux-navbar__link:hover, .faux-logout__link:hover, .faux-login__link:hover {
-  background-color: @hoverHighlight;
-  text-decoration: none;
-}
-
-.faux-navbar__link:active, .faux-navbar__link:focus {
-  text-decoration: none;
-}
-
-.faux-navbar__link:hover .faux-navbar__icon:before {
-  color: @navIconActive;
-}
-
-.faux-navbar__link--active .faux-navbar__icon:before {
-  color: @navIconActive;
-}
-
-.faux-navbar__icon {
-  margin-right: 14px;
-  color: @navIconColor;
-  font-size: 24px;
-  vertical-align: middle;
-  position: relative;
-}
-
-.faux-navbar__icon-badge:after {
-  content:"";
-  position: absolute;
-  background: @hoverHighlight;
-  border: 1px solid @hoverHighlight;
-  height:8px;
-  width:8px;
-  top:0;
-  right:-2px;
-  text-align: center;
-  font-size: 0.5rem;
-  border-radius: 50%;
-}
-
-.faux-navbar__link:hover .faux-navbar__icon-badge:after {
-  border-color: @navIconActive;
-}
-
-.faux-navbar__link--active .faux-navbar__icon-badge:after {
-  border-color: @navIconActive;
-}
-
-.faux-navbar__text {
-  margin: 0;
-  color: @buttonText;
-  vertical-align: middle;
-  font-size: 16px;
-  font-weight: normal;
-  font-family: Helvetica,sans-serif;
-  font-weight: 400;
-}
-
-.faux-navbar__logout__text {
-  font-size: 12px;
-  color: @buttonText;
-}
-
-.faux-navbar__logout__textcontainer {
-  text-align: center;
-  color: @buttonText;
-}
-
-.faux-navbar__logout__textcontainer--narrow {
-  padding-bottom: 4px;
-  padding: 15px 0;
-}
-
-.faux-navbar__logout__textcontainer--wide {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  padding: 15px;
-}
-
-.faux-navbar__login__textcontainer {
-  text-align: center;
-  color: @buttonText;
-}
-
-.faux-navbar__login__textcontainer--narrow {
-  padding-bottom: 4px;
-  padding: 15px 0;
-}
-
-.faux-navbar__login__textcontainer--wide {
-  padding: 15px;
-}
-
-.faux-navbar__brand {
-  margin: 20px 0 20px 0;
-  height: 50px;
-  padding: 10px 10px 10px 10px;
-  float: none;
-  background: @brandDark2;
-}
-
-.faux-navbar__brand-logo {
-  display: block;
-  height: 100%;
-  margin-top: 10px;
-}
-
-.faux-navbar__brand-logo--wide {
-  background: url(@largeLogoPath) no-repeat 23px 0px;
-  background-size: 150px;
-  width: 200px;
-}
-
-.faux-navbar__brand-logo--narrow {
-  width: 43px;
-  height: 40px;
-  background: url(@smallLogoPath) no-repeat 3px 0;
-  background-size: 40px;
-}
-
-.faux-navbar__footer {
-  display: flex;
-  flex-direction: column;
-  justify-content: flex-end;
-  height: 100%;
-  min-height: 200px;
-  width: 100%;
-}
-
-.faux-navbar__logout__username {
-  color: @buttonText;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  max-width: 150px;
-  white-space: nowrap;
-  padding-right: 5px;
-  padding-left: 10px;
-  font-size: 12px;
-}
diff --git a/app/addons/fauxton/assets/scss/_components.scss b/app/addons/fauxton/assets/scss/_components.scss
new file mode 100644
index 0000000..fe33225
--- /dev/null
+++ b/app/addons/fauxton/assets/scss/_components.scss
@@ -0,0 +1,35 @@
+
+.clipboard-copy-element {
+  i:before {
+    margin-right: 0px;
+  }
+}
+
+button.clipboard-copy-element {
+  background: transparent;
+  border: 0;
+  color: $cf-text-fonticon01;
+
+  &:hover {
+    color: $cf-link-color-hover;
+  }
+}
+
+#perma-warning {
+  background-color: $cf-white;
+  height: 3.5rem;
+  border-bottom-style: solid;
+  border-width: 2px;
+  border-top-style: solid;
+  border-color: $cf-brand-highlight;
+  overflow-y: auto;
+}
+
+.perma-warning__content {
+  margin: 0rem;
+  padding: 0.5rem 1rem 0.5rem 1rem;
+  color: $cf-brand-highlight;
+  top: 50%;
+  transform: translateY(-50%);
+  position: relative;
+}
diff --git a/app/addons/fauxton/assets/scss/_navigation.scss b/app/addons/fauxton/assets/scss/_navigation.scss
new file mode 100644
index 0000000..6426a26
--- /dev/null
+++ b/app/addons/fauxton/assets/scss/_navigation.scss
@@ -0,0 +1,235 @@
+.faux-navbar {
+  background-color: $cf-navbar-bg;
+  position: absolute;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  z-index: 5;
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+
+.faux-navbar nav {
+  height: 100%;
+}
+
+.faux-navbar__linkcontainer {
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  height: 100%;
+}
+
+.faux-navbar__itemarea {
+  box-sizing: border-box;
+  border-bottom: 1px solid $cf-navbar-bg;
+  height: 48px;
+  padding: 10px 20px;
+  line-height: 24px;
+}
+
+.faux-navbar__version-footer {
+  color: $cf-navbar-color;
+  font-size: 10px;
+  text-align: center;
+  background-color: $cf-navbar-bg;
+  padding-bottom: 10px;
+}
+
+.faux-navbar__burger {
+  background-color: $cf-navbar-bg;
+  padding: 18px 0 18px 20px;
+  min-height: 64px;
+  line-height: 32px;
+}
+
+.faux-navbar--narrow {
+  width: $cf-navbar-width-collapsed;
+}
+
+.faux-navbar--wide {
+  width: $cf-navbar-width;
+}
+
+.faux-navbar__burger:hover .faux-navbar__burger__icon {
+  color: $cf-navbar-item-color-hover;
+}
+
+.faux-navbar__burger__icon {
+  color: $cf-navbar-item-color;
+  font-size: 24px;
+}
+
+.faux-navbar__link,
+.faux-logout__link,
+.faux-login__link {
+  display: block;
+  text-decoration: none;
+  cursor: pointer;
+}
+
+.faux-navbar__link--active {
+  background-color: $cf-navbar-item-bg-active;
+  text-decoration: none;
+}
+
+.faux-navbar__link--inactive {
+  background-color: $cf-navbar-item-bg;
+}
+
+.faux-navbar__link:hover,
+.faux-logout__link:hover,
+.faux-login__link:hover {
+  background-color: $cf-navbar-item-bg-hover;
+  text-decoration: none;
+}
+
+.faux-logout__link:hover {
+  .faux-navbar__logout__text, .faux-navbar__logout__username {
+    color: $cf-navbar-item-color-hover;
+  }
+}
+
+.faux-navbar__link:active,
+.faux-navbar__link:focus {
+  text-decoration: none;
+}
+
+.faux-navbar__link:hover {
+  .faux-navbar__icon:before {
+    color: $cf-navbar-item-color-hover;
+  }
+  .faux-navbar__text {
+    color: $cf-navbar-item-color-hover;
+  }
+}
+
+.faux-navbar__link--active {
+  .faux-navbar__icon:before {
+    color: $cf-navbar-item-color-active;
+  }
+  .faux-navbar__text {
+    color: $cf-navbar-item-color-active;
+  }
+}
+
+.faux-navbar__icon {
+  margin-right: 14px;
+  color: $cf-navbar-item-color;
+  font-size: 24px;
+  vertical-align: middle;
+  position: relative;
+}
+
+.faux-navbar__icon-badge:after {
+  content: "";
+  display: inline-block;
+  position: relative;
+  top: -42px;
+  right: 8px;
+  background: $cf-navbar-item-badge-bg;
+  border: 1px solid $cf-navbar-item-badge-bg;
+  height: 8px;
+  width: 8px;
+  text-align: center;
+  font-size: 0.5rem;
+  border-radius: 50%;
+}
+
+.faux-navbar__link:hover .faux-navbar__icon-badge:after {
+  border-color: $cf-navbar-item-badge-bg-hover;
+  background-color: $cf-navbar-item-badge-bg-hover;
+}
+
+.faux-navbar__link--active .faux-navbar__icon-badge:after {
+  border-color: $cf-navbar-item-badge-bg-active;
+  background-color: $cf-navbar-item-badge-bg-active;
+}
+
+.faux-navbar__text {
+  color: $cf-navbar-color;
+  vertical-align: middle;
+}
+
+.faux-navbar__logout__text {
+  font-size: 0.75rem;
+  color: $cf-navbar-color;
+}
+
+.faux-navbar__logout__textcontainer {
+  text-align: center;
+  color: $cf-navbar-color;
+}
+
+.faux-navbar__logout__textcontainer--narrow {
+  padding-bottom: 4px;
+  padding: 15px 0;
+}
+
+.faux-navbar__logout__textcontainer--wide {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  padding: 15px;
+}
+
+.faux-navbar__login__textcontainer {
+  text-align: center;
+  color: $cf-navbar-color;
+}
+
+.faux-navbar__login__textcontainer--narrow {
+  padding-bottom: 4px;
+  padding: 15px 0;
+}
+
+.faux-navbar__login__textcontainer--wide {
+  padding: 15px;
+}
+
+.faux-navbar__brand {
+  margin: 20px 0 20px 0;
+  height: 50px;
+  padding: 10px 10px 10px 10px;
+  float: none;
+  background: $cf-navbar-bg;
+}
+
+.faux-navbar__brand-logo {
+  display: block;
+  height: 100%;
+  margin-top: 10px;
+}
+
+.faux-navbar__brand-logo--wide {
+  background: url($largeLogoPath) no-repeat 23px 0px;
+  background-size: 150px;
+  width: 200px;
+}
+
+.faux-navbar__brand-logo--narrow {
+  width: 43px;
+  height: 40px;
+  background: url($smallLogoPath) no-repeat 3px 0;
+  background-size: 40px;
+}
+
+.faux-navbar__footer {
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-end;
+  height: 100%;
+  min-height: 200px;
+  width: 100%;
+}
+
+.faux-navbar__logout__username {
+  color: $cf-navbar-color;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  max-width: 150px;
+  white-space: nowrap;
+  padding-right: 5px;
+  padding-left: 10px;
+  font-size: 12px;
+}
diff --git a/app/addons/fauxton/assets/scss/fauxton.scss b/app/addons/fauxton/assets/scss/fauxton.scss
new file mode 100644
index 0000000..f7dd315
--- /dev/null
+++ b/app/addons/fauxton/assets/scss/fauxton.scss
@@ -0,0 +1,4 @@
+
+@import "../../../../../assets/scss/variables";
+@import "components";
+@import "navigation";
diff --git a/app/addons/fauxton/base.js b/app/addons/fauxton/base.js
index a1bb98e..25f575c 100644
--- a/app/addons/fauxton/base.js
+++ b/app/addons/fauxton/base.js
@@ -15,7 +15,7 @@
 import * as NavigationActions from './navigation/actions';
 import navigationReducers from './navigation/reducers';
 import notificationsReducer from './notifications/reducers';
-import './assets/less/fauxton.less';
+import './assets/scss/fauxton.scss';
 
 const Fauxton = FauxtonAPI.addon();
 
diff --git a/app/addons/fauxton/components.js b/app/addons/fauxton/components.js
index 025d845..7275866 100644
--- a/app/addons/fauxton/components.js
+++ b/app/addons/fauxton/components.js
@@ -1,4 +1,4 @@
-import FauxtonAPI from "../../core/api";
+
 
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
@@ -13,13 +13,9 @@
 // the License.
 
 import PropTypes from 'prop-types';
-
 import React from "react";
-import ReactDOM from "react-dom";
-import { Modal } from "react-bootstrap";
-
-// import "velocity-animate/velocity";
-// import "velocity-animate/velocity.ui";
+import { Button, Modal } from "react-bootstrap";
+import FauxtonAPI from "../../core/api";
 
 
 // formats a block of code and pretty-prints it in the page. Currently uses the prettyPrint plugin
@@ -95,7 +91,7 @@
   createItemsForPage = (visiblePages) => {
     return _.range(visiblePages.from, visiblePages.to).map((i) => {
       return (
-        <li key={i} className={(this.props.page === i ? 'active' : null)}>
+        <li key={i} className={'page-item ' + (this.props.page === i ? 'active' : '')}>
           {this.getLink(i, i)}
         </li>
       );
@@ -111,14 +107,15 @@
     };
   }
 
-  getLink = (i, label) => {
+  getLink = (i, label, fontIcon) => {
+    const linkClass = fontIcon ? `page-link ${fontIcon}` : 'page-link';
     if (this.props.onClick) {
       return (
-        <a onClick={this.getOnPageClick(i)} dangerouslySetInnerHTML={{__html: label}}></a>
+        <a className={linkClass} onClick={this.getOnPageClick(i)}>{label}</a>
       );
     }
     return (
-      <a href={this.props.urlPrefix + i + this.props.urlSuffix} dangerouslySetInnerHTML={{__html: label}}></a>
+      <a className={linkClass} href={this.props.urlPrefix + i + this.props.urlSuffix}>{label}</a>
     );
   };
 
@@ -135,12 +132,12 @@
 
     return (
       <ul className="pagination">
-        <li className={(this.props.page === 1 ? "disabled" : null)}>
-          {this.getLink(prevPage, '&laquo;')}
+        <li className={'page-item ' + (this.props.page === 1 ? "disabled" : '')}>
+          {this.getLink(prevPage, '', 'fonticon-left-open')}
         </li>
         {rangeItems}
-        <li className={(this.props.page < totalPages ? null : "disabled")}>
-          {this.getLink(nextPage, '&raquo;')}
+        <li className={'page-item ' + (this.props.page < totalPages ? '' : "disabled")}>
+          {this.getLink(nextPage, '', 'fonticon-right-open')}
         </li>
       </ul>
     );
@@ -161,10 +158,10 @@
 
   static defaultProps = {
     visible: false,
-    title: 'Please confirm',
+    title: 'Confirmation',
     text: '',
-    successButtonLabel: 'Okay',
-    buttonClass: 'btn-primary'
+    successButtonLabel: 'Ok',
+    buttonVariant: 'cf-primary'
   };
 
   close = (e) => {
@@ -179,14 +176,13 @@
     if (!_.isString(this.props.text)) {
       content = this.props.text;
     }
-    const btnClasses = 'btn ' + this.props.buttonClass;
     const closeButton = this.props.onClose ? (
-      <a href="#" data-bypass="true" className="cancel-link" onClick={this.close}>Cancel</a>
+      <Button href="#" data-bypass="true" variant="cf-cancel" className="cancel-link" onClick={this.close}>Cancel</Button>
     ) : null;
     const submitButton = this.props.onSubmit ? (
-      <button className={btnClasses} onClick={this.props.onSubmit}>
+      <Button variant={this.props.buttonVariant} onClick={this.props.onSubmit}>
         <i className="fonticon-ok-circled"></i> {this.props.successButtonLabel}
-      </button>
+      </Button>
     ) : null;
     return (
       <Modal dialogClassName="confirmation-modal" show={this.props.visible} onHide={this.close}>
diff --git a/app/addons/fauxton/navigation/__tests__/navbar-test.js b/app/addons/fauxton/navigation/__tests__/navbar-test.js
index 8bb3978..fbcb73a 100644
--- a/app/addons/fauxton/navigation/__tests__/navbar-test.js
+++ b/app/addons/fauxton/navigation/__tests__/navbar-test.js
@@ -63,8 +63,8 @@
     const navbar = mount(<NavBar
       {...defaultProps}
       navLinks={navLinks}/>);
-    expect(navbar.find('div[data-nav-name="WithoutBadge"] i.faux-navbar__icon-badge').length).toBe(0);
-    expect(navbar.find('div[data-nav-name="WithBadge"] i.faux-navbar__icon-badge').length).toBe(1);
+    expect(navbar.find('div[data-nav-name="WithoutBadge"].faux-navbar__icon-badge').length).toBe(0);
+    expect(navbar.find('div[data-nav-name="WithBadge"].faux-navbar__icon-badge').length).toBe(1);
   });
 
 });
diff --git a/app/addons/fauxton/navigation/__tests__/navlink-test.js b/app/addons/fauxton/navigation/__tests__/navlink-test.js
index 3c4a7c9..2afede9 100644
--- a/app/addons/fauxton/navigation/__tests__/navlink-test.js
+++ b/app/addons/fauxton/navigation/__tests__/navlink-test.js
@@ -54,7 +54,7 @@
     };
     it('is not displayed when not set', () => {
       const linkEl = mount(<NavLink link={aLinkNoBadge} active={"Databases"} isMinimized={false} />);
-      expect(linkEl.find('i.faux-navbar__icon-badge').length).toBe(0);
+      expect(linkEl.find('div.faux-navbar__icon-badge').length).toBe(0);
     });
 
     const aLinkWithBadge = {
@@ -65,7 +65,7 @@
     };
     it('is displayed when set to true', () => {
       const linkEl = mount(<NavLink link={aLinkWithBadge} active={"Databases"} isMinimized={false} />);
-      expect(linkEl.find('i.faux-navbar__icon-badge').length).toBe(1);
+      expect(linkEl.find('div.faux-navbar__icon-badge').length).toBe(1);
     });
   });
 });
diff --git a/app/addons/fauxton/navigation/components/LogoutButton.js b/app/addons/fauxton/navigation/components/LogoutButton.js
index 80427f6..f69865b 100644
--- a/app/addons/fauxton/navigation/components/LogoutButton.js
+++ b/app/addons/fauxton/navigation/components/LogoutButton.js
@@ -34,7 +34,7 @@
         &nbsp;
         {isMinimized ?
           null :
-          <span className="faux-navbar__logout__username">{_.escape(username)}</span>
+          <span title={username} className="faux-navbar__logout__username">{_.escape(username)}</span>
         }
       </div>
     </a>
diff --git a/app/addons/fauxton/navigation/components/NavLink.js b/app/addons/fauxton/navigation/components/NavLink.js
index ec21120..cbe5778 100644
--- a/app/addons/fauxton/navigation/components/NavLink.js
+++ b/app/addons/fauxton/navigation/components/NavLink.js
@@ -36,15 +36,16 @@
     linkIcon = (
       <i aria-hidden="true" className={classNames(
         link.icon,
-        'fonticon faux-navbar__icon',
-        {'faux-navbar__icon-badge': link.badge})}>
+        'fonticon faux-navbar__icon')}>
       </i>
     );
   }
 
   return (
     <a aria-current={isActive ? "page" : null } aria-label={link.title} className={linkClass} href={link.href} target={link.target ? '_blank' : null} rel="noreferrer noopener" data-bypass={link.target ? 'true' : null}>
-      <div data-nav-name={link.title} className="faux-navbar__itemarea">
+      <div data-nav-name={link.title} className={classNames(
+        "faux-navbar__itemarea",
+        {'faux-navbar__icon-badge': link.badge})}>
         {linkIcon}
         {linkTitle}
       </div>
diff --git a/app/addons/fauxton/notifications/__tests__/components.test.js b/app/addons/fauxton/notifications/__tests__/components.test.js
index 34c3248..4c372c5 100644
--- a/app/addons/fauxton/notifications/__tests__/components.test.js
+++ b/app/addons/fauxton/notifications/__tests__/components.test.js
@@ -117,7 +117,7 @@
       clearAllNotifications={stub}
       filter={'all'} />);
 
-    panelEl.find('footer input').simulate('click');
+    panelEl.find('footer button').simulate('click');
     sinon.assert.calledOnce(stub);
   });
 });
diff --git a/app/addons/fauxton/notifications/components/NotificationCenterPanel.js b/app/addons/fauxton/notifications/components/NotificationCenterPanel.js
index 9657035..2a4ef86 100644
--- a/app/addons/fauxton/notifications/components/NotificationCenterPanel.js
+++ b/app/addons/fauxton/notifications/components/NotificationCenterPanel.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
+import { Button } from 'react-bootstrap';
 import {TransitionMotion, spring, presets} from 'react-motion';
 import NotificationPanelRow from './NotificationPanelRow';
 
@@ -130,11 +131,9 @@
           </div>
 
           <footer>
-            <input
-              type="button"
-              value="Clear All"
-              className="btn btn-small btn-secondary"
-              onClick={this.props.clearAllNotifications} />
+            <Button type="button" variant="cf-secondary" onClick={this.props.clearAllNotifications}>
+              Clear All
+            </Button>
           </footer>
         </div>
 
diff --git a/app/addons/fauxton/notifications/components/NotificationPanelRow.js b/app/addons/fauxton/notifications/components/NotificationPanelRow.js
index e54c21e..36e1d6a 100644
--- a/app/addons/fauxton/notifications/components/NotificationPanelRow.js
+++ b/app/addons/fauxton/notifications/components/NotificationPanelRow.js
@@ -40,14 +40,9 @@
     // we can safely do this because the store ensures all notifications are of known types
     const rowIconClasses = 'fonticon ' + iconMap[this.props.item.type];
     const hidden = (this.props.filter === 'all' || this.props.filter === this.props.item.type) ? false : true;
-    const {style} = this.props;
-    const {opacity, height} = style;
-    if (opacity === 0 && height === 0) {
-      return null;
-    }
     // N.B. wrapper <div> needed to ensure smooth hide/show transitions
     return (
-      <li style={{opactiy: opacity, height: height + 'px', borderBottomColor: `rgba(34, 34, 34, ${opacity})`}} aria-hidden={hidden}>
+      <li aria-hidden={hidden}>
         <div className="flex-layout flex-row">
           <span className={rowIconClasses}></span>
           <div className="flex-body">
diff --git a/app/addons/fauxton/tests/nightwatch/highlightsidebar.js b/app/addons/fauxton/tests/nightwatch/highlightsidebar.js
index 871666d..3b74082 100644
--- a/app/addons/fauxton/tests/nightwatch/highlightsidebar.js
+++ b/app/addons/fauxton/tests/nightwatch/highlightsidebar.js
@@ -23,7 +23,7 @@
       .waitForElementPresent('.add-new-database-btn', waitTime, false)
       .click('a[href="#/replication"]')
       .pause(1000)
-      .waitForElementVisible('.replication__activity_header-btn', waitTime, false)
+      .waitForElementVisible('#new-replication-btn', waitTime, false)
       .assert.hasClass('a[href="#/replication"]', 'faux-navbar__link--active')
       .end();
   }
diff --git a/app/addons/news/assets/less/news.less b/app/addons/news/assets/less/news.less
deleted file mode 100644
index d3cd9cf..0000000
--- a/app/addons/news/assets/less/news.less
+++ /dev/null
@@ -1,23 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-.news-page {
-  width: 100%;
-  height: 100%;
-
-  .news-checkbox {
-    margin-top: 8px;
-    input {
-      margin: 0 4px 0 0;
-    }
-  }
-}
diff --git a/app/addons/verifyinstall/assets/less/verifyinstall.less b/app/addons/news/assets/scss/news.scss
similarity index 91%
rename from app/addons/verifyinstall/assets/less/verifyinstall.less
rename to app/addons/news/assets/scss/news.scss
index e084cb3..88535cb 100644
--- a/app/addons/verifyinstall/assets/less/verifyinstall.less
+++ b/app/addons/news/assets/scss/news.scss
@@ -10,7 +10,7 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-#start {
-  margin-bottom: 20px;
+.news-page {
+  width: 100%;
+  height: 100%;
 }
-
diff --git a/app/addons/news/base.js b/app/addons/news/base.js
index cebd785..32307cf 100644
--- a/app/addons/news/base.js
+++ b/app/addons/news/base.js
@@ -12,7 +12,7 @@
 
 import FauxtonAPI from "../../core/api";
 import News from "./routes";
-import "./assets/less/news.less";
+import "./assets/scss/news.scss";
 
 News.initialize = function () {
   FauxtonAPI.addHeaderLink({
diff --git a/app/addons/news/components.js b/app/addons/news/components.js
index b4581b8..83e328d 100644
--- a/app/addons/news/components.js
+++ b/app/addons/news/components.js
@@ -9,33 +9,35 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
-import app from "../../app";
-
-import React from "react";
+import app from '../../app';
+import React from 'react';
+import { Button, Form } from 'react-bootstrap';
 
 const LoadNewsButton = ({ showNews, isChecked, toggleChange }) => {
   return (
     <div>
       <p>
-        When you click this button, you are requesting content and sharing your IP address with <a href="https://blog.couchdb.org/">blog.couchdb.org</a> which is edited by the Apache CouchDB PMC and maintained by <a href="https://wordpress.com/">wordpress.com</a>.
+        When you click this button, you are requesting content and sharing your
+        IP address with <a href="https://blog.couchdb.org/">blog.couchdb.org</a>{' '}
+        which is edited by the Apache CouchDB PMC and maintained by{' '}
+        <a href="https://wordpress.com/">wordpress.com</a>.
       </p>
       <p>
         If you don’t want to share your IP address, do not click the button.
       </p>
-      <button className="btn btn-primary" onClick={showNews}>Load News</button>
-      <label className="news-checkbox">
-        <input type="checkbox"
-          checked={isChecked}
-          onChange={toggleChange}
-        />
-        Remember my choice
-      </label>
+      <Button onClick={showNews} variant="cf-primary" className="mb-3">Load News</Button>
+      <Form.Check
+        type='checkbox'
+        checked={isChecked}
+        onChange={toggleChange}
+        label='Remember my choice'
+      />
     </div>
   );
 };
 
 class NewsPage extends React.Component {
-  constructor (props) {
+  constructor(props) {
     super(props);
     this.showNews = this.showNews.bind(this);
     this.toggleChange = this.toggleChange.bind(this);
@@ -44,7 +46,7 @@
 
     this.state = {
       showNews: allowsIpSharing ? true : false,
-      allowsIpSharing
+      allowsIpSharing,
     };
   }
 
@@ -59,23 +61,28 @@
   }
 
   render() {
-    let newsContent = <LoadNewsButton
-      showNews={this.showNews}
-      toggleChange={this.toggleChange}
-      isChecked={this.state.allowsIpSharing}></LoadNewsButton>;
+    let newsContent = (
+      <LoadNewsButton
+        showNews={this.showNews}
+        toggleChange={this.toggleChange}
+        isChecked={this.state.allowsIpSharing}
+      ></LoadNewsButton>
+    );
 
     if (this.state.showNews) {
-      newsContent = <iframe src="https://blog.couchdb.org" width="100%" height="100%"></iframe>;
+      newsContent = (
+        <iframe
+          src="https://blog.couchdb.org"
+          width="100%"
+          height="100%"
+        ></iframe>
+      );
     }
 
-    return (
-      <div className="news-page">
-        {newsContent}
-      </div>
-    );
+    return <div className="news-page">{newsContent}</div>;
   }
 }
 
 export default {
-  NewsPage: NewsPage
+  NewsPage: NewsPage,
 };
diff --git a/app/addons/permissions/__tests__/container-test.js b/app/addons/permissions/__tests__/container-test.js
index 83aaf0b..17dd79e 100644
--- a/app/addons/permissions/__tests__/container-test.js
+++ b/app/addons/permissions/__tests__/container-test.js
@@ -51,7 +51,7 @@
 
     wrapper.update();
     const item = wrapper
-      .find('.permissions__admins .permissions__entry');
+      .find('.permission-items li');
 
     expect(item.text()).toContain('banana');
   });
diff --git a/app/addons/permissions/__tests__/permissionsScreen-test.js b/app/addons/permissions/__tests__/permissionsScreen-test.js
index 2283a47..1e0ff4a 100644
--- a/app/addons/permissions/__tests__/permissionsScreen-test.js
+++ b/app/addons/permissions/__tests__/permissionsScreen-test.js
@@ -37,11 +37,11 @@
     );
 
     wrapper
-      .find('.permissions__admins .permissions-add-user input')
+      .find('div#permissions__admins #form-users-permissions input')
       .simulate('change', {target: {value: 'abc'}});
 
     wrapper
-      .find('.permissions__admins .permissions-add-user')
+      .find('div#permissions__admins #form-users-permissions')
       .simulate('submit');
 
     expect(stub).not.toHaveBeenCalled();
@@ -60,11 +60,11 @@
     );
 
     wrapper
-      .find('.permissions__admins .permissions-add-user input')
+      .find('div#permissions__admins #form-users-permissions input')
       .simulate('change', {target: {value: 'mango'}});
 
     wrapper
-      .find('.permissions__admins .permissions-add-user')
+      .find('div#permissions__admins #form-users-permissions')
       .simulate('submit');
 
     expect(stub).toHaveBeenCalled();
@@ -89,7 +89,7 @@
     );
 
     wrapper
-      .find('.permissions__admins .permissions__entry button')
+      .find('.permission-items li button')
       .simulate('click');
 
     expect(stub).toHaveBeenCalled();
diff --git a/app/addons/permissions/actions.js b/app/addons/permissions/actions.js
index 2b44b49..d6a18b5 100644
--- a/app/addons/permissions/actions.js
+++ b/app/addons/permissions/actions.js
@@ -115,7 +115,7 @@
     })
     .then(() => {
       FauxtonAPI.addNotification({
-        msg: 'Database permissions has been updated.'
+        msg: 'Database permissions have been updated.'
       });
 
       return dispatch(receivedPermissions(p));
diff --git a/app/addons/permissions/assets/less/permissions.less b/app/addons/permissions/assets/scss/permissions.scss
similarity index 60%
rename from app/addons/permissions/assets/less/permissions.less
rename to app/addons/permissions/assets/scss/permissions.scss
index 3c206d0..ec204d0 100644
--- a/app/addons/permissions/assets/less/permissions.less
+++ b/app/addons/permissions/assets/scss/permissions.scss
@@ -9,24 +9,32 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
-@import "../../../../../assets/less/variables.less";
+@import "../../../../../assets/scss/variables";
 
-.permission-items.unstyled {
-  margin-left: 0px;
+.permission-items.list-unstyled {
+  margin-top: 10px;
+  margin-left: 0;
+
   li {
     padding: 5px;
-    border-bottom: 1px solid #E3E3E3;
-    border-right: 1px solid #E3E3E3;
-    border-left: 3px solid #E3E3E3;
+    border-bottom: 1px solid $cf-border-color01;
+    border-right: 1px solid $cf-border-color01;
+    border-left: 3px solid $cf-border-color01;
+
     &:first-child {
-      border-top: 1px solid #E3E3E3;
+      border-top: 1px solid $cf-border-color01;
     }
+
     &:nth-child(odd) {
-      border-left: 3px solid red;
+      border-left: 3px solid $cf-brand-highlight;
     }
   }
+
+  span {
+    padding-left: 5px;
+  }
 }
 
 #dashboard #dashboard-content div.permissions-page {
-  padding: 5px @panelPadding;
+  padding: $cf-main-content-padding;
 }
diff --git a/app/addons/permissions/base.js b/app/addons/permissions/base.js
index c02fbba..78294d9 100644
--- a/app/addons/permissions/base.js
+++ b/app/addons/permissions/base.js
@@ -13,12 +13,12 @@
 import FauxtonAPI from "../../core/api";
 import Permissions from "./routes";
 import reducers from './reducers';
-import "./assets/less/permissions.less";
+import "./assets/scss/permissions.scss";
 
 Permissions.initialize = function () {};
 
 FauxtonAPI.addReducers({
-  permissions: reducers
+  permissions: reducers,
 });
 
 export default Permissions;
diff --git a/app/addons/permissions/components/PermissionsItem.js b/app/addons/permissions/components/PermissionsItem.js
index 069b77a..52dc1ed 100644
--- a/app/addons/permissions/components/PermissionsItem.js
+++ b/app/addons/permissions/components/PermissionsItem.js
@@ -13,19 +13,14 @@
 import PropTypes from 'prop-types';
 
 import React from 'react';
+import CloseButton from 'react-bootstrap/CloseButton';
 
 const PermissionsItem = ({removeItem, section, type, value}) => {
 
   return (
-    <li className="permissions__entry">
+    <li>
       <span>{value}</span>
-      <button
-        onClick={() => removeItem(section, type, value)}
-        type="button"
-        className="pull-right close"
-      >
-        ×
-      </button>
+      <CloseButton className="float-end" aria-label="Remove item" onClick={() => removeItem(section, type, value)} />
     </li>
   );
 };
diff --git a/app/addons/permissions/components/PermissionsSection.js b/app/addons/permissions/components/PermissionsSection.js
index da24bb6..5dbda12 100644
--- a/app/addons/permissions/components/PermissionsSection.js
+++ b/app/addons/permissions/components/PermissionsSection.js
@@ -11,7 +11,7 @@
 // the License.
 
 import React from 'react';
-
+import { Button, Form, InputGroup } from 'react-bootstrap';
 import FauxtonAPI from '../../../core/api';
 import app from '../../../app';
 import _ from 'lodash';
@@ -112,40 +112,60 @@
     const { section } = this.props;
 
     return (
-      <div className={"permissions__" + section}>
+      <div id={"permissions__" + section}>
         <header className="page-header">
           <h3>{section}</h3>
           <p className="help">
             {this.getHelp()}
             <a className="help-link" data-bypass="true" href={getDocUrl('DB_PERMISSION')} target="_blank" rel="noopener noreferrer">
-              <i className="icon-question-sign"></i>
+              <i className="fonticon-help-circled"></i>
             </a>
           </p>
         </header>
-        <div className="row-fluid">
-          <div className="span6">
+
+        <div className="row mt-2">
+          <div className="col-lg-6">
             <header>
               <h4>Users</h4>
               <p>Specify users who will have {this.props.section} access to this database.</p>
             </header>
-            <form onSubmit={this.addNames} className="permission-item-form permissions-add-user form-inline">
-              <input onChange={this.nameChange} value={this.state.newName} type="text" className="item input-small" placeholder="Username" />
-              <button type="submit" className="btn btn-primary"><i className="icon fonticon-plus-circled" /> Add User</button>
+
+            <form onSubmit={this.addNames} id="form-users-permissions">
+              <InputGroup>
+                <Form.Control
+                  placeholder="Username"
+                  onChange={this.nameChange}
+                  aria-label="Username"
+                  type="text" />
+
+                <Button type="submit" variant="cf-primary" aria-label="Add username"><i className="fonticon-plus-circled" />Add User</Button>
+              </InputGroup>
             </form>
-            <ul className="unstyled permission-items span10">
+
+            <ul className="list-unstyled permission-items">
               {this.getNames()}
             </ul>
           </div>
-          <div className="span6">
+          <div className="col-lg-6">
             <header>
               <h4>Roles</h4>
               <p>Users with any of the following role(s) will have {this.props.section} access.</p>
             </header>
-            <form onSubmit={this.addRoles} className="permission-item-form permissions-add-role form-inline">
-              <input onChange={this.roleChange} value={this.state.newRole} type="text" className="item input-small" placeholder="Role" />
-              <button type="submit" className="btn btn-primary"><i className="icon fonticon-plus-circled" /> Add Role</button>
+
+            <form onSubmit={this.addRoles}>
+              <InputGroup>
+                <Form.Control
+                  placeholder="Role"
+                  value={this.state.newRole}
+                  onChange={this.roleChange}
+                  aria-label="Role"
+                  type="text" />
+
+                <Button type="submit" variant="cf-primary" aria-label="Add role"><i className="fonticon-plus-circled" />Add Role</Button>
+              </InputGroup>
             </form>
-            <ul className="unstyled permission-items span10">
+
+            <ul className="list-unstyled permission-items">
               {this.getRoles()}
             </ul>
           </div>
diff --git a/app/addons/permissions/tests/nightwatch/permissions.js b/app/addons/permissions/tests/nightwatch/permissions.js
index 518822d..82b4402 100644
--- a/app/addons/permissions/tests/nightwatch/permissions.js
+++ b/app/addons/permissions/tests/nightwatch/permissions.js
@@ -23,17 +23,17 @@
       .loginToGUI()
       .url(baseUrl + '/#/database/' + newDatabaseName + '/permissions')
 
-      .waitForElementVisible('.permissions__admins', waitTime, false)
+      .waitForElementVisible('div#permissions__admins', waitTime, false)
 
-      .setValue('.permissions__admins [placeholder="Username"]', 'blergie')
-      .clickWhenVisible('.permissions__admins .permissions-add-user button')
+      .setValue('div#permissions__admins [placeholder="Username"]', 'blergie')
+      .clickWhenVisible('div#permissions__admins #form-users-permissions button')
 
-      .waitForElementVisible('.permissions__admins .permissions__entry', waitTime, false)
-      .assert.textContains('.permissions__entry span', 'blergie')
+      .waitForElementVisible('.permission-items li', waitTime, false)
+      .assert.textContains('.permission-items li span', 'blergie')
 
       .url(baseUrl + '/#/database/' + newDatabaseName + '/permissions')
-      .waitForElementVisible('.permissions__admins .permissions__entry', waitTime, false)
-      .assert.textContains('.permissions__entry span', 'blergie')
+      .waitForElementVisible('.permission-items li', waitTime, false)
+      .assert.textContains('.permission-items li span', 'blergie')
 
       .end();
   }
diff --git a/app/addons/replication/__tests__/auth-options.test.js b/app/addons/replication/__tests__/auth-options.test.js
index b9aba5d..e37de10 100644
--- a/app/addons/replication/__tests__/auth-options.test.js
+++ b/app/addons/replication/__tests__/auth-options.test.js
@@ -44,14 +44,14 @@
           newRepAuth.setProps({authType: newType});
         }} />);
 
-      expect(newRepAuth.find('div.replication__help-tile').exists()).toBe(false);
+      expect(newRepAuth.find('#replications-auth-help-span').exists()).toBe(false);
       newRepAuth.find('select#select-test-auth').first().simulate('change', {
         target: {
           value: 'BASIC_AUTH'
         }
       });
       // Help is displayed after selecting the associated auth type
-      expect(newRepAuth.find('div.replication__help-tile').exists()).toBe(true);
+      expect(newRepAuth.find('#replications-auth-help-span').exists()).toBe(true);
     });
   });
 });
diff --git a/app/addons/replication/assets/less/replication.less b/app/addons/replication/assets/less/replication.less
deleted file mode 100644
index 076346b..0000000
--- a/app/addons/replication/assets/less/replication.less
+++ /dev/null
@@ -1,376 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-@import "../../../../../assets/less/variables.less";
-@import "../../../../../assets/less/mixins.less";
-
-@replication_input_field_width: 400px;
-
-div.replication__page {
-  padding: 25px 0 40px 0 !important;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-
-.replication__section {
-  display: flex;
-  flex-flow: row wrap;
-  justify-content: flex-start;
-  & input {
-    width: @replication_input_field_width;
-    font-size: 14px;
-  }
-}
-
-.replication__seperator {
-  margin: 6px 0 15px;
-  width: 100%;
-}
-
-.replication__help-tile {
-  width: 400px;
-}
-
-.replication__input-checkbox {
-  display: flex;
-  align-items: center;
-  width: 400px;
-  height: 55px;
-
-  input[type="checkbox"] {
-    width: auto;
-    margin-right: 0.65rem;
-  }
-
-  label {
-    padding-bottom: 10px;
-  }
-
-  &--disabled label {
-    cursor: not-allowed;
-  }
-}
-
-.replication__input-label {
-  padding-right: 15px;
-  width: 165px;
-  text-align: right;
-  margin-top: 12px;
-  font-size: 14px;
-  margin-right: 10px;
-}
-
-.replication__input-select {
-  width: 540px;
-  select {
-    font-size: 14px;
-    width: @replication_input_field_width;
-    margin-bottom: 10px;
-    background-color: white;
-    border: 1px solid #cccccc;
-  }
-  .styled-select {
-    width: @replication_input_field_width;
-  }
-}
-
-.replication__input-react-select {
-  font-size: 14px;
-  padding-bottom: 10px;
-
-  .Select .Select-menu-outer {
-    width: @replication_input_field_width;
-  }
-
-  .Select div.Select-control {
-    padding: 6px;
-    border: 1px solid #cccccc;
-    width: @replication_input_field_width;
-
-    .Select-value, .Select-placeholder {
-      padding: 6px 15px 6px 10px;
-    }
-
-    input {
-      margin-left: -6px;
-    }
-
-    .Select-arrow-zone {
-      padding: 0;
-      width: 18px;
-      color: black;
-    }
-  }
-}
-
-.replication__remote-connection-url[type="text"] {
-  font-size: 14px;
-  width: @replication_input_field_width;
-  color: #333;
-}
-
-.replication__remote-connection-url-text {
-  font-size: 9pt;
-  color: #999999;
-  margin-bottom: 8px;
-}
-
-.replication__new-input[type="text"] {
-  width: @replication_input_field_width;
-  font-size: 14px;
-  color: #333;
-}
-
-.replication__doc-name {
-  position: relative;
-  width: @replication_input_field_width;
-
-}
-
-.replication__doc-name-icon {
-  cursor: pointer;
-  position: absolute;
-  right: 6px;
-  top: 8px;
-  font-size: 11px;
-  padding: 8px;
-  color: #333;
-  .transition(all 0.25s linear);
-}
-
-.replication__doc-name-icon:hover {
-  color: @hoverHighlight;
-}
-
-//use attribute selector to strengthen this to override bootstraps default font size for inputs
-.replication__doc-name-input[type="text"] {
-  padding-right: 32px;
-  font-size: 14px;
-  width: @replication_input_field_width;
-  color: #333;
-}
-
-.replication__button-row {
-  margin-top: 10px;
-  width: 378px;
-  display: flex;
-  justify-content: flex-end;
-}
-
-.replication__clear-link {
-  padding: 12px;
-  font-size: 14px;
-  padding: 12px 0 12px 24px;
-}
-
-.replication__clear-link:focus,
-.replication__clear-link:hover {
-  text-decoration: none;
-}
-
-.replication__activity {
-  padding: 0 10px 40px 10px !important;
-  width:100%;
-}
-
-.replication__table-row {
-  font-size: 14px;
-  height: 50px;
-}
-
-td.replication__table-col {
-  vertical-align: middle;
-}
-
-.replication__table--selected {
-  color: @hoverHighlight;
-}
-
-.replication__table-header-source {
-  width: 30%;
-  font-weight: bold;
-  cursor: pointer;
-}
-
-.replication__table-header-target {
-  width: 30%;
-  font-weight: bold;
-  cursor: pointer;
-}
-
-.replication__table-header-type {
-  font-weight: bold;
-  width: 9%;
-  cursor: pointer;
-}
-
-.replication__table-header-status {
-  font-weight: bold;
-  width: 9%;
-  cursor: pointer;
-}
-
-.replication__table-header-time {
-  font-weight: bold;
-  width: 13%;
-  cursor: pointer;
-}
-
-.replication__table-header-actions {
-  font-weight: bold;
-  width: 13%;
-}
-
-td.replication__row-status {
-  text-transform: capitalize;
-  vertical-align: middle;
-}
-
-.replication__row-status--completed {
-  color: #5cb85c;
-}
-
-.replication__row-status--error {
-  color: #d9534f;
-}
-
-.replication__table-header-icon {
-  margin-left: 6px;
-  width: 16px;
-}
-
-.replication__activity_header {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.replication__activity_header-btn {
-  height: 42px;
-}
-
-a.replication__activity_header-btn:active,
-a.replication__activity_header-btn:visited {
-  color: #fff;
-}
-
-.replication__table-bulk-select {
-  width: 68px;
-}
-
-.replication__bulk-select-wrapper {
-  display: flex;
-}
-
-.replication__bulk-select-header {
-  width: 30px;
-  border: 1px solid #aaa;
-}
-
-input.replication__bulk-select-input[type="checkbox"] {
-  margin: 8px;
-}
-
-.bulk-select-trash {
-  color: #505050;
-  border: 1px solid #aaa;
-  background-color: rgba(0, 0, 0, 0);
-  margin-left: 3px;
-  padding-left: 8px;
-  &:hover{
-    color: @hoverHighlight}
-}
-
-.replication__row-actions-list {
-  margin: 0px;
-  text-decoration: none;
-}
-
-.replication__row-list {
-  display: inline;
-}
-
-.replication__row-btn {
-  font-size: 16px;
-  text-decoration: none;
-  cursor: pointer;
-  padding-right: 8px;
-  padding-left: 8px;
-  color: #333;
-  &:visited {
-    color: #333;
-    text-decoration: none;
-  }
-  &:hover {
-    color: @hoverHighlight;
-    text-decoration: none;
-  }
-
-}
-
-.replication__row-btn--no-left-pad {
-  padding-left: 0px;
-}
-
-.replication__row-btn--warning {
-  color: @dangerRed;
-}
-
-.replication__filter-icon {
-  padding-right: 8px;
-}
-
-input.replication__filter-input[type="text"] {
-  font-size: 14px;
-  border: 0;
-  padding: 10px;
-  margin-bottom: 0;
-}
-
-button.replication__error-continue {
-  margin-left: 20px !important; //needed to override bootstrap
-}
-
-.replication__error-cancel,
-.replication__error-continue {
-  background-color: @secondaryBlue;
-  color: #FFF;
-}
-
-.replication__error-cancel:hover,
-.replication__error-continue:hover {
-  background-color: @hoverHighlight;
-  color: #FFF;
-}
-
-td.replication__empty-row {
-  text-align: center;
-}
-
-.replication__remote_icon_help {
-  color: @secondaryBlue
-}
-
-.replication__remote_icon_help:hover {
-  color: @hoverHighlight;
-}
-
-.replication__tooltip {
-  .tooltip-inner {
-    text-align: left
-  }
-}
-
-.replication__activity-caveat {
-  padding-left: 80px;
-}
diff --git a/app/addons/replication/assets/scss/replication.scss b/app/addons/replication/assets/scss/replication.scss
new file mode 100644
index 0000000..08c2d13
--- /dev/null
+++ b/app/addons/replication/assets/scss/replication.scss
@@ -0,0 +1,230 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+@import "../../../../../assets/scss/variables";
+@import "../../../../../assets/scss/mixins";
+
+$replication_input_field_width: 100%;
+
+div.replication__page {
+  padding: 1.5rem 1rem 1rem 1rem;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+
+  div.container {
+    max-width: 800px;
+  }
+}
+
+.replication__seperator {
+  margin: 6px 0 15px;
+  width: 100%;
+}
+
+
+.replication__clear-link {
+  padding: 12px;
+  font-size: 14px;
+  padding: 12px 24px 12px 24px;
+}
+
+.replication__clear-link:focus,
+.replication__clear-link:hover {
+  text-decoration: none;
+}
+
+.replication__activity {
+  padding: 1rem;
+  padding-bottom: 50px;
+  width: 100%;
+
+  > table {
+    margin-top:1rem;
+  }
+}
+
+.replication__table-row {
+  font-size: 14px;
+  height: 50px;
+}
+
+td.replication__table-col {
+  vertical-align: middle;
+  input[type="checkbox"] {
+    margin-left: 7px;
+  }
+}
+
+.replication__table--selected {
+  color: $cf-brand-hightlight-hover;
+}
+
+.replication__table-header-source {
+  width: 30%;
+  font-weight: bold;
+  cursor: pointer;
+}
+
+.replication__table-header-target {
+  width: 30%;
+  font-weight: bold;
+  cursor: pointer;
+}
+
+.replication__table-header-type {
+  font-weight: bold;
+  width: 9%;
+  cursor: pointer;
+}
+
+.replication__table-header-status {
+  font-weight: bold;
+  width: 9%;
+  cursor: pointer;
+}
+
+.replication__table-header-time {
+  font-weight: bold;
+  width: 13%;
+  cursor: pointer;
+}
+
+.replication__table-header-actions {
+  font-weight: bold;
+  min-width: 8.5rem;
+}
+
+td.replication__row-status {
+  text-transform: capitalize;
+  vertical-align: middle;
+}
+
+.replication__row-status--completed {
+  color: $cf-success !important;
+}
+
+.replication__row-status--error {
+  color: $cf-error !important;
+}
+
+.replication__row-status--failed {
+  color: $cf-error !important;
+}
+
+.replication__table-header-icon {
+  margin-left: 6px;
+  width: 16px;
+}
+
+.replication__activity_header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.replication__activity_header-btn {
+  height: 42px;
+}
+
+a.replication__activity_header-btn:active,
+a.replication__activity_header-btn:visited {
+  color: $cf-white;
+}
+
+.replication__table-bulk-select {
+  min-width: 74px;
+  height: 47px;
+  vertical-align: bottom;
+}
+
+.replication__bulk-select-wrapper {
+  display: flex;
+  align-items: center;
+  margin-left: 7px;
+  min-height: 30px;
+  .replication__bulk-select-input {
+    font-size: 14px;
+  }
+}
+
+.replication__bulk-select-header {
+  margin-right: 4px;
+}
+
+input.replication__bulk-select-input[type="checkbox"] {
+  margin: 6px;
+}
+
+.bulk-select-trash {
+  color: $cf-text-fonticon01;
+  border: 1px solid $cf-border-color01;
+  background-color: rgba(0, 0, 0, 0);
+  margin-left: 3px;
+  &:hover {
+    color: $cf-brand-hightlight-hover;
+  }
+}
+
+.replication__row-btn {
+  font-size: 16px;
+  text-decoration: none;
+  cursor: pointer;
+  padding-right: 8px;
+  padding-left: 8px;
+  color: $cf-text01;
+  &:visited {
+    color: $cf-text01;
+    text-decoration: none;
+  }
+  &:hover {
+    color: $cf-brand-hightlight-hover;
+    text-decoration: none;
+  }
+}
+
+.replication__row-btn--warning {
+  color: $cf-danger;
+}
+
+.replication__filter-icon {
+  padding-right: 8px;
+}
+
+button.replication__error-continue {
+  margin-left: 20px !important; //needed to override bootstrap
+}
+
+.replication__error-cancel,
+.replication__error-continue {
+  background-color: $cf-secondary;
+  color: $cf-white;
+}
+
+.replication__error-cancel:hover,
+.replication__error-continue:hover {
+  background-color: $cf-brand-hightlight-hover;
+  color: $cf-white;
+}
+
+td.replication__empty-row {
+  text-align: center;
+}
+
+.replication__activity-caveat {
+  margin-bottom: 1.5rem;
+}
+
+.replication__actions > button {
+  margin-right: 0.5rem;
+  font-size: 1rem;
+}
diff --git a/app/addons/replication/base.js b/app/addons/replication/base.js
index 951a335..1dbd65d 100644
--- a/app/addons/replication/base.js
+++ b/app/addons/replication/base.js
@@ -13,7 +13,7 @@
 import FauxtonAPI from '../../core/api';
 import Helpers from "../../helpers";
 import replication from './route';
-import './assets/less/replication.less';
+import './assets/scss/replication.scss';
 import { checkForNewApi } from './actions';
 import replicationReducer from './reducers';
 
diff --git a/app/addons/replication/components/auth-options.js b/app/addons/replication/components/auth-options.js
index 6d1b17f..fd05582 100644
--- a/app/addons/replication/components/auth-options.js
+++ b/app/addons/replication/components/auth-options.js
@@ -14,9 +14,7 @@
 import app from '../../../app';
 import React from 'react';
 import Constants from '../constants';
-import Components from '../../components/react-components';
-
-const { StyledSelect } = Components;
+import Form from 'react-bootstrap/Form';
 
 export class ReplicationAuth extends React.Component {
 
@@ -87,30 +85,30 @@
     }
 
     return (
-      <div className="replication__section">
-        <div className="replication__input-label"></div>
-        <div className="replication__help-tile">{helpText[0]}</div>
-      </div>);
+      <span id="replications-auth-help-span" className="form-text">{helpText[0]}</span>
+    );
   }
 
   render () {
     const {credentials, authType, authId} = this.props;
-    return (<React.Fragment>
-      <div className="replication__section">
-        <div className="replication__input-label">
-          Authentication:
-        </div>
-        <div className="replication__input-select">
-          <StyledSelect
-            selectContent={this.getAuthOptions()}
-            selectChange={(e) => this.onChangeType(e.target.value)}
-            selectId={'select-' + authId}
-            selectValue={authType} />
+
+    return (
+      <div className="row">
+        <div className="col-12 col-md-2">Authentication:</div>
+        <div className="col-12 col-md mt-1 mt-md-0">
+          <Form.Select
+            onChange={(e) => this.onChangeType(e.target.value)}
+            id={'select-' + authId}
+            value={authType}
+          >
+            {this.getAuthOptions()}
+          </Form.Select>
+
+          {this.getAuthInputFields(credentials, authType)}
+          {this.getHelpText(authType)}
         </div>
       </div>
-      {this.getAuthInputFields(credentials, authType)}
-      {this.getHelpText(authType)}
-    </React.Fragment>);
+    );
   }
 }
 
@@ -162,25 +160,22 @@
     const { authId } = this.props;
     return (
       <React.Fragment>
-        <div className="replication__section">
-          <div className="replication__input-label"></div>
-          <div>
-            <input
+        <div className="row">
+          <div className="col-12 mt-2">
+            <Form.Control
               id={authId + '-username'}
               type="text"
+              className="form-control"
               placeholder={usernamePlaceholder}
               value={this.state.username}
               onChange={(e) => this.updateUsername(e.target.value)}
-              readOnly={this.props.usernameReadOnly}
             />
           </div>
-        </div>
-        <div className="replication__section">
-          <div className="replication__input-label"></div>
-          <div>
-            <input
+          <div className="col-12 mt-2">
+            <Form.Control
               id={authId + '-password'}
               type="password"
+              className="form-control"
               placeholder={passwordPlaceholder}
               value={this.state.password}
               onChange={(e) => this.updatePassword(e.target.value)}
diff --git a/app/addons/replication/components/common-activity.js b/app/addons/replication/components/common-activity.js
index 3b503fe..68a78cf 100644
--- a/app/addons/replication/components/common-activity.js
+++ b/app/addons/replication/components/common-activity.js
@@ -10,21 +10,22 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 import PropTypes from 'prop-types';
-
 import React from 'react';
+import { Button, Form, InputGroup } from 'react-bootstrap';
 
 export const ReplicationFilter = ({value, onChange}) => {
   return (
-    <div className="replication__filter">
-      <i className="replication__filter-icon fonticon-filter" />
-      <input
+    <InputGroup id="replication-filter-group">
+      <InputGroup.Text><i className="fonticon-filter" /></InputGroup.Text>
+      <Form.Control
+        id="replication-filter-input"
         type="text"
         placeholder="Filter replications"
-        className="replication__filter-input"
         value={value}
         onChange={(e) => {onChange(e.target.value);}}
+        aria-label="Filter replication results"
       />
-    </div>
+    </InputGroup>
   );
 };
 
@@ -35,13 +36,16 @@
 
 export const ReplicationHeader = ({filter, onFilterChange}) => {
   return (
-    <div className="replication__activity_header">
-      <div></div>
-      <ReplicationFilter value={filter} onChange={onFilterChange} />
-      <a href="#/replication/_create" className="btn save replication__activity_header-btn btn-primary">
-        <i className="icon fonticon-plus-circled"></i>
-        New Replication
-      </a>
+    <div className="row">
+      <div className="col-12 col-md-6">
+        <ReplicationFilter value={filter} onChange={onFilterChange} />
+      </div>
+      <div className="col-12 col-md text-end">
+        <Button id="new-replication-btn" className="mt-2 mt-md-0" href="#/replication/_create" variant="cf-primary">
+          <i className="fonticon-plus-circled"></i>
+          New Replication
+        </Button>
+      </div>
     </div>
   );
 };
diff --git a/app/addons/replication/components/common-table.js b/app/addons/replication/components/common-table.js
index f12b382..4f4dbb3 100644
--- a/app/addons/replication/components/common-table.js
+++ b/app/addons/replication/components/common-table.js
@@ -10,13 +10,16 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 import PropTypes from 'prop-types';
-
 import React from 'react';
-import {Table, Tooltip, OverlayTrigger} from "react-bootstrap";
+import {Form, Table, Tooltip, OverlayTrigger} from "react-bootstrap";
 import moment from 'moment';
 import {ErrorModal} from './modals';
 import {removeCredentialsFromUrl} from '../api';
+import Components from "../../components/react-components";
 import Helpers from '../../../helpers';
+import FauxtonAPI from "../../../core/api";
+
+const { ToolbarButton } = Components;
 
 const getDbNameFromUrl = (urlObj, root) => {
   try {
@@ -76,7 +79,7 @@
       <span>
         <a
           data-bypass="true"
-          className="replication__row-btn replication__row-btn--warning icon-exclamation-sign"
+          className="replication__row-btn replication__row-btn--warning fonticon-attention-circled"
           onClick={this.showModal.bind(this)}
           title="View error message">
         </a>
@@ -128,43 +131,33 @@
   const actions = [];
   if (!onlyDeleteAction) {
     actions.push(
-      <li className="replication__row-list" key={1}>
-        <a
-          href={`#replication/id/${encodeURIComponent(_id)}`}
-          className="replication__row-btn icon-wrench replication__row-btn--no-left-pad"
-          title={'Edit replication'}
-          data-bypass="true"
-        >
-        </a>
-      </li>
+      <ToolbarButton icon="fonticon-wrench"
+        title={`Edit replication`}
+        aria-label={`Edit replication`}
+        key={1}
+        onClick={() => FauxtonAPI.navigate(`#replication/id/${encodeURIComponent(_id)}`)} />
     );
     actions.push(
-      <li className="replication__row-list" key={2}>
-        <a
-          className="replication__row-btn fonticon-document"
-          title={'Edit replication document'}
-          href={url}
-          data-bypass="true"
-        >
-        </a>
-      </li>
+      <ToolbarButton icon="fonticon-document"
+        title={`Edit replication document`}
+        aria-label={`Edit replication document ${_id}`}
+        key={2}
+        onClick={() => FauxtonAPI.navigate(url)} />
     );
   }
 
   actions.push(
-    <li className="replication__row-list" key={3}>
-      <a
-        className={`replication__row-btn icon-trash ${onlyDeleteAction ? 'replication__row-btn--no-left-pad' : ''} `}
-        title={`Delete ${onlyDeleteAction ? 'job' : 'document'} ${_id}`}
-        onClick={() => deleteDocs(_id)}>
-      </a>
-    </li>
+    <ToolbarButton icon="fonticon-trash"
+      title={`Delete ${onlyDeleteAction ? 'job' : 'document'}`}
+      aria-label={`Delete ${onlyDeleteAction ? 'job' : 'document'} ${_id}`}
+      key={3}
+      onClick={() => deleteDocs(_id)} />
   );
 
   return (
-    <ul className="replication__row-actions-list">
+    <div className="replication__actions">
       {actions}
-    </ul>
+    </div>
   );
 };
 
@@ -206,7 +199,11 @@
 
   return (
     <tr className="replication__table-row">
-      <td className="replication__table-col"><input checked={selected} type="checkbox" onChange={() => selectDoc(_id)} /> </td>
+      <td className="replication__table-col">
+        <Form.Check type="checkbox"
+          checked={selected}
+          onChange={() => selectDoc(_id)} />
+      </td>
       <td className="replication__table-col">{formatUrl(source)}</td>
       <td className="replication__table-col">{formatUrl(target)}</td>
       <td className="replication__table-col">{formattedStartTime}</td>
@@ -246,16 +243,18 @@
 
 const BulkSelectHeader = ({isSelected, deleteDocs, someDocsSelected, onCheck}) => {
   const trash = someDocsSelected ?
-    <button
-      onClick={() => deleteDocs()}
-      className="bulk-select-trash fonticon fonticon-trash"
-      title="Delete all selected">
-    </button> : null;
+    <ToolbarButton icon="fonticon-trash"
+      title="Delete all selected"
+      aria-label="Delete all selected"
+      onClick={() => deleteDocs()} /> : null;
 
   return (
     <div className="replication__bulk-select-wrapper">
       <div className="replication__bulk-select-header">
-        <input className="replication__bulk-select-input" checked={isSelected} type="checkbox" onChange={onCheck} />
+        <Form.Check type="checkbox"
+          className="replication__bulk-select-input"
+          checked={isSelected}
+          onChange={onCheck} />
       </div>
       {trash}
     </div>
diff --git a/app/addons/replication/components/modals.js b/app/addons/replication/components/modals.js
index 73cfda5..8ca354b 100644
--- a/app/addons/replication/components/modals.js
+++ b/app/addons/replication/components/modals.js
@@ -9,10 +9,10 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
-import PropTypes from 'prop-types';
 
+import PropTypes from 'prop-types';
 import React from 'react';
-import {Modal} from 'react-bootstrap';
+import { Button, Modal } from 'react-bootstrap';
 import Components from '../../components/react-components';
 
 const {ConfirmButton} = Components;
@@ -40,19 +40,26 @@
     btnText = `Delete ${isReplicationDB ? 'Documents' : 'Replication Jobs'}`;
   }
 
+  const onCloseClick = ev => {
+    if (ev) {
+      ev.preventDefault();
+    }
+    onClose();
+  };
+
   return (
-    <Modal dialogClassName="replication_delete-doc-modal" show={visible} onHide={() => onClose()}>
+    <Modal dialogClassName="replication_delete-doc-modal" show={visible} onHide={onCloseClick}>
       <Modal.Header closeButton={true}>
-        <Modal.Title>Verify Deletion</Modal.Title>
+        <Modal.Title>Confirm Deletion</Modal.Title>
       </Modal.Header>
       <Modal.Body>
         <p dangerouslySetInnerHTML={{__html: header}}></p>
         <p>{infoSection}</p>
       </Modal.Body>
       <Modal.Footer>
-        <a className="cancel-link" onClick={onClose}>Cancel</a>
+        <Button href="#" data-bypass="true" variant="cf-cancel" className="cancel-link" onClick={onCloseClick}>Cancel</Button>
         <ConfirmButton
-          customIcon={"icon-trash"}
+          customIcon={"fonticon-trash"}
           text={btnText}
           onClick={onClick}
         />
@@ -99,6 +106,7 @@
         {warning}
       </Modal.Body>
       <Modal.Footer>
+        <Button variant="cf-primary" onClick={() => onClose()} >Close</Button>
       </Modal.Footer>
     </Modal>
   );
@@ -135,12 +143,12 @@
         </p>
       </Modal.Body>
       <Modal.Footer>
-        <button onClick={onClose} className="btn replication__error-cancel">
+        <Button onClick={onClose} variant="cf-primary" className="replication__error-cancel">
           Change Document ID
-        </button>
-        <button onClick={onClick} className="btn replication__error-continue">
-          <i className="icon icon-eraser" /> Overwrite Existing Document
-        </button>
+        </Button>
+        <Button onClick={onClick} variant="cf-primary" className="replication__error-continue">
+          Overwrite Existing Document
+        </Button>
       </Modal.Footer>
     </Modal>
   );
diff --git a/app/addons/replication/components/newreplication.js b/app/addons/replication/components/newreplication.js
index 08da3b3..11f8bfa 100644
--- a/app/addons/replication/components/newreplication.js
+++ b/app/addons/replication/components/newreplication.js
@@ -249,7 +249,8 @@
       sourceAuth,
       targetAuthType,
       targetAuth,
-      targetDatabasePartitioned
+      targetDatabasePartitioned,
+      pageLimit
     } = this.props;
 
     let _rev;
@@ -275,7 +276,7 @@
       targetAuthType,
       targetAuth,
       targetDatabasePartitioned
-    });
+    }, pageLimit);
   }
 
   confirmButtonEnabled () {
@@ -338,50 +339,71 @@
     } = this.props;
 
     return (
-      <div style={ {paddingBottom: 20} }>
-        <ReplicationSource
-          replicationSource={replicationSource}
-          localSource={localSource}
-          databases={databases}
-          remoteSource={remoteSource}
-          onSourceSelect={updateFormField('replicationSource')}
-          onRemoteSourceChange={updateFormField('remoteSource')}
-          onLocalSourceChange={updateFormField('localSource')}
-        />
-        <ReplicationAuth
-          credentials={sourceAuth}
-          authType={sourceAuthType}
-          onChangeAuthType={updateFormField('sourceAuthType')}
-          onChangeAuth={updateFormField('sourceAuth')}
-          authId={'replication-source-auth'}
-        />
-        <hr className="replication__seperator" size="1"/>
-        <ReplicationTarget
-          replicationTarget={replicationTarget}
-          onTargetChange={updateFormField('replicationTarget')}
-          databases={databases}
-          localTarget={localTarget}
-          remoteTarget={remoteTarget}
-          allowNewPartitionedLocalDbs={allowNewPartitionedLocalDbs}
-          targetDatabasePartitioned={targetDatabasePartitioned}
-          onRemoteTargetChange={updateFormField('remoteTarget')}
-          onLocalTargetChange={updateFormField('localTarget')}
-          onTargetDatabasePartitionedChange={updateFormField('targetDatabasePartitioned')}
-        />
-        <ReplicationAuth
-          credentials={targetAuth}
-          authType={targetAuthType}
-          onChangeAuthType={updateFormField('targetAuthType')}
-          onChangeAuth={updateFormField('targetAuth')}
-          authId={'replication-target-auth'}
-        />
-        <hr className="replication__seperator" size="1"/>
-        <ReplicationOptions
-          replicationType={replicationType}
-          replicationDocName={replicationDocName}
-          onDocChange={updateFormField('replicationDocName')}
-          onTypeChange={updateFormField('replicationType')}
-        />
+      <div className="container px-3 py-3">
+        <div className="row">
+          <div className="col-12"><h3>Source</h3></div>
+          <div className="col-12">
+            <ReplicationSource
+              replicationSource={replicationSource}
+              localSource={localSource}
+              databases={databases}
+              remoteSource={remoteSource}
+              onSourceSelect={updateFormField('replicationSource')}
+              onRemoteSourceChange={updateFormField('remoteSource')}
+              onLocalSourceChange={updateFormField('localSource')}
+            />
+          </div>
+          <div className="col-12 mt-2">
+            <ReplicationAuth
+              credentials={sourceAuth}
+              authType={sourceAuthType}
+              onChangeAuthType={updateFormField('sourceAuthType')}
+              onChangeAuth={updateFormField('sourceAuth')}
+              authId={'replication-source-auth'}
+            />
+          </div>
+        </div>
+
+        <hr className="replication__seperator my-3" size="1"/>
+
+        <div className="row">
+          <div className="col-12"><h3>Target</h3></div>
+          <div className="col-12">
+            <ReplicationTarget
+              replicationTarget={replicationTarget}
+              onTargetChange={updateFormField('replicationTarget')}
+              databases={databases}
+              localTarget={localTarget}
+              remoteTarget={remoteTarget}
+              allowNewPartitionedLocalDbs={allowNewPartitionedLocalDbs}
+              targetDatabasePartitioned={targetDatabasePartitioned}
+              onRemoteTargetChange={updateFormField('remoteTarget')}
+              onLocalTargetChange={updateFormField('localTarget')}
+              onTargetDatabasePartitionedChange={updateFormField('targetDatabasePartitioned')}
+            />
+          </div>
+          <div className="col-12 mt-2">
+            <ReplicationAuth
+              credentials={targetAuth}
+              authType={targetAuthType}
+              onChangeAuthType={updateFormField('targetAuthType')}
+              onChangeAuth={updateFormField('targetAuth')}
+              authId={'replication-target-auth'}
+            />
+          </div>
+        </div>
+        <hr className="replication__seperator my-3" size="1"/>
+
+        <div className="row">
+          <div className="col-12"><h3>Options</h3></div>
+          <ReplicationOptions
+            replicationType={replicationType}
+            replicationDocName={replicationDocName}
+            onDocChange={updateFormField('replicationDocName')}
+            onTypeChange={updateFormField('replicationType')}
+          />
+        </div>
+
         <ReplicationSubmit
           disabled={!this.confirmButtonEnabled()}
           onClick={this.runReplicationChecks}
diff --git a/app/addons/replication/components/options.js b/app/addons/replication/components/options.js
index 686413a..6824605 100644
--- a/app/addons/replication/components/options.js
+++ b/app/addons/replication/components/options.js
@@ -13,9 +13,7 @@
 
 import React from 'react';
 import Constants from '../constants';
-import Components from '../../components/react-components';
-
-const { StyledSelect } = Components;
+import Form from 'react-bootstrap/Form';
 
 const getReplicationTypeOptions = () => {
   return [
@@ -26,16 +24,16 @@
 
 const ReplicationType = ({value, onChange}) => {
   return (
-    <div className="replication__section">
-      <div className="replication__input-label">
-        Replication type:
-      </div>
-      <div className="replication__input-select">
-        <StyledSelect
-          selectContent={getReplicationTypeOptions()}
-          selectChange={(e) => onChange(e.target.value)}
-          selectId="replication-target"
-          selectValue={value} />
+    <div className="row">
+      <div className="col-12 col-md-2">Replication type:</div>
+      <div className="col-12 col-md mt-1 mt-md-0">
+        <Form.Select
+          onChange={(e) => onChange(e.target.value)}
+          id="replication-target"
+          value={value}
+        >
+          {getReplicationTypeOptions()}
+        </Form.Select>
       </div>
     </div>
   );
@@ -46,23 +44,23 @@
   onChange: PropTypes.func.isRequired
 };
 
-const ReplicationDoc = ({value, onChange}) =>
-  <div className="replication__section">
-    <div className="replication__input-label">
-    Replication document:
+const ReplicationDoc = ({value, onChange}) => {
+  return (
+    <div className="row mt-2">
+      <div className="col-12 col-md-2">Replication document:</div>
+      <div className="col-12 col-md mt-1 mt-md-0">
+        <Form.Control
+          id="replication-options-replication-doc"
+          type="text"
+          className="form-control"
+          placeholder="Custom ID (optional)"
+          value={value}
+          onChange={(e) => onChange(e.target.value)}
+        />
+      </div>
     </div>
-    <div className="replication__doc-name">
-      <span className="fonticon fonticon-cancel replication__doc-name-icon" title="Clear field"
-        onClick={() => onChange('')} />
-      <input
-        type="text"
-        className="replication__doc-name-input"
-        placeholder="Custom ID (optional)"
-        value={value}
-        onChange={(e) => onChange(e.target.value)}
-      />
-    </div>
-  </div>;
+  );
+};
 
 ReplicationDoc.propTypes = {
   value: PropTypes.string.isRequired,
@@ -75,8 +73,7 @@
     const {replicationType, replicationDocName, onDocChange, onTypeChange} = this.props;
 
     return (
-      <div>
-        <h3>Options</h3>
+      <div className="col-12">
         <ReplicationType
           onChange={onTypeChange}
           value={replicationType}
diff --git a/app/addons/replication/components/remoteexample.js b/app/addons/replication/components/remoteexample.js
deleted file mode 100644
index ddde70a..0000000
--- a/app/addons/replication/components/remoteexample.js
+++ /dev/null
@@ -1,50 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-import React from 'react';
-import {OverlayTrigger, Tooltip} from 'react-bootstrap';
-
-const tooltipExisting = (
-  <Tooltip id="tooltip" className="replication__tooltip">
-    <p>
-      If you know the credentials for the remote account, you can use that remote username and password.
-    </p>
-    <p>
-      If a remote database granted permissions to your local account, you can use the local-account username and password.
-    </p>
-    <p>
-      If the remote database granted permissions to unauthenticated connections, you do not need to enter a username or password.
-    </p>
-  </Tooltip>
-);
-
-const tooltipNew = (
-  <Tooltip id="tooltip" className="replication__tooltip">
-    Enter the username and password of the remote account.
-  </Tooltip>
-);
-
-const RemoteExample = ({newRemote}) => {
-  const newRemoteText = newRemote ? 'If a "new" database already exists, data will replicate into that existing database.' : null;
-  return (
-    <div
-      className="replication__remote-connection-url-text">
-      https://$USERNAME:$PASSWORD@$REMOTE_SERVER/$DATABASE
-      &nbsp;
-      <OverlayTrigger placement="right" overlay={newRemote ? tooltipNew : tooltipExisting}>
-        <i className="replication__remote_icon_help icon icon-question-sign"/>
-      </OverlayTrigger>
-      <p>{newRemoteText}</p>
-    </div>
-  );
-};
-
-export default RemoteExample;
diff --git a/app/addons/replication/components/source.js b/app/addons/replication/components/source.js
index e4b6c33..46aa3fa 100644
--- a/app/addons/replication/components/source.js
+++ b/app/addons/replication/components/source.js
@@ -13,24 +13,25 @@
 
 import React from 'react';
 import Constants from '../constants';
-import Components from '../../components/react-components';
-import ReactSelect from 'react-select';
+import Form from 'react-bootstrap/Form';
 
-const { StyledSelect } = Components;
-
-const RemoteSourceInput = ({onChange, value}) =>
-  <div className="replication__section">
-    <div className="replication__input-label">Database URL:</div>
-    <div className="">
-      <input
-        type="text"
-        className="replication__remote-connection-url"
-        placeholder="https://"
-        value={value}
-        onChange={(e) => onChange(e.target.value)}
-      />
+const RemoteSourceInput = ({onChange, value}) => {
+  return (
+    <div className="row mt-2">
+      <div className="col-12 col-md-2">Database URL:</div>
+      <div className="col-12 col-md mt-1 mt-md-0">
+        <Form.Control
+          id="replication-remote-connection-url"
+          type="text"
+          className="form-control"
+          placeholder="https://"
+          value={value}
+          onChange={(e) => onChange(e.target.value)}
+        />
+      </div>
     </div>
-  </div>;
+  );
+};
 
 RemoteSourceInput.propTypes = {
   value: PropTypes.string.isRequired,
@@ -38,20 +39,19 @@
 };
 
 const LocalSourceInput = ({value, onChange, databases}) => {
-  const options = databases.map(db => ({value: db, label: db}));
+  const options = databases.map(option => <option value={option} key={option}>{option}</option>);
   return (
-    <div className="replication__section">
-      <div className="replication__input-label">
-        Name:
-      </div>
-      <div className="replication__input-react-select">
-        <ReactSelect
-          name="source-name"
+    <div className="row mt-2">
+      <div className="col-12 col-md-2">Name:</div>
+      <div className="col-12 col-md mt-1 mt-md-0">
+        <Form.Select
+          id="replication-source-local-database-select"
           value={value}
           placeholder="Database name"
-          options={options}
-          clearable={false}
-          onChange={({value}) => onChange(value)} />
+          onChange={(e) => onChange(e.target.value)}
+        >
+          {options}
+        </Form.Select>
       </div>
     </div>
   );
@@ -99,16 +99,16 @@
 export const ReplicationSourceSelect = ({onChange, value}) => {
 
   return (
-    <div className="replication__section">
-      <div className="replication__input-label">
-        Type:
-      </div>
-      <div className="replication__input-select">
-        <StyledSelect
-          selectContent={replicationSourceSelectOptions()}
-          selectChange={(e) => onChange(e.target.value)}
-          selectId="replication-source"
-          selectValue={value} />
+    <div className="row">
+      <div className="col-12 col-md-2">Type:</div>
+      <div className="col-12 col-md mt-1 mt-md-0">
+        <Form.Select
+          onChange={(e) => onChange(e.target.value)}
+          id="replication-source"
+          value={value}
+        >
+          {replicationSourceSelectOptions()}
+        </Form.Select>
       </div>
     </div>
   );
@@ -148,14 +148,13 @@
   render () {
     const {replicationSource, onSourceSelect} = this.props;
     return (
-      <div>
-        <h3>Source</h3>
+      <React.Fragment>
         <ReplicationSourceSelect
           onChange={onSourceSelect}
           value={replicationSource}
         />
         {this.getReplicationSourceRow()}
-      </div>
+      </React.Fragment>
     );
   }
 }
diff --git a/app/addons/replication/components/submit.js b/app/addons/replication/components/submit.js
index 7d94ae7..85be74a 100644
--- a/app/addons/replication/components/submit.js
+++ b/app/addons/replication/components/submit.js
@@ -17,24 +17,26 @@
 const {ConfirmButton} = Components;
 
 export const ReplicationSubmit = ({onClear, disabled, onClick}) =>
-  <div className="replication__button-row">
-    <ConfirmButton
-      customIcon="fonticon-replicate"
-      id="replicate"
-      text="Start Replication"
-      onClick={onClick}
-      disabled={disabled}
-    />
-    <a
-      className="replication__clear-link"
-      href="#"
-      data-bypass="true"
-      onClick={(e) => {
-        e.preventDefault();
-        onClear();
-      }}>
-    Clear
-    </a>
+  <div className="row mt-3">
+    <div className="col-12 text-end">
+      <a
+        className="replication__clear-link"
+        href="#"
+        data-bypass="true"
+        onClick={(e) => {
+          e.preventDefault();
+          onClear();
+        }}>
+      Clear
+      </a>
+      <ConfirmButton
+        customIcon="fonticon-replicate"
+        id="replicate"
+        text="Start Replication"
+        onClick={onClick}
+        disabled={disabled}
+      />
+    </div>
   </div>;
 
 
diff --git a/app/addons/replication/components/target.js b/app/addons/replication/components/target.js
index 3bf3b5d..8a41c5b 100644
--- a/app/addons/replication/components/target.js
+++ b/app/addons/replication/components/target.js
@@ -10,15 +10,11 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import classnames from 'classnames';
 import PropTypes from 'prop-types';
 import React from 'react';
 import { OverlayTrigger, Tooltip } from 'react-bootstrap';
 import Constants from '../constants';
-import Components from '../../components/react-components';
-import ReactSelect from 'react-select';
-
-const { StyledSelect } = Components;
+import Form from 'react-bootstrap/Form';
 
 const replicationTargetSourceOptions = () => {
   return [
@@ -36,16 +32,16 @@
 
 const ReplicationTargetSelect = ({ value, onChange }) => {
   return (
-    <div className="replication__section">
-      <div className="replication__input-label">
-        Type:
-      </div>
-      <div id="replication-target" className="replication__input-select">
-        <StyledSelect
-          selectContent={replicationTargetSourceOptions()}
-          selectChange={(e) => onChange(e.target.value)}
-          selectId="replication-target"
-          selectValue={value} />
+    <div className="row">
+      <div className="col-12 col-md-2">Type:</div>
+      <div className="col-12 col-md mt-1 mt-md-0">
+        <Form.Select
+          onChange={(e) => onChange(e.target.value)}
+          id="replication-target"
+          value={value}
+        >
+          {replicationTargetSourceOptions()}
+        </Form.Select>
       </div>
     </div>
   );
@@ -58,15 +54,14 @@
 
 const RemoteTargetReplicationRow = ({ onChange, value }) => {
   return (
-    <div>
-      <input
-        type="text"
-        className="replication__remote-connection-url"
-        placeholder="https://"
-        value={value}
-        onChange={(e) => onChange(e.target.value)}
-      />
-    </div>
+    <Form.Control
+      type="text"
+      id="replication-remote-connection-url"
+      className="form-control"
+      placeholder="https://"
+      value={value}
+      onChange={(e) => onChange(e.target.value)}
+    />
   );
 };
 
@@ -76,17 +71,16 @@
 };
 
 const ExistingLocalTargetReplicationRow = ({ onChange, value, databases }) => {
-  const options = databases.map(db => ({ value: db, label: db }));
+  const options = databases.map(option => <option value={option} key={option}>{option}</option>);
   return (
-    <div id="replication-target-local" className="replication__input-react-select">
-      <ReactSelect
-        value={value}
-        options={options}
-        placeholder="Database name"
-        clearable={false}
-        onChange={({ value }) => onChange(value)}
-      />
-    </div>
+    <Form.Select
+      id="replication-target-existing-local-database-database-name"
+      value={value}
+      placeholder="Database name"
+      onChange={(e) => onChange(e.target.value)}
+    >
+      {options}
+    </Form.Select>
   );
 };
 
@@ -96,14 +90,18 @@
   onChange: PropTypes.func.isRequired
 };
 
-const NewLocalTargetReplicationRow = ({ onChange, value }) =>
-  <input
-    type="text"
-    className="replication__new-input"
-    placeholder="Database name"
-    value={value}
-    onChange={(e) => onChange(e.target.value)}
-  />;
+const NewLocalTargetReplicationRow = ({ onChange, value }) => {
+  return (
+    <Form.Control
+      id="replication-target-new-local-database-database-name"
+      type="text"
+      className="form-control"
+      placeholder="Database name"
+      value={value}
+      onChange={(e) => onChange(e.target.value)}
+    />
+  );
+};
 
 NewLocalTargetReplicationRow.propTypes = {
   value: PropTypes.string.isRequired,
@@ -151,9 +149,9 @@
   }
 
   return (
-    <div className="replication__section">
-      <div className="replication__input-label">{targetLabel}</div>
-      <div>
+    <div className="row mt-2">
+      <div className="col-12 col-md-2">{targetLabel}</div>
+      <div className="col-12 col-md mt-1 mt-md-0">
         {input}
       </div>
     </div>
@@ -194,24 +192,29 @@
   };
 
   return (
-    <div className="replication__section">
-      <div className="replication__input-label">New database options:</div>
-      <div className={classnames('replication__input-checkbox', { 'replication__input-checkbox--disabled': disablePartitionedOption})}>
+    <React.Fragment>
+      <div className="row mt-2">
+        <div className="col-12 col-md-2">New database options:</div>
+        <div className="col-12 col-md mt-1 mt-md-0">
+          <Form.Check disabled>
+            <Form.Check.Input
+              id="target-db-is-partitioned"
+              type="checkbox"
+              value="true"
+              checked={targetDatabasePartitioned}
+              onChange={togglePartitioned}
+              disabled={disablePartitionedOption}
+            />
 
-        <input id="target-db-is-partitioned"
-          type="checkbox"
-          value="true"
-          checked={targetDatabasePartitioned}
-          onChange={togglePartitioned}
-          disabled={disablePartitionedOption}
-        />
-
-
-        <OverlayTrigger placement="right" overlay={tooltip}>
-          <label htmlFor="target-db-is-partitioned" >Partitioned</label>
-        </OverlayTrigger>
-      </div >
-    </div>
+            <OverlayTrigger placement="right" overlay={tooltip}>
+              <Form.Check.Label className="ms-2">
+                Partitioned
+              </Form.Check.Label>
+            </OverlayTrigger>
+          </Form.Check>
+        </div>
+      </div>
+    </React.Fragment>
   );
 };
 
@@ -238,8 +241,7 @@
       allowNewPartitionedLocalDbs
     } = this.props;
     return (
-      <div>
-        <h3>Target</h3>
+      <React.Fragment>
         <ReplicationTargetSelect
           value={replicationTarget}
           onChange={onTargetChange}
@@ -258,7 +260,7 @@
           targetDatabasePartitioned={targetDatabasePartitioned}
           allowNewPartitionedLocalDbs={allowNewPartitionedLocalDbs}
         />
-      </div>
+      </React.Fragment>
     );
   }
 }
diff --git a/app/addons/replication/container.js b/app/addons/replication/container.js
index 5ade93f..749f81e 100644
--- a/app/addons/replication/container.js
+++ b/app/addons/replication/container.js
@@ -121,7 +121,7 @@
     getReplicateActivity: () => dispatch(getReplicateActivity()),
     getReplicationStateFrom: (id) => dispatch(getReplicationStateFrom(id)),
     getDatabasesList: () => dispatch(getDatabasesList()),
-    replicate: (params) => dispatch(replicate(params, ownProps.pageLimit)),
+    replicate: (params, pageLimit) => dispatch(replicate(params, pageLimit)),
     showConflictModal: () => dispatch(showConflictModal()),
     hideConflictModal: () => dispatch(hideConflictModal()),
     filterReplicate: (filter) => dispatch(filterReplicate(filter)),
diff --git a/app/addons/replication/controller.js b/app/addons/replication/controller.js
index bf3f323..0feb221 100644
--- a/app/addons/replication/controller.js
+++ b/app/addons/replication/controller.js
@@ -71,7 +71,8 @@
       hideConflictModal, isConflictModalVisible, filterDocs,
       filterReplicate, replicate, clearReplicationForm, selectAllDocs, changeActivitySort, selectDoc,
       deleteDocs, deleteReplicates, selectAllReplicates, selectReplicate,
-      sourceAuthType, sourceAuth, targetAuthType, targetAuth, targetDatabasePartitioned, allowNewPartitionedLocalDbs
+      sourceAuthType, sourceAuth, targetAuthType, targetAuth, targetDatabasePartitioned, allowNewPartitionedLocalDbs,
+      pageLimit
     } = this.props;
 
     if (tabSection === 'new replication') {
@@ -107,6 +108,7 @@
         checkReplicationDocID={checkReplicationDocID}
         authenticated={authenticated}
         submittedNoChange={submittedNoChange}
+        pageLimit={pageLimit}
       />;
     }
 
@@ -251,7 +253,7 @@
         <OnePaneContent>
           <div className="template-content flex-body flex-layout flex-col">
             {this.getTabs()}
-            <div className="replication__page flex-layout flex-col">
+            <div className="replication__page">
               {this.showSection()}
             </div>
           </div>
diff --git a/app/addons/replication/tests/nightwatch/replication.js b/app/addons/replication/tests/nightwatch/replication.js
index 4b0e445..e0fb145 100644
--- a/app/addons/replication/tests/nightwatch/replication.js
+++ b/app/addons/replication/tests/nightwatch/replication.js
@@ -51,9 +51,9 @@
 
       // select LOCAL as the source
       .clickWhenVisible('select[id="replication-source"] option[value="REPLICATION_SOURCE_LOCAL"]')
-      .waitForElementVisible('.replication__input-react-select', waitTime, true)
+      .waitForElementVisible('#replication-source-local-database-select', waitTime, true)
       // enter our source DB
-      .setValue('.replication__input-react-select .Select-input input', [newDatabaseName1, client.Keys.ENTER])
+      .setValue('#replication-source-local-database-select', [newDatabaseName1, client.Keys.ENTER])
 
       // select source USER/PASSWORD authentication
       .clickWhenVisible('select[id="select-replication-source-auth"] option[value="BASIC_AUTH"]')
@@ -65,7 +65,7 @@
       // enter a new target name
       .waitForElementVisible('#replication-target', waitTime, true)
       .clickWhenVisible('option[value="REPLICATION_TARGET_NEW_LOCAL_DATABASE"]')
-      .setValue('.replication__new-input', replicatedDBName)
+      .setValue('#replication-target-new-local-database-database-name', replicatedDBName)
 
       // select target USER/PASSWORD authentication
       .clickWhenVisible('select[id="select-replication-target-auth"] option[value="BASIC_AUTH"]')
@@ -103,8 +103,8 @@
 
       // select the LOCAL db as the source
       .clickWhenVisible('select[id="replication-source"] option[value="REPLICATION_SOURCE_LOCAL"]')
-      .waitForElementVisible('.replication__input-react-select', waitTime, true)
-      .setValue('.replication__input-react-select .Select-input input', [newDatabaseName1, client.Keys.ENTER])
+      .waitForElementVisible('#replication-source-local-database-select', waitTime, true)
+      .setValue('#replication-source-local-database-select', [newDatabaseName1, client.Keys.ENTER])
 
 
       // select source USER/PASSWORD authentication
@@ -117,7 +117,7 @@
       // select existing local as the target
       .waitForElementVisible('#replication-target', waitTime, true)
       .clickWhenVisible('#replication-target option[value="REPLICATION_TARGET_EXISTING_LOCAL_DATABASE"]')
-      .setValue('#replication-target-local .Select-input input', [newDatabaseName2, client.Keys.ENTER])
+      .clickWhenVisible('#replication-target-existing-local-database-database-name option[value="' + newDatabaseName2 + '"')
 
       // select target USER/PASSWORD authentication
       .clickWhenVisible('select[id="select-replication-target-auth"] option[value="BASIC_AUTH"]')
@@ -125,8 +125,7 @@
 
       // enter target username/password
       .setValue('#replication-target-auth-password', [password, client.Keys.ENTER])
-
-      .getAttribute('#replicate', 'disabled', function (result) {
+      .getAttribute('button#replicate', 'disabled', function (result) {
         // confirm it's not disabled
         this.assert.equal(result.value, null);
       })
@@ -166,8 +165,8 @@
 
       // select the LOCAL db as the source
       .clickWhenVisible('select[id="replication-source"] option[value="REPLICATION_SOURCE_LOCAL"]')
-      .waitForElementVisible('.replication__input-react-select', waitTime, true)
-      .setValue('.replication__input-react-select .Select-input input', [newDatabaseName1, client.Keys.ENTER])
+      .waitForElementVisible('#replication-source-local-database-select', waitTime, true)
+      .setValue('#replication-source-local-database-select', [newDatabaseName1, client.Keys.ENTER])
 
 
       // select source USER/PASSWORD authentication
@@ -180,8 +179,8 @@
       // select existing local as the target
       .waitForElementVisible('#replication-target', waitTime, true)
       .clickWhenVisible('#replication-target option[value="REPLICATION_TARGET_EXISTING_LOCAL_DATABASE"]')
-      .setValue('#replication-target-local .Select-input input', [newDatabaseName2, client.Keys.ENTER])
-      .setValue('.replication__doc-name-input', [replicatorDoc._id, client.Keys.ENTER])
+      .clickWhenVisible('#replication-target-existing-local-database-database-name option[value="' + newDatabaseName2 + '"')
+      .setValue('input#replication-options-replication-doc', [replicatorDoc._id, client.Keys.ENTER])
 
       // select target USER/PASSWORD authentication
       .clickWhenVisible('select[id="select-replication-target-auth"] option[value="BASIC_AUTH"]')
@@ -219,16 +218,16 @@
 
       // select local db as the source
       .clickWhenVisible('select[id="replication-source"] option[value="REPLICATION_SOURCE_LOCAL"]')
-      .waitForElementVisible('.replication__input-react-select', waitTime, true)
-      .setValue('.replication__input-react-select .Select-input input', [newDatabaseName1, client.Keys.ENTER])
+      .waitForElementVisible('#replication-source-local-database-select', waitTime, true)
+      .setValue('#replication-source-local-database-select', [newDatabaseName1, client.Keys.ENTER])
 
       // enter our source DB
-      .setValue('.replication__input-react-select .Select-input input', [newDatabaseName1, client.Keys.ENTER])
+      .setValue('#replication-source-local-database-select', [newDatabaseName1, client.Keys.ENTER])
 
       // enter a new target name
       .waitForElementVisible('#replication-target', waitTime, true)
       .clickWhenVisible('option[value="REPLICATION_TARGET_NEW_LOCAL_DATABASE"]')
-      .setValue('.replication__new-input', replicatedDBName)
+      .setValue('#replication-target-new-local-database-database-name', replicatedDBName)
 
       .clickWhenVisible('#replicate')
 
@@ -251,11 +250,11 @@
 
       // select local db as the source
       .clickWhenVisible('select[id="replication-source"] option[value="REPLICATION_SOURCE_LOCAL"]')
-      .waitForElementVisible('.replication__input-react-select', waitTime, true)
-      .setValue('.replication__input-react-select .Select-input input', [newDatabaseName1, client.Keys.ENTER])
+      .waitForElementVisible('#replication-source-local-database-select', waitTime, true)
+      .setValue('#replication-source-local-database-select', [newDatabaseName1, client.Keys.ENTER])
 
       // enter our source DB
-      .setValue('.replication__input-react-select .Select-input input', [newDatabaseName1, client.Keys.ENTER])
+      .setValue('#replication-source-local-database-select', [newDatabaseName1, client.Keys.ENTER])
 
       // select source USER/PASSWORD authentication
       .clickWhenVisible('select[id="select-replication-source-auth"] option[value="BASIC_AUTH"]')
@@ -267,7 +266,7 @@
       // enter a new target name
       .waitForElementVisible('#replication-target', waitTime, true)
       .clickWhenVisible('option[value="REPLICATION_TARGET_NEW_REMOTE_DATABASE"]')
-      .setValue('.replication__remote-connection-url', 'http://fake.com/dummydb')
+      .setValue('#replication-remote-connection-url', 'http://fake.com/dummydb')
 
       .clickWhenVisible('#replicate')
 
diff --git a/app/addons/replication/tests/nightwatch/replicationactivity.js b/app/addons/replication/tests/nightwatch/replicationactivity.js
index c5b8fa3..970ca01 100644
--- a/app/addons/replication/tests/nightwatch/replicationactivity.js
+++ b/app/addons/replication/tests/nightwatch/replicationactivity.js
@@ -29,8 +29,9 @@
       .loginToGUI()
       .url(baseUrl + '/#replication')
       .waitForElementNotPresent('.load-lines', waitTime, true)
-      .waitForElementPresent('.replication__filter', waitTime, true)
-      .clickWhenVisible('a[href="#/database/_replicator/existing-doc-id-view-doc"]')
+      .waitForElementPresent('#replication-filter-group', waitTime, true)
+      .assert.elementsCount('.replication__table-row', 1)
+      .clickWhenVisible('button[title="Edit replication document"]')
       .waitForElementNotPresent('.load-lines', waitTime, true)
       .waitForElementPresent('#editor-container', waitTime, true)
       .end();
@@ -52,12 +53,12 @@
       .loginToGUI()
       .url(baseUrl + '/#replication')
       .waitForElementNotPresent('.load-lines', waitTime, true)
-      .waitForElementPresent('.replication__filter', waitTime, true)
-      .clickWhenVisible('a[title="Edit replication"]')
+      .waitForElementPresent('#replication-filter-group', waitTime, true)
+      .clickWhenVisible('button[title="Edit replication"]')
       .waitForElementNotPresent('.load-lines', waitTime, true)
-      .waitForElementPresent('.replication__section', waitTime, true)
+      .waitForElementPresent('#replication-options-replication-doc', waitTime, true)
       .pause(10000)
-      .assert.valueContains(".replication__doc-name-input", replicatorDoc._id)
+      .assert.valueContains("#replication-options-replication-doc", replicatorDoc._id)
       .end();
   },
 
@@ -84,12 +85,12 @@
       .loginToGUI()
       .url(baseUrl + '/#replication')
       .waitForElementNotPresent('.load-lines', waitTime, true)
-      .waitForElementVisible('.replication__filter-input', waitTime, true)
-      .setValue('.replication__filter-input', 'filter1')
-      .waitForElementNotPresent('a[href="#/database/_replicator/existing-doc-filter2"]', waitTime, true)
-      .clearValue('.replication__filter-input')
-      .setValue('.replication__filter-input', 'filter')
-      .waitForElementPresent('a[href="#/database/_replicator/existing-doc-filter2"]', waitTime, true)
+      .waitForElementVisible('#replication-filter-input', waitTime, true)
+      .setValue('#replication-filter-input', 'filter1')
+      .waitForElementNotPresent('button[aria-label="Delete document existing-doc-filter2"]', waitTime, true)
+      .clearValue('#replication-filter-input')
+      .setValue('#replication-filter-input', 'filter')
+      .waitForElementPresent('button[aria-label="Delete document existing-doc-filter2"]', waitTime, true)
       .end();
   },
 
@@ -122,7 +123,7 @@
       .getText(firstRowSelector + ' td:nth-of-type(2)', function(result) {
         firstDoc = result.value;
       })
-      .clickWhenVisible(firstRowSelector + ' .replication__row-btn.icon-trash', waitTime, true)
+      .clickWhenVisible(firstRowSelector + ' button[title="Delete document"]', waitTime, true)
       .clickWhenVisible('.replication_delete-doc-modal.modal-dialog .modal-footer .cancel-link', waitTime, true)
       .waitForElementVisible(firstRowSelector, waitTime, true)
       .getText(firstRowSelector + ' td:nth-of-type(2)', function(result) {
diff --git a/app/addons/search/__tests__/components.test.js b/app/addons/search/__tests__/components.test.js
index 4d053d5..8fc86f3 100644
--- a/app/addons/search/__tests__/components.test.js
+++ b/app/addons/search/__tests__/components.test.js
@@ -80,18 +80,16 @@
     const el = mount(<AnalyzerDropdown />);
 
     // confirm default label
-    expect(el.find('label').length).toBe(2);
-    expect(el.find('label').first().text()).toBe('Type');
+    expect(el.find('label').text()).toBe('Type');
 
     // confirm default value
-    expect(el.find('select').hasClass('standard')).toBeTruthy();
+    expect(el.find('select').prop('value')).toBe('standard');
   });
 
   it('omits label element if empty label passed', () => {
     const el = mount(<AnalyzerDropdown label="" />);
 
-    // (1, because there are normally 2 labels, see prev test)
-    expect(el.find('label').length).toBe(1);
+    expect(el.find('label').length).toBe(0);
   });
 
   it('custom ID works', () => {
@@ -106,7 +104,7 @@
       <AnalyzerDropdown defaultSelected={defaultSelected} />
     );
 
-    expect(el.find('select').hasClass(defaultSelected)).toBeTruthy();
+    expect(el.find('select').prop('value')).toBe(defaultSelected);
   });
 
   it('custom classes get applied', () => {
diff --git a/app/addons/search/assets/less/search.less b/app/addons/search/assets/less/search.less
deleted file mode 100644
index 9725d55..0000000
--- a/app/addons/search/assets/less/search.less
+++ /dev/null
@@ -1,160 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-@import "../../../../../assets/less/bootstrap/mixins.less";
-@import "../../../../../assets/less/variables.less";
-
-.search-index-page-loading {
-  margin-top: 20px;
-}
-
-.edit-search-index-page-loading {
-  margin-top: 25px;
-}
-
-.index-tabs.dashboard-upper-menu {
-  position: inherit;
-  &.index-tabs {
-    border-bottom: 0;
-    .fonticon:before {
-      margin-right: 6px;
-    }
-  }
-}
-
-#queryText{
-  max-width: 300px;
-}
-
-.ace-editor-section .ace_editor {
-  font-size: 13px;
-  width: 100%;
-  line-height: 22px;
-}
-
-.search-query-save {
-  max-width: 100%;
-  .design-doc-group #new-ddoc-section {
-    margin-top: 24px;
-    label {
-      padding-top: 12px;
-    }
-  }
-}
-
-#analyzer-fields {
-  margin-top: 10px;
-
-  li {
-    margin-bottom: 5px;
-
-    &:first-child {
-      button {
-        margin-top: 27px;
-      }
-    }
-    div:first-child {
-      margin-left: 0;
-    }
-  }
-
-  .span4 {
-    margin-right: 3px;
-    width: 30%;
-
-    .styled-select, select {
-      width: 100%;
-    }
-  }
-}
-
-.delete-analyzer {
-  margin-top: 3px;
-  margin-left: 15px;
-}
-
-.search-index-content>div {
-  margin: 20px 10px 0 20px;
-  .icon-question-sign {
-    margin-left: 4px;
-    &:hover {
-      color: @hoverHighlight;
-    }
-  }
-}
-
-.search-index-function {
-  label {
-    margin-right: 0;
-  }
-  .ace_editor {
-    line-height: 22px;
-  }
-}
-
-#search-query-submit {
-  padding: 12px;
-}
-
-#search-index-preview-form {
-  margin: 5px 0 20px;
-  .input-append {
-    vertical-align: bottom;
-  }
-  .help-link {
-    display: inline-block;
-    margin-left: 12px;
-    padding-bottom: 23px;
-  }
-}
-
-#search-index-help {
-  h4 {
-    margin-top: 18px;
-  }
-
-  ul {
-    margin: 0 0 10px;
-    padding: 0;
-    list-style-type: none;
-  }
-  .search-index-examples {
-    li {
-      line-height: 28px;
-      span {
-        .search-index-code-section;
-      }
-    }
-  }
-}
-
-.search-index-tab-content {
-  a:hover {
-    text-decoration: none;
-  }
-}
-
-.search-index-code-section {
-  font-size: 12px;
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  background-color: #ddd;
-  padding: 5px;
-  border-radius: 3px;
-}
-
-#search-index-query-button {
-  height: 46px;
-  .border-right-radius(@radius);
-}
-
-body #dashboard-content #search-index-form {
-  position: relative;
-}
diff --git a/app/addons/search/assets/scss/search.scss b/app/addons/search/assets/scss/search.scss
new file mode 100644
index 0000000..6fca7de
--- /dev/null
+++ b/app/addons/search/assets/scss/search.scss
@@ -0,0 +1,48 @@
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License. You may obtain a copy of
+//  the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+
+@import "../../../../../assets/scss/variables";
+@import "../../../../../assets/scss/mixins";
+
+.search-analyzer-type-selector {
+  display: block;
+}
+
+.search-index-page-loading {
+  margin-top: 20px;
+}
+
+.edit-search-index-page-loading {
+  margin-top: 25px;
+}
+
+.ace-editor-section .ace_editor {
+  font-size: 13px;
+  width: 100%;
+  line-height: 22px;
+}
+
+.search-index-content {
+  margin-bottom: 1rem;
+}
+
+#search-index-preview-form {
+  margin: 0.5rem 0 1rem;
+  .input-append {
+    vertical-align: bottom;
+  }
+  .help-link {
+    display: inline-block;
+    vertical-align: top;
+    margin-left: 12px;
+  }
+}
diff --git a/app/addons/search/base.js b/app/addons/search/base.js
index 0562256..09e539c 100644
--- a/app/addons/search/base.js
+++ b/app/addons/search/base.js
@@ -16,7 +16,7 @@
 import reducers from './reducers';
 import { get } from "../../core/ajax";
 import Constants from './constants';
-import './assets/less/search.less';
+import './assets/scss/search.scss';
 
 function checkSearchFeature () {
   // Checks if the CouchDB server supports Search
diff --git a/app/addons/search/components/Analyzer.js b/app/addons/search/components/Analyzer.js
index 06807f2..12e9f1c 100644
--- a/app/addons/search/components/Analyzer.js
+++ b/app/addons/search/components/Analyzer.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
+import { ButtonGroup, Button, Card } from 'react-bootstrap';
 import Constants from '../constants';
 import AnalyzerMultiple from './AnalyzerMultiple';
 import AnalyzerDropdown from './AnalyzerDropdown';
@@ -29,8 +30,8 @@
     addAnalyzerRow: PropTypes.func.isRequired
   };
 
-  selectAnalyzerType = (e) => {
-    this.props.setAnalyzerType(e.target.value);
+  selectAnalyzerType = (val) => {
+    this.props.setAnalyzerType(val);
   };
 
   validate = () => {
@@ -86,40 +87,31 @@
   };
 
   render() {
-    let multipleClasses = 'btn';
-    if (this.props.analyzerType === Constants.ANALYZER_MULTIPLE) {
-      multipleClasses += ' active';
-    }
-    let singleClasses = 'btn';
-    if (this.props.analyzerType === Constants.ANALYZER_SINGLE) {
-      singleClasses += ' active';
-    }
-
     return (
-      <div className="well">
-        <div className="control-group">
-          <label htmlFor="search-analyzer">Analyzer</label>
-          <div className="btn-group toggle-btns" id="analyzer">
-            <label style={{width: '82px'}}  htmlFor="single-analyzer" className={singleClasses}>Single</label>
-            <input
-              type="radio"
-              id="single-analyzer"
-              name="search-analyzer"
-              value="single"
-              checked={this.props.analyzerType === Constants.ANALYZER_SINGLE}
-              onChange={this.selectAnalyzerType} />
-            <input
-              type="radio"
-              id="multiple-analyzer"
-              name="search-analyzer"
-              value="multiple"
-              checked={this.props.analyzerType === Constants.ANALYZER_MULTIPLE}
-              onChange={this.selectAnalyzerType} />
-            <label style={{width: '82px'}} htmlFor="multiple-analyzer" className={multipleClasses}>Multiple</label>
+      <Card className='mb-3 col-12 col-xxl-8'>
+        <Card.Body>
+          <div className="row">
+            <div className="mb-3 col-12">
+              <label>Analyzer</label>
+              <div className="search-analyzer-type-selector">
+                <ButtonGroup aria-label='analyzer type selector'>
+                  <Button type="button"
+                    id="single-analyzer"
+                    active={this.props.analyzerType === Constants.ANALYZER_SINGLE}
+                    onClick={() => {this.selectAnalyzerType(Constants.ANALYZER_SINGLE);}}
+                    variant="cf-secondary">Single</Button>
+                  <Button type="button"
+                    id="multiple-analyzer"
+                    active={this.props.analyzerType === Constants.ANALYZER_MULTIPLE}
+                    onClick={() => {this.selectAnalyzerType(Constants.ANALYZER_MULTIPLE);}}
+                    variant="cf-secondary">Multiple</Button>
+                </ButtonGroup>
+              </div>
+            </div>
           </div>
-        </div>
-        {this.getAnalyzerType()}
-      </div>
+          {this.getAnalyzerType()}
+        </Card.Body>
+      </Card>
     );
   }
 }
diff --git a/app/addons/search/components/AnalyzerDropdown.js b/app/addons/search/components/AnalyzerDropdown.js
index fa28612..45b197c 100644
--- a/app/addons/search/components/AnalyzerDropdown.js
+++ b/app/addons/search/components/AnalyzerDropdown.js
@@ -12,9 +12,8 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
-import GeneralComponents from '../../components/react-components';
+import Form from 'react-bootstrap/Form';
 
-const StyledSelect = GeneralComponents.StyledSelect;
 
 export default class AnalyzerDropdown extends React.Component {
   static defaultProps = {
@@ -66,12 +65,13 @@
     return (
       <div className={this.props.classes}>
         {this.getLabel()}
-        <StyledSelect
-          selectChange={this.props.onChange}
-          selectValue={this.props.defaultSelected}
-          selectId={this.props.id}
-          selectContent={[this.getAnalyzers(), languages]}
-        />
+        <Form.Select
+          onChange={this.props.onChange}
+          value={this.props.defaultSelected}
+          id={this.props.id}
+        >
+          {[this.getAnalyzers(), languages]}
+        </Form.Select>
       </div>
     );
   }
diff --git a/app/addons/search/components/AnalyzerMultiple.js b/app/addons/search/components/AnalyzerMultiple.js
index 4f1ca81..bd1c335 100644
--- a/app/addons/search/components/AnalyzerMultiple.js
+++ b/app/addons/search/components/AnalyzerMultiple.js
@@ -10,9 +10,10 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import FauxtonAPI from '../../../core/api';
 import PropTypes from 'prop-types';
 import React from 'react';
+import { Button } from 'react-bootstrap';
+import FauxtonAPI from '../../../core/api';
 import AnalyzerRow from './AnalyzerRow';
 import AnalyzerDropdown from './AnalyzerDropdown';
 
@@ -65,14 +66,16 @@
       return row.valid;
     });
 
-    if (!allValid || hasDuplicate) {
+    const checksPass = allValid && !hasDuplicate;
+    if (!checksPass) {
       FauxtonAPI.addNotification({
-        msg: 'Fieldnames cannot be empty and must be unique.',
+        msg: 'Field names cannot be empty and must be unique.',
         type: 'error',
         clear: true
       });
     }
-    return allValid;
+
+    return checksPass;
   };
 
   render() {
@@ -81,13 +84,16 @@
         <AnalyzerDropdown
           label="Default"
           id="defaultAnalyzer"
+          classes="mb-3"
           defaultSelected={this.props.defaultAnalyzer}
           onChange={this.props.selectDefaultMultipleAnalyzer}
           isValidating={this.validate} />
-        <ul id="analyzer-fields" className="unstyled">{this.getRows()}</ul>
-        <button className="addfield btn btn-small btn-primary" onClick={this.addRow}>
+        <div>
+          {this.getRows()}
+        </div>
+        <Button className="addfield" variant="cf-secondary" onClick={this.addRow}>
           Add Field
-        </button>
+        </Button>
       </div>
     );
   }
diff --git a/app/addons/search/components/AnalyzerRow.js b/app/addons/search/components/AnalyzerRow.js
index 7926b86..c7bfc12 100644
--- a/app/addons/search/components/AnalyzerRow.js
+++ b/app/addons/search/components/AnalyzerRow.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
+import { Button, Form } from 'react-bootstrap';
 import AnalyzerDropdown from './AnalyzerDropdown';
 
 export default class AnalyzerRow extends React.Component {
@@ -30,7 +31,7 @@
   };
 
   getFieldNameHeading = (analyzerId) => {
-    return (this.props.rowIndex === 0) && <label htmlFor={analyzerId}>Fieldname</label>;
+    return (this.props.rowIndex === 0) && <label htmlFor={analyzerId}>Field name</label>;
   };
 
   changeFieldName = (e) => {
@@ -51,31 +52,31 @@
     const analyzerId = "analyzer-row-" + this.props.rowIndex;
     const analyzerHeading = (this.props.rowIndex === 0) ? 'Analyzer' : '';
 
-    let fieldNameClasses = 'span12';
+    let fieldNameClasses = '';
     if (this.props.showErrors && !this.props.row.valid) {
-      fieldNameClasses += ' unhappy';
+      fieldNameClasses = 'is-invalid';
     }
 
     return (
-      <li>
-        <div className="row-fluid">
-          <div className="span4">
-            {this.getFieldNameHeading(analyzerId)}
-            <input type="text" value={this.props.row.fieldName} className={fieldNameClasses} onChange={this.changeFieldName} />
-          </div>
-
+      <div className="row align-items-end">
+        <div className="mb-3 col col-lg">
+          {this.getFieldNameHeading(analyzerId)}
+          <Form.Control type="text"
+            value={this.props.row.fieldName}
+            className={fieldNameClasses}
+            onChange={this.changeFieldName} />
+        </div>
+        <div className="mb-3 col-auto col-lg">
           <AnalyzerDropdown
             id={analyzerId}
             label={analyzerHeading}
             defaultSelected={this.props.row.analyzer}
-            classes="span4"
             onChange={this.selectAnalyzer} />
-
-          <div className="span4">
-            <button className="btn btn-danger delete-analyzer" onClick={this.deleteRow}>delete</button>
-          </div>
         </div>
-      </li>
+        <div className="mb-3 col-auto col-lg-auto">
+          <Button variant="cf-danger" onClick={this.deleteRow}>delete</Button>
+        </div>
+      </div>
     );
   }
 }
diff --git a/app/addons/search/components/SearchForm.js b/app/addons/search/components/SearchForm.js
index 4c6371a..cb9d9c8 100644
--- a/app/addons/search/components/SearchForm.js
+++ b/app/addons/search/components/SearchForm.js
@@ -12,6 +12,7 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
+import { Button, Form } from 'react-bootstrap';
 import FauxtonAPI from '../../../core/api';
 import GeneralComponents from '../../components/react-components';
 
@@ -104,26 +105,36 @@
   };
 
   render() {
-    const buttonLabel = this.props.hasActiveQuery ? 'Querying...' : 'Query';
+    const buttonLabel = this.props.hasActiveQuery ? 'Querying...' : 'Run Query';
     return (
       <div>
         <form id="search-index-preview-form">
-          <span className="input-append">
-            <input
-              className="span4"
-              ref={el => this.searchInput = el}
-              type="text"
-              placeholder="Enter your search query"
-              onChange={this.onType}
-              value={this.props.searchQuery} />
-            <button className="btn btn-primary" id="search-index-query-button" type="submit" disabled={this.props.hasActiveQuery}
-              onClick={this.querySearch}>{buttonLabel}</button>
-          </span>
-          <a className="help-link" data-bypass="true" href={FauxtonAPI.constants.DOC_URLS.SEARCH_INDEX_QUERIES} target="_blank" rel="noopener noreferrer">
-            <i className="icon-question-sign" />
-          </a>
+          <div className='row gx-3'>
+            <div className='mb-3 mb-lg-0 col-12 col-lg-8 col-xl-4'>
+              <Form.Control type="text"
+                ref={el => this.searchInput = el}
+                placeholder="Enter your search query"
+                onChange={this.onType}
+                value={this.props.searchQuery} />
+            </div>
+            <div className='col-12 col-lg'>
+              <Button type="submit"
+                variant="cf-primary"
+                id="search-index-query-button"
+                disabled={this.props.hasActiveQuery}
+                onClick={this.querySearch}>
+                {buttonLabel}
+              </Button>
+              <a className="help-link"
+                data-bypass="true"
+                href={FauxtonAPI.constants.DOC_URLS.SEARCH_INDEX_QUERIES}
+                target="_blank"
+                rel="noopener noreferrer">
+                <i className="fonticon-help-circled" />
+              </a>
+            </div>
+          </div>
         </form>
-
         {this.getResults()}
       </div>
     );
diff --git a/app/addons/search/components/SearchIndexEditor.js b/app/addons/search/components/SearchIndexEditor.js
index 825b656..a62a9bf 100644
--- a/app/addons/search/components/SearchIndexEditor.js
+++ b/app/addons/search/components/SearchIndexEditor.js
@@ -14,6 +14,7 @@
 import app from '../../../app';
 import PropTypes from 'prop-types';
 import React from 'react';
+import { Button, Form } from 'react-bootstrap';
 import GeneralComponents from '../../components/react-components';
 import IndexEditorComponents from '../../documents/index-editor/components';
 import Analyzer from './Analyzer';
@@ -118,8 +119,8 @@
     const pageHeader = this.props.isCreatingIndex ? 'New Search Index' : 'Edit Search Index';
     const btnLabel = this.props.isCreatingIndex ? 'Create Document and Build Index' : 'Save Document and Build Index';
     return (
-      <form className="form-horizontal search-query-save" id="search-index">
-        <h3 className="simple-header">{pageHeader}</h3>
+      <form id="search-index">
+        <h3 className='simple-header'>{pageHeader}</h3>
 
         <DesignDocSelector
           ref={node => this.designDocSelector = node}
@@ -135,14 +136,20 @@
           onChangeNewDesignDocPartitioned={this.props.updateNewDesignDocPartitioned}
           docLink={app.helpers.getDocUrl('DOC_URL_DESIGN_DOCS')} />
 
-        <div className="control-group">
-          <label htmlFor="search-name">Index name</label>
-          <input type="text" id="search-name" value={this.props.searchIndexName} onChange={this.updateSearchIndexName} />
+        <div className="row">
+          <div className="mb-3 col-12 col-lg-6 col-xxl-4  ">
+            <label htmlFor="search-name">Index name</label>
+            <Form.Control type="text"
+              id="search-name"
+              value={this.props.searchIndexName}
+              onChange={this.updateSearchIndexName}
+            />
+          </div>
         </div>
 
         <GeneralComponents.CodeEditorPanel
           id={'search-function'}
-          className="ace-editor-section"
+          className="ace-editor-section mb-3"
           ref={node => this.searchIndexEditor = node}
           title={"Search index function"}
           allowZenMode={false}
@@ -152,11 +159,15 @@
 
         <Analyzer ref={node => this.analyzer = node} {...this.props}/>
 
-        <div className="control-group">
-          <button id="save-index" className="btn btn-primary save" onClick={this.saveIndex}>
-            <i className="icon fonticon-ok-circled" />{btnLabel}
-          </button>
-          <a href={this.getCancelLink()} className="index-cancel-link">Cancel</a>
+        <div className="row">
+          <div className="col-12">
+            <Button id="save-index" variant="cf-primary" onClick={this.saveIndex}>
+              <i className="fonticon-ok-circled" />{btnLabel}
+            </Button>
+            <Button href={this.getCancelLink()} variant="cf-cancel" className="index-cancel-link">
+              Cancel
+            </Button>
+          </div>
         </div>
       </form>
     );
diff --git a/app/addons/search/tests/nightwatch/cloneSearchIndex.js b/app/addons/search/tests/nightwatch/cloneSearchIndex.js
index afb5468..343a7f7 100644
--- a/app/addons/search/tests/nightwatch/cloneSearchIndex.js
+++ b/app/addons/search/tests/nightwatch/cloneSearchIndex.js
@@ -33,11 +33,11 @@
       .clickWhenVisible('#save-index')
       .waitForElementVisible('.Toastify__toast-container .Toastify__toast--success', waitTime, false)
 
-      .clickWhenVisible('.index-list li span', waitTime, true)
-      .clickWhenVisible('.popover-content .fonticon-files-o', waitTime, true)
+      .clickWhenVisible('a.dropdown-toggle.fonticon-wrench', waitTime, true)
+      .clickWhenVisible('div.dropdown-menu span.fonticon-files-o', waitTime, true)
       .waitForElementVisible('#new-index-name', waitTime, true)
       .setValue('#new-index-name', 'cloned-search-index')
-      .clickWhenVisible('.clone-index-modal .btn-primary', waitTime, true)
+      .clickWhenVisible('.clone-index-modal .btn-cf-primary', waitTime, true)
 
       // now wait for the sidebar to be updated with the new view
       .waitForElementVisible('#test1_cloned-search-index', waitTime, true)
diff --git a/app/addons/search/tests/nightwatch/createNewSearch.js b/app/addons/search/tests/nightwatch/createNewSearch.js
index 3bbec97..e1da9cc 100644
--- a/app/addons/search/tests/nightwatch/createNewSearch.js
+++ b/app/addons/search/tests/nightwatch/createNewSearch.js
@@ -31,10 +31,7 @@
       .click('#new-design-docs-button a')
       .click('#new-design-docs-button a[href="#/database/' + newDatabaseName + '/new_search"]')
       .waitForElementVisible('.faux-header__doc-header-title', client.globals.maxWaitTime, true)
-
-      .clickWhenVisible('.styled-select select')
-      .keys(['_design/keyview', '\uE006'])
-
+      .clickWhenVisible('select[id="faux__edit-view__design-doc"] option[value="_design/keyview"]')
       .clearValue('#search-name')
       .setValue('#search-name', 'fancy_search')
       .execute('\
@@ -60,8 +57,7 @@
       .waitForElementPresent('#new-design-docs-button', client.globals.maxWaitTime, false)
       .click('#new-design-docs-button a')
       .click('#new-design-docs-button a[href="#/database/' + newDatabaseName + '/new_search"]')
-      .clickWhenVisible('.styled-select select')
-      .keys(['_design/keyview', '\uE006'])
+      .clickWhenVisible('select[id="faux__edit-view__design-doc"] option[value="_design/keyview"]')
 
       .clearValue('#search-name')
       .setValue('#search-name', 'clean-slate-test')
@@ -75,8 +71,8 @@
       .waitForElementPresent('#new-design-docs-button', client.globals.maxWaitTime, false)
       .click('#new-design-docs-button a')
       .click('#new-design-docs-button a[href="#/database/' + newDatabaseName + '/new_search"]')
-      .waitForElementVisible('.styled-select select', client.globals.maxWaitTime, false)
-      .assert.value('.styled-select select', 'new-doc')
+      .waitForElementVisible('select.form-select#faux__edit-view__design-doc', client.globals.maxWaitTime, false)
+      .assert.value('select.form-select#faux__edit-view__design-doc', 'new-doc')
       .end();
   },
 
diff --git a/app/addons/search/tests/nightwatch/deleteSearchIndex.js b/app/addons/search/tests/nightwatch/deleteSearchIndex.js
index f25d583..44cffd8 100644
--- a/app/addons/search/tests/nightwatch/deleteSearchIndex.js
+++ b/app/addons/search/tests/nightwatch/deleteSearchIndex.js
@@ -39,9 +39,9 @@
       .waitForElementVisible('#test1_test1-index', waitTime, true)
 
       // now delete it and confirm that the entire design doc gets removed (because it's the last index)
-      .clickWhenVisible('.index-list li span', waitTime, true)
-      .clickWhenVisible('.popover-content .fonticon-trash', waitTime, true)
-      .clickWhenVisible('.confirmation-modal button.btn.btn-primary')
+      .clickWhenVisible('a.dropdown-toggle.fonticon-wrench', waitTime, true)
+      .clickWhenVisible('div.dropdown-menu span.fonticon-trash', waitTime, true)
+      .clickWhenVisible('.confirmation-modal button.btn.btn-cf-primary')
 
       // now wait for the sidebar to have removed the design doc
       .waitForElementNotPresent('#testdesigndoc', waitTime, true)
@@ -70,11 +70,11 @@
       .waitForElementNotPresent('.loading-lines', waitTime, false)
 
       // now delete the search index. Since there's a view in this design doc, the design doc should not be removed
-      .clickWhenVisible('#nav-design-function-testdesigndocindexes .index-list li span', waitTime, true)
-      .clickWhenVisible('.popover-content .fonticon-trash', waitTime, true)
+      .clickWhenVisible('#nav-design-function-testdesigndocindexes a.dropdown-toggle.fonticon-wrench', waitTime, true)
+      .clickWhenVisible('div.dropdown-menu span.fonticon-trash', waitTime, true)
       .waitForElementVisible('div.confirmation-modal', waitTime, false)
-      .clickWhenVisible('.confirmation-modal button.btn.btn-primary')
-      .waitForElementNotPresent('.confirmation-modal button.btn.btn-primary', waitTime, true)
+      .clickWhenVisible('.confirmation-modal button.btn.btn-cf-primary')
+      .waitForElementNotPresent('.confirmation-modal button.btn.btn-cf-primary', waitTime, true)
 
       // just assert the search indexes section has been removed, but the design doc still exists
       .waitForElementNotPresent('#nav-design-function-testdesigndocindexes', waitTime, true)
diff --git a/app/addons/search/tests/nightwatch/searchPageApiBar.js b/app/addons/search/tests/nightwatch/searchPageApiBar.js
index d23ed8c..b3510d8 100644
--- a/app/addons/search/tests/nightwatch/searchPageApiBar.js
+++ b/app/addons/search/tests/nightwatch/searchPageApiBar.js
@@ -28,27 +28,26 @@
       .waitForElementPresent('#new-design-docs-button', client.globals.maxWaitTime, false)
       .click('#new-design-docs-button a')
       .click('#new-design-docs-button a[href="#/database/' + newDatabaseName + '/new_search"]')
-      .clickWhenVisible('.styled-select select')
+      .clickWhenVisible('select.form-select')
 
       // confirm there's no API URL field on the create index page
       .pause(5000)
       .assert.not.elementPresent('.faux__jsonlink')
 
       // now create the rest of the index
-      .keys(['_design/keyview', '\uE006'])
+      .clickWhenVisible('select[id="faux__edit-view__design-doc"] option[value="_design/keyview"]')
       .clearValue('#search-name')
       .setValue('#search-name', 'api-bar-test')
       .clickWhenVisible('#save-index')
       .waitForElementVisible('.Toastify__toast-container .Toastify__toast--success', client.globals.maxWaitTime, false)
+      .closeNotification()
 
       // confirm the API URL field now shows up (we're on the edit search index page now)
       .assert.elementPresent('.faux__jsonlink')
 
       // now enter a search and confirm it's properly encoded in the api URL bar
       .setValue('#search-index-preview-form input', searchStr)
-      .clickWhenVisible('#search-index-preview-form button')
-
-      .waitForElementNotVisible('.Toastify__toast-container .Toastify__toast--success', client.globals.maxWaitTime, false)
+      .clickWhenVisible('#search-index-query-button')
       .waitForElementNotPresent('.loading-lines', client.globals.maxWaitTime, false)
       .assert.attributeContains('.faux__jsonlink-link', 'href', fullURL)
       .end();
diff --git a/app/addons/setup/assets/less/setup.less b/app/addons/setup/assets/scss/setup.scss
similarity index 64%
rename from app/addons/setup/assets/less/setup.less
rename to app/addons/setup/assets/scss/setup.scss
index 421805c..ce035a0 100644
--- a/app/addons/setup/assets/less/setup.less
+++ b/app/addons/setup/assets/scss/setup.scss
@@ -10,21 +10,36 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+@import "../../../../../assets/scss/variables";
+
 .setup-screen {
-  padding: 20px;
-  button {
-    margin-top: 20px;
+  .header {
+    margin-bottom: 1rem;
   }
-  #setup-btn-no-thanks {
-    margin-left: 30px;
+  
+  .configure-buttons {
+    margin-top: 1.5rem;
+    button {
+      margin-right: 1.5rem;
+    }
+  }
+}
+
+.setup-setupnode-section {
+  margin-top: 1rem;
+}
+
+.setup-addnode-section {
+  border-top: 1px solid $cf-border-color01;
+  border-bottom: 1px solid $cf-border-color01;
+  margin-bottom: 1rem;
+
+  .setup-nodelist {
+    margin-bottom: 1rem;
   }
 }
 
 .setup-nodes {
-  input {
-    margin-right: 15px;
-  }
-
   h2 {
     font-size: 16px;
     line-height: normal;
@@ -37,26 +52,4 @@
       margin-left: 10px;
     }
   }
-
-  .input-remote-node {
-    width: 50%;
-  }
-
-  .centered {
-    text-align: center;
-  }
-
-  .setup-finish,
-  .setup-nodelist,
-  .setup-opt-settings,
-  .setup-creds,
-  .setup-port,
-  .setup-add-button {
-    margin-top: 30px;
-  }
-
-  .setup-finish {
-    padding-bottom: 40px;
-  }
-
 }
diff --git a/app/addons/setup/base.js b/app/addons/setup/base.js
index a457c3f..1f07499 100644
--- a/app/addons/setup/base.js
+++ b/app/addons/setup/base.js
@@ -14,7 +14,7 @@
 import app from '../../app';
 import Setup from "./route";
 import reducers from './reducers';
-import "./assets/less/setup.less";
+import './assets/scss/setup.scss';
 Setup.initialize = function () {
   FauxtonAPI.addHeaderLink({
     title: 'Setup',
diff --git a/app/addons/setup/components/CurrentAdminPassword.js b/app/addons/setup/components/CurrentAdminPassword.js
index 2860013..5268b21 100644
--- a/app/addons/setup/components/CurrentAdminPassword.js
+++ b/app/addons/setup/components/CurrentAdminPassword.js
@@ -11,8 +11,9 @@
 // the License.
 
 
-import React from 'react';
 import PropTypes from 'prop-types';
+import React from 'react';
+import { Form } from 'react-bootstrap';
 
 
 export default class SetupCurrentAdminPassword extends React.Component {
@@ -24,22 +25,22 @@
     }
 
     return (
-      <div className="setup-creds">
-        <div>
-          <p>{text}</p>
+      <div className="row">
+        <div className="col-12">
+          <label>{text}</label>
         </div>
-        <input
-          className="setup-username"
-          onChange={this.props.onAlterUsername}
-          placeholder="Username"
-          value={this.props.username}
-          type="text"/>
-        <input
-          className="setup-password"
-          onChange={this.props.onAlterPassword}
-          placeholder="Password"
-          value={this.props.password}
-          type="password"/>
+        <div className="col-12 col-md-5 col-xl-4 mb-3">
+          <Form.Control type="text"
+            onChange={this.props.onAlterUsername}
+            placeholder="Username"
+            value={this.props.username} />
+        </div>
+        <div className="col-12 col-md-5 col-xl-4 mb-3">
+          <Form.Control type="password"
+            onChange={this.props.onAlterPassword}
+            placeholder="Password"
+            value={this.props.password} />
+        </div>
       </div>
     );
   }
diff --git a/app/addons/setup/components/FirstStepController.js b/app/addons/setup/components/FirstStepController.js
index 279f382..2a5f119 100644
--- a/app/addons/setup/components/FirstStepController.js
+++ b/app/addons/setup/components/FirstStepController.js
@@ -32,14 +32,14 @@
 
     return (
       <div className="setup-screen">
-        <h2>Welcome to {app.i18n.en_US['couchdb-productname']}!</h2>
+        <h3 className="header">Welcome to {app.i18n.en_US['couchdb-productname']}!</h3>
         <p>
             This wizard should be run directly on the node, rather than through a load-balancer.
         </p>
         <p>
             You can configure a single node, or a multi-node CouchDB installation.
         </p>
-        <div>
+        <div className="configure-buttons">
           <ConfirmButton
             onClick={this.redirectToMultiNodeSetup}
             showIcon={false}
@@ -47,7 +47,6 @@
           <ConfirmButton
             onClick={this.redirectToSingleNodeSetup}
             showIcon={false}
-            id="setup-btn-no-thanks"
             text="Configure a Single Node"/>
         </div>
       </div>
diff --git a/app/addons/setup/components/MultipleNodeController.js b/app/addons/setup/components/MultipleNodeController.js
index 17482f9..2221d98 100644
--- a/app/addons/setup/components/MultipleNodeController.js
+++ b/app/addons/setup/components/MultipleNodeController.js
@@ -11,6 +11,7 @@
 // the License.
 import React from 'react';
 import PropTypes from 'prop-types';
+import { Form } from 'react-bootstrap';
 import ReactComponents from "../../components/react-components";
 import CurrentAdminPassword from "./CurrentAdminPassword";
 import OptionalSettings from "./OptionalSettings";
@@ -100,39 +101,46 @@
             onAlterNodeCount={this._alterNodeCount}
             nodeCount={setupNode.nodeCount}/>
         </div>
-        <hr/>
-        <div className="setup-add-nodes-section">
+
+        <div className="setup-addnode-section">
           <h2>Add Nodes to the Cluster</h2>
-          <p>Remote host</p>
-          <input
-            value={additionalNode.remoteAddress}
-            onChange={this._alterRemoteAddressAdditionalNode}
-            className="input-remote-node"
-            type="text"
-            placeholder="IP Address"/>
+          <div className="row">
+            <div className="col-12 col-md-5 col-xl-4 mb-3">
+              <label>Remote host</label>
+              <Form.Control type="text"
+                onChange={this._alterRemoteAddressAdditionalNode}
+                placeholder="IP Address"
+                value={additionalNode.remoteAddress} />
+
+            </div>
+          </div>
           <OptionalSettings
             {...this.props}
             onAlterPort={this._alterPortAdditionalNode}
             onAlterBindAddress={this._alterBindAddressAdditionalNode}
             ip={additionalNode.bindAddress} port={additionalNode.port}/>
 
-          <div className="setup-add-button">
-            <ConfirmButton
-              onClick={this._addNode}
-              showIcon={false}
-              id="setup-btn-no-thanks"
-              text="Add Node"/>
+          <div className="row">
+            <div className="col12 col-md-5 col-xl-4 mb-3">
+              <ConfirmButton
+                onClick={this._addNode}
+                showIcon={false}
+                variant="secondary"
+                text="Add Node"/>
+            </div>
           </div>
-        </div>
-        <div className="setup-nodelist">
-          {this.getNodeList()}
-        </div>
 
-        <div className="centered setup-finish">
-          <ConfirmButton
-            onClick={this._finishClusterSetup}
-            showIcon={false}
-            text="Configure Cluster"/>
+          <div className="setup-nodelist">
+            {this.getNodeList()}
+          </div>
+
+        </div>
+        <div className="row">
+          <div className="col12 col-md-5 col-xl-4 mb-3">
+            <ConfirmButton
+              onClick={this._finishClusterSetup}
+              text="Configure Cluster"/>
+          </div>
         </div>
       </div>
     );
diff --git a/app/addons/setup/components/NodeCountSetting.js b/app/addons/setup/components/NodeCountSetting.js
index 7be1e5a..ba2d723 100644
--- a/app/addons/setup/components/NodeCountSetting.js
+++ b/app/addons/setup/components/NodeCountSetting.js
@@ -10,8 +10,9 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import React from 'react';
 import PropTypes from 'prop-types';
+import React from 'react';
+import { Form } from 'react-bootstrap';
 
 
 export default class NodeCountSetting extends React.Component {
@@ -22,14 +23,14 @@
 
   render() {
     return (
-      <div className="setup-node-count">
-        <p>Number of nodes to be added to the cluster (including this one)</p>
-        <input
-          className="setup-input-nodecount"
-          value={this.props.nodeCount}
-          onChange={this.handleNodeCountChange}
-          placeholder="Value of cluster n"
-          type="text"/>
+      <div className="row">
+        <div className="col-12 col-md-5 col-xl-4 mb-3">
+          <label>Number of nodes to be added to the cluster (including this one)</label>
+          <Form.Control type="text"
+            value={this.props.nodeCount}
+            onChange={this.handleNodeCountChange}
+            placeholder="Value of cluster n" />
+        </div>
       </div>
     );
   }
diff --git a/app/addons/setup/components/OptionalSettings.js b/app/addons/setup/components/OptionalSettings.js
index 1efebb9..65e8562 100644
--- a/app/addons/setup/components/OptionalSettings.js
+++ b/app/addons/setup/components/OptionalSettings.js
@@ -13,6 +13,7 @@
 
 import React from 'react';
 import PropTypes from 'prop-types';
+import { Form } from 'react-bootstrap';
 
 export default class OptionalSettings extends React.Component {
   handleIpChange = (event) => {
@@ -25,22 +26,20 @@
 
   render() {
     return (
-      <div className="setup-opt-settings">
-        <p>Bind address the node will listen on</p>
-        <input
-          className="setup-input-ip"
-          value={this.props.ip}
-          onChange={this.handleIpChange}
-          placeholder="IP Address"
-          type="text"/>
-
-        <div className="setup-port">
-          <p>Port that the node will use</p>
-          <input
-            className="setup-input-port"
+      <div className="row">
+        <div className="col-12 col-md-5 col-xl-4 mb-3">
+          <label>Bind address the node will listen on</label>
+          <Form.Control type="text"
+            value={this.props.ip}
+            onChange={this.handleIpChange}
+            placeholder="IP Address" />
+        </div>
+        <div className="col-12 col-md-5 col-xl-4 mb-3">
+          <label>Port that the node will use</label>
+          <Form.Control type="text"
             value={this.props.port}
             onChange={this.handlePortChange}
-            type="text"/>
+            placeholder="IP Address" />
         </div>
       </div>
     );
diff --git a/app/addons/verifyinstall/__tests__/components.test.js b/app/addons/verifyinstall/__tests__/components.test.js
index 8499a40..b83d609 100644
--- a/app/addons/verifyinstall/__tests__/components.test.js
+++ b/app/addons/verifyinstall/__tests__/components.test.js
@@ -38,7 +38,7 @@
 
   it('confirm all result fields blank before tests ran', function () {
 
-    el = mount(<VerifyInstallResults testResults={testResults} />);
+    el = mount(<VerifyInstallResults testResults={testResults} isVerifying={false} />);
 
     tests.forEach((test) => {
       expect(el.find('#' + test.id).text()).toBe('');
@@ -55,10 +55,10 @@
         success: true
       };
 
-      el = mount(<VerifyInstallResults testResults={copy} />);
+      el = mount(<VerifyInstallResults testResults={copy} isVerifying={false}  />);
 
       // now look at the DOM for that element. It should contain a tick char
-      expect(el.find('#' + test.id + ' span').text()).toBe('✓');
+      expect(el.find('#' + test.id + ' span').text()).toBe('✓ success');
     });
   });
 
@@ -72,10 +72,10 @@
         success: false
       };
 
-      el = mount(<VerifyInstallResults testResults={copy} />);
+      el = mount(<VerifyInstallResults testResults={copy} isVerifying={false} />);
 
       // now look at the DOM for that element. It should contain an error char
-      expect(el.find('#' + test.id + ' span').text()).toBe('✗');
+      expect(el.find('#' + test.id + ' span').text()).toBe('✗ failure');
     });
   });
 });
@@ -101,7 +101,7 @@
   it('shows appropriate label during verification', function () {
     const stub = { func: () => { } };
     el = mount(<VerifyInstallButton verify={stub.func} isVerifying={true} />);
-    expect(el.text()).toBe('Verifying');
+    expect(el.text()).toBe('Verifying...');
   });
 
 });
diff --git a/app/addons/verifyinstall/assets/less/verifyinstall.less b/app/addons/verifyinstall/assets/scss/verifyinstall.scss
similarity index 73%
copy from app/addons/verifyinstall/assets/less/verifyinstall.less
copy to app/addons/verifyinstall/assets/scss/verifyinstall.scss
index e084cb3..1302c68 100644
--- a/app/addons/verifyinstall/assets/less/verifyinstall.less
+++ b/app/addons/verifyinstall/assets/scss/verifyinstall.scss
@@ -10,7 +10,20 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+@import '../../../../../assets/scss/variables';
+
 #start {
   margin-bottom: 20px;
 }
 
+th.verify-test-col {
+  width: 250px;
+}
+
+.install-result-success {
+  color: $cf-alert-success-color;
+}
+
+.install-result-failure {
+  color: $cf-alert-error-color;
+}
diff --git a/app/addons/verifyinstall/base.js b/app/addons/verifyinstall/base.js
index 4f3eaa9..3783837 100644
--- a/app/addons/verifyinstall/base.js
+++ b/app/addons/verifyinstall/base.js
@@ -13,7 +13,7 @@
 import FauxtonAPI from "../../core/api";
 import VerifyInstall from "./routes";
 import reducers from './reducers';
-import "./assets/less/verifyinstall.less";
+import "./assets/scss/verifyinstall.scss";
 
 VerifyInstall.initialize = function () {
   FauxtonAPI.addHeaderLink({
diff --git a/app/addons/verifyinstall/components/VerifyInstallButton.js b/app/addons/verifyinstall/components/VerifyInstallButton.js
index 4e7df08..13a00d0 100644
--- a/app/addons/verifyinstall/components/VerifyInstallButton.js
+++ b/app/addons/verifyinstall/components/VerifyInstallButton.js
@@ -12,18 +12,25 @@
 
 import PropTypes from 'prop-types';
 import React from 'react';
+import ReactComponents from '../../components/react-components';
+
+const { ConfirmButton } = ReactComponents;
 
 export default class VerifyInstallButton extends React.Component {
   static propTypes = {
     verify: PropTypes.func.isRequired,
-    isVerifying: PropTypes.bool.isRequired
+    isVerifying: PropTypes.bool.isRequired,
   };
 
   render() {
     return (
-      <button id="start" className="btn btn-primary" onClick={this.props.verify} disabled={this.props.isVerifying}>
-        {this.props.isVerifying ? 'Verifying' : 'Verify Installation'}
-      </button>
+      <ConfirmButton
+        id="start"
+        showIcon={false}
+        onClick={this.props.verify}
+        disabled={this.props.isVerifying}
+        text={this.props.isVerifying ? 'Verifying...' : 'Verify Installation'}
+      ></ConfirmButton>
     );
   }
 }
diff --git a/app/addons/verifyinstall/components/VerifyInstallResults.js b/app/addons/verifyinstall/components/VerifyInstallResults.js
index 08ced5f..816c984 100644
--- a/app/addons/verifyinstall/components/VerifyInstallResults.js
+++ b/app/addons/verifyinstall/components/VerifyInstallResults.js
@@ -13,28 +13,34 @@
 import PropTypes from 'prop-types';
 import React from 'react';
 import Constants from '../constants';
+import { Table } from 'react-bootstrap';
 
 export default class VerifyInstallResults extends React.Component {
   static propTypes = {
-    testResults: PropTypes.object.isRequired
+    testResults: PropTypes.object.isRequired,
+    isVerifying: PropTypes.bool.isRequired,
   };
 
   showTestResult = (test) => {
-    if (!this.props.testResults[test].complete) {
+    const {testResults, isVerifying} = this.props;
+    if (!testResults[test].complete) {
+      if (isVerifying) {
+        return 'In-progress...';
+      }
       return '';
     }
     if (this.props.testResults[test].success) {
-      return <span>&#10003;</span>;
+      return <span className="install-result-success">&#10003; success</span>;
     }
-    return <span>&#x2717;</span>;
+    return <span className="install-result-failure">&#x2717; failure</span>;
   };
 
   render() {
     return (
-      <table className="table table-striped table-bordered">
+      <Table striped>
         <thead>
           <tr>
-            <th>Test</th>
+            <th className='verify-test-col'>Test</th>
             <th>Status</th>
           </tr>
         </thead>
@@ -64,7 +70,7 @@
             <td id="js-test-replication">{this.showTestResult(Constants.TESTS.REPLICATION)}</td>
           </tr>
         </tbody>
-      </table>
+      </Table>
     );
   }
 }
diff --git a/app/addons/verifyinstall/components/VerifyInstallScreen.js b/app/addons/verifyinstall/components/VerifyInstallScreen.js
index a5c637b..6c503ca 100644
--- a/app/addons/verifyinstall/components/VerifyInstallScreen.js
+++ b/app/addons/verifyinstall/components/VerifyInstallScreen.js
@@ -25,7 +25,7 @@
     return (
       <div>
         <VerifyInstallButton verify={this.props.startVerification} isVerifying={this.props.isVerifying} />
-        <VerifyInstallResults testResults={this.props.testResults} />
+        <VerifyInstallResults testResults={this.props.testResults} isVerifying={this.props.isVerifying}/>
       </div>
     );
   }
diff --git a/app/app.js b/app/app.js
index 713b8de..c304bf0 100644
--- a/app/app.js
+++ b/app/app.js
@@ -16,7 +16,6 @@
 import Utils from "./core/utils";
 import FauxtonAPI from "./core/api";
 import 'react-toastify/dist/ReactToastify.min.css';
-import "../assets/less/fauxton.less";
 
 // Make sure we have a console.log
 if (_.isUndefined(console)) {
diff --git a/app/constants.js b/app/constants.js
index 7f02640..654bc5e 100644
--- a/app/constants.js
+++ b/app/constants.js
@@ -47,6 +47,8 @@
     MANGO_SEARCH:'./docs/intro/api.html#documents',
     CHANGES:'./docs/api/database/changes.html?highlight=changes#post--db-_changes',
     SETUP: './docs/cluster/setup.html#the-cluster-setup-wizard',
-    MEMBERSHIP: './docs/cluster/nodes.html'
+    MEMBERSHIP: './docs/cluster/nodes.html',
+    SEARCH_INDEXES: './docs/ddocs/search.html',
+    SEARCH_INDEX_QUERIES: './docs/ddocs/search.html#queries'
   }
 };
diff --git a/app/main.js b/app/main.js
index 4089e77..309eacf 100644
--- a/app/main.js
+++ b/app/main.js
@@ -14,15 +14,16 @@
 import React from 'react';
 import ReactDOM from 'react-dom';
 import FauxtonAPI from './core/api';
-import LoadAddons from './load_addons';
 import Backbone from 'backbone';
 import $ from 'jquery';
 import AppWrapper from './addons/fauxton/appwrapper';
-
 import { createStore, applyMiddleware, combineReducers } from 'redux';
 import thunk from 'redux-thunk';
 import { Provider } from 'react-redux';
 
+import LoadAddons from './load_addons';
+import '../assets/scss/fauxton.scss';
+
 FauxtonAPI.addMiddleware(thunk);
 const store = createStore(
   combineReducers(FauxtonAPI.reducers),
diff --git a/assets/_variable_overrides.scss.underscore b/assets/_variable_overrides.scss.underscore
new file mode 100644
index 0000000..33a409f
--- /dev/null
+++ b/assets/_variable_overrides.scss.underscore
@@ -0,0 +1,10 @@
+//
+// WARNING: THIS IS A GENERATED FILE. DO NOT EDIT.
+//
+
+<% if (largeLogoPath) { %>$largeLogoPath: "<%= largeLogoPath %>";<% } %>
+<% if (smallLogoPath) { %>$smallLogoPath: "<%= smallLogoPath %>";<% } %>
+
+<% if (scss_overrides) { scss_overrides.forEach(function (scss_file, i) { %>
+<%= '@import "' + scss_file + '";' %>
+<% }); } %>
diff --git a/assets/fonts/FontAwesome.otf b/assets/fonts/FontAwesome.otf
deleted file mode 100644
index 7012545..0000000
--- a/assets/fonts/FontAwesome.otf
+++ /dev/null
Binary files differ
diff --git a/assets/fonts/fauxtonicon7.ttf b/assets/fonts/fauxtonicon7.ttf
deleted file mode 100644
index 8950b00..0000000
--- a/assets/fonts/fauxtonicon7.ttf
+++ /dev/null
Binary files differ
diff --git a/assets/fonts/fauxtonicon7.woff b/assets/fonts/fauxtonicon7.woff
deleted file mode 100644
index 6545616..0000000
--- a/assets/fonts/fauxtonicon7.woff
+++ /dev/null
Binary files differ
diff --git a/assets/fonts/fauxtonicon7.woff2 b/assets/fonts/fauxtonicon7.woff2
deleted file mode 100644
index c013076..0000000
--- a/assets/fonts/fauxtonicon7.woff2
+++ /dev/null
Binary files differ
diff --git a/assets/fonts/fauxtonicon7.eot b/assets/fonts/fauxtonicon9.eot
similarity index 79%
copy from assets/fonts/fauxtonicon7.eot
copy to assets/fonts/fauxtonicon9.eot
index bf0d831..eb1dc11 100644
--- a/assets/fonts/fauxtonicon7.eot
+++ b/assets/fonts/fauxtonicon9.eot
Binary files differ
diff --git a/assets/fonts/fauxtonicon7.svg b/assets/fonts/fauxtonicon9.svg
similarity index 94%
rename from assets/fonts/fauxtonicon7.svg
rename to assets/fonts/fauxtonicon9.svg
index cf3cf76..0391e87 100644
--- a/assets/fonts/fauxtonicon7.svg
+++ b/assets/fonts/fauxtonicon9.svg
@@ -2,8 +2,8 @@
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
 <svg xmlns="http://www.w3.org/2000/svg">
 <defs>
-  <font id="fauxtonicon7" horiz-adv-x="1562.5">
-    <font-face font-family="fauxtonicon7"
+  <font id="fauxtonicon9" horiz-adv-x="1562.5">
+    <font-face font-family="fauxtonicon9"
       units-per-em="1000" ascent="936"
       descent="64" />
     <missing-glyph horiz-adv-x="0" />
@@ -67,311 +67,326 @@
     <glyph glyph-name="clock"
       unicode="&#xEA14;"
       horiz-adv-x="843.75" d="M500 633V383.0000000000001Q500 376.0000000000001 495 371T482 366H304Q296 366 291 371T286 383.0000000000001V419.0000000000001Q286 427.0000000000001 291 432.0000000000001T304 437.0000000000001H429V633.0000000000001Q429 641.0000000000001 434 646.0000000000001T446 651.0000000000001H482Q490 651.0000000000001 495 646.0000000000001T500 633.0000000000001zM732 437Q732 520 691 589T581 700T429 741T275.9999999999999 700T165.9999999999999 589T124.9999999999999 437T165.9999999999999 285T275.9999999999999 174T429 133T581 174T691 285T732 437zM857 437Q857 320 799.9999999999999 222T643.9999999999999 66T429 8T213 66T57.9999999999999 222T-1e-13 437T57.9999999999999 652T213 808T429 866T643.9999999999999 808T799.9999999999999 652T857 437z" />
-    <glyph glyph-name="cog"
+    <glyph glyph-name="code-branch"
       unicode="&#xEA15;"
+      horiz-adv-x="875" d="M156.25 732.875C182.2265625 732.875 203.125 753.7734375 203.125 779.75S182.2265625 826.625 156.25 826.625S109.375 805.7265625 109.375 779.75S130.2734375 732.875 156.25 732.875zM312.5 779.75C312.5 715.6875 274.0234375 660.609375 218.75 636.5859375V465.1015624999999C255.4687500000001 486.3906249999999 298.2421875 498.4999999999999 343.75 498.4999999999999H531.25C600.1953125 498.4999999999999 656.25 554.5546875 656.25 623.5V636.5859375C600.9765625 660.609375 562.5 715.6875 562.5 779.75C562.5 866.078125 632.421875 936 718.75 936S875 866.078125 875 779.75C875 715.6875 836.5234375 660.609375 781.25 636.5859375V623.5C781.25 485.4140625 669.3359375 373.5 531.25 373.5H343.75C274.8046875 373.5 218.75 317.4453125 218.75 248.5V235.4140625C274.0234375 211.390625 312.5 156.3125 312.5 92.25C312.5 5.921875 242.578125 -64 156.25 -64S0 5.921875 0 92.25C0 156.3125 38.4765625 211.390625 93.75 235.4140625V248.5V636.5859375C38.4765625 660.609375 0 715.6875 0 779.75C0 866.078125 69.921875 936 156.25 936S312.5 866.078125 312.5 779.75zM765.625 779.75C765.625 805.7265625 744.7265625 826.625 718.75 826.625S671.875 805.7265625 671.875 779.75S692.7734375 732.875 718.75 732.875S765.625 753.7734375 765.625 779.75zM156.25 45.375C182.2265625 45.375 203.125 66.2734375 203.125 92.25S182.2265625 139.125 156.25 139.125S109.375 118.2265625 109.375 92.25S130.2734375 45.375 156.25 45.375z" />
+    <glyph glyph-name="cog"
+      unicode="&#xEA16;"
       horiz-adv-x="843.75" d="M571 437Q571 496 529.9999999999999 538T429 580T328 538T286 437T328 336T429 294T529.9999999999999 336T571 437zM857 498V374Q857 366.9999999999999 853 360.9999999999999T842 353.9999999999999L738 337.9999999999999Q728 307.9999999999999 717 286.9999999999999Q736 259.9999999999999 776 209.9999999999999Q782 203.9999999999999 782 196.9999999999999T777 183.9999999999999Q762 162.9999999999999 722 122.9999999999999T668.9999999999999 83.9999999999998Q661.9999999999999 83.9999999999998 654.9999999999999 88.9999999999998L578 148.9999999999999Q552.9999999999999 135.9999999999999 526.9999999999999 127.9999999999999Q517.9999999999999 51.9999999999999 510.9999999999999 23.9999999999999Q506.9999999999999 7.9999999999999 490.9999999999999 7.9999999999999H366.9999999999999Q358.9999999999999 7.9999999999999 352.9999999999999 12.9999999999999T346.9999999999999 24.9999999999999L330.9999999999999 127.9999999999999Q303.9999999999999 136.9999999999999 280.9999999999999 148.9999999999999L201.9999999999999 88.9999999999998Q195.9999999999998 83.9999999999998 187.9999999999998 83.9999999999998T173.9999999999998 89.9999999999998Q103.9999999999998 153.9999999999998 81.9999999999998 183.9999999999998Q77.9999999999998 188.9999999999998 77.9999999999998 196.9999999999998Q77.9999999999998 202.9999999999998 82.9999999999998 208.9999999999998Q90.9999999999998 220.9999999999998 110.9999999999998 245.9999999999999T140.9999999999998 285.9999999999999Q125.9999999999998 313.9999999999999 117.9999999999998 340.9999999999999L15.9999999999998 355.9999999999999Q8.9999999999998 356.9999999999999 4.9999999999998 362.9999999999999T-2e-13 376V499.9999999999999Q-2e-13 506.9999999999999 4.9999999999998 513T14.9999999999998 520L118.9999999999998 536Q126.9999999999998 561 140.9999999999998 587Q117.9999999999998 619 80.9999999999998 664Q74.9999999999998 671 74.9999999999998 678Q74.9999999999998 683 79.9999999999998 690Q94.9999999999998 710 134.9999999999998 750T187.9999999999998 790Q194.9999999999998 790 202.9999999999998 785L279.9999999999999 725Q303.9999999999999 738 329.9999999999998 746Q338.9999999999999 822 346.9999999999999 850Q349.9999999999999 865 366.9999999999999 865H490.9999999999998Q497.9999999999998 865 503.9999999999998 861T510.9999999999998 849L525.9999999999998 746Q553.9999999999998 737 575.9999999999999 725L655.9999999999998 785Q660.9999999999998 790 668.9999999999998 790Q675.9999999999998 790 682.9999999999998 785Q754.9999999999998 718 774.9999999999998 690Q778.9999999999998 685 778.9999999999998 677Q778.9999999999998 671 774.9999999999998 665Q765.9999999999998 653 745.9999999999998 627T715.9999999999998 588Q729.9999999999998 560 738.9999999999998 533L840.9999999999998 518Q847.9999999999998 517 852.9999999999998 511T856.9999999999998 498z" />
     <glyph glyph-name="collapse"
-      unicode="&#xEA16;"
-      horiz-adv-x="1000" d="M0 937V-63H1000V937H0zM875 62H125V562H875V62zM875 687H125V812H875V687zM438 125H563V311.9999999999999H688L499.9999999999999 499.9999999999999L313 311.9999999999999H438V124.9999999999999z" />
-    <glyph glyph-name="cw"
       unicode="&#xEA17;"
+      horiz-adv-x="1000" d="M0 937V-63H1000V937H0zM875 62H125V562H875V62zM875 687H125V812H875V687zM438 125H563V311.9999999999999H688L499.9999999999999 499.9999999999999L313 311.9999999999999H438V124.9999999999999z" />
+    <glyph glyph-name="columns"
+      unicode="&#xEA18;"
+      horiz-adv-x="1000" d="M0 748.5C0 817.4453125 56.0546875 873.5 125 873.5H875C943.9453125 873.5 1000 817.4453125 1000 748.5V123.5C1000 54.5546875 943.9453125 -1.5 875 -1.5H125C56.0546875 -1.5 0 54.5546875 0 123.5V748.5zM125 623.5V123.5H437.5V623.5H125zM875 623.5H562.5V123.5H875V623.5z" />
+    <glyph glyph-name="copy"
+      unicode="&#xEA19;"
+      horiz-adv-x="875" d="M847.541015625 807.208984375L746.2089843749999 908.541015625A93.75 93.75 0 0 1 679.91796875 936H343.75C291.97265625 936 250 894.02734375 250 842.25V748.5H93.75C41.97265625 748.5 0 706.52734375 0 654.75V29.75C0 -22.02734375 41.97265625 -64 93.75 -64H531.25C583.02734375 -64 625 -22.02734375 625 29.75V123.5H781.25C833.02734375 123.5 875 165.47265625 875 217.25V740.91796875A93.75 93.75 0 0 1 847.541015625 807.208984375zM519.53125 29.75H105.46875A11.71875 11.71875 0 0 0 93.75 41.46875V643.03125A11.71875 11.71875 0 0 0 105.46875 654.75H250V217.25C250 165.47265625 291.97265625 123.5 343.75 123.5H531.25V41.46875A11.71875 11.71875 0 0 0 519.53125 29.75zM769.53125 217.25H355.46875A11.71875 11.71875 0 0 0 343.75 228.96875V830.53125A11.71875 11.71875 0 0 0 355.46875 842.25H562.5V670.375C562.5 644.486328125 583.486328125 623.5 609.375 623.5H781.25V228.96875A11.71875 11.71875 0 0 0 769.53125 217.25zM781.25 717.25H656.25V842.25H675.0625C678.169921875 842.25 681.150390625 841.015625 683.349609375 838.818359375L777.818359375 744.349609375A11.71875 11.71875 0 0 0 781.25 736.0625V717.25z" />
+    <glyph glyph-name="cw"
+      unicode="&#xEA1A;"
       horiz-adv-x="1000" d="M0 437Q0 644 147 791T500 937Q709 937 855 789L1000 892V427L554.9999999999999 576L686 669Q604 734 499.9999999999999 734Q377 734 290 647T203 437T290 227T499.9999999999999 140.0000000000001Q581.9999999999999 140.0000000000001 649.9999999999999 180.0000000000001T757.9999999999999 289.0000000000001L933.9999999999998 187.0000000000001Q867 74.0000000000001 752 5.0000000000002T500 -62.9999999999999Q293.0000000000001 -62.9999999999999 147 83.0000000000001T0 437.0000000000001z" />
     <glyph glyph-name="dashboard"
-      unicode="&#xEA18;"
+      unicode="&#xEA1B;"
       horiz-adv-x="1000" d="M1000 48C1000 -11.0000000000001 953 -59 894 -59H111C52 -59 4 -11 4 48V830C4 889 52 937 111 937H894C953.0000000000002 937 1000 889 1000 830V48zM907 840C907 842 906 844 904 844H101C99 844 98 842 98 840V38C98 36 99 34 101 34H904C906 34 907 36 907 38V840zM197 211L121 265.0000000000001L309 528L429 408.0000000000001L556.9999999999999 632L683.9999999999999 474.0000000000001L803.9999999999999 667L883.9999999999999 618L692.9999999999999 313L569.9999999999999 466L449.9999999999999 255.0000000000001L320.9999999999999 384.0000000000001L196.9999999999998 211.0000000000001z" />
     <glyph glyph-name="database"
-      unicode="&#xEA19;"
+      unicode="&#xEA1C;"
       horiz-adv-x="1000" d="M489 -58C284.0000000000001 -58 117 25 117 128V128V232.9999999999999C117 130 284.0000000000001 65.9999999999999 489 65.9999999999999C695 65.9999999999999 862 130 862 232.9999999999999V128C862 25 695 -58 489 -58zM489 128C284.0000000000001 128 117 210.9999999999999 117 313.9999999999999V418.9999999999999C117 315.9999999999999 284.0000000000001 251.9999999999999 489 251.9999999999999C695 251.9999999999999 862 315.9999999999999 862 418.9999999999999V313.9999999999999C862 210.9999999999999 695 128 489 128zM489 314C284.0000000000001 314 117 398 117 501V605C117 502 284.0000000000001 438 489 438C695 438 862 502 862 605V501.0000000000001C862 398.0000000000001 695 314.0000000000001 489 314.0000000000001zM489 501C284.0000000000001 501 117 584 117 687V749C117 852 284.0000000000001 935 489 935S862 852 862 749V687C862 584 695 501 489 501z" />
     <glyph glyph-name="deselect-all"
-      unicode="&#xEA1A;"
+      unicode="&#xEA1D;"
       horiz-adv-x="1000" d="M562.5 -64H437.5V29.75H562.5V-64zM250 842.25H343.75V936H250V842.25zM343.75 -64V29.75H250V-64H343.75zM437.5 936V842.25H562.5V936H437.5zM843.75 842.25H906.25V779.75H1000V936H843.75V842.25zM93.75 373.5V498.5H0V373.5H93.75zM0 592.25H93.75V686H0V592.25zM93.75 186V279.75H0V186H93.75zM750 29.75H656.25V-64H750V29.75zM156.25 29.75H93.75V92.25H0V-64H156.25V29.75zM906.25 92.25V29.75H843.75V-64H1000V92.25H906.25zM906.25 686V592.25H1000V686H906.25zM93.75 779.75V842.25H156.25V936H0V779.75H93.75zM656.25 936V842.25H750V936H656.25zM906.25 498.5V373.5H1000V498.5H906.25zM1000 279.75H906.25V186H1000V279.75zM712.5 651.625C684.3750000000001 679.75 653.1250000000001 698.5 615.625 714.125C578.125 729.75 540.625 739.125 500 739.125C459.375 739.125 421.875 729.75 384.375 714.125C346.8750000000001 698.5 315.6250000000001 676.625 287.5000000000001 651.625C259.375 623.5 240.6250000000001 592.25 225 554.75S200 476.625 200 436C200 395.375 209.375 354.75 225 317.25C240.625 279.75 262.5 248.5 287.5 220.3749999999999C315.625 192.25 346.875 173.4999999999999 384.375 157.8749999999999C421.875 142.2499999999999 459.375 132.8749999999999 500 132.8749999999999C540.625 132.8749999999999 578.125 142.2499999999999 615.625 157.8749999999999C653.125 173.4999999999999 684.375 195.3749999999999 712.5 220.3749999999999C740.625 248.4999999999999 759.375 279.7499999999999 775 317.25C790.625 354.75 800 392.2499999999999 800 436C800 476.625 790.625 517.25 775 551.625S737.5 623.5 712.5 651.625zM287.5 436C287.5 473.5 296.875 511 315.625 542.25C334.375 576.625 359.375 601.625 393.75 620.375C425 639.125 462.5 648.5 500 648.5C543.75 648.5 581.25 636 618.75 614.125L325 320.375C300 354.75 287.5 395.375 287.5 436zM696.875 354.75C684.3750000000001 329.7499999999999 671.875 304.7499999999999 650 286C631.25 267.2499999999999 609.375 251.6249999999999 581.25 239.125C556.25 226.625 528.1250000000001 223.5 500 223.5C459.375 223.5 418.75 235.9999999999999 384.375 257.875L678.1250000000001 551.625C700.0000000000001 517.25 712.5000000000001 479.7500000000001 712.5000000000001 436C712.5 407.875 706.25 379.75 696.875 354.75z" />
     <glyph glyph-name="document"
-      unicode="&#xEA1B;"
+      unicode="&#xEA1E;"
       horiz-adv-x="1000" d="M562 935H127.0000000000001V-61H873V624L562 935zM251 64V810H500V561H749V64H251z" />
     <glyph glyph-name="documents"
-      unicode="&#xEA1C;"
+      unicode="&#xEA1F;"
       horiz-adv-x="1000" d="M655 935H221V749H35V-57.0000000000001H779V128.9999999999999H965.0000000000002V624.9999999999998L655 934.9999999999998zM655 67H159V625H221V129.0000000000001H655V67zM841 253H345V811H593V563H841V253z" />
     <glyph glyph-name="dot-circled"
-      unicode="&#xEA1D;"
+      unicode="&#xEA20;"
       horiz-adv-x="843.75" d="M571 437Q571 378 529.9999999999999 336T429 294T328 336T286 437T328 538T429 580T529.9999999999999 538T571 437zM429 741Q346 741 276 700T166 589T125 437T166 285T276 174T429.0000000000001 133T581.0000000000001 174T691.0000000000001 285T732.0000000000001 437T691.0000000000001 589T581.0000000000001 700T429.0000000000001 741zM857 437Q857 320 799.9999999999999 222T643.9999999999999 66T429 8T213 66T57.9999999999999 222T-1e-13 437T57.9999999999999 652T213 808T429 866T643.9999999999999 808T799.9999999999999 652T857 437z" />
     <glyph glyph-name="down-1"
-      unicode="&#xEA1E;"
+      unicode="&#xEA21;"
       horiz-adv-x="937.5" d="M911 438L464 -10L18 438.0000000000001L176 596L353 420V884H576V420L752 595z" />
     <glyph glyph-name="down-circled"
-      unicode="&#xEA1F;"
+      unicode="&#xEA22;"
       horiz-adv-x="843.75" d="M625 419Q625 412 619 406L441 228Q435 223 429 223T416 228L237 406Q229 415 233 426Q238 437 250 437H357V633Q357 641 362 646T375 651H482Q490 651 495 646T500 633V437H607Q615 437 620 432T625 419zM429 741Q346 741 276 700T166 589T125 437T166 285T276 174T429.0000000000001 133T581.0000000000001 174T691.0000000000001 285T732.0000000000001 437T691.0000000000001 589T581.0000000000001 700T429.0000000000001 741zM857 437Q857 320 799.9999999999999 222T643.9999999999999 66T429 8T213 66T57.9999999999999 222T-1e-13 437T57.9999999999999 652T213 808T429 866T643.9999999999999 808T799.9999999999999 652T857 437z" />
     <glyph glyph-name="down-dir"
-      unicode="&#xEA20;"
+      unicode="&#xEA23;"
       horiz-adv-x="562.5" d="M571 544Q571 530 561 519L311 269Q300 258 286 258T260.9999999999999 269L10.9999999999999 519Q-1e-13 530 -1e-13 544T10.9999999999999 569T35.9999999999999 580H535.9999999999999Q549.9999999999999 580 561 569T571 544z" />
     <glyph glyph-name="down-open"
-      unicode="&#xEA21;"
+      unicode="&#xEA24;"
       horiz-adv-x="1000" d="M0 613L148 761L500 410L852 761L1000 613L500 112.9999999999999L352 261z" />
     <glyph glyph-name="down"
-      unicode="&#xEA22;"
+      unicode="&#xEA25;"
       horiz-adv-x="437.5" d="M427 212Q431 202 424 193L229 -22Q223 -27 216 -27Q208 -27 203 -22L4.9999999999999 193Q-3.0000000000001 202 1.9999999999999 212Q6.9999999999999 223 18 223H143V919Q143 927 148 932T161 937H268Q276 937 281 932T286 919V223H411Q422 223 427 212z" />
     <glyph glyph-name="drop-down-dots"
-      unicode="&#xEA23;"
+      unicode="&#xEA26;"
       horiz-adv-x="1000" d="M375 875H625V625H375V875zM375 562H625V312H375V562zM375 250H625V-1H375V250z" />
     <glyph glyph-name="exchange"
-      unicode="&#xEA24;"
+      unicode="&#xEA27;"
       horiz-adv-x="1000" d="M1000 276V169Q1000 162 995 157T982 151H214V44Q214 37 209 32T196 26Q190 26 183 32L4.9999999999999 210Q-1e-13 215 -1e-13 223T4.9999999999999 236L184 414Q189 419 196 419Q204 419 209 414T214 401V294H982Q989 294 995 289T1000 276zM1000 580Q1000 572 995 567L816.0000000000001 388Q811 383 804 383Q796 383 791 389T786 401V507.9999999999999H18Q11 507.9999999999999 5 514T0 526V633Q0 641 5 646T18 651H786V758Q786 766 791 771T804 776Q810 776 817.0000000000001 771L995.0000000000002 593Q1000 588 1000 580z" />
     <glyph glyph-name="expand"
-      unicode="&#xEA25;"
+      unicode="&#xEA28;"
       horiz-adv-x="1000" d="M0 937V-63H1000V937H0zM875 62H125V562H875V62zM875 687H125V812H875V687zM688 312H563V500H438V312H313L499.9999999999999 125L688 312.0000000000001z" />
     <glyph glyph-name="eye"
-      unicode="&#xEA26;"
+      unicode="&#xEA29;"
       horiz-adv-x="937.5" d="M465 772Q533 772 605 738T729 656T824 559T887.9999999999999 476L910.9999999999998 442Q901.9999999999998 428 886.9999999999999 405T823.9999999999999 324T726.9999999999999 221T605.9999999999999 139.0000000000001T464.9999999999999 103T324.9999999999999 137.0000000000001T200.9999999999999 222T104.9999999999998 322T40.9999999999998 408L17.9999999999998 442Q25.9999999999998 456 40.9999999999998 478T103.9999999999998 557T201.9999999999999 658T323.9999999999999 737T464.9999999999999 772zM465 214Q557 214 623 279T688 437T623 595T464.9999999999999 661T307 595T241 437T307 279T464.9999999999999 214zM353 437Q353 549 464.9999999999999 549T576 437T464.9999999999999 326T353 437z" />
     <glyph glyph-name="file-code-o"
-      unicode="&#xEA27;"
+      unicode="&#xEA2A;"
       horiz-adv-x="1000" d="M890.625 723.9464285714286Q906.25 708.3214285714286 917.4107142857144 681.5357142857142T928.5714285714286 632.4285714285714V-10.4285714285714Q928.5714285714286 -32.75 912.9464285714286 -48.375T875 -64H125Q102.6785714285714 -64 87.0535714285714 -48.375T71.4285714285714 -10.4285714285714V882.4285714285714Q71.4285714285714 904.75 87.0535714285714 920.375T125 936H625Q647.3214285714286 936 674.1071428571429 924.8392857142856T716.5178571428571 898.0535714285714zM642.8571428571429 860.1071428571429V650.2857142857142H852.6785714285714Q847.0982142857143 666.46875 840.4017857142858 673.1651785714286L665.7366071428571 847.8303571428571Q659.0401785714286 854.5267857142857 642.8571428571429 860.1071428571429zM857.1428571428571 7.4285714285714V578.8571428571429H625Q602.6785714285714 578.8571428571429 587.0535714285714 594.4821428571429T571.4285714285714 632.4285714285714V864.5714285714286H142.8571428571429V7.4285714285714H857.1428571428571zM339.2857142857143 507.4285714285714Q343.75 513.5669642857142 351.0044642857143 514.4040178571429T364.3973214285715 510.7767857142857L392.8571428571429 489.5714285714286Q398.9955357142857 485.1071428571428 399.8325892857143 477.8526785714286T396.2053571428572 464.4598214285714L294.6428571428572 328.8571428571429L396.2053571428572 193.2544642857142Q400.6696428571429 187.1160714285715 399.8325892857143 179.8616071428571T392.8571428571429 168.1428571428571L364.3973214285715 146.9375Q358.2589285714286 142.4732142857142 351.0044642857143 143.3102678571429T339.2857142857143 150.2857142857142L213.1696428571429 318.2544642857142Q205.3571428571429 328.8571428571429 213.1696428571429 339.4598214285715zM786.8303571428571 339.4598214285715Q794.6428571428571 328.8571428571429 786.8303571428571 318.2544642857142L660.7142857142858 150.2857142857142Q656.25 144.1473214285715 648.9955357142858 143.3102678571429T635.6026785714286 146.9375L607.1428571428571 168.1428571428571Q601.0044642857143 172.6071428571429 600.1674107142858 179.8616071428571T603.7946428571429 193.2544642857142L705.3571428571429 328.8571428571429L603.7946428571429 464.4598214285714Q599.3303571428571 470.5982142857143 600.1674107142858 477.8526785714286T607.1428571428571 489.5714285714286L635.6026785714286 510.7767857142857Q641.7410714285714 515.2410714285714 648.9955357142858 514.4040178571429T660.7142857142858 507.4285714285714zM440.8482142857143 82.2053571428571Q433.59375 83.3214285714286 429.4084821428572 89.4598214285715T426.3392857142857 102.8526785714286L503.3482142857143 566.5803571428571Q504.4642857142857 573.8348214285714 510.6026785714286 578.0200892857142T523.9955357142858 581.0892857142858L559.1517857142858 575.5089285714286Q566.40625 574.3928571428571 570.5915178571429 568.2544642857142T573.6607142857143 554.8616071428571L496.6517857142857 91.1339285714286Q495.5357142857143 83.8794642857142 489.3973214285714 79.6941964285715T476.0044642857143 76.625z" />
     <glyph glyph-name="files-o"
-      unicode="&#xEA28;"
+      unicode="&#xEA2B;"
       horiz-adv-x="1000" d="M946.4285714285714 721.7142857142858Q968.75 721.7142857142858 984.375 706.0892857142857T1000 668.1428571428571V-10.4285714285714Q1000 -32.75 984.375 -48.375T946.4285714285714 -64H410.7142857142857Q388.3928571428572 -64 372.7678571428572 -48.375T357.1428571428572 -10.4285714285714V150.2857142857142H53.5714285714286Q31.25 150.2857142857142 15.625 165.9107142857142T0 203.8571428571429V578.8571428571429Q0 601.1785714285714 11.1607142857143 627.9642857142858T37.9464285714286 670.375L265.625 898.0535714285714Q281.25 913.6785714285714 308.0357142857143 924.8392857142856T357.1428571428572 936H589.2857142857143Q611.6071428571429 936 627.2321428571429 920.375T642.8571428571429 882.4285714285714V699.3928571428571Q680.8035714285714 721.7142857142858 714.2857142857143 721.7142857142858H946.4285714285714zM642.8571428571429 602.8526785714286L476.0044642857143 436H642.8571428571429V602.8526785714286zM285.7142857142857 817.1383928571429L118.8616071428572 650.2857142857142H285.7142857142857V817.1383928571429zM395.0892857142857 456.0892857142857L571.4285714285714 632.4285714285714V864.5714285714286H357.1428571428572V632.4285714285714Q357.1428571428572 610.1071428571429 341.5178571428572 594.4821428571429T303.5714285714286 578.8571428571429H71.4285714285714V221.7142857142857H357.1428571428572V364.5714285714286Q357.1428571428572 386.8928571428571 368.3035714285715 413.6785714285715T395.0892857142857 456.0892857142857zM928.5714285714286 7.4285714285714V650.2857142857142H714.2857142857143V418.1428571428571Q714.2857142857143 395.8214285714286 698.6607142857143 380.1964285714286T660.7142857142858 364.5714285714286H428.5714285714286V7.4285714285714H928.5714285714286z" />
     <glyph glyph-name="filter"
-      unicode="&#xEA29;"
+      unicode="&#xEA2C;"
       horiz-adv-x="1000" d="M890.0669642857143 771.3794642857142Q899.5535714285714 748.5 882.2544642857143 732.3169642857142L607.1428571428571 457.2053571428571V43.1428571428571Q607.1428571428571 19.7053571428571 585.3794642857143 10.21875Q578.125 7.4285714285714 571.4285714285714 7.4285714285714Q556.3616071428571 7.4285714285714 546.3169642857143 18.03125L403.4598214285715 160.8883928571429Q392.8571428571429 171.4910714285715 392.8571428571429 186V457.2053571428571L117.7455357142857 732.3169642857142Q100.4464285714286 748.5 109.9330357142857 771.3794642857142Q119.4196428571429 793.1428571428571 142.8571428571429 793.1428571428571H857.1428571428571Q880.5803571428572 793.1428571428571 890.0669642857143 771.3794642857142z" />
     <glyph glyph-name="gears"
-      unicode="&#xEA2A;"
+      unicode="&#xEA2D;"
       horiz-adv-x="1062.5" d="M500 436Q500 495.15625 458.15625 537T357.15625 578.84375T256.15625 537T214.3125 436T256.15625 335T357.15625 293.1562500000001T458.1562499999999 335T499.9999999999999 436zM928.5625 150.28125Q928.5625 179.3124999999999 907.34375 200.5T857.125 221.7187499999999T806.90625 200.5T785.6875000000001 150.28125Q785.6875000000001 120.7187499999999 806.6250000000001 99.78125T857.1250000000001 78.8437499999999T907.6250000000002 99.78125T928.5625000000002 150.28125zM928.5625 721.71875Q928.5625 750.75 907.34375 771.9375T857.125 793.15625T806.90625 771.9375T785.6875000000001 721.71875Q785.6875000000001 692.15625 806.6250000000001 671.21875T857.1250000000001 650.28125T907.6250000000002 671.21875T928.5625000000002 721.71875zM714.28125 486.78125V383.53125Q714.28125 377.9375000000001 710.375 372.6562500000001T701.4374999999999 366.7812500000001L614.9374999999999 353.3750000000001Q608.8124999999999 333.8437500000001 597.0937499999999 310.9687500000003Q616.0624999999999 284.1875000000003 647.3124999999999 246.7812500000003Q651.2187499999999 241.1875000000003 651.2187499999999 235.6250000000003Q651.2187499999999 228.9375000000004 647.3124999999999 225.0312500000004Q634.4687499999998 208.2812500000002 601.2812499999999 175.0937500000004T557.4687499999999 141.8750000000004Q551.3437499999998 141.8750000000004 545.7499999999999 145.7812500000004L481.5624999999998 196.0000000000004Q460.9062499999998 185.4062500000004 438.5937499999999 178.6875000000004Q432.4687499999999 118.4062500000005 425.7499999999999 92.1875000000003Q421.8437499999999 78.7812500000005 408.9999999999999 78.7812500000005H305.2187499999999Q299.0937499999999 78.7812500000005 294.0624999999999 82.9687500000005T288.4687499999999 92.7500000000003L275.6249999999999 178.1250000000004Q256.65625 183.7187500000004 233.7812499999999 195.4375000000004L167.9374999999999 145.7812500000004Q164.0312499999999 141.8750000000004 156.7812499999999 141.8750000000004Q150.6562499999999 141.8750000000004 145.0624999999999 146.3437500000004Q64.7187499999999 220.5625000000004 64.7187499999999 235.6250000000004Q64.7187499999999 240.6562500000005 68.6249999999999 246.2187500000004Q74.2187499999999 254.0312500000004 91.4999999999999 275.7812500000004T117.7187499999999 309.8125000000004Q104.8749999999999 334.3750000000004 98.1874999999999 355.5625000000003L13.3749999999999 368.9687500000003Q7.7812499999999 369.5312500000003 3.8749999999999 374.2812500000004T-0.0312500000001 385.1562500000003V488.4062500000003Q-0.0312500000001 494.0000000000003 3.8749999999999 499.2812500000003T12.8124999999999 505.1562500000003L99.3124999999999 518.5625000000003Q105.4374999999999 538.0937500000003 117.1562499999999 560.9687500000002Q98.1874999999998 587.7500000000002 66.9374999999998 625.1562500000002Q63.0312499999998 631.2812500000002 63.0312499999998 636.3125000000002Q63.0312499999998 643.0000000000002 66.9374999999998 647.4687500000002Q79.2187499999998 664.2187500000002 112.6874999999999 697.1250000000002T156.7812499999999 730.0625000000002Q162.9062499999998 730.0625000000002 168.4999999999999 726.1562500000002L232.6874999999999 675.9375000000002Q251.6562499999998 685.9687500000002 275.6562499999999 693.7812500000002Q281.7812499999999 754.0625000000003 288.4999999999999 779.7187500000002Q292.4062499999999 793.1250000000003 305.2499999999998 793.1250000000003H409.0312499999998Q415.1562499999998 793.1250000000003 420.1874999999998 788.9375000000002T425.7812499999998 779.1562500000003L438.6249999999998 693.7812500000002Q457.5937499999997 688.1875000000002 480.4687499999998 676.4687500000002L546.3124999999998 726.1250000000003Q550.7812499999998 730.0312500000003 557.4687499999998 730.0312500000003Q563.5937499999998 730.0312500000003 569.1874999999998 725.5625000000003Q649.5312499999998 651.3437500000002 649.5312499999998 636.2812500000002Q649.5312499999998 631.2500000000002 645.6249999999998 625.6875000000002Q638.9374999999998 616.7500000000002 622.1874999999998 595.5625000000002T597.0624999999998 562.0937500000002Q609.9062499999999 535.3125000000002 616.0312499999998 516.3437500000002L700.8437499999998 503.5000000000003Q706.4374999999998 502.3750000000003 710.3437499999998 497.6250000000003T714.2499999999998 486.7500000000002zM1071.4375 189.34375V111.21875Q1071.4375 102.2812499999999 988.28125 93.90625Q981.59375 78.84375 971.53125 64.8750000000001Q1000 1.8125 1000 -12.1249999999999Q1000 -14.3437499999999 997.78125 -16.0312499999999Q929.6875 -55.6562499999999 928.59375 -55.6562499999999Q924.125 -55.6562499999999 902.9375 -29.4375T873.90625 8.5Q862.75 7.375 857.15625 7.375T840.4062499999999 8.5Q832.5937499999999 -3.21875 811.375 -29.4375T785.7187499999999 -55.6562499999999Q784.5937499999999 -55.6562499999999 716.53125 -16.0312499999999Q714.3124999999999 -14.3437499999999 714.3124999999999 -12.1249999999999Q714.3124999999999 1.8125000000001 742.78125 64.8750000000001Q732.7499999999999 78.8125000000001 726.0312499999999 93.90625Q642.8749999999999 102.28125 642.8749999999999 111.21875V189.34375Q642.8749999999999 198.28125 726.0312499999999 206.6562499999999Q733.2812499999999 222.84375 742.78125 235.6874999999999Q714.3124999999999 298.7499999999999 714.3124999999999 312.6874999999999Q714.3124999999999 314.9062499999999 716.53125 316.5937499999999Q718.75 317.7187499999999 736.0625 327.7499999999998T768.9999999999999 346.7187499999998T785.75 355.6562499999999Q790.21875 355.6562499999999 811.40625 329.7187499999999T840.4375 292.0625Q851.5937499999999 293.1875 857.1875 293.1875T873.9375 292.0625Q902.4062500000002 331.6875 925.28125 354.5625L928.625 355.6875Q930.8437500000002 355.6875 997.8125 316.625Q1000.0312499999998 314.9375 1000.0312499999998 312.71875Q1000.0312499999998 298.78125 971.5624999999998 235.71875Q981.0624999999998 222.875 988.3124999999998 206.6875000000001Q1071.46875 198.3125000000001 1071.46875 189.3750000000001zM1071.4375 760.78125V682.65625Q1071.4375 673.71875 988.28125 665.34375Q981.59375 650.28125 971.53125 636.3125Q1000 573.25 1000 559.3125Q1000 557.09375 997.78125 555.40625Q929.6875 515.78125 928.59375 515.78125Q924.125 515.78125 902.9375 542T873.90625 579.9375Q862.75 578.8125 857.15625 578.8125T840.4062499999999 579.9375Q832.5937499999999 568.21875 811.375 542T785.7187499999999 515.78125Q784.5937499999999 515.78125 716.53125 555.40625Q714.3124999999999 557.09375 714.3124999999999 559.3125Q714.3124999999999 573.25 742.78125 636.3125Q732.7499999999999 650.25 726.0312499999999 665.34375Q642.8749999999999 673.71875 642.8749999999999 682.65625V760.78125Q642.8749999999999 769.71875 726.0312499999999 778.09375Q733.2812499999999 794.28125 742.78125 807.125Q714.3124999999999 870.1875 714.3124999999999 884.125Q714.3124999999999 886.34375 716.53125 888.03125Q718.75 889.15625 736.0625 899.1875T768.9999999999999 918.15625T785.75 927.09375Q790.21875 927.09375 811.40625 901.15625T840.4375 863.5Q851.5937499999999 864.625 857.1875 864.625T873.9375 863.5Q902.4062500000002 903.125 925.28125 926L928.625 927.125Q930.8437500000002 927.125 997.8125 888.0625Q1000.0312499999998 886.375 1000.0312499999998 884.15625Q1000.0312499999998 870.21875 971.5624999999998 807.15625Q981.0624999999998 794.3125 988.3124999999998 778.125Q1071.46875 769.75 1071.46875 760.8125z" />
     <glyph glyph-name="help-circled"
-      unicode="&#xEA2B;"
+      unicode="&#xEA2E;"
       horiz-adv-x="843.75" d="M500 169V276Q500 284 495 289T482 294H375Q367 294 362 289T357 276V169Q357 161 362 156T375 151H482Q490 151 495 156T500 169zM643 544Q643 593 612 635T535 700T440.0000000000001 723Q304.0000000000001 723 233.0000000000001 604Q224.0000000000001 589.9999999999999 237.0000000000001 579.9999999999999L311.0000000000001 524.9999999999999Q315.0000000000001 520.9999999999999 321.0000000000001 520.9999999999999Q330.0000000000001 520.9999999999999 335.0000000000001 528Q365.0000000000001 565.9999999999999 383.0000000000001 578.9999999999999Q402.0000000000001 593 431.0000000000001 593Q458.0000000000001 593 479.0000000000001 577.9999999999999T500 544.9999999999999Q500 523.9999999999998 489 510.9999999999998T451 485.9999999999998Q416.0000000000001 469.9999999999998 386 437.9999999999999T357 367.9999999999998V347.9999999999998Q357 339.9999999999998 362 334.9999999999998T375 329.9999999999998H482Q490 329.9999999999998 495 334.9999999999998T500 347.9999999999998Q500 357.9999999999998 512 374.9999999999999T542 402.9999999999999Q560 412.9999999999999 570.0000000000001 418.9999999999999T595.0000000000001 437.9999999999999T620.0000000000001 464.9999999999999T636.0000000000001 498.9999999999999T643.0000000000001 544zM857 437Q857 320 799.9999999999999 222T643.9999999999999 66T429 8T213 66T57.9999999999999 222T-1e-13 437T57.9999999999999 652T213 808T429 866T643.9999999999999 808T799.9999999999999 652T857 437z" />
     <glyph glyph-name="help"
-      unicode="&#xEA2C;"
+      unicode="&#xEA2F;"
       horiz-adv-x="562.5" d="M393 236V102Q393 93 386 86T371 80H237Q228 80 221 86T214 102V236Q214 245 221 252.0000000000001T237 258.0000000000001H371Q379 258.0000000000001 386 252.0000000000001T393 236zM569 571Q569 541 561 515T540.9999999999999 472.0000000000001T509.9999999999999 439T477.9999999999999 414T443.9999999999999 395Q420.9999999999999 382 405.9999999999999 357.9999999999999T390.9999999999999 320.9999999999999Q390.9999999999999 310.9999999999999 383.9999999999999 302.9999999999999T367.9999999999999 293.9999999999999H233.9999999999999Q225.9999999999998 293.9999999999999 219.9999999999998 303.9999999999999T213.9999999999998 324.9999999999999V350.9999999999999Q213.9999999999998 397 250.9999999999998 437.9999999999999T329.9999999999998 497.9999999999999Q362.9999999999998 512.9999999999999 376.9999999999998 529.9999999999999T390.9999999999998 571.9999999999998Q390.9999999999998 594.9999999999999 364.9999999999998 612.9999999999998T304.9999999999998 630.9999999999998Q268.9999999999998 630.9999999999998 244.9999999999998 614.9999999999998Q224.9999999999998 600.9999999999998 184.9999999999998 550.9999999999998Q177.9999999999998 541.9999999999998 167.9999999999998 541.9999999999998Q160.9999999999998 541.9999999999998 153.9999999999998 545.9999999999998L62.9999999999998 615.9999999999998Q54.9999999999998 621.9999999999998 53.9999999999998 629.9999999999998T56.9999999999998 645.9999999999998Q145.9999999999998 793.9999999999999 315.9999999999998 793.9999999999999Q360.9999999999998 793.9999999999999 405.9999999999999 776.9999999999999T486.9999999999998 730.9999999999999T545.9999999999998 658.9999999999999T568.9999999999999 570.9999999999999z" />
     <glyph glyph-name="info-circled"
-      unicode="&#xEA2D;"
+      unicode="&#xEA30;"
       horiz-adv-x="843.75" d="M571 169V258Q571 266 566 271T553.9999999999999 276H499.9999999999999V562Q499.9999999999999 570 494.9999999999999 575T481.9999999999999 580H304Q296 580 291 575T286 562V472.9999999999999Q286 464.9999999999999 291 459.9999999999999T304 454.9999999999999H357V275.9999999999999H304Q296 275.9999999999999 291 270.9999999999999T286 257.9999999999999V168.9999999999999Q286 160.9999999999999 291 155.9999999999999T304 150.9999999999999H553.9999999999999Q561 150.9999999999999 566 155.9999999999999T571 168.9999999999999zM500 669V758Q500 766 495 771T482 776H375Q367 776 362 771T357 758V669Q357 661 362 656T375 651H482Q490 651 495 656T500 669zM857 437Q857 320 799.9999999999999 222T643.9999999999999 66T429 8T213 66T57.9999999999999 222T-1e-13 437T57.9999999999999 652T213 808T429 866T643.9999999999999 808T799.9999999999999 652T857 437z" />
     <glyph glyph-name="json"
-      unicode="&#xEA2E;"
+      unicode="&#xEA31;"
       horiz-adv-x="1000" d="M184 833C154 813 139 776 139 722C139 704 140 689 141 674C142 660 143 646 144 633C146 620 147 607 148 594C149 580 149 566 149 551C149 542 147 533 143 525C139 516 132 508 121 501C111 494 96 489 79 484C61 480 39 477 12 477V391C39 390 61 388 79 383S111 373 121 365.9999999999999C132 358.9999999999999 139 350.9999999999999 143 342.9999999999999C147 333.9999999999999 149 324.9999999999999 149 316.9999999999999C149 300.9999999999999 149 285.9999999999999 148 272.9999999999999C147 259.9999999999999 146 246.9999999999999 144 233.9999999999998C143 220.9999999999998 142 207.9999999999998 141 193.9999999999998S139 163.9999999999998 139 145.9999999999998C139 91.9999999999997 154 54.9999999999998 184 33.9999999999998C214 13.9999999999998 261 3.9999999999998 325 3.9999999999998H402V81.9999999999997H361C341 81.9999999999997 324 82.9999999999997 310 84.9999999999997C297 86.9999999999997 287 90.9999999999997 279 95.9999999999997C272 100.9999999999997 267 107.9999999999997 264 116.9999999999998C261 125.9999999999998 259 137.9999999999998 259 151.9999999999998C259 178.9999999999998 260 204.9999999999998 262 230.9999999999997C263 255.9999999999998 264 283.9999999999998 264 314.9999999999997C264 352.9999999999997 257 379.9999999999998 241.0000000000001 396.9999999999997S200 425.9999999999997 164 431.9999999999997V435.9999999999997C200 441.9999999999997 226.0000000000001 452.9999999999997 241.0000000000001 469.9999999999997S264.0000000000001 514.9999999999997 264.0000000000001 552.9999999999998C264.0000000000001 582.9999999999997 263.0000000000001 610.9999999999998 262.0000000000001 636.9999999999998C260.0000000000001 662.9999999999998 259.0000000000001 688.9999999999998 259.0000000000001 715.9999999999998C259.0000000000001 729.9999999999998 261.0000000000001 740.9999999999998 264.0000000000001 749.9999999999998C267.0000000000001 758.9999999999998 272.0000000000001 765.9999999999998 279.0000000000001 771.9999999999998C287.0000000000001 776.9999999999998 297.0000000000001 780.9999999999998 310.0000000000001 782.9999999999998S341.0000000000001 785.9999999999998 361.0000000000001 785.9999999999998H402V863.9999999999998H325C261 863.9999999999998 214 853.9999999999998 184 832.9999999999998zM934 484C916 489 902 494 891 501C881 508 873 516 869 525C865 533 863 542 863 551C863 566 864 580 865 594C866 607 867 620 869 633C870 646 872 660 873 674C874 689 874 704 874 722C874 776 859 813 829 833C798.9999999999999 854 752 864 688 864H611V786H652C673 786 690.0000000000001 785 703.0000000000001 783S726.0000000000001 777 733.0000000000001 772C741.0000000000001 766 746.0000000000001 759 749.0000000000001 750C752.0000000000001 741 753.0000000000001 730 753.0000000000001 716C753.0000000000001 689 753.0000000000001 663 751.0000000000001 637S749.0000000000001 583 749.0000000000001 553C749.0000000000001 515 757.0000000000001 486.9999999999999 772.0000000000001 469.9999999999999C788.0000000000001 452.9999999999999 813.0000000000001 441.9999999999999 849.0000000000001 435.9999999999999V431.9999999999999C813 425.9999999999999 788 413.9999999999999 772.0000000000001 396.9999999999999C757.0000000000001 379.9999999999999 749.0000000000001 352.9999999999998 749.0000000000001 314.9999999999999C749.0000000000001 283.9999999999999 750.0000000000001 255.9999999999999 751.0000000000001 230.9999999999999C753.0000000000001 204.9999999999999 753.0000000000001 178.9999999999999 753.0000000000001 152C753.0000000000001 138 752.0000000000001 126 749.0000000000001 116.9999999999999C746.0000000000001 107.9999999999999 741.0000000000001 100.9999999999999 733.0000000000001 95.9999999999999C726.0000000000001 89.9999999999999 716.0000000000001 86.9999999999999 703.0000000000001 84.9999999999999C690.0000000000001 82.9999999999999 673 81.9999999999999 652 81.9999999999999H611V4H688C752 4 798.9999999999999 14 829 34C859 55 874 92 874 146C874 164 874 180 873 194C872 208 870 221 869 234C867 247 866 260.0000000000001 865 273.0000000000001C864 286.0000000000001 863 301.0000000000001 863 317.0000000000001C863 325.0000000000001 865 334.0000000000001 869 343.0000000000001C873 351.0000000000001 881 359.0000000000001 891 366.0000000000001C902 373.0000000000001 916 379.0000000000003 934 383.0000000000003S974.0000000000002 390.0000000000003 1001.0000000000002 391.0000000000003V477.0000000000002C974.0000000000002 477.0000000000002 951.0000000000002 480.0000000000002 934.0000000000002 484.0000000000002z" />
     <glyph glyph-name="key"
-      unicode="&#xEA2F;"
+      unicode="&#xEA32;"
       horiz-adv-x="937.5" d="M633 772Q563 772 514 723T464 606Q464 592 468 574L479.0000000000001 517Q421.0000000000001 459 304.0000000000001 342T130.0000000000001 169.0000000000001V103H241.0000000000001V214H353.0000000000001V326H464V373L544 452.0000000000001L601.0000000000001 441.0000000000001Q619.0000000000001 438.0000000000001 632.0000000000001 438.0000000000001Q702.0000000000002 438.0000000000001 751.0000000000001 487.0000000000001T799.0000000000001 605T751.0000000000001 723T633.0000000000001 772zM633 884Q748 884 830.0000000000001 802T911 605T830.0000000000001 408T632.0000000000001 326Q604.0000000000001 326 581.0000000000001 331L576.0000000000001 326V214H464.0000000000001V103H353.0000000000001V-10H18.0000000000001V214L358.0000000000001 554Q353.0000000000001 577 353.0000000000001 606Q353.0000000000001 721 435.0000000000001 802T633.0000000000001 884zM576 606Q576 661 632 661T688 606Q688 549 632 549T576 606z" />
     <glyph glyph-name="left-1"
-      unicode="&#xEA30;"
+      unicode="&#xEA33;"
       horiz-adv-x="937.5" d="M464 -10L18 438.0000000000001L464 884.0000000000001L623 726L446 549.0000000000001H911V326.0000000000001H446L623 150.0000000000002z" />
     <glyph glyph-name="left-circled"
-      unicode="&#xEA31;"
+      unicode="&#xEA34;"
       horiz-adv-x="843.75" d="M643 491V383Q643 376 638 370.9999999999999T625 365.9999999999999H429V258Q429 251 424 245.9999999999999T411 240.9999999999999Q404 240.9999999999999 397 245.9999999999999L219 424Q214 429 214 437T219 450L398 628Q403 633 411 633Q418 633 423 628T429 616V508H625Q632 508 638 503T643 491zM732 437Q732 520 691 589T581 700T429 741T275.9999999999999 700T165.9999999999999 589T124.9999999999999 437T165.9999999999999 285T275.9999999999999 174T429 133T581 174T691 285T732 437zM857 437Q857 320 799.9999999999999 222T643.9999999999999 66T429 8T213 66T57.9999999999999 222T-1e-13 437T57.9999999999999 652T213 808T429 866T643.9999999999999 808T799.9999999999999 652T857 437z" />
     <glyph glyph-name="left-dir"
-      unicode="&#xEA32;"
+      unicode="&#xEA35;"
       horiz-adv-x="343.75" d="M357 687V187Q357 173 347 162T321 151T296 162L45.9999999999999 412Q35.9999999999999 423 35.9999999999999 437T45.9999999999999 462L296 712Q307 723 321 723T347 712T357 687z" />
     <glyph glyph-name="left-open"
-      unicode="&#xEA33;"
+      unicode="&#xEA36;"
       horiz-adv-x="656.25" d="M0 437L148 586L500 937L648 789L297.0000000000001 437L648 85L500 -63L148 289z" />
     <glyph glyph-name="left"
-      unicode="&#xEA34;"
+      unicode="&#xEA37;"
       horiz-adv-x="1000" d="M1000 491V383Q1000 376 995 370.9999999999999T982 365.9999999999999H286.0000000000001V240.9999999999999Q286.0000000000001 228.9999999999999 275 223.9999999999999T256 226.9999999999999L41 422.9999999999999Q36 427.9999999999999 36 434.9999999999999Q36 442.9999999999999 41 448.9999999999999L256 645.9999999999999Q265 654 275 649.9999999999999Q286.0000000000001 644.9999999999999 286.0000000000001 632.9999999999999V507.9999999999999H982Q990 507.9999999999999 995 502.9999999999999T1000 490.9999999999999z" />
     <glyph glyph-name="link"
-      unicode="&#xEA35;"
+      unicode="&#xEA38;"
       horiz-adv-x="937.5" d="M813 258Q813 281 796.9999999999999 296L680.9999999999999 412Q664.9999999999999 428 642.9999999999999 428Q618.9999999999999 428 602.9999999999999 410Q603.9999999999999 409 612.9999999999999 400T624.9999999999999 388T633.9999999999999 377T640.9999999999999 362.9999999999999T642.9999999999999 347.9999999999999Q642.9999999999999 324.9999999999999 626.9999999999999 309.9999999999999T588.9999999999999 293.9999999999999Q580.9999999999999 293.9999999999999 573.9999999999999 295.9999999999999T559.9999999999999 302.9999999999999T548.9999999999998 311.9999999999999T536.9999999999998 323.9999999999999T526.9999999999998 333.9999999999999Q507.9999999999998 316.9999999999999 507.9999999999998 293.9999999999999Q507.9999999999998 270.9999999999999 523.9999999999998 255.9999999999999L638.9999999999998 139.9999999999999Q653.9999999999998 124.9999999999999 676.9999999999998 124.9999999999999Q698.9999999999999 124.9999999999999 714.9999999999999 139.9999999999999L796.9999999999998 220.9999999999998Q812.9999999999999 236.9999999999998 812.9999999999999 258.9999999999999zM420 652Q420 674 405 690L290 805Q274 821 252 821Q230 821 214 806L132 724Q116 709 116 687T132 649L248 533Q263 518 286 518Q309 518 326 535Q324 537 315 546T303 558T295 568T288 582T286 598.0000000000001Q286 620.0000000000001 301 636T338.9999999999999 651Q348 651 355 649T369 642T379 634T391 622T402 611Q420 628 420 652zM920 258Q920 192 872 145L790 64Q744 17 677 17Q609 17 563 65L448.0000000000001 180Q402.0000000000001 227 402.0000000000001 294Q402.0000000000001 361.9999999999999 451.0000000000001 410L402.0000000000001 458.9999999999999Q354.0000000000001 410 286.0000000000001 410Q219.0000000000001 410 172.0000000000001 456.9999999999999L56.0000000000001 573Q9.0000000000001 620 9.0000000000001 687T56.0000000000001 800L138.0000000000001 881.9999999999999Q185.0000000000001 927.9999999999998 252.0000000000001 927.9999999999998T366.0000000000001 880.9999999999999L481.0000000000001 765Q527.0000000000001 718.9999999999999 527.0000000000001 651.9999999999999Q527.0000000000001 582.9999999999999 478.0000000000002 535L527.0000000000001 485.9999999999999Q575.0000000000002 535 643.0000000000001 535Q710.0000000000002 535 757.0000000000001 487.9999999999999L873.0000000000001 372Q920.0000000000002 324.9999999999999 920.0000000000002 258z" />
     <glyph glyph-name="list-alt"
-      unicode="&#xEA36;"
+      unicode="&#xEA39;"
       horiz-adv-x="1000" d="M214 276V240.9999999999999Q214 232.9999999999999 209 227.9999999999999T196 222.9999999999999H161Q154 222.9999999999999 148 227.9999999999999T143 240.9999999999999V276Q143 284 148 289T161 294H196Q204 294 209 289T214 276zM214 419V383Q214 376 209 370.9999999999999T196 365.9999999999999H161Q154 365.9999999999999 148 370.9999999999999T143 383V419Q143 426 148 432T161 437H196Q204 437 209 432T214 419zM214 562V526Q214 519 209 514T196 508H161Q154 508 148 514T143 526V562Q143 569 148 575T161 580H196Q204 580 209 575T214 562zM857 276V240.9999999999999Q857 232.9999999999999 852 227.9999999999999T839 222.9999999999999H304Q296 222.9999999999999 291 227.9999999999999T286 240.9999999999999V276Q286 284 291 289T304 294H839Q847 294 852 289T857 276zM857 419V383Q857 376 852 370.9999999999999T839 365.9999999999999H304Q296 365.9999999999999 291 370.9999999999999T286 383V419Q286 426 291 432T304 437H839Q847 437 852 432T857 419zM857 562V526Q857 519 852 514T839 508H304Q296 508 291 514T286 526V562Q286 569 291 575T304 580H839Q847 580 852 575T857 562zM929 169V633Q929 641 923 646T911 651H89.0000000000001Q82.0000000000001 651 77.0000000000001 646T71.0000000000001 633V169Q71.0000000000001 162 77.0000000000001 157T89.0000000000001 151H911Q918 151 923 157T929 169zM1000 776V169Q1000 132 974 105.9999999999999T911 79.9999999999999H89.0000000000001Q53.0000000000001 79.9999999999999 26.0000000000001 105.9999999999999T1e-13 168.9999999999999V775.9999999999999Q1e-13 812.9999999999999 26.0000000000001 838.9999999999999T89.0000000000001 865.9999999999999H911Q948.0000000000002 865.9999999999999 974 838.9999999999999T1000 775.9999999999999z" />
     <glyph glyph-name="lock"
-      unicode="&#xEA37;"
+      unicode="&#xEA3A;"
       horiz-adv-x="656.25" d="M179 508H463.9999999999999V616Q463.9999999999999 675 422 717T321 758T220 717T179 616V508zM643 455V133.0000000000001Q643 111 627 96T589 80H53.9999999999999Q30.9999999999999 80 15.9999999999999 96T-1e-13 133.0000000000001V455.0000000000001Q-1e-13 477.0000000000001 15.9999999999999 493.0000000000001T53.9999999999999 508.0000000000001H70.9999999999999V616Q70.9999999999999 718 145 792T321 866T497.9999999999999 792T571 616V508.0000000000001H589Q612 508.0000000000001 627 493.0000000000001T643 455.0000000000001z" />
     <glyph glyph-name="mail-alt"
-      unicode="&#xEA38;"
+      unicode="&#xEA3B;"
       horiz-adv-x="1000" d="M1000 541V97.9999999999999Q1000 60.9999999999999 974 35T911 8H89.0000000000001Q53.0000000000001 8 26.0000000000001 35T1e-13 97.9999999999999V541Q25.0000000000001 512.9999999999999 56.0000000000001 491.9999999999999Q258.0000000000001 354.9999999999999 334.0000000000001 299.9999999999999Q366.0000000000001 275.9999999999999 385.0000000000001 262.9999999999999T438.0000000000001 235.9999999999998T499.0000000000001 222.9999999999998H501Q529 222.9999999999998 562 235.9999999999998T615.0000000000001 262.9999999999999T666.0000000000001 299.9999999999999Q761.0000000000001 367.9999999999999 944.0000000000002 491.9999999999999Q976.0000000000002 513.9999999999999 1000.0000000000002 540.9999999999999zM1000 705Q1000 661 973 621T905 552Q695.0000000000001 406 643 371Q638 367 620 354T590 332T561 314T527.9999999999999 299T500.9999999999999 294H498.9999999999999Q486.9999999999999 294 471.9999999999999 299T438.9999999999999 314T409.9999999999999 332T379.9999999999998 354T356.9999999999998 371Q305.9999999999998 406.0000000000001 209.9999999999998 472.0000000000001T95.9999999999998 552Q60.9999999999998 575 30.9999999999998 616T-2e-13 693Q-2e-13 736 22.9999999999998 765T88.9999999999998 794H910.9999999999995Q946.9999999999998 794 972.9999999999995 768.0000000000001T999.9999999999995 705.0000000000001z" />
     <glyph glyph-name="mail"
-      unicode="&#xEA39;"
+      unicode="&#xEA3C;"
       horiz-adv-x="1000" d="M929 98V526Q911 506 890 489.0000000000001Q741 375 652 301Q624 277 606 263T557.9999999999999 235.9999999999999T500.9999999999999 222.9999999999999H498.9999999999999Q472.9999999999999 222.9999999999999 441.9999999999999 235.9999999999999T393.9999999999999 263T348 301Q259.9999999999999 375 109.9999999999999 489Q88.9999999999999 506 70.9999999999999 526V97.9999999999999Q70.9999999999999 89.9999999999999 76.9999999999999 84.9999999999999T88.9999999999999 79.9999999999999H910.9999999999998Q917.9999999999998 79.9999999999999 922.9999999999998 84.9999999999999T928.9999999999998 97.9999999999999zM929 684V698T928 705T927 712T924 717T919 721T911 723H89.0000000000001Q82.0000000000001 723 77.0000000000001 717T71.0000000000001 705Q71.0000000000001 611 153.0000000000001 546Q261.0000000000001 460.9999999999999 377.0000000000001 369Q381.0000000000001 367 397.0000000000001 353T422.0000000000002 332T447.0000000000002 314T475.0000000000002 299T499.0000000000002 294H501.0000000000002Q512.0000000000002 294 525.0000000000002 299T553.0000000000002 314T578.0000000000003 332T603.0000000000003 353T623.0000000000003 369Q739.0000000000003 461 847.0000000000003 546Q877.0000000000003 570 903.0000000000005 611T929.0000000000005 684zM1000 705V98Q1000 61 974 35T911 8H89.0000000000001Q53.0000000000001 8 26.0000000000001 35T1e-13 97.9999999999999V704.9999999999999Q1e-13 741.9999999999999 26.0000000000001 767.9999999999999T89.0000000000001 793.9999999999999H911Q948.0000000000002 793.9999999999999 974 767.9999999999999T1000 704.9999999999999z" />
     <glyph glyph-name="map"
-      unicode="&#xEA3A;"
+      unicode="&#xEA3D;"
       horiz-adv-x="1000" d="M285.7142857142857 793.1428571428571Q292.96875 793.1428571428571 298.2700892857143 787.8415178571429T303.5714285714286 775.2857142857142V-46.1428571428572Q303.5714285714286 -57.3035714285714 294.0848214285715 -61.7678571428572L26.2276785714286 -204.625Q22.3214285714286 -206.8571428571429 17.8571428571429 -206.8571428571429Q10.6026785714286 -206.8571428571429 5.3013392857143 -201.5558035714287T0 -189V632.4285714285714Q0 643.5892857142858 9.4866071428571 648.0535714285714L277.34375 790.9107142857142Q281.25 793.1428571428571 285.7142857142857 793.1428571428571zM982.1428571428572 793.1428571428571Q989.3973214285714 793.1428571428571 994.6986607142858 787.8415178571429T1000 775.2857142857142V-46.1428571428572Q1000 -57.3035714285714 990.5133928571428 -61.7678571428572L722.65625 -204.625Q718.75 -206.8571428571429 714.2857142857143 -206.8571428571429Q707.03125 -206.8571428571429 701.7299107142858 -201.5558035714287T696.4285714285714 -189V632.4285714285714Q696.4285714285714 643.5892857142858 705.9151785714286 648.0535714285714L973.7723214285714 790.9107142857142Q977.6785714285714 793.1428571428571 982.1428571428572 793.1428571428571zM357.1428571428572 793.1428571428571Q361.6071428571429 793.1428571428571 364.9553571428572 791.46875L650.6696428571429 648.6116071428571Q660.7142857142858 643.03125 660.7142857142858 632.4285714285714V-189Q660.7142857142858 -196.2544642857142 655.4129464285714 -201.5558035714287T642.8571428571429 -206.8571428571429Q638.3928571428571 -206.8571428571429 635.0446428571429 -205.1830357142858L349.3303571428572 -62.3258928571429Q339.2857142857143 -56.7455357142858 339.2857142857143 -46.1428571428572V775.2857142857142Q339.2857142857143 782.5401785714286 344.5870535714286 787.8415178571429T357.1428571428572 793.1428571428571z" />
     <glyph glyph-name="map2"
-      unicode="&#xEA3B;"
+      unicode="&#xEA3E;"
       horiz-adv-x="1142.857142857143" d="M1127.232142857143 786.4464285714286Q1142.857142857143 775.2857142857142 1142.857142857143 756.8705357142858V-28.84375Q1142.857142857143 -40.0044642857143 1136.71875 -48.9330357142858T1120.5357142857142 -61.7678571428572L763.3928571428571 -204.625Q750 -210.7633928571429 736.6071428571429 -204.625L392.8571428571429 -67.3482142857143L49.1071428571429 -204.625Q43.5267857142857 -207.4151785714287 35.7142857142857 -207.4151785714287Q25.1116071428571 -207.4151785714287 15.625 -201.2767857142858Q0 -190.1160714285715 0 -171.7008928571429V614.0133928571429Q0 625.1741071428571 6.1383928571429 634.1026785714286T22.3214285714286 646.9375L379.4642857142857 789.7946428571429Q392.8571428571429 795.9330357142858 406.25 789.7946428571429L750 652.5178571428571L1093.75 789.7946428571429Q1111.607142857143 797.0491071428571 1127.232142857143 786.4464285714286zM410.7142857142857 711.1116071428571V2.40625L732.1428571428571 -125.9419642857142V582.7633928571429zM71.4285714285714 590.0178571428571V-118.6875L375 2.40625V711.1116071428571zM1071.4285714285716 -4.8482142857143V703.8571428571429L767.8571428571429 582.7633928571429V-125.9419642857142z" />
     <glyph glyph-name="megaphone"
-      unicode="&#xEA3C;"
+      unicode="&#xEA3F;"
       horiz-adv-x="1000" d="M929 580Q958.0000000000002 580 979.0000000000002 559T1000 508T979 458T928.9999999999998 437V223Q928.9999999999998 194 906.9999999999998 173T856.9999999999999 151Q623.9999999999999 345 403.9999999999999 362.9999999999999Q371.9999999999999 352.9999999999999 352.9999999999999 326.9999999999999T335.9999999999999 269.9999999999999T357.9999999999999 218.9999999999998Q346.9999999999999 199.9999999999998 344.9999999999999 181.9999999999998T348.9999999999999 149.9999999999998T366.9999999999999 118.9999999999998T393.9999999999999 90.9999999999997T429 62.9999999999997Q412 30.9999999999997 366 16.9999999999997T271.9999999999999 9.9999999999997T198.9999999999999 40.9999999999997Q194.9999999999999 53.9999999999997 181.9999999999999 89.9999999999997T163.9999999999999 142.9999999999998T151.9999999999999 192.9999999999998T142.9999999999999 248.9999999999999T144.9999999999999 303.9999999999999T156.9999999999999 365.9999999999999H88.9999999999999Q52.9999999999999 365.9999999999999 25.9999999999999 392T-1e-13 454.9999999999999V562Q-1e-13 599 25.9999999999999 625T88.9999999999999 651H356.9999999999999Q599.9999999999999 651 856.9999999999999 866Q885.9999999999999 866 906.9999999999998 844T928.9999999999998 794V580zM857 243V775.0000000000001Q637 607 429 584V433.0000000000001Q639 410.0000000000001 857 243.0000000000001z" />
     <glyph glyph-name="menu"
-      unicode="&#xEA3D;"
+      unicode="&#xEA40;"
       horiz-adv-x="1000" d="M0 769.3359375H1000V657.3580729166667H0V769.3359375zM0 381.3125V490.6875H1000V381.3125H0zM0 102.6640625000001V214.6419270833335H1000V102.6640625000001H0z" />
     <glyph glyph-name="menu_close"
-      unicode="&#xEA3E;"
+      unicode="&#xEA41;"
       horiz-adv-x="1000" d="M1000 636.52734375L921.8763020833331 714.6510416666666L643.22265625 435.9973958333334L921.8763020833331 157.34375L1000 235.4674479166668L802.0833333333333 435.9947916666667zM0 102.66015625H721.3554687499999V214.6393229166668H0V102.6614583333334zM0 490.6861979166667V381.3125H554.6888020833333V490.6848958333334H0zM0 769.33984375V657.3606770833334H721.3554687499999V769.3385416666666H0z" />
     <glyph glyph-name="minus-circled"
-      unicode="&#xEA3F;"
+      unicode="&#xEA42;"
       horiz-adv-x="1000" d="M0 437Q0 644 147 791T500 937T854 791T1000 437T854 83T500 -63T147 83T0 437zM213 355H786.9999999999999V519H213V355z" />
     <glyph glyph-name="minus-circled2"
-      unicode="&#xEA40;"
+      unicode="&#xEA43;"
       horiz-adv-x="1000" d="M212.5 354.75H787.5V517.25H212.5V354.75zM0 436C0 573.5 50 692.25 146.875 789.125S362.5 939.125 500 936S756.25 886 853.125 789.125C953.125 695.375 1000 576.625 1000 436C1000 295.375 950 179.75 853.125 82.875S640.625 -60.875 500 -64S243.7500000000001 -17.125 146.875 82.875S3.125 298.5 0 436zM109.375 436C109.375 326.625 146.875 236 225 161C303.125 86 393.7500000000001 45.375 500 45.375C606.25 45.375 700 82.875 775 161S890.625 329.75 890.625 436S853.125 636 775 711S606.25 829.75 500 826.625C393.75 826.625 300 789.125 225 711S109.375 545.375 109.375 436z" />
     <glyph glyph-name="minus-squared-alt"
-      unicode="&#xEA41;"
+      unicode="&#xEA44;"
       horiz-adv-x="781.25" d="M643 491V455Q643 447 638 442T625 437H161Q153 437 148 442T143 455V491Q143 498 148 503T161 508H625Q633 508 638 503T643 491zM714 241V705.0000000000001Q714 742.0000000000001 688 768.0000000000001T625 794H161Q124 794 98 768.0000000000001T71 705.0000000000001V241Q71 204 98 177.0000000000001T161 151.0000000000001H625Q662 151.0000000000001 688 177.0000000000001T714 241.0000000000001zM786 705V240.9999999999999Q786 174 739 127T625 79.9999999999999H161Q94 79.9999999999999 47 127T0 240.9999999999999V705Q0 771 47 818T161 866H625Q691.0000000000001 866 739 818T786 705z" />
     <glyph glyph-name="minus-squared"
-      unicode="&#xEA42;"
+      unicode="&#xEA45;"
       horiz-adv-x="843.75" d="M714 401V473Q714 487 704 498T678.9999999999999 508H179Q163.9999999999999 508 153 498T143 473V401Q143 387 153 376T179 365.9999999999999H678.9999999999999Q693 365.9999999999999 704 376T714 401zM857 705V169Q857 103 809.9999999999999 56T696 8H160.9999999999999Q93.9999999999999 8 46.9999999999999 56T-1e-13 169V705Q-1e-13 771 46.9999999999999 818T160.9999999999999 866H696Q762.9999999999999 866 809.9999999999999 818T857 705z" />
     <glyph glyph-name="minus"
-      unicode="&#xEA43;"
+      unicode="&#xEA46;"
       horiz-adv-x="1000" d="M0 296V578H1000V296H0z" />
     <glyph glyph-name="mixer"
-      unicode="&#xEA44;"
+      unicode="&#xEA47;"
       horiz-adv-x="1000" d="M811 -58H192.0000000000001C89.0000000000001 -58 6.0000000000001 26 6.0000000000001 128V747C6.0000000000001 850 89.0000000000001 932.9999999999998 192.0000000000001 932.9999999999998H811C913 932.9999999999998 997.0000000000002 850 997.0000000000002 747V128C997.0000000000002 26 913.0000000000002 -58 811.0000000000001 -58zM873 747C873 782 845 809 811 809H192C157 809 130 781 130 747V128C130 93.9999999999999 157 65.9999999999999 192 65.9999999999999H811C845 65.9999999999999 873 93.9999999999999 873 128V747zM687 252V159C687 142 673 128 656 128S625 142 625 159V252C591 252 563 280 563 313.9999999999999V376C563 410 591 438 625 438V716C625 733 639 747 656 747S687 733 687 716V438C721.0000000000001 438 749.0000000000001 410 749.0000000000001 376V313.9999999999999C749.0000000000001 279.9999999999999 721.0000000000001 251.9999999999999 687 251.9999999999999zM377 438V159C377 142 363 128 346 128S315 142 315 159V438C281 438 253 466 253 500V562C253 596 281 623 315 623V716C315 733 329 747 346 747S377 733 377 716V623C412.0000000000001 623 439 596 439 562V500C439 465 412 438 377 438z" />
     <glyph glyph-name="new-database"
-      unicode="&#xEA45;"
+      unicode="&#xEA48;"
       horiz-adv-x="1000" d="M50 686V748C50 851 217 934 422 934S794.9999999999999 851 794.9999999999999 748V686C794.9999999999999 615 718 554 603 523C599 522 595 521 591 520C540.9999999999999 506.9999999999999 483 498.9999999999999 422 498.9999999999999C217 498.9999999999999 49.9999999999999 583 49.9999999999999 686zM750 520C766 516 781 511 795 504V604C795 572 779 543 750 520zM402 65C206 69 50 132 50 231V126.0000000000001C50 23.0000000000001 217.0000000000001 -60 422.0000000000001 -60C457.0000000000001 -60 490.0000000000001 -58 522 -53C472.0000000000001 -26 430.0000000000001 15 402 65zM374 128C365 157 360 188 360 219.9999999999999C360 230.9999999999999 361 241.9999999999999 362 253C185 264 50 324.9999999999999 50 418V313C50 218 191 140 374 128zM375 314C390 361 416 403 450 438C441 437 432 437 422 437C217 437 50 501 50 604V499.0000000000001C50 404.0000000000001 192 326.0000000000001 375 314.0000000000001zM951 220C951 65 825 -60 670.9999999999999 -60S390.9999999999999 65 390.9999999999999 220S516.9999999999999 499.0000000000001 670.9999999999999 499.0000000000001C825 499.0000000000001 951 374 951 220zM857 251H702V406H639.9999999999999V251H484.9999999999999V188.9999999999999H639.9999999999999V32.9999999999999H702V188.9999999999999H857V251z" />
     <glyph glyph-name="ok-circled-2"
-      unicode="&#xEA46;"
+      unicode="&#xEA49;"
       horiz-adv-x="1000" d="M0 436Q0 643 147 790T500 936T854 790T1000 436T854 82T500 -64T147 82T0 436zM109 436Q109 274 224 160T500 45T776 160T891 436T776 712T500 827T224 712T109 436zM215 385L309 476.9999999999999L402 383L691.0000000000001 674L785 580.9999999999999L494.0000000000001 291L402 198L309.0000000000001 291z" />
     <glyph glyph-name="ok-circled"
-      unicode="&#xEA47;"
+      unicode="&#xEA4A;"
       horiz-adv-x="1000" d="M0 437Q0 644 147 791T500 937T854 791T1000 437T854 83T500 -63T147 83T0 437zM182 380L391 171L494 275L818.0000000000001 599L715.0000000000001 703L391.0000000000001 378L285.0000000000001 483.9999999999999z" />
     <glyph glyph-name="ok"
-      unicode="&#xEA48;"
+      unicode="&#xEA4B;"
       horiz-adv-x="1000" d="M0 347L162 509.0000000000001L328 345L836.0000000000001 855L1000 691L328 19L166 183z" />
     <glyph glyph-name="paperclip"
-      unicode="&#xEA49;"
+      unicode="&#xEA4C;"
       horiz-adv-x="1000" d="M407.745 -55.438C317.257 -55.438 232.211 -20.1079999999999 168.303 43.936C104.319 107.889 69.065 192.828 69.065 283.3630000000001C69.125 373.836 104.319 458.8680000000001 168.303 522.7760000000001L511.162 858.224C603.305 950.411 766.031 950.772 859 857.728C954.915 761.6469999999999 954.915 605.4159999999999 859 509.442L550.445 208.465C491.032 149.0210000000001 393.3750000000001 148.9020000000001 333.3590000000001 209.005C273.343 269.141 273.343 366.7380000000001 333.3590000000001 426.738L452.785 546.182L539.861 459.107L420.435 339.679C412.54 331.742 411.414 322.601 411.414 317.909C411.414 313.161 412.541 304.019 420.435 296.081C436.19 280.386 448.202 280.386 463.973 296.081L772.346 597.1020000000001C819.852 644.547 819.852 722.664 771.864 770.7280000000001C725.321 817.273 644.259 817.273 597.713 770.7280000000001L254.883 435.249C214.666 394.972 192.222 340.9100000000001 192.222 283.3620000000001C192.222 225.7520000000001 214.666 171.6330000000001 255.363 130.98C336.801 49.466 478.721 49.466 560.127 130.98L714.074 284.927L801.0899999999999 197.88L647.143 43.936C583.221 -20.051 498.204 -55.438 407.745 -55.438z" />
+    <glyph glyph-name="paste"
+      unicode="&#xEA4D;"
+      horiz-adv-x="1000" d="M687.5 811H562.5V873.5C562.5 907.875 534.375 936 500 936H375C340.625 936 312.5 907.875 312.5 873.5V811H187.5V686H687.5V811zM500 811H375V873.375C375.03125 873.40625 375.0625 873.4375 375.125 873.5H499.90625C499.9375 873.46875 500 873.4375 500.0312500000001 873.375V811zM812.5 623.5V779.75C812.5 796.9375 798.4375 811 781.25 811H718.75V748.5H750V623.5H562.5L375 436V186H125V748.5H156.25V811H93.75C76.5625 811 62.5 796.9375 62.5 779.75V154.75C62.5 137.5625 76.5625 123.5 93.75 123.5H375V-64H1000V623.5H812.5zM562.5 535.125V436H463.375L562.5 535.125zM937.5 -1.5H437.5V373.5H625V561H937.5V-1.5z" />
     <glyph glyph-name="pencil"
-      unicode="&#xEA4A;"
+      unicode="&#xEA4E;"
       horiz-adv-x="1000" d="M375 65L4 -59L127 313L747 933L995 685L375 65zM127 65L313 127.0000000000001L189 251.0000000000001L127 65zM251 313L375 189L747 561L623 685L251 313z" />
     <glyph glyph-name="picture"
-      unicode="&#xEA4B;"
+      unicode="&#xEA4F;"
       horiz-adv-x="1062.5" d="M357 616Q357 571 326 540T250 507.9999999999999T174 540T143 616T174 691T250 723T326 691T357 616zM929 401V151H143V258L321 437L411.0000000000001 347.9999999999999L696 632.9999999999999zM982 794H89Q82 794 77 789T71 776V97.9999999999999Q71 89.9999999999999 77 84.9999999999999T89 79.9999999999999H982Q989 79.9999999999999 995 84.9999999999999T1000 97.9999999999999V776Q1000 783 995 789T982 794zM1071 776V97.9999999999999Q1071 60.9999999999999 1045 35T982 8H89Q53 8 26 35T0 97.9999999999999V776Q0 813 26 839T89 866H982Q1018.9999999999998 866 1045 839T1071 776z" />
     <glyph glyph-name="play"
-      unicode="&#xEA4C;"
+      unicode="&#xEA50;"
       horiz-adv-x="781.25" d="M772.3125 418.6875L31.25 6.8437500000001Q18.40625 -0.4062499999999 9.21875 5.1562500000001T0 25.2500000000001V846.6875000000002Q0 861.1875000000002 9.21875 866.7812500000002T31.25 865.0937500000002L772.3125 453.2500000000002Q785.15625 446.0000000000003 785.15625 435.9375000000003T772.3125 418.6250000000004z" />
     <glyph glyph-name="plus-circled"
-      unicode="&#xEA4D;"
+      unicode="&#xEA51;"
       horiz-adv-x="1000" d="M0 437Q0 644 147 791T500 937T854 791T1000 437T854 83T500 -63T147 83T0 437zM219 357H420.0000000000001V156H580.0000000000001V357H781.0000000000001V517H580.0000000000001V718.0000000000001H420.0000000000001V517H219V357z" />
     <glyph glyph-name="plus-circled2"
-      unicode="&#xEA4E;"
+      unicode="&#xEA52;"
       horiz-adv-x="1000" d="M0 436C0 573.5 50 692.25 146.875 789.125S362.5 939.125 500 936S756.25 886 853.125 789.125C953.125 695.375 1000 576.625 1000 436C1000 295.375 950 179.75 853.125 82.875S640.625 -60.875 500 -64S243.7500000000001 -17.125 146.875 82.875S3.125 298.5 0 436zM109.375 436C109.375 326.625 146.875 236 225 161C303.125 86 393.7500000000001 45.375 500 45.375C606.25 45.375 700 82.875 775 161S890.625 329.75 890.625 436S853.125 636 775 711S606.25 829.75 500 826.625C393.75 826.625 300 789.125 225 711S109.375 545.375 109.375 436zM218.75 357.875H418.75V154.75H578.125V354.75H781.25V514.125H581.25V717.25H421.8750000000001V517.25H218.75C218.75 517.25 218.75 357.875 218.75 357.875z" />
     <glyph glyph-name="plus-squared-alt"
-      unicode="&#xEA4F;"
+      unicode="&#xEA53;"
       horiz-adv-x="781.25" d="M643 491V455Q643 447 638 442T625 437H429V240.9999999999999Q429 232.9999999999999 424 227.9999999999999T411 222.9999999999999H375Q367 222.9999999999999 362 227.9999999999999T357 240.9999999999999V437H161Q153 437 148 442T143 454.9999999999999V490.9999999999999Q143 497.9999999999999 148 502.9999999999999T161 507.9999999999999H357V705Q357 713 362 718T375 723H411Q419 723 424 718T429 705V507.9999999999999H625Q633 507.9999999999999 638 502.9999999999999T643 489.9999999999999zM714 241V705.0000000000001Q714 742.0000000000001 688 768.0000000000001T625 794H161Q124 794 98 768.0000000000001T71 705.0000000000001V241Q71 204 98 177.0000000000001T161 151.0000000000001H625Q662 151.0000000000001 688 177.0000000000001T714 241.0000000000001zM786 705V240.9999999999999Q786 174 739 127T625 79.9999999999999H161Q94 79.9999999999999 47 127T0 240.9999999999999V705Q0 771 47 818T161 866H625Q691.0000000000001 866 739 818T786 705z" />
     <glyph glyph-name="plus-squared"
-      unicode="&#xEA50;"
+      unicode="&#xEA54;"
       horiz-adv-x="843.75" d="M714 401V473Q714 487 704 498T678.9999999999999 508H499.9999999999999V687Q499.9999999999999 702 488.9999999999999 712T463.9999999999999 723H392.9999999999999Q377.9999999999999 723 367.9999999999999 712T356.9999999999999 687V508H178.9999999999999Q163.9999999999999 508 152.9999999999999 498T142.9999999999999 473V401Q142.9999999999999 387 152.9999999999999 376T178.9999999999999 365.9999999999999H356.9999999999999V186.9999999999999Q356.9999999999999 172.9999999999999 367.9999999999999 161.9999999999999T392.9999999999999 150.9999999999999H463.9999999999999Q478.9999999999999 150.9999999999999 488.9999999999999 161.9999999999999T499.9999999999999 186.9999999999999V365.9999999999999H678.9999999999999Q693 365.9999999999999 704 376T714 401zM857 705V169Q857 103 809.9999999999999 56T696 8H160.9999999999999Q93.9999999999999 8 46.9999999999999 56T-1e-13 169V705Q-1e-13 771 46.9999999999999 818T160.9999999999999 866H696Q762.9999999999999 866 809.9999999999999 818T857 705z" />
     <glyph glyph-name="plus"
-      unicode="&#xEA51;"
+      unicode="&#xEA55;"
       horiz-adv-x="1000" d="M0 296V578H359V937H641V578H1000V296H641V-63H359.0000000000001V296H1e-13z" />
     <glyph glyph-name="popin"
-      unicode="&#xEA52;"
+      unicode="&#xEA56;"
       horiz-adv-x="1000" d="M468.75 407.0625L712 405.6250000000001L633.09375 484.5312500000001L789.875 641.3125000000001L706.5625 724.5937500000001L549.8125 567.8125000000001L468.8750000000001 648.7812500000002L468.7500000000001 407.0625000000001zM810.1875 406.5L750.1875 467.34375L751.28125 185.8750000000001L250.8125 185.5937500000001L251.3125 684.78125L531.25 686L468.75 748.5H250C215.5 748.5 187.5 720.5 187.5 686V186C187.5 151.5 215.5 123.5 250 123.5H750C784.5 123.5 812.5 151.5 812.5 186L810.1875 406.5z" />
     <glyph glyph-name="popout"
-      unicode="&#xEA53;"
+      unicode="&#xEA57;"
       horiz-adv-x="1000" d="M490.4375 512.84375L573.75 429.5625L730.4999999999999 586.34375L811.4374999999999 505.40625L811.5625 747.09375L568.28125 748.53125L647.21875 669.625L490.4374999999999 512.84375zM810.1875 406.46875L750.1875 467.3124999999999L751.28125 185.8437499999999L250.8125 185.5624999999999L251.3125 684.71875L531.25 685.9687499999999L468.75 748.4687499999999H250C215.5 748.4687499999999 187.5 720.4687499999999 187.5 685.9687499999999V185.9687499999999C187.5 151.4687499999999 215.5 123.4687499999999 250 123.4687499999999H750C784.5 123.4687499999999 812.5 151.4687499999999 812.5 185.9687499999999L810.1875 406.4687499999999z" />
     <glyph glyph-name="profile"
-      unicode="&#xEA54;"
+      unicode="&#xEA58;"
       horiz-adv-x="1000" d="M962 -61H34.9999999999999C34.9999999999999 59 175 159 366 192V241C287 287.0000000000001 234 372 234 469.0000000000001V476.0000000000001C194.9999999999999 490.0000000000001 167.9999999999999 526 167.9999999999999 569S194.9999999999999 648 234 661V668C234 814 352 933 498.9999999999999 933S764 814 764 668V661C802 648 830.0000000000001 612 830.0000000000001 569S802 490 764 476.0000000000001V469.0000000000001C764 372 710 287 631 241V192C822.0000000000001 159 962 59 962 -61z" />
     <glyph glyph-name="replicate"
-      unicode="&#xEA55;"
+      unicode="&#xEA59;"
       horiz-adv-x="1000" d="M375 250H438V125H375V250zM500 250H563V125H499.9999999999999V250zM625 250H688V125H625V250zM813 343H750V31H813L1000 187L813 343zM1000 843H688V531H1000V843zM906 625H781V750H906V625zM0 31H313V343H0V31zM94 250H219V125H94V250zM563 750H625V625H563V750zM438 750H500V625H438V750zM313 750H375V625H313V750zM250 531V843H187L0 687L187 531H250z" />
     <glyph glyph-name="reply-all"
-      unicode="&#xEA56;"
+      unicode="&#xEA5A;"
       horiz-adv-x="1562.5" d="M501 937V755L182 436L501 117.9999999999999V-63.0000000000001L0 435.9999999999999zM866 937V618Q976 603 1070 573T1229 505T1347 423T1433 332T1490 242T1525 158.0000000000001T1543 89T1549.9999999999998 42V25Q1543.9999999999998 36 1531 54T1464 117.9999999999999T1339 193.9999999999999Q1268 225.9999999999999 1142 245.9999999999999Q1065 258 980.9999999999998 258Q925.9999999999998 258 865.9999999999999 253V-63.0000000000001L364.9999999999999 435.9999999999999z" />
     <glyph glyph-name="reply"
-      unicode="&#xEA57;"
+      unicode="&#xEA5B;"
       horiz-adv-x="1187.5" d="M501 937V618Q611 603 705 573T864 505T982 423T1068 332T1125 242T1160 158.0000000000001T1178 89T1184 42L1184.9999999999998 25Q1178.9999999999998 36 1166 54T1099 117.9999999999999T974 193.9999999999999T778 245.9999999999999Q701.0000000000001 258 616 258Q561 258 501 253V-63.0000000000001L0 435.9999999999999z" />
     <glyph glyph-name="resize-full-reverse"
-      unicode="&#xEA58;"
+      unicode="&#xEA5C;"
       horiz-adv-x="1000" d="M559.375 -64L706.2499999999999 82.875L506.2499999999999 286L649.9999999999999 429.7499999999999L853.1249999999999 229.75L999.9999999999998 376.6249999999999V-64H559.375zM350 442.25L146.875 645.375L0 495.3749999999999V936H440.625L293.75 789.125L493.7499999999999 585.9999999999999L350 442.25z" />
     <glyph glyph-name="resize-full"
-      unicode="&#xEA59;"
+      unicode="&#xEA5D;"
       horiz-adv-x="1000" d="M0 -63V378L148 229.9999999999999L350 430.9999999999999L494 286.9999999999999L293 84.9999999999998L441 -63.0000000000002H-1e-13zM506 587L707.0000000000001 789L559 937H1000V496.0000000000001L852 644L649.9999999999999 443.0000000000001z" />
     <glyph glyph-name="resize-small-reverse"
-      unicode="&#xEA5A;"
+      unicode="&#xEA5E;"
       horiz-adv-x="1000" d="M853.125 -64L653.125 136L506.25 -10.875V429.7499999999999H946.8749999999998L799.9999999999999 282.8749999999999L1000 79.7499999999999L853.125 -64zM53.125 442.25L200 589.125L0 789.125L146.875 936L350 736L496.8749999999999 882.875V442.25C493.7499999999999 442.25 53.125 442.25 53.125 442.25z" />
     <glyph glyph-name="resize-small"
-      unicode="&#xEA5B;"
+      unicode="&#xEA5F;"
       horiz-adv-x="1000" d="M0 82L201 284.0000000000001L53 430.0000000000001H494V-10.9999999999999L348 137.0000000000002L147 -63.9999999999998zM506 442V883L652 735L854.0000000000001 936L1000 790L798.9999999999999 588L947 442H506z" />
     <glyph glyph-name="right-1"
-      unicode="&#xEA5C;"
+      unicode="&#xEA60;"
       horiz-adv-x="937.5" d="M464 884L911 438L464 -10L307.0000000000001 150.0000000000001L482.0000000000001 326.0000000000001H18V550.0000000000001H482.0000000000001L307.0000000000001 726.0000000000001z" />
     <glyph glyph-name="right-circled"
-      unicode="&#xEA5D;"
+      unicode="&#xEA61;"
       horiz-adv-x="843.75" d="M643 436Q643 428 638 423L459 244.9999999999999Q454 239.9999999999999 446 239.9999999999999Q439 239.9999999999999 434 244.9999999999999T429 257V364.9999999999999H232Q225 364.9999999999999 220 369.9999999999999T214 382V489.9999999999999Q214 496.9999999999999 220 501.9999999999999T232 506.9999999999999H429V615Q429 622 434 627T446 632T460 627L638 449Q643 444 643 436zM732 436Q732 519 691 588T581 699T429 740T275.9999999999999 699T165.9999999999999 588T124.9999999999999 436T165.9999999999999 284T275.9999999999999 173T429 132T581 173T691 284T732 436zM857 436Q857 319 799.9999999999999 221T643.9999999999999 65T429 7T213 65T57.9999999999999 221T-1e-13 436T57.9999999999999 651T213 807T429 865T643.9999999999999 807T799.9999999999999 651T857 436z" />
     <glyph glyph-name="right-dir"
-      unicode="&#xEA5E;"
+      unicode="&#xEA62;"
       horiz-adv-x="343.75" d="M321 437Q321 423 311 412L61 162Q50 151 36 151T11 162T0 187V687Q0 702 11 712T36 723T61 712L311 462Q321 452 321 437z" />
     <glyph glyph-name="right-open"
-      unicode="&#xEA5F;"
+      unicode="&#xEA63;"
       horiz-adv-x="656.25" d="M0 85L352 437L0 789L148 937L500 586L648 437L148 -63z" />
     <glyph glyph-name="right"
-      unicode="&#xEA60;"
+      unicode="&#xEA64;"
       horiz-adv-x="1000" d="M964 439Q964 431 959 425L744 228Q735 220 725 224Q714 229 714 241V366H18Q10 366 5 371T0 383.0000000000001V491.0000000000001Q0 498.0000000000001 5 503.0000000000001T18 508.0000000000001H714V633Q714 645 725 650T744 647L959 451.0000000000001Q964 446.0000000000001 964 439.0000000000001z" />
     <glyph glyph-name="save"
-      unicode="&#xEA61;"
+      unicode="&#xEA65;"
       horiz-adv-x="843.75" d="M214 80H643V294H214V80zM714 80H785.9999999999999V580Q785.9999999999999 588 779.9999999999999 601T768.9999999999999 621L611.9999999999999 777Q606.9999999999999 783 592.9999999999999 789T570.9999999999999 794V562Q570.9999999999999 540 555.9999999999998 524T517.9999999999998 508.0000000000001H195.9999999999998Q173.9999999999998 508.0000000000001 158.9999999999998 524T142.9999999999998 562V794H70.9999999999998V80.0000000000001H142.9999999999998V312.0000000000001Q142.9999999999998 334.0000000000001 158.9999999999998 350.0000000000001T195.9999999999998 366.0000000000001H660.9999999999998Q682.9999999999998 366.0000000000001 698.9999999999999 350.0000000000001T713.9999999999999 312.0000000000001V80.0000000000001zM500 598V776Q500 784 495 789T482 794H375Q368 794 362 789T357 776V598Q357 590 362 585T375 580H482Q489 580 495 585T500 598zM857 580V62Q857 40 842 24T803.9999999999999 8H53.9999999999999Q30.9999999999999 8 15.9999999999999 24T-1e-13 62V812Q-1e-13 834 15.9999999999999 850T53.9999999999999 866H571Q594 866 621 854T663 828L819.0000000000001 671Q835.0000000000001 656 846.0000000000001 629T857.0000000000001 580z" />
     <glyph glyph-name="search"
-      unicode="&#xEA62;"
+      unicode="&#xEA66;"
       horiz-adv-x="1000" d="M968 100L750 318C788 380 811 452 811 529C811 752 629.9999999999999 933 407 933S2.9999999999999 752 2.9999999999999 529C2.9999999999999 306 183.9999999999999 125 407 125C484.9999999999999 125 555.9999999999999 148 617.9999999999999 186L835.9999999999999 -32C872.9999999999999 -68.9999999999999 931.9999999999998 -68.9999999999999 967.9999999999998 -32C1004.9999999999998 4.0000000000001 1004.9999999999998 63 967.9999999999998 100zM407 250C252 250 127 375 127 529C127 684 252 809 407 809C561 809 686 684 686 529C686 375 561 250 407 250z" />
     <glyph glyph-name="select-all"
-      unicode="&#xEA63;"
+      unicode="&#xEA67;"
       horiz-adv-x="1000" d="M562.5 -64H437.5V29.75H562.5V-64zM250 842.25H343.75V936H250V842.25zM343.75 -64V29.75H250V-64H343.75zM437.5 936V842.25H562.5V936H437.5zM843.75 842.25H906.25V779.75H1000V936H843.75V842.25zM93.75 373.5V498.5H0V373.5H93.75zM0 592.25H93.75V686H0V592.25zM93.75 186V279.75H0V186H93.75zM750 29.75H656.25V-64H750V29.75zM156.25 29.75H93.75V92.25H0V-64H156.25V29.75zM906.25 92.25V29.75H843.75V-64H1000V92.25H906.25zM906.25 686V592.25H1000V686H906.25zM93.75 779.75V842.25H156.25V936H0V779.75H93.75zM656.25 936V842.25H750V936H656.25zM906.25 498.5V373.5H1000V498.5H906.25zM1000 279.75H906.25V186H1000V279.75zM287.5 220.375C343.75 164.125 415.625 132.875 500 132.875C584.375 132.875 653.125 161 712.5 220.375C768.75 276.6250000000001 800 348.5000000000001 800 432.8750000000001C800 517.25 771.8750000000001 586 712.5 645.3750000000001C650 704.7500000000001 581.25 732.8750000000001 500 732.8750000000001C418.75 732.8750000000001 346.875 704.7500000000001 287.5 645.3750000000001S200 517.2500000000001 200 432.8750000000001C200 351.625 231.25 279.75 287.5 220.375zM371.875 461L434.375 395.375L628.125 592.25L690.625 529.75L496.8750000000001 336L434.3750000000001 273.5L309.3750000000001 398.5L371.875 461z" />
     <glyph glyph-name="sidenav-filter-function"
-      unicode="&#xEA64;"
+      unicode="&#xEA68;"
       horiz-adv-x="1000" d="M492.9375 538.6875H350.09375V491.0625H445.34375V443.46875H350.09375V348.2187500000001H254.8750000000001V586.3125H492.96875V538.6875zM778.65625 538.6875H635.8125000000001V491.0625H731.0625000000002V443.46875H635.8125000000001V348.2187500000001H540.5625V586.3125H778.65625V538.6875zM778.25 92.25H221.71875C99.46875 92.25 0 191.75 0 314V589.28125C0 711.53125 99.46875 811 221.71875 811H778.25C900.5 811 1000 711.53125 1000 589.28125V314C1000 191.75 900.5 92.25 778.25 92.25zM221.71875 748.5C133.9375 748.5 62.5 677.0625 62.5 589.28125V314C62.5 226.1875 133.9375 154.75 221.71875 154.75H778.25C866.0625 154.75 937.5 226.1875 937.5 314V589.28125C937.5 677.0625 866.0625 748.5 778.25 748.5H221.71875z" />
     <glyph glyph-name="sidenav-info"
-      unicode="&#xEA65;"
+      unicode="&#xEA69;"
       horiz-adv-x="1000" d="M778.25 779.75H221.71875C99.46875 779.75 0 680.28125 0 558.03125V282.75C0 160.5 99.46875 61 221.71875 61H778.25C900.5 61 1000 160.5 1000 282.75V558.03125C1000 680.28125 900.5 779.75 778.25 779.75zM937.5 282.75C937.5 194.9375 866.0625 123.5 778.25 123.5H221.71875C133.9375 123.5 62.5 194.9375 62.5 282.75V558.03125C62.5 645.8125 133.9375 717.25 221.71875 717.25H778.25C866.0625 717.25 937.5 645.8125 937.5 558.03125V282.75zM593.75 373.5L593.75 498.5L468.75 498.5L375 498.5L375 373.5L468.75 373.5L468.75 279.75L375 279.75L375 186L468.75 186L593.75 186L625 186L625 279.75L593.75 279.75zM500 654.75H593.75V561H500V654.75z" />
     <glyph glyph-name="sidenav-list-function"
-      unicode="&#xEA66;"
+      unicode="&#xEA6A;"
       horiz-adv-x="1000" d="M412.59375 395.84375H507.8437499999999V348.21875H317.375V586.3125H412.59375V395.84375zM793.5625 538.6875H650.71875V491.0625H745.9687500000001V443.46875H650.71875V348.2187500000001H555.46875V586.3125H793.5625V538.6875zM778.25 92.25H221.71875C99.46875 92.25 0 191.75 0 314V589.28125C0 711.53125 99.46875 811 221.71875 811H778.25C900.5 811 1000 711.53125 1000 589.28125V314C1000 191.75 900.5 92.25 778.25 92.25zM221.71875 748.5C133.9375 748.5 62.5 677.0625 62.5 589.28125V314C62.5 226.1875 133.9375 154.75 221.71875 154.75H778.25C866.0625 154.75 937.5 226.1875 937.5 314V589.28125C937.5 677.0625 866.0625 748.5 778.25 748.5H221.71875z" />
     <glyph glyph-name="sidenav-map-reduce"
-      unicode="&#xEA67;"
+      unicode="&#xEA6B;"
       horiz-adv-x="1000" d="M555.46875 555.0625V316.9687500000001H460.2187499999999V507.4375000000001H412.59375V316.9687500000001H317.34375V507.4375000000001H269.71875V316.9687500000001H174.5V555.0625H555.46875zM793.5625 412.1875H841.1562499999999V316.9374999999999H745.9375V412.1875H698.3125V316.9374999999999H603.0625V555.0625H841.15625V459.8125H793.5625000000001V412.1875zM698.3125 459.8125H744.03125V507.4375000000001H698.3125V459.8125zM778.25 61H221.71875C99.46875 61 0 160.5 0 282.75V558.03125C0 680.28125 99.46875 779.75 221.71875 779.75H778.25C900.5 779.75 1000 680.28125 1000 558.03125V282.75C1000 160.5 900.5 61 778.25 61zM221.71875 717.25C133.9375 717.25 62.5 645.8125 62.5 558.03125V282.75C62.5 194.9375 133.9375 123.5 221.71875 123.5H778.25C866.0625 123.5 937.5 194.9375 937.5 282.75V558.03125C937.5 645.8125 866.0625 717.25 778.25 717.25H221.71875z" />
     <glyph glyph-name="sidenav-search"
-      unicode="&#xEA68;"
+      unicode="&#xEA6C;"
       horiz-adv-x="1000" d="M778.25 61H221.71875C99.46875 61 0 160.5 0 282.75V558.03125C0 680.28125 99.46875 779.75 221.71875 779.75H778.25C900.5 779.75 1000 680.28125 1000 558.03125V282.75C1000 160.5 900.5 61 778.25 61zM221.71875 717.25C133.9375 717.25 62.5 645.8125 62.5 558.03125V282.75C62.5 194.9375 133.9375 123.5 221.71875 123.5H778.25C866.0625 123.5 937.5 194.9375 937.5 282.75V558.03125C937.5 645.8125 866.0625 717.25 778.25 717.25H221.71875zM700.875 300.59375C707.84375 293.6250000000001 711.3125 285.21875 711.3125 275.2812500000001S707.84375 256.9375000000001 700.875 249.9687500000001S685.5 239.5312500000001 675.59375 239.5312500000001C665.65625 239.5312500000001 657.21875 243.0000000000001 650.25 249.9687500000001L567.65625 333.2812500000001C541.9062499999999 317.9062500000001 515.09375 310.2500000000003 487.3125 310.2500000000003C445.125 310.2500000000003 408.9375 325.2187500000001 378.65625 355.2187500000003C348.40625 385.2500000000001 333.28125 421.5937500000001 333.28125 464.2500000000002C333.28125 506.4062500000002 348.28125 542.4687500000002 378.28125 572.5000000000002C408.28125 602.5000000000002 444.625 617.5000000000002 487.2812499999999 617.5000000000002C529.96875 617.5000000000002 566.28125 602.5000000000002 596.3124999999999 572.5000000000002C626.2812499999999 542.4687500000002 641.2812499999999 506.4062500000002 641.2812499999999 464.2500000000002C641.2812499999999 437.4687500000003 633.3437499999999 410.6875000000003 617.4687499999999 383.9062500000003L700.875 300.59375zM411.8125 389.125C432.9062500000001 368.3125 458.0625000000001 357.875 487.34375 357.875C516.5937500000001 357.875 541.6875 368.3125 562.5 389.125C583.3125 409.96875 593.75 435 593.75 464.28125C593.75 493.5624999999999 583.3125 518.59375 562.5 539.4375C541.6875 560.28125 516.59375 570.6875 487.34375 570.6875C458.0625000000001 570.6875 432.9062500000001 560.28125 411.8125 539.4375C390.71875 518.59375 380.1875 493.5624999999999 380.1875 464.28125C380.21875 435 390.71875 409.96875 411.8125 389.125z" />
     <glyph glyph-name="sidenav-show-function"
-      unicode="&#xEA69;"
+      unicode="&#xEA6D;"
       horiz-adv-x="1000" d="M492.9375 507.4375H350.09375V459.8125H492.9375V316.9687500000001H254.8750000000001V364.5625000000001H397.71875V412.1875000000001H254.8750000000001V555.0625H492.96875V507.4375zM778.65625 507.4375H635.8125000000001V459.8125H731.0625000000002V412.21875H635.8125000000001V316.9687500000001H540.5625V555.0625H778.65625V507.4375zM778.25 61H221.71875C99.46875 61 0 160.5 0 282.75V558.03125C0 680.28125 99.46875 779.75 221.71875 779.75H778.25C900.5 779.75 1000 680.28125 1000 558.03125V282.75C1000 160.5 900.5 61 778.25 61zM221.71875 717.25C133.9375 717.25 62.5 645.8125 62.5 558.03125V282.75C62.5 194.9375 133.9375 123.5 221.71875 123.5H778.25C866.0625 123.5 937.5 194.9375 937.5 282.75V558.03125C937.5 645.8125 866.0625 717.25 778.25 717.25H221.71875z" />
     <glyph glyph-name="sidenav-update-function"
-      unicode="&#xEA6A;"
+      unicode="&#xEA6E;"
       horiz-adv-x="1000" d="M475.09375 316.9375H237V555.0625H332.21875V364.5625H379.8437500000001V555.0625H475.0937500000001V316.9375zM760.8125 507.4375H617.96875V459.8125H713.21875V412.21875H617.96875V316.9687500000001H522.7499999999999V555.0625H760.8437499999999V507.4375zM778.25 61H221.71875C99.46875 61 0 160.5 0 282.75V558.03125C0 680.28125 99.46875 779.75 221.71875 779.75H778.25C900.5 779.75 1000 680.28125 1000 558.03125V282.75C1000 160.5 900.5 61 778.25 61zM221.71875 717.25C133.9375 717.25 62.5 645.8125 62.5 558.03125V282.75C62.5 194.9375 133.9375 123.5 221.71875 123.5H778.25C866.0625 123.5 937.5 194.9375 937.5 282.75V558.03125C937.5 645.8125 866.0625 717.25 778.25 717.25H221.71875z" />
     <glyph glyph-name="sitemap"
-      unicode="&#xEA6B;"
+      unicode="&#xEA6F;"
       horiz-adv-x="1000" d="M1000 241V62.0000000000001Q1000 40.0000000000001 984 24.0000000000001T946 8.0000000000001H768Q746 8.0000000000001 730 24.0000000000001T714 62.0000000000001V241.0000000000001Q714 263.0000000000003 730 279.0000000000003T768 294.0000000000003H821.0000000000001V401.0000000000003H536V294.0000000000003H589.0000000000001Q612.0000000000001 294.0000000000003 627.0000000000001 279.0000000000003T643.0000000000001 241.0000000000001V62.0000000000001Q643.0000000000001 40.0000000000001 627.0000000000001 24.0000000000001T589.0000000000001 8.0000000000001H411.0000000000001Q388.0000000000001 8.0000000000001 373.0000000000001 24.0000000000001T357.0000000000001 62.0000000000001V241.0000000000001Q357.0000000000001 263.0000000000003 373.0000000000001 279.0000000000003T411.0000000000001 294.0000000000003H464.0000000000001V401.0000000000003H179.0000000000001V294.0000000000003H232.0000000000001Q254.0000000000001 294.0000000000003 270.0000000000001 279.0000000000003T286.0000000000001 241.0000000000001V62.0000000000001Q286.0000000000001 40.0000000000001 270.0000000000001 24.0000000000001T232.0000000000001 8.0000000000001H54.0000000000001Q31.0000000000001 8.0000000000001 16.0000000000001 24.0000000000001T1e-13 62.0000000000001V241.0000000000001Q1e-13 263.0000000000003 16.0000000000001 279.0000000000003T54.0000000000001 294.0000000000003H107.0000000000001V401.0000000000003Q107.0000000000001 430.0000000000003 128.0000000000001 452.0000000000002T179.0000000000001 473.0000000000002H464V580.0000000000002H411.0000000000001Q388 580.0000000000002 373.0000000000001 595.0000000000002T357.0000000000001 633.0000000000002V812.0000000000002Q357.0000000000001 834.0000000000001 373.0000000000001 850.0000000000002T411.0000000000001 866.0000000000002H589Q612 866.0000000000002 627 850.0000000000002T643 812.0000000000002V633.0000000000002Q643 611.0000000000002 627 595.0000000000002T589 580.0000000000002H535.9999999999999V473.0000000000002H821Q850 473.0000000000002 872 452.0000000000002T893 401.0000000000003V294.0000000000003H946.0000000000002Q969.0000000000002 294.0000000000003 984.0000000000002 279.0000000000003T1000 241.0000000000001z" />
     <glyph glyph-name="stats"
-      unicode="&#xEA6C;"
+      unicode="&#xEA70;"
       horiz-adv-x="1000" d="M447 830H445C200 829 3 630 3 385S202 -60 447 -60C693.0000000000001 -60 892 140 892 385.0000000000001C779 385.0000000000001 447 385.0000000000001 447 385.0000000000001S447 712.0000000000001 447 830.0000000000001zM998 455C998 719 783 934 519 934C517 934 518 454 518 454L998 455z" />
     <glyph glyph-name="support"
-      unicode="&#xEA6D;"
+      unicode="&#xEA71;"
       horiz-adv-x="1000" d="M996 438C996 417 994 397 992 376C991 370.9999999999999 990 365.9999999999999 990 360.9999999999999C987 343.9999999999999 984 327.9999999999999 979 310.9999999999999C978 307.9999999999999 978 304.9999999999999 977 301.9999999999999C965 260.9999999999999 948 221.9999999999999 926.9999999999998 185.9999999999999C883.9999999999999 113.9999999999999 824 53.9999999999999 752 11C716 -10.0000000000001 677 -27.0000000000001 636 -39.0000000000001C633 -40.0000000000001 630 -40.0000000000001 627 -41.0000000000001C611 -45.0000000000001 594 -49.0000000000001 577 -51.0000000000001C572 -52.0000000000001 567 -53.0000000000001 562 -54.0000000000001C541.9999999999999 -56.0000000000001 520.9999999999999 -58.0000000000001 499.9999999999999 -58.0000000000001V-58.0000000000001V-58.0000000000001C478.9999999999999 -58.0000000000001 458.9999999999999 -56.0000000000001 438 -54.0000000000001C433 -53.0000000000001 429 -52.0000000000001 424 -52.0000000000001C407 -49.0000000000001 389.9999999999999 -45.0000000000001 373 -41.0000000000001C371 -40.0000000000001 368 -40.0000000000001 365 -39.0000000000001C324 -27.0000000000001 285 -10.0000000000001 249 11C176 54 116 113.9999999999999 73 186C52 222 35 261 23 302C23 305 22 308 21 311C17 328 12.9999999999999 344 10.9999999999999 361C10 366 8.9999999999999 371 8.9999999999999 376.0000000000001C5.9999999999999 397.0000000000001 3.9999999999999 417.0000000000001 3.9999999999999 438.0000000000001V438.0000000000001V438.0000000000001C3.9999999999999 459.0000000000001 5.9999999999999 480.0000000000001 7.9999999999999 500.0000000000001C8.9999999999999 505.0000000000001 9.9999999999999 510.0000000000001 10.9999999999999 515C12.9999999999999 532.0000000000001 16.9999999999999 548.0000000000001 21 565C22 568 22 571 23 574C35 615 52 654 73 690C116 762 176 822.0000000000001 249 865C284 886 324 903 365 915C367 916 370 916 373 917C390 921 406 925 423 927C428 928 433 929 438 930C458.9999999999999 932 478.9999999999999 934 499.9999999999999 934V934V934C520.9999999999999 934 541.9999999999999 932 562 930C567 929 572 928 577 928C594 925 610 921 627 917C630 916 633 916 636 915C677 903 716 886 752 865C824 822 884 762 927 690C948.0000000000002 654 965.0000000000002 615 977.0000000000002 574C978.0000000000002 571 978.0000000000002 568 979.0000000000002 565C983.0000000000002 549 987.0000000000002 532.0000000000001 989.0000000000002 515C990.0000000000002 510.0000000000001 991.0000000000002 505.0000000000001 992.0000000000002 500.0000000000001C994.0000000000002 480.0000000000001 996.0000000000002 459.0000000000001 996.0000000000002 438.0000000000001V438.0000000000001V438.0000000000001zM212 551L120 643C87 582 66 513 66 438S87 294 120 233L212 325C198 360 190 398 190 438C190 478 198 516 212 551zM500 4C575 4 644 24 705 58L613 150C578 136 540 128 500 128C460 128 422 136 387 150L295.0000000000001 58C356.0000000000001 24 425.0000000000001 4 500 4zM500 872C425 872 356 851 295.0000000000001 818L387 726C422.0000000000001 740 460 748 500 748S578 740 613 726L705 818C643.9999999999999 851 575 872 500 872zM739 501V501C716 587 649 654 563 677V677V677C554.9999999999999 679 546.9999999999999 681 537.9999999999999 682C525.9999999999999 684 512.9999999999999 686 499.9999999999999 686C486.9999999999999 686 473.9999999999999 684 461.9999999999999 682C452.9999999999999 681 445 679 437 677V677V677C351 654 284 587 261 501V501V501C259 493 257 485 256 476C254 463.9999999999999 252 450.9999999999999 252 438C252 425 254 412 256 400C257 391 259 383 261 375V375V375C284 289 351 221.9999999999999 437 198.9999999999999V198.9999999999999V198.9999999999999C445 196.9999999999999 452.9999999999999 194.9999999999999 461.9999999999999 193.9999999999999C474 191.9999999999999 487 189.9999999999999 499.9999999999999 189.9999999999999C512.9999999999999 189.9999999999999 525.9999999999999 191.9999999999999 537.9999999999999 193.9999999999999C546.9999999999999 194.9999999999999 554.9999999999999 196.9999999999999 564 198.9999999999999V198.9999999999999V198.9999999999999C648.9999999999999 221.9999999999999 716 288.9999999999999 738.9999999999999 374.9999999999999V374.9999999999999V374.9999999999999C740.9999999999999 382.9999999999999 742.9999999999999 390.9999999999999 743.9999999999999 399.9999999999999C745.9999999999999 411.9999999999999 747.9999999999999 424.9999999999999 747.9999999999999 437.9999999999999C747.9999999999999 450.9999999999998 745.9999999999999 463.9999999999999 743.9999999999999 475.9999999999998C742.9999999999999 484.9999999999998 740.9999999999999 492.9999999999998 738.9999999999999 500.9999999999998V500.9999999999998zM880 643L788 551C802 516 810 478 810 438S802 360 788 325L880 233C914 294.0000000000001 934 363 934 438C934 513 914 582 880 643z" />
     <glyph glyph-name="swap-arrows"
-      unicode="&#xEA6E;"
+      unicode="&#xEA72;"
       horiz-adv-x="1000" d="M6.821 636L204.087 436L252.975 436L252.975 589.846L991.437 589.846L991.437 682.152L252.975 682.152L252.975 836L204.087 836zM993.179 236L795.884 36L745.282 36L745.282 189.846L6.821 189.846L6.821 282.1520000000001L745.282 282.1520000000001L745.282 436L795.884 436z" />
     <glyph glyph-name="table"
-      unicode="&#xEA6F;"
+      unicode="&#xEA73;"
       horiz-adv-x="937.5" d="M286 169V276Q286 284 281 289T268 294H89Q82 294 76 289T71 276V169Q71 161 76 156T89 151H268Q276 151 281 156T286 169zM286 383V490.9999999999999Q286 497.9999999999999 281 502.9999999999999T268 507.9999999999999H89Q82 507.9999999999999 76 502.9999999999999T71 490.9999999999999V383Q71 376 76 370.9999999999999T89 365.9999999999999H268Q276 365.9999999999999 281 370.9999999999999T286 383zM571 169V276Q571 284 566 289T553.9999999999999 294H375Q367 294 362 289T357 276V169Q357 161 362 156T375 151H553.9999999999999Q561 151 566 156T571 169zM286 598V705Q286 713 281 718T268 723H89Q82 723 76 718T71 705V598Q71 590 76 585T89 580H268Q276 580 281 585T286 598zM571 383V490.9999999999999Q571 497.9999999999999 566 502.9999999999999T553.9999999999999 507.9999999999999H375Q367 507.9999999999999 362 502.9999999999999T357 490.9999999999999V383Q357 376 362 370.9999999999999T375 365.9999999999999H553.9999999999999Q561 365.9999999999999 566 370.9999999999999T571 383zM857 169V276Q857 284 852 289T839 294H661Q653 294 648 289T643 276V169Q643 161 648 156T661 151H839Q847 151 852 156T857 169zM571 598V705Q571 713 566 718T553.9999999999999 723H375Q367 723 362 718T357 705V598Q357 590 362 585T375 580H553.9999999999999Q561 580 566 585T571 598zM857 383V490.9999999999999Q857 497.9999999999999 852 502.9999999999999T839 507.9999999999999H661Q653 507.9999999999999 648 502.9999999999999T643 490.9999999999999V383Q643 376 648 370.9999999999999T661 365.9999999999999H839Q847 365.9999999999999 852 370.9999999999999T857 383zM857 598V705Q857 713 852 718T839 723H661Q653 723 648 718T643 705V598Q643 590 648 585T661 580H839Q847 580 852 585T857 598zM929 776V169Q929 132 902 105.9999999999999T839 79.9999999999999H89Q53 79.9999999999999 26 105.9999999999999T0 168.9999999999999V775.9999999999999Q0 812.9999999999999 26 838.9999999999999T89 865.9999999999999H839Q876 865.9999999999999 901.9999999999998 838.9999999999999T928.9999999999998 775.9999999999999z" />
     <glyph glyph-name="trash"
-      unicode="&#xEA70;"
-      horiz-adv-x="781.25" d="M286 526V205Q286 197 281 192T268 187H232Q224 187 219 192T214 205V526Q214 534 219 539T232 544H268Q276 544 281 539T286 526zM429 526V205Q429 197 424 192T411 187H375Q367 187 362 192T357 205V526Q357 534 362 539T375 544H411Q419 544 424 539T429 526zM571 526V205Q571 197 566 192T553.9999999999999 187H517.9999999999999Q509.9999999999999 187 504.9999999999999 192T499.9999999999999 205V526Q499.9999999999999 534 504.9999999999999 539T517.9999999999999 544H553.9999999999999Q561 544 566 539T571 526zM643 122V651H143V122Q143 110 147 100T155 85T161 80H625Q627 80 631 85T639 100T643 122zM268 723H518L491 788Q487 793 482 794H305Q299 793 295 788zM786 705V669Q786 661 781 656T768 651H714V122Q714 75.9999999999999 688 42T625 8H161Q124 8 98 41T71 119.9999999999999V651H18Q10 651 5 656T0 669V705Q0 713 5 718T18 723H190L229 816Q238 837 260 851T304 866H482Q504 866 526 851T556 816L595.0000000000001 723H768Q776 723 781 718T786 705z" />
+      unicode="&#xEA74;"
+      horiz-adv-x="875" d="M264.0625 901.4296875C274.609375 922.71875 296.2890625 936 319.921875 936H555.078125C578.7109375 936 600.390625 922.71875 610.9375 901.4296875L625 873.5H812.5C847.0703125 873.5 875 845.5703125 875 811S847.0703125 748.5 812.5 748.5H62.5C27.9296875 748.5 0 776.4296875 0 811S27.9296875 873.5 62.5 873.5H250L264.0625 901.4296875zM62.5 686H812.5V61C812.5 -7.9453125 756.4453125 -64 687.5 -64H187.5C118.5546875 -64 62.5 -7.9453125 62.5 61V686zM250 561C232.8125 561 218.75 546.9375 218.75 529.75V92.25C218.75 75.0625 232.8125 61 250 61S281.25 75.0625 281.25 92.25V529.75C281.25 546.9375 267.1875 561 250 561zM437.5 561C420.3125 561 406.25 546.9375 406.25 529.75V92.25C406.25 75.0625 420.3125 61 437.5 61S468.75 75.0625 468.75 92.25V529.75C468.75 546.9375 454.6875 561 437.5 561zM625 561C607.8125 561 593.75 546.9375 593.75 529.75V92.25C593.75 75.0625 607.8125 61 625 61S656.25 75.0625 656.25 92.25V529.75C656.25 546.9375 642.1875 561 625 561z" />
+    <glyph glyph-name="trophy"
+      unicode="&#xEA75;"
+      horiz-adv-x="1000" d="M812.5 748.5V873.5H187.5V748.5H0V623.5C0 519.9375 83.9375 436 187.5 436C207.09375 436 226 439 243.78125 444.59375C288.875 380.125 357.65625 333.46875 437.5 317.25V123.5H375C305.96875 123.5 250 67.53125 250 -1.5H750C750 67.53125 694.03125 123.5 625 123.5H562.5V317.25C642.34375 333.4687499999999 711.125 380.125 756.2187499999999 444.59375C773.96875 439 792.875 436 812.4999999999999 436C916.0624999999998 436 999.9999999999998 519.9375 999.9999999999998 623.5V748.5H812.4999999999999zM187.5 510.21875C125.03125 510.21875 74.21875 561.03125 74.21875 623.5V686H187.5V623.5C187.5 584.25 194.75 546.71875 207.96875 512.09375C201.3125 510.875 194.5 510.21875 187.5 510.21875zM925.78125 623.5C925.78125 561.03125 874.96875 510.21875 812.5 510.21875C805.5 510.21875 798.6875 510.875 792.03125 512.09375C805.2499999999999 546.6875 812.5 584.25 812.5 623.5V686H925.78125V623.5z" />
     <glyph glyph-name="up-1"
-      unicode="&#xEA71;"
+      unicode="&#xEA76;"
       horiz-adv-x="937.5" d="M18 439L464 884L911 439L752 280L576.0000000000001 456.9999999999999V-10.0000000000001H353.0000000000001V456.9999999999999L176.0000000000001 280z" />
     <glyph glyph-name="up-circled"
-      unicode="&#xEA72;"
+      unicode="&#xEA77;"
       horiz-adv-x="843.75" d="M624 448Q619 437 607 437H500V240.9999999999999Q500 232.9999999999999 495 227.9999999999999T482 222.9999999999999H375Q367 222.9999999999999 362 227.9999999999999T357 240.9999999999999V437H250Q242 437 237 442T232 454.9999999999999Q232 461.9999999999999 238 468L416 646Q422 651 429 651T441 646L620 468Q628 458.9999999999999 624 448zM429 741Q346 741 276 700T166 589T125 437T166 285T276 174T429.0000000000001 133T581.0000000000001 174T691.0000000000001 285T732.0000000000001 437T691.0000000000001 589T581.0000000000001 700T429.0000000000001 741zM857 437Q857 320 799.9999999999999 222T643.9999999999999 66T429 8T213 66T57.9999999999999 222T-1e-13 437T57.9999999999999 652T213 808T429 866T643.9999999999999 808T799.9999999999999 652T857 437z" />
     <glyph glyph-name="up-dir"
-      unicode="&#xEA73;"
+      unicode="&#xEA78;"
       horiz-adv-x="562.5" d="M571 258Q571 243.9999999999999 561 232.9999999999999T535.9999999999999 222.9999999999999H35.9999999999999Q20.9999999999999 222.9999999999999 10.9999999999999 232.9999999999999T-1e-13 258T10.9999999999999 284L260.9999999999999 534Q270.9999999999999 544 286 544T311 534L561 284Q571 273 571 258z" />
     <glyph glyph-name="up-open"
-      unicode="&#xEA74;"
+      unicode="&#xEA79;"
       horiz-adv-x="1000" d="M0 261L500 761L1000 261L852 112.9999999999999L500 463.9999999999999L148 112.9999999999999z" />
     <glyph glyph-name="up"
-      unicode="&#xEA75;"
+      unicode="&#xEA7A;"
       horiz-adv-x="437.5" d="M427 662Q422 651 411 651H286V-45Q286 -53 281 -58T268 -63H161Q153 -63 148 -58T143 -45V651H18Q6 651 2 662T5 681L200 896Q205 901 213 901Q220 901 226 896L424 681Q431 672 427 662z" />
     <glyph glyph-name="user"
-      unicode="&#xEA76;"
+      unicode="&#xEA7B;"
       horiz-adv-x="1000" d="M648 -61H274C171 -61 88 22 88 126V126C107 239.9999999999999 184 335.9999999999999 281 390C239.0000000000001 434 212 494.9999999999999 212 561V686C212 823 323 935 461 935S710 823 710 686V561C710 495 682.9999999999999 434 641 390C738 335.9999999999999 815 239.9999999999999 834.0000000000001 126V126C834.0000000000001 22 751.0000000000001 -61.0000000000001 648.0000000000001 -61.0000000000001zM585 561V686C585 754 529.9999999999999 810 460.9999999999999 810S337 754 337 686V561C337 493 392 437 460.9999999999999 437S585 493 585 561zM710 126C681.9999999999999 232.9999999999999 577 311.9999999999999 460.9999999999999 311.9999999999999V311.9999999999999V311.9999999999999C345 311.9999999999999 240 232.9999999999999 212 126V126C212 90.9999999999999 240 63 274 63H647C682 63 710 91 710 126V126z" />
     <glyph glyph-name="users"
-      unicode="&#xEA77;"
+      unicode="&#xEA7C;"
       horiz-adv-x="1000" d="M802 394C899 339.9999999999999 976 243.9999999999999 995.0000000000002 131C995.0000000000002 28 912.0000000000002 -55.0000000000001 809.0000000000001 -55.0000000000001H723.0000000000002C760.0000000000002 -23.0000000000001 787.0000000000001 19.9999999999999 800.0000000000001 68.9999999999999H809.0000000000001C843.0000000000002 68.9999999999999 871.0000000000002 95.9999999999999 871.0000000000002 130.9999999999999C855.0000000000002 192.9999999999999 813.0000000000001 243.9999999999998 758.0000000000002 277.9999999999999C729.0000000000002 327.9999999999999 690.0000000000001 372.9999999999999 643.0000000000002 409.9999999999999C650.0000000000002 421.9999999999999 656.0000000000002 434.9999999999999 661.0000000000002 447.9999999999999C711.0000000000003 463.9999999999999 747.0000000000002 509.9999999999998 747.0000000000002 564.9999999999998V688.9999999999998C747.0000000000002 743.9999999999998 711.0000000000002 789.9999999999998 661.0000000000002 805.9999999999998C641.0000000000002 854.9999999999998 608.0000000000002 897.9999999999998 567.0000000000002 929.9999999999998C585.0000000000003 933.9999999999998 604.0000000000003 936.9999999999998 623.0000000000003 936.9999999999998C760.0000000000003 936.9999999999998 871.0000000000003 825.9999999999998 871.0000000000003 688.9999999999998V564.9999999999998C871.0000000000003 497.9999999999998 844.0000000000003 437.9999999999999 802.0000000000002 393.9999999999999zM561 -55H189.0000000000001C86.0000000000001 -55 3.0000000000001 28 3.0000000000001 131.0000000000001V131.0000000000001C22.0000000000001 245 98.0000000000001 340 196.0000000000001 394.0000000000001C153.0000000000001 438.0000000000001 127.0000000000001 498.0000000000001 127.0000000000001 565.0000000000001V689.0000000000001C127.0000000000001 826.0000000000001 238.0000000000001 937.0000000000002 375.0000000000001 937.0000000000002S623 826.0000000000001 623 689.0000000000001V565.0000000000001C623 499.0000000000001 596 439.0000000000001 554 394.0000000000001C651 340 728 245 747.0000000000001 131.0000000000001V131.0000000000001C747.0000000000001 28.0000000000001 664.0000000000001 -54.9999999999999 561.0000000000001 -54.9999999999999zM499 565V689C499 757 443 813 375 813C306 813 251 757 251 689V565C251 496 306 441 375 441C443 441 499 496 499 565zM623 131C595 237.9999999999999 490 317 375 317V317V317C259 317 154 238 127 131.0000000000001V131.0000000000001C127 96 154 69 189 69H561C595 69 623 96 623 131.0000000000001V131.0000000000001z" />
     <glyph glyph-name="vertical-ellipsis"
-      unicode="&#xEA78;"
+      unicode="&#xEA7D;"
       horiz-adv-x="1000" d="M214.2857142857143 96.7142857142857V-10.4285714285714Q214.2857142857143 -32.75 198.6607142857143 -48.375T160.7142857142857 -64H53.5714285714286Q31.25 -64 15.625 -48.375T0 -10.4285714285714V96.7142857142857Q0 119.0357142857142 15.625 134.6607142857142T53.5714285714286 150.2857142857142H160.7142857142857Q183.0357142857143 150.2857142857142 198.6607142857143 134.6607142857142T214.2857142857143 96.7142857142857zM214.2857142857143 382.4285714285715V275.2857142857142Q214.2857142857143 252.9642857142857 198.6607142857143 237.3392857142857T160.7142857142857 221.7142857142857H53.5714285714286Q31.25 221.7142857142857 15.625 237.3392857142857T0 275.2857142857142V382.4285714285715Q0 404.75 15.625 420.375T53.5714285714286 436H160.7142857142857Q183.0357142857143 436 198.6607142857143 420.375T214.2857142857143 382.4285714285715zM214.2857142857143 668.1428571428571V561Q214.2857142857143 538.6785714285714 198.6607142857143 523.0535714285714T160.7142857142857 507.4285714285714H53.5714285714286Q31.25 507.4285714285714 15.625 523.0535714285714T0 561V668.1428571428571Q0 690.4642857142857 15.625 706.0892857142857T53.5714285714286 721.7142857142858H160.7142857142857Q183.0357142857143 721.7142857142858 198.6607142857143 706.0892857142857T214.2857142857143 668.1428571428571z" />
     <glyph glyph-name="wrench"
-      unicode="&#xEA79;"
+      unicode="&#xEA7E;"
       horiz-adv-x="1000" d="M987.71875 759.65625L830.75 602.6875H666.6875V769.3125L821.71875 924.28125C798.78125 931.1875 775.09375 936 749.9375 936C611.9375 936 500 824 500 686C500 647.5 509.4062499999999 611.46875 525.03125 578.8125L24.40625 78.34375C9.40625 63.1875 0 42.4375 0 19.25C0 -26.65625 37.21875 -64 83.375 -64C106.4375 -64 127.3125 -54.71875 142.21875 -39.59375L642.9374999999999 460.96875C675.46875 445.46875 711.5937499999999 436 749.9374999999999 436C888.1249999999999 436 999.9374999999998 548 999.9374999999998 686C999.9374999999998 711.8125 995.0625 736.21875 987.71875 759.65625z" />
     <glyph glyph-name="wrench2"
-      unicode="&#xEA7A;"
+      unicode="&#xEA7F;"
       horiz-adv-x="1000" d="M250 114.5714285714286Q250 129.0803571428571 239.3973214285715 139.6830357142857T214.2857142857143 150.2857142857142T189.1741071428572 139.6830357142857T178.5714285714286 114.5714285714286T189.1741071428572 89.4598214285715T214.2857142857143 78.8571428571429T239.3973214285715 89.4598214285715T250 114.5714285714286zM609.375 348.9464285714286L228.7946428571429 -31.6339285714286Q208.1473214285715 -52.28125 178.5714285714286 -52.28125Q149.5535714285715 -52.28125 127.7901785714286 -31.6339285714286L68.6383928571429 28.6339285714286Q47.4330357142857 48.7232142857142 47.4330357142857 78.8571428571429Q47.4330357142857 108.4330357142857 68.6383928571429 129.6383928571429L448.6607142857143 509.6607142857143Q470.4241071428572 454.9732142857143 512.5558035714286 412.8415178571429T609.375 348.9464285714286zM963.1696428571428 591.6919642857142Q963.1696428571428 569.9285714285714 950.3348214285714 532.5401785714286Q924.1071428571428 457.7633928571428 858.5379464285714 411.1674107142857T714.2857142857143 364.5714285714286Q611.0491071428571 364.5714285714286 537.6674107142858 437.953125T464.2857142857143 614.5714285714286T537.6674107142858 791.1897321428571T714.2857142857143 864.5714285714286Q746.6517857142858 864.5714285714286 782.0870535714286 855.3638392857142T842.0758928571429 829.4151785714286Q851.0044642857143 823.2767857142857 851.0044642857143 813.7901785714286T842.0758928571429 798.1651785714286L678.5714285714286 703.8571428571429V578.8571428571429L786.2723214285714 519.1473214285714Q789.0625 520.8214285714286 830.3571428571429 546.2120535714286T905.9709821428572 591.4129464285714T945.3125 611.2232142857142Q953.6830357142858 611.2232142857142 958.4263392857144 605.6428571428571T963.1696428571428 591.6919642857142z" />
   </font>
 </defs>
diff --git a/assets/fonts/fauxtonicon7.symbol.svg b/assets/fonts/fauxtonicon9.symbol.svg
similarity index 96%
rename from assets/fonts/fauxtonicon7.symbol.svg
rename to assets/fonts/fauxtonicon9.symbol.svg
index 0a4a455..6a5b369 100644
--- a/assets/fonts/fauxtonicon7.symbol.svg
+++ b/assets/fonts/fauxtonicon9.symbol.svg
@@ -14,7 +14,17 @@
 <g>
 </g>
 	<path d="M9.152 22.24v4q0 0.48-0.352 0.8t-0.8 0.352h-4.576q-0.448 0-0.8-0.352t-0.352-0.8v-4q0-0.448 0.352-0.8t0.8-0.32h4.576q0.48 0 0.8 0.32t0.352 0.8zM9.664 3.392l-0.48 13.728q-0.032 0.448-0.384 0.8t-0.8 0.32h-4.576q-0.448 0-0.8-0.32t-0.384-0.8l-0.48-13.728q-0.032-0.448 0.288-0.8t0.8-0.352h5.728q0.448 0 0.8 0.352t0.288 0.8z" fill="#000000"></path>
-</symbol><symbol id="fonticon-attention-circled"></symbol><symbol id="fonticon-bell"></symbol><symbol id="fonticon-block"></symbol><symbol id="fonticon-bookmark-ribbon-wplus"></symbol><symbol id="fonticon-bookmark"></symbol><symbol id="fonticon-burger"></symbol><symbol id="fonticon-cancel-circled"></symbol><symbol id="fonticon-cancel-circled2"></symbol><symbol id="fonticon-cancel"></symbol><symbol id="fonticon-circle-empty"></symbol><symbol id="fonticon-clipboard"></symbol><symbol id="fonticon-clock"></symbol><symbol id="fonticon-cog"></symbol><symbol id="fonticon-collapse"></symbol><symbol id="fonticon-cw"></symbol><symbol id="fonticon-dashboard"></symbol><symbol id="fonticon-database"></symbol><symbol id="fonticon-deselect-all"></symbol><symbol id="fonticon-document"></symbol><symbol id="fonticon-documents"></symbol><symbol id="fonticon-dot-circled"></symbol><symbol id="fonticon-down-1"></symbol><symbol id="fonticon-down-circled"></symbol><symbol id="fonticon-down-dir"></symbol><symbol id="fonticon-down-open"></symbol><symbol id="fonticon-down"></symbol><symbol id="fonticon-drop-down-dots"></symbol><symbol id="fonticon-exchange"></symbol><symbol id="fonticon-expand"></symbol><symbol id="fonticon-eye"></symbol><symbol viewBox="0 0 1792 1792" id="fonticon-file-code-o"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-928-896q8-11 21-12.5t24 6.5l51 38q11 8 12.5 21t-6.5 24l-182 243 182 243q8 11 6.5 24t-12.5 21l-51 38q-11 8-24 6.5t-21-12.5l-226-301q-14-19 0-38zm802 301q14 19 0 38l-226 301q-8 11-21 12.5t-24-6.5l-51-38q-11-8-12.5-21t6.5-24l182-243-182-243q-8-11-6.5-24t12.5-21l51-38q11-8 24-6.5t21 12.5zm-620 461q-13-2-20.5-13t-5.5-24l138-831q2-13 13-20.5t24-5.5l63 10q13 2 20.5 13t5.5 24l-138 831q-2 13-13 20.5t-24 5.5z"></path></symbol><symbol viewBox="0 0 1792 1792" id="fonticon-files-o"><path d="M1696 384q40 0 68 28t28 68v1216q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-288h-544q-40 0-68-28t-28-68v-672q0-40 20-88t48-76l408-408q28-28 76-48t88-20h416q40 0 68 28t28 68v328q68-40 128-40h416zm-544 213l-299 299h299v-299zm-640-384l-299 299h299v-299zm196 647l316-316v-416h-384v416q0 40-28 68t-68 28h-416v640h512v-256q0-40 20-88t48-76zm956 804v-1152h-384v416q0 40-28 68t-68 28h-416v640h896z"></path></symbol><symbol viewBox="0 0 1792 1792" id="fonticon-filter"><path d="M1595 295q17 41-14 70l-493 493v742q0 42-39 59-13 5-25 5-27 0-45-19l-256-256q-19-19-19-45v-486l-493-493q-31-29-14-70 17-39 59-39h1280q42 0 59 39z"></path></symbol><symbol id="fonticon-gears"></symbol><symbol id="fonticon-help-circled"></symbol><symbol id="fonticon-help"></symbol><symbol id="fonticon-info-circled"></symbol><symbol id="fonticon-json"></symbol><symbol id="fonticon-key"></symbol><symbol id="fonticon-left-1"></symbol><symbol id="fonticon-left-circled"></symbol><symbol id="fonticon-left-dir"></symbol><symbol id="fonticon-left-open"></symbol><symbol id="fonticon-left"></symbol><symbol id="fonticon-link"></symbol><symbol id="fonticon-list-alt"></symbol><symbol id="fonticon-lock"></symbol><symbol id="fonticon-mail-alt"></symbol><symbol id="fonticon-mail"></symbol><symbol id="fonticon-map"></symbol><symbol id="fonticon-map2"></symbol><symbol id="fonticon-megaphone"></symbol><symbol id="fonticon-menu"></symbol><symbol id="fonticon-menu_close"></symbol><symbol id="fonticon-minus-circled"></symbol><symbol id="fonticon-minus-circled2"></symbol><symbol id="fonticon-minus-squared-alt"></symbol><symbol id="fonticon-minus-squared"></symbol><symbol id="fonticon-minus"></symbol><symbol id="fonticon-mixer"></symbol><symbol id="fonticon-new-database"></symbol><symbol id="fonticon-ok-circled-2"></symbol><symbol id="fonticon-ok-circled"></symbol><symbol id="fonticon-ok"></symbol><symbol viewBox="0 0 1000 1000" id="fonticon-paperclip">
+</symbol><symbol id="fonticon-attention-circled"></symbol><symbol id="fonticon-bell"></symbol><symbol id="fonticon-block"></symbol><symbol id="fonticon-bookmark-ribbon-wplus"></symbol><symbol id="fonticon-bookmark"></symbol><symbol id="fonticon-burger"></symbol><symbol id="fonticon-cancel-circled"></symbol><symbol id="fonticon-cancel-circled2"></symbol><symbol id="fonticon-cancel"></symbol><symbol id="fonticon-circle-empty"></symbol><symbol id="fonticon-clipboard"></symbol><symbol id="fonticon-clock"></symbol><symbol viewBox="0 0 448 512" id="fonticon-code-branch"><!--! Font Awesome Free 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M80 104c13.3 0 24-10.7 24-24s-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM80 456c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z"></path></symbol><symbol id="fonticon-cog"></symbol><symbol id="fonticon-collapse"></symbol><symbol viewBox="0 0 512 512" id="fonticon-columns"><path d="M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z"></path></symbol><symbol viewBox="0 0 448 512" id="fonticon-copy"><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"></path></symbol><symbol id="fonticon-cw"></symbol><symbol id="fonticon-dashboard"></symbol><symbol id="fonticon-database"></symbol><symbol id="fonticon-deselect-all"></symbol><symbol id="fonticon-document"></symbol><symbol id="fonticon-documents"></symbol><symbol id="fonticon-dot-circled"></symbol><symbol id="fonticon-down-1"></symbol><symbol id="fonticon-down-circled"></symbol><symbol id="fonticon-down-dir"></symbol><symbol id="fonticon-down-open"></symbol><symbol id="fonticon-down"></symbol><symbol id="fonticon-drop-down-dots"></symbol><symbol id="fonticon-exchange"></symbol><symbol id="fonticon-expand"></symbol><symbol id="fonticon-eye"></symbol><symbol viewBox="0 0 1792 1792" id="fonticon-file-code-o"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-928-896q8-11 21-12.5t24 6.5l51 38q11 8 12.5 21t-6.5 24l-182 243 182 243q8 11 6.5 24t-12.5 21l-51 38q-11 8-24 6.5t-21-12.5l-226-301q-14-19 0-38zm802 301q14 19 0 38l-226 301q-8 11-21 12.5t-24-6.5l-51-38q-11-8-12.5-21t6.5-24l182-243-182-243q-8-11-6.5-24t12.5-21l51-38q11-8 24-6.5t21 12.5zm-620 461q-13-2-20.5-13t-5.5-24l138-831q2-13 13-20.5t24-5.5l63 10q13 2 20.5 13t5.5 24l-138 831q-2 13-13 20.5t-24 5.5z"></path></symbol><symbol viewBox="0 0 1792 1792" id="fonticon-files-o"><path d="M1696 384q40 0 68 28t28 68v1216q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-288h-544q-40 0-68-28t-28-68v-672q0-40 20-88t48-76l408-408q28-28 76-48t88-20h416q40 0 68 28t28 68v328q68-40 128-40h416zm-544 213l-299 299h299v-299zm-640-384l-299 299h299v-299zm196 647l316-316v-416h-384v416q0 40-28 68t-68 28h-416v640h512v-256q0-40 20-88t48-76zm956 804v-1152h-384v416q0 40-28 68t-68 28h-416v640h896z"></path></symbol><symbol viewBox="0 0 1792 1792" id="fonticon-filter"><path d="M1595 295q17 41-14 70l-493 493v742q0 42-39 59-13 5-25 5-27 0-45-19l-256-256q-19-19-19-45v-486l-493-493q-31-29-14-70 17-39 59-39h1280q42 0 59 39z"></path></symbol><symbol id="fonticon-gears"></symbol><symbol id="fonticon-help-circled"></symbol><symbol id="fonticon-help"></symbol><symbol id="fonticon-info-circled"></symbol><symbol id="fonticon-json"></symbol><symbol id="fonticon-key"></symbol><symbol id="fonticon-left-1"></symbol><symbol id="fonticon-left-circled"></symbol><symbol id="fonticon-left-dir"></symbol><symbol id="fonticon-left-open"></symbol><symbol id="fonticon-left"></symbol><symbol id="fonticon-link"></symbol><symbol id="fonticon-list-alt"></symbol><symbol id="fonticon-lock"></symbol><symbol id="fonticon-mail-alt"></symbol><symbol id="fonticon-mail"></symbol><symbol id="fonticon-map"></symbol><symbol id="fonticon-map2"></symbol><symbol id="fonticon-megaphone"></symbol><symbol viewBox="0 0 768 768" id="fonticon-menu">
+<title></title>
+<g id="icomoon-ignore">
+</g>
+<path fill="#000" d="M0 127.998h768v85.999h-768v-85.999zM0 426v-84h768v84h-768zM0 640.002v-85.999h768v85.999h-768z"></path>
+</symbol><symbol viewBox="0 0 768 768" id="fonticon-menu_close">
+<title></title>
+<g id="icomoon-ignore">
+</g>
+<path fill="#000" d="M768 229.995l-59.999-59.999-214.006 214.006 214.006 214.006 59.999-59.999-152-154.005zM0 640.005h554.001v-86h-554.001v85.999zM0 342.001v83.999h426.001v-83.998h-426.001zM0 127.995v86h554.001v-85.999h-554.001z"></path>
+</symbol><symbol id="fonticon-minus-circled"></symbol><symbol id="fonticon-minus-circled2"></symbol><symbol id="fonticon-minus-squared-alt"></symbol><symbol id="fonticon-minus-squared"></symbol><symbol id="fonticon-minus"></symbol><symbol id="fonticon-mixer"></symbol><symbol id="fonticon-new-database"></symbol><symbol id="fonticon-ok-circled-2"></symbol><symbol id="fonticon-ok-circled"></symbol><symbol id="fonticon-ok"></symbol><symbol viewBox="0 0 1000 1000" id="fonticon-paperclip">
 <g id="Layer_1" display="none">
 	<g id="Layer_1_3_">
 		<g id="Layer_1_2_" display="inline">
@@ -1373,6 +1383,8 @@
 			l153.947-153.947l87.016,87.047L647.143,892.064C583.221,956.051,498.204,991.438,407.745,991.438z"></path>
 	</g>
 </g>
+</symbol><symbol viewBox="0 0 32 32" id="fonticon-paste">
+<path d="M22 4h-4v-2c0-1.1-0.9-2-2-2h-4c-1.1 0-2 0.9-2 2v2h-4v4h16v-4zM16 4h-4v-1.996c0.001-0.001 0.002-0.002 0.004-0.004h3.993c0.001 0.001 0.003 0.002 0.004 0.004v1.996zM26 10v-5c0-0.55-0.45-1-1-1h-2v2h1v4h-6l-6 6v8h-8v-18h1v-2h-2c-0.55 0-1 0.45-1 1v20c0 0.55 0.45 1 1 1h9v6h20v-22h-6zM18 12.828v3.172h-3.172l3.172-3.172zM30 30h-16v-12h6v-6h10v18z"></path>
 </symbol><symbol id="fonticon-pencil"></symbol><symbol id="fonticon-picture"></symbol><symbol id="fonticon-play"></symbol><symbol id="fonticon-plus-circled"></symbol><symbol id="fonticon-plus-circled2"></symbol><symbol id="fonticon-plus-squared-alt"></symbol><symbol id="fonticon-plus-squared"></symbol><symbol id="fonticon-plus"></symbol><symbol id="fonticon-popin"></symbol><symbol id="fonticon-popout"></symbol><symbol id="fonticon-profile"></symbol><symbol id="fonticon-replicate"></symbol><symbol id="fonticon-reply-all"></symbol><symbol id="fonticon-reply"></symbol><symbol id="fonticon-resize-full-reverse"></symbol><symbol id="fonticon-resize-full"></symbol><symbol id="fonticon-resize-small-reverse"></symbol><symbol id="fonticon-resize-small"></symbol><symbol id="fonticon-right-1"></symbol><symbol id="fonticon-right-circled"></symbol><symbol id="fonticon-right-dir"></symbol><symbol id="fonticon-right-open"></symbol><symbol id="fonticon-right"></symbol><symbol id="fonticon-save"></symbol><symbol id="fonticon-search"></symbol><symbol id="fonticon-select-all"></symbol><symbol id="fonticon-sidenav-filter-function"></symbol><symbol id="fonticon-sidenav-info"></symbol><symbol id="fonticon-sidenav-list-function"></symbol><symbol id="fonticon-sidenav-map-reduce"></symbol><symbol id="fonticon-sidenav-search"></symbol><symbol id="fonticon-sidenav-show-function"></symbol><symbol id="fonticon-sidenav-update-function"></symbol><symbol id="fonticon-sitemap"></symbol><symbol id="fonticon-stats"></symbol><symbol id="fonticon-support"></symbol><symbol viewBox="0 0 1000 1000" id="fonticon-swap-arrows">
 <g id="Layer_1_3_" display="none">
 	<g id="Layer_1_2_" display="inline">
@@ -2686,4 +2698,6 @@
 	<polygon points="993.179,700 795.884,900 745.282,900 745.282,746.154 6.821,746.154 6.821,653.848 745.282,653.848 745.282,500 
 		795.884,500 	"></polygon>
 </g>
-</symbol><symbol id="fonticon-table"></symbol><symbol id="fonticon-trash"></symbol><symbol id="fonticon-up-1"></symbol><symbol id="fonticon-up-circled"></symbol><symbol id="fonticon-up-dir"></symbol><symbol id="fonticon-up-open"></symbol><symbol id="fonticon-up"></symbol><symbol id="fonticon-user"></symbol><symbol id="fonticon-users"></symbol><symbol id="fonticon-vertical-ellipsis"></symbol><symbol id="fonticon-wrench"></symbol><symbol viewBox="0 0 1792 1792" id="fonticon-wrench2"><path d="M448 1472q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm644-420l-682 682q-37 37-90 37-52 0-91-37l-106-108q-38-36-38-90 0-53 38-91l681-681q39 98 114.5 173.5t173.5 114.5zm634-435q0 39-23 106-47 134-164.5 217.5t-258.5 83.5q-185 0-316.5-131.5t-131.5-316.5 131.5-316.5 316.5-131.5q58 0 121.5 16.5t107.5 46.5q16 11 16 28t-16 28l-293 169v224l193 107q5-3 79-48.5t135.5-81 70.5-35.5q15 0 23.5 10t8.5 25z" fill="#fff"></path></symbol></svg>
\ No newline at end of file
+</symbol><symbol id="fonticon-table"></symbol><symbol viewBox="0 0 448 512" id="fonticon-trash"><path d="M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z"></path></symbol><symbol viewBox="0 0 32 32" id="fonticon-trophy">
+<path d="M26 6v-4h-20v4h-6v4c0 3.314 2.686 6 6 6 0.627 0 1.232-0.096 1.801-0.275 1.443 2.063 3.644 3.556 6.199 4.075v6.2h-2c-2.209 0-4 1.791-4 4h16c0-2.209-1.791-4-4-4h-2v-6.2c2.555-0.519 4.756-2.012 6.199-4.075 0.568 0.179 1.173 0.275 1.801 0.275 3.314 0 6-2.686 6-6v-4h-6zM6 13.625c-1.999 0-3.625-1.626-3.625-3.625v-2h3.625v2c0 1.256 0.232 2.457 0.655 3.565-0.213 0.039-0.431 0.060-0.655 0.060zM29.625 10c0 1.999-1.626 3.625-3.625 3.625-0.224 0-0.442-0.021-0.655-0.060 0.423-1.107 0.655-2.309 0.655-3.565v-2h3.625v2z"></path>
+</symbol><symbol id="fonticon-up-1"></symbol><symbol id="fonticon-up-circled"></symbol><symbol id="fonticon-up-dir"></symbol><symbol id="fonticon-up-open"></symbol><symbol id="fonticon-up"></symbol><symbol id="fonticon-user"></symbol><symbol id="fonticon-users"></symbol><symbol id="fonticon-vertical-ellipsis"></symbol><symbol id="fonticon-wrench"></symbol><symbol viewBox="0 0 1792 1792" id="fonticon-wrench2"><path d="M448 1472q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm644-420l-682 682q-37 37-90 37-52 0-91-37l-106-108q-38-36-38-90 0-53 38-91l681-681q39 98 114.5 173.5t173.5 114.5zm634-435q0 39-23 106-47 134-164.5 217.5t-258.5 83.5q-185 0-316.5-131.5t-131.5-316.5 131.5-316.5 316.5-131.5q58 0 121.5 16.5t107.5 46.5q16 11 16 28t-16 28l-293 169v224l193 107q5-3 79-48.5t135.5-81 70.5-35.5q15 0 23.5 10t8.5 25z" fill="#fff"></path></symbol></svg>
\ No newline at end of file
diff --git a/assets/fonts/fauxtonicon7.eot b/assets/fonts/fauxtonicon9.ttf
similarity index 80%
rename from assets/fonts/fauxtonicon7.eot
rename to assets/fonts/fauxtonicon9.ttf
index bf0d831..f1deeb4 100644
--- a/assets/fonts/fauxtonicon7.eot
+++ b/assets/fonts/fauxtonicon9.ttf
Binary files differ
diff --git a/assets/fonts/fauxtonicon9.woff b/assets/fonts/fauxtonicon9.woff
new file mode 100644
index 0000000..6f3b2e7
--- /dev/null
+++ b/assets/fonts/fauxtonicon9.woff
Binary files differ
diff --git a/assets/fonts/fauxtonicon9.woff2 b/assets/fonts/fauxtonicon9.woff2
new file mode 100644
index 0000000..fcb02af
--- /dev/null
+++ b/assets/fonts/fauxtonicon9.woff2
Binary files differ
diff --git a/assets/fonts/fontawesome-webfont.eot b/assets/fonts/fontawesome-webfont.eot
deleted file mode 100755
index 0662cb9..0000000
--- a/assets/fonts/fontawesome-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/assets/fonts/fontawesome-webfont.svg b/assets/fonts/fontawesome-webfont.svg
deleted file mode 100755
index 2edb4ec..0000000
--- a/assets/fonts/fontawesome-webfont.svg
+++ /dev/null
@@ -1,399 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="fontawesomeregular" horiz-adv-x="1536" >
-<font-face units-per-em="1792" ascent="1536" descent="-256" />
-<missing-glyph horiz-adv-x="448" />
-<glyph unicode=" "  horiz-adv-x="448" />
-<glyph unicode="&#x09;" horiz-adv-x="448" />
-<glyph unicode="&#xa0;" horiz-adv-x="448" />
-<glyph unicode="&#xa8;" horiz-adv-x="1792" />
-<glyph unicode="&#xa9;" horiz-adv-x="1792" />
-<glyph unicode="&#xae;" horiz-adv-x="1792" />
-<glyph unicode="&#xb4;" horiz-adv-x="1792" />
-<glyph unicode="&#xc6;" horiz-adv-x="1792" />
-<glyph unicode="&#x2000;" horiz-adv-x="768" />
-<glyph unicode="&#x2001;" />
-<glyph unicode="&#x2002;" horiz-adv-x="768" />
-<glyph unicode="&#x2003;" />
-<glyph unicode="&#x2004;" horiz-adv-x="512" />
-<glyph unicode="&#x2005;" horiz-adv-x="384" />
-<glyph unicode="&#x2006;" horiz-adv-x="256" />
-<glyph unicode="&#x2007;" horiz-adv-x="256" />
-<glyph unicode="&#x2008;" horiz-adv-x="192" />
-<glyph unicode="&#x2009;" horiz-adv-x="307" />
-<glyph unicode="&#x200a;" horiz-adv-x="85" />
-<glyph unicode="&#x202f;" horiz-adv-x="307" />
-<glyph unicode="&#x205f;" horiz-adv-x="384" />
-<glyph unicode="&#x2122;" horiz-adv-x="1792" />
-<glyph unicode="&#x221e;" horiz-adv-x="1792" />
-<glyph unicode="&#x2260;" horiz-adv-x="1792" />
-<glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
-<glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
-<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
-<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
-<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
-<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
-<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
-<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
-<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
-<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
-<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
-<glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
-<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
-<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
-<glyph unicode="&#xf016;" horiz-adv-x="1280" d="M128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280zM768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z " />
-<glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
-<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
-<glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
-<glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
-<glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
-<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
-<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
-<glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
-<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
-<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
-<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
-<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
-<glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
-<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
-<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
-<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
-<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
-<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
-<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q73 -1 153.5 -2t119 -1.5t52.5 -0.5l29 2q-32 95 -92 241q-53 132 -92 211zM21 -128h-21l2 79q22 7 80 18q89 16 110 31q20 16 48 68l237 616l280 724h75h53l11 -21l205 -480q103 -242 124 -297q39 -102 96 -235q26 -58 65 -164q24 -67 65 -149 q22 -49 35 -57q22 -19 69 -23q47 -6 103 -27q6 -39 6 -57q0 -14 -1 -26q-80 0 -192 8q-93 8 -189 8q-79 0 -135 -2l-200 -11l-58 -2q0 45 4 78l131 28q56 13 68 23q12 12 12 27t-6 32l-47 114l-92 228l-450 2q-29 -65 -104 -274q-23 -64 -23 -84q0 -31 17 -43 q26 -21 103 -32q3 0 13.5 -2t30 -5t40.5 -6q1 -28 1 -58q0 -17 -2 -27q-66 0 -349 20l-48 -8q-81 -14 -167 -14z" />
-<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q76 -32 140 -32q131 0 216 41t122 113q38 70 38 181q0 114 -41 180q-58 94 -141 126q-80 32 -247 32q-74 0 -101 -10v-144l-1 -173l3 -270q0 -15 12 -44zM541 761q43 -7 109 -7q175 0 264 65t89 224q0 112 -85 187q-84 75 -255 75q-52 0 -130 -13q0 -44 2 -77 q7 -122 6 -279l-1 -98q0 -43 1 -77zM0 -128l2 94q45 9 68 12q77 12 123 31q17 27 21 51q9 66 9 194l-2 497q-5 256 -9 404q-1 87 -11 109q-1 4 -12 12q-18 12 -69 15q-30 2 -114 13l-4 83l260 6l380 13l45 1q5 0 14 0.5t14 0.5q1 0 21.5 -0.5t40.5 -0.5h74q88 0 191 -27 q43 -13 96 -39q57 -29 102 -76q44 -47 65 -104t21 -122q0 -70 -32 -128t-95 -105q-26 -20 -150 -77q177 -41 267 -146q92 -106 92 -236q0 -76 -29 -161q-21 -62 -71 -117q-66 -72 -140 -108q-73 -36 -203 -60q-82 -15 -198 -11l-197 4q-84 2 -298 -11q-33 -3 -272 -11z" />
-<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q4 1 77 20q76 19 116 39q29 37 41 101l27 139l56 268l12 64q8 44 17 84.5t16 67t12.5 46.5t9 30.5t3.5 11.5l29 157l16 63l22 135l8 50v38q-41 22 -144 28q-28 2 -38 4l19 103l317 -14q39 -2 73 -2q66 0 214 9q33 2 68 4.5t36 2.5q-2 -19 -6 -38 q-7 -29 -13 -51q-55 -19 -109 -31q-64 -16 -101 -31q-12 -31 -24 -88q-9 -44 -13 -82q-44 -199 -66 -306l-61 -311l-38 -158l-43 -235l-12 -45q-2 -7 1 -27q64 -15 119 -21q36 -5 66 -10q-1 -29 -7 -58q-7 -31 -9 -41q-18 0 -23 -1q-24 -2 -42 -2q-9 0 -28 3q-19 4 -145 17 l-198 2q-41 1 -174 -11q-74 -7 -98 -9z" />
-<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l215 -1h293l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -42.5 2t-103.5 -1t-111 -1 q-34 0 -67 -5q-10 -97 -8 -136l1 -152v-332l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-88 0 -233 -14q-48 -4 -70 -4q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q8 192 6 433l-5 428q-1 62 -0.5 118.5t0.5 102.5t-2 57t-6 15q-6 5 -14 6q-38 6 -148 6q-43 0 -100 -13.5t-73 -24.5q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1744 128q33 0 42 -18.5t-11 -44.5 l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80z" />
-<glyph unicode="&#xf035;" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l446 -1h318l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -58.5 2t-138.5 -1t-128 -1 q-94 0 -127 -5q-10 -97 -8 -136l1 -152v52l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-82 0 -233 -13q-45 -5 -70 -5q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q6 137 6 433l-5 44q0 265 -2 278q-2 11 -6 15q-6 5 -14 6q-38 6 -148 6q-50 0 -168.5 -14t-132.5 -24q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1505 113q26 -20 26 -49t-26 -49l-162 -126 q-26 -20 -44.5 -11t-18.5 42v80h-1024v-80q0 -33 -18.5 -42t-44.5 11l-162 126q-26 20 -26 49t26 49l162 126q26 20 44.5 11t18.5 -42v-80h1024v80q0 33 18.5 42t44.5 -11z" />
-<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
-<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
-<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
-<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
-<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
-<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
-<glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
-<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
-<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
-<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
-<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
-<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
-<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
-<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
-<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
-<glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
-<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
-<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
-<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
-<glyph unicode="&#xf053;" horiz-adv-x="1152" d="M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 -90.5l-486 -486l486 -485q37 -38 37 -91t-37 -90l-75 -75q-37 -37 -90.5 -37t-90.5 37z" />
-<glyph unicode="&#xf054;" horiz-adv-x="1152" d="M1099 704q0 -52 -37 -91l-652 -651q-37 -37 -90 -37t-90 37l-76 75q-37 39 -37 91q0 53 37 90l486 486l-486 485q-37 39 -37 91q0 53 37 90l76 75q36 38 90 38t90 -38l652 -651q37 -37 37 -90z" />
-<glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
-<glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
-<glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
-<glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
-<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
-<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
-<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
-<glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
-<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
-<glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
-<glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
-<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
-<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
-<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
-<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
-<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
-<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
-<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
-<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
-<glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf077;" horiz-adv-x="1664" d="M1611 320q0 -53 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-486 485l-486 -485q-36 -38 -90 -38t-90 38l-75 75q-38 36 -38 90q0 53 38 91l651 651q37 37 90 37q52 0 91 -37l650 -651q38 -38 38 -91z" />
-<glyph unicode="&#xf078;" horiz-adv-x="1664" d="M1611 832q0 -53 -37 -90l-651 -651q-38 -38 -91 -38q-54 0 -90 38l-651 651q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l486 -486l486 486q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
-<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
-<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
-<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
-<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
-<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
-<glyph unicode="&#xf080;" horiz-adv-x="1920" d="M512 512v-384h-256v384h256zM896 1024v-896h-256v896h256zM1280 768v-640h-256v640h256zM1664 1152v-1024h-256v1024h256zM1792 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5z M1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf082;" d="M1307 618l23 219h-198v109q0 49 15.5 68.5t71.5 19.5h110v219h-175q-152 0 -218 -72t-66 -213v-131h-131v-219h131v-635h262v635h175zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
-<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
-<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
-<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
-<glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
-<glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
-<glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
-<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
-<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
-<glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
-<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf092;" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
-<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
-<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
-<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
-<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
-<glyph unicode="&#xf09a;" horiz-adv-x="768" d="M511 980h257l-30 -284h-227v-824h-341v824h-170v284h170v171q0 182 86 275.5t283 93.5h227v-284h-142q-39 0 -62.5 -6.5t-34 -23.5t-13.5 -34.5t-3 -49.5v-142z" />
-<glyph unicode="&#xf09b;" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
-<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
-<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
-<glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
-<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
-<glyph unicode="&#xf0a2;" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM1664 128q0 -52 -38 -90t-90 -38 h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
-<glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
-<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
-<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
-<glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
-<glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
-<glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
-<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
-<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
-<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
-<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
-<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
-<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
-<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
-<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
-<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
-<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
-<glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
-<glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
-<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
-<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
-<glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
-<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
-<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
-<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
-<glyph unicode="&#xf0d4;" d="M678 -57q0 -38 -10 -71h-380q-95 0 -171.5 56.5t-103.5 147.5q24 45 69 77.5t100 49.5t107 24t107 7q32 0 49 -2q6 -4 30.5 -21t33 -23t31 -23t32 -25.5t27.5 -25.5t26.5 -29.5t21 -30.5t17.5 -34.5t9.5 -36t4.5 -40.5zM385 294q-234 -7 -385 -85v433q103 -118 273 -118 q32 0 70 5q-21 -61 -21 -86q0 -67 63 -149zM558 805q0 -100 -43.5 -160.5t-140.5 -60.5q-51 0 -97 26t-78 67.5t-56 93.5t-35.5 104t-11.5 99q0 96 51.5 165t144.5 69q66 0 119 -41t84 -104t47 -130t16 -128zM1536 896v-736q0 -119 -84.5 -203.5t-203.5 -84.5h-468 q39 73 39 157q0 66 -22 122.5t-55.5 93t-72 71t-72 59.5t-55.5 54.5t-22 59.5q0 36 23 68t56 61.5t65.5 64.5t55.5 93t23 131t-26.5 145.5t-75.5 118.5q-6 6 -14 11t-12.5 7.5t-10 9.5t-10.5 17h135l135 64h-437q-138 0 -244.5 -38.5t-182.5 -133.5q0 126 81 213t207 87h960 q119 0 203.5 -84.5t84.5 -203.5v-96h-256v256h-128v-256h-256v-128h256v-256h128v256h256z" />
-<glyph unicode="&#xf0d5;" horiz-adv-x="1664" d="M876 71q0 21 -4.5 40.5t-9.5 36t-17.5 34.5t-21 30.5t-26.5 29.5t-27.5 25.5t-32 25.5t-31 23t-33 23t-30.5 21q-17 2 -50 2q-54 0 -106 -7t-108 -25t-98 -46t-69 -75t-27 -107q0 -68 35.5 -121.5t93 -84t120.5 -45.5t127 -15q59 0 112.5 12.5t100.5 39t74.5 73.5 t27.5 110zM756 933q0 60 -16.5 127.5t-47 130.5t-84 104t-119.5 41q-93 0 -144 -69t-51 -165q0 -47 11.5 -99t35.5 -104t56 -93.5t78 -67.5t97 -26q97 0 140.5 60.5t43.5 160.5zM625 1408h437l-135 -79h-135q71 -45 110 -126t39 -169q0 -74 -23 -131.5t-56 -92.5t-66 -64.5 t-56 -61t-23 -67.5q0 -26 16.5 -51t43 -48t58.5 -48t64 -55.5t58.5 -66t43 -85t16.5 -106.5q0 -160 -140 -282q-152 -131 -420 -131q-59 0 -119.5 10t-122 33.5t-108.5 58t-77 89t-30 121.5q0 61 37 135q32 64 96 110.5t145 71t155 36t150 13.5q-64 83 -64 149q0 12 2 23.5 t5 19.5t8 21.5t7 21.5q-40 -5 -70 -5q-149 0 -255.5 98t-106.5 246q0 140 95 250.5t234 141.5q94 20 187 20zM1664 1152v-128h-256v-256h-128v256h-256v128h256v256h128v-256h256z" />
-<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
-<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
-<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
-<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
-<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
-<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
-<glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
-<glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
-<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
-<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
-<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
-<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
-<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
-<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
-<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
-<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
-<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
-<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
-<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
-<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
-<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
-<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
-<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
-<glyph unicode="&#xf0f3;" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1664 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5 q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
-<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
-<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0f6;" horiz-adv-x="1280" d="M1024 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1024 608v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280z M768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z" />
-<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
-<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
-<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
-<glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
-<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
-<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
-<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
-<glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
-<glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
-<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
-<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
-<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
-<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
-<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
-<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
-<glyph unicode="&#xf110;" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" />
-<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
-<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
-<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
-<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
-<glyph unicode="&#xf116;" horiz-adv-x="1152" d="M896 608v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h224q14 0 23 -9t9 -23zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28 t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68zM1152 928v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704q93 0 158.5 -65.5t65.5 -158.5z" />
-<glyph unicode="&#xf117;" horiz-adv-x="1152" d="M928 1152q93 0 158.5 -65.5t65.5 -158.5v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68z M864 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576z" />
-<glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
-<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
-<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
-<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
-<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
-<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
-<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
-<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
-<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
-<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
-<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
-<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
-<glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
-<glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
-<glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
-<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
-<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
-<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
-<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
-<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
-<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
-<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
-<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1708 881l-188 -881h-304l181 849q4 21 1 43q-4 20 -16 35q-10 14 -28 24q-18 9 -40 9h-197l-205 -960h-303l204 960h-304l-205 -960h-304l272 1280h1139q157 0 245 -118q86 -116 52 -281z" />
-<glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
-<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
-<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
-<glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
-<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
-<glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
-<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
-<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
-<glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
-<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
-<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
-<glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
-<glyph unicode="&#xf158;" horiz-adv-x="1664" d="M1664 352v-32q0 -132 -94 -226t-226 -94h-128q-132 0 -226 94t-94 226v480h-224q-2 -102 -14.5 -190.5t-30.5 -156t-48.5 -126.5t-57 -99.5t-67.5 -77.5t-69.5 -58.5t-74 -44t-69 -32t-65.5 -25.5q-4 -2 -32 -13q-8 -2 -12 -2q-22 0 -30 20l-71 178q-5 13 0 25t17 17 q7 3 20 7.5t18 6.5q31 12 46.5 18.5t44.5 20t45.5 26t42 32.5t40.5 42.5t34.5 53.5t30.5 68.5t22.5 83.5t17 103t6.5 123h-256q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h1216q14 0 23 -9t9 -23v-160q0 -14 -9 -23t-23 -9h-224v-512q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v64q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1280 1376v-160q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h960q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
-<glyph unicode="&#xf15b;" horiz-adv-x="1280" d="M1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
-<glyph unicode="&#xf15c;" horiz-adv-x="1280" d="M1024 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1024 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28 t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
-<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
-<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
-<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
-<glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
-<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
-<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
-<glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
-<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
-<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
-<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
-<glyph unicode="&#xf16c;" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
-<glyph unicode="&#xf16d;" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
-<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
-<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
-<glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M390 1408h219v-388h364v-241h-364v-394q0 -136 14 -172q13 -37 52 -60q50 -31 117 -31q117 0 232 76v-242q-102 -48 -178 -65q-77 -19 -173 -19q-105 0 -186 27q-78 25 -138 75q-58 51 -79 105q-22 54 -22 161v539h-170v217q91 30 155 84q64 55 103 132q39 78 54 196z " />
-<glyph unicode="&#xf174;" d="M1123 127v181q-88 -56 -174 -56q-51 0 -88 23q-29 17 -39 45q-11 30 -11 129v295h274v181h-274v291h-164q-11 -90 -40 -147t-78 -99q-48 -40 -116 -63v-163h127v-404q0 -78 17 -121q17 -42 59 -78q43 -37 104 -57q62 -20 140 -20q67 0 129 14q57 13 134 49zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
-<glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
-<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
-<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
-<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
-<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
-<glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
-<glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
-<glyph unicode="&#xf180;" horiz-adv-x="1664" d="M1483 512l-587 -587q-52 -53 -127.5 -53t-128.5 53l-587 587q-53 53 -53 128t53 128l587 587q53 53 128 53t128 -53l265 -265l-398 -399l-188 188q-42 42 -99 42q-59 0 -100 -41l-120 -121q-42 -40 -42 -99q0 -58 42 -100l406 -408q30 -28 67 -37l6 -4h28q60 0 99 41 l619 619l2 -3q53 -53 53 -128t-53 -128zM1406 1138l120 -120q14 -15 14 -36t-14 -36l-730 -730q-17 -15 -37 -15v0q-4 0 -6 1q-18 2 -30 14l-407 408q-14 15 -14 36t14 35l121 120q13 15 35 15t36 -15l252 -252l574 575q15 15 36 15t36 -15z" />
-<glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
-<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
-<glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
-<glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
-<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
-<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
-<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
-<glyph unicode="&#xf18b;" horiz-adv-x="1920" d="M805 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM453 1176v-344q0 -179 -89.5 -326t-234.5 -217q-129 152 -129 351q0 200 129.5 352t323.5 184zM958 991q-128 -152 -128 -351q0 -201 128 -351q-145 70 -234.5 218t-89.5 328 v341q196 -33 324 -185zM1638 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM1286 1176v-344q0 -179 -91 -326t-237 -217v0q133 154 133 351q0 195 -133 351q129 151 328 185zM1920 640q0 -201 -129 -351q-145 70 -234.5 218 t-89.5 328v341q194 -32 323.5 -184t129.5 -352z" />
-<glyph unicode="&#xf18c;" horiz-adv-x="1792" />
-<glyph unicode="&#xf18d;" horiz-adv-x="1792" />
-<glyph unicode="&#xf18e;" horiz-adv-x="1792" />
-<glyph unicode="&#xf500;" horiz-adv-x="1792" />
-</font>
-</defs></svg> 
\ No newline at end of file
diff --git a/assets/fonts/fontawesome-webfont.ttf b/assets/fonts/fontawesome-webfont.ttf
deleted file mode 100755
index d365924..0000000
--- a/assets/fonts/fontawesome-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/assets/fonts/fontawesome-webfont.woff b/assets/fonts/fontawesome-webfont.woff
deleted file mode 100755
index b9bd17e..0000000
--- a/assets/fonts/fontawesome-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/assets/iconfontgenerator/createfonts.js b/assets/iconfontgenerator/createfonts.js
index e5f7cb4..b493f50 100644
--- a/assets/iconfontgenerator/createfonts.js
+++ b/assets/iconfontgenerator/createfonts.js
@@ -20,7 +20,7 @@
 const fauxtonFontname = process.argv[2];
 const generatedFontsDir = "generated";
 
-// Generate the font files (.ttf, .woff, etc) and LESS file
+// Generate the font files (.ttf, .woff, etc) and SCSS file
 svgtofont({
   emptyDist: true, // Clear output directory contents
   src: "../icons", // svg path
@@ -42,13 +42,6 @@
 }).then(() => {
   console.log(`Font ${fauxtonFontname} generated`);
   try {
-    // The custom template ../styles/icons.less includes the '{{cssToVars}}' variable so the generator adds the list of icons as variables.
-    // The problem is that {{cssToVars}} is written in SCSS syntax, so we need to convert it to LESS syntax, which comes down
-    // to replacing '$<var_name>' to '@<var_name>'.
-    const original = fs.readFileSync("./generated/icons.less", "utf8");
-    const updated = original.replaceAll("$fonticon-", "@fonticon-");
-    fs.writeFileSync("./generated/icons.less", updated);
-
     // Remove old icons font files
     const fontsDir = "../fonts";
     fs.readdirSync(fontsDir).forEach((file) => {
@@ -69,14 +62,14 @@
       }
     });
 
-    // Replace 'assets/less/icons.less' with the newly generated version
-    const iconsLess = "../less/icons.less";
-    console.log(`Replacing ${iconsLess} with the new version`);
-    if (fs.existsSync(iconsLess)) {
-      fs.unlinkSync(iconsLess);
+    // Replace 'assets/scss/icons.scss' with the newly generated version
+    const iconsScss = "../scss/_icons.scss";
+    console.log(`Replacing ${iconsScss} with the new version`);
+    if (fs.existsSync(iconsScss)) {
+      fs.unlinkSync(iconsScss);
     }
-    const generatedIconsLess = generatedFontsDir + "/icons.less";
-    fs.renameSync(generatedIconsLess, iconsLess);
+    const generatediconsScss = generatedFontsDir + "/icons.scss";
+    fs.renameSync(generatediconsScss, iconsScss);
   } catch (err) {
     console.error(err);
     process.exit(1);
diff --git a/assets/iconfontgenerator/styles/icons.less b/assets/iconfontgenerator/styles/icons.less
deleted file mode 100644
index ea2f7e6..0000000
--- a/assets/iconfontgenerator/styles/icons.less
+++ /dev/null
@@ -1,32 +0,0 @@
-@fauxtonFont: "{{fontname}}";
-
-@font-face {font-family: "{{fontname}}";
-  src: url('{{cssPath}}{{fontname}}.eot'); /* IE9*/
-  src: url('{{cssPath}}{{fontname}}.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
-  url("{{cssPath}}{{fontname}}.woff2") format("woff2"),
-  url("{{cssPath}}{{fontname}}.woff") format("woff"),
-  url('{{cssPath}}{{fontname}}.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
-  url('{{cssPath}}{{fontname}}.svg#{{fontname}}') format('svg'); /* iOS 4.1- */
-  font-weight: normal;
-  font-style: normal;
-}
-
-[class^="{{prefix}}-"]:before, [class*=" {{prefix}}-"]:before {
-  display: inline-block;
-  font-family: '{{fontname}}' !important;
-  font-weight: normal;
-  font-style: normal;
-  font-variant: normal;
-  line-height: 1;
-  text-decoration: inherit;
-  text-rendering: optimizeLegibility;
-  text-transform: none;
-  
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-{{cssToVars}}
-
-{{cssString}}
-
diff --git a/assets/iconfontgenerator/styles/icons.scss b/assets/iconfontgenerator/styles/icons.scss
new file mode 100644
index 0000000..fc5ca5c
--- /dev/null
+++ b/assets/iconfontgenerator/styles/icons.scss
@@ -0,0 +1,42 @@
+$fauxtonFont: "{{fontname}}";
+
+@font-face {font-family: "{{fontname}}";
+  src: url('{{cssPath}}{{fontname}}.eot'); /* IE9*/
+  src: url('{{cssPath}}{{fontname}}.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+  url("{{cssPath}}{{fontname}}.woff2") format("woff2"),
+  url("{{cssPath}}{{fontname}}.woff") format("woff"),
+  url('{{cssPath}}{{fontname}}.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
+  url('{{cssPath}}{{fontname}}.svg#{{fontname}}') format('svg'); /* iOS 4.1- */
+  font-weight: normal;
+  font-style: normal;
+}
+
+[class^="{{prefix}}-"], [class*=" {{prefix}}-"] {
+  &[class*=" {{prefix}}-fw"] {
+    /* fixed-width class, based on Font Awesome's 'fa-fw' class */
+    width: 1.25rem;
+    text-align: center;
+    display: inline-block;
+  }
+
+  &:before {
+    display: inline-block;
+    font-family: '{{fontname}}' !important;
+    font-weight: normal;
+    font-style: normal;
+    font-variant: normal;
+    line-height: 1;
+    text-decoration: inherit;
+    text-rendering: optimizeLegibility;
+    text-transform: none;
+    
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+
+  }
+}
+
+{{cssToVars}}
+
+{{cssString}}
+
diff --git a/assets/icons/code-branch.svg b/assets/icons/code-branch.svg
new file mode 100644
index 0000000..ef6b6f4
--- /dev/null
+++ b/assets/icons/code-branch.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M80 104c13.3 0 24-10.7 24-24s-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM80 456c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z"/></svg>
\ No newline at end of file
diff --git a/assets/icons/columns.svg b/assets/icons/columns.svg
new file mode 100644
index 0000000..836b427
--- /dev/null
+++ b/assets/icons/columns.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z"/></svg>
\ No newline at end of file
diff --git a/assets/icons/copy.svg b/assets/icons/copy.svg
new file mode 100644
index 0000000..d2e4a88
--- /dev/null
+++ b/assets/icons/copy.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg>
diff --git a/assets/icons/menu.svg b/assets/icons/menu.svg
index 48f5ae4..93d8a12 100644
--- a/assets/icons/menu.svg
+++ b/assets/icons/menu.svg
@@ -1,4 +1,3 @@
-<!-- Generated by IcoMoon.io -->
 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="768" height="768" viewBox="0 0 768 768">
 <title></title>
 <g id="icomoon-ignore">
diff --git a/assets/icons/menu_close.svg b/assets/icons/menu_close.svg
index cddafcc..8b74b72 100644
--- a/assets/icons/menu_close.svg
+++ b/assets/icons/menu_close.svg
@@ -1,4 +1,3 @@
-<!-- Generated by IcoMoon.io -->
 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="768" height="768" viewBox="0 0 768 768">
 <title></title>
 <g id="icomoon-ignore">
diff --git a/assets/icons/paste.svg b/assets/icons/paste.svg
new file mode 100644
index 0000000..5e84cc4
--- /dev/null
+++ b/assets/icons/paste.svg
@@ -0,0 +1,3 @@
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
+<path d="M22 4h-4v-2c0-1.1-0.9-2-2-2h-4c-1.1 0-2 0.9-2 2v2h-4v4h16v-4zM16 4h-4v-1.996c0.001-0.001 0.002-0.002 0.004-0.004h3.993c0.001 0.001 0.003 0.002 0.004 0.004v1.996zM26 10v-5c0-0.55-0.45-1-1-1h-2v2h1v4h-6l-6 6v8h-8v-18h1v-2h-2c-0.55 0-1 0.45-1 1v20c0 0.55 0.45 1 1 1h9v6h20v-22h-6zM18 12.828v3.172h-3.172l3.172-3.172zM30 30h-16v-12h6v-6h10v18z"></path>
+</svg>
diff --git a/assets/icons/trash.svg b/assets/icons/trash.svg
old mode 100755
new mode 100644
index c847c5c..43c1aeb
--- a/assets/icons/trash.svg
+++ b/assets/icons/trash.svg
@@ -1,6 +1 @@
-
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="25" height="32" viewBox="0 0 25 32">
-<g>
-</g>
-	<path d="M9.152 13.12v10.272q0 0.256-0.16 0.416t-0.416 0.16h-1.152q-0.256 0-0.416-0.16t-0.16-0.416v-10.272q0-0.256 0.16-0.416t0.416-0.16h1.152q0.256 0 0.416 0.16t0.16 0.416zM13.728 13.12v10.272q0 0.256-0.16 0.416t-0.416 0.16h-1.152q-0.256 0-0.416-0.16t-0.16-0.416v-10.272q0-0.256 0.16-0.416t0.416-0.16h1.152q0.256 0 0.416 0.16t0.16 0.416zM18.272 13.12v10.272q0 0.256-0.16 0.416t-0.384 0.16h-1.152q-0.256 0-0.416-0.16t-0.16-0.416v-10.272q0-0.256 0.16-0.416t0.416-0.16h1.152q0.224 0 0.384 0.16t0.16 0.416zM20.576 26.048v-16.928h-16v16.928q0 0.384 0.128 0.704t0.256 0.48 0.192 0.16h14.848q0.064 0 0.192-0.16t0.256-0.48 0.128-0.704zM8.576 6.816h8l-0.864-2.080q-0.128-0.16-0.288-0.192h-5.664q-0.192 0.032-0.32 0.192zM25.152 7.392v1.152q0 0.256-0.16 0.416t-0.416 0.16h-1.728v16.928q0 1.472-0.832 2.56t-2.016 1.088h-14.848q-1.184 0-2.016-1.056t-0.864-2.528v-16.992h-1.696q-0.256 0-0.416-0.16t-0.16-0.416v-1.152q0-0.256 0.16-0.416t0.416-0.16h5.504l1.248-2.976q0.288-0.672 0.992-1.12t1.408-0.48h5.696q0.704 0 1.408 0.48t0.96 1.12l1.248 2.976h5.536q0.256 0 0.416 0.16t0.16 0.416z" fill="#000000" />
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z"/></svg>
\ No newline at end of file
diff --git a/assets/icons/trophy.svg b/assets/icons/trophy.svg
new file mode 100644
index 0000000..717902b
--- /dev/null
+++ b/assets/icons/trophy.svg
@@ -0,0 +1,3 @@
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
+<path d="M26 6v-4h-20v4h-6v4c0 3.314 2.686 6 6 6 0.627 0 1.232-0.096 1.801-0.275 1.443 2.063 3.644 3.556 6.199 4.075v6.2h-2c-2.209 0-4 1.791-4 4h16c0-2.209-1.791-4-4-4h-2v-6.2c2.555-0.519 4.756-2.012 6.199-4.075 0.568 0.179 1.173 0.275 1.801 0.275 3.314 0 6-2.686 6-6v-4h-6zM6 13.625c-1.999 0-3.625-1.626-3.625-3.625v-2h3.625v2c0 1.256 0.232 2.457 0.655 3.565-0.213 0.039-0.431 0.060-0.655 0.060zM29.625 10c0 1.999-1.626 3.625-3.625 3.625-0.224 0-0.442-0.021-0.655-0.060 0.423-1.107 0.655-2.309 0.655-3.565v-2h3.625v2z"></path>
+</svg>
diff --git a/assets/less/animations.less b/assets/less/animations.less
deleted file mode 100644
index 0728dc5..0000000
--- a/assets/less/animations.less
+++ /dev/null
@@ -1,79 +0,0 @@
-//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
-//  use this file except in compliance with the License. You may obtain a copy of
-//  the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-//  License for the specific language governing permissions and limitations under
-//  the License.
-
-.keyframes (@name, @fromRules, @toRules) {
-    @-webkit-keyframes ~'@{name}' { 0% { @fromRules(); } 100% { @toRules(); } }
-       @-moz-keyframes ~'@{name}' { 0% { @fromRules(); } 100% { @toRules(); } }
-            @keyframes ~'@{name}' { 0% { @fromRules(); } 100% { @toRules(); } }
-}
-
-.animation(@options) {
-  -webkit-animation: @options;
-  -moz-animation: @options;
-  animation: @options;
-}
-
-.fade {
-  transition: opacity .25s ease-in-out;
-  -moz-transition: opacity .25s ease-in-out;
-  -webkit-transition: opacity .25s ease-in-out;
-}
-
-.fadeIn {
-  opacity: 1;
-}
-
-.fadeOut {
-  opacity: 0;
-}
-
-@-webkit-keyframes errorBlinkBG {
-  from { background: @dangerRed; }
-  to { background: white; }
-}
-@keyframes errorBlinkBG {
-  from { background: @dangerRed; }
-  to { background: white; }
-}
-
-/* a generic slide-up/down effect that looks smooth for items with unknown heights */
-.keyframes(slideDown, {
-  opacity: 0;
-  max-height: 0;
-},
-{
-  opacity: 1;
-  max-height: 1000px;
-});
-
-.keyframes(slideUp, {
-  max-height: 1000px;
-  opacity: 1;
-},
-{
-  max-height: 0;
-  opacity: 0;
-});
-
-.highlight {
-  -webkit-animation: highlight-element 2.5s 1;
-  -moz-animation: highlight-element 2.5s 1;
-}
-
-@-webkit-keyframes highlight-element {
-  0% { background-color: @highlightEffectColor; }
-  100% { background-color: #f1f1f1; }
-}
-@-moz-keyframes highlight-element {
-  0% { background-color: @highlightEffectColor; }
-  100% { background-color: #f1f1f1; }
-}
diff --git a/assets/less/bootstrap/accordion.less b/assets/less/bootstrap/accordion.less
deleted file mode 100644
index d63523b..0000000
--- a/assets/less/bootstrap/accordion.less
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// Accordion
-// --------------------------------------------------
-
-
-// Parent container
-.accordion {
-  margin-bottom: @baseLineHeight;
-}
-
-// Group == heading + body
-.accordion-group {
-  margin-bottom: 2px;
-  border: 1px solid #e5e5e5;
-  .border-radius(@baseBorderRadius);
-}
-.accordion-heading {
-  border-bottom: 0;
-}
-.accordion-heading .accordion-toggle {
-  display: block;
-  padding: 8px 15px;
-}
-
-// General toggle styles
-.accordion-toggle {
-  cursor: pointer;
-}
-
-// Inner needs the styles because you can't animate properly with any styles on the element
-.accordion-inner {
-  padding: 9px 15px;
-  border-top: 1px solid #e5e5e5;
-}
diff --git a/assets/less/bootstrap/alerts.less b/assets/less/bootstrap/alerts.less
deleted file mode 100644
index 0116b19..0000000
--- a/assets/less/bootstrap/alerts.less
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// Alerts
-// --------------------------------------------------
-
-
-// Base styles
-// -------------------------
-
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: @baseLineHeight;
-  text-shadow: 0 1px 0 rgba(255,255,255,.5);
-  background-color: @warningBackground;
-  border: 1px solid @warningBorder;
-  .border-radius(@baseBorderRadius);
-}
-.alert,
-.alert h4 {
-  // Specified for the h4 to prevent conflicts of changing @headingsColor
-  color: @warningText;
-}
-.alert h4 {
-  margin: 0;
-}
-
-// Adjust close link position
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: @baseLineHeight;
-}
-
-
-// Alternate styles
-// -------------------------
-
-.alert-success {
-  background-color: @successBackground;
-  border-color: @successBorder;
-  color: @successText;
-}
-.alert-success h4 {
-  color: @successText;
-}
-.alert-danger,
-.alert-error {
-  background-color: @errorBackground;
-  border-color: @errorBorder;
-  color: @errorText;
-}
-.alert-danger h4,
-.alert-error h4 {
-  color: @errorText;
-}
-.alert-info {
-  background-color: @infoBackground;
-  border-color: @infoBorder;
-  color: @infoText;
-}
-.alert-info h4 {
-  color: @infoText;
-}
-
-
-// Block alerts
-// -------------------------
-
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
diff --git a/assets/less/bootstrap/bootstrap.less b/assets/less/bootstrap/bootstrap.less
deleted file mode 100644
index 572fc38..0000000
--- a/assets/less/bootstrap/bootstrap.less
+++ /dev/null
@@ -1,62 +0,0 @@
-/*!
- * Bootstrap v2.3.2
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-// Core variables and mixins
-@import "mixins.less";
-
-// CSS Reset
-@import "reset.less";
-
-// Grid system and page structure
-@import "scaffolding.less";
-@import "grid.less";
-@import "layouts.less";
-
-// Base CSS
-@import "type.less";
-@import "code.less";
-@import "forms.less";
-@import "tables.less";
-
-// Components: common
-@import "font-awesome/font-awesome.less";
-@import "dropdowns.less";
-@import "wells.less";
-@import "component-animations.less";
-@import "close.less";
-
-// Components: Buttons & Alerts
-@import "buttons.less";
-@import "button-groups.less";
-@import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
-
-// Components: Nav
-@import "navs.less";
-@import "navbar.less";
-@import "breadcrumbs.less";
-@import "pagination.less";
-@import "pager.less";
-
-// Components: Popovers
-@import "modals.less";
-@import "tooltip.less";
-@import "popovers.less";
-
-// Components: Misc
-@import "thumbnails.less";
-@import "media.less";
-@import "labels-badges.less";
-@import "progress-bars.less";
-@import "accordion.less";
-@import "carousel.less";
-@import "hero-unit.less";
-
-// Utility classes
-@import "utilities.less"; // Has to be last to override when necessary
diff --git a/assets/less/bootstrap/breadcrumbs.less b/assets/less/bootstrap/breadcrumbs.less
deleted file mode 100644
index f753df6..0000000
--- a/assets/less/bootstrap/breadcrumbs.less
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Breadcrumbs
-// --------------------------------------------------
-
-
-.breadcrumb {
-  padding: 8px 15px;
-  margin: 0 0 @baseLineHeight;
-  list-style: none;
-  background-color: #f5f5f5;
-  .border-radius(@baseBorderRadius);
-  > li {
-    display: inline-block;
-    .ie7-inline-block();
-    text-shadow: 0 1px 0 @white;
-    > .divider {
-      padding: 0 5px;
-      color: #ccc;
-    }
-  }
-  > .active {
-    color: @grayLight;
-  }
-}
diff --git a/assets/less/bootstrap/button-groups.less b/assets/less/bootstrap/button-groups.less
deleted file mode 100644
index 2f9dd6f..0000000
--- a/assets/less/bootstrap/button-groups.less
+++ /dev/null
@@ -1,222 +0,0 @@
-//
-// Button groups
-// --------------------------------------------------
-
-// Make the div behave like a button
-.btn-group {
-  position: relative;
-  display: inline-block;
-  .ie7-inline-block();
-  font-size: 0; // remove as part 1 of font-size inline-block hack
-  vertical-align: middle; // match .btn alignment given font-size hack above
-  white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page)
-  .ie7-restore-left-whitespace();
-}
-
-// Space out series of button groups
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-
-// Optional: Group multiple button groups together for a toolbar
-.btn-toolbar {
-  font-size: 0; // Hack to remove whitespace that results from using inline-block
-  margin-top: @baseLineHeight / 2;
-  margin-bottom: @baseLineHeight / 2;
-  > .btn + .btn,
-  > .btn-group + .btn,
-  > .btn + .btn-group {
-    margin-left: 5px;
-  }
-}
-
-// Float them, remove border radius, then re-add to first and last elements
-.btn-group > .btn {
-  position: relative;
-  .border-radius(0);
-}
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
-  font-size: @baseFontSize; // redeclare as part 2 of font-size inline-block hack
-}
-
-// Reset fonts for other sizes
-.btn-group > .btn-mini {
-  font-size: @fontSizeMini;
-}
-.btn-group > .btn-small {
-  font-size: @fontSizeSmall;
-}
-.btn-group > .btn-large {
-  font-size: @fontSizeLarge;
-}
-
-// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  .border-top-left-radius(@baseBorderRadius);
-  .border-bottom-left-radius(@baseBorderRadius);
-}
-// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  .border-top-right-radius(@baseBorderRadius);
-  .border-bottom-right-radius(@baseBorderRadius);
-}
-// Reset corners for large buttons
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  .border-top-left-radius(@borderRadiusLarge);
-  .border-bottom-left-radius(@borderRadiusLarge);
-}
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  .border-top-right-radius(@borderRadiusLarge);
-  .border-bottom-right-radius(@borderRadiusLarge);
-}
-
-// On hover/focus/active, bring the proper btn to front
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-
-// On active and open, don't show outline
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-
-// Split button dropdowns
-// ----------------------
-
-// Give the line between buttons some depth
-.btn-group > .btn + .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  .box-shadow(
-    ~"inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)"
-  );
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group > .btn-mini + .dropdown-toggle {
-  padding-left: 5px;
-  padding-right: 5px;
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-.btn-group > .btn-large + .dropdown-toggle {
-  padding-left: 12px;
-  padding-right: 12px;
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-
-.btn-group.open {
-  // The clickable button for toggling the menu
-  // Remove the gradient and set the same inset shadow as the :active state
-  .dropdown-toggle {
-    background-image: none;
-    .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
-  }
-
-  // Keep the hover's background when dropdown is open
-  .btn.dropdown-toggle {
-    background-color: @btnBackgroundHighlight;
-  }
-  .btn-primary.dropdown-toggle {
-    background-color: @btnPrimaryBackgroundHighlight;
-  }
-  .btn-warning.dropdown-toggle {
-    background-color: @btnWarningBackgroundHighlight;
-  }
-  .btn-danger.dropdown-toggle {
-    background-color: @btnDangerBackgroundHighlight;
-  }
-  .btn-success.dropdown-toggle {
-    background-color: @btnSuccessBackgroundHighlight;
-  }
-  .btn-secondary.dropdown-toggle {
-    background-color: @btnInfoBackgroundHighlight;
-  }
-  .btn-inverse.dropdown-toggle {
-    background-color: @btnInverseBackgroundHighlight;
-  }
-}
-
-// Reposition the caret
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-// Carets in other button sizes
-.btn-large .caret {
-  margin-top: 6px;
-}
-.btn-large .caret {
-  border-left-width: 5px;
-  border-right-width: 5px;
-  border-top-width: 5px;
-}
-.btn-mini .caret,
-.btn-small .caret {
-  margin-top: 8px;
-}
-// Upside down carets for .dropup
-.dropup .btn-large .caret {
-  border-bottom-width: 5px;
-}
-
-// Account for other colors
-.btn-primary,
-.btn-warning,
-.btn-danger,
-.btn-secondary,
-.btn-success,
-.btn-inverse {
-  .caret {
-    border-top-color: @white;
-    border-bottom-color: @white;
-  }
-}
-
-// Vertical button groups
-// ----------------------
-
-.btn-group-vertical {
-  display: inline-block; // makes buttons only take up the width they need
-  .ie7-inline-block();
-}
-.btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  max-width: 100%;
-  .border-radius(0);
-}
-.btn-group-vertical > .btn + .btn {
-  margin-left: 0;
-  margin-top: -1px;
-}
-.btn-group-vertical > .btn:first-child {
-  .border-radius(@baseBorderRadius @baseBorderRadius 0 0);
-}
-.btn-group-vertical > .btn:last-child {
-  .border-radius(0 0 @baseBorderRadius @baseBorderRadius);
-}
-.btn-group-vertical > .btn-large:first-child {
-  .border-radius(@borderRadiusLarge @borderRadiusLarge 0 0);
-}
-.btn-group-vertical > .btn-large:last-child {
-  .border-radius(0 0 @borderRadiusLarge @borderRadiusLarge);
-}
diff --git a/assets/less/bootstrap/buttons.less b/assets/less/bootstrap/buttons.less
deleted file mode 100644
index 85d417c..0000000
--- a/assets/less/bootstrap/buttons.less
+++ /dev/null
@@ -1,228 +0,0 @@
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-// Core
-.btn {
-  display: inline-block;
-  .ie7-inline-block();
-  padding: 4px 12px;
-  margin-bottom: 0; // For input.btn
-  font-size: @baseFontSize;
-  line-height: @baseLineHeight;
-  text-align: center;
-  vertical-align: middle;
-  cursor: pointer;
-  .buttonBackground(@btnBackground, @btnBackgroundHighlight, @grayDark, 0 1px 1px rgba(255,255,255,.75));
-  border: 1px solid @btnBorder;
-  *border: 0; // Remove the border to prevent IE7's black border on input:focus
-  border-bottom-color: darken(@btnBorder, 10%);
-  .border-radius(@baseBorderRadius);
-  .ie7-restore-left-whitespace(); // Give IE7 some love
-  .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
-
-  // Hover/focus state
-  &:hover,
-  &:focus {
-    color: @grayDark;
-    text-decoration: none;
-    background-position: 0 -15px;
-
-    // transition is only when going to hover/focus, otherwise the background
-    // behind the gradient (there for IE<=9 fallback) gets mismatched
-    .transition(background-position .1s linear);
-  }
-
-  // Focus state for keyboard and accessibility
-  &:focus {
-    .tab-focus();
-  }
-
-  // Active state
-  &.active,
-  &:active {
-    background-image: none;
-    outline: 0;
-    .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
-  }
-
-  // Disabled state
-  &.disabled,
-  &[disabled] {
-    cursor: default;
-    background-image: none;
-    .opacity(65);
-    .box-shadow(none);
-  }
-
-}
-
-
-
-// Button Sizes
-// --------------------------------------------------
-
-// Large
-.btn-large {
-  padding: @paddingLarge;
-  font-size: @fontSizeLarge;
-  .border-radius(@borderRadiusLarge);
-}
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
-  margin-top: 4px;
-}
-
-// Small
-.btn-small {
-  padding: @paddingSmall;
-  font-size: @fontSizeSmall;
-  .border-radius(@borderRadiusSmall);
-}
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
-  margin-top: 0;
-}
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
-  margin-top: -1px;
-}
-
-// Mini
-.btn-mini {
-  padding: @paddingMini;
-  font-size: @fontSizeMini;
-  .border-radius(@borderRadiusSmall);
-}
-
-
-// Block button
-// -------------------------
-
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-left: 0;
-  padding-right: 0;
-  .box-sizing(border-box);
-}
-
-// Vertically space out multiple block buttons
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-
-// Specificity overrides
-input[type="submit"],
-input[type="reset"],
-input[type="button"] {
-  &.btn-block {
-    width: 100%;
-  }
-}
-
-
-
-// Alternate buttons
-// --------------------------------------------------
-
-// Provide *some* extra contrast for those who can get it
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-secondary.active,
-.btn-inverse.active {
-  color: rgba(255,255,255,.75);
-}
-
-// Set the backgrounds
-// -------------------------
-.btn-primary {
-  .buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight);
-}
-// Warning appears are orange
-.btn-warning {
-  .buttonBackground(@btnWarningBackground, @btnWarningBackgroundHighlight);
-}
-// Danger and error appear as red
-.btn-danger {
-  .buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight);
-}
-// Success appears as green
-.btn-success {
-  .buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight);
-}
-// Info appears as a neutral blue
-.btn-secondary {
-  .buttonBackground(@btnInfoBackground, @btnInfoBackgroundHighlight);
-}
-// Inverse appears as dark gray
-.btn-inverse {
-  .buttonBackground(@btnInverseBackground, @btnInverseBackgroundHighlight);
-}
-
-
-// Cross-browser Jank
-// --------------------------------------------------
-
-button.btn,
-input[type="submit"].btn {
-
-  // Firefox 3.6 only I believe
-  &::-moz-focus-inner {
-    padding: 0;
-    border: 0;
-  }
-
-  // IE7 has some default padding on button controls
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-
-  &.btn-large {
-    *padding-top: 7px;
-    *padding-bottom: 7px;
-  }
-  &.btn-small {
-    *padding-top: 3px;
-    *padding-bottom: 3px;
-  }
-  &.btn-mini {
-    *padding-top: 1px;
-    *padding-bottom: 1px;
-  }
-}
-
-
-// Link buttons
-// --------------------------------------------------
-
-// Make a button look and behave like a link
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  .box-shadow(none);
-}
-.btn-link {
-  border-color: transparent;
-  cursor: pointer;
-  color: @linkColor;
-  .border-radius(0);
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: @linkColorHover;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
-  color: @grayDark;
-  text-decoration: none;
-}
diff --git a/assets/less/bootstrap/carousel.less b/assets/less/bootstrap/carousel.less
deleted file mode 100644
index 55bc050..0000000
--- a/assets/less/bootstrap/carousel.less
+++ /dev/null
@@ -1,158 +0,0 @@
-//
-// Carousel
-// --------------------------------------------------
-
-
-.carousel {
-  position: relative;
-  margin-bottom: @baseLineHeight;
-  line-height: 1;
-}
-
-.carousel-inner {
-  overflow: hidden;
-  width: 100%;
-  position: relative;
-}
-
-.carousel-inner {
-
-  > .item {
-    display: none;
-    position: relative;
-    .transition(.6s ease-in-out left);
-
-    // Account for jankitude on images
-    > img,
-    > a > img {
-      display: block;
-      line-height: 1;
-    }
-  }
-
-  > .active,
-  > .next,
-  > .prev { display: block; }
-
-  > .active {
-    left: 0;
-  }
-
-  > .next,
-  > .prev {
-    position: absolute;
-    top: 0;
-    width: 100%;
-  }
-
-  > .next {
-    left: 100%;
-  }
-  > .prev {
-    left: -100%;
-  }
-  > .next.left,
-  > .prev.right {
-    left: 0;
-  }
-
-  > .active.left {
-    left: -100%;
-  }
-  > .active.right {
-    left: 100%;
-  }
-
-}
-
-// Left/right controls for nav
-// ---------------------------
-
-.carousel-control {
-  position: absolute;
-  top: 40%;
-  left: 15px;
-  width: 40px;
-  height: 40px;
-  margin-top: -20px;
-  font-size: 60px;
-  font-weight: 100;
-  line-height: 30px;
-  color: @white;
-  text-align: center;
-  background: @grayDarker;
-  border: 3px solid @white;
-  .border-radius(23px);
-  .opacity(50);
-
-  // we can't have this transition here
-  // because webkit cancels the carousel
-  // animation if you trip this while
-  // in the middle of another animation
-  // ;_;
-  // .transition(opacity .2s linear);
-
-  // Reposition the right one
-  &.right {
-    left: auto;
-    right: 15px;
-  }
-
-  // Hover/focus state
-  &:hover,
-  &:focus {
-    color: @white;
-    text-decoration: none;
-    .opacity(90);
-  }
-}
-
-// Carousel indicator pips
-// -----------------------------
-.carousel-indicators {
-  position: absolute;
-  top: 15px;
-  right: 15px;
-  z-index: 5;
-  margin: 0;
-  list-style: none;
-
-  li {
-    display: block;
-    float: left;
-    width: 10px;
-    height: 10px;
-    margin-left: 5px;
-    text-indent: -999px;
-    background-color: #ccc;
-    background-color: rgba(255,255,255,.25);
-    border-radius: 5px;
-  }
-  .active {
-    background-color: #fff;
-  }
-}
-
-// Caption for text below images
-// -----------------------------
-
-.carousel-caption {
-  position: absolute;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  padding: 15px;
-  background: @grayDark;
-  background: rgba(0,0,0,.75);
-}
-.carousel-caption h4,
-.carousel-caption p {
-  color: @white;
-  line-height: @baseLineHeight;
-}
-.carousel-caption h4 {
-  margin: 0 0 5px;
-}
-.carousel-caption p {
-  margin-bottom: 0;
-}
diff --git a/assets/less/bootstrap/close.less b/assets/less/bootstrap/close.less
deleted file mode 100644
index d3693d3..0000000
--- a/assets/less/bootstrap/close.less
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-// Close icons
-// --------------------------------------------------
-
-
-.close {
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: @baseLineHeight;
-  color: #B9B9B9;
-  text-shadow: 0 1px 0 rgba(255,255,255,1);
-  &:hover,
-  &:focus {
-    color: @hoverHighlight;
-    text-decoration: none;
-    cursor: pointer
-  }
-}
-
-// Additional properties for button version
-// iOS requires the button element instead of an anchor tag.
-// If you want the anchor version, it requires `href="#"`.
-button.close {
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-  -webkit-appearance: none;
-}
diff --git a/assets/less/bootstrap/code.less b/assets/less/bootstrap/code.less
deleted file mode 100644
index 266a926..0000000
--- a/assets/less/bootstrap/code.less
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// Code (inline and blocK)
-// --------------------------------------------------
-
-
-// Inline and block code styles
-code,
-pre {
-  padding: 0 3px 2px;
-  #font > #family > .monospace;
-  font-size: @baseFontSize - 2;
-  color: @grayDark;
-  .border-radius(3px);
-}
-
-// Inline code
-code {
-  padding: 2px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-  white-space: nowrap;
-}
-
-// Blocks of code
-pre {
-  display: block;
-  padding: (@baseLineHeight - 1) / 2;
-  margin: 0 0 @baseLineHeight / 2;
-  font-size: @baseFontSize - 1; // 14px to 13px
-  line-height: @baseLineHeight;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc; // fallback for IE7-8
-  border: 1px solid rgba(0,0,0,.15);
-  .border-radius(@baseBorderRadius);
-
-  // Make prettyprint styles more spaced out for readability
-  &.prettyprint {
-    margin-bottom: @baseLineHeight;
-  }
-
-  // Account for some code outputs that place code tags in pre tags
-  code {
-    padding: 0;
-    color: inherit;
-    white-space: pre;
-    white-space: pre-wrap;
-    background-color: transparent;
-    border: 0;
-  }
-}
-
-// Enable scrollable blocks of code
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
\ No newline at end of file
diff --git a/assets/less/bootstrap/component-animations.less b/assets/less/bootstrap/component-animations.less
deleted file mode 100644
index d614263..0000000
--- a/assets/less/bootstrap/component-animations.less
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-// Component animations
-// --------------------------------------------------
-
-
-.fade {
-  opacity: 0;
-  .transition(opacity .15s linear);
-  &.in {
-    opacity: 1;
-  }
-}
-
-.collapse {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  .transition(height .35s ease);
-  &.in {
-    height: auto;
-  }
-}
diff --git a/assets/less/bootstrap/dropdowns.less b/assets/less/bootstrap/dropdowns.less
deleted file mode 100644
index 9fc60b7..0000000
--- a/assets/less/bootstrap/dropdowns.less
+++ /dev/null
@@ -1,276 +0,0 @@
-//
-// Dropdown menus
-// --------------------------------------------------
-
-
-// Use the .menu class on any <li> element within the topbar or ul.tabs and you'll get some superfancy dropdowns
-.dropup,
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  // The caret makes the toggle a bit too tall in IE7
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-
-// Dropdown arrow/caret
-// --------------------
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top:   4px solid @black;
-  border-right: 4px solid transparent;
-  border-left:  4px solid transparent;
-  content: "";
-}
-
-// Place the caret
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-
-// The dropdown menu (ul)
-// ----------------------
-.dropdown-menu {
-
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: @zindexDropdown;
-  display: none; // none by default, but block on "open" of the menu
-  float: left;
-  min-width: 160px;
-  margin: 2px 0 0; // override default ul
-  list-style: none;
-  background-color: @brandDark1;
-  color: @navIconColor;
-  border: 1px solid #ccc; // Fallback for IE7-8
-  border: 1px solid @dropdownBorder;
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding;
-          background-clip: padding-box;
-
-  // Aligns the dropdown menu to right
-  &.pull-right {
-    right: 0;
-    left: auto;
-  }
-  li.header-label{
-    background-color: @brandDark2;
-    color: #FFFFFF;
-    padding: 3px 20px;
-    font-size: 13px;
-  }
-  &.arrow {
-    &:before{
-      content: "";
-      display: block;
-      position: absolute;
-      border-style: solid;
-      top: -20px;
-      right: 10%;
-      width: 0;
-      height: 0;
-      margin-left: -10px;
-      border-left: 10px solid transparent;
-      border-right: 10px solid transparent;
-      border-bottom: 10px solid #2b2f33;
-      border-top: 10px solid transparent;
-    }
-  }
-  // Dividers (basically an hr) within the dropdown
-  .divider {
-    .nav-divider(@dropdownDividerTop, @dropdownDividerBottom);
-  }
-
-  // Links within the dropdown menu
-  > li > a {
-    &.icon:before{
-      padding-right: 5px;
-      vertical-align: middle;
-      padding-bottom: 2px;
-    }
-    font-size: 12px;
-    display: block;
-    padding: 3px 20px;
-    clear: both;
-    font-weight: normal;
-    line-height: @baseLineHeight;
-    color: @dropdownLinkColor;
-    white-space: nowrap;
-    border-bottom: 1px solid #1A1A1A;
-  }
-}
-
-// Hover/Focus state
-// -----------
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  text-decoration: none;
-  color: #fff;
-  //#gradient > .vertical(@dropdownLinkBackgroundHover, darken(@dropdownLinkBackgroundHover, 5%));
-}
-
-// Active state
-// ------------
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: @dropdownLinkColorActive;
-  text-decoration: none;
-  outline: 0;
-  #gradient > .vertical(@dropdownLinkBackgroundActive, darken(@dropdownLinkBackgroundActive, 5%));
-}
-
-// Disabled state
-// --------------
-// Gray out text and ensure the hover/focus state remains gray
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: @grayLight;
-}
-// Nuke hover/focus effects
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none; // Remove CSS gradient
-  .reset-filter();
-  cursor: default;
-}
-
-// Open state for the dropdown
-// ---------------------------
-.open {
-  // IE7's z-index only goes to the nearest positioned ancestor, which would
-  // make the menu appear below buttons that appeared later on the page
-  *z-index: @zindexDropdown;
-
-  & > .dropdown-menu {
-    display: block;
-  }
-}
-
-// Backdrop to catch body clicks on mobile, etc.
-// ---------------------------
-.dropdown-backdrop {
-  position: fixed;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  top: 0;
-  z-index: @zindexDropdown - 10;
-}
-
-// Right aligned dropdowns
-// ---------------------------
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-
-// Allow for dropdowns to go bottom up (aka, dropup-menu)
-// ------------------------------------------------------
-// Just add .dropup after the standard .dropdown class and you're set, bro.
-// TODO: abstract this so that the navbar fixed styles are not placed here?
-.dropup,
-.navbar-fixed-bottom .dropdown {
-  // Reverse the caret
-  .caret {
-    border-top: 0;
-    border-bottom: 4px solid @black;
-    content: "";
-  }
-  // Different positioning for bottom up menu
-  .dropdown-menu {
-    top: auto;
-    bottom: 100%;
-    margin-bottom: 1px;
-  }
-}
-
-// Sub menus
-// ---------------------------
-.dropdown-submenu {
-  position: relative;
-}
-// Default dropdowns
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  .border-radius(0 6px 6px 6px);
-}
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-
-// Dropups
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  .border-radius(5px 5px 5px 0);
-}
-
-// Caret to indicate there is a submenu
-.dropdown-submenu > a:after {
-  display: block;
-  content: " ";
-  float: right;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  border-left-color: darken(@dropdownBackground, 20%);
-  margin-top: 5px;
-  margin-right: -10px;
-}
-.dropdown-submenu:hover > a:after {
-  border-left-color: @dropdownLinkColorHover;
-}
-
-// Left aligned submenus
-.dropdown-submenu.pull-left {
-  // Undo the float
-  // Yes, this is awkward since .pull-left adds a float, but it sticks to our conventions elsewhere.
-  float: none;
-
-  // Positioning the submenu
-  > .dropdown-menu {
-    left: -100%;
-    margin-left: 10px;
-    .border-radius(6px 0 6px 6px);
-  }
-}
-
-// Tweak nav headers
-// -----------------
-// Increase padding from 15px to 20px on sides
-.dropdown .dropdown-menu .nav-header {
-  padding-left: 20px;
-  padding-right: 20px;
-}
-
-// Typeahead
-// ---------
-.typeahead {
-  z-index: 1051;
-  margin-top: 2px; // give it some space to breathe
-  .border-radius(@baseBorderRadius);
-}
diff --git a/assets/less/bootstrap/font-awesome/bootstrap.less b/assets/less/bootstrap/font-awesome/bootstrap.less
deleted file mode 100644
index a2c9604..0000000
--- a/assets/less/bootstrap/font-awesome/bootstrap.less
+++ /dev/null
@@ -1,84 +0,0 @@
-/* BOOTSTRAP SPECIFIC CLASSES
- * -------------------------- */
-
-/* Bootstrap 2.0 sprites.less reset */
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline;
-  width: auto;
-  height: auto;
-  line-height: normal;
-  vertical-align: baseline;
-  background-image: none;
-  background-position: 0% 0%;
-  background-repeat: repeat;
-  margin-top: 0;
-}
-
-/* more sprites.less reset */
-.icon-white,
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"],
-.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"] {
-  background-image: none;
-}
-
-
-/* keeps Bootstrap styles with and without icons the same */
-.btn, .nav {
-  [class^="icon-"],
-  [class*=" icon-"] {
-//    display: inline;
-    &.icon-large { line-height: .9em; }
-    &.icon-spin { display: inline-block; }
-  }
-}
-.nav-tabs, .nav-pills {
-  [class^="icon-"],
-  [class*=" icon-"] {
-    &, &.icon-large { line-height: .9em; }
-  }
-}
-.btn {
-  [class^="icon-"],
-  [class*=" icon-"] {
-    &.pull-left, &.pull-right {
-      &.icon-2x { margin-top: .18em; }
-    }
-    &.icon-spin.icon-large { line-height: .8em; }
-  }
-}
-.btn.btn-small {
-  [class^="icon-"],
-  [class*=" icon-"] {
-    &.pull-left, &.pull-right {
-      &.icon-2x { margin-top: .25em; }
-    }
-  }
-}
-.btn.btn-large {
-  [class^="icon-"],
-  [class*=" icon-"] {
-    margin-top: 0; // overrides bootstrap default
-    &.pull-left, &.pull-right {
-      &.icon-2x { margin-top: .05em; }
-    }
-    &.pull-left.icon-2x { margin-right: .2em; }
-    &.pull-right.icon-2x { margin-left: .2em; }
-  }
-}
-
-/* Fixes alignment in nav lists */
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  line-height: inherit;
-}
diff --git a/assets/less/bootstrap/font-awesome/core.less b/assets/less/bootstrap/font-awesome/core.less
deleted file mode 100644
index 1ef7e22..0000000
--- a/assets/less/bootstrap/font-awesome/core.less
+++ /dev/null
@@ -1,129 +0,0 @@
-/* FONT AWESOME CORE
- * -------------------------- */
-
-[class^="icon-"],
-[class*=" icon-"] {
-  .icon-FontAwesome();
-}
-
-[class^="icon-"]:before,
-[class*=" icon-"]:before {
-  text-decoration: inherit;
-  display: inline-block;
-  speak: none;
-}
-
-/* makes the font 33% larger relative to the icon container */
-.icon-large:before {
-  vertical-align: -10%;
-  font-size: 4/3em;
-}
-
-/* makes sure icons active on rollover in links */
-a {
-  [class^="icon-"],
-  [class*=" icon-"] {
-    display: inline;
-  }
-}
-
-/* increased font size for icon-large */
-[class^="icon-"],
-[class*=" icon-"] {
-  &.icon-fixed-width {
-    display: inline-block;
-    width: 16/14em;
-    text-align: right;
-    padding-right: 4/14em;
-    &.icon-large {
-      width: 20/14em;
-    }
-  }
-}
-
-.icons-ul {
-  margin-left: @icons-li-width;
-  list-style-type: none;
-
-  > li { position: relative; }
-
-  .icon-li {
-    position: absolute;
-    left: -@icons-li-width;
-    width: @icons-li-width;
-    text-align: center;
-    line-height: inherit;
-  }
-}
-
-// allows usage of the hide class directly on font awesome icons
-[class^="icon-"],
-[class*=" icon-"] {
-  &.hide {
-    display: none;
-  }
-}
-
-.icon-muted { color: @iconMuted; }
-.icon-light { color: @iconLight; }
-.icon-dark { color: @iconDark; }
-
-// Icon Borders
-// -------------------------
-
-.icon-border {
-  border: solid 1px @borderColor;
-  padding: .2em .25em .15em;
-  .border-radius(3px);
-}
-
-// Icon Sizes
-// -------------------------
-
-.icon-2x {
-  font-size: 2em;
-  &.icon-border {
-    border-width: 2px;
-    .border-radius(4px);
-  }
-}
-.icon-3x {
-  font-size: 3em;
-  &.icon-border {
-    border-width: 3px;
-    .border-radius(5px);
-  }
-}
-.icon-4x {
-  font-size: 4em;
-  &.icon-border {
-    border-width: 4px;
-    .border-radius(6px);
-  }
-}
-
-.icon-5x {
-  font-size: 5em;
-  &.icon-border {
-    border-width: 5px;
-    .border-radius(7px);
-  }
-}
-
-
-// Floats & Margins
-// -------------------------
-
-// Quick floats
-.pull-right { float: right; }
-.pull-left { float: left; }
-
-[class^="icon-"],
-[class*=" icon-"] {
-  &.pull-left {
-    margin-right: .3em;
-  }
-  &.pull-right {
-    margin-left: .3em;
-  }
-}
diff --git a/assets/less/bootstrap/font-awesome/extras.less b/assets/less/bootstrap/font-awesome/extras.less
deleted file mode 100644
index c93c260..0000000
--- a/assets/less/bootstrap/font-awesome/extras.less
+++ /dev/null
@@ -1,93 +0,0 @@
-/* EXTRAS
- * -------------------------- */
-
-/* Stacked and layered icon */
-.icon-stack();
-
-/* Animated rotating icon */
-.icon-spin {
-  display: inline-block;
-  -moz-animation: spin 2s infinite linear;
-  -o-animation: spin 2s infinite linear;
-  -webkit-animation: spin 2s infinite linear;
-  animation: spin 2s infinite linear;
-}
-
-/* Prevent stack and spinners from being taken inline when inside a link */
-a .icon-stack,
-a .icon-spin {
-  display: inline-block;
-  text-decoration: none;
-}
-
-@-moz-keyframes spin {
-  0% { -moz-transform: rotate(0deg); }
-  100% { -moz-transform: rotate(359deg); }
-}
-@-webkit-keyframes spin {
-  0% { -webkit-transform: rotate(0deg); }
-  100% { -webkit-transform: rotate(359deg); }
-}
-@-o-keyframes spin {
-  0% { -o-transform: rotate(0deg); }
-  100% { -o-transform: rotate(359deg); }
-}
-@-ms-keyframes spin {
-  0% { -ms-transform: rotate(0deg); }
-  100% { -ms-transform: rotate(359deg); }
-}
-@keyframes spin {
-  0% { transform: rotate(0deg); }
-  100% { transform: rotate(359deg); }
-}
-
-/* Icon rotations and mirroring */
-.icon-rotate-90:before {
-  -webkit-transform: rotate(90deg);
-  -moz-transform: rotate(90deg);
-  -ms-transform: rotate(90deg);
-  -o-transform: rotate(90deg);
-  transform: rotate(90deg);
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-}
-
-.icon-rotate-180:before {
-  -webkit-transform: rotate(180deg);
-  -moz-transform: rotate(180deg);
-  -ms-transform: rotate(180deg);
-  -o-transform: rotate(180deg);
-  transform: rotate(180deg);
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-}
-
-.icon-rotate-270:before {
-  -webkit-transform: rotate(270deg);
-  -moz-transform: rotate(270deg);
-  -ms-transform: rotate(270deg);
-  -o-transform: rotate(270deg);
-  transform: rotate(270deg);
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-}
-
-.icon-flip-horizontal:before {
-  -webkit-transform: scale(-1, 1);
-  -moz-transform: scale(-1, 1);
-  -ms-transform: scale(-1, 1);
-  -o-transform: scale(-1, 1);
-  transform: scale(-1, 1);
-}
-
-.icon-flip-vertical:before {
-  -webkit-transform: scale(1, -1);
-  -moz-transform: scale(1, -1);
-  -ms-transform: scale(1, -1);
-  -o-transform: scale(1, -1);
-  transform: scale(1, -1);
-}
-
-/* ensure rotation occurs inside anchor tags */
-a {
-  .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical {
-    &:before { display: inline-block; }
-  }
-}
diff --git a/assets/less/bootstrap/font-awesome/font-awesome-ie7.less b/assets/less/bootstrap/font-awesome/font-awesome-ie7.less
deleted file mode 100644
index 5d8a189..0000000
--- a/assets/less/bootstrap/font-awesome/font-awesome-ie7.less
+++ /dev/null
@@ -1,1943 +0,0 @@
-/*!
- *  Font Awesome 3.2.1
- *  the iconic font designed for Bootstrap
- *  ------------------------------------------------------------------------------
- *  The full suite of pictographic icons, examples, and documentation can be
- *  found at http://fontawesome.io.  Stay up to date on Twitter at
- *  http://twitter.com/fontawesome.
- *
- *  License
- *  ------------------------------------------------------------------------------
- *  - The Font Awesome font is licensed under SIL OFL 1.1 -
- *    http://scripts.sil.org/OFL
- *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
- *    http://opensource.org/licenses/mit-license.html
- *  - Font Awesome documentation licensed under CC BY 3.0 -
- *    http://creativecommons.org/licenses/by/3.0/
- *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
- *    "Font Awesome by Dave Gandy - http://fontawesome.io"
- *
- *  Author - Dave Gandy
- *  ------------------------------------------------------------------------------
- *  Email: dave@fontawesome.io
- *  Twitter: http://twitter.com/davegandy
- *  Work: Lead Product Designer @ Kyruus - http://kyruus.com
- */
-
-.icon-large {
-  font-size: 4/3em;
-  margin-top: -4px;
-  padding-top: 3px;
-  margin-bottom: -4px;
-  padding-bottom: 3px;
-  vertical-align: middle;
-}
-
-.nav {
-  [class^="icon-"],
-  [class*=" icon-"] {
-    vertical-align: inherit;
-    margin-top: -4px;
-    padding-top: 3px;
-    margin-bottom: -4px;
-    padding-bottom: 3px;
-    &.icon-large {
-      vertical-align: -25%;
-    }
-  }
-}
-
-.nav-pills, .nav-tabs {
-  [class^="icon-"],
-  [class*=" icon-"] {
-    &.icon-large {
-      line-height: .75em;
-      margin-top: -7px;
-      padding-top: 5px;
-      margin-bottom: -5px;
-      padding-bottom: 4px;
-    }
-  }
-}
-
-.btn {
-  [class^="icon-"],
-  [class*=" icon-"] {
-    &.pull-left, &.pull-right { vertical-align: inherit; }
-    &.icon-large {
-      margin-top: -.5em;
-    }
-  }
-}
-
-a [class^="icon-"],
-a [class*=" icon-"] {
-  cursor: pointer;
-}
-
-.ie7icon(@inner) { *zoom: ~"expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '@{inner}')"; }
-
-
-.icon-glass {
-  .ie7icon('&#xf000;');
-}
-
-
-.icon-music {
-  .ie7icon('&#xf001;');
-}
-
-
-.icon-search {
-  .ie7icon('&#xf002;');
-}
-
-
-.icon-envelope-alt {
-  .ie7icon('&#xf003;');
-}
-
-
-.icon-heart {
-  .ie7icon('&#xf004;');
-}
-
-
-.icon-star {
-  .ie7icon('&#xf005;');
-}
-
-
-.icon-star-empty {
-  .ie7icon('&#xf006;');
-}
-
-
-.icon-user {
-  .ie7icon('&#xf007;');
-}
-
-
-.icon-film {
-  .ie7icon('&#xf008;');
-}
-
-
-.icon-th-large {
-  .ie7icon('&#xf009;');
-}
-
-
-.icon-th {
-  .ie7icon('&#xf00a;');
-}
-
-
-.icon-th-list {
-  .ie7icon('&#xf00b;');
-}
-
-
-.icon-ok {
-  .ie7icon('&#xf00c;');
-}
-
-
-.icon-remove {
-  .ie7icon('&#xf00d;');
-}
-
-
-.icon-zoom-in {
-  .ie7icon('&#xf00e;');
-}
-
-
-.icon-zoom-out {
-  .ie7icon('&#xf010;');
-}
-
-
-.icon-off {
-  .ie7icon('&#xf011;');
-}
-
-.icon-power-off {
-  .ie7icon('&#xf011;');
-}
-
-
-.icon-signal {
-  .ie7icon('&#xf012;');
-}
-
-
-.icon-cog {
-  .ie7icon('&#xf013;');
-}
-
-.icon-gear {
-  .ie7icon('&#xf013;');
-}
-
-
-.icon-trash {
-  .ie7icon('&#xf014;');
-}
-
-
-.icon-home {
-  .ie7icon('&#xf015;');
-}
-
-
-.icon-file-alt {
-  .ie7icon('&#xf016;');
-}
-
-
-.icon-time {
-  .ie7icon('&#xf017;');
-}
-
-
-.icon-road {
-  .ie7icon('&#xf018;');
-}
-
-
-.icon-download-alt {
-  .ie7icon('&#xf019;');
-}
-
-
-.icon-download {
-  .ie7icon('&#xf01a;');
-}
-
-
-.icon-upload {
-  .ie7icon('&#xf01b;');
-}
-
-
-.icon-inbox {
-  .ie7icon('&#xf01c;');
-}
-
-
-.icon-play-circle {
-  .ie7icon('&#xf01d;');
-}
-
-
-.icon-repeat {
-  .ie7icon('&#xf01e;');
-}
-
-.icon-rotate-right {
-  .ie7icon('&#xf01e;');
-}
-
-
-.icon-refresh {
-  .ie7icon('&#xf021;');
-}
-
-
-.icon-list-alt {
-  .ie7icon('&#xf022;');
-}
-
-
-.icon-lock {
-  .ie7icon('&#xf023;');
-}
-
-
-.icon-flag {
-  .ie7icon('&#xf024;');
-}
-
-
-.icon-headphones {
-  .ie7icon('&#xf025;');
-}
-
-
-.icon-volume-off {
-  .ie7icon('&#xf026;');
-}
-
-
-.icon-volume-down {
-  .ie7icon('&#xf027;');
-}
-
-
-.icon-volume-up {
-  .ie7icon('&#xf028;');
-}
-
-
-.icon-qrcode {
-  .ie7icon('&#xf029;');
-}
-
-
-.icon-barcode {
-  .ie7icon('&#xf02a;');
-}
-
-
-.icon-tag {
-  .ie7icon('&#xf02b;');
-}
-
-
-.icon-tags {
-  .ie7icon('&#xf02c;');
-}
-
-
-.icon-book {
-  .ie7icon('&#xf02d;');
-}
-
-
-.icon-bookmark {
-  .ie7icon('&#xf02e;');
-}
-
-
-.icon-print {
-  .ie7icon('&#xf02f;');
-}
-
-
-.icon-camera {
-  .ie7icon('&#xf030;');
-}
-
-
-.icon-font {
-  .ie7icon('&#xf031;');
-}
-
-
-.icon-bold {
-  .ie7icon('&#xf032;');
-}
-
-
-.icon-italic {
-  .ie7icon('&#xf033;');
-}
-
-
-.icon-text-height {
-  .ie7icon('&#xf034;');
-}
-
-
-.icon-text-width {
-  .ie7icon('&#xf035;');
-}
-
-
-.icon-align-left {
-  .ie7icon('&#xf036;');
-}
-
-
-.icon-align-center {
-  .ie7icon('&#xf037;');
-}
-
-
-.icon-align-right {
-  .ie7icon('&#xf038;');
-}
-
-
-.icon-align-justify {
-  .ie7icon('&#xf039;');
-}
-
-
-.icon-list {
-  .ie7icon('&#xf03a;');
-}
-
-
-.icon-indent-left {
-  .ie7icon('&#xf03b;');
-}
-
-
-.icon-indent-right {
-  .ie7icon('&#xf03c;');
-}
-
-
-.icon-facetime-video {
-  .ie7icon('&#xf03d;');
-}
-
-
-.icon-picture {
-  .ie7icon('&#xf03e;');
-}
-
-
-.icon-pencil {
-  .ie7icon('&#xf040;');
-}
-
-
-.icon-map-marker {
-  .ie7icon('&#xf041;');
-}
-
-
-.icon-adjust {
-  .ie7icon('&#xf042;');
-}
-
-
-.icon-tint {
-  .ie7icon('&#xf043;');
-}
-
-
-.icon-edit {
-  .ie7icon('&#xf044;');
-}
-
-
-.icon-share {
-  .ie7icon('&#xf045;');
-}
-
-
-.icon-check {
-  .ie7icon('&#xf046;');
-}
-
-
-.icon-move {
-  .ie7icon('&#xf047;');
-}
-
-
-.icon-step-backward {
-  .ie7icon('&#xf048;');
-}
-
-
-.icon-fast-backward {
-  .ie7icon('&#xf049;');
-}
-
-
-.icon-backward {
-  .ie7icon('&#xf04a;');
-}
-
-
-.icon-play {
-  .ie7icon('&#xf04b;');
-}
-
-
-.icon-pause {
-  .ie7icon('&#xf04c;');
-}
-
-
-.icon-stop {
-  .ie7icon('&#xf04d;');
-}
-
-
-.icon-forward {
-  .ie7icon('&#xf04e;');
-}
-
-
-.icon-fast-forward {
-  .ie7icon('&#xf050;');
-}
-
-
-.icon-step-forward {
-  .ie7icon('&#xf051;');
-}
-
-
-.icon-eject {
-  .ie7icon('&#xf052;');
-}
-
-
-.icon-chevron-left {
-  .ie7icon('&#xf053;');
-}
-
-
-.icon-chevron-right {
-  .ie7icon('&#xf054;');
-}
-
-
-.icon-plus-sign {
-  .ie7icon('&#xf055;');
-}
-
-
-.icon-minus-sign {
-  .ie7icon('&#xf056;');
-}
-
-
-.icon-remove-sign {
-  .ie7icon('&#xf057;');
-}
-
-
-.icon-ok-sign {
-  .ie7icon('&#xf058;');
-}
-
-
-.icon-question-sign {
-  .ie7icon('&#xf059;');
-}
-
-
-.icon-info-sign {
-  .ie7icon('&#xf05a;');
-}
-
-
-.icon-screenshot {
-  .ie7icon('&#xf05b;');
-}
-
-
-.icon-remove-circle {
-  .ie7icon('&#xf05c;');
-}
-
-
-.icon-ok-circle {
-  .ie7icon('&#xf05d;');
-}
-
-
-.icon-ban-circle {
-  .ie7icon('&#xf05e;');
-}
-
-
-.icon-arrow-left {
-  .ie7icon('&#xf060;');
-}
-
-
-.icon-arrow-right {
-  .ie7icon('&#xf061;');
-}
-
-
-.icon-arrow-up {
-  .ie7icon('&#xf062;');
-}
-
-
-.icon-arrow-down {
-  .ie7icon('&#xf063;');
-}
-
-
-.icon-share-alt {
-  .ie7icon('&#xf064;');
-}
-
-.icon-mail-forward {
-  .ie7icon('&#xf064;');
-}
-
-
-.icon-resize-full {
-  .ie7icon('&#xf065;');
-}
-
-
-.icon-resize-small {
-  .ie7icon('&#xf066;');
-}
-
-
-.icon-plus {
-  .ie7icon('&#xf067;');
-}
-
-
-.icon-minus {
-  .ie7icon('&#xf068;');
-}
-
-
-.icon-asterisk {
-  .ie7icon('&#xf069;');
-}
-
-
-.icon-exclamation-sign {
-  .ie7icon('&#xf06a;');
-}
-
-
-.icon-gift {
-  .ie7icon('&#xf06b;');
-}
-
-
-.icon-leaf {
-  .ie7icon('&#xf06c;');
-}
-
-
-.icon-fire {
-  .ie7icon('&#xf06d;');
-}
-
-
-.icon-eye-open {
-  .ie7icon('&#xf06e;');
-}
-
-
-.icon-eye-close {
-  .ie7icon('&#xf070;');
-}
-
-
-.icon-warning-sign {
-  .ie7icon('&#xf071;');
-}
-
-
-.icon-plane {
-  .ie7icon('&#xf072;');
-}
-
-
-.icon-calendar {
-  .ie7icon('&#xf073;');
-}
-
-
-.icon-random {
-  .ie7icon('&#xf074;');
-}
-
-
-.icon-comment {
-  .ie7icon('&#xf075;');
-}
-
-
-.icon-magnet {
-  .ie7icon('&#xf076;');
-}
-
-
-.icon-chevron-up {
-  .ie7icon('&#xf077;');
-}
-
-
-.icon-chevron-down {
-  .ie7icon('&#xf078;');
-}
-
-
-.icon-retweet {
-  .ie7icon('&#xf079;');
-}
-
-
-.icon-shopping-cart {
-  .ie7icon('&#xf07a;');
-}
-
-
-.icon-folder-close {
-  .ie7icon('&#xf07b;');
-}
-
-
-.icon-folder-open {
-  .ie7icon('&#xf07c;');
-}
-
-
-.icon-resize-vertical {
-  .ie7icon('&#xf07d;');
-}
-
-
-.icon-resize-horizontal {
-  .ie7icon('&#xf07e;');
-}
-
-
-.icon-bar-chart {
-  .ie7icon('&#xf080;');
-}
-
-
-.icon-twitter-sign {
-  .ie7icon('&#xf081;');
-}
-
-
-.icon-facebook-sign {
-  .ie7icon('&#xf082;');
-}
-
-
-.icon-camera-retro {
-  .ie7icon('&#xf083;');
-}
-
-
-.icon-key {
-  .ie7icon('&#xf084;');
-}
-
-
-.icon-cogs {
-  .ie7icon('&#xf085;');
-}
-
-.icon-gears {
-  .ie7icon('&#xf085;');
-}
-
-
-.icon-comments {
-  .ie7icon('&#xf086;');
-}
-
-
-.icon-thumbs-up-alt {
-  .ie7icon('&#xf087;');
-}
-
-
-.icon-thumbs-down-alt {
-  .ie7icon('&#xf088;');
-}
-
-
-.icon-star-half {
-  .ie7icon('&#xf089;');
-}
-
-
-.icon-heart-empty {
-  .ie7icon('&#xf08a;');
-}
-
-
-.icon-signout {
-  .ie7icon('&#xf08b;');
-}
-
-
-.icon-linkedin-sign {
-  .ie7icon('&#xf08c;');
-}
-
-
-.icon-pushpin {
-  .ie7icon('&#xf08d;');
-}
-
-
-.icon-external-link {
-  .ie7icon('&#xf08e;');
-}
-
-
-.icon-signin {
-  .ie7icon('&#xf090;');
-}
-
-
-.icon-trophy {
-  .ie7icon('&#xf091;');
-}
-
-
-.icon-github-sign {
-  .ie7icon('&#xf092;');
-}
-
-
-.icon-upload-alt {
-  .ie7icon('&#xf093;');
-}
-
-
-.icon-lemon {
-  .ie7icon('&#xf094;');
-}
-
-
-.icon-phone {
-  .ie7icon('&#xf095;');
-}
-
-
-.icon-check-empty {
-  .ie7icon('&#xf096;');
-}
-
-.icon-unchecked {
-  .ie7icon('&#xf096;');
-}
-
-
-.icon-bookmark-empty {
-  .ie7icon('&#xf097;');
-}
-
-
-.icon-phone-sign {
-  .ie7icon('&#xf098;');
-}
-
-
-.icon-twitter {
-  .ie7icon('&#xf099;');
-}
-
-
-.icon-facebook {
-  .ie7icon('&#xf09a;');
-}
-
-
-.icon-github {
-  .ie7icon('&#xf09b;');
-}
-
-
-.icon-unlock {
-  .ie7icon('&#xf09c;');
-}
-
-
-.icon-credit-card {
-  .ie7icon('&#xf09d;');
-}
-
-
-.icon-rss {
-  .ie7icon('&#xf09e;');
-}
-
-
-.icon-hdd {
-  .ie7icon('&#xf0a0;');
-}
-
-
-.icon-bullhorn {
-  .ie7icon('&#xf0a1;');
-}
-
-
-.icon-bell {
-  .ie7icon('&#xf0a2;');
-}
-
-
-.icon-certificate {
-  .ie7icon('&#xf0a3;');
-}
-
-
-.icon-hand-right {
-  .ie7icon('&#xf0a4;');
-}
-
-
-.icon-hand-left {
-  .ie7icon('&#xf0a5;');
-}
-
-
-.icon-hand-up {
-  .ie7icon('&#xf0a6;');
-}
-
-
-.icon-hand-down {
-  .ie7icon('&#xf0a7;');
-}
-
-
-.icon-circle-arrow-left {
-  .ie7icon('&#xf0a8;');
-}
-
-
-.icon-circle-arrow-right {
-  .ie7icon('&#xf0a9;');
-}
-
-
-.icon-circle-arrow-up {
-  .ie7icon('&#xf0aa;');
-}
-
-
-.icon-circle-arrow-down {
-  .ie7icon('&#xf0ab;');
-}
-
-
-.icon-globe {
-  .ie7icon('&#xf0ac;');
-}
-
-
-.icon-wrench {
-  .ie7icon('&#xf0ad;');
-}
-
-
-.icon-tasks {
-  .ie7icon('&#xf0ae;');
-}
-
-
-.icon-filter {
-  .ie7icon('&#xf0b0;');
-}
-
-
-.icon-briefcase {
-  .ie7icon('&#xf0b1;');
-}
-
-
-.icon-fullscreen {
-  .ie7icon('&#xf0b2;');
-}
-
-
-.icon-group {
-  .ie7icon('&#xf0c0;');
-}
-
-
-.icon-link {
-  .ie7icon('&#xf0c1;');
-}
-
-
-.icon-cloud {
-  .ie7icon('&#xf0c2;');
-}
-
-
-.icon-beaker {
-  .ie7icon('&#xf0c3;');
-}
-
-
-.icon-cut {
-  .ie7icon('&#xf0c4;');
-}
-
-
-.icon-copy {
-  .ie7icon('&#xf0c5;');
-}
-
-
-.icon-paper-clip {
-  .ie7icon('&#xf0c6;');
-}
-
-.icon-paperclip {
-  .ie7icon('&#xf0c6;');
-}
-
-
-.icon-save {
-  .ie7icon('&#xf0c7;');
-}
-
-
-.icon-sign-blank {
-  .ie7icon('&#xf0c8;');
-}
-
-
-.icon-reorder {
-  .ie7icon('&#xf0c9;');
-}
-
-
-.icon-list-ul {
-  .ie7icon('&#xf0ca;');
-}
-
-
-.icon-list-ol {
-  .ie7icon('&#xf0cb;');
-}
-
-
-.icon-strikethrough {
-  .ie7icon('&#xf0cc;');
-}
-
-
-.icon-underline {
-  .ie7icon('&#xf0cd;');
-}
-
-
-.icon-table {
-  .ie7icon('&#xf0ce;');
-}
-
-
-.icon-magic {
-  .ie7icon('&#xf0d0;');
-}
-
-
-.icon-truck {
-  .ie7icon('&#xf0d1;');
-}
-
-
-.icon-pinterest {
-  .ie7icon('&#xf0d2;');
-}
-
-
-.icon-pinterest-sign {
-  .ie7icon('&#xf0d3;');
-}
-
-
-.icon-money {
-  .ie7icon('&#xf0d6;');
-}
-
-
-.icon-caret-down {
-  .ie7icon('&#xf0d7;');
-}
-
-
-.icon-caret-up {
-  .ie7icon('&#xf0d8;');
-}
-
-
-.icon-caret-left {
-  .ie7icon('&#xf0d9;');
-}
-
-
-.icon-caret-right {
-  .ie7icon('&#xf0da;');
-}
-
-
-.icon-columns {
-  .ie7icon('&#xf0db;');
-}
-
-
-.icon-sort {
-  .ie7icon('&#xf0dc;');
-}
-
-
-.icon-sort-down {
-  .ie7icon('&#xf0dd;');
-}
-
-
-.icon-sort-up {
-  .ie7icon('&#xf0de;');
-}
-
-
-.icon-envelope {
-  .ie7icon('&#xf0e0;');
-}
-
-
-.icon-linkedin {
-  .ie7icon('&#xf0e1;');
-}
-
-
-.icon-undo {
-  .ie7icon('&#xf0e2;');
-}
-
-.icon-rotate-left {
-  .ie7icon('&#xf0e2;');
-}
-
-
-.icon-legal {
-  .ie7icon('&#xf0e3;');
-}
-
-
-.icon-dashboard {
-  .ie7icon('&#xf0e4;');
-}
-
-
-.icon-comment-alt {
-  .ie7icon('&#xf0e5;');
-}
-
-
-.icon-comments-alt {
-  .ie7icon('&#xf0e6;');
-}
-
-
-.icon-bolt {
-  .ie7icon('&#xf0e7;');
-}
-
-
-.icon-sitemap {
-  .ie7icon('&#xf0e8;');
-}
-
-
-.icon-umbrella {
-  .ie7icon('&#xf0e9;');
-}
-
-
-.icon-paste {
-  .ie7icon('&#xf0ea;');
-}
-
-
-.icon-lightbulb {
-  .ie7icon('&#xf0eb;');
-}
-
-
-.icon-exchange {
-  .ie7icon('&#xf0ec;');
-}
-
-
-.icon-cloud-download {
-  .ie7icon('&#xf0ed;');
-}
-
-
-.icon-cloud-upload {
-  .ie7icon('&#xf0ee;');
-}
-
-
-.icon-user-md {
-  .ie7icon('&#xf0f0;');
-}
-
-
-.icon-stethoscope {
-  .ie7icon('&#xf0f1;');
-}
-
-
-.icon-suitcase {
-  .ie7icon('&#xf0f2;');
-}
-
-
-.icon-bell-alt {
-  .ie7icon('&#xf0f3;');
-}
-
-
-.icon-coffee {
-  .ie7icon('&#xf0f4;');
-}
-
-
-.icon-food {
-  .ie7icon('&#xf0f5;');
-}
-
-
-.icon-file-text-alt {
-  .ie7icon('&#xf0f6;');
-}
-
-
-.icon-building {
-  .ie7icon('&#xf0f7;');
-}
-
-
-.icon-hospital {
-  .ie7icon('&#xf0f8;');
-}
-
-
-.icon-ambulance {
-  .ie7icon('&#xf0f9;');
-}
-
-
-.icon-medkit {
-  .ie7icon('&#xf0fa;');
-}
-
-
-.icon-fighter-jet {
-  .ie7icon('&#xf0fb;');
-}
-
-
-.icon-beer {
-  .ie7icon('&#xf0fc;');
-}
-
-
-.icon-h-sign {
-  .ie7icon('&#xf0fd;');
-}
-
-
-.icon-plus-sign-alt {
-  .ie7icon('&#xf0fe;');
-}
-
-
-.icon-double-angle-left {
-  .ie7icon('&#xf100;');
-}
-
-
-.icon-double-angle-right {
-  .ie7icon('&#xf101;');
-}
-
-
-.icon-double-angle-up {
-  .ie7icon('&#xf102;');
-}
-
-
-.icon-double-angle-down {
-  .ie7icon('&#xf103;');
-}
-
-
-.icon-angle-left {
-  .ie7icon('&#xf104;');
-}
-
-
-.icon-angle-right {
-  .ie7icon('&#xf105;');
-}
-
-
-.icon-angle-up {
-  .ie7icon('&#xf106;');
-}
-
-
-.icon-angle-down {
-  .ie7icon('&#xf107;');
-}
-
-
-.icon-desktop {
-  .ie7icon('&#xf108;');
-}
-
-
-.icon-laptop {
-  .ie7icon('&#xf109;');
-}
-
-
-.icon-tablet {
-  .ie7icon('&#xf10a;');
-}
-
-
-.icon-mobile-phone {
-  .ie7icon('&#xf10b;');
-}
-
-
-.icon-circle-blank {
-  .ie7icon('&#xf10c;');
-}
-
-
-.icon-quote-left {
-  .ie7icon('&#xf10d;');
-}
-
-
-.icon-quote-right {
-  .ie7icon('&#xf10e;');
-}
-
-
-.icon-spinner {
-  .ie7icon('&#xf110;');
-}
-
-
-.icon-circle {
-  .ie7icon('&#xf111;');
-}
-
-
-.icon-reply {
-  .ie7icon('&#xf112;');
-}
-
-.icon-mail-reply {
-  .ie7icon('&#xf112;');
-}
-
-
-.icon-github-alt {
-  .ie7icon('&#xf113;');
-}
-
-
-.icon-folder-close-alt {
-  .ie7icon('&#xf114;');
-}
-
-
-.icon-folder-open-alt {
-  .ie7icon('&#xf115;');
-}
-
-
-.icon-expand-alt {
-  .ie7icon('&#xf116;');
-}
-
-
-.icon-collapse-alt {
-  .ie7icon('&#xf117;');
-}
-
-
-.icon-smile {
-  .ie7icon('&#xf118;');
-}
-
-
-.icon-frown {
-  .ie7icon('&#xf119;');
-}
-
-
-.icon-meh {
-  .ie7icon('&#xf11a;');
-}
-
-
-.icon-gamepad {
-  .ie7icon('&#xf11b;');
-}
-
-
-.icon-keyboard {
-  .ie7icon('&#xf11c;');
-}
-
-
-.icon-flag-alt {
-  .ie7icon('&#xf11d;');
-}
-
-
-.icon-flag-checkered {
-  .ie7icon('&#xf11e;');
-}
-
-
-.icon-terminal {
-  .ie7icon('&#xf120;');
-}
-
-
-.icon-code {
-  .ie7icon('&#xf121;');
-}
-
-
-.icon-reply-all {
-  .ie7icon('&#xf122;');
-}
-
-
-.icon-mail-reply-all {
-  .ie7icon('&#xf122;');
-}
-
-
-.icon-star-half-empty {
-  .ie7icon('&#xf123;');
-}
-
-.icon-star-half-full {
-  .ie7icon('&#xf123;');
-}
-
-
-.icon-location-arrow {
-  .ie7icon('&#xf124;');
-}
-
-
-.icon-crop {
-  .ie7icon('&#xf125;');
-}
-
-
-.icon-code-fork {
-  .ie7icon('&#xf126;');
-}
-
-
-.icon-unlink {
-  .ie7icon('&#xf127;');
-}
-
-
-.icon-question {
-  .ie7icon('&#xf128;');
-}
-
-
-.icon-info {
-  .ie7icon('&#xf129;');
-}
-
-
-.icon-exclamation {
-  .ie7icon('&#xf12a;');
-}
-
-
-.icon-superscript {
-  .ie7icon('&#xf12b;');
-}
-
-
-.icon-subscript {
-  .ie7icon('&#xf12c;');
-}
-
-
-.icon-eraser {
-  .ie7icon('&#xf12d;');
-}
-
-
-.icon-puzzle-piece {
-  .ie7icon('&#xf12e;');
-}
-
-
-.icon-microphone {
-  .ie7icon('&#xf130;');
-}
-
-
-.icon-microphone-off {
-  .ie7icon('&#xf131;');
-}
-
-
-.icon-shield {
-  .ie7icon('&#xf132;');
-}
-
-
-.icon-calendar-empty {
-  .ie7icon('&#xf133;');
-}
-
-
-.icon-fire-extinguisher {
-  .ie7icon('&#xf134;');
-}
-
-
-.icon-rocket {
-  .ie7icon('&#xf135;');
-}
-
-
-.icon-maxcdn {
-  .ie7icon('&#xf136;');
-}
-
-
-.icon-chevron-sign-left {
-  .ie7icon('&#xf137;');
-}
-
-
-.icon-chevron-sign-right {
-  .ie7icon('&#xf138;');
-}
-
-
-.icon-chevron-sign-up {
-  .ie7icon('&#xf139;');
-}
-
-
-.icon-chevron-sign-down {
-  .ie7icon('&#xf13a;');
-}
-
-
-.icon-html5 {
-  .ie7icon('&#xf13b;');
-}
-
-
-.icon-css3 {
-  .ie7icon('&#xf13c;');
-}
-
-
-.icon-anchor {
-  .ie7icon('&#xf13d;');
-}
-
-
-.icon-unlock-alt {
-  .ie7icon('&#xf13e;');
-}
-
-
-.icon-bullseye {
-  .ie7icon('&#xf140;');
-}
-
-
-.icon-ellipsis-horizontal {
-  .ie7icon('&#xf141;');
-}
-
-
-.icon-ellipsis-vertical {
-  .ie7icon('&#xf142;');
-}
-
-
-.icon-rss-sign {
-  .ie7icon('&#xf143;');
-}
-
-
-.icon-play-sign {
-  .ie7icon('&#xf144;');
-}
-
-
-.icon-ticket {
-  .ie7icon('&#xf145;');
-}
-
-
-.icon-minus-sign-alt {
-  .ie7icon('&#xf146;');
-}
-
-
-.icon-check-minus {
-  .ie7icon('&#xf147;');
-}
-
-
-.icon-level-up {
-  .ie7icon('&#xf148;');
-}
-
-
-.icon-level-down {
-  .ie7icon('&#xf149;');
-}
-
-
-.icon-check-sign {
-  .ie7icon('&#xf14a;');
-}
-
-
-.icon-edit-sign {
-  .ie7icon('&#xf14b;');
-}
-
-
-.icon-external-link-sign {
-  .ie7icon('&#xf14c;');
-}
-
-
-.icon-share-sign {
-  .ie7icon('&#xf14d;');
-}
-
-
-.icon-compass {
-  .ie7icon('&#xf14e;');
-}
-
-
-.icon-collapse {
-  .ie7icon('&#xf150;');
-}
-
-
-.icon-collapse-top {
-  .ie7icon('&#xf151;');
-}
-
-
-.icon-expand {
-  .ie7icon('&#xf152;');
-}
-
-
-.icon-eur {
-  .ie7icon('&#xf153;');
-}
-
-.icon-euro {
-  .ie7icon('&#xf153;');
-}
-
-
-.icon-gbp {
-  .ie7icon('&#xf154;');
-}
-
-
-.icon-usd {
-  .ie7icon('&#xf155;');
-}
-
-.icon-dollar {
-  .ie7icon('&#xf155;');
-}
-
-
-.icon-inr {
-  .ie7icon('&#xf156;');
-}
-
-.icon-rupee {
-  .ie7icon('&#xf156;');
-}
-
-
-.icon-jpy {
-  .ie7icon('&#xf157;');
-}
-
-.icon-yen {
-  .ie7icon('&#xf157;');
-}
-
-
-.icon-cny {
-  .ie7icon('&#xf158;');
-}
-
-.icon-renminbi {
-  .ie7icon('&#xf158;');
-}
-
-
-.icon-krw {
-  .ie7icon('&#xf159;');
-}
-
-.icon-won {
-  .ie7icon('&#xf159;');
-}
-
-
-.icon-btc {
-  .ie7icon('&#xf15a;');
-}
-
-.icon-bitcoin {
-  .ie7icon('&#xf15a;');
-}
-
-
-.icon-file {
-  .ie7icon('&#xf15b;');
-}
-
-
-.icon-file-text {
-  .ie7icon('&#xf15c;');
-}
-
-
-.icon-sort-by-alphabet {
-  .ie7icon('&#xf15d;');
-}
-
-
-.icon-sort-by-alphabet-alt {
-  .ie7icon('&#xf15e;');
-}
-
-
-.icon-sort-by-attributes {
-  .ie7icon('&#xf160;');
-}
-
-
-.icon-sort-by-attributes-alt {
-  .ie7icon('&#xf161;');
-}
-
-
-.icon-sort-by-order {
-  .ie7icon('&#xf162;');
-}
-
-
-.icon-sort-by-order-alt {
-  .ie7icon('&#xf163;');
-}
-
-
-.icon-thumbs-up {
-  .ie7icon('&#xf164;');
-}
-
-
-.icon-thumbs-down {
-  .ie7icon('&#xf165;');
-}
-
-
-.icon-youtube-sign {
-  .ie7icon('&#xf166;');
-}
-
-
-.icon-youtube {
-  .ie7icon('&#xf167;');
-}
-
-
-.icon-xing {
-  .ie7icon('&#xf168;');
-}
-
-
-.icon-xing-sign {
-  .ie7icon('&#xf169;');
-}
-
-
-.icon-youtube-play {
-  .ie7icon('&#xf16a;');
-}
-
-
-.icon-dropbox {
-  .ie7icon('&#xf16b;');
-}
-
-
-.icon-stackexchange {
-  .ie7icon('&#xf16c;');
-}
-
-
-.icon-instagram {
-  .ie7icon('&#xf16d;');
-}
-
-
-.icon-flickr {
-  .ie7icon('&#xf16e;');
-}
-
-
-.icon-adn {
-  .ie7icon('&#xf170;');
-}
-
-
-.icon-bitbucket {
-  .ie7icon('&#xf171;');
-}
-
-
-.icon-bitbucket-sign {
-  .ie7icon('&#xf172;');
-}
-
-
-.icon-tumblr {
-  .ie7icon('&#xf173;');
-}
-
-
-.icon-tumblr-sign {
-  .ie7icon('&#xf174;');
-}
-
-
-.icon-long-arrow-down {
-  .ie7icon('&#xf175;');
-}
-
-
-.icon-long-arrow-up {
-  .ie7icon('&#xf176;');
-}
-
-
-.icon-long-arrow-left {
-  .ie7icon('&#xf177;');
-}
-
-
-.icon-long-arrow-right {
-  .ie7icon('&#xf178;');
-}
-
-
-.icon-apple {
-  .ie7icon('&#xf179;');
-}
-
-
-.icon-windows {
-  .ie7icon('&#xf17a;');
-}
-
-
-.icon-android {
-  .ie7icon('&#xf17b;');
-}
-
-
-.icon-linux {
-  .ie7icon('&#xf17c;');
-}
-
-
-.icon-dribbble {
-  .ie7icon('&#xf17d;');
-}
-
-
-.icon-skype {
-  .ie7icon('&#xf17e;');
-}
-
-
-.icon-foursquare {
-  .ie7icon('&#xf180;');
-}
-
-
-.icon-trello {
-  .ie7icon('&#xf181;');
-}
-
-
-.icon-female {
-  .ie7icon('&#xf182;');
-}
-
-
-.icon-male {
-  .ie7icon('&#xf183;');
-}
-
-
-.icon-gittip {
-  .ie7icon('&#xf184;');
-}
-
-
-.icon-sun {
-  .ie7icon('&#xf185;');
-}
-
-
-.icon-moon {
-  .ie7icon('&#xf186;');
-}
-
-
-.icon-archive {
-  .ie7icon('&#xf187;');
-}
-
-
-.icon-bug {
-  .ie7icon('&#xf188;');
-}
-
-
-.icon-vk {
-  .ie7icon('&#xf189;');
-}
-
-
-.icon-weibo {
-  .ie7icon('&#xf18a;');
-}
-
-
-.icon-renren {
-  .ie7icon('&#xf18b;');
-}
-
-
diff --git a/assets/less/bootstrap/font-awesome/font-awesome.less b/assets/less/bootstrap/font-awesome/font-awesome.less
deleted file mode 100644
index 0f45461..0000000
--- a/assets/less/bootstrap/font-awesome/font-awesome.less
+++ /dev/null
@@ -1,33 +0,0 @@
-/*!
- *  Font Awesome 3.2.1
- *  the iconic font designed for Bootstrap
- *  ------------------------------------------------------------------------------
- *  The full suite of pictographic icons, examples, and documentation can be
- *  found at http://fontawesome.io.  Stay up to date on Twitter at
- *  http://twitter.com/fontawesome.
- *
- *  License
- *  ------------------------------------------------------------------------------
- *  - The Font Awesome font is licensed under SIL OFL 1.1 -
- *    http://scripts.sil.org/OFL
- *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
- *    http://opensource.org/licenses/mit-license.html
- *  - Font Awesome documentation licensed under CC BY 3.0 -
- *    http://creativecommons.org/licenses/by/3.0/
- *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
- *    "Font Awesome by Dave Gandy - http://fontawesome.io"
- *
- *  Author - Dave Gandy
- *  ------------------------------------------------------------------------------
- *  Email: dave@fontawesome.io
- *  Twitter: http://twitter.com/davegandy
- *  Work: Lead Product Designer @ Kyruus - http://kyruus.com
- */
-
-@import "variables.less";
-@import "mixins.less";
-@import "path.less";
-@import "core.less";
-@import "bootstrap.less";
-@import "extras.less";
-@import "icons.less";
diff --git a/assets/less/bootstrap/font-awesome/icons.less b/assets/less/bootstrap/font-awesome/icons.less
deleted file mode 100644
index f6f4f44..0000000
--- a/assets/less/bootstrap/font-awesome/icons.less
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
-   readers do not read off random characters that represent icons */
-
-.icon-glass:before { content: @glass; }
-.icon-music:before { content: @music; }
-.icon-search:before { content: @search; }
-.icon-envelope-alt:before { content: @envelope-alt; }
-.icon-heart:before { content: @heart; }
-.icon-star:before { content: @star; }
-.icon-star-empty:before { content: @star-empty; }
-.icon-user:before { content: @user; }
-.icon-film:before { content: @film; }
-.icon-th-large:before { content: @th-large; }
-.icon-th:before { content: @th; }
-.icon-th-list:before { content: @th-list; }
-.icon-ok:before { content: @ok; }
-.icon-remove:before { content: @remove; }
-.icon-zoom-in:before { content: @zoom-in; }
-.icon-zoom-out:before { content: @zoom-out; }
-.icon-power-off:before,
-.icon-off:before { content: @off; }
-.icon-signal:before { content: @signal; }
-.icon-gear:before,
-.icon-cog:before { content: @cog; }
-.icon-trash:before { content: @trash; }
-.icon-home:before { content: @home; }
-.icon-file-alt:before { content: @file-alt; }
-.icon-time:before { content: @time; }
-.icon-road:before { content: @road; }
-.icon-download-alt:before { content: @download-alt; }
-.icon-download:before { content: @download; }
-.icon-upload:before { content: @upload; }
-.icon-inbox:before { content: @inbox; }
-.icon-play-circle:before { content: @play-circle; }
-.icon-rotate-right:before,
-.icon-repeat:before { content: @repeat; }
-.icon-refresh:before { content: @refresh; }
-.icon-list-alt:before { content: @list-alt; }
-.icon-lock:before { content: @lock; }
-.icon-flag:before { content: @flag; }
-.icon-headphones:before { content: @headphones; }
-.icon-volume-off:before { content: @volume-off; }
-.icon-volume-down:before { content: @volume-down; }
-.icon-volume-up:before { content: @volume-up; }
-.icon-qrcode:before { content: @qrcode; }
-.icon-barcode:before { content: @barcode; }
-.icon-tag:before { content: @tag; }
-.icon-tags:before { content: @tags; }
-.icon-book:before { content: @book; }
-.icon-bookmark:before { content: @bookmark; }
-.icon-print:before { content: @print; }
-.icon-camera:before { content: @camera; }
-.icon-font:before { content: @font; }
-.icon-bold:before { content: @bold; }
-.icon-italic:before { content: @italic; }
-.icon-text-height:before { content: @text-height; }
-.icon-text-width:before { content: @text-width; }
-.icon-align-left:before { content: @align-left; }
-.icon-align-center:before { content: @align-center; }
-.icon-align-right:before { content: @align-right; }
-.icon-align-justify:before { content: @align-justify; }
-.icon-list:before { content: @list; }
-.icon-indent-left:before { content: @indent-left; }
-.icon-indent-right:before { content: @indent-right; }
-.icon-facetime-video:before { content: @facetime-video; }
-.icon-picture:before { content: @picture; }
-.icon-pencil:before { content: @pencil; }
-.icon-map-marker:before { content: @map-marker; }
-.icon-adjust:before { content: @adjust; }
-.icon-tint:before { content: @tint; }
-.icon-edit:before { content: @edit; }
-.icon-share:before { content: @share; }
-.icon-check:before { content: @check; }
-.icon-move:before { content: @move; }
-.icon-step-backward:before { content: @step-backward; }
-.icon-fast-backward:before { content: @fast-backward; }
-.icon-backward:before { content: @backward; }
-.icon-play:before { content: @play; }
-.icon-pause:before { content: @pause; }
-.icon-stop:before { content: @stop; }
-.icon-forward:before { content: @forward; }
-.icon-fast-forward:before { content: @fast-forward; }
-.icon-step-forward:before { content: @step-forward; }
-.icon-eject:before { content: @eject; }
-.icon-chevron-left:before { content: @chevron-left; }
-.icon-chevron-right:before { content: @chevron-right; }
-.icon-plus-sign:before { content: @plus-sign; }
-.icon-minus-sign:before { content: @minus-sign; }
-.icon-remove-sign:before { content: @remove-sign; }
-.icon-ok-sign:before { content: @ok-sign; }
-.icon-question-sign:before { content: @question-sign; }
-.icon-info-sign:before { content: @info-sign; }
-.icon-screenshot:before { content: @screenshot; }
-.icon-remove-circle:before { content: @remove-circle; }
-.icon-ok-circle:before { content: @ok-circle; }
-.icon-ban-circle:before { content: @ban-circle; }
-.icon-arrow-left:before { content: @arrow-left; }
-.icon-arrow-right:before { content: @arrow-right; }
-.icon-arrow-up:before { content: @arrow-up; }
-.icon-arrow-down:before { content: @arrow-down; }
-.icon-mail-forward:before,
-.icon-share-alt:before { content: @share-alt; }
-.icon-resize-full:before { content: @resize-full; }
-.icon-resize-small:before { content: @resize-small; }
-.icon-plus:before { content: @plus; }
-.icon-minus:before { content: @minus; }
-.icon-asterisk:before { content: @asterisk; }
-.icon-exclamation-sign:before { content: @exclamation-sign; }
-.icon-gift:before { content: @gift; }
-.icon-leaf:before { content: @leaf; }
-.icon-fire:before { content: @fire; }
-.icon-eye-open:before { content: @eye-open; }
-.icon-eye-close:before { content: @eye-close; }
-.icon-warning-sign:before { content: @warning-sign; }
-.icon-plane:before { content: @plane; }
-.icon-calendar:before { content: @calendar; }
-.icon-random:before { content: @random; }
-.icon-comment:before { content: @comment; }
-.icon-magnet:before { content: @magnet; }
-.icon-chevron-up:before { content: @chevron-up; }
-.icon-chevron-down:before { content: @chevron-down; }
-.icon-retweet:before { content: @retweet; }
-.icon-shopping-cart:before { content: @shopping-cart; }
-.icon-folder-close:before { content: @folder-close; }
-.icon-folder-open:before { content: @folder-open; }
-.icon-resize-vertical:before { content: @resize-vertical; }
-.icon-resize-horizontal:before { content: @resize-horizontal; }
-.icon-bar-chart:before { content: @bar-chart; }
-.icon-twitter-sign:before { content: @twitter-sign; }
-.icon-facebook-sign:before { content: @facebook-sign; }
-.icon-camera-retro:before { content: @camera-retro; }
-.icon-key:before { content: @key; }
-.icon-gears:before,
-.icon-cogs:before { content: @cogs; }
-.icon-comments:before { content: @comments; }
-.icon-thumbs-up-alt:before { content: @thumbs-up-alt; }
-.icon-thumbs-down-alt:before { content: @thumbs-down-alt; }
-.icon-star-half:before { content: @star-half; }
-.icon-heart-empty:before { content: @heart-empty; }
-.icon-signout:before { content: @signout; }
-.icon-linkedin-sign:before { content: @linkedin-sign; }
-.icon-pushpin:before { content: @pushpin; }
-.icon-external-link:before { content: @external-link; }
-.icon-signin:before { content: @signin; }
-.icon-trophy:before { content: @trophy; }
-.icon-github-sign:before { content: @github-sign; }
-.icon-upload-alt:before { content: @upload-alt; }
-.icon-lemon:before { content: @lemon; }
-.icon-phone:before { content: @phone; }
-.icon-unchecked:before,
-.icon-check-empty:before { content: @check-empty; }
-.icon-bookmark-empty:before { content: @bookmark-empty; }
-.icon-phone-sign:before { content: @phone-sign; }
-.icon-twitter:before { content: @twitter; }
-.icon-facebook:before { content: @facebook; }
-.icon-github:before { content: @github; }
-.icon-unlock:before { content: @unlock; }
-.icon-credit-card:before { content: @credit-card; }
-.icon-rss:before { content: @rss; }
-.icon-hdd:before { content: @hdd; }
-.icon-bullhorn:before { content: @bullhorn; }
-.icon-bell:before { content: @bell; }
-.icon-certificate:before { content: @certificate; }
-.icon-hand-right:before { content: @hand-right; }
-.icon-hand-left:before { content: @hand-left; }
-.icon-hand-up:before { content: @hand-up; }
-.icon-hand-down:before { content: @hand-down; }
-.icon-circle-arrow-left:before { content: @circle-arrow-left; }
-.icon-circle-arrow-right:before { content: @circle-arrow-right; }
-.icon-circle-arrow-up:before { content: @circle-arrow-up; }
-.icon-circle-arrow-down:before { content: @circle-arrow-down; }
-.icon-globe:before { content: @globe; }
-.icon-wrench:before { content: @wrench; }
-.icon-tasks:before { content: @tasks; }
-.icon-filter:before { content: @filter; }
-.icon-briefcase:before { content: @briefcase; }
-.icon-fullscreen:before { content: @fullscreen; }
-.icon-group:before { content: @group; }
-.icon-link:before { content: @link; }
-.icon-cloud:before { content: @cloud; }
-.icon-beaker:before { content: @beaker; }
-.icon-cut:before { content: @cut; }
-.icon-copy:before { content: @copy; }
-.icon-paperclip:before,
-.icon-paper-clip:before { content: @paper-clip; }
-.icon-save:before { content: @save; }
-.icon-sign-blank:before { content: @sign-blank; }
-.icon-reorder:before { content: @reorder; }
-.icon-list-ul:before { content: @list-ul; }
-.icon-list-ol:before { content: @list-ol; }
-.icon-strikethrough:before { content: @strikethrough; }
-.icon-underline:before { content: @underline; }
-.icon-table:before { content: @table; }
-.icon-magic:before { content: @magic; }
-.icon-truck:before { content: @truck; }
-.icon-pinterest:before { content: @pinterest; }
-.icon-pinterest-sign:before { content: @pinterest-sign; }
-.icon-money:before { content: @money; }
-.icon-caret-down:before { content: @caret-down; }
-.icon-caret-up:before { content: @caret-up; }
-.icon-caret-left:before { content: @caret-left; }
-.icon-caret-right:before { content: @caret-right; }
-.icon-columns:before { content: @columns; }
-.icon-sort:before { content: @sort; }
-.icon-sort-down:before { content: @sort-down; }
-.icon-sort-up:before { content: @sort-up; }
-.icon-envelope:before { content: @envelope; }
-.icon-linkedin:before { content: @linkedin; }
-.icon-rotate-left:before,
-.icon-undo:before { content: @undo; }
-.icon-legal:before { content: @legal; }
-.icon-dashboard:before { content: @dashboard; }
-.icon-comment-alt:before { content: @comment-alt; }
-.icon-comments-alt:before { content: @comments-alt; }
-.icon-bolt:before { content: @bolt; }
-.icon-sitemap:before { content: @sitemap; }
-.icon-umbrella:before { content: @umbrella; }
-.icon-paste:before { content: @paste; }
-.icon-lightbulb:before { content: @lightbulb; }
-.icon-exchange:before { content: @exchange; }
-.icon-cloud-download:before { content: @cloud-download; }
-.icon-cloud-upload:before { content: @cloud-upload; }
-.icon-user-md:before { content: @user-md; }
-.icon-stethoscope:before { content: @stethoscope; }
-.icon-suitcase:before { content: @suitcase; }
-.icon-bell-alt:before { content: @bell-alt; }
-.icon-coffee:before { content: @coffee; }
-.icon-food:before { content: @food; }
-.icon-file-text-alt:before { content: @file-text-alt; }
-.icon-building:before { content: @building; }
-.icon-hospital:before { content: @hospital; }
-.icon-ambulance:before { content: @ambulance; }
-.icon-medkit:before { content: @medkit; }
-.icon-fighter-jet:before { content: @fighter-jet; }
-.icon-beer:before { content: @beer; }
-.icon-h-sign:before { content: @h-sign; }
-.icon-plus-sign-alt:before { content: @plus-sign-alt; }
-.icon-double-angle-left:before { content: @double-angle-left; }
-.icon-double-angle-right:before { content: @double-angle-right; }
-.icon-double-angle-up:before { content: @double-angle-up; }
-.icon-double-angle-down:before { content: @double-angle-down; }
-.icon-angle-left:before { content: @angle-left; }
-.icon-angle-right:before { content: @angle-right; }
-.icon-angle-up:before { content: @angle-up; }
-.icon-angle-down:before { content: @angle-down; }
-.icon-desktop:before { content: @desktop; }
-.icon-laptop:before { content: @laptop; }
-.icon-tablet:before { content: @tablet; }
-.icon-mobile-phone:before { content: @mobile-phone; }
-.icon-circle-blank:before { content: @circle-blank; }
-.icon-quote-left:before { content: @quote-left; }
-.icon-quote-right:before { content: @quote-right; }
-.icon-spinner:before { content: @spinner; }
-.icon-circle:before { content: @circle; }
-.icon-mail-reply:before,
-.icon-reply:before { content: @reply; }
-.icon-github-alt:before { content: @github-alt; }
-.icon-folder-close-alt:before { content: @folder-close-alt; }
-.icon-folder-open-alt:before { content: @folder-open-alt; }
-.icon-expand-alt:before { content: @expand-alt; }
-.icon-collapse-alt:before { content: @collapse-alt; }
-.icon-smile:before { content: @smile; }
-.icon-frown:before { content: @frown; }
-.icon-meh:before { content: @meh; }
-.icon-gamepad:before { content: @gamepad; }
-.icon-keyboard:before { content: @keyboard; }
-.icon-flag-alt:before { content: @flag-alt; }
-.icon-flag-checkered:before { content: @flag-checkered; }
-.icon-terminal:before { content: @terminal; }
-.icon-code:before { content: @code; }
-.icon-reply-all:before { content: @reply-all; }
-.icon-mail-reply-all:before { content: @mail-reply-all; }
-.icon-star-half-full:before,
-.icon-star-half-empty:before { content: @star-half-empty; }
-.icon-location-arrow:before { content: @location-arrow; }
-.icon-crop:before { content: @crop; }
-.icon-code-fork:before { content: @code-fork; }
-.icon-unlink:before { content: @unlink; }
-.icon-question:before { content: @question; }
-.icon-info:before { content: @info; }
-.icon-exclamation:before { content: @exclamation; }
-.icon-superscript:before { content: @superscript; }
-.icon-subscript:before { content: @subscript; }
-.icon-eraser:before { content: @eraser; }
-.icon-puzzle-piece:before { content: @puzzle-piece; }
-.icon-microphone:before { content: @microphone; }
-.icon-microphone-off:before { content: @microphone-off; }
-.icon-shield:before { content: @shield; }
-.icon-calendar-empty:before { content: @calendar-empty; }
-.icon-fire-extinguisher:before { content: @fire-extinguisher; }
-.icon-rocket:before { content: @rocket; }
-.icon-maxcdn:before { content: @maxcdn; }
-.icon-chevron-sign-left:before { content: @chevron-sign-left; }
-.icon-chevron-sign-right:before { content: @chevron-sign-right; }
-.icon-chevron-sign-up:before { content: @chevron-sign-up; }
-.icon-chevron-sign-down:before { content: @chevron-sign-down; }
-.icon-html5:before { content: @html5; }
-.icon-css3:before { content: @css3; }
-.icon-anchor:before { content: @anchor; }
-.icon-unlock-alt:before { content: @unlock-alt; }
-.icon-bullseye:before { content: @bullseye; }
-.icon-ellipsis-horizontal:before { content: @ellipsis-horizontal; }
-.icon-ellipsis-vertical:before { content: @ellipsis-vertical; }
-.icon-rss-sign:before { content: @rss-sign; }
-.icon-play-sign:before { content: @play-sign; }
-.icon-ticket:before { content: @ticket; }
-.icon-minus-sign-alt:before { content: @minus-sign-alt; }
-.icon-check-minus:before { content: @check-minus; }
-.icon-level-up:before { content: @level-up; }
-.icon-level-down:before { content: @level-down; }
-.icon-check-sign:before { content: @check-sign; }
-.icon-edit-sign:before { content: @edit-sign; }
-.icon-external-link-sign:before { content: @external-link-sign; }
-.icon-share-sign:before { content: @share-sign; }
-.icon-compass:before { content: @compass; }
-.icon-collapse:before { content: @collapse; }
-.icon-collapse-top:before { content: @collapse-top; }
-.icon-expand:before { content: @expand; }
-.icon-euro:before,
-.icon-eur:before { content: @eur; }
-.icon-gbp:before { content: @gbp; }
-.icon-dollar:before,
-.icon-usd:before { content: @usd; }
-.icon-rupee:before,
-.icon-inr:before { content: @inr; }
-.icon-yen:before,
-.icon-jpy:before { content: @jpy; }
-.icon-renminbi:before,
-.icon-cny:before { content: @cny; }
-.icon-won:before,
-.icon-krw:before { content: @krw; }
-.icon-bitcoin:before,
-.icon-btc:before { content: @btc; }
-.icon-file:before { content: @file; }
-.icon-file-text:before { content: @file-text; }
-.icon-sort-by-alphabet:before { content: @sort-by-alphabet; }
-.icon-sort-by-alphabet-alt:before { content: @sort-by-alphabet-alt; }
-.icon-sort-by-attributes:before { content: @sort-by-attributes; }
-.icon-sort-by-attributes-alt:before { content: @sort-by-attributes-alt; }
-.icon-sort-by-order:before { content: @sort-by-order; }
-.icon-sort-by-order-alt:before { content: @sort-by-order-alt; }
-.icon-thumbs-up:before { content: @thumbs-up; }
-.icon-thumbs-down:before { content: @thumbs-down; }
-.icon-youtube-sign:before { content: @youtube-sign; }
-.icon-youtube:before { content: @youtube; }
-.icon-xing:before { content: @xing; }
-.icon-xing-sign:before { content: @xing-sign; }
-.icon-youtube-play:before { content: @youtube-play; }
-.icon-dropbox:before { content: @dropbox; }
-.icon-stackexchange:before { content: @stackexchange; }
-.icon-instagram:before { content: @instagram; }
-.icon-flickr:before { content: @flickr; }
-.icon-adn:before { content: @adn; }
-.icon-bitbucket:before { content: @bitbucket; }
-.icon-bitbucket-sign:before { content: @bitbucket-sign; }
-.icon-tumblr:before { content: @tumblr; }
-.icon-tumblr-sign:before { content: @tumblr-sign; }
-.icon-long-arrow-down:before { content: @long-arrow-down; }
-.icon-long-arrow-up:before { content: @long-arrow-up; }
-.icon-long-arrow-left:before { content: @long-arrow-left; }
-.icon-long-arrow-right:before { content: @long-arrow-right; }
-.icon-apple:before { content: @apple; }
-.icon-windows:before { content: @windows; }
-.icon-android:before { content: @android; }
-.icon-linux:before { content: @linux; }
-.icon-dribbble:before { content: @dribbble; }
-.icon-skype:before { content: @skype; }
-.icon-foursquare:before { content: @foursquare; }
-.icon-trello:before { content: @trello; }
-.icon-female:before { content: @female; }
-.icon-male:before { content: @male; }
-.icon-gittip:before { content: @gittip; }
-.icon-sun:before { content: @sun; }
-.icon-moon:before { content: @moon; }
-.icon-archive:before { content: @archive; }
-.icon-bug:before { content: @bug; }
-.icon-vk:before { content: @vk; }
-.icon-weibo:before { content: @weibo; }
-.icon-renren:before { content: @renren; }
diff --git a/assets/less/bootstrap/font-awesome/mixins.less b/assets/less/bootstrap/font-awesome/mixins.less
deleted file mode 100644
index f7fdda5..0000000
--- a/assets/less/bootstrap/font-awesome/mixins.less
+++ /dev/null
@@ -1,48 +0,0 @@
-// Mixins
-// --------------------------
-
-.icon(@icon) {
-  .icon-FontAwesome();
-  content: @icon;
-}
-
-.icon-FontAwesome() {
-  font-family: FontAwesome;
-  font-weight: normal;
-  font-style: normal;
-  text-decoration: inherit;
-  -webkit-font-smoothing: antialiased;
-  *margin-right: .3em; // fixes ie7 issues
-}
-
-.border-radius(@radius) {
-  -webkit-border-radius: @radius;
-  -moz-border-radius: @radius;
-  border-radius: @radius;
-}
-
-.icon-stack(@width: 2em, @height: 2em, @top-font-size: 1em, @base-font-size: 2em) {
-  .icon-stack {
-    position: relative;
-    display: inline-block;
-    width: @width;
-    height: @height;
-    line-height: @width;
-    vertical-align: -35%;
-    [class^="icon-"],
-    [class*=" icon-"] {
-      display: block;
-      text-align: center;
-      position: absolute;
-      width: 100%;
-      height: 100%;
-      font-size: @top-font-size;
-      line-height: inherit;
-      *line-height: @height;
-    }
-    .icon-stack-base {
-      font-size: @base-font-size;
-      *line-height: @height / @base-font-size;
-    }
-  }
-}
diff --git a/assets/less/bootstrap/font-awesome/path.less b/assets/less/bootstrap/font-awesome/path.less
deleted file mode 100644
index 8ccef8c..0000000
--- a/assets/less/bootstrap/font-awesome/path.less
+++ /dev/null
@@ -1,14 +0,0 @@
-/* FONT PATH
- * -------------------------- */
-
-@font-face {
-  font-family: 'FontAwesome';
-  src: url('@{FontAwesomePath}/fontawesome-webfont.eot?v=@{FontAwesomeVersion}');
-  src: url('@{FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=@{FontAwesomeVersion}') format('embedded-opentype'),
-    url('@{FontAwesomePath}/fontawesome-webfont.woff?v=@{FontAwesomeVersion}') format('woff'),
-    url('@{FontAwesomePath}/fontawesome-webfont.ttf?v=@{FontAwesomeVersion}') format('truetype'),
-    url('@{FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=@{FontAwesomeVersion}') format('svg');
-//  src: url('@{FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts
-  font-weight: normal;
-  font-style: normal;
-}
diff --git a/assets/less/bootstrap/font-awesome/variables.less b/assets/less/bootstrap/font-awesome/variables.less
deleted file mode 100644
index a35dcf5..0000000
--- a/assets/less/bootstrap/font-awesome/variables.less
+++ /dev/null
@@ -1,730 +0,0 @@
-// Variables
-// --------------------------
-
-@FontAwesomePath:    "../../../fonts";
-//@FontAwesomePath:    "//netdna.bootstrapcdn.com/font-awesome/3.2.1/font"; // for referencing Bootstrap CDN font files directly
-@FontAwesomeVersion: "3.2.1";
-@borderColor:        #eee;
-@iconMuted:          #eee;
-@iconLight:          #fff;
-@iconDark:           #333;
-@icons-li-width:     30/14em;
-
-
-  @glass: "\f000";
-
-  @music: "\f001";
-
-  @search: "\f002";
-
-  @envelope-alt: "\f003";
-
-  @heart: "\f004";
-
-  @star: "\f005";
-
-  @star-empty: "\f006";
-
-  @user: "\f007";
-
-  @film: "\f008";
-
-  @th-large: "\f009";
-
-  @th: "\f00a";
-
-  @th-list: "\f00b";
-
-  @ok: "\f00c";
-
-  @remove: "\f00d";
-
-  @zoom-in: "\f00e";
-
-  @zoom-out: "\f010";
-
-  @off: "\f011";
-
-  @signal: "\f012";
-
-  @cog: "\f013";
-
-  @trash: "\f014";
-
-  @home: "\f015";
-
-  @file-alt: "\f016";
-
-  @time: "\f017";
-
-  @road: "\f018";
-
-  @download-alt: "\f019";
-
-  @download: "\f01a";
-
-  @upload: "\f01b";
-
-  @inbox: "\f01c";
-
-  @play-circle: "\f01d";
-
-  @repeat: "\f01e";
-
-  @refresh: "\f021";
-
-  @list-alt: "\f022";
-
-  @lock: "\f023";
-
-  @flag: "\f024";
-
-  @headphones: "\f025";
-
-  @volume-off: "\f026";
-
-  @volume-down: "\f027";
-
-  @volume-up: "\f028";
-
-  @qrcode: "\f029";
-
-  @barcode: "\f02a";
-
-  @tag: "\f02b";
-
-  @tags: "\f02c";
-
-  @book: "\f02d";
-
-  @bookmark: "\f02e";
-
-  @print: "\f02f";
-
-  @camera: "\f030";
-
-  @font: "\f031";
-
-  @bold: "\f032";
-
-  @italic: "\f033";
-
-  @text-height: "\f034";
-
-  @text-width: "\f035";
-
-  @align-left: "\f036";
-
-  @align-center: "\f037";
-
-  @align-right: "\f038";
-
-  @align-justify: "\f039";
-
-  @list: "\f03a";
-
-  @indent-left: "\f03b";
-
-  @indent-right: "\f03c";
-
-  @facetime-video: "\f03d";
-
-  @picture: "\f03e";
-
-  @pencil: "\f040";
-
-  @map-marker: "\f041";
-
-  @adjust: "\f042";
-
-  @tint: "\f043";
-
-  @edit: "\f044";
-
-  @share: "\f045";
-
-  @check: "\f046";
-
-  @move: "\f047";
-
-  @step-backward: "\f048";
-
-  @fast-backward: "\f049";
-
-  @backward: "\f04a";
-
-  @play: "\f04b";
-
-  @pause: "\f04c";
-
-  @stop: "\f04d";
-
-  @forward: "\f04e";
-
-  @fast-forward: "\f050";
-
-  @step-forward: "\f051";
-
-  @eject: "\f052";
-
-  @chevron-left: "\f053";
-
-  @chevron-right: "\f054";
-
-  @plus-sign: "\f055";
-
-  @minus-sign: "\f056";
-
-  @remove-sign: "\f057";
-
-  @ok-sign: "\f058";
-
-  @question-sign: "\f059";
-
-  @info-sign: "\f05a";
-
-  @screenshot: "\f05b";
-
-  @remove-circle: "\f05c";
-
-  @ok-circle: "\f05d";
-
-  @ban-circle: "\f05e";
-
-  @arrow-left: "\f060";
-
-  @arrow-right: "\f061";
-
-  @arrow-up: "\f062";
-
-  @arrow-down: "\f063";
-
-  @share-alt: "\f064";
-
-  @resize-full: "\f065";
-
-  @resize-small: "\f066";
-
-  @plus: "\f067";
-
-  @minus: "\f068";
-
-  @asterisk: "\f069";
-
-  @exclamation-sign: "\f06a";
-
-  @gift: "\f06b";
-
-  @leaf: "\f06c";
-
-  @fire: "\f06d";
-
-  @eye-open: "\f06e";
-
-  @eye-close: "\f070";
-
-  @warning-sign: "\f071";
-
-  @plane: "\f072";
-
-  @calendar: "\f073";
-
-  @random: "\f074";
-
-  @comment: "\f075";
-
-  @magnet: "\f076";
-
-  @chevron-up: "\f077";
-
-  @chevron-down: "\f078";
-
-  @retweet: "\f079";
-
-  @shopping-cart: "\f07a";
-
-  @folder-close: "\f07b";
-
-  @folder-open: "\f07c";
-
-  @resize-vertical: "\f07d";
-
-  @resize-horizontal: "\f07e";
-
-  @bar-chart: "\f080";
-
-  @twitter-sign: "\f081";
-
-  @facebook-sign: "\f082";
-
-  @camera-retro: "\f083";
-
-  @key: "\f084";
-
-  @cogs: "\f085";
-
-  @comments: "\f086";
-
-  @thumbs-up-alt: "\f087";
-
-  @thumbs-down-alt: "\f088";
-
-  @star-half: "\f089";
-
-  @heart-empty: "\f08a";
-
-  @signout: "\f08b";
-
-  @linkedin-sign: "\f08c";
-
-  @pushpin: "\f08d";
-
-  @external-link: "\f08e";
-
-  @signin: "\f090";
-
-  @trophy: "\f091";
-
-  @github-sign: "\f092";
-
-  @upload-alt: "\f093";
-
-  @lemon: "\f094";
-
-  @phone: "\f095";
-
-  @check-empty: "\f096";
-
-  @bookmark-empty: "\f097";
-
-  @phone-sign: "\f098";
-
-  @twitter: "\f099";
-
-  @facebook: "\f09a";
-
-  @github: "\f09b";
-
-  @unlock: "\f09c";
-
-  @credit-card: "\f09d";
-
-  @rss: "\f09e";
-
-  @hdd: "\f0a0";
-
-  @bullhorn: "\f0a1";
-
-  @bell: "\f0a2";
-
-  @certificate: "\f0a3";
-
-  @hand-right: "\f0a4";
-
-  @hand-left: "\f0a5";
-
-  @hand-up: "\f0a6";
-
-  @hand-down: "\f0a7";
-
-  @circle-arrow-left: "\f0a8";
-
-  @circle-arrow-right: "\f0a9";
-
-  @circle-arrow-up: "\f0aa";
-
-  @circle-arrow-down: "\f0ab";
-
-  @globe: "\f0ac";
-
-  @wrench: "\f0ad";
-
-  @tasks: "\f0ae";
-
-  @filter: "\f0b0";
-
-  @briefcase: "\f0b1";
-
-  @fullscreen: "\f0b2";
-
-  @group: "\f0c0";
-
-  @link: "\f0c1";
-
-  @cloud: "\f0c2";
-
-  @beaker: "\f0c3";
-
-  @cut: "\f0c4";
-
-  @copy: "\f0c5";
-
-  @paper-clip: "\f0c6";
-
-  @save: "\f0c7";
-
-  @sign-blank: "\f0c8";
-
-  @reorder: "\f0c9";
-
-  @list-ul: "\f0ca";
-
-  @list-ol: "\f0cb";
-
-  @strikethrough: "\f0cc";
-
-  @underline: "\f0cd";
-
-  @table: "\f0ce";
-
-  @magic: "\f0d0";
-
-  @truck: "\f0d1";
-
-  @pinterest: "\f0d2";
-
-  @pinterest-sign: "\f0d3";
-
-  @money: "\f0d6";
-
-  @caret-down: "\f0d7";
-
-  @caret-up: "\f0d8";
-
-  @caret-left: "\f0d9";
-
-  @caret-right: "\f0da";
-
-  @columns: "\f0db";
-
-  @sort: "\f0dc";
-
-  @sort-down: "\f0dd";
-
-  @sort-up: "\f0de";
-
-  @envelope: "\f0e0";
-
-  @linkedin: "\f0e1";
-
-  @undo: "\f0e2";
-
-  @legal: "\f0e3";
-
-  @dashboard: "\f0e4";
-
-  @comment-alt: "\f0e5";
-
-  @comments-alt: "\f0e6";
-
-  @bolt: "\f0e7";
-
-  @sitemap: "\f0e8";
-
-  @umbrella: "\f0e9";
-
-  @paste: "\f0ea";
-
-  @lightbulb: "\f0eb";
-
-  @exchange: "\f0ec";
-
-  @cloud-download: "\f0ed";
-
-  @cloud-upload: "\f0ee";
-
-  @user-md: "\f0f0";
-
-  @stethoscope: "\f0f1";
-
-  @suitcase: "\f0f2";
-
-  @bell-alt: "\f0f3";
-
-  @coffee: "\f0f4";
-
-  @food: "\f0f5";
-
-  @file-text-alt: "\f0f6";
-
-  @building: "\f0f7";
-
-  @hospital: "\f0f8";
-
-  @ambulance: "\f0f9";
-
-  @medkit: "\f0fa";
-
-  @fighter-jet: "\f0fb";
-
-  @beer: "\f0fc";
-
-  @h-sign: "\f0fd";
-
-  @plus-sign-alt: "\f0fe";
-
-  @double-angle-left: "\f100";
-
-  @double-angle-right: "\f101";
-
-  @double-angle-up: "\f102";
-
-  @double-angle-down: "\f103";
-
-  @angle-left: "\f104";
-
-  @angle-right: "\f105";
-
-  @angle-up: "\f106";
-
-  @angle-down: "\f107";
-
-  @desktop: "\f108";
-
-  @laptop: "\f109";
-
-  @tablet: "\f10a";
-
-  @mobile-phone: "\f10b";
-
-  @circle-blank: "\f10c";
-
-  @quote-left: "\f10d";
-
-  @quote-right: "\f10e";
-
-  @spinner: "\f110";
-
-  @circle: "\f111";
-
-  @reply: "\f112";
-
-  @github-alt: "\f113";
-
-  @folder-close-alt: "\f114";
-
-  @folder-open-alt: "\f115";
-
-  @expand-alt: "\f116";
-
-  @collapse-alt: "\f117";
-
-  @smile: "\f118";
-
-  @frown: "\f119";
-
-  @meh: "\f11a";
-
-  @gamepad: "\f11b";
-
-  @keyboard: "\f11c";
-
-  @flag-alt: "\f11d";
-
-  @flag-checkered: "\f11e";
-
-  @terminal: "\f120";
-
-  @code: "\f121";
-
-  @reply-all: "\f122";
-
-  @mail-reply-all: "\f122";
-
-  @star-half-empty: "\f123";
-
-  @location-arrow: "\f124";
-
-  @crop: "\f125";
-
-  @code-fork: "\f126";
-
-  @unlink: "\f127";
-
-  @question: "\f128";
-
-  @info: "\f129";
-
-  @exclamation: "\f12a";
-
-  @superscript: "\f12b";
-
-  @subscript: "\f12c";
-
-  @eraser: "\f12d";
-
-  @puzzle-piece: "\f12e";
-
-  @microphone: "\f130";
-
-  @microphone-off: "\f131";
-
-  @shield: "\f132";
-
-  @calendar-empty: "\f133";
-
-  @fire-extinguisher: "\f134";
-
-  @rocket: "\f135";
-
-  @maxcdn: "\f136";
-
-  @chevron-sign-left: "\f137";
-
-  @chevron-sign-right: "\f138";
-
-  @chevron-sign-up: "\f139";
-
-  @chevron-sign-down: "\f13a";
-
-  @html5: "\f13b";
-
-  @css3: "\f13c";
-
-  @anchor: "\f13d";
-
-  @unlock-alt: "\f13e";
-
-  @bullseye: "\f140";
-
-  @ellipsis-horizontal: "\f141";
-
-  @ellipsis-vertical: "\f142";
-
-  @rss-sign: "\f143";
-
-  @play-sign: "\f144";
-
-  @ticket: "\f145";
-
-  @minus-sign-alt: "\f146";
-
-  @check-minus: "\f147";
-
-  @level-up: "\f148";
-
-  @level-down: "\f149";
-
-  @check-sign: "\f14a";
-
-  @edit-sign: "\f14b";
-
-  @external-link-sign: "\f14c";
-
-  @share-sign: "\f14d";
-
-  @compass: "\f14e";
-
-  @collapse: "\f150";
-
-  @collapse-top: "\f151";
-
-  @expand: "\f152";
-
-  @eur: "\f153";
-
-  @gbp: "\f154";
-
-  @usd: "\f155";
-
-  @inr: "\f156";
-
-  @jpy: "\f157";
-
-  @cny: "\f158";
-
-  @krw: "\f159";
-
-  @btc: "\f15a";
-
-  @file: "\f15b";
-
-  @file-text: "\f15c";
-
-  @sort-by-alphabet: "\f15d";
-
-  @sort-by-alphabet-alt: "\f15e";
-
-  @sort-by-attributes: "\f160";
-
-  @sort-by-attributes-alt: "\f161";
-
-  @sort-by-order: "\f162";
-
-  @sort-by-order-alt: "\f163";
-
-  @thumbs-up: "\f164";
-
-  @thumbs-down: "\f165";
-
-  @youtube-sign: "\f166";
-
-  @youtube: "\f167";
-
-  @xing: "\f168";
-
-  @xing-sign: "\f169";
-
-  @youtube-play: "\f16a";
-
-  @dropbox: "\f16b";
-
-  @stackexchange: "\f16c";
-
-  @instagram: "\f16d";
-
-  @flickr: "\f16e";
-
-  @adn: "\f170";
-
-  @bitbucket: "\f171";
-
-  @bitbucket-sign: "\f172";
-
-  @tumblr: "\f173";
-
-  @tumblr-sign: "\f174";
-
-  @long-arrow-down: "\f175";
-
-  @long-arrow-up: "\f176";
-
-  @long-arrow-left: "\f177";
-
-  @long-arrow-right: "\f178";
-
-  @apple: "\f179";
-
-  @windows: "\f17a";
-
-  @android: "\f17b";
-
-  @linux: "\f17c";
-
-  @dribbble: "\f17d";
-
-  @skype: "\f17e";
-
-  @foursquare: "\f180";
-
-  @trello: "\f181";
-
-  @female: "\f182";
-
-  @male: "\f183";
-
-  @gittip: "\f184";
-
-  @sun: "\f185";
-
-  @moon: "\f186";
-
-  @archive: "\f187";
-
-  @bug: "\f188";
-
-  @vk: "\f189";
-
-  @weibo: "\f18a";
-
-  @renren: "\f18b";
diff --git a/assets/less/bootstrap/forms.less b/assets/less/bootstrap/forms.less
deleted file mode 100644
index 10b4751..0000000
--- a/assets/less/bootstrap/forms.less
+++ /dev/null
@@ -1,690 +0,0 @@
-//
-// Forms
-// --------------------------------------------------
-
-
-// GENERAL STYLES
-// --------------
-
-// Make all forms have space below them
-form {
-  margin: 0 0 @baseLineHeight;
-}
-
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-
-// Groups of fields with labels on top (legends)
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: @baseLineHeight;
-  font-size: @baseFontSize * 1.5;
-  line-height: @baseLineHeight * 2;
-  color: @grayDark;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-
-  // Small
-  small {
-    font-size: @baseLineHeight * .75;
-    color: @grayLight;
-  }
-}
-
-// Set font for forms
-label,
-input,
-button,
-select,
-textarea {
-  #font > .shorthand(@baseFontSize,normal,@baseLineHeight); // Set size, weight, line-height here
-}
-input,
-button,
-select,
-textarea {
-  font-family: @baseFontFamily; // And only set font-family here for those that need it (note the missing label element)
-}
-
-// Identify controls by their labels
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-
-// Form controls
-// -------------------------
-
-// Shared size and type resets
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: @baseLineHeight;
-  padding: 4px 6px;
-  margin-bottom: @baseLineHeight / 2;
-  font-size: @baseFontSize;
-  line-height: @baseLineHeight;
-  color: @gray;
-  .border-radius(@inputBorderRadius);
-  vertical-align: middle;
-}
-
-// Reset appearance properties for textual inputs and textarea
-// Declare width for legacy (can't be on input[type=*] selectors or it's too specific)
-input,
-textarea,
-.uneditable-input {
-  width: 206px; // plus 12px padding and 2px border
-}
-// Reset height since textareas have rows
-textarea {
-  height: auto;
-}
-// Everything else
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: @inputBackground;
-  border: 1px solid @inputBorder;
-  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
-  .transition(~"border linear .2s, box-shadow linear .2s");
-
-  // Focus state
-  &:focus {
-    border-color: rgba(82,168,236,.8);
-    outline: 0;
-    outline: thin dotted \9; /* IE6-9 */
-    .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)");
-  }
-}
-
-// Position radios and checkboxes better
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  *margin-top: 0; /* IE7 */
-  margin-top: 1px \9; /* IE8-9 */
-  line-height: normal;
-}
-
-// Reset width of input images, buttons, radios, checkboxes
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto; // Override of generic input selector
-}
-
-// Set the height of select and file controls to match text inputs
-select,
-input[type="file"] {
-  height: @inputHeight; /* In IE7, the height of the select element cannot be changed by height, only font-size */
-  *margin-top: 4px; /* For IE7, add top margin to align select with labels */
-  line-height: @inputHeight;
-}
-
-// Make select elements obey height by applying a border
-select {
-  width: 220px; // default input width + 10px of padding that doesn't get applied
-  border: 1px solid @inputBorder;
-  background-color: @inputBackground; // Chrome on Linux and Mobile Safari need background-color
-}
-
-// Make multiple select elements height not fixed
-select[multiple],
-select[size] {
-  height: auto;
-}
-
-// Focus for select, file, radio, and checkbox
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  .tab-focus();
-}
-
-
-// Uneditable inputs
-// -------------------------
-
-// Make uneditable inputs look inactive
-.uneditable-input,
-.uneditable-textarea {
-  color: @grayLight;
-  background-color: darken(@inputBackground, 1%);
-  border-color: @inputBorder;
-  .box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
-  cursor: not-allowed;
-}
-
-// For text that needs to appear as an input but should not be an input
-.uneditable-input {
-  overflow: hidden; // prevent text from wrapping, but still cut it off like an input does
-  white-space: nowrap;
-}
-
-// Make uneditable textareas behave like a textarea
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-
-
-// Placeholder
-// -------------------------
-
-// Placeholder text gets special styles because when browsers invalidate entire lines if it doesn't understand a selector
-input,
-textarea {
-  .placeholder();
-}
-
-
-// CHECKBOXES & RADIOS
-// -------------------
-
-// Indent the labels to position radios/checkboxes as hanging
-.radio,
-.checkbox {
-  min-height: @baseLineHeight; // clear the floating input if there is no label text
-  padding-left: 20px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-
-// Move the options list down to align with labels
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px; // has to be padding because margin collaspes
-}
-
-// Radios and checkboxes on same line
-// TODO v3: Convert .inline to .control-inline
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px; // space out consecutive inline controls
-}
-
-
-
-// INPUT SIZES
-// -----------
-
-// General classes for quick sizes
-.input-mini       { width: 60px; }
-.input-small      { width: 90px; }
-.input-medium     { width: 150px; }
-.input-large      { width: 210px; }
-.input-xlarge     { width: 270px; }
-.input-xxlarge    { width: 530px; }
-
-// Grid style input sizes
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-// Redeclare since the fluid row class is more specific
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-// Ensure input-prepend/append never wraps
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-
-
-
-// GRID SIZING FOR INPUTS
-// ----------------------
-
-// Grid sizes
-#grid > .input(@gridColumnWidth, @gridGutterWidth);
-
-// Control row for multiple inputs per line
-.controls-row {
-  .clearfix(); // Clear the float from controls
-}
-
-// Float to collapse white-space for proper grid alignment
-.controls-row [class*="span"],
-// Redeclare the fluid grid collapse since we undo the float for inputs
-.row-fluid .controls-row [class*="span"] {
-  float: left;
-}
-// Explicity set top padding on all checkboxes/radios, not just first-child
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
-  padding-top: 5px;
-}
-
-
-
-
-// DISABLED STATE
-// --------------
-
-// Disabled and read-only inputs
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: @inputDisabledBackground;
-}
-// Explicitly reset the colors here
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-
-
-
-
-// FORM FIELD FEEDBACK STATES
-// --------------------------
-
-// Warning
-.control-group.warning {
-  .formFieldState(@warningText, @warningText, @warningBackground);
-}
-// Error
-.control-group.error {
-  .formFieldState(@errorText, @errorText, @errorBackground);
-}
-// Success
-.control-group.success {
-  .formFieldState(@successText, @successText, @successBackground);
-}
-// Success
-.control-group.info {
-  .formFieldState(@infoText, @infoText, @infoBackground);
-}
-
-// HTML5 invalid states
-// Shares styles with the .control-group.error above
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-  &:focus {
-    border-color: darken(#ee5f5b, 10%);
-    @shadow: 0 0 6px lighten(#ee5f5b, 20%);
-    .box-shadow(@shadow);
-  }
-}
-
-
-
-// FORM ACTIONS
-// ------------
-
-.form-actions {
-  padding: (@baseLineHeight - 1) 20px @baseLineHeight;
-  margin-top: @baseLineHeight;
-  margin-bottom: @baseLineHeight;
-  background-color: @formActionsBackground;
-  border-top: 1px solid #e5e5e5;
-  .clearfix(); // Adding clearfix to allow for .pull-right button containers
-}
-
-
-
-// HELP TEXT
-// ---------
-
-.help-block,
-.help-inline {
-  color: lighten(@textColor, 15%); // lighten the text some for contrast
-}
-
-.help-block {
-  display: block; // account for any element using help-block
-  margin-bottom: @baseLineHeight / 2;
-}
-
-.help-inline {
-  display: inline-block;
-  .ie7-inline-block();
-  vertical-align: middle;
-  padding-left: 5px;
-}
-
-
-
-// INPUT GROUPS
-// ------------
-
-// Allow us to put symbols and text within the input field for a cleaner look
-.input-append,
-.input-prepend {
-  display: inline-block;
-  margin-bottom: @baseLineHeight / 2;
-  vertical-align: middle;
-  font-size: 0; // white space collapse hack
-  white-space: nowrap; // Prevent span and input from separating
-
-  // Reset the white space collapse hack
-  input,
-  select,
-  .uneditable-input,
-  .dropdown-menu,
-  .popover {
-    font-size: @baseFontSize;
-  }
-
-  input,
-  select,
-  .uneditable-input {
-    position: relative; // placed here by default so that on :focus we can place the input above the .add-on for full border and box-shadow goodness
-    margin-bottom: 0; // prevent bottom margin from screwing up alignment in stacked forms
-    *margin-left: 0;
-    vertical-align: top;
-    .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
-    // Make input on top when focused so blue border and shadow always show
-    &:focus {
-      z-index: 2;
-    }
-  }
-  .add-on {
-    display: inline-block;
-    width: auto;
-    height: @baseLineHeight;
-    min-width: 16px;
-    padding: 4px 5px;
-    font-size: @baseFontSize;
-    font-weight: normal;
-    line-height: @baseLineHeight;
-    text-align: center;
-    text-shadow: 0 1px 0 @white;
-    background-color: @grayLighter;
-    border: 1px solid #ccc;
-  }
-  .add-on,
-  .btn,
-  .btn-group > .dropdown-toggle {
-    vertical-align: top;
-    .border-radius(0);
-  }
-  .active {
-    background-color: lighten(@green, 30);
-    border-color: @green;
-  }
-}
-
-.input-prepend {
-  .add-on,
-  .btn {
-    margin-right: -1px;
-  }
-  .add-on:first-child,
-  .btn:first-child {
-    // FYI, `.btn:first-child` accounts for a button group that's prepended
-    .border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
-  }
-}
-
-.input-append {
-  input,
-  select,
-  .uneditable-input {
-    .border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
-    + .btn-group .btn:last-child {
-      .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
-    }
-  }
-  .add-on,
-  .btn,
-  .btn-group {
-    margin-left: -1px;
-  }
-  .add-on:last-child,
-  .btn:last-child,
-  .btn-group:last-child > .dropdown-toggle {
-    .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
-  }
-}
-
-// Remove all border-radius for inputs with both prepend and append
-.input-prepend.input-append {
-  input,
-  select,
-  .uneditable-input {
-    .border-radius(0);
-    + .btn-group .btn {
-      .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
-    }
-  }
-  .add-on:first-child,
-  .btn:first-child {
-    margin-right: -1px;
-    .border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
-  }
-  .add-on:last-child,
-  .btn:last-child {
-    margin-left: -1px;
-    .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
-  }
-  .btn-group:first-child {
-    margin-left: 0;
-  }
-}
-
-
-
-
-// SEARCH FORM
-// -----------
-
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */
-  margin-bottom: 0; // Remove the default margin on all inputs
-  .border-radius(15px);
-}
-
-/* Allow for input prepend/append in search forms */
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  .border-radius(0); // Override due to specificity
-}
-.form-search .input-append .search-query {
-  .border-radius(14px 0 0 14px);
-}
-.form-search .input-append .btn {
-  .border-radius(0 14px 14px 0);
-}
-.form-search .input-prepend .search-query {
-  .border-radius(0 14px 14px 0);
-}
-.form-search .input-prepend .btn {
-  .border-radius(14px 0 0 14px);
-}
-
-
-
-
-// HORIZONTAL & VERTICAL FORMS
-// ---------------------------
-
-// Common properties
-// -----------------
-
-.form-search,
-.form-inline,
-.form-horizontal {
-  input,
-  textarea,
-  select,
-  .help-inline,
-  .uneditable-input,
-  .input-prepend,
-  .input-append {
-    display: inline-block;
-    .ie7-inline-block();
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  // Re-hide hidden elements due to specificity
-  .hide {
-    display: none;
-  }
-}
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-// Remove margin for input-prepend/-append
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-// Inline checkbox/radio labels (remove padding on left)
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-// Remove float and margin, set to inline-block
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-
-
-// Margin to space out fieldsets
-.control-group {
-  margin-bottom: @baseLineHeight / 2;
-}
-
-// Legend collapses margin, so next element is responsible for spacing
-legend + .control-group {
-  margin-top: @baseLineHeight;
-  -webkit-margin-top-collapse: separate;
-}
-
-// Horizontal-specific styles
-// --------------------------
-
-.form-horizontal {
-  // Increase spacing between groups
-  .control-group {
-    margin-bottom: @baseLineHeight;
-    .clearfix();
-  }
-  // Float the labels left
-  .control-label {
-    float: left;
-    width: @horizontalComponentOffset - 20;
-    padding-top: 5px;
-    text-align: right;
-  }
-  // Move over all input controls and content
-  .controls {
-    // Super jank IE7 fix to ensure the inputs in .input-append and input-prepend
-    // don't inherit the margin of the parent, in this case .controls
-    *display: inline-block;
-    *padding-left: 20px;
-    margin-left: @horizontalComponentOffset;
-    *margin-left: 0;
-    &:first-child {
-      *padding-left: @horizontalComponentOffset;
-    }
-  }
-  // Remove bottom margin on block level help text since that's accounted for on .control-group
-  .help-block {
-    margin-bottom: 0;
-  }
-  // And apply it only to .help-block instances that follow a form control
-  input,
-  select,
-  textarea,
-  .uneditable-input,
-  .input-prepend,
-  .input-append {
-    + .help-block {
-      margin-top: @baseLineHeight / 2;
-    }
-  }
-  // Move over buttons in .form-actions to align with .controls
-  .form-actions {
-    padding-left: @horizontalComponentOffset;
-  }
-}
diff --git a/assets/less/bootstrap/grid.less b/assets/less/bootstrap/grid.less
deleted file mode 100644
index 750d203..0000000
--- a/assets/less/bootstrap/grid.less
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// Grid system
-// --------------------------------------------------
-
-
-// Fixed (940px)
-#grid > .core(@gridColumnWidth, @gridGutterWidth);
-
-// Fluid (940px)
-#grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth);
-
-// Reset utility classes due to specificity
-[class*="span"].hide,
-.row-fluid [class*="span"].hide {
-  display: none;
-}
-
-[class*="span"].pull-right,
-.row-fluid [class*="span"].pull-right {
-  float: right;
-}
diff --git a/assets/less/bootstrap/hero-unit.less b/assets/less/bootstrap/hero-unit.less
deleted file mode 100644
index 763d86a..0000000
--- a/assets/less/bootstrap/hero-unit.less
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// Hero unit
-// --------------------------------------------------
-
-
-.hero-unit {
-  padding: 60px;
-  margin-bottom: 30px;
-  font-size: 18px;
-  font-weight: 200;
-  line-height: @baseLineHeight * 1.5;
-  color: @heroUnitLeadColor;
-  background-color: @heroUnitBackground;
-  .border-radius(6px);
-  h1 {
-    margin-bottom: 0;
-    font-size: 60px;
-    line-height: 1;
-    color: @heroUnitHeadingColor;
-    letter-spacing: -1px;
-  }
-  li {
-    line-height: @baseLineHeight * 1.5; // Reset since we specify in type.less
-  }
-}
diff --git a/assets/less/bootstrap/labels-badges.less b/assets/less/bootstrap/labels-badges.less
deleted file mode 100644
index 054a6ae..0000000
--- a/assets/less/bootstrap/labels-badges.less
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// Labels and badges
-// --------------------------------------------------
-
-
-// Base classes
-.label,
-.badge {
-  display: inline-block;
-  padding: 2px 4px;
-  font-size: @baseFontSize * .846;
-  font-weight: bold;
-  line-height: 14px; // ensure proper line-height if floated
-  color: @white;
-  vertical-align: baseline;
-  white-space: nowrap;
-  text-shadow: 0 -1px 0 rgba(0,0,0,.25);
-  background-color: @grayLight;
-}
-// Set unique padding and border-radii
-.label {
-  .border-radius(3px);
-}
-.badge {
-  padding-left: 9px;
-  padding-right: 9px;
-  .border-radius(9px);
-}
-
-// Empty labels/badges collapse
-.label,
-.badge {
-  &:empty {
-    display: none;
-  }
-}
-
-// Hover/focus state, but only for links
-a {
-  &.label:hover,
-  &.label:focus,
-  &.badge:hover,
-  &.badge:focus {
-    color: @white;
-    text-decoration: none;
-    cursor: pointer;
-  }
-}
-
-// Colors
-// Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute)
-.label,
-.badge {
-  // Important (red)
-  &-important         { background-color: @errorText; }
-  &-important[href]   { background-color: darken(@errorText, 10%); }
-  // Warnings (orange)
-  &-warning           { background-color: @dangerRed; }
-  &-warning[href]     { background-color: darken(@dangerRed, 10%); }
-  // Success (green)
-  &-success           { background-color: @successText; }
-  &-success[href]     { background-color: darken(@successText, 10%); }
-  // Info (turquoise)
-  &-info              { background-color: @infoText; }
-  &-info[href]        { background-color: darken(@infoText, 10%); }
-  // Inverse (black)
-  &-inverse           { background-color: @grayDark; }
-  &-inverse[href]     { background-color: darken(@grayDark, 10%); }
-}
-
-// Quick fix for labels/badges in buttons
-.btn {
-  .label,
-  .badge {
-    position: relative;
-    top: -1px;
-  }
-}
-.btn-mini {
-  .label,
-  .badge {
-    top: 0;
-  }
-}
diff --git a/assets/less/bootstrap/layouts.less b/assets/less/bootstrap/layouts.less
deleted file mode 100644
index 24a2062..0000000
--- a/assets/less/bootstrap/layouts.less
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// Layouts
-// --------------------------------------------------
-
-
-// Container (centered, fixed-width layouts)
-.container {
-  .container-fixed();
-}
-
-// Fluid layouts (left aligned, with sidebar, min- & max-width content)
-.container-fluid {
-  padding-right: @gridGutterWidth;
-  padding-left: @gridGutterWidth;
-  .clearfix();
-}
\ No newline at end of file
diff --git a/assets/less/bootstrap/media.less b/assets/less/bootstrap/media.less
deleted file mode 100644
index e461e44..0000000
--- a/assets/less/bootstrap/media.less
+++ /dev/null
@@ -1,55 +0,0 @@
-// Media objects
-// Source: http://stubbornella.org/content/?p=497
-// --------------------------------------------------
-
-
-// Common styles
-// -------------------------
-
-// Clear the floats
-.media,
-.media-body {
-  overflow: hidden;
-  *overflow: visible;
-  zoom: 1;
-}
-
-// Proper spacing between instances of .media
-.media,
-.media .media {
-  margin-top: 15px;
-}
-.media:first-child {
-  margin-top: 0;
-}
-
-// For images and videos, set to block
-.media-object {
-  display: block;
-}
-
-// Reset margins on headings for tighter default spacing
-.media-heading {
-  margin: 0 0 5px;
-}
-
-
-// Media image alignment
-// -------------------------
-
-.media > .pull-left {
-  margin-right: 10px;
-}
-.media > .pull-right {
-  margin-left: 10px;
-}
-
-
-// Media list variation
-// -------------------------
-
-// Undo default ul/ol styles
-.media-list {
-  margin-left: 0;
-  list-style: none;
-}
diff --git a/assets/less/bootstrap/mixins.less b/assets/less/bootstrap/mixins.less
deleted file mode 100644
index 92034a0..0000000
--- a/assets/less/bootstrap/mixins.less
+++ /dev/null
@@ -1,716 +0,0 @@
-//
-// Mixins
-// --------------------------------------------------
-
-
-// UTILITY MIXINS
-// --------------------------------------------------
-
-// Clearfix
-// --------
-// For clearing floats like a boss h5bp.com/q
-.clearfix {
-  *zoom: 1;
-  &:before,
-  &:after {
-    display: table;
-    content: "";
-    // Fixes Opera/contenteditable bug:
-    // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952
-    line-height: 0;
-  }
-  &:after {
-    clear: both;
-  }
-}
-
-// Webkit-style focus
-// ------------------
-.tab-focus() {
-  // Default
-  outline: thin dotted #333;
-  // Webkit
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-// Center-align a block level element
-// ----------------------------------
-.center-block() {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-// IE7 inline-block
-// ----------------
-.ie7-inline-block() {
-  *display: inline; /* IE7 inline-block hack */
-  *zoom: 1;
-}
-
-// IE7 likes to collapse whitespace on either side of the inline-block elements.
-// Ems because we're attempting to match the width of a space character. Left
-// version is for form buttons, which typically come after other elements, and
-// right version is for icons, which come before. Applying both is ok, but it will
-// mean that space between those elements will be .6em (~2 space characters) in IE7,
-// instead of the 1 space in other browsers.
-.ie7-restore-left-whitespace() {
-  *margin-left: .3em;
-
-  &:first-child {
-    *margin-left: 0;
-  }
-}
-
-.ie7-restore-right-whitespace() {
-  *margin-right: .3em;
-}
-
-// Sizing shortcuts
-// -------------------------
-.size(@height, @width) {
-  width: @width;
-  height: @height;
-}
-.square(@size) {
-  .size(@size, @size);
-}
-
-// Placeholder text
-// -------------------------
-.placeholder(@color: @placeholderText) {
-  &:-moz-placeholder {
-    color: @color;
-  }
-  &:-ms-input-placeholder {
-    color: @color;
-  }
-  &::-webkit-input-placeholder {
-    color: @color;
-  }
-}
-
-// Text overflow
-// -------------------------
-// Requires inline-block or block for proper styling
-.text-overflow() {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-// CSS image replacement
-// -------------------------
-// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-
-
-// FONTS
-// --------------------------------------------------
-
-#font {
-  #family {
-    .serif() {
-      font-family: @serifFontFamily;
-    }
-    .sans-serif() {
-      font-family: @sansFontFamily;
-    }
-    .monospace() {
-      font-family: @monoFontFamily;
-    }
-  }
-  .shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
-    font-size: @size;
-    font-weight: @weight;
-    line-height: @lineHeight;
-  }
-  .serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
-    #font > #family > .serif;
-    #font > .shorthand(@size, @weight, @lineHeight);
-  }
-  .sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
-    #font > #family > .sans-serif;
-    #font > .shorthand(@size, @weight, @lineHeight);
-  }
-  .monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
-    #font > #family > .monospace;
-    #font > .shorthand(@size, @weight, @lineHeight);
-  }
-}
-
-
-// FORMS
-// --------------------------------------------------
-
-// Block level inputs
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: @inputHeight; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
-  .box-sizing(border-box); // Makes inputs behave like true block-level elements
-}
-
-
-
-// Mixin for form field states
-.formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
-  // Set the text color
-  .control-label,
-  .help-block,
-  .help-inline {
-    color: @textColor;
-  }
-  // Style inputs accordingly
-  .checkbox,
-  .radio,
-  input,
-  select,
-  textarea {
-    color: @textColor;
-  }
-  input,
-  select,
-  textarea {
-    border-color: @borderColor;
-    .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
-    &:focus {
-      border-color: darken(@borderColor, 10%);
-      @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@borderColor, 20%);
-      .box-shadow(@shadow);
-    }
-  }
-  // Give a small background color for input-prepend/-append
-  .input-prepend .add-on,
-  .input-append .add-on {
-    color: @textColor;
-    background-color: @backgroundColor;
-    border-color: @textColor;
-  }
-}
-
-
-
-// CSS3 PROPERTIES
-// --------------------------------------------------
-
-// Border Radius
-.border-radius(@radius) {
-  -webkit-border-radius: @radius;
-     -moz-border-radius: @radius;
-          border-radius: @radius;
-}
-
-// Single Corner Border Radius
-.border-top-left-radius(@radius) {
-  -webkit-border-top-left-radius: @radius;
-      -moz-border-radius-topleft: @radius;
-          border-top-left-radius: @radius;
-}
-.border-top-right-radius(@radius) {
-  -webkit-border-top-right-radius: @radius;
-      -moz-border-radius-topright: @radius;
-          border-top-right-radius: @radius;
-}
-.border-bottom-right-radius(@radius) {
-  -webkit-border-bottom-right-radius: @radius;
-      -moz-border-radius-bottomright: @radius;
-          border-bottom-right-radius: @radius;
-}
-.border-bottom-left-radius(@radius) {
-  -webkit-border-bottom-left-radius: @radius;
-      -moz-border-radius-bottomleft: @radius;
-          border-bottom-left-radius: @radius;
-}
-
-// Single Side Border Radius
-.border-top-radius(@radius) {
-  .border-top-right-radius(@radius);
-  .border-top-left-radius(@radius);
-}
-.border-right-radius(@radius) {
-  .border-top-right-radius(@radius);
-  .border-bottom-right-radius(@radius);
-}
-.border-bottom-radius(@radius) {
-  .border-bottom-right-radius(@radius);
-  .border-bottom-left-radius(@radius);
-}
-.border-left-radius(@radius) {
-  .border-top-left-radius(@radius);
-  .border-bottom-left-radius(@radius);
-}
-
-// Drop shadows
-.box-shadow(@shadow) {
-  -webkit-box-shadow: @shadow;
-     -moz-box-shadow: @shadow;
-          box-shadow: @shadow;
-}
-
-// Transitions
-.transition(@transition) {
-  -webkit-transition: @transition;
-     -moz-transition: @transition;
-       -o-transition: @transition;
-          transition: @transition;
-}
-.transition-delay(@transition-delay) {
-  -webkit-transition-delay: @transition-delay;
-     -moz-transition-delay: @transition-delay;
-       -o-transition-delay: @transition-delay;
-          transition-delay: @transition-delay;
-}
-.transition-duration(@transition-duration) {
-  -webkit-transition-duration: @transition-duration;
-     -moz-transition-duration: @transition-duration;
-       -o-transition-duration: @transition-duration;
-          transition-duration: @transition-duration;
-}
-
-// Transformations
-.rotate(@degrees) {
-  -webkit-transform: rotate(@degrees);
-     -moz-transform: rotate(@degrees);
-      -ms-transform: rotate(@degrees);
-       -o-transform: rotate(@degrees);
-          transform: rotate(@degrees);
-}
-.scale(@ratio) {
-  -webkit-transform: scale(@ratio);
-     -moz-transform: scale(@ratio);
-      -ms-transform: scale(@ratio);
-       -o-transform: scale(@ratio);
-          transform: scale(@ratio);
-}
-.translate(@x, @y) {
-  -webkit-transform: translate(@x, @y);
-     -moz-transform: translate(@x, @y);
-      -ms-transform: translate(@x, @y);
-       -o-transform: translate(@x, @y);
-          transform: translate(@x, @y);
-}
-.skew(@x, @y) {
-  -webkit-transform: skew(@x, @y);
-     -moz-transform: skew(@x, @y);
-      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twitter/bootstrap/issues/4885
-       -o-transform: skew(@x, @y);
-          transform: skew(@x, @y);
-  -webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319
-}
-.translate3d(@x, @y, @z) {
-  -webkit-transform: translate3d(@x, @y, @z);
-     -moz-transform: translate3d(@x, @y, @z);
-       -o-transform: translate3d(@x, @y, @z);
-          transform: translate3d(@x, @y, @z);
-}
-
-// Backface visibility
-// Prevent browsers from flickering when using CSS 3D transforms.
-// Default value is `visible`, but can be changed to `hidden
-// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
-.backface-visibility(@visibility){
-	-webkit-backface-visibility: @visibility;
-	   -moz-backface-visibility: @visibility;
-	        backface-visibility: @visibility;
-}
-
-// Background clipping
-// Heads up: FF 3.6 and under need "padding" instead of "padding-box"
-.background-clip(@clip) {
-  -webkit-background-clip: @clip;
-     -moz-background-clip: @clip;
-          background-clip: @clip;
-}
-
-// Background sizing
-.background-size(@size) {
-  -webkit-background-size: @size;
-     -moz-background-size: @size;
-       -o-background-size: @size;
-          background-size: @size;
-}
-
-
-// Box sizing
-.box-sizing(@boxmodel) {
-  -webkit-box-sizing: @boxmodel;
-     -moz-box-sizing: @boxmodel;
-          box-sizing: @boxmodel;
-}
-
-// User select
-// For selecting text on the page
-.user-select(@select) {
-  -webkit-user-select: @select;
-     -moz-user-select: @select;
-      -ms-user-select: @select;
-       -o-user-select: @select;
-          user-select: @select;
-}
-
-// Resize anything
-.resizable(@direction) {
-  resize: @direction; // Options: horizontal, vertical, both
-  overflow: auto; // Safari fix
-}
-
-// CSS3 Content Columns
-.content-columns(@columnCount, @columnGap: @gridGutterWidth) {
-  -webkit-column-count: @columnCount;
-     -moz-column-count: @columnCount;
-          column-count: @columnCount;
-  -webkit-column-gap: @columnGap;
-     -moz-column-gap: @columnGap;
-          column-gap: @columnGap;
-}
-
-// Optional hyphenation
-.hyphens(@mode: auto) {
-  word-wrap: break-word;
-  -webkit-hyphens: @mode;
-     -moz-hyphens: @mode;
-      -ms-hyphens: @mode;
-       -o-hyphens: @mode;
-          hyphens: @mode;
-}
-
-// Opacity
-.opacity(@opacity) {
-  opacity: @opacity / 100;
-  filter: ~"alpha(opacity=@{opacity})";
-}
-
-
-
-// BACKGROUNDS
-// --------------------------------------------------
-
-// Add an alphatransparency value to any background or border color (via Elyse Holladay)
-#translucent {
-  .background(@color: @white, @alpha: 1) {
-    background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
-  }
-  .border(@color: @white, @alpha: 1) {
-    border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
-    .background-clip(padding-box);
-  }
-}
-
-// Gradient Bar Colors for buttons and alerts
-.gradientBar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
-  color: @textColor;
-  text-shadow: @textShadow;
-  #gradient > .vertical(@primaryColor, @secondaryColor);
-  border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);
-  border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
-}
-
-// Gradients
-#gradient {
-  .horizontal(@startColor: #555, @endColor: #333) {
-    background-color: @endColor;
-    background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
-    background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
-    background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
-    background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
-    background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
-    background-repeat: repeat-x;
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down
-  }
-  .vertical(@startColor: #555, @endColor: #333) {
-    background-color: mix(@startColor, @endColor, 60%);
-    background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
-    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
-    background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
-    background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
-    background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
-    background-repeat: repeat-x;
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down
-  }
-  .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
-    background-color: @endColor;
-    background-repeat: repeat-x;
-    background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
-    background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
-    background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
-    background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
-  }
-  .horizontal-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
-    background-color: mix(@midColor, @endColor, 80%);
-    background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
-    background-image: -webkit-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
-    background-image: -moz-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
-    background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
-    background-image: linear-gradient(to right, @startColor, @midColor @colorStop, @endColor);
-    background-repeat: no-repeat;
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
-  }
-
-  .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
-    background-color: mix(@midColor, @endColor, 80%);
-    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
-    background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
-    background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
-    background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
-    background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
-    background-repeat: no-repeat;
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
-  }
-  .radial(@innerColor: #555, @outerColor: #333) {
-    background-color: @outerColor;
-    background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
-    background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
-    background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
-    background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
-    background-repeat: no-repeat;
-  }
-  .striped(@color: #555, @angle: 45deg) {
-    background-color: @color;
-    background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
-    background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
-    background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
-    background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
-    background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
-  }
-}
-// Reset filters for IE
-.reset-filter() {
-  filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
-}
-
-
-
-// COMPONENT MIXINS
-// --------------------------------------------------
-
-// Horizontal dividers
-// -------------------------
-// Dividers (basically an hr) within dropdowns and nav lists
-.nav-divider(@top: #e5e5e5, @bottom: @white) {
-  // IE7 needs a set width since we gave a height. Restricting just
-  // to IE7 to keep the 1px left/right space in other browsers.
-  // It is unclear where IE is getting the extra space that we need
-  // to negative-margin away, but so it goes.
-  *width: 100%;
-  height: 1px;
-  margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: @top;
-  border-bottom: 1px solid @bottom;
-}
-
-// Button backgrounds
-// ------------------
-.buttonBackground(@startColor, @endColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
-  // gradientBar will set the background to a pleasing blend of these, to support IE<=9
-  .gradientBar(@startColor, @endColor, @textColor, @textShadow);
-  *background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-  .reset-filter();
-
-  // in these cases the gradient won't cover the background, so we override
-  &:hover, &:focus, &:active, &.active, &.disabled, &[disabled] {
-    color: @textColor;
-    background-color: @endColor;
-    *background-color: darken(@endColor, 5%);
-  }
-
-  // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
-  &:active,
-  &.active {
-    background-color: darken(@endColor, 10%) e("\9");
-  }
-}
-
-// Navbar vertical align
-// -------------------------
-// Vertically center elements in the navbar.
-// Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin.
-.navbarVerticalAlign(@elementHeight) {
-  margin-top: (@navbarHeight - @elementHeight) / 2;
-}
-
-
-
-// Grid System
-// -----------
-
-// Centered container element
-.container-fixed() {
-  margin-right: auto;
-  margin-left: auto;
-  .clearfix();
-}
-
-// Table columns
-.tableColumns(@columnSpan: 1) {
-  float: none; // undo default grid column styles
-  width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells
-  margin-left: 0; // undo default grid column styles
-}
-
-// Make a Grid
-// Use .makeRow and .makeColumn to assign semantic layouts grid system behavior
-.makeRow() {
-  margin-left: @gridGutterWidth * -1;
-  .clearfix();
-}
-.makeColumn(@columns: 1, @offset: 0) {
-  float: left;
-  margin-left: (@gridColumnWidth * @offset) + (@gridGutterWidth * (@offset - 1)) + (@gridGutterWidth * 2);
-  width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
-}
-
-// The Grid
-#grid {
-
-  .core (@gridColumnWidth, @gridGutterWidth) {
-
-    .spanX (@index) when (@index > 0) {
-      .span@{index} { .span(@index); }
-      .spanX(@index - 1);
-    }
-    .spanX (0) {}
-
-    .offsetX (@index) when (@index > 0) {
-      .offset@{index} { .offset(@index); }
-      .offsetX(@index - 1);
-    }
-    .offsetX (0) {}
-
-    .offset (@columns) {
-      margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns + 1));
-    }
-
-    .span (@columns) {
-      width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
-    }
-
-    .row {
-      margin-left: @gridGutterWidth * -1;
-      .clearfix();
-    }
-
-    [class*="span"] {
-      float: left;
-      min-height: 1px; // prevent collapsing columns
-      margin-left: @gridGutterWidth;
-    }
-
-    // Set the container width, and override it for fixed navbars in media queries
-    .container,
-    .navbar-static-top .container,
-    .navbar-fixed-top .container,
-    .navbar-fixed-bottom .container { .span(@gridColumns); }
-
-    // generate .spanX and .offsetX
-    .spanX (@gridColumns);
-    .offsetX (@gridColumns);
-
-  }
-
-  .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
-
-    .spanX (@index) when (@index > 0) {
-      .span@{index} { .span(@index); }
-      .spanX(@index - 1);
-    }
-    .spanX (0) {}
-
-    .offsetX (@index) when (@index > 0) {
-      .offset@{index} { .offset(@index); }
-      .offset@{index}:first-child { .offsetFirstChild(@index); }
-      .offsetX(@index - 1);
-    }
-    .offsetX (0) {}
-
-    .offset (@columns) {
-      margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth*2);
-  	  *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + (@fluidGridGutterWidth*2) - (.5 / @gridRowWidth * 100 * 1%);
-    }
-
-    .offsetFirstChild (@columns) {
-      margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth);
-      *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
-    }
-
-    .span (@columns) {
-      width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
-      *width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%);
-    }
-
-    .row-fluid {
-      width: 100%;
-      .clearfix();
-      [class*="span"] {
-        .input-block-level();
-        float: left;
-        margin-left: @fluidGridGutterWidth;
-        *margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
-      }
-      [class*="span"]:first-child {
-        margin-left: 0;
-      }
-
-      // Space grid-sized controls properly if multiple per line
-      .controls-row [class*="span"] + [class*="span"] {
-        margin-left: @fluidGridGutterWidth;
-      }
-
-      // generate .spanX and .offsetX
-      .spanX (@gridColumns);
-      .offsetX (@gridColumns);
-    }
-
-  }
-
-  .input(@gridColumnWidth, @gridGutterWidth) {
-
-    .spanX (@index) when (@index > 0) {
-      input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index} { .span(@index); }
-      .spanX(@index - 1);
-    }
-    .spanX (0) {}
-
-    .span(@columns) {
-      width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 14;
-    }
-
-    input,
-    textarea,
-    .uneditable-input {
-      margin-left: 0; // override margin-left from core grid system
-    }
-
-    // Space grid-sized controls properly if multiple per line
-    .controls-row [class*="span"] + [class*="span"] {
-      margin-left: @gridGutterWidth;
-    }
-
-    // generate .spanX
-    .spanX (@gridColumns);
-
-  }
-}
-
-.customTransition(@prop, @delay, @a, @b, @c, @d){
--webkit-transition: @prop, @delay cubic-bezier(@a, @b, @c, @d); 
-   -moz-transition: @prop, @delay cubic-bezier(@a, @b, @c, @d); 
-    -ms-transition: @prop, @delay cubic-bezier(@a, @b, @c, @d); 
-     -o-transition: @prop, @delay cubic-bezier(@a, @b, @c, @d); 
-        transition: @prop, @delay cubic-bezier(@a, @b, @c, @d); /* custom */
-
--webkit-transition-timing-function: cubic-bezier(@a, @b, @c, @d); 
-   -moz-transition-timing-function: cubic-bezier(@a, @b, @c, @d); 
-    -ms-transition-timing-function: cubic-bezier(@a, @b, @c, @d); 
-     -o-transition-timing-function: cubic-bezier(@a, @b, @c, @d); 
-        transition-timing-function: cubic-bezier(@a, @b, @c, @d); /* custom */
-}
diff --git a/assets/less/bootstrap/modals.less b/assets/less/bootstrap/modals.less
deleted file mode 100644
index ca8f2dc..0000000
--- a/assets/less/bootstrap/modals.less
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// Modals
-// --------------------------------------------------
-
-// Background
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: @zindexModalBackdrop;
-  background-color: @black;
-  // Fade for backdrop
-  &.fade { opacity: 0; }
-}
-
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  .opacity(80);
-}
-
-// Base modal
-.modal {
-  position: fixed;
-  top: 10%;
-  left: 50%;
-  z-index: @zindexModal;
-  width: 560px;
-  margin-left: -280px;
-  background-color: @white;
-  border: 1px solid #999;
-  border: 1px solid rgba(0,0,0,.3);
-  *border: 1px solid #999; /* IE6-7 */
-  .border-radius(6px);
-  .box-shadow(0 3px 7px rgba(0,0,0,0.3));
-  .background-clip(padding-box);
-  // Remove focus outline from opened modal
-  outline: none;
-
-  &.fade {
-    .transition(e('opacity .3s linear, top .3s ease-out'));
-    top: -25%;
-  }
-  &.fade.in { top: 10%; }
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-  // Close icon
-  .close { margin-top: 2px; }
-  // Heading
-  h3 {
-    margin: 0;
-    line-height: 30px;
-  }
-}
-
-// Body (where all modal content resides)
-.modal-body {
-  position: relative;
-  overflow-y: auto;
-  max-height: 600px;
-  padding: 15px;
-}
-// Remove bottom margin if need be
-.modal-form {
-  margin-bottom: 0;
-}
-
-// Footer (for actions)
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right; // right align buttons
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  .border-radius(0 0 6px 6px);
-  .box-shadow(inset 0 1px 0 @white);
-  .clearfix(); // clear it in case folks use .pull-* classes on buttons
-
-  // Properly space out buttons
-  .btn + .btn {
-    margin-left: 5px;
-    margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
-  }
-  // but override that for button groups
-  .btn-group .btn + .btn {
-    margin-left: -1px;
-  }
-  // and override it for block buttons as well
-  .btn-block + .btn-block {
-    margin-left: 0;
-  }
-}
diff --git a/assets/less/bootstrap/navbar.less b/assets/less/bootstrap/navbar.less
deleted file mode 100644
index 5cf656e..0000000
--- a/assets/less/bootstrap/navbar.less
+++ /dev/null
@@ -1,496 +0,0 @@
-//
-// Navbars (Redux)
-// --------------------------------------------------
-
-
-// COMMON STYLES
-// -------------
-
-// Base class and wrapper
-.navbar {
-  overflow: visible;
-  margin-bottom: @baseLineHeight;
-
-  // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar
-  *position: relative;
-  *z-index: 2;
-}
-
-// Inner for background effects
-// Gradient is applied to its own element because overflow visible is not honored by IE when filter is present
-.navbar-inner {
-  min-height: @navbarHeight;
-  padding-left:  20px;
-  padding-right: 20px;
-  #gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground);
-  border: 1px solid @navbarBorder;
-  .border-radius(@baseBorderRadius);
-
-  // Prevent floats from breaking the navbar
-  .clearfix();
-}
-
-// Set width to auto for default container
-// We then reset it for fixed navbars in the #gridSystem mixin
-.navbar .container {
-  width: auto;
-}
-
-// Override the default collapsed state
-.nav-collapse.collapse {
-  height: auto;
-  overflow: visible;
-}
-
-
-// Brand: website or project name
-// -------------------------
-.navbar .brand {
-  float: left;
-  display: block;
-  // Vertically center the text given @navbarHeight
-  padding: ((@navbarHeight - @baseLineHeight) / 2) 20px ((@navbarHeight - @baseLineHeight) / 2);
-  margin-left: -20px; // negative indent to left-align the text down the page
-  font-size: 20px;
-  font-weight: 200;
-  color: @navbarBrandColor;
-  text-shadow: 0 1px 0 @navbarBackgroundHighlight;
-  &:hover,
-  &:focus {
-    text-decoration: none;
-  }
-}
-
-// Plain text in topbar
-// -------------------------
-.navbar-text {
-  margin-bottom: 0;
-  line-height: @navbarHeight;
-  color: @navbarText;
-}
-
-// Janky solution for now to account for links outside the .nav
-// -------------------------
-.navbar-link {
-  color: @navbarLinkColor;
-  &:hover,
-  &:focus {
-    color: @navbarLinkColorHover;
-  }
-}
-
-// Dividers in navbar
-// -------------------------
-.navbar .divider-vertical {
-  height: @navbarHeight;
-  margin: 0 9px;
-  border-left: 1px solid @navbarBackground;
-  border-right: 1px solid @navbarBackgroundHighlight;
-}
-
-// Buttons in navbar
-// -------------------------
-.navbar .btn,
-.navbar .btn-group {
-  .navbarVerticalAlign(30px); // Vertically center in navbar
-}
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn,
-.navbar .input-prepend .btn-group,
-.navbar .input-append .btn-group {
-  margin-top: 0; // then undo the margin here so we don't accidentally double it
-}
-
-// Navbar forms
-// -------------------------
-.navbar-form {
-  margin-bottom: 0; // remove default bottom margin
-  .clearfix();
-  input,
-  select,
-  .radio,
-  .checkbox {
-    .navbarVerticalAlign(30px); // Vertically center in navbar
-  }
-  input,
-  select,
-  .btn {
-    display: inline-block;
-    margin-bottom: 0;
-  }
-  input[type="image"],
-  input[type="checkbox"],
-  input[type="radio"] {
-    margin-top: 3px;
-  }
-  .input-append,
-  .input-prepend {
-    margin-top: 0px;
-    white-space: nowrap; // prevent two items from separating within a .navbar-form that has .pull-left
-    input {
-      margin-top: 0; // remove the margin on top since it's on the parent
-    }
-  }
-}
-
-// Navbar search
-// -------------------------
-.navbar-search {
-  position: relative;
-  float: left;
-  .navbarVerticalAlign(30px); // Vertically center in navbar
-  margin-bottom: 0;
-  .search-query {
-    margin-bottom: 0;
-    padding: 4px 14px;
-    #font > .sans-serif(13px, normal, 1);
-    .border-radius(15px); // redeclare because of specificity of the type attribute
-  }
-}
-
-
-
-// Static navbar
-// -------------------------
-
-.navbar-static-top {
-  position: static;
-  margin-bottom: 0; // remove 18px margin for default navbar
-  .navbar-inner {
-    .border-radius(0);
-  }
-}
-
-
-
-// Fixed navbar
-// -------------------------
-
-// Shared (top/bottom) styles
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: @zindexFixedNavbar;
-  margin-bottom: 0; // remove 18px margin for default navbar
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom .navbar-inner {
-  border-width: 1px 0 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-left:  0;
-  padding-right: 0;
-  .border-radius(0);
-}
-
-// Reset container width
-// Required here as we reset the width earlier on and the grid mixins don't override early enough
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  #grid > .core > .span(@gridColumns);
-}
-
-// Fixed to top
-.navbar-fixed-top {
-  top: 0;
-}
-.navbar-fixed-top,
-.navbar-static-top {
-  .navbar-inner {
-    .box-shadow(~"0 1px 10px rgba(0,0,0,.1)");
-  }
-}
-
-// Fixed to bottom
-.navbar-fixed-bottom {
-  bottom: 0;
-  .navbar-inner {
-    .box-shadow(~"0 -1px 10px rgba(0,0,0,.1)");
-  }
-}
-
-
-
-// NAVIGATION
-// ----------
-
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right; // redeclare due to specificity
-  margin-right: 0; // remove margin on float right nav
-}
-.navbar .nav > li {
-  float: left;
-}
-
-// Links
-.navbar .nav > li > a {
-  float: none;
-  // Vertically center the text given @navbarHeight
-  padding: ((@navbarHeight - @baseLineHeight) / 2) 15px ((@navbarHeight - @baseLineHeight) / 2);
-  color: @navbarLinkColor;
-  text-decoration: none;
-  text-shadow: 0 1px 0 @navbarBackgroundHighlight;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-
-// Hover/focus
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
-  background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover/:focus from .active
-  color: @navbarLinkColorHover;
-  text-decoration: none;
-}
-
-// Active nav items
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: @navbarLinkColorActive;
-  text-decoration: none;
-  background-color: @navbarLinkBackgroundActive;
-  .box-shadow(inset 0 3px 8px rgba(0,0,0,.125));
-}
-
-// Navbar button for toggling navbar items in responsive layouts
-// These definitions need to come after '.navbar .btn'
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  .buttonBackground(darken(@navbarBackgroundHighlight, 5%), darken(@navbarBackground, 5%));
-  .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)");
-}
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  .border-radius(1px);
-  .box-shadow(0 1px 0 rgba(0,0,0,.25));
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-
-
-
-// Dropdown menus
-// --------------
-
-// Menu position and menu carets
-.navbar .nav > li > .dropdown-menu {
-  &:before {
-    content: '';
-    display: inline-block;
-    border-left:   7px solid transparent;
-    border-right:  7px solid transparent;
-    border-bottom: 7px solid #ccc;
-    border-bottom-color: @dropdownBorder;
-    position: absolute;
-    top: -7px;
-    left: 9px;
-  }
-  &:after {
-    content: '';
-    display: inline-block;
-    border-left:   6px solid transparent;
-    border-right:  6px solid transparent;
-    border-bottom: 6px solid @dropdownBackground;
-    position: absolute;
-    top: -6px;
-    left: 10px;
-  }
-}
-// Menu position and menu caret support for dropups via extra dropup class
-.navbar-fixed-bottom .nav > li > .dropdown-menu {
-  &:before {
-    border-top: 7px solid #ccc;
-    border-top-color: @dropdownBorder;
-    border-bottom: 0;
-    bottom: -7px;
-    top: auto;
-  }
-  &:after {
-    border-top: 6px solid @dropdownBackground;
-    border-bottom: 0;
-    bottom: -6px;
-    top: auto;
-  }
-}
-
-// Caret should match text color on hover/focus
-.navbar .nav li.dropdown > a:hover .caret,
-.navbar .nav li.dropdown > a:focus .caret {
-  border-top-color: @navbarLinkColorHover;
-  border-bottom-color: @navbarLinkColorHover;
-}
-
-// Remove background color from open dropdown
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: @navbarLinkBackgroundActive;
-  color: @navbarLinkColorActive;
-}
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: @navbarLinkColor;
-  border-bottom-color: @navbarLinkColor;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: @navbarLinkColorActive;
-  border-bottom-color: @navbarLinkColorActive;
-}
-
-// Right aligned menus need alt position
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
-  left: auto;
-  right: 0;
-  &:before {
-    left: auto;
-    right: 12px;
-  }
-  &:after {
-    left: auto;
-    right: 13px;
-  }
-  .dropdown-menu {
-    left: auto;
-    right: 100%;
-    margin-left: 0;
-    margin-right: -1px;
-    .border-radius(6px 0 6px 6px);
-  }
-}
-
-
-// Inverted navbar
-// -------------------------
-
-.navbar-inverse {
-
-  .navbar-inner {
-    #gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground);
-    border-color: @navbarInverseBorder;
-  }
-
-  .brand,
-  .nav > li > a {
-    color: @navbarInverseLinkColor;
-    text-shadow: 0 -1px 0 rgba(0,0,0,.25);
-    &:hover,
-    &:focus {
-      color: @navbarInverseLinkColorHover;
-    }
-  }
-
-  .brand {
-    color: @navbarInverseBrandColor;
-  }
-
-  .navbar-text {
-    color: @navbarInverseText;
-  }
-
-  .nav > li > a:focus,
-  .nav > li > a:hover {
-    background-color: @navbarInverseLinkBackgroundHover;
-    color: @navbarInverseLinkColorHover;
-  }
-
-  .nav .active > a,
-  .nav .active > a:hover,
-  .nav .active > a:focus {
-    color: @navbarInverseLinkColorActive;
-    background-color: @navbarInverseLinkBackgroundActive;
-  }
-
-  // Inline text links
-  .navbar-link {
-    color: @navbarInverseLinkColor;
-    &:hover,
-    &:focus {
-      color: @navbarInverseLinkColorHover;
-    }
-  }
-
-  // Dividers in navbar
-  .divider-vertical {
-    border-left-color: @navbarInverseBackground;
-    border-right-color: @navbarInverseBackgroundHighlight;
-  }
-
-  // Dropdowns
-  .nav li.dropdown.open > .dropdown-toggle,
-  .nav li.dropdown.active > .dropdown-toggle,
-  .nav li.dropdown.open.active > .dropdown-toggle {
-    background-color: @navbarInverseLinkBackgroundActive;
-    color: @navbarInverseLinkColorActive;
-  }
-  .nav li.dropdown > a:hover .caret,
-  .nav li.dropdown > a:focus .caret {
-    border-top-color: @navbarInverseLinkColorActive;
-    border-bottom-color: @navbarInverseLinkColorActive;
-  }
-  .nav li.dropdown > .dropdown-toggle .caret {
-    border-top-color: @navbarInverseLinkColor;
-    border-bottom-color: @navbarInverseLinkColor;
-  }
-  .nav li.dropdown.open > .dropdown-toggle .caret,
-  .nav li.dropdown.active > .dropdown-toggle .caret,
-  .nav li.dropdown.open.active > .dropdown-toggle .caret {
-    border-top-color: @navbarInverseLinkColorActive;
-    border-bottom-color: @navbarInverseLinkColorActive;
-  }
-
-  // Navbar search
-  .navbar-search {
-    .search-query {
-      color: @white;
-      background-color: @navbarInverseSearchBackground;
-      border-color: @navbarInverseSearchBorder;
-      .box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)");
-      .transition(none);
-      .placeholder(@navbarInverseSearchPlaceholderColor);
-
-      // Focus states (we use .focused since IE7-8 and down doesn't support :focus)
-      &:focus,
-      &.focused {
-        padding: 5px 15px;
-        color: @grayDark;
-        text-shadow: 0 1px 0 @white;
-        background-color: @navbarInverseSearchBackgroundFocus;
-        border: 0;
-        .box-shadow(0 0 3px rgba(0,0,0,.15));
-        outline: 0;
-      }
-    }
-  }
-
-  // Navbar collapse button
-  .btn-navbar {
-    .buttonBackground(darken(@navbarInverseBackgroundHighlight, 5%), darken(@navbarInverseBackground, 5%));
-  }
-
-}
diff --git a/assets/less/bootstrap/navs.less b/assets/less/bootstrap/navs.less
deleted file mode 100644
index 0013179..0000000
--- a/assets/less/bootstrap/navs.less
+++ /dev/null
@@ -1,406 +0,0 @@
-//
-// Navs
-// --------------------------------------------------
-
-
-// BASE CLASS
-// ----------
-
-.nav {
-  margin-left: 0;
-  margin-bottom: @baseLineHeight;
-  list-style: none;
-}
-
-// Make links block level
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: @grayLighter;
-}
-
-// Prevent IE8 from misplacing imgs
-// See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
-.nav > li > a > img {
-  max-width: none;
-}
-
-// Redeclare pull classes because of specifity
-.nav > .pull-right {
-  float: right;
-}
-
-// Nav headers (for dropdowns and lists)
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  line-height: @baseLineHeight;
-  color: @grayLight;
-  text-shadow: 0 1px 0 rgba(255,255,255,.5);
-}
-// Space them out when they follow another list item (link)
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-
-
-
-// NAV LIST
-// --------
-
-.nav-list {
-  padding-left: 15px;
-  padding-right: 15px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-left:  -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255,255,255,.5);
-}
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
-  color: @white;
-  text-shadow: 0 -1px 0 rgba(0,0,0,.2);
-  background-color: @linkColor;
-}
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  margin-right: 2px;
-}
-// Dividers (basically an hr) within the dropdown
-.nav-list .divider {
-  .nav-divider();
-}
-
-
-
-// TABS AND PILLS
-// -------------
-
-// Common styles
-.nav-tabs,
-.nav-pills {
-  .clearfix();
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px; // keeps the overall height an even number
-}
-
-// TABS
-// ----
-
-// Give the tabs something to sit on
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-// Make the list-items overlay the bottom border
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-// Actual tabs (as links)
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: @baseLineHeight;
-  border: 1px solid transparent;
-  .border-radius(4px 4px 0 0);
-  &:hover,
-  &:focus {
-    border-color: @grayLighter @grayLighter #ddd;
-  }
-}
-// Active state, and it's :hover/:focus to override normal :hover/:focus
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-  color: @gray;
-  background-color: @bodyBackground;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-
-
-// PILLS
-// -----
-
-// Links rendered as pills
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  .border-radius(5px);
-}
-
-// Active state
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
-  color: @white;
-  background-color: @linkColor;
-}
-
-
-
-// STACKED NAV
-// -----------
-
-// Stacked tabs and pills
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0; // no need for the gap between nav items
-}
-
-// Tabs
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  .border-radius(0);
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  .border-top-radius(4px);
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  .border-bottom-radius(4px);
-}
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
-  border-color: #ddd;
-  z-index: 2;
-}
-
-// Pills
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px; // decrease margin to match sizing of stacked tabs
-}
-
-
-
-// DROPDOWNS
-// ---------
-
-.nav-tabs .dropdown-menu {
-  .border-radius(0 0 6px 6px); // remove the top rounded corners here since there is a hard edge above the menu
-}
-.nav-pills .dropdown-menu {
-  .border-radius(6px); // make rounded corners match the pills
-}
-
-// Default dropdown links
-// -------------------------
-// Make carets use linkColor to start
-.nav .dropdown-toggle .caret {
-  border-top-color: @linkColor;
-  border-bottom-color: @linkColor;
-  margin-top: 6px;
-}
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
-  border-top-color: @linkColorHover;
-  border-bottom-color: @linkColorHover;
-}
-/* move down carets for tabs */
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-
-// Active dropdown links
-// -------------------------
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: @gray;
-  border-bottom-color: @gray;
-}
-
-// Active:hover/:focus dropdown links
-// -------------------------
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
-  cursor: pointer;
-}
-
-// Open dropdowns
-// -------------------------
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
-  color: @white;
-  background-color: @grayLight;
-  border-color: @grayLight;
-}
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
-  border-top-color: @white;
-  border-bottom-color: @white;
-  .opacity(100);
-}
-
-// Dropdowns in stacked tabs
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
-  border-color: @grayLight;
-}
-
-
-
-// TABBABLE
-// --------
-
-
-// COMMON STYLES
-// -------------
-
-// Clear any floats
-.tabbable {
-  .clearfix();
-}
-.tab-content {
-  overflow: auto; // prevent content from running below tabs
-}
-
-// Remove border on bottom, left, right
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-
-// Show/hide tabbable areas
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-
-
-// BOTTOM
-// ------
-
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below > .nav-tabs > li > a {
-  .border-radius(0 0 4px 4px);
-  &:hover,
-  &:focus {
-    border-bottom-color: transparent;
-    border-top-color: #ddd;
-  }
-}
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
-  border-color: transparent #ddd #ddd #ddd;
-}
-
-// LEFT & RIGHT
-// ------------
-
-// Common styles
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-
-// Tabs on the left
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  .border-radius(4px 0 0 4px);
-}
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
-  border-color: @grayLighter #ddd @grayLighter @grayLighter;
-}
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: @white;
-}
-
-// Tabs on the right
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  .border-radius(0 4px 4px 0);
-}
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
-  border-color: @grayLighter @grayLighter @grayLighter #ddd;
-}
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: @white;
-}
-
-
-
-// DISABLED STATES
-// ---------------
-
-// Gray out text
-.nav > .disabled > a {
-  color: @grayLight;
-}
-// Nuke hover/focus effects
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  cursor: default;
-}
diff --git a/assets/less/bootstrap/pager.less b/assets/less/bootstrap/pager.less
deleted file mode 100644
index 1476188..0000000
--- a/assets/less/bootstrap/pager.less
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// Pager pagination
-// --------------------------------------------------
-
-
-.pager {
-  margin: @baseLineHeight 0;
-  list-style: none;
-  text-align: center;
-  .clearfix();
-}
-.pager li {
-  display: inline;
-}
-.pager li > a,
-.pager li > span {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  .border-radius(15px);
-}
-.pager li > a:hover,
-.pager li > a:focus {
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.pager .next > a,
-.pager .next > span {
-  float: right;
-}
-.pager .previous > a,
-.pager .previous > span {
-  float: left;
-}
-.pager .disabled > a,
-.pager .disabled > a:hover,
-.pager .disabled > a:focus,
-.pager .disabled > span {
-  color: @grayLight;
-  background-color: #fff;
-  cursor: default;
-}
\ No newline at end of file
diff --git a/assets/less/bootstrap/pagination.less b/assets/less/bootstrap/pagination.less
deleted file mode 100644
index a789db2..0000000
--- a/assets/less/bootstrap/pagination.less
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// Pagination (multiple pages)
-// --------------------------------------------------
-
-// Space out pagination from surrounding content
-.pagination {
-  margin: @baseLineHeight 0;
-}
-
-.pagination ul {
-  // Allow for text-based alignment
-  display: inline-block;
-  .ie7-inline-block();
-  // Reset default ul styles
-  margin-left: 0;
-  margin-bottom: 0;
-  // Visuals
-  .border-radius(@baseBorderRadius);
-  .box-shadow(0 1px 2px rgba(0,0,0,.05));
-}
-.pagination ul > li {
-  display: inline; // Remove list-style and block-level defaults
-}
-.pagination ul > li > a,
-.pagination ul > li > span {
-  float: left; // Collapse white-space
-  padding: 4px 12px;
-  line-height: @baseLineHeight;
-  text-decoration: none;
-  background-color: @paginationBackground;
-  border: 1px solid @paginationBorder;
-  border-left-width: 0;
-}
-.pagination ul > li > a:hover,
-.pagination ul > li > a:focus,
-.pagination ul > .active > a,
-.pagination ul > .active > span {
-  background-color: @paginationActiveBackground;
-}
-.pagination ul > .active > a,
-.pagination ul > .active > span {
-  color: @grayLight;
-  cursor: default;
-}
-.pagination ul > .disabled > span,
-.pagination ul > .disabled > a,
-.pagination ul > .disabled > a:hover,
-.pagination ul > .disabled > a:focus {
-  color: @grayLight;
-  background-color: transparent;
-  cursor: default;
-}
-.pagination ul > li:first-child > a,
-.pagination ul > li:first-child > span {
-  border-left-width: 1px;
-  .border-left-radius(@baseBorderRadius);
-}
-.pagination ul > li:last-child > a,
-.pagination ul > li:last-child > span {
-  .border-right-radius(@baseBorderRadius);
-}
-
-
-// Alignment
-// --------------------------------------------------
-
-.pagination-centered {
-  text-align: center;
-}
-.pagination-right {
-  text-align: right;
-}
-
-
-// Sizing
-// --------------------------------------------------
-
-// Large
-.pagination-large {
-  ul > li > a,
-  ul > li > span {
-    padding: @paddingLarge;
-    font-size: @fontSizeLarge;
-  }
-  ul > li:first-child > a,
-  ul > li:first-child > span {
-    .border-left-radius(@borderRadiusLarge);
-  }
-  ul > li:last-child > a,
-  ul > li:last-child > span {
-    .border-right-radius(@borderRadiusLarge);
-  }
-}
-
-// Small and mini
-.pagination-mini,
-.pagination-small {
-  ul > li:first-child > a,
-  ul > li:first-child > span {
-    .border-left-radius(@borderRadiusSmall);
-  }
-  ul > li:last-child > a,
-  ul > li:last-child > span {
-    .border-right-radius(@borderRadiusSmall);
-  }
-}
-
-// Small
-.pagination-small {
-  ul > li > a,
-  ul > li > span {
-    padding: @paddingSmall;
-    font-size: @fontSizeSmall;
-  }
-}
-// Mini
-.pagination-mini {
-  ul > li > a,
-  ul > li > span {
-    padding: @paddingMini;
-    font-size: @fontSizeMini;
-  }
-}
diff --git a/assets/less/bootstrap/popovers.less b/assets/less/bootstrap/popovers.less
deleted file mode 100644
index aae35c8..0000000
--- a/assets/less/bootstrap/popovers.less
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// Popovers
-// --------------------------------------------------
-
-
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: @zindexPopover;
-  display: none;
-  max-width: 276px;
-  padding: 1px;
-  text-align: left; // Reset given new insertion method
-  background-color: @popoverBackground;
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding;
-          background-clip: padding-box;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0,0,0,.2);
-  .border-radius(6px);
-  .box-shadow(0 5px 10px rgba(0,0,0,.2));
-
-  // Overrides for proper insertion
-  white-space: normal;
-
-  // Offset the popover to account for the popover arrow
-  &.top     { margin-top: -10px; }
-  &.right   { margin-left: 10px; }
-  &.bottom  { margin-top: 10px; }
-  &.left    { margin-left: -10px; }
-}
-
-.popover-title {
-  margin: 0; // reset heading margin
-  padding: 8px 14px;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 18px;
-  background-color: @popoverTitleBackground;
-  border-bottom: 1px solid darken(@popoverTitleBackground, 5%);
-  .border-radius(5px 5px 0 0);
-
-  &:empty {
-    display: none;
-  }
-}
-
-.popover-content {
-  padding: 9px 14px;
-}
-
-// Arrows
-//
-// .arrow is outer, .arrow:after is inner
-
-.popover .arrow,
-.popover .arrow:after {
-  position: absolute;
-  display: block;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-.popover .arrow {
-  border-width: @popoverArrowOuterWidth;
-}
-.popover .arrow:after {
-  border-width: @popoverArrowWidth;
-  content: "";
-}
-
-.popover {
-  &.top .arrow {
-    left: 50%;
-    margin-left: -@popoverArrowOuterWidth;
-    border-bottom-width: 0;
-    border-top-color: #999; // IE8 fallback
-    border-top-color: @popoverArrowOuterColor;
-    bottom: -@popoverArrowOuterWidth;
-    &:after {
-      bottom: 1px;
-      margin-left: -@popoverArrowWidth;
-      border-bottom-width: 0;
-      border-top-color: @popoverArrowColor;
-    }
-  }
-  &.right .arrow {
-    top: 50%;
-    left: -@popoverArrowOuterWidth;
-    margin-top: -@popoverArrowOuterWidth;
-    border-left-width: 0;
-    border-right-color: #999; // IE8 fallback
-    border-right-color: @popoverArrowOuterColor;
-    &:after {
-      left: 1px;
-      bottom: -@popoverArrowWidth;
-      border-left-width: 0;
-      border-right-color: @popoverArrowColor;
-    }
-  }
-  &.bottom .arrow {
-    left: 50%;
-    margin-left: -@popoverArrowOuterWidth;
-    border-top-width: 0;
-    border-bottom-color: #999; // IE8 fallback
-    border-bottom-color: @popoverArrowOuterColor;
-    top: -@popoverArrowOuterWidth;
-    &:after {
-      top: 1px;
-      margin-left: -@popoverArrowWidth;
-      border-top-width: 0;
-      border-bottom-color: @popoverArrowColor;
-    }
-  }
-
-  &.left .arrow {
-    top: 50%;
-    right: -@popoverArrowOuterWidth;
-    margin-top: -@popoverArrowOuterWidth;
-    border-right-width: 0;
-    border-left-color: #999; // IE8 fallback
-    border-left-color: @popoverArrowOuterColor;
-    &:after {
-      right: 1px;
-      border-right-width: 0;
-      border-left-color: @popoverArrowColor;
-      bottom: -@popoverArrowWidth;
-    }
-  }
-
-}
diff --git a/assets/less/bootstrap/progress-bars.less b/assets/less/bootstrap/progress-bars.less
deleted file mode 100644
index 5e0c3dd..0000000
--- a/assets/less/bootstrap/progress-bars.less
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// Progress bars
-// --------------------------------------------------
-
-
-// ANIMATIONS
-// ----------
-
-// Webkit
-@-webkit-keyframes progress-bar-stripes {
-  from  { background-position: 40px 0; }
-  to    { background-position: 0 0; }
-}
-
-// Firefox
-@-moz-keyframes progress-bar-stripes {
-  from  { background-position: 40px 0; }
-  to    { background-position: 0 0; }
-}
-
-// IE9
-@-ms-keyframes progress-bar-stripes {
-  from  { background-position: 40px 0; }
-  to    { background-position: 0 0; }
-}
-
-// Opera
-@-o-keyframes progress-bar-stripes {
-  from  { background-position: 0 0; }
-  to    { background-position: 40px 0; }
-}
-
-// Spec
-@keyframes progress-bar-stripes {
-  from  { background-position: 40px 0; }
-  to    { background-position: 0 0; }
-}
-
-
-
-// THE BARS
-// --------
-
-// Outer container
-.progress {
-  overflow: hidden;
-  height: @baseLineHeight;
-  margin-bottom: @baseLineHeight;
-  #gradient > .vertical(#f5f5f5, #f9f9f9);
-  .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
-  .border-radius(@baseBorderRadius);
-}
-
-// Bar of progress
-.progress .bar {
-  width: 0%;
-  height: 100%;
-  color: @white;
-  float: left;
-  font-size: 12px;
-  text-align: center;
-  text-shadow: 0 -1px 0 rgba(0,0,0,.25);
-  #gradient > .vertical(#149bdf, #0480be);
-  .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
-  .box-sizing(border-box);
-  .transition(width .6s ease);
-}
-.progress .bar + .bar {
-  .box-shadow(~"inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)");
-}
-
-// Striped bars
-.progress-striped .bar {
-  #gradient > .striped(#149bdf);
-  .background-size(40px 40px);
-}
-
-// Call animation for the active one
-.progress.active .bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-     -moz-animation: progress-bar-stripes 2s linear infinite;
-      -ms-animation: progress-bar-stripes 2s linear infinite;
-       -o-animation: progress-bar-stripes 2s linear infinite;
-          animation: progress-bar-stripes 2s linear infinite;
-}
-
-
-
-// COLORS
-// ------
-
-// Danger (red)
-.progress-danger .bar, .progress .bar-danger {
-  #gradient > .vertical(#ee5f5b, #c43c35);
-}
-.progress-danger.progress-striped .bar, .progress-striped .bar-danger {
-  #gradient > .striped(#ee5f5b);
-}
-
-// Success (green)
-.progress-success .bar, .progress .bar-success {
-  #gradient > .vertical(#62c462, #57a957);
-}
-.progress-success.progress-striped .bar, .progress-striped .bar-success {
-  #gradient > .striped(#62c462);
-}
-
-// Info (teal)
-.progress-info .bar, .progress .bar-info {
-  #gradient > .vertical(#5bc0de, #339bb9);
-}
-.progress-info.progress-striped .bar, .progress-striped .bar-info {
-  #gradient > .striped(#5bc0de);
-}
-
-// Warning (orange)
-.progress-warning .bar, .progress .bar-warning {
-  #gradient > .vertical(lighten(@orange, 15%), @orange);
-}
-.progress-warning.progress-striped .bar, .progress-striped .bar-warning {
-  #gradient > .striped(lighten(@orange, 15%));
-}
diff --git a/assets/less/bootstrap/reset.less b/assets/less/bootstrap/reset.less
deleted file mode 100644
index 4806bd5..0000000
--- a/assets/less/bootstrap/reset.less
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// Reset CSS
-// Adapted from http://github.com/necolas/normalize.css
-// --------------------------------------------------
-
-
-// Display in IE6-9 and FF3
-// -------------------------
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-
-// Display block in IE6-9 and FF3
-// -------------------------
-
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-
-// Prevents modern browsers from displaying 'audio' without controls
-// -------------------------
-
-audio:not([controls]) {
-    display: none;
-}
-
-// Base settings
-// -------------------------
-
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-      -ms-text-size-adjust: 100%;
-}
-// Focus states
-a:focus {
-  .tab-focus();
-}
-// Hover & Active
-a:hover,
-a:active {
-  outline: 0;
-}
-
-// Prevents sub and sup affecting line-height in all browsers
-// -------------------------
-
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-
-// Img border in a's and image quality
-// -------------------------
-
-img {
-  /* Responsive images (ensure images don't scale beyond their parents) */
-  max-width: 100%; /* Part 1: Set a maxium relative to the parent */
-  width: auto\9; /* IE7-8 need help adjusting responsive images */
-  height: auto; /* Part 2: Scale the height according to the width, otherwise you get stretching */
-
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-
-// Prevent max-width from affecting Google Maps
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-
-// Forms
-// -------------------------
-
-// Font size in all browsers, margin changes, misc consistency
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible; // Inner spacing ie IE6/7
-  line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
-  padding: 0;
-  border: 0;
-}
-button,
-html input[type="button"], // Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls.
-input[type="reset"],
-input[type="submit"] {
-    -webkit-appearance: button; // Corrects inability to style clickable `input` types in iOS.
-    cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
-}
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-    cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
-}
-input[type="search"] { // Appearance in Safari/Chrome
-  .box-sizing(content-box);
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
-}
-textarea {
-  overflow: auto; // Remove vertical scrollbar in IE6-9
-  vertical-align: top; // Readability and alignment cross-browser
-}
-
-
-// Printing
-// -------------------------
-// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
-
-@media print {
-
-  * {
-    text-shadow: none !important;
-    color: #000 !important; // Black prints faster: h5bp.com/s
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-
-  // Don't show links for images, or javascript/internal links
-  .ir a:after,
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-
-  thead {
-    display: table-header-group; // h5bp.com/t
-  }
-
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-
-  img {
-    max-width: 100% !important;
-  }
-
-  @page {
-    margin: 0.5cm;
-  }
-
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-}
diff --git a/assets/less/bootstrap/responsive-1200px-min.less b/assets/less/bootstrap/responsive-1200px-min.less
deleted file mode 100644
index 4f35ba6..0000000
--- a/assets/less/bootstrap/responsive-1200px-min.less
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// Responsive: Large desktop and up
-// --------------------------------------------------
-
-
-@media (min-width: 1200px) {
-
-  // Fixed grid
-  #grid > .core(@gridColumnWidth1200, @gridGutterWidth1200);
-
-  // Fluid grid
-  #grid > .fluid(@fluidGridColumnWidth1200, @fluidGridGutterWidth1200);
-
-  // Input grid
-  #grid > .input(@gridColumnWidth1200, @gridGutterWidth1200);
-
-  // Thumbnails
-  .thumbnails {
-    margin-left: -@gridGutterWidth1200;
-  }
-  .thumbnails > li {
-    margin-left: @gridGutterWidth1200;
-  }
-  .row-fluid .thumbnails {
-    margin-left: 0;
-  }
-
-}
diff --git a/assets/less/bootstrap/responsive-767px-max.less b/assets/less/bootstrap/responsive-767px-max.less
deleted file mode 100644
index 128f4ce..0000000
--- a/assets/less/bootstrap/responsive-767px-max.less
+++ /dev/null
@@ -1,193 +0,0 @@
-//
-// Responsive: Landscape phone to desktop/tablet
-// --------------------------------------------------
-
-
-@media (max-width: 767px) {
-
-  // Padding to set content in a bit
-  body {
-    padding-left: 20px;
-    padding-right: 20px;
-  }
-  // Negative indent the now static "fixed" navbar
-  .navbar-fixed-top,
-  .navbar-fixed-bottom,
-  .navbar-static-top {
-    margin-left: -20px;
-    margin-right: -20px;
-  }
-  // Remove padding on container given explicit padding set on body
-  .container-fluid {
-    padding: 0;
-  }
-
-  // TYPOGRAPHY
-  // ----------
-  // Reset horizontal dl
-  .dl-horizontal {
-    dt {
-      float: none;
-      clear: none;
-      width: auto;
-      text-align: left;
-    }
-    dd {
-      margin-left: 0;
-    }
-  }
-
-  // GRID & CONTAINERS
-  // -----------------
-  // Remove width from containers
-  .container {
-    width: auto;
-  }
-  // Fluid rows
-  .row-fluid {
-    width: 100%;
-  }
-  // Undo negative margin on rows and thumbnails
-  .row,
-  .thumbnails {
-    margin-left: 0;
-  }
-  .thumbnails > li {
-    float: none;
-    margin-left: 0; // Reset the default margin for all li elements when no .span* classes are present
-  }
-  // Make all grid-sized elements block level again
-  [class*="span"],
-  .uneditable-input[class*="span"], // Makes uneditable inputs full-width when using grid sizing
-  .row-fluid [class*="span"] {
-    float: none;
-    display: block;
-    width: 100%;
-    margin-left: 0;
-    .box-sizing(border-box);
-  }
-  .span12,
-  .row-fluid .span12 {
-    width: 100%;
-    .box-sizing(border-box);
-  }
-  .row-fluid [class*="offset"]:first-child {
-    margin-left: 0;
-  }
-
-  // FORM FIELDS
-  // -----------
-  // Make span* classes full width
-  .input-large,
-  .input-xlarge,
-  .input-xxlarge,
-  input[class*="span"],
-  select[class*="span"],
-  textarea[class*="span"],
-  .uneditable-input {
-    .input-block-level();
-  }
-  // But don't let it screw up prepend/append inputs
-  .input-prepend input,
-  .input-append input,
-  .input-prepend input[class*="span"],
-  .input-append input[class*="span"] {
-    display: inline-block; // redeclare so they don't wrap to new lines
-    width: auto;
-  }
-  .controls-row [class*="span"] + [class*="span"] {
-    margin-left: 0;
-  }
-
-  // Modals
-  .modal {
-    position: fixed;
-    top:   20px;
-    left:  20px;
-    right: 20px;
-    width: auto;
-    margin: 0;
-    &.fade  { top: -100px; }
-    &.fade.in { top: 20px; }
-  }
-
-}
-
-
-
-// UP TO LANDSCAPE PHONE
-// ---------------------
-
-@media (max-width: 480px) {
-
-  // Smooth out the collapsing/expanding nav
-  .nav-collapse {
-    -webkit-transform: translate3d(0, 0, 0); // activate the GPU
-  }
-
-  // Block level the page header small tag for readability
-  .page-header h1 small {
-    display: block;
-    line-height: @baseLineHeight;
-  }
-
-  // Update checkboxes for iOS
-  input[type="checkbox"],
-  input[type="radio"] {
-    border: 1px solid #ccc;
-  }
-
-  // Remove the horizontal form styles
-  .form-horizontal {
-    .control-label {
-      float: none;
-      width: auto;
-      padding-top: 0;
-      text-align: left;
-    }
-    // Move over all input controls and content
-    .controls {
-      margin-left: 0;
-    }
-    // Move the options list down to align with labels
-    .control-list {
-      padding-top: 0; // has to be padding because margin collaspes
-    }
-    // Move over buttons in .form-actions to align with .controls
-    .form-actions {
-      padding-left: 10px;
-      padding-right: 10px;
-    }
-  }
-
-  // Medias
-  // Reset float and spacing to stack
-  .media .pull-left,
-  .media .pull-right  {
-    float: none;
-    display: block;
-    margin-bottom: 10px;
-  }
-  // Remove side margins since we stack instead of indent
-  .media-object {
-    margin-right: 0;
-    margin-left: 0;
-  }
-
-  // Modals
-  .modal {
-    top:   10px;
-    left:  10px;
-    right: 10px;
-  }
-  .modal-header .close {
-    padding: 10px;
-    margin: -10px;
-  }
-
-  // Carousel
-  .carousel-caption {
-    position: static;
-  }
-
-}
diff --git a/assets/less/bootstrap/responsive-768px-979px.less b/assets/less/bootstrap/responsive-768px-979px.less
deleted file mode 100644
index 8e8c486..0000000
--- a/assets/less/bootstrap/responsive-768px-979px.less
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Responsive: Tablet to desktop
-// --------------------------------------------------
-
-
-@media (min-width: 768px) and (max-width: 979px) {
-
-  // Fixed grid
-  #grid > .core(@gridColumnWidth768, @gridGutterWidth768);
-
-  // Fluid grid
-  #grid > .fluid(@fluidGridColumnWidth768, @fluidGridGutterWidth768);
-
-  // Input grid
-  #grid > .input(@gridColumnWidth768, @gridGutterWidth768);
-
-  // No need to reset .thumbnails here since it's the same @gridGutterWidth
-
-}
diff --git a/assets/less/bootstrap/responsive-navbar.less b/assets/less/bootstrap/responsive-navbar.less
deleted file mode 100644
index 21cd3ba..0000000
--- a/assets/less/bootstrap/responsive-navbar.less
+++ /dev/null
@@ -1,189 +0,0 @@
-//
-// Responsive: Navbar
-// --------------------------------------------------
-
-
-// TABLETS AND BELOW
-// -----------------
-@media (max-width: @navbarCollapseWidth) {
-
-  // UNFIX THE TOPBAR
-  // ----------------
-  // Remove any padding from the body
-  body {
-    padding-top: 0;
-  }
-  // Unfix the navbars
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    position: static;
-  }
-  .navbar-fixed-top {
-    margin-bottom: @baseLineHeight;
-  }
-  .navbar-fixed-bottom {
-    margin-top: @baseLineHeight;
-  }
-  .navbar-fixed-top .navbar-inner,
-  .navbar-fixed-bottom .navbar-inner {
-    padding: 5px;
-  }
-  .navbar .container {
-    width: auto;
-    padding: 0;
-  }
-  // Account for brand name
-  .navbar .brand {
-    padding-left: 10px;
-    padding-right: 10px;
-    margin: 0 0 0 -5px;
-  }
-
-  // COLLAPSIBLE NAVBAR
-  // ------------------
-  // Nav collapse clears brand
-  .nav-collapse {
-    clear: both;
-  }
-  // Block-level the nav
-  .nav-collapse .nav {
-    float: none;
-    margin: 0 0 (@baseLineHeight / 2);
-  }
-  .nav-collapse .nav > li {
-    float: none;
-  }
-  .nav-collapse .nav > li > a {
-    margin-bottom: 2px;
-  }
-  .nav-collapse .nav > .divider-vertical {
-    display: none;
-  }
-  .nav-collapse .nav .nav-header {
-    color: @navbarText;
-    text-shadow: none;
-  }
-  // Nav and dropdown links in navbar
-  .nav-collapse .nav > li > a,
-  .nav-collapse .dropdown-menu a {
-    padding: 9px 15px;
-    font-weight: bold;
-    color: @navbarLinkColor;
-    .border-radius(3px);
-  }
-  // Buttons
-  .nav-collapse .btn {
-    padding: 4px 10px 4px;
-    font-weight: normal;
-    .border-radius(@baseBorderRadius);
-  }
-  .nav-collapse .dropdown-menu li + li a {
-    margin-bottom: 2px;
-  }
-  .nav-collapse .nav > li > a:hover,
-  .nav-collapse .nav > li > a:focus,
-  .nav-collapse .dropdown-menu a:hover,
-  .nav-collapse .dropdown-menu a:focus {
-    background-color: @navbarBackground;
-  }
-  .navbar-inverse .nav-collapse .nav > li > a,
-  .navbar-inverse .nav-collapse .dropdown-menu a {
-    color: @navbarInverseLinkColor;
-  }
-  .navbar-inverse .nav-collapse .nav > li > a:hover,
-  .navbar-inverse .nav-collapse .nav > li > a:focus,
-  .navbar-inverse .nav-collapse .dropdown-menu a:hover,
-  .navbar-inverse .nav-collapse .dropdown-menu a:focus {
-    background-color: @navbarInverseBackground;
-  }
-  // Buttons in the navbar
-  .nav-collapse.in .btn-group {
-    margin-top: 5px;
-    padding: 0;
-  }
-  // Dropdowns in the navbar
-  .nav-collapse .dropdown-menu {
-    position: static;
-    top: auto;
-    left: auto;
-    float: none;
-    display: none;
-    max-width: none;
-    margin: 0 15px;
-    padding: 0;
-    background-color: transparent;
-    border: none;
-    .border-radius(0);
-    .box-shadow(none);
-  }
-  .nav-collapse .open > .dropdown-menu { 
-    display: block; 
-  }
-
-  .nav-collapse .dropdown-menu:before,
-  .nav-collapse .dropdown-menu:after {
-    display: none;
-  }
-  .nav-collapse .dropdown-menu .divider {
-    display: none;
-  }
-  .nav-collapse .nav > li > .dropdown-menu {
-    &:before,
-    &:after {
-      display: none;
-    }
-  }
-  // Forms in navbar
-  .nav-collapse .navbar-form,
-  .nav-collapse .navbar-search {
-    float: none;
-    padding: (@baseLineHeight / 2) 15px;
-    margin: (@baseLineHeight / 2) 0;
-    border-top: 1px solid @navbarBackground;
-    border-bottom: 1px solid @navbarBackground;
-    .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)");
-  }
-  .navbar-inverse .nav-collapse .navbar-form,
-  .navbar-inverse .nav-collapse .navbar-search {
-    border-top-color: @navbarInverseBackground;
-    border-bottom-color: @navbarInverseBackground;
-  }
-  // Pull right (secondary) nav content
-  .navbar .nav-collapse .nav.pull-right {
-    float: none;
-    margin-left: 0;
-  }
-  // Hide everything in the navbar save .brand and toggle button */
-  .nav-collapse,
-  .nav-collapse.collapse {
-    overflow: hidden;
-    height: 0;
-  }
-  // Navbar button
-  .navbar .btn-navbar {
-    display: block;
-  }
-
-  // STATIC NAVBAR
-  // -------------
-  .navbar-static .navbar-inner {
-    padding-left:  10px;
-    padding-right: 10px;
-  }
-
-
-}
-
-
-// DEFAULT DESKTOP
-// ---------------
-
-@media (min-width: @navbarCollapseDesktopWidth) {
-
-  // Required to make the collapsing navbar work on regular desktops
-  .nav-collapse.collapse {
-    height: auto !important;
-    overflow: visible !important;
-  }
-
-}
diff --git a/assets/less/bootstrap/responsive-utilities.less b/assets/less/bootstrap/responsive-utilities.less
deleted file mode 100644
index bf43e8e..0000000
--- a/assets/less/bootstrap/responsive-utilities.less
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// Responsive: Utility classes
-// --------------------------------------------------
-
-
-// IE10 Metro responsive
-// Required for Windows 8 Metro split-screen snapping with IE10
-// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
-@-ms-viewport{
-  width: device-width;
-}
-
-// Hide from screenreaders and browsers
-// Credit: HTML5 Boilerplate
-.hidden {
-  display: none;
-  visibility: hidden;
-}
-
-// Visibility utilities
-
-// For desktops
-.visible-phone     { display: none !important; }
-.visible-tablet    { display: none !important; }
-.hidden-phone      { }
-.hidden-tablet     { }
-.hidden-desktop    { display: none !important; }
-.visible-desktop   { display: inherit !important; }
-
-// Tablets & small desktops only
-@media (min-width: 768px) and (max-width: 979px) {
-  // Hide everything else
-  .hidden-desktop    { display: inherit !important; }
-  .visible-desktop   { display: none !important ; }
-  // Show
-  .visible-tablet    { display: inherit !important; }
-  // Hide
-  .hidden-tablet     { display: none !important; }
-}
-
-// Phones only
-@media (max-width: 767px) {
-  // Hide everything else
-  .hidden-desktop    { display: inherit !important; }
-  .visible-desktop   { display: none !important; }
-  // Show
-  .visible-phone     { display: inherit !important; } // Use inherit to restore previous behavior
-  // Hide
-  .hidden-phone      { display: none !important; }
-}
-
-// Print utilities
-.visible-print    { display: none !important; }
-.hidden-print     { }
-
-@media print {
-  .visible-print  { display: inherit !important; }
-  .hidden-print   { display: none !important; }
-}
diff --git a/assets/less/bootstrap/responsive.less b/assets/less/bootstrap/responsive.less
deleted file mode 100644
index 9e5f9b1..0000000
--- a/assets/less/bootstrap/responsive.less
+++ /dev/null
@@ -1,48 +0,0 @@
-/*!
- * Bootstrap Responsive v2.3.2
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-
-// Responsive.less
-// For phone and tablet devices
-// -------------------------------------------------------------
-
-
-// REPEAT VARIABLES & MIXINS
-// -------------------------
-// Required since we compile the responsive stuff separately
-
-@import "variables.less"; // Modify this for custom colors, font-sizes, etc
-@import "mixins.less";
-
-
-// RESPONSIVE CLASSES
-// ------------------
-
-@import "responsive-utilities.less";
-
-
-// MEDIA QUERIES
-// ------------------
-
-// Large desktops
-@import "responsive-1200px-min.less";
-
-// Tablets to regular desktops
-@import "responsive-768px-979px.less";
-
-// Phones to portrait tablets and narrow desktops
-@import "responsive-767px-max.less";
-
-
-// RESPONSIVE NAVBAR
-// ------------------
-
-// From 979px and below, show a button to toggle navbar contents
-@import "responsive-navbar.less";
diff --git a/assets/less/bootstrap/scaffolding.less b/assets/less/bootstrap/scaffolding.less
deleted file mode 100644
index f17e8ca..0000000
--- a/assets/less/bootstrap/scaffolding.less
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// Scaffolding
-// --------------------------------------------------
-
-
-// Body reset
-// -------------------------
-
-body {
-  margin: 0;
-  font-family: @baseFontFamily;
-  font-size: @baseFontSize;
-  line-height: @baseLineHeight;
-  color: @textColor;
-  background-color: @bodyBackground;
-}
-
-
-// Links
-// -------------------------
-
-a {
-  color: @linkColor;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: @linkColorHover;
-  text-decoration: underline;
-}
-
-
-// Images
-// -------------------------
-
-// Rounded corners
-.img-rounded {
-  .border-radius(6px);
-}
-
-// Add polaroid-esque trim
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0,0,0,.2);
-  .box-shadow(0 1px 3px rgba(0,0,0,.1));
-}
-
-// Perfect circle
-.img-circle {
-  .border-radius(500px); // crank the border-radius so it works with most reasonably sized images
-}
diff --git a/assets/less/bootstrap/sprites.less b/assets/less/bootstrap/sprites.less
deleted file mode 100644
index 1812bf7..0000000
--- a/assets/less/bootstrap/sprites.less
+++ /dev/null
@@ -1,197 +0,0 @@
-//
-// Sprites
-// --------------------------------------------------
-
-
-// ICONS
-// -----
-
-// All icons receive the styles of the <i> tag with a base class
-// of .i and are then given a unique class to add width, height,
-// and background-position. Your resulting HTML will look like
-// <i class="icon-inbox"></i>.
-
-// For the white version of the icons, just add the .icon-white class:
-// <i class="icon-inbox icon-white"></i>
-
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  .ie7-restore-right-whitespace();
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("@{iconSpritePath}");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-  margin-top: 1px;
-}
-
-/* White icons with optional class, or on hover/focus/active states of certain elements */
-.icon-white,
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:focus > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > li > a:focus > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"],
-.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:focus > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"],
-.dropdown-submenu:focus > a > [class*=" icon-"] {
-  background-image: url("@{iconWhiteSpritePath}");
-}
-
-.icon-glass              { background-position: 0      0; }
-.icon-music              { background-position: -24px  0; }
-.icon-search             { background-position: -48px  0; }
-.icon-envelope           { background-position: -72px  0; }
-.icon-heart              { background-position: -96px  0; }
-.icon-star               { background-position: -120px 0; }
-.icon-star-empty         { background-position: -144px 0; }
-.icon-user               { background-position: -168px 0; }
-.icon-film               { background-position: -192px 0; }
-.icon-th-large           { background-position: -216px 0; }
-.icon-th                 { background-position: -240px 0; }
-.icon-th-list            { background-position: -264px 0; }
-.icon-ok                 { background-position: -288px 0; }
-.icon-remove             { background-position: -312px 0; }
-.icon-zoom-in            { background-position: -336px 0; }
-.icon-zoom-out           { background-position: -360px 0; }
-.icon-off                { background-position: -384px 0; }
-.icon-signal             { background-position: -408px 0; }
-.icon-cog                { background-position: -432px 0; }
-.icon-trash              { background-position: -456px 0; }
-
-.icon-home               { background-position: 0      -24px; }
-.icon-file               { background-position: -24px  -24px; }
-.icon-time               { background-position: -48px  -24px; }
-.icon-road               { background-position: -72px  -24px; }
-.icon-download-alt       { background-position: -96px  -24px; }
-.icon-download           { background-position: -120px -24px; }
-.icon-upload             { background-position: -144px -24px; }
-.icon-inbox              { background-position: -168px -24px; }
-.icon-play-circle        { background-position: -192px -24px; }
-.icon-repeat             { background-position: -216px -24px; }
-.icon-refresh            { background-position: -240px -24px; }
-.icon-list-alt           { background-position: -264px -24px; }
-.icon-lock               { background-position: -287px -24px; } // 1px off
-.icon-flag               { background-position: -312px -24px; }
-.icon-headphones         { background-position: -336px -24px; }
-.icon-volume-off         { background-position: -360px -24px; }
-.icon-volume-down        { background-position: -384px -24px; }
-.icon-volume-up          { background-position: -408px -24px; }
-.icon-qrcode             { background-position: -432px -24px; }
-.icon-barcode            { background-position: -456px -24px; }
-
-.icon-tag                { background-position: 0      -48px; }
-.icon-tags               { background-position: -25px  -48px; } // 1px off
-.icon-book               { background-position: -48px  -48px; }
-.icon-bookmark           { background-position: -72px  -48px; }
-.icon-print              { background-position: -96px  -48px; }
-.icon-camera             { background-position: -120px -48px; }
-.icon-font               { background-position: -144px -48px; }
-.icon-bold               { background-position: -167px -48px; } // 1px off
-.icon-italic             { background-position: -192px -48px; }
-.icon-text-height        { background-position: -216px -48px; }
-.icon-text-width         { background-position: -240px -48px; }
-.icon-align-left         { background-position: -264px -48px; }
-.icon-align-center       { background-position: -288px -48px; }
-.icon-align-right        { background-position: -312px -48px; }
-.icon-align-justify      { background-position: -336px -48px; }
-.icon-list               { background-position: -360px -48px; }
-.icon-indent-left        { background-position: -384px -48px; }
-.icon-indent-right       { background-position: -408px -48px; }
-.icon-facetime-video     { background-position: -432px -48px; }
-.icon-picture            { background-position: -456px -48px; }
-
-.icon-pencil             { background-position: 0      -72px; }
-.icon-map-marker         { background-position: -24px  -72px; }
-.icon-adjust             { background-position: -48px  -72px; }
-.icon-tint               { background-position: -72px  -72px; }
-.icon-edit               { background-position: -96px  -72px; }
-.icon-share              { background-position: -120px -72px; }
-.icon-check              { background-position: -144px -72px; }
-.icon-move               { background-position: -168px -72px; }
-.icon-step-backward      { background-position: -192px -72px; }
-.icon-fast-backward      { background-position: -216px -72px; }
-.icon-backward           { background-position: -240px -72px; }
-.icon-play               { background-position: -264px -72px; }
-.icon-pause              { background-position: -288px -72px; }
-.icon-stop               { background-position: -312px -72px; }
-.icon-forward            { background-position: -336px -72px; }
-.icon-fast-forward       { background-position: -360px -72px; }
-.icon-step-forward       { background-position: -384px -72px; }
-.icon-eject              { background-position: -408px -72px; }
-.icon-chevron-left       { background-position: -432px -72px; }
-.icon-chevron-right      { background-position: -456px -72px; }
-
-.icon-plus-sign          { background-position: 0      -96px; }
-.icon-minus-sign         { background-position: -24px  -96px; }
-.icon-remove-sign        { background-position: -48px  -96px; }
-.icon-ok-sign            { background-position: -72px  -96px; }
-.icon-question-sign      { background-position: -96px  -96px; }
-.icon-info-sign          { background-position: -120px -96px; }
-.icon-screenshot         { background-position: -144px -96px; }
-.icon-remove-circle      { background-position: -168px -96px; }
-.icon-ok-circle          { background-position: -192px -96px; }
-.icon-ban-circle         { background-position: -216px -96px; }
-.icon-arrow-left         { background-position: -240px -96px; }
-.icon-arrow-right        { background-position: -264px -96px; }
-.icon-arrow-up           { background-position: -289px -96px; } // 1px off
-.icon-arrow-down         { background-position: -312px -96px; }
-.icon-share-alt          { background-position: -336px -96px; }
-.icon-resize-full        { background-position: -360px -96px; }
-.icon-resize-small       { background-position: -384px -96px; }
-.icon-plus               { background-position: -408px -96px; }
-.icon-minus              { background-position: -433px -96px; }
-.icon-asterisk           { background-position: -456px -96px; }
-
-.icon-exclamation-sign   { background-position: 0      -120px; }
-.icon-gift               { background-position: -24px  -120px; }
-.icon-leaf               { background-position: -48px  -120px; }
-.icon-fire               { background-position: -72px  -120px; }
-.icon-eye-open           { background-position: -96px  -120px; }
-.icon-eye-close          { background-position: -120px -120px; }
-.icon-warning-sign       { background-position: -144px -120px; }
-.icon-plane              { background-position: -168px -120px; }
-.icon-calendar           { background-position: -192px -120px; }
-.icon-random             { background-position: -216px -120px; width: 16px; }
-.icon-comment            { background-position: -240px -120px; }
-.icon-magnet             { background-position: -264px -120px; }
-.icon-chevron-up         { background-position: -288px -120px; }
-.icon-chevron-down       { background-position: -313px -119px; } // 1px, 1px off
-.icon-retweet            { background-position: -336px -120px; }
-.icon-shopping-cart      { background-position: -360px -120px; }
-.icon-folder-close       { background-position: -384px -120px; width: 16px; }
-.icon-folder-open        { background-position: -408px -120px; width: 16px; }
-.icon-resize-vertical    { background-position: -432px -119px; } // 1px, 1px off
-.icon-resize-horizontal  { background-position: -456px -118px; } // 1px, 2px off
-
-.icon-hdd                     { background-position: 0      -144px; }
-.icon-bullhorn                { background-position: -24px  -144px; }
-.icon-bell                    { background-position: -48px  -144px; }
-.icon-certificate             { background-position: -72px  -144px; }
-.icon-thumbs-up               { background-position: -96px  -144px; }
-.icon-thumbs-down             { background-position: -120px -144px; }
-.icon-hand-right              { background-position: -144px -144px; }
-.icon-hand-left               { background-position: -168px -144px; }
-.icon-hand-up                 { background-position: -192px -144px; }
-.icon-hand-down               { background-position: -216px -144px; }
-.icon-circle-arrow-right      { background-position: -240px -144px; }
-.icon-circle-arrow-left       { background-position: -264px -144px; }
-.icon-circle-arrow-up         { background-position: -288px -144px; }
-.icon-circle-arrow-down       { background-position: -312px -144px; }
-.icon-globe                   { background-position: -336px -144px; }
-.icon-wrench                  { background-position: -360px -144px; }
-.icon-tasks                   { background-position: -384px -144px; }
-.icon-filter                  { background-position: -408px -144px; }
-.icon-briefcase               { background-position: -432px -144px; }
-.icon-fullscreen              { background-position: -456px -144px; }
diff --git a/assets/less/bootstrap/tables.less b/assets/less/bootstrap/tables.less
deleted file mode 100644
index 0e35271..0000000
--- a/assets/less/bootstrap/tables.less
+++ /dev/null
@@ -1,244 +0,0 @@
-//
-// Tables
-// --------------------------------------------------
-
-
-// BASE TABLES
-// -----------------
-
-table {
-  max-width: 100%;
-  background-color: @tableBackground;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-// BASELINE STYLES
-// ---------------
-
-.table {
-  width: 100%;
-  margin-bottom: @baseLineHeight;
-  // Cells
-  th,
-  td {
-    padding: 8px;
-    line-height: @baseLineHeight;
-    text-align: left;
-    vertical-align: top;
-    border-top: 1px solid @tableBorder;
-  }
-  th {
-    font-weight: bold;
-  }
-  // Bottom align for column headings
-  thead th {
-    vertical-align: bottom;
-  }
-  // Remove top border from thead by default
-  caption + thead tr:first-child th,
-  caption + thead tr:first-child td,
-  colgroup + thead tr:first-child th,
-  colgroup + thead tr:first-child td,
-  thead:first-child tr:first-child th,
-  thead:first-child tr:first-child td {
-    border-top: 0;
-  }
-  // Account for multiple tbody instances
-  tbody + tbody {
-    border-top: 2px solid @tableBorder;
-  }
-
-  // Nesting
-  .table {
-    background-color: @bodyBackground;
-  }
-}
-
-
-
-// CONDENSED TABLE W/ HALF PADDING
-// -------------------------------
-
-.table-condensed {
-  th,
-  td {
-    padding: 4px 5px;
-  }
-}
-
-
-// BORDERED VERSION
-// ----------------
-
-.table-bordered {
-  border: 1px solid @tableBorder;
-  border-collapse: separate; // Done so we can round those corners!
-  *border-collapse: collapse; // IE7 can't round corners anyway
-  border-left: 0;
-  .border-radius(@baseBorderRadius);
-  th,
-  td {
-    border-left: 1px solid @tableBorder;
-  }
-  // Prevent a double border
-  caption + thead tr:first-child th,
-  caption + tbody tr:first-child th,
-  caption + tbody tr:first-child td,
-  colgroup + thead tr:first-child th,
-  colgroup + tbody tr:first-child th,
-  colgroup + tbody tr:first-child td,
-  thead:first-child tr:first-child th,
-  tbody:first-child tr:first-child th,
-  tbody:first-child tr:first-child td {
-    border-top: 0;
-  }
-  // For first th/td in the first row in the first thead or tbody
-  thead:first-child tr:first-child > th:first-child,
-  tbody:first-child tr:first-child > td:first-child,
-  tbody:first-child tr:first-child > th:first-child {
-    .border-top-left-radius(@baseBorderRadius);
-  }
-  // For last th/td in the first row in the first thead or tbody
-  thead:first-child tr:first-child > th:last-child,
-  tbody:first-child tr:first-child > td:last-child,
-  tbody:first-child tr:first-child > th:last-child {
-    .border-top-right-radius(@baseBorderRadius);
-  }
-  // For first th/td (can be either) in the last row in the last thead, tbody, and tfoot
-  thead:last-child tr:last-child > th:first-child,
-  tbody:last-child tr:last-child > td:first-child,
-  tbody:last-child tr:last-child > th:first-child,
-  tfoot:last-child tr:last-child > td:first-child,
-  tfoot:last-child tr:last-child > th:first-child {
-    .border-bottom-left-radius(@baseBorderRadius);
-  }
-  // For last th/td (can be either) in the last row in the last thead, tbody, and tfoot
-  thead:last-child tr:last-child > th:last-child,
-  tbody:last-child tr:last-child > td:last-child,
-  tbody:last-child tr:last-child > th:last-child,
-  tfoot:last-child tr:last-child > td:last-child,
-  tfoot:last-child tr:last-child > th:last-child {
-    .border-bottom-right-radius(@baseBorderRadius);
-  }
-
-  // Clear border-radius for first and last td in the last row in the last tbody for table with tfoot
-  tfoot + tbody:last-child tr:last-child td:first-child {
-    .border-bottom-left-radius(0);
-  }
-  tfoot + tbody:last-child tr:last-child td:last-child {
-    .border-bottom-right-radius(0);
-  }
-
-  // Special fixes to round the left border on the first td/th
-  caption + thead tr:first-child th:first-child,
-  caption + tbody tr:first-child td:first-child,
-  colgroup + thead tr:first-child th:first-child,
-  colgroup + tbody tr:first-child td:first-child {
-    .border-top-left-radius(@baseBorderRadius);
-  }
-  caption + thead tr:first-child th:last-child,
-  caption + tbody tr:first-child td:last-child,
-  colgroup + thead tr:first-child th:last-child,
-  colgroup + tbody tr:first-child td:last-child {
-    .border-top-right-radius(@baseBorderRadius);
-  }
-
-}
-
-
-
-
-// ZEBRA-STRIPING
-// --------------
-
-// Default zebra-stripe styles (alternating gray and transparent backgrounds)
-.table-striped {
-  tbody {
-    > tr:nth-child(odd) > td,
-    > tr:nth-child(odd) > th {
-      background-color: @tableBackgroundAccent;
-    }
-  }
-}
-
-
-// HOVER EFFECT
-// ------------
-// Placed here since it has to come after the potential zebra striping
-.table-hover {
-  tbody {
-    tr:hover > td,
-    tr:hover > th {
-      background-color: @tableBackgroundHover;
-    }
-  }
-}
-
-
-// TABLE CELL SIZING
-// -----------------
-
-// Reset default grid behavior
-table td[class*="span"],
-table th[class*="span"],
-.row-fluid table td[class*="span"],
-.row-fluid table th[class*="span"] {
-  display: table-cell;
-  float: none; // undo default grid column styles
-  margin-left: 0; // undo default grid column styles
-}
-
-// Change the column widths to account for td/th padding
-.table td,
-.table th {
-  &.span1     { .tableColumns(1); }
-  &.span2     { .tableColumns(2); }
-  &.span3     { .tableColumns(3); }
-  &.span4     { .tableColumns(4); }
-  &.span5     { .tableColumns(5); }
-  &.span6     { .tableColumns(6); }
-  &.span7     { .tableColumns(7); }
-  &.span8     { .tableColumns(8); }
-  &.span9     { .tableColumns(9); }
-  &.span10    { .tableColumns(10); }
-  &.span11    { .tableColumns(11); }
-  &.span12    { .tableColumns(12); }
-}
-
-
-
-// TABLE BACKGROUNDS
-// -----------------
-// Exact selectors below required to override .table-striped
-
-.table tbody tr {
-  &.success > td {
-    background-color: @successBackground;
-  }
-  &.error > td {
-    background-color: @errorBackground;
-  }
-  &.warning > td {
-    background-color: @warningBackground;
-  }
-  &.info > td {
-    background-color: @infoBackground;
-  }
-}
-
-// Hover states for .table-hover
-.table-hover tbody tr {
-  &.success:hover > td {
-    background-color: darken(@successBackground, 5%);
-  }
-  &.error:hover > td {
-    background-color: darken(@errorBackground, 5%);
-  }
-  &.warning:hover > td {
-    background-color: darken(@warningBackground, 5%);
-  }
-  &.info:hover > td {
-    background-color: darken(@infoBackground, 5%);
-  }
-}
diff --git a/assets/less/bootstrap/tests/buttons.html b/assets/less/bootstrap/tests/buttons.html
deleted file mode 100644
index 3f41165..0000000
--- a/assets/less/bootstrap/tests/buttons.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Buttons &middot; Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../../docs/assets/css/bootstrap.css" rel="stylesheet">
-    <style>
-      body {
-        padding-top: 30px;
-        padding-bottom: 30px;
-      }
-    </style>
-    <link href="../../docs/assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../../docs/assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../../docs/assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../../docs/assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../../docs/assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../../docs/assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <div class="container">
-
-      <h2>Dropups</h2>
-      <div class="btn-toolbar">
-        <div class="btn-group dropup">
-          <button class="btn">Dropup</button>
-          <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-primary">Dropup</button>
-          <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-danger">Dropup</button>
-          <button class="btn btn-danger dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-warning">Dropup</button>
-          <button class="btn btn-warning dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-success">Dropup</button>
-          <button class="btn btn-success dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-secondary">Dropup</button>
-          <button class="btn btn-secondary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-inverse">Dropup</button>
-          <button class="btn btn-inverse dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-      </div><!-- /btn-toolbar -->
-
-
-    </div> <!-- /container -->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../../docs/assets/js/jquery.js"></script>
-    <script src="../../docs/assets/js/bootstrap-transition.js"></script>
-    <script src="../../docs/assets/js/bootstrap-alert.js"></script>
-    <script src="../../docs/assets/js/bootstrap-modal.js"></script>
-    <script src="../../docs/assets/js/bootstrap-dropdown.js"></script>
-    <script src="../../docs/assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tab.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tooltip.js"></script>
-    <script src="../../docs/assets/js/bootstrap-popover.js"></script>
-    <script src="../../docs/assets/js/bootstrap-button.js"></script>
-    <script src="../../docs/assets/js/bootstrap-collapse.js"></script>
-    <script src="../../docs/assets/js/bootstrap-carousel.js"></script>
-    <script src="../../docs/assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/assets/less/bootstrap/tests/css-tests.css b/assets/less/bootstrap/tests/css-tests.css
deleted file mode 100644
index 0f5604e..0000000
--- a/assets/less/bootstrap/tests/css-tests.css
+++ /dev/null
@@ -1,150 +0,0 @@
-/*!
- * Bootstrap CSS Tests
- */
-
-
-/* Remove background image */
-body {
-  background-image: none;
-}
-
-/* Space out subhead */
-.subhead {
-  margin-bottom: 36px;
-}
-/*h4 {
-  margin-bottom: 5px;
-}
-*/
-
-.type-test {
-  margin-bottom: 20px;
-  padding: 0 20px 20px;
-  background: url(../../docs/assets/img/grid-baseline-20px.png);
-}
-.type-test h1,
-.type-test h2,
-.type-test h3,
-.type-test h4,
-.type-test h5,
-.type-test h6 {
-  background-color: rgba(255,0,0,.2);
-}
-
-
-/* colgroup tests */
-.col1 {
-  background-color: rgba(255,0,0,.1);
-}
-.col2 {
-  background-color: rgba(0,255,0,.1);
-}
-.col3 {
-  background-color: rgba(0,0,255,.1);
-}
-
-
-/* Fluid row inputs */
-#rowInputs .row > [class*=span],
-#fluidRowInputs .row-fluid > [class*=span] {
-  background-color: rgba(255,0,0,.1);
-}
-
-
-/* Fluid grid */
-.fluid-grid {
-  margin-bottom: 45px;
-}
-.fluid-grid .row {
-  height: 40px;
-  padding-top: 10px;
-  margin-top: 10px;
-  color: #ddd;
-  text-align: center;
-}
-.fluid-grid .span1 {
-  background-color: #999;
-}
-
-
-/* Gradients */
-
-[class^="gradient-"] {
-  width: 100%;
-  height: 400px;
-  margin: 20px 0;
-  -webkit-border-radius: 5px;
-     -moz-border-radius: 5px;
-          border-radius: 5px;
-}
-
-.gradient-horizontal {
-  background-color: #333333;
-  background-image: -moz-linear-gradient(left, #555555, #333333);
-  background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#555555), to(#333333));
-  background-image: -webkit-linear-gradient(left, #555555, #333333);
-  background-image: -o-linear-gradient(left, #555555, #333333);
-  background-image: linear-gradient(to right, #555555, #333333);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=1);
-}
-
-.gradient-vertical {
-  background-color: #474747;
-  background-image: -moz-linear-gradient(top, #555555, #333333);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333));
-  background-image: -webkit-linear-gradient(top, #555555, #333333);
-  background-image: -o-linear-gradient(top, #555555, #333333);
-  background-image: linear-gradient(to bottom, #555555, #333333);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=0);
-}
-
-.gradient-directional {
-  background-color: #333333;
-  background-image: -moz-linear-gradient(45deg, #555555, #333333);
-  background-image: -webkit-linear-gradient(45deg, #555555, #333333);
-  background-image: -o-linear-gradient(45deg, #555555, #333333);
-  background-image: linear-gradient(45deg, #555555, #333333);
-  background-repeat: repeat-x;
-}
-
-.gradient-vertical-three {
-  background-color: #8940a5;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00b3ee), color-stop(50%, #7a43b6), to(#c3325f));
-  background-image: -webkit-linear-gradient(#00b3ee, #7a43b6 50%, #c3325f);
-  background-image: -moz-linear-gradient(top, #00b3ee, #7a43b6 50%, #c3325f);
-  background-image: -o-linear-gradient(#00b3ee, #7a43b6 50%, #c3325f);
-  background-image: linear-gradient(#00b3ee, #7a43b6 50%, #c3325f);
-  background-repeat: no-repeat;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff00b3ee', endColorstr='#ffc3325f', GradientType=0);
-}
-
-.gradient-radial {
-  background-color: #333333;
-  background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(#555555), to(#333333));
-  background-image: -webkit-radial-gradient(circle, #555555, #333333);
-  background-image: -moz-radial-gradient(circle, #555555, #333333);
-  background-image: -o-radial-gradient(circle, #555555, #333333);
-  background-repeat: no-repeat;
-}
-
-.gradient-striped {
-  background-color: #555555;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.gradient-horizontal-three {
-  background-color: #00b3ee;
-  background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(#00b3ee), color-stop(50%, #7a43b6), to(#c3325f));
-  background-image: -webkit-linear-gradient(left, #00b3ee, #7a43b6 50%, #c3325f);
-  background-image: -moz-linear-gradient(left, #00b3ee, #7a43b6 50%, #c3325f);
-  background-image: -o-linear-gradient(left, #00b3ee, #7a43b6 50%, #c3325f);
-  background-image: linear-gradient(to right, #00b3ee, #7a43b6 50%, #c3325f);
-  background-repeat: no-repeat;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00b3ee', endColorstr='#c3325f', GradientType=0);
-}
diff --git a/assets/less/bootstrap/thumbnails.less b/assets/less/bootstrap/thumbnails.less
deleted file mode 100644
index 4fd07d2..0000000
--- a/assets/less/bootstrap/thumbnails.less
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// Thumbnails
-// --------------------------------------------------
-
-
-// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files
-
-// Make wrapper ul behave like the grid
-.thumbnails {
-  margin-left: -@gridGutterWidth;
-  list-style: none;
-  .clearfix();
-}
-// Fluid rows have no left margin
-.row-fluid .thumbnails {
-  margin-left: 0;
-}
-
-// Float li to make thumbnails appear in a row
-.thumbnails > li {
-  float: left; // Explicity set the float since we don't require .span* classes
-  margin-bottom: @baseLineHeight;
-  margin-left: @gridGutterWidth;
-}
-
-// The actual thumbnail (can be `a` or `div`)
-.thumbnail {
-  display: block;
-  padding: 4px;
-  line-height: @baseLineHeight;
-  border: 1px solid #ddd;
-  .border-radius(@baseBorderRadius);
-  .box-shadow(0 1px 3px rgba(0,0,0,.055));
-  .transition(all .2s ease-in-out);
-}
-// Add a hover/focus state for linked versions only
-a.thumbnail:hover,
-a.thumbnail:focus {
-  border-color: @linkColor;
-  .box-shadow(0 1px 4px rgba(0,105,214,.25));
-}
-
-// Images and captions
-.thumbnail > img {
-  display: block;
-  max-width: 100%;
-  margin-left: auto;
-  margin-right: auto;
-}
-.thumbnail .caption {
-  padding: 9px;
-  color: @gray;
-}
diff --git a/assets/less/bootstrap/tooltip.less b/assets/less/bootstrap/tooltip.less
deleted file mode 100644
index 83d5f2b..0000000
--- a/assets/less/bootstrap/tooltip.less
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// Tooltips
-// --------------------------------------------------
-
-
-// Base class
-.tooltip {
-  position: absolute;
-  z-index: @zindexTooltip;
-  display: block;
-  visibility: visible;
-  font-size: 11px;
-  line-height: 1.4;
-  .opacity(0);
-  &.in     { .opacity(80); }
-  &.top    { margin-top:  -3px; padding: 5px 0; }
-  &.right  { margin-left:  3px; padding: 0 5px; }
-  &.bottom { margin-top:   3px; padding: 5px 0; }
-  &.left   { margin-left: -3px; padding: 0 5px; }
-}
-
-// Wrapper for the tooltip content
-.tooltip-inner {
-  max-width: 200px;
-  padding: 8px;
-  color: @tooltipColor;
-  text-align: center;
-  text-decoration: none;
-  background-color: @tooltipBackground;
-  .border-radius(@baseBorderRadius);
-}
-
-// Arrows
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-.tooltip {
-  &.top .tooltip-arrow {
-    bottom: 0;
-    left: 50%;
-    margin-left: -@tooltipArrowWidth;
-    border-width: @tooltipArrowWidth @tooltipArrowWidth 0;
-    border-top-color: @tooltipArrowColor;
-  }
-  &.right .tooltip-arrow {
-    top: 50%;
-    left: 0;
-    margin-top: -@tooltipArrowWidth;
-    border-width: @tooltipArrowWidth @tooltipArrowWidth @tooltipArrowWidth 0;
-    border-right-color: @tooltipArrowColor;
-  }
-  &.left .tooltip-arrow {
-    top: 50%;
-    right: 0;
-    margin-top: -@tooltipArrowWidth;
-    border-width: @tooltipArrowWidth 0 @tooltipArrowWidth @tooltipArrowWidth;
-    border-left-color: @tooltipArrowColor;
-  }
-  &.bottom .tooltip-arrow {
-    top: 0;
-    left: 50%;
-    margin-left: -@tooltipArrowWidth;
-    border-width: 0 @tooltipArrowWidth @tooltipArrowWidth;
-    border-bottom-color: @tooltipArrowColor;
-  }
-}
diff --git a/assets/less/bootstrap/type.less b/assets/less/bootstrap/type.less
deleted file mode 100644
index 337138a..0000000
--- a/assets/less/bootstrap/type.less
+++ /dev/null
@@ -1,247 +0,0 @@
-//
-// Typography
-// --------------------------------------------------
-
-
-// Body text
-// -------------------------
-
-p {
-  margin: 0 0 @baseLineHeight / 2;
-}
-.lead {
-  margin-bottom: @baseLineHeight;
-  font-size: @baseFontSize * 1.5;
-  font-weight: 200;
-  line-height: @baseLineHeight * 1.5;
-}
-
-
-// Emphasis & misc
-// -------------------------
-
-// Ex: 14px base font * 85% = about 12px
-small   { font-size: 85%; }
-
-strong  { font-weight: bold; }
-em      { font-style: italic; }
-cite    { font-style: normal; }
-
-// Utility classes
-.muted               { color: @grayLight; }
-a.muted:hover,
-a.muted:focus        { color: darken(@grayLight, 10%); }
-
-.text-warning        { color: @warningText; }
-a.text-warning:hover,
-a.text-warning:focus { color: darken(@warningText, 10%); }
-
-.text-error          { color: @errorText; }
-a.text-error:hover,
-a.text-error:focus   { color: darken(@errorText, 10%); }
-
-.text-info           { color: @infoText; }
-a.text-info:hover,
-a.text-info:focus    { color: darken(@infoText, 10%); }
-
-.text-success        { color: @successText; }
-a.text-success:hover,
-a.text-success:focus { color: darken(@successText, 10%); }
-
-.text-left           { text-align: left; }
-.text-right          { text-align: right; }
-.text-center         { text-align: center; }
-
-
-// Headings
-// -------------------------
-
-h1, h2, h3, h4, h5, h6 {
-  margin: (@baseLineHeight / 2) 0;
-  font-family: @headingsFontFamily;
-  font-weight: @headingsFontWeight;
-  line-height: @baseLineHeight;
-  color: @headingsColor;
-  text-rendering: optimizelegibility; // Fix the character spacing for headings
-  small {
-    font-weight: normal;
-    line-height: 1;
-    color: @grayLight;
-  }
-}
-
-h1,
-h2,
-h3 { line-height: @baseLineHeight * 2; }
-
-h1 { font-size: @baseFontSize * 2.75; } // ~38px
-h2 { font-size: @baseFontSize * 2.25; } // ~32px
-h3 { font-size: @baseFontSize * 1.75; } // ~24px
-h4 { font-size: @baseFontSize * 1.25; } // ~18px
-h5 { font-size: @baseFontSize; }
-h6 { font-size: @baseFontSize * 0.85; } // ~12px
-
-h1 small { font-size: @baseFontSize * 1.75; } // ~24px
-h2 small { font-size: @baseFontSize * 1.25; } // ~18px
-h3 small { font-size: @baseFontSize; }
-h4 small { font-size: @baseFontSize; }
-
-
-// Page header
-// -------------------------
-
-.page-header {
-  padding-bottom: (@baseLineHeight / 2) - 1;
-  margin: @baseLineHeight 0 (@baseLineHeight * 1.5);
-  border-bottom: 1px solid @grayLighter;
-}
-
-
-
-// Lists
-// --------------------------------------------------
-
-// Unordered and Ordered lists
-ul, ol {
-  padding: 0;
-  margin: 0 0 @baseLineHeight / 2 25px;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-li {
-  line-height: @baseLineHeight;
-}
-
-// Remove default list styles
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-
-// Single-line list items
-ul.inline,
-ol.inline {
-  margin-left: 0;
-  list-style: none;
-  > li {
-    display: inline-block;
-    .ie7-inline-block();
-    padding-left: 5px;
-    padding-right: 5px;
-  }
-}
-
-// Description Lists
-dl {
-  margin-bottom: @baseLineHeight;
-}
-dt,
-dd {
-  line-height: @baseLineHeight;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: @baseLineHeight / 2;
-}
-// Horizontal layout (like forms)
-.dl-horizontal {
-  .clearfix(); // Ensure dl clears floats if empty dd elements present
-  dt {
-    float: left;
-    width: @horizontalComponentOffset - 20;
-    clear: left;
-    text-align: right;
-    .text-overflow();
-  }
-  dd {
-    margin-left: @horizontalComponentOffset;
-  }
-}
-
-// MISC
-// ----
-
-// Horizontal rules
-hr {
-  margin: @baseLineHeight 0;
-  border: 0;
-  border-top: 1px solid @hrBorder;
-  border-bottom: 1px solid @white;
-}
-
-// Abbreviations and acronyms
-abbr[title],
-// Added data-* attribute to help out our tooltip plugin, per https://github.com/twitter/bootstrap/issues/5257
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted @grayLight;
-}
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-
-// Blockquotes
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 @baseLineHeight;
-  border-left: 5px solid @grayLighter;
-  p {
-    margin-bottom: 0;
-    font-size: @baseFontSize * 1.25;
-    font-weight: 300;
-    line-height: 1.25;
-  }
-  small {
-    display: block;
-    line-height: @baseLineHeight;
-    color: @grayLight;
-    &:before {
-      content: '\2014 \00A0';
-    }
-  }
-
-  // Float right with text-align: right
-  &.pull-right {
-    float: right;
-    padding-right: 15px;
-    padding-left: 0;
-    border-right: 5px solid @grayLighter;
-    border-left: 0;
-    p,
-    small {
-      text-align: right;
-    }
-    small {
-      &:before {
-        content: '';
-      }
-      &:after {
-        content: '\00A0 \2014';
-      }
-    }
-  }
-}
-
-// Quotes
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-
-// Addresses
-address {
-  display: block;
-  margin-bottom: @baseLineHeight;
-  font-style: normal;
-  line-height: @baseLineHeight;
-}
diff --git a/assets/less/bootstrap/utilities.less b/assets/less/bootstrap/utilities.less
deleted file mode 100644
index 314b4ff..0000000
--- a/assets/less/bootstrap/utilities.less
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-// Utility classes
-// --------------------------------------------------
-
-
-// Quick floats
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-
-// Toggling content
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-
-// Visibility
-.invisible {
-  visibility: hidden;
-}
-
-// For Affix plugin
-.affix {
-  position: fixed;
-}
diff --git a/assets/less/bootstrap/variables.less b/assets/less/bootstrap/variables.less
deleted file mode 100644
index 486eb7b..0000000
--- a/assets/less/bootstrap/variables.less
+++ /dev/null
@@ -1,301 +0,0 @@
-//
-// Variables
-// --------------------------------------------------
-
-
-// Global values
-// --------------------------------------------------
-
-
-// Grays
-// -------------------------
-@black:                 #000;
-@grayDarker:            #222;
-@grayDark:              #333;
-@gray:                  #555;
-@grayLight:             #999;
-@grayLighter:           #eee;
-@white:                 #fff;
-
-
-// Accent colors
-// -------------------------
-@blue:                  #049cdb;
-@blueDark:              #0064cd;
-@green:                 #46a546;
-@dangerRed:             #9d261d;
-@yellow:                #ffc40d;
-@orange:                #f89406;
-@pink:                  #c3325f;
-@purple:                #7a43b6;
-
-
-// Scaffolding
-// -------------------------
-@bodyBackground:        @white;
-@textColor:             @grayDark;
-
-
-// Links
-// -------------------------
-@linkColor:             #08c;
-@linkColorHover:        darken(@linkColor, 15%);
-
-
-// Typography
-// -------------------------
-@sansFontFamily:        "Helvetica Neue", Helvetica, Arial, sans-serif;
-@serifFontFamily:       Georgia, "Times New Roman", Times, serif;
-@monoFontFamily:        Monaco, Menlo, Consolas, "Courier New", monospace;
-
-@baseFontSize:          14px;
-@baseFontFamily:        @sansFontFamily;
-@baseLineHeight:        20px;
-@altFontFamily:         @serifFontFamily;
-
-@headingsFontFamily:    inherit; // empty to use BS default, @baseFontFamily
-@headingsFontWeight:    bold;    // instead of browser default, bold
-@headingsColor:         inherit; // empty to use BS default, @textColor
-
-
-// Component sizing
-// -------------------------
-// Based on 14px font-size and 20px line-height
-
-@fontSizeLarge:         @baseFontSize * 1.25; // ~18px
-@fontSizeSmall:         @baseFontSize * 0.85; // ~12px
-@fontSizeMini:          @baseFontSize * 0.75; // ~11px
-
-@paddingLarge:          11px 19px; // 44px
-@paddingSmall:          2px 10px;  // 26px
-@paddingMini:           0 6px;   // 22px
-
-@baseBorderRadius:      4px;
-@borderRadiusLarge:     6px;
-@borderRadiusSmall:     3px;
-
-
-// Tables
-// -------------------------
-@tableBackground:                   transparent; // overall background-color
-@tableBackgroundAccent:             #f9f9f9; // for striping
-@tableBackgroundHover:              #f5f5f5; // for hover
-@tableBorder:                       #ddd; // table and cell border
-
-// Buttons
-// -------------------------
-@btnBackground:                     @white;
-@btnBackgroundHighlight:            darken(@white, 10%);
-@btnBorder:                         #ccc;
-
-@btnPrimaryBackground:              @linkColor;
-@btnPrimaryBackgroundHighlight:     spin(@btnPrimaryBackground, 20%);
-
-@btnInfoBackground:                 #5bc0de;
-@btnInfoBackgroundHighlight:        #2f96b4;
-
-@btnSuccessBackground:              #62c462;
-@btnSuccessBackgroundHighlight:     #51a351;
-
-@btnWarningBackground:              lighten(@dangerRed, 15%);
-@btnWarningBackgroundHighlight:     @dangerRed;
-
-@btnDangerBackground:               @dangerRed;
-@btnDangerBackgroundHighlight:      @hoverHighlight;
-
-@btnInverseBackground:              #444;
-@btnInverseBackgroundHighlight:     @grayDarker;
-
-
-// Forms
-// -------------------------
-@inputBackground:               @white;
-@inputBorder:                   #ccc;
-@inputBorderRadius:             @baseBorderRadius;
-@inputDisabledBackground:       @grayLighter;
-@formActionsBackground:         #f5f5f5;
-@inputHeight:                   @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border
-
-
-// Dropdowns
-// -------------------------
-@dropdownBackground:            #2B2F33;
-@dropdownBorder:                rgba(0,0,0,.2);
-@dropdownDividerTop:            #1A1A1A;
-@dropdownDividerBottom:         #1A1A1A;
-
-@dropdownLinkColor:             #D9D9D9;
-@dropdownLinkColorHover:        @white;
-@dropdownLinkColorActive:       @white;
-
-@dropdownLinkBackgroundActive:  @linkColor;
-@dropdownLinkBackgroundHover:   @dropdownLinkBackgroundActive;
-
-
-
-// COMPONENT VARIABLES
-// --------------------------------------------------
-
-
-// Z-index master list
-// -------------------------
-// Used for a bird's eye view of components dependent on the z-axis
-// Try to avoid customizing these :)
-@zindexDropdown:          1000;
-@zindexPopover:           1010;
-@zindexTooltip:           1030;
-@zindexFixedNavbar:       1030;
-@zindexModalBackdrop:     1040;
-@zindexModal:             1050;
-
-
-// Sprite icons path
-// -------------------------
-@iconSpritePath:          "../img/glyphicons-halflings.png";
-@iconWhiteSpritePath:     "../img/glyphicons-halflings-white.png";
-
-
-// Input placeholder text color
-// -------------------------
-@placeholderText:         @grayLight;
-
-
-// Hr border color
-// -------------------------
-@hrBorder:                @grayLighter;
-
-
-// Horizontal forms & lists
-// -------------------------
-@horizontalComponentOffset:       180px;
-
-
-// Wells
-// -------------------------
-@wellBackground:                  #f5f5f5;
-
-
-// Navbar
-// -------------------------
-@navbarCollapseWidth:             979px;
-@navbarCollapseDesktopWidth:      @navbarCollapseWidth + 1;
-
-@navbarHeight:                    40px;
-@navbarBackgroundHighlight:       #ffffff;
-@navbarBackground:                darken(@navbarBackgroundHighlight, 5%);
-@navbarBorder:                    darken(@navbarBackground, 12%);
-
-@navbarText:                      #777;
-@navbarLinkColor:                 #777;
-@navbarLinkColorHover:            @grayDark;
-@navbarLinkColorActive:           @gray;
-@navbarLinkBackgroundHover:       transparent;
-@navbarLinkBackgroundActive:      darken(@navbarBackground, 5%);
-
-@navbarBrandColor:                @navbarLinkColor;
-
-// Inverted navbar
-@navbarInverseBackground:                #111111;
-@navbarInverseBackgroundHighlight:       #222222;
-@navbarInverseBorder:                    #252525;
-
-@navbarInverseText:                      @grayLight;
-@navbarInverseLinkColor:                 @grayLight;
-@navbarInverseLinkColorHover:            @white;
-@navbarInverseLinkColorActive:           @navbarInverseLinkColorHover;
-@navbarInverseLinkBackgroundHover:       transparent;
-@navbarInverseLinkBackgroundActive:      @navbarInverseBackground;
-
-@navbarInverseSearchBackground:          lighten(@navbarInverseBackground, 25%);
-@navbarInverseSearchBackgroundFocus:     @white;
-@navbarInverseSearchBorder:              @navbarInverseBackground;
-@navbarInverseSearchPlaceholderColor:    #ccc;
-
-@navbarInverseBrandColor:                @navbarInverseLinkColor;
-
-
-// Pagination
-// -------------------------
-@paginationBackground:                #fff;
-@paginationBorder:                    #ddd;
-@paginationActiveBackground:          #f5f5f5;
-
-
-// Hero unit
-// -------------------------
-@heroUnitBackground:              @grayLighter;
-@heroUnitHeadingColor:            inherit;
-@heroUnitLeadColor:               inherit;
-
-
-// Form states and alerts
-// -------------------------
-@warningText:             #c09853;
-@warningBackground:       #fcf8e3;
-@warningBorder:           darken(spin(@warningBackground, -10), 3%);
-
-@errorText:               #b94a48;
-@errorBackground:         #f2dede;
-@errorBorder:             darken(spin(@errorBackground, -10), 3%);
-
-@successText:             #468847;
-@successBackground:       #dff0d8;
-@successBorder:           darken(spin(@successBackground, -10), 5%);
-
-@infoText:                #3a87ad;
-@infoBackground:          #d9edf7;
-@infoBorder:              darken(spin(@infoBackground, -10), 7%);
-
-
-// Tooltips and popovers
-// -------------------------
-@tooltipColor:            #fff;
-@tooltipBackground:       #000;
-@tooltipArrowWidth:       5px;
-@tooltipArrowColor:       @tooltipBackground;
-
-@popoverBackground:       #fff;
-@popoverArrowWidth:       10px;
-@popoverArrowColor:       #fff;
-@popoverTitleBackground:  darken(@popoverBackground, 3%);
-
-// Special enhancement for popovers
-@popoverArrowOuterWidth:  @popoverArrowWidth + 1;
-@popoverArrowOuterColor:  rgba(0,0,0,.25);
-
-
-
-// GRID
-// --------------------------------------------------
-
-
-// Default 940px grid
-// -------------------------
-@gridColumns:             12;
-@gridColumnWidth:         60px;
-@gridGutterWidth:         20px;
-@gridRowWidth:            (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
-
-// 1200px min
-@gridColumnWidth1200:     70px;
-@gridGutterWidth1200:     30px;
-@gridRowWidth1200:        (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1));
-
-// 768px-979px
-@gridColumnWidth768:      42px;
-@gridGutterWidth768:      20px;
-@gridRowWidth768:         (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1));
-
-
-// Fluid grid
-// -------------------------
-@fluidGridColumnWidth:    percentage(@gridColumnWidth/@gridRowWidth);
-@fluidGridGutterWidth:    percentage(@gridGutterWidth/@gridRowWidth);
-
-// 1200px min
-@fluidGridColumnWidth1200:     percentage(@gridColumnWidth1200/@gridRowWidth1200);
-@fluidGridGutterWidth1200:     percentage(@gridGutterWidth1200/@gridRowWidth1200);
-
-// 768px-979px
-@fluidGridColumnWidth768:      percentage(@gridColumnWidth768/@gridRowWidth768);
-@fluidGridGutterWidth768:      percentage(@gridGutterWidth768/@gridRowWidth768);
diff --git a/assets/less/bootstrap/wells.less b/assets/less/bootstrap/wells.less
deleted file mode 100644
index 84a744b..0000000
--- a/assets/less/bootstrap/wells.less
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// Wells
-// --------------------------------------------------
-
-
-// Base class
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: @wellBackground;
-  border: 1px solid darken(@wellBackground, 7%);
-  .border-radius(@baseBorderRadius);
-  .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
-  blockquote {
-    border-color: #ddd;
-    border-color: rgba(0,0,0,.15);
-  }
-}
-
-// Sizes
-.well-large {
-  padding: 24px;
-  .border-radius(@borderRadiusLarge);
-}
-.well-small {
-  padding: 9px;
-  .border-radius(@borderRadiusSmall);
-}
diff --git a/assets/less/couchdb.less b/assets/less/couchdb.less
deleted file mode 100644
index 3a423c4..0000000
--- a/assets/less/couchdb.less
+++ /dev/null
@@ -1,66 +0,0 @@
-//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
-//  use this file except in compliance with the License. You may obtain a copy of
-//  the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-//  License for the specific language governing permissions and limitations under
-//  the License.
-
-@import "bootstrap/bootstrap.less";
-
-//
-// Variables
-// --------------------------------------------------
-
-
-// Global values
-// --------------------------------------------------
-
-// Links
-@linkColor:             #CA2530;
-@linkColorHover:        darken(@linkColor, 15%);
-
-// Grays
-@black:                 #0C0C0C;
-@grayDark:              #5A5A5A;
-@grayDarker:            darken(@grayDark, 10%);
-@gray:                  #F80507;
-@grayLight:             #E27B81;
-@grayLighter:           #B95D40;
-@white:                 #FDFBFB;
-
-// Accent colors
-// -------------------------
-@blue:                  #049cdb;
-@blueDark:              #0064cd;
-@green:                 #46a546;
-@red:                   #9d261d;
-@yellow:                #ffc40d;
-@orange:                #f89406;
-@pink:                  #c3325f;
-@purple:                #7a43b6;
-
-
-// Scaffolding
-// -------------------------
-@bodyBackground:        @white;
-@textColor:             @grayDark;
-
-// Typography
-// -------------------------
-@sansFontFamily:        "Helvetica Neue", Helvetica, Arial, sans-serif;
-@serifFontFamily:       Georgia, "Times New Roman", Times, serif;
-@monoFontFamily:        Monaco, Menlo, Consolas, "Courier New", monospace;
-
-@baseFontSize:          14px;
-@baseFontFamily:        @sansFontFamily;
-@baseLineHeight:        20px;
-@altFontFamily:         @serifFontFamily;
-
-@headingsFontFamily:    inherit; // empty to use BS default, @baseFontFamily
-@headingsFontWeight:    bold;    // instead of browser default, bold
-@headingsColor:         inherit; // empty to use BS default, @textColor
diff --git a/assets/less/fauxton.less b/assets/less/fauxton.less
deleted file mode 100644
index db6b1db..0000000
--- a/assets/less/fauxton.less
+++ /dev/null
@@ -1,687 +0,0 @@
-//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
-//  use this file except in compliance with the License. You may obtain a copy of
-//  the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-//  License for the specific language governing permissions and limitations under
-//  the License.
-
-@import "variables.less";
-@import "bootstrap/bootstrap.less";
-@import "bootstrap/mixins.less";
-@import "../../node_modules/react-select/less/default.less";
-@import "../../node_modules/rc-slider/assets/index.css";
-
-#grid {
-  .core  {
-    .span(@gridColumns) {
-      width: (@gridColumnWidth * @gridColumns) + (@gridGutterWidth * (@gridColumns - 1));
-    }
-  }
-};
-
-
-@import "layouts.less";
-@import "prettyprint.less";
-@import "icons.less";
-@import "code-editors.less";
-@import "templates.less";
-@import "formstyles.less";
-@import "pagination.less";
-@import "trays.less";
-@import "mixins.less";
-@import "animations.less";
-@import "react-animations.less";
-@import "notification-center.less";
-
-/**
- * HTML-wide overrides
- **/
-
-*, *:before, *:after {
-  .box-sizing(border-box);
-}
-
-html {
-  height: 100%;
-}
-
-body {
-  font-size: 16px;
-  line-height:1.3;
-  padding-bottom: 0px;
-  color: #333;
-  height: 100%;
-  background-color: @sidebarBG;
-}
-
-h2,h3,h4 {font-weight: 600;}
-
-// remove blue borders from clicked elements
-button:focus, a:focus {
-  outline: 0;
-}
-
-.table input[type="checkbox"] {
-  margin: 0 0 0 8px;
-}
-
-a,
-a:visited,
-a:active {
-  color: @linkColor;
-  text-decoration: none;
-}
-
-a:hover {
-  color: @linkColorHover;
-  text-decoration: none;
-}
-
-/* bootstrap overrides */
-.page-header {
-  border-bottom: 1px solid #E3E3E3;
-  margin-bottom: 10px;
-  h3 {
-    text-transform: capitalize;
-    margin-bottom: 0;
-  }
-}
-
-.nav-tabs > li {
-  margin-right: 2px;
-  > a {
-    cursor: pointer;
-    color: #333;
-    border-color: #eeeeee #eeeeee #dddddd;
-    text-decoration: none;
-    background-color: #eeeeee;
-    border-radius: 0;
-    border-left: none;
-    border-right: none;
-    &:hover,
-    &:focus {
-      background-color: @linkColor;
-      border-top: 1px solid @linkColor;
-      color: white;
-    }
-  }
-}
-
-.well {
-  select {
-    margin: 0;
-  }
-  .controls-group {
-    &:first-child,
-    &:last-child {
-      margin-top: 24px;
-    }
-    margin-bottom: 8px;
-  }
-  .controls-row {
-    margin-bottom: 8px;
-  }
-  .row-fluid {
-    margin: 0;
-  }
-  .row-fluid .row-fluid:last-child .well-item {
-    border: none;
-  }
-  .well-item {
-    color: #666;
-    font-size: 12px;
-    border-bottom: 1px solid #e5e5e5;
-    padding: 8px 4px;
-    strong {
-      font-size: 16px;
-    }
-  }
-}
-
-.modal {
-  transform: translateX(-50%);
-  margin-left: inherit;
-}
-
-.modal-dialog {
-  display: flex;
-  flex-direction: row;
-}
-
-.modal-content {
-  flex: 1;
-  width: 560px;
-}
-
-/*TABLE STYLES*/
-table.table {
-  table-layout: fixed;
-}
-table tr td{
-  word-wrap: break-word;
-  &.select {
-    width: 20px;
-  }
-}
-thead {
-  border-bottom: 2px solid #333;
-}
-tbody {
-  padding-top: 10px;
-}
-.table-condensed td {
-  padding: 18px 5px;
-}
-.table-striped tbody > tr:nth-child(odd) > td,
-.table-striped tbody > tr:nth-child(odd) > th {
-  background-color: #F7F7F7;
-}
-
-/**
- * Fauxton-specific Bootstrap additions
- **/
-table.databases {
-  clear: both;
-}
-.nav-tabs > li > a .fonticon:before {
-  margin-right: 6px;
-  font-size: 16px;
-}
-
-.notification-icon {
-  padding-right: 8px;
-}
-
-#dashboard-upper-content{
-  .tab-content {
-    padding-top: 70px;
-  }
-
-  .well{
-    padding: 20px;
-    .border-radius(0);
-    .box-shadow(none);
-  }
-}
-
-#dashboard-content .scrollable {
-  height: auto;
-  overflow-y: auto;
-  overflow-x: hidden;
-  width: 100%;
-  position: absolute;
-  padding: 0;
-  left: 0;
-  right: 0;
-  top: 0;
-  bottom: 0;
-}
-
-/*ONE PANEL TEMPLATE ONLY STYLES  AKA _all_dbs */
-
-.result-tools{
-  border-bottom: 1px solid #999999;
-  padding: 10px 0;
-  float: left;
-  width: 100%;
-  margin-bottom: 10px;
-}
-
-#db-views-tabs-nav {
-  position: fixed;
-  z-index: 1;
-  margin-top: 19px;
-  margin-bottom: 0;
-  /*background-color: #f4f4f4;*/
-  padding: 0 20px;
-}
-
-.db-views-smaller {
-  max-width: 500px;
-}
-
-/** table row selector thing **/
-.select{
-  > a{
-    display: block;
-    padding: 5px 15px 5px 5px;
-    border: 1px solid #989898;
-    position: relative;
-    background-color: #FFFFFF;
-    color: #666666;
-    &:after {
-      content: '';
-      width: 0;
-      height: 0;
-      border-left: 7px solid transparent;
-      border-right: 7px solid transparent;
-      border-top: 7px solid #989898;
-      position: absolute;
-      right: 9px;
-      top: 12px;
-    }
-    &:before{
-      content: '';
-      border-left:  1px solid #989898;
-      height: 30px;
-      position: absolute;
-      right: 30px;
-      top: 0;
-    }
-  }
-}
-
-/*documents and databases */
-
-.view.show{
-  color: @fontGrey;
-}
-
-
-// legacy - remove when soft migration to header toggles is complete
-// missing: add_config_option
-.header-icon {
-  font-size: 20px;
-  &:before {
-    float: left;
-    margin: 10px 6px 0px 0px;
-  }
-}
-
-
-.js-filter-form {
-  .help-block {
-    padding: 5px 0 5px 0;
-  }
-  .icon {
-    font-size: 16px;
-  }
-}
-
-
-//---header--//
-#dashboard > header {
-  background-color: @breadcrumbBG;
-  height: 64px;
-
-  /* the position absolute is necessary to allow the 6px box shadow overlap the panels below. The parent <header>
-   ensures the flexbox height is respected */
-  &>div {
-    height: 65px;
-    .bottom-border();
-    position: absolute;
-    width: 100%;
-    z-index: 2; /* needed because ace's selected row has a z-index of 1 & can't be overridden */
-  }
-}
-
-.header-right {
-  .well {
-    padding: 0;
-    margin: 0;
-  }
-}
-
-
-.faux-header__searchboxwrapper {
-  overflow: visible;
-  height: 64px;
-  width: 235px;
-}
-
-.faux-header__searchboxcontainer {
-  height: @collapsedNavWidth;
-  overflow: visible;
-  position: absolute;
-  padding: 12px;
-}
-
-.faux-header__searchboxcontainer {
-  .Select-control, .Select-menu-outer {
-    width: 210px;
-  }
-}
-
-// this allows the results expand as much as need be when the component is used in the header
-.Select-menu-outer {
-  &>div>div {
-    padding-right: 25px; // prevents overlapping of auto-generated scrollbar
-  }
-  min-width: 210px;
-  max-width: 450px;
-  width: auto;
-}
-
-// react-select color design
-.Select div.Select-control {
-  border-radius: initial;
-  border: none;
-}
-
-.Select .Select-menu-outer {
-  border-radius: inherit;
-  border: none;
-}
-
-.Select-option {
-  color: #fff;
-  background-color: #333333;
-}
-
-.Select .is-focused {
-  background-color: @hoverHighlight;
-}
-
-.Select-option:hover {
-  background-color: @hoverHighlight;
-}
-
-.Select-option:last-child {
-  border-radius: initial;
-}
-
-.Select .is-focused:not(.is-open) > .Select-control {
-  box-shadow: transparent;
-}
-
-.Select-option.is-selected {
-  color: #fff;
-}
-
-.Select .Select-menu {
-  max-height: 291px;
-  background-color: #333333;
-}
-.Select-arrow-zone > .Select-arrow {
-  border-top-color: #333;
-
-}
-
-.Select-arrow-zone:hover > .Select-arrow {
-  border-top-color: @hoverHighlight;
-}
-
-
-//----footer--///
-
-footer.pagination-footer {
-  background-color: #fff;
-  border-top: 1px solid #ccc;
-  height: 50px;
-  overflow: hidden;
-
-  font-size: 14px;
-
-  .pagination {
-    .box-shadow(none);
-    margin: 0;
-    height: 50px;
-    border-left: 1px solid #ccc;
-    li {
-      display: inline-block;
-      a {
-        padding: 15px 10px 15px 15px;
-        border: none;
-      }
-    }
-  }
-
-  .page-controls {
-    float: left;
-
-  }
-
-  .current-databases,
-  .current-docs,
-  .current-replications {
-    float: right;
-    margin: 17px 20px 17px 20px;
-  }
-
-  .documents-pagination {
-    float: right;
-  }
-  #per-page {
-    float: right;
-    top: 2px;
-    #select-per-page {
-      margin-top: 10px;
-    }
-  }
-}
-
-#right-content {
-  footer.pagination-footer {
-    bottom: @collapsedNavWidth;
-  }
-}
-
-#primary-nav-right-shadow {
-  position: absolute;
-  top: 0px;
-  right: 0px;
-  bottom: 0px;
-  background-color: rgba(0, 0, 0, 0.1);
-  width: 6px;
-  z-index: 6;
-}
-
-.modal-title {
-  font-size: 22px;
-  margin: 0;
-  line-height: 30px;
-}
-
-.modal-footer {
-  background-color: transparent;
-  border-top: none;
-  color: #666;
-}
-
-.modal-footer a {
-  color: #666;
-}
-
-.modal-header {
-  border-bottom: 1px solid #666;
-}
-
-.simple-header {
-  font-weight: 400;
-  font-size: 15pt;
-  border-bottom: 1px solid #cccccc;
-  margin-bottom: 30px;
-  margin-top: 0;
-}
-
-// left navigationbar is opened
-@media (max-width: 730px) {
-  .closeMenu {
-    .one-pane {
-      .faux-header__searchboxwrapper {
-        display: none;
-      }
-    }
-  }
-}
-
-@media (max-width: 860px) {
-  .closeMenu {
-    .with-sidebar {
-      .faux-header__searchboxwrapper {
-        display: none;
-      }
-    }
-  }
-}
-
-// left navigationbar is closed
-@media (max-width: 875px) {
-  #main:not(.closeMenu) {
-    .one-pane {
-      .faux-header__searchboxwrapper {
-        display: none;
-      }
-    }
-  }
-}
-
-@media (max-width: 1015px) {
-  #main:not(.closeMenu) {
-    .with-sidebar {
-      .faux-header__searchboxwrapper {
-        display: none;
-      }
-    }
-  }
-}
-
-body .control-toggle-include-docs span {
-  margin-left: 0;
-  &::before {
-    content: "Include Docs";
-  }
-}
-
-@media (max-width: 1177px) {
-  #main.closeMenu {
-    .with-sidebar {
-      .two-panel-header {
-        .control-toggle-include-docs span::before {
-          content: " Docs";
-        }
-        .right-header button i:before {
-          margin: 2px 0 0 0;
-        }
-      }
-    }
-  }
-}
-
-
-@media (max-width: 1120px) {
-  #main.closeMenu {
-    .with-sidebar {
-      .two-panel-header {
-        .control-toggle-include-docs span::before {
-          content: "Docs";
-        }
-        button:not(.control-toggle-include-docs) span {
-          display: none;
-        }
-        button i:before {
-          float: none;
-        }
-        .right-header button i:before {
-          margin: 2px 0 0 0;
-        }
-        #query-options-tray:before {
-          right: 180px;
-        }
-        .api-bar-tray:before {
-          right: 68px;
-        }
-      }
-    }
-  }
-}
-
-@media (max-width: 1339px) {
-  #main:not(.closeMenu) {
-    .with-sidebar {
-      .two-panel-header {
-        .control-toggle-include-docs span::before {
-          content: "Docs";
-        }
-        .right-header button i:before {
-          margin: 2px 0 0 0;
-        }
-      }
-    }
-  }
-}
-
-@media (max-width: 1090px) {
-  #main:not(.closeMenu) {
-    .with-sidebar {
-      .two-panel-header {
-        .control-toggle-include-docs span::before {
-          content: "Docs";
-        }
-        button:not(.control-toggle-include-docs) span {
-          display: none;
-        }
-        button i:before {
-          float: none;
-        }
-        #query-options-tray:before {
-          right: 180px;
-        }
-        .right-header button i:before {
-          margin: 2px 0 0 0;
-        }
-      }
-    }
-  }
-}
-
-.capitalize {
-  text-transform: capitalize;
-}
-
-.fauxton-table-list {
-  a.db-actions,
-  a.db-actions:visited {
-    color: @linkColor;
-    border: 1px solid #e3e3e3;
-    padding: 5px 7px;
-    .border-radius(6px);
-    text-decoration: none;
-    font-size: 19px;
-    &:hover {
-      background-color: @hoverHighlight;
-      color: white;
-    }
-  }
-  td {
-    vertical-align: middle;
-  }
-}
-
-.btn-space {
-  margin-right: 5px;
-}
-
-.sr-only {
-  position: absolute;
-  width: 1px;
-  height: 1px;
-  margin: -1px;
-  padding: 0;
-  overflow: hidden;
-  clip: rect(0,0,0,0);
-  border: 0;
-}
-
-.btn-group.toggle-btns{
-  input[type=radio] {
-    display: none;
-  }
-  label.btn {
-    margin-right: 0;
-  }
-}
-
-.noscript-warning {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  padding: 1px 30px 10px 30px;
-  color: #fff;
-  background: @brandHighlight;
-  margin: 100px;
-  box-shadow: 2px 2px 5px #989898;
-}
diff --git a/assets/less/formstyles.less b/assets/less/formstyles.less
deleted file mode 100644
index 91b16f7..0000000
--- a/assets/less/formstyles.less
+++ /dev/null
@@ -1,371 +0,0 @@
-//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
-//  use this file except in compliance with the License. You may obtain a copy of
-//  the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-//  License for the specific language governing permissions and limitations under
-//  the License.
-
-@import "variables.less";
-@import "icons.less";
-
-input[type="text"],
-input[type="password"] {
-  .border-radius(0);
-  padding: 12px;
-  border: 1px solid #ccc;
-  height: auto;
-  font-size: 16px;
-  margin-top: 0;
-}
-
-input[type="checkbox"],
-input[type="radio"] {
-  box-sizing: border-box;
-  padding: 0;
-}
-
-input[type="file"],
-input[type="checkbox"],
-input[type="radio"],
-select {
-  margin: 0 0 1em 0;
-}
-
-/*form elements and buttons*/
-.btn-group {
-  > .btn + .dropdown-toggle,
-  > .btn:first-child,
-  > .btn:last-child,
-  > .dropdown-toggle {
-    .border-radius(0);
-    background-image: none;
-    text-shadow: none;
-  }
-}
-
-button:focus {
-  outline: 0 !important;
-}
-
-.btn {
-  .box-shadow(none);
-  .border-radius(@baseBorderRadius);
-  background-image: none;
-  text-shadow: none;
-  background-repeat: no-repeat;
-  padding: 10px;
-  margin-top: 0;
-  .icon {
-    margin-right: 0.2em;
-    vertical-align: middle;
-  }
-  &.btn-small {
-    padding: 5px 10px;
-    .icon {
-      margin-right: 0;
-      font-size: inherit;
-    }
-  }
-  &.btn-mini {
-    padding: 3px 8px;
-    .icon {
-      margin-right: 0;
-      font-size: inherit;
-    }
-  }
-}
-.btn-primary,
-.btn-success {
-  color: @buttonText;
-  background-color: @primaryGreen;
-  border-color: @primaryGreen;
-  &:disabled {
-    background-color: @primaryGreenDisabled;
-    border-color: @primaryGreenDisabled;
-    color: @buttonTextDisabled;
-    pointer-events: none;
-  }
-}
-
-.btn-secondary {
-  color: @buttonText;
-  background-color: @secondaryBlue;
-  border-color: @secondaryBlue;
-  &:disabled {
-    color: @buttonTextDisabled;
-    background-color: @secondaryBlueDisabled;
-    border-color: @secondaryBlueDisabled;
-    pointer-events: none;
-  }
-}
-
-.btn-tertiary {
-  color: @secondaryBlue;
-  background-color: @buttonText;
-  border: 2px solid @secondaryBlue;
-  &:disabled {
-    color: @secondaryBlueDisabled;
-    background-color: @primaryGreenDisabled;
-    border-color: @buttonTextDisabled;
-    pointer-events: none;
-  }
-}
-
-.btn-warning,
-.btn-danger {
-  color: @buttonText;
-  background-color: @dangerRed;
-  border-color: @dangerRed;
-  &:disabled {
-    color: @buttonTextDisabled;
-    background-color: @dangerDisabled;
-    border-color: @dangerDisabled;
-    pointer-events: none;
-  }
-}
-
-.btn-success:hover,
-.btn-primary:hover,
-.btn-secondary:hover,
-.btn-tertiary:hover,
-.btn-warning:hover,
-.btn-danger:hover {
-  background-color: @hoverHighlight;
-  border-color: @hoverHighlight;
-}
-
-.form-actions {
-  background: none;
-  border: none;
-}
-
-.input-append,
-.input-prepend {
-  .add-on {
-    font-size: 18px;
-    padding: 14px 5px 30px;
-  }
-  .btn .icon {
-    font-size: 16px;
-    margin-right: 0;
-  }
-}
-
-.row-fluid .input-append [class*="span"],
-.input-prepend input[class*="span"] {
-  width: auto;
-}
-
-.form-inline {
-  input[type="password"],
-  input[type="text"] {
-    width: auto;
-  }
-}
-.checkbox {
-  label {
-    display: inline-block;
-    padding-left: 30px;
-  }
-}
-
-label {
-  margin-right: 15px;
-  padding-left: 0;
-  display: block;
-  cursor: pointer;
-  position: relative;
-  font-size: 14px;
-  &.inline {
-    display: inline-block;
-  }
-}
-.help-block {
-  font-size: 12px;
-}
-
-a.help-link {
-  color: @secondaryBlue;
-  text-decoration: none;
-  &:hover {
-    color: @hoverHighlight;
-  }
-}
-
-input[type="text"].error {
-  border: red 1px solid;
-}
-
-form.view-query-update,
-form.view-query-save {
-  max-width: 100%;
-}
-
-.custom-inputs {
-  input[type="radio"],
-  input[type="checkbox"] {
-    display: none;
-  }
-
-  .checkbox label:before {
-    border-radius: 12px;
-    background-color: rgba(255, 255, 255, 0.1);
-    border: 2px solid rgba(255, 255, 255, 0.1);
-    transition: linear 0.2s, box-shadow linear 0.2s;
-    -moz-transition: linear 0.2s, box-shadow linear 0.2s;
-    -webkit-transition: linear 0.2s, box-shadow linear 0.2s;
-  }
-
-  .controls > .radio:first-child,
-  .controls > .checkbox:first-child {
-    padding-top: 15px;
-  }
-
-  .radio.inline,
-  .checkbox.inline {
-    display: inline-block;
-    padding-top: 15px;
-    margin-bottom: 12px;
-    vertical-align: middle;
-  }
-
-  input[type="checkbox"] + label:hover:before {
-    border: 2px solid @white;
-    transition: linear 0.2s, box-shadow linear 0.2s;
-    -moz-transition: linear 0.2s, box-shadow linear 0.2s;
-    -webkit-transition: linear 0.2s, box-shadow linear 0.2s;
-  }
-
-  /* if the checkbox is disabled, we don't want the red border on hover */
-  input[type="checkbox"]:disabled + label:hover:before {
-    border: none;
-  }
-
-  /* if the checkbox is disabled, we don't want the white border on hover */
-  input[type="checkbox"]:disabled + label:hover:before {
-    border: none;
-  }
-
-  input[type="checkbox"]:checked + label:before {
-    font-family: @fauxtonFont;
-    content: @fonticon-ok;
-    font-size: 12px;
-    background-color: inherit;
-    border: 2px solid #7c8085;
-    color: @linkColor;
-    text-align: center;
-    line-height: 19px;
-    box-shadow: none;
-    display: inline-block;
-  }
-
-  label:before {
-    content: "";
-    display: inline-block;
-    width: 22px;
-    height: 22px;
-    margin-right: 10px;
-    position: absolute;
-    left: 0;
-    bottom: 0;
-    background-color: #7c8085;
-  }
-
-  .radio label:before {
-    border-radius: 8px;
-  }
-
-  input[type="radio"]:checked + label:before {
-    content: "\2022";
-    color: #f3f3f3;
-    font-size: 30px;
-    text-align: center;
-    line-height: 18px;
-  }
-
-  label.drop-down {
-    &:before {
-      display: none;
-    }
-  }
-}
-
-div.add-dropdown {
-  position: absolute;
-  top: 2px;
-  right: 0;
-  .dropdown-menu {
-    left: -110px;
-    padding-bottom: 0;
-    width: 148px;
-    min-width: 0;
-    top: 38px;
-    .box-shadow(@boxShadow);
-    &.arrow:before {
-      right: 4px;
-    }
-    a {
-      background-color: @brandDark1;
-      color: @navIconColor;
-      &:hover {
-        background-color: @hoverHighlight;
-        color: white;
-      }
-    }
-    li a {
-      padding: 10px 15px 10px 12px;
-    }
-  }
-  .dropdown-toggle {
-    border-top: none !important;
-    text-decoration: none;
-  }
-  > a {
-    border-bottom: none;
-    text-decoration: none;
-    font-size: 16px;
-  }
-}
-
-input.errorHighlight {
-  -webkit-animation: errorBlinkBG 1s;
-  animation: errorBlinkBG 1s;
-}
-
-.two-sides-toggle-button {
-  font-size: 15px;
-  padding: 0 11px;
-
-  button.btn {
-    padding: 10px 15px;
-    background-color: #fff;
-    color: #888;
-    &.active:first-child {
-      border-right-radius: 10px;
-    }
-    &:hover {
-      background-color: @hoverHighlight;
-      color: #fff;
-      .box-shadow(none);
-    }
-    &.active {
-      /**
-       * The Reselect Components dropdown will go under the btn group on active 
-       * since its relatively positioned before this component which is also relatively 
-       * positioned. Based on the stacking context, no amount of z-index applied
-       * to the dropdown will overcome the activated btns z-index set in Bootstrap.
-       * The fix is to apply a z-index of !important here to override boostraps styling
-       * so the dropdown can go over the activated button. 
-       */
-      z-index: 1 !important;
-      background-color: @brandHighlight;
-      color: #ffffff;
-      .box-shadow(none);
-    }
-  }
-}
diff --git a/assets/less/icons.less b/assets/less/icons.less
deleted file mode 100644
index 6738e1c..0000000
--- a/assets/less/icons.less
+++ /dev/null
@@ -1,276 +0,0 @@
-@fauxtonFont: "fauxtonicon7";
-
-@font-face {font-family: "fauxtonicon7";
-  src: url('../fonts/fauxtonicon7.eot'); /* IE9*/
-  src: url('../fonts/fauxtonicon7.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
-  url("../fonts/fauxtonicon7.woff2") format("woff2"),
-  url("../fonts/fauxtonicon7.woff") format("woff"),
-  url('../fonts/fauxtonicon7.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
-  url('../fonts/fauxtonicon7.svg#fauxtonicon7') format('svg'); /* iOS 4.1- */
-  font-weight: normal;
-  font-style: normal;
-}
-
-[class^="fonticon-"]:before, [class*=" fonticon-"]:before {
-  display: inline-block;
-  font-family: 'fauxtonicon7' !important;
-  font-weight: normal;
-  font-style: normal;
-  font-variant: normal;
-  line-height: 1;
-  text-decoration: inherit;
-  text-rendering: optimizeLegibility;
-  text-transform: none;
-  
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-@fonticon-activetasks: "\ea01";
-@fonticon-arrow-box-down: "\ea02";
-@fonticon-arrow-box-up: "\ea03";
-@fonticon-arrow_left: "\ea04";
-@fonticon-arrow_right: "\ea05";
-@fonticon-arrows-cw: "\ea06";
-@fonticon-article: "\ea07";
-@fonticon-attention-alt: "\ea08";
-@fonticon-attention-circled: "\ea09";
-@fonticon-bell: "\ea0a";
-@fonticon-block: "\ea0b";
-@fonticon-bookmark-ribbon-wplus: "\ea0c";
-@fonticon-bookmark: "\ea0d";
-@fonticon-burger: "\ea0e";
-@fonticon-cancel-circled: "\ea0f";
-@fonticon-cancel-circled2: "\ea10";
-@fonticon-cancel: "\ea11";
-@fonticon-circle-empty: "\ea12";
-@fonticon-clipboard: "\ea13";
-@fonticon-clock: "\ea14";
-@fonticon-cog: "\ea15";
-@fonticon-collapse: "\ea16";
-@fonticon-cw: "\ea17";
-@fonticon-dashboard: "\ea18";
-@fonticon-database: "\ea19";
-@fonticon-deselect-all: "\ea1a";
-@fonticon-document: "\ea1b";
-@fonticon-documents: "\ea1c";
-@fonticon-dot-circled: "\ea1d";
-@fonticon-down-1: "\ea1e";
-@fonticon-down-circled: "\ea1f";
-@fonticon-down-dir: "\ea20";
-@fonticon-down-open: "\ea21";
-@fonticon-down: "\ea22";
-@fonticon-drop-down-dots: "\ea23";
-@fonticon-exchange: "\ea24";
-@fonticon-expand: "\ea25";
-@fonticon-eye: "\ea26";
-@fonticon-file-code-o: "\ea27";
-@fonticon-files-o: "\ea28";
-@fonticon-filter: "\ea29";
-@fonticon-gears: "\ea2a";
-@fonticon-help-circled: "\ea2b";
-@fonticon-help: "\ea2c";
-@fonticon-info-circled: "\ea2d";
-@fonticon-json: "\ea2e";
-@fonticon-key: "\ea2f";
-@fonticon-left-1: "\ea30";
-@fonticon-left-circled: "\ea31";
-@fonticon-left-dir: "\ea32";
-@fonticon-left-open: "\ea33";
-@fonticon-left: "\ea34";
-@fonticon-link: "\ea35";
-@fonticon-list-alt: "\ea36";
-@fonticon-lock: "\ea37";
-@fonticon-mail-alt: "\ea38";
-@fonticon-mail: "\ea39";
-@fonticon-map: "\ea3a";
-@fonticon-map2: "\ea3b";
-@fonticon-megaphone: "\ea3c";
-@fonticon-menu: "\ea3d";
-@fonticon-menu_close: "\ea3e";
-@fonticon-minus-circled: "\ea3f";
-@fonticon-minus-circled2: "\ea40";
-@fonticon-minus-squared-alt: "\ea41";
-@fonticon-minus-squared: "\ea42";
-@fonticon-minus: "\ea43";
-@fonticon-mixer: "\ea44";
-@fonticon-new-database: "\ea45";
-@fonticon-ok-circled-2: "\ea46";
-@fonticon-ok-circled: "\ea47";
-@fonticon-ok: "\ea48";
-@fonticon-paperclip: "\ea49";
-@fonticon-pencil: "\ea4a";
-@fonticon-picture: "\ea4b";
-@fonticon-play: "\ea4c";
-@fonticon-plus-circled: "\ea4d";
-@fonticon-plus-circled2: "\ea4e";
-@fonticon-plus-squared-alt: "\ea4f";
-@fonticon-plus-squared: "\ea50";
-@fonticon-plus: "\ea51";
-@fonticon-popin: "\ea52";
-@fonticon-popout: "\ea53";
-@fonticon-profile: "\ea54";
-@fonticon-replicate: "\ea55";
-@fonticon-reply-all: "\ea56";
-@fonticon-reply: "\ea57";
-@fonticon-resize-full-reverse: "\ea58";
-@fonticon-resize-full: "\ea59";
-@fonticon-resize-small-reverse: "\ea5a";
-@fonticon-resize-small: "\ea5b";
-@fonticon-right-1: "\ea5c";
-@fonticon-right-circled: "\ea5d";
-@fonticon-right-dir: "\ea5e";
-@fonticon-right-open: "\ea5f";
-@fonticon-right: "\ea60";
-@fonticon-save: "\ea61";
-@fonticon-search: "\ea62";
-@fonticon-select-all: "\ea63";
-@fonticon-sidenav-filter-function: "\ea64";
-@fonticon-sidenav-info: "\ea65";
-@fonticon-sidenav-list-function: "\ea66";
-@fonticon-sidenav-map-reduce: "\ea67";
-@fonticon-sidenav-search: "\ea68";
-@fonticon-sidenav-show-function: "\ea69";
-@fonticon-sidenav-update-function: "\ea6a";
-@fonticon-sitemap: "\ea6b";
-@fonticon-stats: "\ea6c";
-@fonticon-support: "\ea6d";
-@fonticon-swap-arrows: "\ea6e";
-@fonticon-table: "\ea6f";
-@fonticon-trash: "\ea70";
-@fonticon-up-1: "\ea71";
-@fonticon-up-circled: "\ea72";
-@fonticon-up-dir: "\ea73";
-@fonticon-up-open: "\ea74";
-@fonticon-up: "\ea75";
-@fonticon-user: "\ea76";
-@fonticon-users: "\ea77";
-@fonticon-vertical-ellipsis: "\ea78";
-@fonticon-wrench: "\ea79";
-@fonticon-wrench2: "\ea7a";
-
-
-.fonticon-activetasks:before { content: "\ea01"; }
-.fonticon-arrow-box-down:before { content: "\ea02"; }
-.fonticon-arrow-box-up:before { content: "\ea03"; }
-.fonticon-arrow_left:before { content: "\ea04"; }
-.fonticon-arrow_right:before { content: "\ea05"; }
-.fonticon-arrows-cw:before { content: "\ea06"; }
-.fonticon-article:before { content: "\ea07"; }
-.fonticon-attention-alt:before { content: "\ea08"; }
-.fonticon-attention-circled:before { content: "\ea09"; }
-.fonticon-bell:before { content: "\ea0a"; }
-.fonticon-block:before { content: "\ea0b"; }
-.fonticon-bookmark-ribbon-wplus:before { content: "\ea0c"; }
-.fonticon-bookmark:before { content: "\ea0d"; }
-.fonticon-burger:before { content: "\ea0e"; }
-.fonticon-cancel-circled:before { content: "\ea0f"; }
-.fonticon-cancel-circled2:before { content: "\ea10"; }
-.fonticon-cancel:before { content: "\ea11"; }
-.fonticon-circle-empty:before { content: "\ea12"; }
-.fonticon-clipboard:before { content: "\ea13"; }
-.fonticon-clock:before { content: "\ea14"; }
-.fonticon-cog:before { content: "\ea15"; }
-.fonticon-collapse:before { content: "\ea16"; }
-.fonticon-cw:before { content: "\ea17"; }
-.fonticon-dashboard:before { content: "\ea18"; }
-.fonticon-database:before { content: "\ea19"; }
-.fonticon-deselect-all:before { content: "\ea1a"; }
-.fonticon-document:before { content: "\ea1b"; }
-.fonticon-documents:before { content: "\ea1c"; }
-.fonticon-dot-circled:before { content: "\ea1d"; }
-.fonticon-down-1:before { content: "\ea1e"; }
-.fonticon-down-circled:before { content: "\ea1f"; }
-.fonticon-down-dir:before { content: "\ea20"; }
-.fonticon-down-open:before { content: "\ea21"; }
-.fonticon-down:before { content: "\ea22"; }
-.fonticon-drop-down-dots:before { content: "\ea23"; }
-.fonticon-exchange:before { content: "\ea24"; }
-.fonticon-expand:before { content: "\ea25"; }
-.fonticon-eye:before { content: "\ea26"; }
-.fonticon-file-code-o:before { content: "\ea27"; }
-.fonticon-files-o:before { content: "\ea28"; }
-.fonticon-filter:before { content: "\ea29"; }
-.fonticon-gears:before { content: "\ea2a"; }
-.fonticon-help-circled:before { content: "\ea2b"; }
-.fonticon-help:before { content: "\ea2c"; }
-.fonticon-info-circled:before { content: "\ea2d"; }
-.fonticon-json:before { content: "\ea2e"; }
-.fonticon-key:before { content: "\ea2f"; }
-.fonticon-left-1:before { content: "\ea30"; }
-.fonticon-left-circled:before { content: "\ea31"; }
-.fonticon-left-dir:before { content: "\ea32"; }
-.fonticon-left-open:before { content: "\ea33"; }
-.fonticon-left:before { content: "\ea34"; }
-.fonticon-link:before { content: "\ea35"; }
-.fonticon-list-alt:before { content: "\ea36"; }
-.fonticon-lock:before { content: "\ea37"; }
-.fonticon-mail-alt:before { content: "\ea38"; }
-.fonticon-mail:before { content: "\ea39"; }
-.fonticon-map:before { content: "\ea3a"; }
-.fonticon-map2:before { content: "\ea3b"; }
-.fonticon-megaphone:before { content: "\ea3c"; }
-.fonticon-menu:before { content: "\ea3d"; }
-.fonticon-menu_close:before { content: "\ea3e"; }
-.fonticon-minus-circled:before { content: "\ea3f"; }
-.fonticon-minus-circled2:before { content: "\ea40"; }
-.fonticon-minus-squared-alt:before { content: "\ea41"; }
-.fonticon-minus-squared:before { content: "\ea42"; }
-.fonticon-minus:before { content: "\ea43"; }
-.fonticon-mixer:before { content: "\ea44"; }
-.fonticon-new-database:before { content: "\ea45"; }
-.fonticon-ok-circled-2:before { content: "\ea46"; }
-.fonticon-ok-circled:before { content: "\ea47"; }
-.fonticon-ok:before { content: "\ea48"; }
-.fonticon-paperclip:before { content: "\ea49"; }
-.fonticon-pencil:before { content: "\ea4a"; }
-.fonticon-picture:before { content: "\ea4b"; }
-.fonticon-play:before { content: "\ea4c"; }
-.fonticon-plus-circled:before { content: "\ea4d"; }
-.fonticon-plus-circled2:before { content: "\ea4e"; }
-.fonticon-plus-squared-alt:before { content: "\ea4f"; }
-.fonticon-plus-squared:before { content: "\ea50"; }
-.fonticon-plus:before { content: "\ea51"; }
-.fonticon-popin:before { content: "\ea52"; }
-.fonticon-popout:before { content: "\ea53"; }
-.fonticon-profile:before { content: "\ea54"; }
-.fonticon-replicate:before { content: "\ea55"; }
-.fonticon-reply-all:before { content: "\ea56"; }
-.fonticon-reply:before { content: "\ea57"; }
-.fonticon-resize-full-reverse:before { content: "\ea58"; }
-.fonticon-resize-full:before { content: "\ea59"; }
-.fonticon-resize-small-reverse:before { content: "\ea5a"; }
-.fonticon-resize-small:before { content: "\ea5b"; }
-.fonticon-right-1:before { content: "\ea5c"; }
-.fonticon-right-circled:before { content: "\ea5d"; }
-.fonticon-right-dir:before { content: "\ea5e"; }
-.fonticon-right-open:before { content: "\ea5f"; }
-.fonticon-right:before { content: "\ea60"; }
-.fonticon-save:before { content: "\ea61"; }
-.fonticon-search:before { content: "\ea62"; }
-.fonticon-select-all:before { content: "\ea63"; }
-.fonticon-sidenav-filter-function:before { content: "\ea64"; }
-.fonticon-sidenav-info:before { content: "\ea65"; }
-.fonticon-sidenav-list-function:before { content: "\ea66"; }
-.fonticon-sidenav-map-reduce:before { content: "\ea67"; }
-.fonticon-sidenav-search:before { content: "\ea68"; }
-.fonticon-sidenav-show-function:before { content: "\ea69"; }
-.fonticon-sidenav-update-function:before { content: "\ea6a"; }
-.fonticon-sitemap:before { content: "\ea6b"; }
-.fonticon-stats:before { content: "\ea6c"; }
-.fonticon-support:before { content: "\ea6d"; }
-.fonticon-swap-arrows:before { content: "\ea6e"; }
-.fonticon-table:before { content: "\ea6f"; }
-.fonticon-trash:before { content: "\ea70"; }
-.fonticon-up-1:before { content: "\ea71"; }
-.fonticon-up-circled:before { content: "\ea72"; }
-.fonticon-up-dir:before { content: "\ea73"; }
-.fonticon-up-open:before { content: "\ea74"; }
-.fonticon-up:before { content: "\ea75"; }
-.fonticon-user:before { content: "\ea76"; }
-.fonticon-users:before { content: "\ea77"; }
-.fonticon-vertical-ellipsis:before { content: "\ea78"; }
-.fonticon-wrench:before { content: "\ea79"; }
-.fonticon-wrench2:before { content: "\ea7a"; }
-
-
diff --git a/assets/less/mixins.less b/assets/less/mixins.less
deleted file mode 100644
index f8e5068..0000000
--- a/assets/less/mixins.less
+++ /dev/null
@@ -1,66 +0,0 @@
-.translate-origin(@x, @y) {
-  -webkit-transform-origin: @x @y;
-     -moz-transform-origin: @x @y;
-      -ms-transform-origin: @x @y;
-       -o-transform-origin: @x @y;
-          transform-origin: @x @y;
-}
-
-.customTransition(@prop, @delay, @a, @b, @c, @d){
--webkit-transition: @prop, @delay cubic-bezier(@a, @b, @c, @d);
-   -moz-transition: @prop, @delay cubic-bezier(@a, @b, @c, @d);
-    -ms-transition: @prop, @delay cubic-bezier(@a, @b, @c, @d);
-     -o-transition: @prop, @delay cubic-bezier(@a, @b, @c, @d);
-        transition: @prop, @delay cubic-bezier(@a, @b, @c, @d); /* custom */
-
--webkit-transition-timing-function: cubic-bezier(@a, @b, @c, @d);
-   -moz-transition-timing-function: cubic-bezier(@a, @b, @c, @d);
-    -ms-transition-timing-function: cubic-bezier(@a, @b, @c, @d);
-     -o-transition-timing-function: cubic-bezier(@a, @b, @c, @d);
-        transition-timing-function: cubic-bezier(@a, @b, @c, @d); /* custom */
-}
-
-.transition(...) {
-  -webkit-transition: @arguments;
-  -moz-transition: @arguments;
-  -ms-transition: @arguments;
-  -o-transition: @arguments;
-  transition: @arguments;
-}
-
-.bottom-border(@height: 6px) {
-  border-bottom: 1px solid #999;
-}
-
-.left-border() {
-  border-left: 1px solid #999;
-}
-
-.noselect() {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -khtml-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-
-.display-flex() {
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-
-/* rather than run through all permutations of the shorthand options for flex, this just pulls all arguments */
-.flex(...) {
-  -webkit-flex: @arguments;
-  -ms-flex: @arguments;
-  flex: @arguments;
-}
-
-/* @dir: column or row */
-.flex-direction(@dir) {
-  -webkit-flex-direction: @dir;
-  -ms-flex-direction: @dir;
-  flex-direction: @dir;
-}
diff --git a/assets/less/pagination.less b/assets/less/pagination.less
deleted file mode 100644
index 9a93356..0000000
--- a/assets/less/pagination.less
+++ /dev/null
@@ -1,141 +0,0 @@
-//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
-//  use this file except in compliance with the License. You may obtain a copy of
-//  the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-//  License for the specific language governing permissions and limitations under
-//  the License.
-
-//
-// Pagination (multiple pages)
-// --------------------------------------------------
-
-// Space out pagination from surrounding content
-.pagination {
-  margin: @baseLineHeight 0;
-}
-
-ul.pagination {
-  // Allow for text-based alignment
-  display: inline-block;
-  .ie7-inline-block();
-  // Reset default styles
-  margin-left: 0;
-  margin-bottom: 0;
-  // Visuals
-  .border-radius(@baseBorderRadius);
-  .box-shadow(0 1px 2px rgba(0,0,0,.05));
-}
-ul.pagination > li {
-  display: inline; // Remove list-style and block-level defaults
-}
-ul.pagination > li > a,
-ul.pagination > li > span {
-  float: left; // Collapse white-space
-  padding: 4px 12px;
-  line-height: @baseLineHeight;
-  text-decoration: none;
-  background-color: @paginationBackground;
-  border: 1px solid @paginationBorder;
-  border-left-width: 0;
-}
-ul.pagination > li > a:hover,
-ul.pagination > li > a:focus,
-ul.pagination > .active > a,
-ul.pagination > .active > span {
-  background-color: @paginationActiveBackground;
-}
-ul.pagination > li > a:hover {
-  cursor: pointer;
-}
-
-ul.pagination > .active > a,
-ul.pagination > .active > a:hover,
-ul.pagination > .active > span {
-  color: @grayLight;
-  cursor: default;
-}
-ul.pagination > .disabled > span,
-ul.pagination > .disabled > a,
-ul.pagination > .disabled > a:hover,
-ul.pagination > .disabled > a:focus {
-  color: @grayLight;
-  background-color: transparent;
-  cursor: default;
-}
-ul.pagination > li:first-child > a,
-ul.pagination > li:first-child > span {
-  border-left-width: 1px;
-  .border-left-radius(@baseBorderRadius);
-}
-ul.pagination > li:last-child > a,
-ul.pagination > li:last-child > span {
-  .border-right-radius(@baseBorderRadius);
-}
-
-
-// Alignment
-// --------------------------------------------------
-
-.pagination-centered {
-  text-align: center;
-}
-.pagination-right {
-  text-align: right;
-}
-
-
-// Sizing
-// --------------------------------------------------
-
-// Large
-.pagination-large {
-  > li > a,
-  > li > span {
-    padding: @paddingLarge;
-    font-size: @fontSizeLarge;
-  }
-  > li:first-child > a,
-  > li:first-child > span {
-    .border-left-radius(@borderRadiusLarge);
-  }
-  > li:last-child > a,
-  > li:last-child > span {
-    .border-right-radius(@borderRadiusLarge);
-  }
-}
-
-// Small and mini
-.pagination-mini,
-.pagination-small {
-  > li:first-child > a,
-  > li:first-child > span {
-    .border-left-radius(@borderRadiusSmall);
-  }
-  > li:last-child > a,
-  > li:last-child > span {
-    .border-right-radius(@borderRadiusSmall);
-  }
-}
-
-// Small
-.pagination-small {
-  > li > a,
-  > li > span {
-    padding: @paddingSmall;
-    font-size: @fontSizeSmall;
-  }
-}
-// Mini
-.pagination-mini {
-  > li > a,
-  > li > span {
-    padding: @paddingMini;
-    font-size: @fontSizeMini;
-  }
-}
-
diff --git a/assets/less/trays.less b/assets/less/trays.less
deleted file mode 100644
index 5b99034..0000000
--- a/assets/less/trays.less
+++ /dev/null
@@ -1,96 +0,0 @@
-//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
-//  use this file except in compliance with the License. You may obtain a copy of
-//  the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-//  License for the specific language governing permissions and limitations under
-//  the License.
-
-@import "bootstrap/mixins.less";
-@import "icons.less";
-
-// @deprated - old trays
-.hide-tray {
-  display: none;
-}
-
-.show-tray {
-  display: block !important; //nasty hack until we convert all trays to React
-}
-
-.tray {
-  display: none;
-  position: absolute;
-  right: 0px;
-  top: 55px;
-  z-index: 11;
-  background-color: #333;
-  color: #fff;
-  margin: 0;
-
-  .add-on {
-    font-size: 16px;
-    background: none;
-    padding: 0px;
-    margin: 10px 0;
-    border: none;
-    display: block;
-    text-align: left;
-    color: #fff;
-    text-shadow: none;
-    height: auto;
-    line-height: 1em;
-  }
-
-  input[type="text"],
-  textarea {
-    .border-radius(5px);
-    background-color: #666;
-    padding: 8px;
-    border: none;
-    color: #eee;
-    font-size: 13px;
-  }
-
-  input[type="text"]:focus,
-  textarea:focus,
-  input[type="text"]:hover,
-  textarea:hover {
-    border: 2px solid @white;
-  }
-  input[type="text"], textarea {
-    box-shadow: none;
-    -webkit-border-radius: 5px;
-    -moz-border-radius: 5px;
-    border-radius: 5px;
-    background-color: rgba(255,255,255,0.1);
-    padding: 8px;
-    border: 2px solid rgba(255,255,255,0.1);
-    color: rgba(255,255,255,0.8);
-    font-size: 13px;
-  }
-  input:-webkit-input-placeholder,
-  form input:-moz-placeholder,
-  input:-ms-input-placeholder {
-    color: rgba(255,255,255,0.4);
-  }
-}
-
-.tray:before {
-  content: '';
-  position: absolute;
-  top: -25px;
-  border-color: transparent transparent #333 transparent;
-  border-style: solid;
-  border-width: 15px;
-  width: 0;
-  height: 0;
-}
-
-#header-lookahead .dropdown-menu li.active {
-  width: 100%;
-}
diff --git a/assets/less/variables.less b/assets/less/variables.less
deleted file mode 100644
index eb9e489..0000000
--- a/assets/less/variables.less
+++ /dev/null
@@ -1,139 +0,0 @@
-//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
-//  use this file except in compliance with the License. You may obtain a copy of
-//  the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-//  License for the specific language governing permissions and limitations under
-//  the License.
-
-@import "bootstrap/variables.less";
-
-/*Dashboard-Specific Colors*/
-@dangerRed: #F00;
-@hoverHighlight: #e73d34;
-@brandHighlight: #AF2D24;
-@brandDark1: #564E4C;
-@brandDark2: #3A2C2B;
-@navIconColor: #B3B4B4;
-@navIconActive: #ffffff;
-@trayBackground1: #3A2C2B;
-@trayBackground2: #3A2C2B;
-
-/*buttons */
-@primaryGreen: #2bb673;
-@secondaryBlue: #0082BF;
-@primaryGreenDisabled: #8EC9AD;
-@secondaryBlueDisabled: #86BAD2;
-@dangerDisabled: #FF9797;
-@buttonText: #FFF;
-@buttonTextDisabled: #F1F1F1;
-
-/* colors */
-@orange: #F3622D;
-@blue: #049cdb;
-@green: #7FA30C;
-
-
-/* base */
-@background: #F2F2F2;
-@leftPanel: @background;
-@rightPanel: #CBCBCB;
-
-/* font */
-@fontGrey: #808080;
-@defaultText: #4D4D4D;
-@defaultHTag: #333333;
-
-/* sublist */
-@subListGray: #767F89;
-
-/*nav*/
-@navWidth: 220px;
-
-
-/*top header*/
-@breadcrumbBG: #F1F1F1;
-@breadcrumbText: @brandHighlight;
-@breadcrumbArrow: #999999;
-@breadcrumbBorder: @brandHighlight;
-@breadcrumbHeight: 64px;
-
-/* document-header in doclist */
-@docHeaderBG: #3a3a3a;
-@docHeaderBorderBottom: #2a2a2a;
-@docHeaderOtherBorders: #000;
-@docHeaderLabels: #909090;
-@docHeaderDocId: @brandHighlight;
-
-/* checkboxes in doc-list */
-@docCheckBoxUncheckedBG: #EFEFEF;
-@docCheckBoxUncheckedBorder: 2px solid #999;
-@docCheckBoxHoverBorder: 2px solid #ccc;
-@docCheckBoxCheckedBorder: 2px solid #000;
-@docCheckBoxCheckedBG: #3a3a3a;
-
-/* sidebar */
-@sidebarBG: #F2F2F2;
-@sidebarWidth: 330px;
-
-/* secondary sidebar */
-@secondarySidebar: white;
-
-/* links */
-@linkColor: @brandHighlight;
-@linkColorHover: @brandHighlight;
-
-/* slider */
-@sliderBorderColor: #999999;
-@sliderBackground: @background;
-@sliderBackgroundHighlight: @brandHighlight; 
-
-/* borders */
-@radius: 4px;
-@baseBorderRadius: 0;
-
-@darkBorder: #aaa;
-
-/* shadows */
-@boxShadow: 2px 2px rgba(0,0,0,0.2);
-@boxShadowOff: 2px 2px rgba(0,0,0,0);
-@boxShadowLeft: -4px 4px rgba(0,0,0,0.2);
-@boxShadowLeftOff: -4px 4px rgba(0,0,0,0);
-@textShadow: 1px 2px rgba(0,0,0,0.2);
-@textShadowOff: 1px 2px rgba(0,0,0,0);
-
-/* animation */
-@transitionSpeed: .25s;
-@transitionEaseType: linear;
-@highlightEffectColor: #bbbbbb;
-
-/* breakpoints */
-@collapsedNavWidth: 64px;
-
-/* padding and margins */
-@panelPadding: 15px;
-
-/* Alerts */
-@globalErrorAlertBackground: #c45b55;
-
-@infoAlertBackground: #329898;
-@infoAlertColor: #fff;
-@successAlertBackground: #448c11;
-@successAlertColor: #CBDFBD;
-@errorAlertBackground: #222;
-@errorAlertColor: #ff0c35;
-
-/* query history */
-@queryHistoryBGColor: white;
-@queryHistoryColor: @defaultText;
-
-/*
-  -- logo image paths --
-  These are set during webpack bundle through your settings.json file.
-*/
-@largeLogoPath: "";
-@smallLogoPath: "";
diff --git a/assets/less/react-animations.less b/assets/scss/_animations.scss
similarity index 64%
copy from assets/less/react-animations.less
copy to assets/scss/_animations.scss
index 06ea928..c0fc772 100644
--- a/assets/less/react-animations.less
+++ b/assets/scss/_animations.scss
@@ -10,38 +10,30 @@
 //  License for the specific language governing permissions and limitations under
 //  the License.
 
-.fade-enter {
-  opacity: 0;
-  transition: opacity .25s;
-
-  &.fade-enter-active {
-    opacity: 1;
-  }
+@mixin animation($options) {
+  -webkit-animation: $options;
+  -moz-animation: $options;
+  animation: $options;
 }
 
-.fade-leave {
-  opacity: 1;
-  transition: opacity .25s;
-
-  &.fade-leave-active {
+@keyframes slideDown {
+  from {
     opacity: 0;
+    max-height: 0;
+  }
+  to {
+    opacity: 1;
+    max-height: 1000px;
   }
 }
 
-.slow-fade-enter {
-  opacity: 0;
-  transition: opacity .75s;
-
-  &.slow-fade-enter-active {
+@keyframes slideUp {
+  from {
+    max-height: 1000px;
     opacity: 1;
   }
-}
-
-.slow-fade-leave {
-  opacity: 1;
-  transition: opacity .75s;
-
-  &.slow-fade-leave-active {
+  to {
+    max-height: 0;
     opacity: 0;
   }
 }
diff --git a/assets/less/code-editors.less b/assets/scss/_code-editors.scss
similarity index 71%
rename from assets/less/code-editors.less
rename to assets/scss/_code-editors.scss
index 25edcf5..3f54135 100644
--- a/assets/less/code-editors.less
+++ b/assets/scss/_code-editors.scss
@@ -10,9 +10,7 @@
 //  License for the specific language governing permissions and limitations under
 //  the License.
 
-
 /* site-wide Ace Editor theme overrides */
-
 .ace_scrollbar-h {
   right: 0 !important;
   height: 15px !important;
@@ -20,34 +18,37 @@
 
 body {
   .ace-idle-fingers .ace_marker-layer .ace_selection {
-    background: #015F6F;
+    background: $cf-code-selection-bg;
   }
   .ace-idle-fingers .ace_gutter {
-    background: #3A3A3A;
+    background: $cf-code-gutter-bg;
   }
   .ace-idle-fingers {
-    background-color: #4d4d4d;
+    background-color: $cf-code-bg;
   }
   .ace-idle-fingers .ace_cursor {
-    color: #ffffff;
+    color: $cf-code-cursor-color;
   }
   .ace-idle-fingers.ace_multiselect .ace_selection.ace_start {
-    box-shadow: 0 0 3px 0 #4d4d4d;
+    box-shadow: 0 0 3px 0 $cf-code-bg;
   }
   .ace-idle-fingers .ace_marker-layer .ace_active-line {
-    background: #000000;
+    background: $cf-code-active-bg;
     opacity: 0.4;
   }
   .ace-idle-fingers .ace_constant {
-    color: #72cdf4;
+    color: $cf-code-token-constant-color;
   }
   .ace-idle-fingers .ace_boolean {
-    color: #ff6532;
+    color: $cf-code-token-boolean-color;
   }
   .ace-idle-fingers .ace_string {
-    color: #29be9d;
+    color: $cf-code-token-string-color;
+  }
+  .ace-idle-fingers .ace_variable {
+    color: $cf-code-token-variable-color;
   }
   .ace-idle-fingers .ace_collab.ace_user1 {
-    color: #4d4d4d;
+    color: $cf-code-bg;
   }
 }
diff --git a/assets/scss/_formstyles.scss b/assets/scss/_formstyles.scss
new file mode 100644
index 0000000..87fce78
--- /dev/null
+++ b/assets/scss/_formstyles.scss
@@ -0,0 +1,65 @@
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License. You may obtain a copy of
+//  the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+
+// Avoids a double line around buttons with focus
+button:focus {
+  outline: 0 !important;
+}
+
+.btn-group {
+  .btn.active.btn-cf-secondary {
+    border-color: $cf-border-color02;
+  }
+}
+
+.help-block {
+  font-size: 12px;
+}
+
+a.help-link {
+  color: $cf-secondary;
+  text-decoration: none;
+  margin-left: 0.25rem;
+  &:hover {
+    color: $cf-brand-hightlight-hover;
+  }
+}
+
+div.add-dropdown {
+  position: absolute;
+  top: 2px;
+  right: 15px;
+  padding: 10px 5px 5px 15px;
+
+  &.sidebar-sub-item {
+    top: 4px;
+    padding: 0;
+  }
+}
+
+@keyframes errorBlinkBG {
+  from {
+    background: $cf-danger;
+  }
+  to {
+    background: $cf-white;
+  }
+}
+
+input.errorHighlight {
+  -webkit-animation: errorBlinkBG 1s;
+  animation: errorBlinkBG 5s;
+}
+
+.form-text {
+  color: $cf-text01;
+}
diff --git a/assets/scss/_icons.scss b/assets/scss/_icons.scss
new file mode 100644
index 0000000..58cba13
--- /dev/null
+++ b/assets/scss/_icons.scss
@@ -0,0 +1,296 @@
+$fauxtonFont: "fauxtonicon9";
+
+@font-face {font-family: "fauxtonicon9";
+  src: url('../fonts/fauxtonicon9.eot'); /* IE9*/
+  src: url('../fonts/fauxtonicon9.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+  url("../fonts/fauxtonicon9.woff2") format("woff2"),
+  url("../fonts/fauxtonicon9.woff") format("woff"),
+  url('../fonts/fauxtonicon9.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
+  url('../fonts/fauxtonicon9.svg#fauxtonicon9') format('svg'); /* iOS 4.1- */
+  font-weight: normal;
+  font-style: normal;
+}
+
+[class^="fonticon-"], [class*=" fonticon-"] {
+  &[class*=" fonticon-fw"] {
+    /* fixed-width class, based on Font Awesome's 'fa-fw' class */
+    width: 1.25rem;
+    text-align: center;
+    display: inline-block;
+  }
+
+  &:before {
+    display: inline-block;
+    font-family: 'fauxtonicon9' !important;
+    font-weight: normal;
+    font-style: normal;
+    font-variant: normal;
+    line-height: 1;
+    text-decoration: inherit;
+    text-rendering: optimizeLegibility;
+    text-transform: none;
+    
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+
+  }
+}
+
+$fonticon-activetasks: "\ea01";
+$fonticon-arrow-box-down: "\ea02";
+$fonticon-arrow-box-up: "\ea03";
+$fonticon-arrow_left: "\ea04";
+$fonticon-arrow_right: "\ea05";
+$fonticon-arrows-cw: "\ea06";
+$fonticon-article: "\ea07";
+$fonticon-attention-alt: "\ea08";
+$fonticon-attention-circled: "\ea09";
+$fonticon-bell: "\ea0a";
+$fonticon-block: "\ea0b";
+$fonticon-bookmark-ribbon-wplus: "\ea0c";
+$fonticon-bookmark: "\ea0d";
+$fonticon-burger: "\ea0e";
+$fonticon-cancel-circled: "\ea0f";
+$fonticon-cancel-circled2: "\ea10";
+$fonticon-cancel: "\ea11";
+$fonticon-circle-empty: "\ea12";
+$fonticon-clipboard: "\ea13";
+$fonticon-clock: "\ea14";
+$fonticon-code-branch: "\ea15";
+$fonticon-cog: "\ea16";
+$fonticon-collapse: "\ea17";
+$fonticon-columns: "\ea18";
+$fonticon-copy: "\ea19";
+$fonticon-cw: "\ea1a";
+$fonticon-dashboard: "\ea1b";
+$fonticon-database: "\ea1c";
+$fonticon-deselect-all: "\ea1d";
+$fonticon-document: "\ea1e";
+$fonticon-documents: "\ea1f";
+$fonticon-dot-circled: "\ea20";
+$fonticon-down-1: "\ea21";
+$fonticon-down-circled: "\ea22";
+$fonticon-down-dir: "\ea23";
+$fonticon-down-open: "\ea24";
+$fonticon-down: "\ea25";
+$fonticon-drop-down-dots: "\ea26";
+$fonticon-exchange: "\ea27";
+$fonticon-expand: "\ea28";
+$fonticon-eye: "\ea29";
+$fonticon-file-code-o: "\ea2a";
+$fonticon-files-o: "\ea2b";
+$fonticon-filter: "\ea2c";
+$fonticon-gears: "\ea2d";
+$fonticon-help-circled: "\ea2e";
+$fonticon-help: "\ea2f";
+$fonticon-info-circled: "\ea30";
+$fonticon-json: "\ea31";
+$fonticon-key: "\ea32";
+$fonticon-left-1: "\ea33";
+$fonticon-left-circled: "\ea34";
+$fonticon-left-dir: "\ea35";
+$fonticon-left-open: "\ea36";
+$fonticon-left: "\ea37";
+$fonticon-link: "\ea38";
+$fonticon-list-alt: "\ea39";
+$fonticon-lock: "\ea3a";
+$fonticon-mail-alt: "\ea3b";
+$fonticon-mail: "\ea3c";
+$fonticon-map: "\ea3d";
+$fonticon-map2: "\ea3e";
+$fonticon-megaphone: "\ea3f";
+$fonticon-menu: "\ea40";
+$fonticon-menu_close: "\ea41";
+$fonticon-minus-circled: "\ea42";
+$fonticon-minus-circled2: "\ea43";
+$fonticon-minus-squared-alt: "\ea44";
+$fonticon-minus-squared: "\ea45";
+$fonticon-minus: "\ea46";
+$fonticon-mixer: "\ea47";
+$fonticon-new-database: "\ea48";
+$fonticon-ok-circled-2: "\ea49";
+$fonticon-ok-circled: "\ea4a";
+$fonticon-ok: "\ea4b";
+$fonticon-paperclip: "\ea4c";
+$fonticon-paste: "\ea4d";
+$fonticon-pencil: "\ea4e";
+$fonticon-picture: "\ea4f";
+$fonticon-play: "\ea50";
+$fonticon-plus-circled: "\ea51";
+$fonticon-plus-circled2: "\ea52";
+$fonticon-plus-squared-alt: "\ea53";
+$fonticon-plus-squared: "\ea54";
+$fonticon-plus: "\ea55";
+$fonticon-popin: "\ea56";
+$fonticon-popout: "\ea57";
+$fonticon-profile: "\ea58";
+$fonticon-replicate: "\ea59";
+$fonticon-reply-all: "\ea5a";
+$fonticon-reply: "\ea5b";
+$fonticon-resize-full-reverse: "\ea5c";
+$fonticon-resize-full: "\ea5d";
+$fonticon-resize-small-reverse: "\ea5e";
+$fonticon-resize-small: "\ea5f";
+$fonticon-right-1: "\ea60";
+$fonticon-right-circled: "\ea61";
+$fonticon-right-dir: "\ea62";
+$fonticon-right-open: "\ea63";
+$fonticon-right: "\ea64";
+$fonticon-save: "\ea65";
+$fonticon-search: "\ea66";
+$fonticon-select-all: "\ea67";
+$fonticon-sidenav-filter-function: "\ea68";
+$fonticon-sidenav-info: "\ea69";
+$fonticon-sidenav-list-function: "\ea6a";
+$fonticon-sidenav-map-reduce: "\ea6b";
+$fonticon-sidenav-search: "\ea6c";
+$fonticon-sidenav-show-function: "\ea6d";
+$fonticon-sidenav-update-function: "\ea6e";
+$fonticon-sitemap: "\ea6f";
+$fonticon-stats: "\ea70";
+$fonticon-support: "\ea71";
+$fonticon-swap-arrows: "\ea72";
+$fonticon-table: "\ea73";
+$fonticon-trash: "\ea74";
+$fonticon-trophy: "\ea75";
+$fonticon-up-1: "\ea76";
+$fonticon-up-circled: "\ea77";
+$fonticon-up-dir: "\ea78";
+$fonticon-up-open: "\ea79";
+$fonticon-up: "\ea7a";
+$fonticon-user: "\ea7b";
+$fonticon-users: "\ea7c";
+$fonticon-vertical-ellipsis: "\ea7d";
+$fonticon-wrench: "\ea7e";
+$fonticon-wrench2: "\ea7f";
+
+
+.fonticon-activetasks:before { content: "\ea01"; }
+.fonticon-arrow-box-down:before { content: "\ea02"; }
+.fonticon-arrow-box-up:before { content: "\ea03"; }
+.fonticon-arrow_left:before { content: "\ea04"; }
+.fonticon-arrow_right:before { content: "\ea05"; }
+.fonticon-arrows-cw:before { content: "\ea06"; }
+.fonticon-article:before { content: "\ea07"; }
+.fonticon-attention-alt:before { content: "\ea08"; }
+.fonticon-attention-circled:before { content: "\ea09"; }
+.fonticon-bell:before { content: "\ea0a"; }
+.fonticon-block:before { content: "\ea0b"; }
+.fonticon-bookmark-ribbon-wplus:before { content: "\ea0c"; }
+.fonticon-bookmark:before { content: "\ea0d"; }
+.fonticon-burger:before { content: "\ea0e"; }
+.fonticon-cancel-circled:before { content: "\ea0f"; }
+.fonticon-cancel-circled2:before { content: "\ea10"; }
+.fonticon-cancel:before { content: "\ea11"; }
+.fonticon-circle-empty:before { content: "\ea12"; }
+.fonticon-clipboard:before { content: "\ea13"; }
+.fonticon-clock:before { content: "\ea14"; }
+.fonticon-code-branch:before { content: "\ea15"; }
+.fonticon-cog:before { content: "\ea16"; }
+.fonticon-collapse:before { content: "\ea17"; }
+.fonticon-columns:before { content: "\ea18"; }
+.fonticon-copy:before { content: "\ea19"; }
+.fonticon-cw:before { content: "\ea1a"; }
+.fonticon-dashboard:before { content: "\ea1b"; }
+.fonticon-database:before { content: "\ea1c"; }
+.fonticon-deselect-all:before { content: "\ea1d"; }
+.fonticon-document:before { content: "\ea1e"; }
+.fonticon-documents:before { content: "\ea1f"; }
+.fonticon-dot-circled:before { content: "\ea20"; }
+.fonticon-down-1:before { content: "\ea21"; }
+.fonticon-down-circled:before { content: "\ea22"; }
+.fonticon-down-dir:before { content: "\ea23"; }
+.fonticon-down-open:before { content: "\ea24"; }
+.fonticon-down:before { content: "\ea25"; }
+.fonticon-drop-down-dots:before { content: "\ea26"; }
+.fonticon-exchange:before { content: "\ea27"; }
+.fonticon-expand:before { content: "\ea28"; }
+.fonticon-eye:before { content: "\ea29"; }
+.fonticon-file-code-o:before { content: "\ea2a"; }
+.fonticon-files-o:before { content: "\ea2b"; }
+.fonticon-filter:before { content: "\ea2c"; }
+.fonticon-gears:before { content: "\ea2d"; }
+.fonticon-help-circled:before { content: "\ea2e"; }
+.fonticon-help:before { content: "\ea2f"; }
+.fonticon-info-circled:before { content: "\ea30"; }
+.fonticon-json:before { content: "\ea31"; }
+.fonticon-key:before { content: "\ea32"; }
+.fonticon-left-1:before { content: "\ea33"; }
+.fonticon-left-circled:before { content: "\ea34"; }
+.fonticon-left-dir:before { content: "\ea35"; }
+.fonticon-left-open:before { content: "\ea36"; }
+.fonticon-left:before { content: "\ea37"; }
+.fonticon-link:before { content: "\ea38"; }
+.fonticon-list-alt:before { content: "\ea39"; }
+.fonticon-lock:before { content: "\ea3a"; }
+.fonticon-mail-alt:before { content: "\ea3b"; }
+.fonticon-mail:before { content: "\ea3c"; }
+.fonticon-map:before { content: "\ea3d"; }
+.fonticon-map2:before { content: "\ea3e"; }
+.fonticon-megaphone:before { content: "\ea3f"; }
+.fonticon-menu:before { content: "\ea40"; }
+.fonticon-menu_close:before { content: "\ea41"; }
+.fonticon-minus-circled:before { content: "\ea42"; }
+.fonticon-minus-circled2:before { content: "\ea43"; }
+.fonticon-minus-squared-alt:before { content: "\ea44"; }
+.fonticon-minus-squared:before { content: "\ea45"; }
+.fonticon-minus:before { content: "\ea46"; }
+.fonticon-mixer:before { content: "\ea47"; }
+.fonticon-new-database:before { content: "\ea48"; }
+.fonticon-ok-circled-2:before { content: "\ea49"; }
+.fonticon-ok-circled:before { content: "\ea4a"; }
+.fonticon-ok:before { content: "\ea4b"; }
+.fonticon-paperclip:before { content: "\ea4c"; }
+.fonticon-paste:before { content: "\ea4d"; }
+.fonticon-pencil:before { content: "\ea4e"; }
+.fonticon-picture:before { content: "\ea4f"; }
+.fonticon-play:before { content: "\ea50"; }
+.fonticon-plus-circled:before { content: "\ea51"; }
+.fonticon-plus-circled2:before { content: "\ea52"; }
+.fonticon-plus-squared-alt:before { content: "\ea53"; }
+.fonticon-plus-squared:before { content: "\ea54"; }
+.fonticon-plus:before { content: "\ea55"; }
+.fonticon-popin:before { content: "\ea56"; }
+.fonticon-popout:before { content: "\ea57"; }
+.fonticon-profile:before { content: "\ea58"; }
+.fonticon-replicate:before { content: "\ea59"; }
+.fonticon-reply-all:before { content: "\ea5a"; }
+.fonticon-reply:before { content: "\ea5b"; }
+.fonticon-resize-full-reverse:before { content: "\ea5c"; }
+.fonticon-resize-full:before { content: "\ea5d"; }
+.fonticon-resize-small-reverse:before { content: "\ea5e"; }
+.fonticon-resize-small:before { content: "\ea5f"; }
+.fonticon-right-1:before { content: "\ea60"; }
+.fonticon-right-circled:before { content: "\ea61"; }
+.fonticon-right-dir:before { content: "\ea62"; }
+.fonticon-right-open:before { content: "\ea63"; }
+.fonticon-right:before { content: "\ea64"; }
+.fonticon-save:before { content: "\ea65"; }
+.fonticon-search:before { content: "\ea66"; }
+.fonticon-select-all:before { content: "\ea67"; }
+.fonticon-sidenav-filter-function:before { content: "\ea68"; }
+.fonticon-sidenav-info:before { content: "\ea69"; }
+.fonticon-sidenav-list-function:before { content: "\ea6a"; }
+.fonticon-sidenav-map-reduce:before { content: "\ea6b"; }
+.fonticon-sidenav-search:before { content: "\ea6c"; }
+.fonticon-sidenav-show-function:before { content: "\ea6d"; }
+.fonticon-sidenav-update-function:before { content: "\ea6e"; }
+.fonticon-sitemap:before { content: "\ea6f"; }
+.fonticon-stats:before { content: "\ea70"; }
+.fonticon-support:before { content: "\ea71"; }
+.fonticon-swap-arrows:before { content: "\ea72"; }
+.fonticon-table:before { content: "\ea73"; }
+.fonticon-trash:before { content: "\ea74"; }
+.fonticon-trophy:before { content: "\ea75"; }
+.fonticon-up-1:before { content: "\ea76"; }
+.fonticon-up-circled:before { content: "\ea77"; }
+.fonticon-up-dir:before { content: "\ea78"; }
+.fonticon-up-open:before { content: "\ea79"; }
+.fonticon-up:before { content: "\ea7a"; }
+.fonticon-user:before { content: "\ea7b"; }
+.fonticon-users:before { content: "\ea7c"; }
+.fonticon-vertical-ellipsis:before { content: "\ea7d"; }
+.fonticon-wrench:before { content: "\ea7e"; }
+.fonticon-wrench2:before { content: "\ea7f"; }
+
+
diff --git a/assets/less/layouts.less b/assets/scss/_layouts.scss
similarity index 66%
rename from assets/less/layouts.less
rename to assets/scss/_layouts.scss
index ea871cb..69fdc56 100644
--- a/assets/less/layouts.less
+++ b/assets/scss/_layouts.scss
@@ -1,23 +1,31 @@
-@import "variables.less";
-@import "mixins.less";
-
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License. You may obtain a copy of
+//  the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
 
 /* new flex layout for templates. Specificity needed for now. Will remove at end */
 body #dashboard .flex-layout,
 body #dashboard.flex-layout,
 body #notification-center .flex-layout {
-  .display-flex();
+  @include display-flex();
 
   &.flex-col {
-    .flex-direction(column);
+    @include flex-direction(column);
   }
   &.flex-row {
-    .flex-direction(row);
+    @include flex-direction(row);
   }
 
   /* FLEXBOX REFACTOR: temporary overrides */
   padding: 0;
-  &>div {
+  & > div {
     padding: 0;
   }
   /* end overrides */
@@ -26,35 +34,31 @@
   always default all child elements as flex items that neither shrink nor expand. Assumes all flex-layout containers
   contain at least one .flex-body to indicate that's the one that expands
   */
-  &>* {
-    .flex(0,1,auto);
+  & > * {
+    @include flex(0, 1, auto);
   }
 
   /* notice we don't set heights. Flex will expand to fill the content but no more */
   #dashboard-upper-content {
-    .flex(0 0 auto);
+    @include flex(0 0 auto);
   }
   #dashboard-lower-content {
-    padding: @panelPadding;
+    padding: $cf-main-content-padding;
   }
 
   #footer {
-    .flex(0 0 auto);
+    @include flex(0 0 auto);
   }
 }
 
 /* can be added to any element in a display:flex element that you want to act as the main body. It expands to the
    available space and shows a scrollbar */
-body #dashboard .flex-body, body #notification-center .flex-body {
-  .flex(1);
+body #dashboard .flex-body,
+body #notification-center .flex-body {
+  @include flex(1);
   overflow: auto;
 }
 
-/* tells an element to be as large as the content. This will replace the hardcoded ones */
-body #dashboard .flex-fill {
-  .flex(0 0 auto);
-}
-
 /* used on the databases page. To be removed once moved to flexbox */
 .faux__onepane-footer {
   position: absolute;
@@ -75,22 +79,21 @@
     flex-basis: inherit;
   }
   #api-navbar {
-    .flex(0 0 auto);
+    @include flex(0 0 auto);
   }
 }
 
 body #dashboard .flex-body#right-header {
-  .flex(0 1 auto);
+  @include flex(0 1 auto);
   overflow: hidden;
 }
 
 body #dashboard .flex-layout #api-navbar {
-  .flex(0 0 auto);
+  @include flex(0 0 auto);
 }
 
 /* temporary wedge. Can be replaced at end */
 .with-sidebar {
-
   #api-navbar {
     float: right;
   }
@@ -108,8 +111,8 @@
 }
 
 body #dashboard .right-db-header {
-  &>div {
-    .flex(1 0 auto);
+  & > div {
+    @include flex(1 0 auto);
     /*overflow: hidden; */
   }
 }
@@ -120,14 +123,14 @@
 
   /* this will be renamed & reused once all templates use flexbox */
   #two-pane-content {
-    .display-flex();
-    .flex-direction(row);
+    @include display-flex();
+    @include flex-direction(row);
   }
   #left-content {
-    .flex(0 0 440px);
+    @include flex(0 0 440px);
   }
   #footer {
-    .flex(0 0 50px)
+    @include flex(0 0 50px);
   }
 
   /* overrides a weird default */
@@ -137,27 +140,23 @@
 
   /* temporary. header-wrapper will be converted to flexbox everywhere */
   .header-wrapper {
-    .flex(0 0 65px);
+    @include flex(0 0 $cf-topheader-height);
     position: inherit;
   }
 }
 
 body #dashboard.template-with-sidebar {
   header {
-    .flex(0 0 65px);
+    @include flex(0 0 $cf-topheader-height);
   }
   #sidebar-content {
-    .flex(0 0 330px);
+    @include flex(0 0 330px);
     overflow: auto;
     overflow-x: hidden;
   }
   .template-content {
     overflow: hidden;
   }
-  #dashboard-content {
-    border-left: 1px solid @grayLight;
-    .left-border();
-  }
 }
 
 /* tmp. Will be removed at end of flexbox refactor */
diff --git a/assets/scss/_mixins.scss b/assets/scss/_mixins.scss
new file mode 100644
index 0000000..877ee61
--- /dev/null
+++ b/assets/scss/_mixins.scss
@@ -0,0 +1,113 @@
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License. You may obtain a copy of
+//  the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+
+@mixin box-sizing($boxmodel) {
+  -webkit-box-sizing: $boxmodel;
+  -moz-box-sizing: $boxmodel;
+  box-sizing: $boxmodel;
+}
+// Border Radius
+@mixin border-radius($radius) {
+  -webkit-border-radius: $radius;
+  -moz-border-radius: $radius;
+  border-radius: $radius;
+}
+// Single Corner Border Radius
+@mixin border-top-left-radius($radius) {
+  -webkit-border-top-left-radius: $radius;
+  -moz-border-radius-topleft: $radius;
+  border-top-left-radius: $radius;
+}
+@mixin border-top-right-radius($radius) {
+  -webkit-border-top-right-radius: $radius;
+  -moz-border-radius-topright: $radius;
+  border-top-right-radius: $radius;
+}
+@mixin border-bottom-right-radius($radius) {
+  -webkit-border-bottom-right-radius: $radius;
+  -moz-border-radius-bottomright: $radius;
+  border-bottom-right-radius: $radius;
+}
+@mixin border-bottom-left-radius($radius) {
+  -webkit-border-bottom-left-radius: $radius;
+  -moz-border-radius-bottomleft: $radius;
+  border-bottom-left-radius: $radius;
+}
+// Single Side Border Radius
+@mixin border-top-radius($radius) {
+  @include border-top-right-radius($radius);
+  @include border-top-left-radius($radius);
+}
+@mixin border-right-radius($radius) {
+  @include border-top-right-radius($radius);
+  @include border-bottom-right-radius($radius);
+}
+@mixin border-bottom-radius($radius) {
+  @include border-bottom-right-radius($radius);
+  @include border-bottom-left-radius($radius);
+}
+@mixin border-left-radius($radius) {
+  @include border-top-left-radius($radius);
+  @include border-bottom-left-radius($radius);
+}
+@mixin rotate($degrees) {
+  -webkit-transform: rotate($degrees);
+  -moz-transform: rotate($degrees);
+  -ms-transform: rotate($degrees);
+  -o-transform: rotate($degrees);
+  transform: rotate($degrees);
+}
+
+@mixin transition($arguments...) {
+  -webkit-transition: $arguments;
+  -moz-transition: $arguments;
+  -ms-transition: $arguments;
+  -o-transition: $arguments;
+  transition: $arguments;
+}
+
+@mixin bottom-border($height: 6px) {
+  border-bottom: 1px solid $cf-border-color02;
+}
+
+@mixin left-border() {
+  border-left: 1px solid $cf-border-color02;
+}
+
+@mixin noselect() {
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+@mixin display-flex() {
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+}
+
+/* rather than run through all permutations of the shorthand options for flex, this just pulls all arguments */
+@mixin flex($arguments...) {
+  -webkit-flex: $arguments;
+  -ms-flex: $arguments;
+  flex: $arguments;
+}
+
+/* $dir: column or row */
+@mixin flex-direction($dir) {
+  -webkit-flex-direction: $dir;
+  -ms-flex-direction: $dir;
+  flex-direction: $dir;
+}
diff --git a/assets/less/notification-center.less b/assets/scss/_notification-center.scss
similarity index 64%
rename from assets/less/notification-center.less
rename to assets/scss/_notification-center.scss
index 00da37a..d67e227 100644
--- a/assets/less/notification-center.less
+++ b/assets/scss/_notification-center.scss
@@ -10,24 +10,23 @@
 //  License for the specific language governing permissions and limitations under
 //  the License.
 
-@import "variables.less";
-@import "mixins.less";
-
 body #dashboard #notification-center-btn {
   border: 0;
-  background-color: @background;
-  border-left: 1px solid #cccccc;
+  background-color: $cf-topheader-bg;
+  border-left: 1px solid $cf-border-color01;
   font-size: 24px;
-  color: #666;
+  color: $cf-topheader-color;
+  max-height: $cf-topheader-height;
   padding: 0;
   cursor: pointer;
-  .flex(0 0 auto);
+  @include flex(0 0 auto);
 
-  &>div {
-    padding: 20px 16px 16px;
+  & > div {
+    padding: 18px 16px 10px 16px;
   }
   &:hover {
-    color: @hoverHighlight;
+    background-color: $cf-topheader-bg-hover;
+    color: $cf-topheader-color-hover;
   }
 }
 
@@ -40,93 +39,101 @@
     right: 0;
     width: 300px;
     height: 100%;
-    background-color: #333333;
-    color: #dddddd;
+    background-color: $cf-background02;
+    color: $cf-text02;
 
     header {
-      .flex(0 0 auto);
+      @include flex(0 0 auto);
       padding: 16px;
 
       h1 {
-        font-size: 16px;
-        line-height: 20px;
+        font-size: $font-size-base;
+        line-height: $line-height-base;
         margin: 0;
-        color: white;
+        color: $cf-text02;
         font-weight: normal;
       }
       .fonticon-bell {
-        .flex(0 0 30px);
+        @include flex(0 0 30px);
       }
       button {
-        .flex(0 0 46px);
+        @include flex(0 0 46px);
         background-color: transparent;
         border: 0;
         margin: -18px -16px -14px; /* enlarges the hit area */
         font-size: 21px;
-        color: #dddddd;
+        color: $cf-text02;
         &:hover {
-          color: @hoverHighlight;
+          color: $cf-brand-hightlight-hover;
         }
       }
     }
 
     .notification-filter {
-      .flex(0 0 29px);
+      @include flex(0 0 29px);
 
       list-style: none;
       margin: 0;
       font-size: 13px;
 
+      border-top: 1px solid $cf-border-color02;
+      border-bottom: 1px solid $cf-border-color02;
+
       li {
         text-align: center;
-        margin-right: 1px;
-        background-color: #444444;
+        border-right: 1px solid $cf-border-color02;
         padding: 4px 0 3px;
         cursor: pointer;
 
         &.selected {
-          background-color: #555555;
+          background-color: $cf-background01;
+          color: $cf-text01;
         }
         &:hover {
-          background-color: @hoverHighlight;
+          background-color: $cf-brand-hightlight-hover;
           .fonticon {
-            color: white;
+            color: $cf-white;
           }
         }
+        &:last-child {
+          border-right: none;
+        }
       }
       .fonticon {
         font-size: 16px;
       }
       .fonticon-ok-circled {
         font-size: 14px;
+        line-height: 24px;
       }
     }
 
     .notification-list {
       margin: 15px 0 0;
       list-style-type: none;
+      padding: 0;
 
       li {
         margin: 0 16px;
         line-height: 16px;
         font-size: 12px;
         overflow: hidden;
-        border-bottom: 1px solid #222222;
+        border-bottom: 1px solid $cf-border-color02;
 
         &.no-notifications {
-          color: #999999;
+          color: $cf-text02;
           margin-top: 25px;
           border-bottom: 0;
         }
-        &>div {
+        & > div {
           padding: 10px 0 15px;
         }
         span {
-          .flex(0 0 30px);
+          @include flex(0 0 30px);
         }
         button {
-          .flex(0 0 22px);
-          color: #dddddd;
+          @include flex(0 0 22px);
+          color: $cf-link-color;
           background: transparent;
           border: 0;
           height: 20px;
@@ -134,7 +141,7 @@
           margin-left: 6px;
           font-size: 100%;
           &:hover {
-            color: @hoverHighlight;
+            color: $cf-link-color-hover;
           }
         }
         p {
@@ -152,42 +159,42 @@
         font-size: 13px;
       }
       a {
-        color: white;
+        color: $cf-white;
         text-decoration: underline;
       }
       .notification-actions {
         font-size: 11px;
         margin-top: 2px;
         span.divider {
-          color: #444444;
+          color: $cf-border-color02;
           padding: 0 5px;
         }
       }
       .time-elapsed {
-        color: #565656;
+        color: $cf-text02-muted;
       }
       .copy {
-        color: @blue;
+        color: $cf-link-color;
         text-decoration: none;
       }
     }
 
     footer {
-      border-top: 1px solid #555555;
-      .flex(0 0 auto);
+      border-top: 1px solid $cf-border-color02;
+      @include flex(0 0 auto);
       text-align: center;
       padding: 4px;
     }
   }
 
   .fonticon-ok-circled {
-    color: @successAlertBackground;
+    color: $cf-alert-success-color;
   }
   .fonticon-attention-circled {
-    color: @globalErrorAlertBackground;
+    color: $cf-alert-error-color;
   }
   .fonticon-info-circled {
-    color: @infoAlertBackground;
+    color: $cf-alert-info-color;
   }
 
   .notification-page-mask {
@@ -201,29 +208,8 @@
 
     &.visible {
       z-index: 110;
-      opacity: 0.3;
-      background-color: #000000;
+      opacity: $modal-backdrop-opacity;
+      background-color: $cf-black;
     }
   }
 }
-
-//Leaving this in for now as I'm not sure where it is used
-// @-webkit-keyframes in {
-//   0% { max-height: 0; }
-//   100% { max-height: 1000px; }
-// }
-//
-// @-webkit-keyframes out {
-//   0% { max-height: 1000px; }
-//   100% { max-height:0; }
-// }
-//
-// @keyframes in {
-//   0% { max-height: 0; }
-//   100% { max-height: 1000px; }
-// }
-//
-// @keyframes out {
-//   0% { max-height: 1000px; }
-//   100% { max-height:0; }
-// }
diff --git a/assets/scss/_pagination.scss b/assets/scss/_pagination.scss
new file mode 100644
index 0000000..92bf3eb
--- /dev/null
+++ b/assets/scss/_pagination.scss
@@ -0,0 +1,54 @@
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License. You may obtain a copy of
+//  the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+
+footer.pagination-footer {
+  background-color: $cf-pagination-bg;
+  border-top: 1px solid $cf-pagination-border;
+  height: 50px;
+  overflow: hidden;
+
+  font-size: 14px;
+
+  .pagination {
+    box-shadow: none;
+    margin: 0;
+    height: 50px;
+    border-left: 1px solid $cf-pagination-border;
+    li {
+      display: inline-block;
+      a {
+        padding: 13px 15px 13px 15px;
+        border: none;
+        cursor: pointer;
+      }
+    }
+  }
+
+  .page-controls {
+    float: left;
+  }
+
+  .current-databases,
+  .current-docs,
+  .current-replications {
+    float: right;
+    margin: 15px 20px 17px 20px;
+  }
+
+  .documents-pagination {
+    float: right;
+  }
+  #per-page {
+    float: right;
+    top: 2px;
+  }
+}
diff --git a/assets/less/prettyprint.less b/assets/scss/_prettyprint.scss
similarity index 70%
rename from assets/less/prettyprint.less
rename to assets/scss/_prettyprint.scss
index edb5ce5..d103739 100644
--- a/assets/less/prettyprint.less
+++ b/assets/scss/_prettyprint.scss
@@ -11,23 +11,30 @@
 //  the License.
 
 pre.prettyprint {
-  background: @defaultText;
+  background: $cf-code-bg;
   border: none;
   line-height: 1.4;
   margin: 0;
   padding: 16px;
 }
 .prettyprint {
-  .pln, .pun, .typ {
-    color: #B3B4B4;
+  .pln,
+  .pun,
+  .typ {
+    color: $cf-code-token-muted;
   }
   .kwd {
-    color: #dddddd;
+    color: $cf-code-token-boolean-color;
   }
-  .str, .lit {
-    color: #fff;
+  .str,
+  .lit {
+    color: $cf-code-token-variable-color;
   }
   .com {
-    color: #666;
+    color: $cf-code-token-muted;
   }
 }
+
+div#explain-plan-wrapper .prettyprint {
+  box-shadow: $cf-box-shadow;
+}
diff --git a/assets/less/react-animations.less b/assets/scss/_react-animations.scss
similarity index 87%
rename from assets/less/react-animations.less
rename to assets/scss/_react-animations.scss
index 06ea928..4a69913 100644
--- a/assets/less/react-animations.less
+++ b/assets/scss/_react-animations.scss
@@ -12,7 +12,7 @@
 
 .fade-enter {
   opacity: 0;
-  transition: opacity .25s;
+  transition: opacity 0.25s;
 
   &.fade-enter-active {
     opacity: 1;
@@ -21,7 +21,7 @@
 
 .fade-leave {
   opacity: 1;
-  transition: opacity .25s;
+  transition: opacity 0.25s;
 
   &.fade-leave-active {
     opacity: 0;
@@ -30,7 +30,7 @@
 
 .slow-fade-enter {
   opacity: 0;
-  transition: opacity .75s;
+  transition: opacity 0.75s;
 
   &.slow-fade-enter-active {
     opacity: 1;
@@ -39,7 +39,7 @@
 
 .slow-fade-leave {
   opacity: 1;
-  transition: opacity .75s;
+  transition: opacity 0.75s;
 
   &.slow-fade-leave-active {
     opacity: 0;
diff --git a/assets/less/templates.less b/assets/scss/_templates.scss
similarity index 61%
rename from assets/less/templates.less
rename to assets/scss/_templates.scss
index 7a4a177..04d0da3 100644
--- a/assets/less/templates.less
+++ b/assets/scss/_templates.scss
@@ -10,12 +10,10 @@
 //  License for the specific language governing permissions and limitations under
 //  the License.
 
- @import "variables.less";
-
 /* ajax loader */
 .loader {
   background: url('../img/loader.gif') center center no-repeat;
-  min-height:  100px;
+  min-height: 100px;
 }
 
 #main {
@@ -40,31 +38,29 @@
   }
 }
 
-@media screen and ( min-height: 600px ){
+@media screen and (min-height: 600px) {
   #primary-navbar {
     overflow-y: hidden;
   }
 }
 
 .bottom-border {
-  border-bottom: 1px solid #999;
+  border-bottom: 1px solid $cf-border-color02;
 }
 
 .bottom-left-border {
-  border-bottom: 1px solid #999;
-  border-left: 1px solid #999;
+  border-bottom: 1px solid $cf-border-color02;
+  border-left: 1px solid $cf-border-color02;
 }
 
-
 #dashboard {
   position: relative;
-  left: @navWidth;
+  left: $cf-navbar-width;
   padding-left: 0;
-  background-color: @sidebarBG;
   height: 100%;
   width: 100%;
   .closeMenu & {
-    left: @collapsedNavWidth;
+    left: $cf-navbar-width-collapsed;
   }
 }
 
@@ -76,7 +72,7 @@
 
 .one-pane {
   #dashboard-content {
-    top: @collapsedNavWidth;
+    top: $cf-navbar-width-collapsed;
     .view {
       padding-bottom: 30px;
     }
@@ -85,17 +81,17 @@
 
 .two-pane {
   .inner {
-    padding-bottom: @collapsedNavWidth;
+    padding-bottom: $cf-navbar-width-collapsed;
   }
 }
 
 #sidebar-content {
-  width: @sidebarWidth;
-  background-color: @secondarySidebar;
+  width: $cf-sidebar-width;
+  background-color: $cf-sidebar-bg;
   > div.inner {
     display: block;
   }
-  .nav-list:last-child {
+  .nav:last-child {
     margin-bottom: 30px;
   }
 }
@@ -118,20 +114,20 @@
   position: relative;
   height: 100%;
   left: 0;
-  padding-right: @navWidth;
+  padding-right: $cf-navbar-width;
   .closeMenu & {
-    padding-right: @collapsedNavWidth;
+    padding-right: $cf-navbar-width-collapsed;
   }
 }
 
 .right-header-wrapper {
   overflow-x: hidden;
-  height: @collapsedNavWidth;
+  height: $cf-navbar-width-collapsed;
 }
 
 .header-wrapper {
-  .bottom-border();
-  .box-shadow(0 1px 0 0 rgba(0, 0, 0, 0.1));
+  @include bottom-border();
+  box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.1);
   position: absolute;
   left: 0;
   right: 0;
@@ -144,37 +140,36 @@
 }
 
 /* SIDEBAR TEMPLATE STYLES */
-.topmenu-defaults {
+@mixin topmenu-defaults() {
   height: 70px;
   padding: 12px 10px 0;
-  .box-sizing(border-box);
+  @include box-sizing(border-box);
 }
 
 /* used in addons/changes */
 .dashboard-upper-menu {
-  border-left: 1px solid #999;
+  border-left: 1px solid $cf-border-color02;
   right: 0;
-  left: @sidebarWidth+@navWidth;
+  left: $cf-sidebar-width + $cf-navbar-width;
   position: fixed;
   display: block;
 
-  .topmenu-defaults;
-  background-color: #CBCBCB;
+  @include topmenu-defaults;
+  background-color: $cf-background01;
   .closeMenu & {
-    left: @sidebarWidth+@collapsedNavWidth;
+    left: $cf-sidebar-width + $cf-navbar-width-collapsed;
   }
 }
 
 #dashboard-lower-content {
-  padding: 20px;
-  background-color: #F1F1F1;
+  padding: $cf-main-content-padding;
+  background-color: $cf-background01;
   position: relative;
 }
 
 #dashboard-content {
-
   & > div {
-    padding: @panelPadding;
+    padding: $cf-main-content-padding;
   }
 
   &.row-fluid {
@@ -183,16 +178,16 @@
   }
 
   .with-sidebar & {
-    border-left: 1px solid @grayLight;
-    .left-border();
+    border-left: 1px solid $cf-border-color02;
+    @include left-border();
     width: auto;
     padding: 15px;
     bottom: 0px;
-    top: @collapsedNavWidth;
+    top: $cf-navbar-width-collapsed;
     position: absolute;
-    left: @sidebarWidth;
+    left: $cf-sidebar-width;
     right: 0;
-    .box-sizing(border-box);
+    @include box-sizing(border-box);
   }
   .with-tabs-sidebar & {
     overflow: hidden;
@@ -209,25 +204,18 @@
 */
 .sidenav {
   padding: 0;
-  header {
-    width: @sidebarWidth;
-    border-bottom: 1px solid #d3d7db;
-  }
-  .nav-list {
-    .divider {
-      border: none;
-    }
+  .nav {
     > li > a:hover {
-      background-color: @hoverHighlight;
-      color: #fff;
+      background-color: $cf-sidebar-bg-hover;
+      color: $cf-sidebar-color-hover;
     }
     li.active > a {
-      color: @brandHighlight;
+      color: $cf-sidebar-color-active;
     }
-    > li > a {
-      color: #333333;
+    li > a {
+      color: $cf-sidebar-color;
       padding: 10px 13px 10px 24px;
-      border-bottom: 1px solid #d3d7db;
+      border-bottom: 1px solid $cf-border-color01;
       span {
         margin-right: 8px;
         width: 14px;
@@ -237,33 +225,26 @@
     }
     a {
       display: block;
-      padding: 10px 5px 5px 15px;
-      color: @subListGray;
-      .divider {
-        background: none;
-        color: #ccc;
-        padding: 0 2px;
-      }
     }
     .nav-header {
       padding: 0px;
       text-shadow: none;
-      color: #333333;
+      color: $cf-sidebar-color;
       & > span:hover {
-        color: @linkColor;
+        color: $cf-brand-highlight;
       }
     }
   }
 }
 
 .row-fluid.content-area {
-  background-color: @background;
+  background-color: $cf-background01;
 }
 
 .two-pane {
   .content-area {
     height: 100%;
-    top: @collapsedNavWidth;
+    top: $cf-navbar-width-collapsed;
     position: relative;
   }
 
@@ -271,10 +252,10 @@
     .view {
       padding: 0 0 40px;
     }
-    border-left: 1px solid #999;
+    border-left: 1px solid $cf-border-color02;
   }
   .right-header-wrapper {
-    border-left: 1px solid #999;
+    border-left: 1px solid $cf-border-color02;
     .faux-header__searchboxwrapper {
       display: none;
     }
@@ -286,42 +267,39 @@
   height: 0;
 }
 
-.toast-container {
-  margin-top: @breadcrumbHeight;
-  padding:0;
+.toastify-toast-container {
+  padding: 0;
   right: 0;
 }
 
 .Toastify__toast {
-  border: 1px solid #999;
-  background-color: #fff;
+  border: 1px solid $cf-border-color02;
+  background-color: $cf-alert-bg;
   border-right: 0;
-  color: black;
+  color: $cf-alert-color;
 }
 
-.Toastify__toast-icon{
+.Toastify__toast-icon {
   display: None;
 }
 
 .Toastify__toast--info {
-  &, .Toastify__close-button--info {
-    border-left: 6px solid @infoAlertBackground;
-    }
+  &,
+  .Toastify__close-button--info {
+    border-left: 6px solid $cf-alert-info-color;
+  }
 }
 
 .Toastify__toast--success {
-  &, .Toastify__close-button--success {
-    border-left: 6px solid @successAlertBackground;
-  }
-}
-.Toastify__toast--warning {
-  &, .Toastify__close-button--warning {
-    border-left: 6px solid @warningBackground;
-  }
-}
-.Toastify__toast--error {
-  &, .Toastify__close-button--error {
-    border-left: 6px solid @errorAlertColor;
+  &,
+  .Toastify__close-button--success {
+    border-left: 6px solid $cf-alert-success-color;
   }
 }
 
+.Toastify__toast--error {
+  &,
+  .Toastify__close-button--error {
+    border-left: 6px solid $cf-alert-error-color;
+  }
+}
diff --git a/assets/scss/_trays.scss b/assets/scss/_trays.scss
new file mode 100644
index 0000000..4674b79
--- /dev/null
+++ b/assets/scss/_trays.scss
@@ -0,0 +1,52 @@
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License. You may obtain a copy of
+//  the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+
+.show-tray {
+  display: block !important; //nasty hack until we convert all trays to React
+}
+
+.tray {
+  display: none;
+  position: absolute;
+  right: 0px;
+  top: 55px;
+  z-index: 11;
+  background-color: $cf-tray-body-bg;
+  color: $cf-tray-body-color;
+  margin: 0;
+
+  .add-on {
+    font-size: 16px;
+    background: none;
+    padding: 0px;
+    margin: 10px 0;
+    border: none;
+    display: block;
+    text-align: left;
+    color: $cf-tray-body-color;
+    text-shadow: none;
+    height: auto;
+    line-height: 1em;
+  }
+
+  .btn-group {
+    .btn-cf-secondary:hover:not(.active) {
+      color: $cf-btn-secondary-color-hover;
+      background-color: $cf-btn-secondary-bg-hover;
+      border-color: $cf-btn-secondary-bg-hover;
+    }
+  }
+}
+
+#header-lookahead .dropdown-menu li.active {
+  width: 100%;
+}
diff --git a/assets/scss/_variables.scss b/assets/scss/_variables.scss
new file mode 100644
index 0000000..fa1a439
--- /dev/null
+++ b/assets/scss/_variables.scss
@@ -0,0 +1,330 @@
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License. You may obtain a copy of
+//  the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+
+// Import bootstrap functions here so the color utilities can be used below
+@import '~bootstrap/scss/functions';
+// _variable_overrides.scss is auto-generated by the 'gen_initialize' Grunt task when starting the dev server or creating a release.
+@import 'variable_overrides';
+
+// =============================================================================================
+// Note: Fauxton colors/styling must be defined first so they can be referrenced when overriding
+// the Bootstrap settings at the end of this file.
+// =============================================================================================
+
+// =============================================================================================
+// Fauxton's base colors and styles.
+// All color literals should only be defined here, so it's easy to reference the complete array
+// of colors used in Fauxton. This helps in keeping Fauxton's color scheme consistent and
+// short.
+// =============================================================================================
+
+// base
+$cf-background01: #f2f2f2 !default; // main page background color. former $background
+$cf-background02: #333333 !default; // background for overlay panels, trays
+$cf-background03: #564e4c !default; // background for items in dropdowns, main nav bar
+$cf-background-01-alt: #f7f7f7 !default; // sidebar subitems, stripped table
+$cf-brand-highlight: #af2d24 !default; // former $brandHighlight
+$cf-brand-hightlight-hover: #e73d34 !default; // former $hoverHighlight
+$cf-border-color01: #cccccc !default;
+$cf-border-color02: #999999 !default;
+$cf-primary: #208019 !default;
+$cf-secondary: #0076ad !default;
+$cf-danger: #e00025 !default;
+$cf-success: #448c11 !default;
+$cf-info: #329898 !default;
+$cf-error: #d9534f !default;
+$cf-warning: #d9c74f !default;
+$cf-white: #ffffff !default;
+$cf-black: #000000 !default;
+$cf-transparent: transparent !default;
+
+// typography
+$cf-text01: #333333 !default; // default text color for pages
+$cf-text02: #ffffff !default; // text color for overlay panels, trays
+$cf-text03: #d9d9d9 !default; // text color for items in dropdowns, main nav bar
+$cf-text04: #767f89 !default; // sidebar subitems
+$cf-text05: #666666 !default; // font-icon, top header icons/text
+$cf-text01-muted: #999999 !default;
+$cf-text02-muted: #bbbbbb !default;
+$cf-sans-font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif !default;
+
+// padding and margins
+$cf-main-content-padding: 1rem !default;
+$cf-border-radius: 0.375rem !default;
+
+// shadows
+$cf-box-shadow: 2px 2px rgba(0, 0, 0, 0.2) !default;
+
+// =============================================================================================
+// Fauxton's component-specific styles
+// The variables below must NOT use color literals. Instead refering one of the base colors above.
+// The only is the code editor since it has its own color scheme for syntax highlighting.
+// =============================================================================================
+
+// buttons
+$cf-disable-mix-amount: 15% !default;
+$cf-btn-active-bg-shade-amount: 20% !default;
+
+$cf-btn-primary-bg: $cf-primary !default;
+$cf-btn-primary-color: $cf-white !default;
+$cf-btn-primary-border: $cf-btn-primary-bg !default;
+$cf-btn-primary-bg-disabled: tint-color(
+  $cf-btn-primary-bg,
+  $cf-disable-mix-amount
+) !default;
+$cf-btn-primary-color-disabled: tint-color(
+  $cf-btn-primary-color,
+  $cf-disable-mix-amount
+) !default;
+$cf-btn-primary-bg-hover: $cf-brand-hightlight-hover !default;
+$cf-btn-primary-color-hover: $cf-btn-primary-color !default;
+
+$cf-btn-secondary-bg: $cf-white !default;
+$cf-btn-secondary-color: $cf-text01 !default;
+$cf-btn-secondary-border: $cf-border-color02 !default;
+$cf-btn-secondary-bg-disabled: tint-color(
+  $cf-btn-secondary-bg,
+  $cf-disable-mix-amount
+) !default;
+$cf-btn-secondary-color-disabled: tint-color(
+  $cf-btn-secondary-color,
+  $cf-disable-mix-amount
+) !default;
+$cf-btn-secondary-bg-hover: $cf-brand-hightlight-hover !default;
+$cf-btn-secondary-color-hover: $cf-white !default;
+
+$cf-btn-danger-bg: $cf-danger !default;
+$cf-btn-danger-color: $cf-white !default;
+$cf-btn-danger-border: $cf-btn-danger-bg !default;
+$cf-btn-danger-bg-disabled: tint-color(
+  $cf-btn-danger-bg,
+  $cf-disable-mix-amount
+) !default;
+$cf-btn-danger-color-disabled: tint-color(
+  $cf-btn-danger-color,
+  $cf-disable-mix-amount
+) !default;
+$cf-btn-danger-bg-hover: $cf-brand-hightlight-hover !default;
+$cf-btn-danger-color-hover: $cf-btn-danger-color !default;
+
+$cf-btn-cancel-bg: transparent !default;
+$cf-btn-cancel-color: $cf-text05 !default;
+$cf-btn-cancel-border: $cf-btn-cancel-bg !default;
+$cf-btn-cancel-bg-disabled: transparent !default;
+$cf-btn-cancel-color-disabled: tint-color(
+  $cf-btn-cancel-color,
+  $cf-disable-mix-amount
+) !default;
+$cf-btn-cancel-bg-hover: transparent !default;
+$cf-btn-cancel-color-hover: $cf-brand-hightlight-hover !default;
+
+$cf-text-fonticon01: $cf-text05 !default;
+
+// code editor or viewer
+$cf-code-bg: #4d4d4d !default;
+$cf-code-gutter-bg: #3a3a3a !default;
+$cf-code-cursor-color: $cf-white !default;
+$cf-code-btn-string-edit-color: $cf-white !default;
+$cf-code-btn-string-edit-color-hover: $cf-brand-hightlight-hover !default;
+$cf-code-active-bg: $cf-black !default;
+$cf-code-selection-bg: rgba(29, 151, 215, 0.5) !default;
+$cf-code-token-variable-color: $cf-white !default;
+$cf-code-token-constant-color: #88d5f6 !default;
+$cf-code-token-boolean-color: #f8c072 !default;
+$cf-code-token-string-color: #18e2b6 !default;
+$cf-code-token-muted: $cf-text02-muted !default;
+
+// documents list (JSON view)
+$cf-jsondocs-header-bg: $cf-code-gutter-bg !default;
+$cf-jsondocs-header-label: $cf-text03 !default;
+$cf-jsondocs-header-docid: $cf-text03 !default;
+$cf-jsondocs-header-border: $cf-black !default;
+$cf-jsondocs-data-border: $cf-black !default;
+$cf-jsondocs-check-bg: $cf-background01 !default;
+$cf-jsondocs-check-border: 2px solid $cf-border-color02 !default;
+$cf-jsondocs-check-border-hover: 2px solid $cf-border-color01 !default;
+$cf-jsondocs-check-checked-bg: $cf-background01 !default;
+$cf-jsondocs-check-checked-border: 2px solid $cf-border-color02 !default;
+
+// dropdown menus
+$cf-dropdown-bg: $cf-background02 !default;
+$cf-dropdown-color: $cf-text02 !default;
+$cf-dropdown-heading-bg: $cf-background02 !default;
+$cf-dropdown-heading-color: $cf-text02 !default;
+$cf-dropdown-item-bg: $cf-background03 !default;
+$cf-dropdown-item-color: $cf-text03 !default;
+$cf-dropdown-item-bg-hover: $cf-brand-hightlight-hover !default;
+$cf-dropdown-item-color-hover: $cf-white !default;
+
+// forms
+$cf-input-bg: $cf-white !default;
+$cf-check-radio-bg: $cf-secondary !default;
+
+// links
+$cf-link-color: $cf-brand-highlight !default;
+$cf-link-color-hover: $cf-brand-hightlight-hover !default;
+$cf-link-decoration: none !default;
+$cf-link-decoration-hover: none !default;
+
+// main nav bar
+$cf-navbar-width: 220px !default;
+$cf-navbar-width-collapsed: 64px !default;
+
+$cf-navbar-color: $cf-text03 !default;
+$cf-navbar-bg: $cf-background02 !default;
+$cf-navbar-item-bg: $cf-background03 !default;
+$cf-navbar-item-color: $cf-text03 !default;
+$cf-navbar-item-bg-hover: $cf-brand-hightlight-hover !default;
+$cf-navbar-item-color-hover: $cf-white !default;
+$cf-navbar-item-bg-active: $cf-brand-highlight !default;
+$cf-navbar-item-color-active: $cf-white !default;
+$cf-navbar-item-badge-bg: $cf-link-color-hover !default;
+$cf-navbar-item-badge-bg-hover: $cf-navbar-item-color-hover !default;
+$cf-navbar-item-badge-bg-active: $cf-navbar-item-color-active !default;
+
+// notifications
+$cf-alert-bg: $cf-white !default;
+$cf-alert-color: $cf-text01 !default;
+$cf-alert-info-color: $cf-info !default;
+$cf-alert-success-color: $cf-success !default;
+$cf-alert-error-color: $cf-error !default;
+
+// pagination
+$cf-pagination-bg: $cf-white !default;
+$cf-pagination-color: $cf-link-color !default;
+$cf-pagination-color-disabled: $cf-text01-muted !default;
+$cf-pagination-border: $cf-border-color01 !default;
+$cf-pagination-bg-hover: $cf-background01 !default;
+$cf-pagination-color-hover: $cf-link-color !default;
+$cf-pagination-active-bg: $cf-brand-highlight !default;
+$cf-pagination-active-color: $cf-text02 !default;
+
+// partition selector
+$cf-partition-selector-bg: transparent !default;
+$cf-partition-selector-color: $cf-text-fonticon01 !default;
+$cf-partition-selector-color-hover: $cf-brand-hightlight-hover !default;
+$cf-partition-selector-color-active: $cf-brand-highlight !default;
+
+// pills
+$cf-pill-bg: $cf-background03 !default;
+$cf-pill-color: $cf-text03 !default;
+$cf-pill-color-hover: $cf-brand-hightlight-hover !default;
+
+// sidebar
+$cf-sidebar-width: 330px !default;
+$cf-sidebar-bg: $cf-white !default;
+$cf-sidebar-color: $cf-text01 !default;
+$cf-sidebar-icon-color: $cf-text-fonticon01 !default;
+$cf-sidebar-icon-color-hover: $cf-brand-hightlight-hover !default;
+$cf-sidebar-bg-hover: $cf-brand-hightlight-hover !default;
+$cf-sidebar-color-hover: $cf-white !default;
+$cf-sidebar-bg-active: $cf-background01 !default;
+$cf-sidebar-color-active: $cf-brand-highlight !default;
+$cf-sidebar-subitem-bg: $cf-background-01-alt !default;
+$cf-sidebar-subitem-color: $cf-text04 !default;
+$cf-sidebar-subitem-bg-hover: $cf-brand-hightlight-hover !default;
+$cf-sidebar-subitem-color-hover: $cf-white !default;
+
+// slider
+$cf-slider-bg: $cf-background01 !default;
+$cf-slider-bg-highlight: $cf-brand-highlight !default;
+$cf-slider-border-color: $cf-border-color02 !default;
+
+// page header
+$cf-page-header-border: $cf-border-color01 !default;
+
+// tabs
+$cf-tab-wrapper-bg: $cf-transparent !default;
+$cf-tab-element-bg: $cf-background01 !default;
+$cf-tab-element-color: $cf-text01 !default;
+$cf-tab-element-bg-active: $cf-transparent !default;
+$cf-tab-element-color-active: $cf-tab-element-color !default;
+$cf-tab-element-indicator-active: $cf-link-color-hover !default;
+$cf-tab-element-bg-hover: $cf-transparent !default;
+$cf-tab-element-color-hover: $cf-link-color-hover !default;
+$cf-tab-element-indicator-hover: $cf-tab-element-indicator-active !default;
+$cf-tab-element-badge: $cf-link-color-hover !default;
+
+// tables
+$cf-table-stripped-bg: $cf-background-01-alt !default;
+
+// top header
+$cf-topheader-bg: $cf-background01 !default;
+$cf-topheader-color: $cf-text-fonticon01 !default;
+$cf-topheader-title-color: $cf-text01 !default;
+$cf-topheader-bg-hover: $cf-background01 !default;
+$cf-topheader-color-hover: $cf-brand-hightlight-hover !default;
+$cf-topheader-height: 64px !default;
+
+// tray
+$cf-tray-body-bg: $cf-background02 !default;
+$cf-tray-body-color: $cf-text02 !default;
+
+// logo paths can be set via settings.json
+$largeLogoPath: '../../../../../assets/img/CouchDB-negative-logo.png' !default;
+$smallLogoPath: '../../../../../assets/img/couchdb-logo.png' !default;
+
+// =============================================================================================
+// Bootstrap V5 variable overrides
+// =============================================================================================
+
+// globals
+$body-bg: $cf-background01 !default;
+$body-color: $cf-text01 !default;
+$text-muted: $cf-text01-muted !default;
+$font-family-base: $cf-sans-font-family !default;
+$link-color: $cf-link-color !default;
+$link-hover-color: $cf-link-color-hover !default;
+$link-decoration: $cf-link-decoration !default;
+$link-hover-decoration: $cf-link-decoration-hover !default;
+$primary: $cf-primary !default;
+$secondary: $cf-secondary !default;
+$danger: $cf-danger !default;
+$success: $cf-success !default;
+$info: $cf-info !default;
+$warning: $cf-warning !default;
+
+// dropdowns
+$dropdown-bg: $cf-dropdown-bg !default;
+$dropdown-color: $cf-dropdown-color !default;
+
+// forms
+$input-btn-focus-color: rgba($cf-brand-highlight, 0.25) !default;
+$input-focus-border-color: tint-color($cf-brand-highlight, 50%) !default;
+$input-bg: $cf-input-bg !default;
+$form-check-input-checked-bg-color: $cf-check-radio-bg !default;
+$form-check-input-checked-border-color: $cf-check-radio-bg !default;
+
+// modals
+$modal-backdrop-opacity: 0.5 !default;
+
+// pagination
+$pagination-bg: $cf-pagination-bg !default;
+$pagination-color: $cf-pagination-color !default;
+$pagination-disabled-color: $cf-pagination-color-disabled !default;
+$pagination-border-color: $cf-pagination-border !default;
+// disabling border radius because paginatio buttons should always be square to match the footer.
+$pagination-border-radius: 0 !default;
+$pagination-active-bg: $cf-pagination-active-bg !default;
+$pagination-active-color: $cf-pagination-active-color !default;
+$pagination-hover-color: $cf-pagination-color-hover !default;
+$pagination-hover-bg: $cf-pagination-bg-hover !default;
+
+// popover
+$popover-bg: $cf-background02 !default;
+$popover-body-color: $cf-text02 !default;
+
+// tables
+$table-striped-bg: $cf-table-stripped-bg !default;
+
+// other
+$enable-rounded: true !default;
diff --git a/assets/scss/fauxton.scss b/assets/scss/fauxton.scss
new file mode 100644
index 0000000..ba9dd9d
--- /dev/null
+++ b/assets/scss/fauxton.scss
@@ -0,0 +1,578 @@
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License. You may obtain a copy of
+//  the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+
+@import 'variables';
+
+@import '~bootstrap/scss/bootstrap';
+@import '~react-select/dist/react-select.css';
+@import '~rc-slider/assets/index.css';
+
+@import 'mixins';
+@import 'layouts';
+@import 'prettyprint';
+@import 'icons';
+@import 'code-editors';
+@import 'templates';
+@import 'formstyles';
+@import 'pagination';
+@import 'trays';
+@import 'animations';
+@import 'react-animations';
+@import 'notification-center';
+
+// Defines new button variants
+.btn-cf-primary {
+  @include button-variant(
+    // background
+    $cf-btn-primary-bg,
+    // border
+    $cf-btn-primary-border,
+    // color
+    $cf-btn-primary-color,
+    // hover background
+    $cf-btn-primary-bg-hover,
+    // hover border
+    $cf-btn-primary-bg-hover,
+    // hover color
+    $cf-btn-primary-color-hover,
+    // active background
+    shade-color($cf-btn-primary-bg, $cf-btn-active-bg-shade-amount),
+    // active border
+    shade-color($cf-btn-primary-bg, $cf-btn-active-bg-shade-amount),
+    // active color
+    $cf-btn-primary-color,
+    // disabled background
+    $cf-btn-primary-bg-disabled,
+    // disabled border
+    $cf-btn-primary-bg-disabled,
+    // disabled color
+    $cf-btn-primary-color-disabled
+  );
+}
+
+.btn-cf-secondary {
+  @include button-variant(
+    $cf-btn-secondary-bg,
+    $cf-btn-secondary-border,
+    $cf-btn-secondary-color,
+    $cf-btn-secondary-bg-hover,
+    $cf-btn-secondary-bg-hover,
+    $cf-btn-secondary-color-hover,
+    shade-color($cf-btn-secondary-bg, $cf-btn-active-bg-shade-amount),
+    shade-color($cf-btn-secondary-bg, $cf-btn-active-bg-shade-amount),
+    $cf-btn-secondary-color,
+    $cf-btn-secondary-bg-disabled,
+    $cf-btn-secondary-bg-disabled,
+    $cf-btn-secondary-color-disabled
+  );
+}
+
+.btn-cf-danger {
+  @include button-variant(
+    $cf-btn-danger-bg,
+    $cf-btn-danger-border,
+    $cf-btn-danger-color,
+    $cf-btn-danger-bg-hover,
+    $cf-btn-danger-bg-hover,
+    $cf-btn-danger-color-hover,
+    shade-color($cf-btn-danger-bg, $cf-btn-active-bg-shade-amount),
+    shade-color($cf-btn-danger-bg, $cf-btn-active-bg-shade-amount),
+    $cf-btn-danger-color,
+    $cf-btn-danger-bg-disabled,
+    $cf-btn-danger-bg-disabled,
+    $cf-btn-danger-color-disabled
+  );
+}
+
+.btn-cf-cancel {
+  @include button-variant(
+    $cf-btn-cancel-bg,
+    $cf-btn-cancel-border,
+    $cf-btn-cancel-color,
+    $cf-btn-cancel-bg-hover,
+    $cf-btn-cancel-bg-hover,
+    $cf-btn-cancel-color-hover,
+    shade-color($cf-btn-cancel-bg, $cf-btn-active-bg-shade-amount),
+    shade-color($cf-btn-cancel-bg, $cf-btn-active-bg-shade-amount),
+    $cf-btn-cancel-color,
+    $cf-btn-cancel-bg-disabled,
+    $cf-btn-cancel-bg-disabled,
+    $cf-btn-cancel-color-disabled
+  );
+}
+
+.page-header {
+  border-bottom: 1px solid $cf-page-header-border;
+  margin-bottom: 10px;
+
+  h3 {
+    text-transform: capitalize;
+    margin-bottom: 0;
+  }
+}
+
+/* bootstrap overrides */
+
+.dropdown-toggle::after {
+  /* removes caret from dropdown toggle - a Bootstrap default */
+  display: none !important;
+}
+
+/*TABLE STYLES*/
+// Not in use yet but it can be used to add borders only between columns
+table.table.column-bordered {
+  th {
+    border-left-width: 1px;
+  }
+  th:first-child {
+    border-left-width: 0px;
+  }
+  td {
+    border-left-width: 1px;
+  }
+  td:first-child {
+    border-left-width: 0px;
+  }
+}
+
+// Icons in buttons
+.btn > i[class*='fonticon-'] {
+  margin-right: 0.4rem;
+  vertical-align: middle;
+}
+
+.btn {
+  // focus styling should use the same color for all button types
+  &.btn-cf-primary:focus,
+  &.btn-cf-secondary:focus,
+  &.btn-cf-cancel:focus,
+  &.btn-cf-danger:focus {
+    box-shadow: 0 0 0 0.15rem #{$cf-brand-hightlight-hover}88;
+  }
+}
+
+#dashboard-upper-content {
+  .tab-content {
+    padding-top: 70px;
+  }
+
+  .well {
+    padding: 20px;
+    @include border-radius(0);
+    box-shadow: none;
+  }
+}
+
+#dashboard-content .scrollable {
+  height: auto;
+  overflow-y: auto;
+  overflow-x: hidden;
+  width: 100%;
+  position: absolute;
+  padding: 0;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+}
+
+/*ONE PANEL TEMPLATE ONLY STYLES  AKA _all_dbs */
+#db-views-tabs-nav {
+  position: fixed;
+  z-index: 1;
+  margin-top: 19px;
+  margin-bottom: 0;
+  padding: 0 20px;
+}
+
+.db-views-smaller {
+  max-width: 500px;
+}
+
+/** table row selector thing **/
+.select {
+  > a {
+    display: block;
+    padding: 5px 15px 5px 5px;
+    border: 1px solid $cf-border-color02;
+    position: relative;
+    background-color: $cf-white;
+    color: $cf-text01;
+    &:after {
+      content: '';
+      width: 0;
+      height: 0;
+      border-left: 7px solid transparent;
+      border-right: 7px solid transparent;
+      border-top: 7px solid $cf-border-color02;
+      position: absolute;
+      right: 9px;
+      top: 12px;
+    }
+    &:before {
+      content: '';
+      border-left: 1px solid $cf-border-color02;
+      height: 30px;
+      position: absolute;
+      right: 30px;
+      top: 0;
+    }
+  }
+}
+
+/*documents and databases */
+
+// legacy - remove when soft migration to header toggles is complete
+// missing: add_config_option
+.header-icon {
+  font-size: 20px;
+  &:before {
+    float: left;
+    margin: 10px 6px 0px 0px;
+  }
+}
+
+//---header--//
+#dashboard > header {
+  background-color: $cf-topheader-bg;
+  color: $cf-topheader-color;
+  height: 64px;
+
+  /* the position absolute is necessary to allow the 6px box shadow overlap the panels below. The parent <header>
+   ensures the flexbox height is respected */
+  & > div {
+    height: 65px;
+    @include bottom-border();
+    position: absolute;
+    width: 100%;
+    z-index: 2; /* needed because ace's selected row has a z-index of 1 & can't be overridden */
+  }
+}
+
+.header-right {
+  .well {
+    padding: 0;
+    margin: 0;
+  }
+}
+
+.faux-header__searchboxwrapper {
+  overflow: visible;
+  height: 64px;
+  width: 235px;
+}
+
+.faux-header__searchboxcontainer {
+  overflow: visible;
+  position: absolute;
+  padding: 12px;
+
+  /* Async Select overrides to (somewhat) match Bootstrap styling */
+  .Select-control {
+    border: 1px solid $cf-border-color01 !important;
+    border-radius: $cf-border-radius !important;
+
+    .Select-placeholder {
+      color: $cf-text01-muted;
+    }
+  }
+
+  .Select-control {
+    width: 210px;
+  }
+  .Select-menu-outer {
+    max-width: 450px;
+  }
+}
+
+// this allows the results expand as much as need be when the component is used in the header
+.Select-menu-outer {
+  & > div > div {
+    padding-right: 25px; // prevents overlapping of auto-generated scrollbar
+  }
+  min-width: 210px;
+  max-width: 450px;
+  width: auto;
+}
+
+// react-select color design
+.Select div.Select-control {
+  border-radius: $cf-border-radius;
+  overflow: unset; // hack to fix an issue where after clicking the dropdown, the text shifts up
+}
+
+.Select .Select-menu-outer {
+  border-radius: $cf-border-radius;
+  border: none;
+  margin-top: 2px; // so the menu doesn't cover the border of the input
+}
+
+.Select .is-focused {
+  background-color: $cf-dropdown-item-bg-hover;
+  color: $cf-dropdown-item-color-hover;
+}
+
+.Select .is-focused:not(.is-open) > .Select-control {
+  box-shadow: transparent;
+}
+
+.Select .Select-menu {
+  max-height: 291px;
+  border-radius: $cf-border-radius;
+  border: 1px solid $cf-border-color01;
+}
+
+.Select-arrow-zone > .Select-arrow {
+  border-top-color: $cf-text01;
+}
+
+.Select-arrow-zone:hover > .Select-arrow {
+  border-top-color: $cf-brand-hightlight-hover;
+}
+
+#primary-nav-right-shadow {
+  position: absolute;
+  top: 0px;
+  right: 0px;
+  bottom: 0px;
+  background-color: rgba(0, 0, 0, 0.1);
+  width: 6px;
+  z-index: 6;
+}
+
+.simple-header {
+  margin-bottom: 1.5rem;
+  margin-top: 0;
+}
+
+// left navigationbar is opened
+@media (max-width: 730px) {
+  .closeMenu {
+    .one-pane {
+      .faux-header__searchboxwrapper {
+        display: none;
+      }
+    }
+  }
+}
+
+@media (max-width: 860px) {
+  .closeMenu {
+    .with-sidebar {
+      .faux-header__searchboxwrapper {
+        display: none;
+      }
+    }
+  }
+}
+
+// left navigationbar is closed
+@media (max-width: 875px) {
+  #main:not(.closeMenu) {
+    .one-pane {
+      .faux-header__searchboxwrapper {
+        display: none;
+      }
+    }
+  }
+}
+
+@media (max-width: 1015px) {
+  #main:not(.closeMenu) {
+    .with-sidebar {
+      .faux-header__searchboxwrapper {
+        display: none;
+      }
+    }
+  }
+}
+
+body .control-toggle-include-docs span {
+  margin-left: 0;
+  &::before {
+    content: 'Include Docs';
+  }
+}
+
+@media (max-width: 1177px) {
+  #main.closeMenu {
+    .with-sidebar {
+      .two-panel-header {
+        .control-toggle-include-docs span::before {
+          content: ' Docs';
+        }
+        .right-header button i:before {
+          margin: 2px 0 0 0;
+        }
+      }
+    }
+  }
+}
+
+@media (max-width: 1120px) {
+  #main.closeMenu {
+    .with-sidebar {
+      .two-panel-header {
+        .right-header-wrapper {
+          .control-toggle-include-docs span::before {
+            content: 'Docs';
+          }
+          button:not(.control-toggle-include-docs) span {
+            display: none;
+          }
+          button i:before {
+            float: none;
+          }
+          .right-header button i:before {
+            margin: 2px 0 0 0;
+          }
+          #query-options-tray:before {
+            right: 180px;
+          }
+        }
+      }
+    }
+  }
+}
+
+@media (max-width: 1339px) {
+  #main:not(.closeMenu) {
+    .with-sidebar {
+      .two-panel-header {
+        .control-toggle-include-docs span::before {
+          content: 'Docs';
+        }
+        .right-header button i:before {
+          margin: 2px 0 0 0;
+        }
+      }
+    }
+  }
+}
+
+@media (max-width: 1090px) {
+  #main:not(.closeMenu) {
+    .with-sidebar {
+      .two-panel-header {
+        .control-toggle-include-docs span::before {
+          content: 'Docs';
+        }
+        button:not(.control-toggle-include-docs) span {
+          display: none;
+        }
+        button i:before {
+          float: none;
+        }
+        #query-options-tray:before {
+          right: 180px;
+        }
+        .right-header button i:before {
+          margin: 2px 0 0 0;
+        }
+      }
+    }
+  }
+}
+
+.capitalize {
+  text-transform: capitalize;
+}
+
+.fauxton-table-list {
+  a.db-actions,
+  a.db-actions:visited {
+    color: $cf-brand-highlight;
+    border: 1px solid $cf-border-color01;
+    padding: 5px 7px;
+    @include border-radius(6px);
+    text-decoration: none;
+    font-size: 19px;
+    &:hover {
+      background-color: $cf-brand-hightlight-hover;
+      color: $cf-white;
+    }
+  }
+  td {
+    vertical-align: middle;
+  }
+}
+
+.btn-space {
+  margin-right: 5px;
+}
+
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  margin: -1px;
+  padding: 0;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+
+.noscript-warning {
+  padding: 1px 30px 10px 30px;
+  color: $cf-white;
+  background: $cf-brand-highlight;
+  margin: 100px;
+  box-shadow: 2px 2px 5px $cf-border-color02;
+}
+
+.cursor-pointer {
+  cursor: pointer;
+}
+
+/* Generic dropdown Bootstrap overrides */
+.dropdown-menu {
+  box-shadow: $cf-box-shadow;
+  padding: 0;
+  border-radius: 0;
+
+  .icon:before {
+    padding-right: 10px;
+    vertical-align: middle;
+    padding-bottom: 2px;
+  }
+
+  a,
+  button {
+    background-color: $cf-dropdown-item-bg;
+    color: $cf-dropdown-item-color;
+    &:hover {
+      background-color: $cf-dropdown-item-bg-hover;
+      color: $cf-dropdown-item-color-hover;
+    }
+  }
+
+  .dropdown-item {
+    margin-bottom: 1px;
+
+    &:last-child {
+      margin-bottom: 0;
+    }
+  }
+
+  .dropdown-header {
+    color: $cf-dropdown-heading-color;
+    background-color: $cf-dropdown-heading-bg;
+  }
+}
+
+// Modals
+.modal-dialog {
+  .modal-footer {
+    // remove divider between modal content and footer
+    border-top: none;
+  }
+}
diff --git a/code-layout.md b/code-layout.md
index 4bef459..f989cff 100644
--- a/code-layout.md
+++ b/code-layout.md
@@ -5,10 +5,7 @@
 
 ## Backbone and React 
 
-Fauxton was originally written in [Backbone](http://backbonejs.org), but in 2015 we're in the process of upgrading 
-the codebase to build it around [React](https://facebook.github.io/react/). We're replacing all Backbone Views with 
-(unit-tested!) React components. Backbone models and collections are still being used for server-side data retrieval 
-and storage as is URL routing, but the plan is to phase out all Backbone over time. 
+Fauxton was originally written in [Backbone](http://backbonejs.org), but has since been rebuilt around [React](https://facebook.github.io/react/). Backbone models and collections are still being used for server-side data retrieval, storage, and URL routing. However, the plan is to completely phase out Backbone over time. 
 
 ### React and the Flux pattern
 
@@ -67,20 +64,20 @@
 Check out [writing_addons.md](writing_addons.md) for more information on writing your own addons.
 
 
-## CSS / Less
+## CSS / SCSS
 
-We use Less for generating our CSS. The bulk of the shared CSS used throughout the application is found in 
-[assets/less/](assets/less), but any addon may contain its own `assets/less` subfolder containing whatever unique
+We use SCSS for generating our CSS. The bulk of the shared CSS used throughout the application is found in 
+[assets/scss/](assets/scss), but any addon may contain its own `assets/scss` subfolder containing whatever unique
 styles are needed.
 
 ## Icons
 
-Fauxton uses icon fonts which are packaged as font files in the [assets/fonts](assets/fonts) folder.
+Fauxton uses icon fonts, which are packaged as font files in the [assets/fonts](assets/fonts) folder.
 As the name implies, these are fonts that contain icons instead of letters and numbers.
 
-To use an icon, you simply add the corresponding `fonticon-<icon_name>` CSS class to the HTML element. E.g. `<i className="fonticon-attention-circled"></i>`.
+To use an icon, simply add the corresponding `fonticon-<icon_name>` CSS class to the HTML element. E.g. `<i className="fonticon-attention-circled"></i>`.
 
-The CSS classes are defined in [assets/less/icon.less](assets/less/icon.less), which is a generated file. In order to add, update or remove icons, follow the steps outlined at [assets/iconfontgenerator/README.md](assets/iconfontgenerator/README.md). The source SVG files for each icon are located at [assets/icons](assets/icons).
+The CSS classes are defined in [assets/scss/icon.scss](assets/scss/icon.scss) - a generated file. In order to add, update or remove icons, follow the steps outlined at [assets/iconfontgenerator/README.md](assets/iconfontgenerator/README.md). The source SVG files for each icon are located at [assets/icons](assets/icons).
 
 
 ## app/addons/components / app/addons/fauxton
diff --git a/jest-config.json b/jest-config.json
index 090b9ef..35c1965 100644
--- a/jest-config.json
+++ b/jest-config.json
@@ -10,7 +10,7 @@
     "ace-builds": "<rootDir>/node_modules/ace-builds",
 
     "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|swf|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
-    "\\.(css|less)$": "<rootDir>/__mocks__/styleMock.js"
+    "\\.(css|less|scss)$": "<rootDir>/__mocks__/styleMock.js"
   },
 
   "testEnvironmentOptions": {
diff --git a/package-lock.json b/package-lock.json
index 2fc76b8..ee27992 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -31,10 +31,9 @@
         "rc-slider": "^10.0.1",
         "react": "^16.14.0",
         "react-ace": "^10.1.0",
-        "react-bootstrap": "^0.31.3",
+        "react-bootstrap": "^2.7.0",
         "react-dom": "^16.14.0",
         "react-motion": "^0.5.0",
-        "react-overlays": "^0.7.0",
         "react-redux": "^8.0.2",
         "react-select": "^1.3.0",
         "react-toastify": "^8.2.0",
@@ -42,6 +41,8 @@
         "redux-thunk": "^2.4.1",
         "regenerator-runtime": "^0.13.9",
         "rxjs": "^7.5.6",
+        "sass": "^1.58.0",
+        "sass-loader": "^13.2.0",
         "semver": "^7.3.7",
         "send": "^0.18.0",
         "url": "^0.11.0",
@@ -68,7 +69,7 @@
         "babel-jest": "^29.3.1",
         "babel-loader": "^8.2.5",
         "babel-plugin-array-includes": "^2.0.3",
-        "bootstrap": "^3.4.1",
+        "bootstrap": "^5.2.3",
         "chromedriver": "^105.0.0",
         "css-loader": "^6.7.1",
         "enzyme": "^3.11.0",
@@ -90,8 +91,6 @@
         "html-webpack-plugin": "^5.5.0",
         "jest": "^29.3.1",
         "jest-environment-jsdom": "^29.3.1",
-        "less": "^3.13.1",
-        "less-loader": "^10.2.0",
         "mini-css-extract-plugin": "^2.6.1",
         "mock-local-storage": "^1.1.23",
         "nightwatch": "^2.3.3",
@@ -1987,11 +1986,14 @@
       }
     },
     "node_modules/@babel/runtime": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz",
-      "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==",
+      "version": "7.20.13",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz",
+      "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==",
       "dependencies": {
-        "regenerator-runtime": "^0.13.4"
+        "regenerator-runtime": "^0.13.11"
+      },
+      "engines": {
+        "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/template": {
@@ -3041,7 +3043,6 @@
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
       "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
-      "dev": true,
       "dependencies": {
         "@jridgewell/set-array": "^1.0.1",
         "@jridgewell/sourcemap-codec": "^1.4.10",
@@ -3055,7 +3056,6 @@
       "version": "3.0.5",
       "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
       "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==",
-      "dev": true,
       "engines": {
         "node": ">=6.0.0"
       }
@@ -3064,7 +3064,6 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
       "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
-      "dev": true,
       "engines": {
         "node": ">=6.0.0"
       }
@@ -3073,7 +3072,6 @@
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
       "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
-      "dev": true,
       "dependencies": {
         "@jridgewell/gen-mapping": "^0.3.0",
         "@jridgewell/trace-mapping": "^0.3.9"
@@ -3082,14 +3080,12 @@
     "node_modules/@jridgewell/sourcemap-codec": {
       "version": "1.4.11",
       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
-      "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==",
-      "dev": true
+      "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg=="
     },
     "node_modules/@jridgewell/trace-mapping": {
       "version": "0.3.15",
       "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz",
       "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==",
-      "dev": true,
       "dependencies": {
         "@jridgewell/resolve-uri": "^3.0.3",
         "@jridgewell/sourcemap-codec": "^1.4.10"
@@ -3160,6 +3156,74 @@
         "node": ">= 8"
       }
     },
+    "node_modules/@popperjs/core": {
+      "version": "2.11.6",
+      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
+      "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/popperjs"
+      }
+    },
+    "node_modules/@react-aria/ssr": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.4.1.tgz",
+      "integrity": "sha512-NmhoilMDyIfQiOSdQgxpVH2tC2u85Y0mVijtBNbI9kcDYLEiW/r6vKYVKtkyU+C4qobXhGMPfZ70PTc0lysSVA==",
+      "dependencies": {
+        "@swc/helpers": "^0.4.14"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0"
+      }
+    },
+    "node_modules/@restart/hooks": {
+      "version": "0.4.8",
+      "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.8.tgz",
+      "integrity": "sha512-Ivvp1FZ0Lja80iUTYAhbzy+stxwO7FbPHP95ypCtIh0wyOLiayQywXhVJ2ZYP5S1AjW2GmKHeRU4UglMwTG2sA==",
+      "dependencies": {
+        "dequal": "^2.0.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.8.0"
+      }
+    },
+    "node_modules/@restart/ui": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.5.4.tgz",
+      "integrity": "sha512-ziNtXY2PrjXrRUfR1D/ry1v1i5IF+kfMcH9d1kIcU2lOELfmDsVb+fzbyEDz3yKvKuqkphTunVDuLdYRJ0YsAg==",
+      "dependencies": {
+        "@babel/runtime": "^7.20.7",
+        "@popperjs/core": "^2.11.6",
+        "@react-aria/ssr": "^3.4.1",
+        "@restart/hooks": "^0.4.7",
+        "@types/warning": "^3.0.0",
+        "dequal": "^2.0.3",
+        "dom-helpers": "^5.2.0",
+        "uncontrollable": "^7.2.1",
+        "warning": "^4.0.3"
+      },
+      "peerDependencies": {
+        "react": ">=16.14.0",
+        "react-dom": ">=16.14.0"
+      }
+    },
+    "node_modules/@restart/ui/node_modules/dom-helpers": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+      "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+      "dependencies": {
+        "@babel/runtime": "^7.8.7",
+        "csstype": "^3.0.2"
+      }
+    },
+    "node_modules/@restart/ui/node_modules/warning": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
+      "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
+      "dependencies": {
+        "loose-envify": "^1.0.0"
+      }
+    },
     "node_modules/@sinclair/typebox": {
       "version": "0.24.51",
       "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz",
@@ -3210,6 +3274,19 @@
       "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==",
       "dev": true
     },
+    "node_modules/@swc/helpers": {
+      "version": "0.4.14",
+      "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz",
+      "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==",
+      "dependencies": {
+        "tslib": "^2.4.0"
+      }
+    },
+    "node_modules/@swc/helpers/node_modules/tslib": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+      "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
+    },
     "node_modules/@testim/chrome-version": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.2.tgz",
@@ -3308,7 +3385,6 @@
       "version": "8.4.6",
       "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz",
       "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==",
-      "dev": true,
       "dependencies": {
         "@types/estree": "*",
         "@types/json-schema": "*"
@@ -3318,7 +3394,6 @@
       "version": "3.7.4",
       "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
       "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
-      "dev": true,
       "dependencies": {
         "@types/eslint": "*",
         "@types/estree": "*"
@@ -3327,8 +3402,7 @@
     "node_modules/@types/estree": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
-      "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
-      "dev": true
+      "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ=="
     },
     "node_modules/@types/express": {
       "version": "4.17.13",
@@ -3448,8 +3522,7 @@
     "node_modules/@types/json-schema": {
       "version": "7.0.7",
       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz",
-      "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==",
-      "dev": true
+      "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA=="
     },
     "node_modules/@types/mime": {
       "version": "3.0.1",
@@ -3460,8 +3533,7 @@
     "node_modules/@types/node": {
       "version": "17.0.9",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.9.tgz",
-      "integrity": "sha512-5dNBXu/FOER+EXnyah7rn8xlNrfMOQb/qXnw4NQgLkCygKBKhdmF/CA5oXVOKZLBEahw8s2WP9LxIcN/oDDRgQ==",
-      "dev": true
+      "integrity": "sha512-5dNBXu/FOER+EXnyah7rn8xlNrfMOQb/qXnw4NQgLkCygKBKhdmF/CA5oXVOKZLBEahw8s2WP9LxIcN/oDDRgQ=="
     },
     "node_modules/@types/prettier": {
       "version": "2.7.1",
@@ -3496,6 +3568,14 @@
         "csstype": "^3.0.2"
       }
     },
+    "node_modules/@types/react-transition-group": {
+      "version": "4.4.5",
+      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
+      "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
+      "dependencies": {
+        "@types/react": "*"
+      }
+    },
     "node_modules/@types/retry": {
       "version": "0.12.0",
       "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
@@ -3551,6 +3631,11 @@
       "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
       "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
     },
+    "node_modules/@types/warning": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
+      "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA=="
+    },
     "node_modules/@types/ws": {
       "version": "8.5.3",
       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
@@ -3595,7 +3680,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
       "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
-      "dev": true,
       "dependencies": {
         "@webassemblyjs/helper-numbers": "1.11.1",
         "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
@@ -3604,26 +3688,22 @@
     "node_modules/@webassemblyjs/floating-point-hex-parser": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
-      "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
-      "dev": true
+      "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ=="
     },
     "node_modules/@webassemblyjs/helper-api-error": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
-      "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
-      "dev": true
+      "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg=="
     },
     "node_modules/@webassemblyjs/helper-buffer": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
-      "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
-      "dev": true
+      "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA=="
     },
     "node_modules/@webassemblyjs/helper-numbers": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
       "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
-      "dev": true,
       "dependencies": {
         "@webassemblyjs/floating-point-hex-parser": "1.11.1",
         "@webassemblyjs/helper-api-error": "1.11.1",
@@ -3633,14 +3713,12 @@
     "node_modules/@webassemblyjs/helper-wasm-bytecode": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
-      "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
-      "dev": true
+      "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q=="
     },
     "node_modules/@webassemblyjs/helper-wasm-section": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
       "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
-      "dev": true,
       "dependencies": {
         "@webassemblyjs/ast": "1.11.1",
         "@webassemblyjs/helper-buffer": "1.11.1",
@@ -3652,7 +3730,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
       "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
-      "dev": true,
       "dependencies": {
         "@xtuc/ieee754": "^1.2.0"
       }
@@ -3661,7 +3738,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
       "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
-      "dev": true,
       "dependencies": {
         "@xtuc/long": "4.2.2"
       }
@@ -3669,14 +3745,12 @@
     "node_modules/@webassemblyjs/utf8": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
-      "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
-      "dev": true
+      "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ=="
     },
     "node_modules/@webassemblyjs/wasm-edit": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
       "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
-      "dev": true,
       "dependencies": {
         "@webassemblyjs/ast": "1.11.1",
         "@webassemblyjs/helper-buffer": "1.11.1",
@@ -3692,7 +3766,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
       "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
-      "dev": true,
       "dependencies": {
         "@webassemblyjs/ast": "1.11.1",
         "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
@@ -3705,7 +3778,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
       "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
-      "dev": true,
       "dependencies": {
         "@webassemblyjs/ast": "1.11.1",
         "@webassemblyjs/helper-buffer": "1.11.1",
@@ -3717,7 +3789,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
       "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
-      "dev": true,
       "dependencies": {
         "@webassemblyjs/ast": "1.11.1",
         "@webassemblyjs/helper-api-error": "1.11.1",
@@ -3731,7 +3802,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
       "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
-      "dev": true,
       "dependencies": {
         "@webassemblyjs/ast": "1.11.1",
         "@xtuc/long": "4.2.2"
@@ -3781,14 +3851,12 @@
     "node_modules/@xtuc/ieee754": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
-      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
-      "dev": true
+      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
     },
     "node_modules/@xtuc/long": {
       "version": "4.2.2",
       "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
-      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
-      "dev": true
+      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
     },
     "node_modules/abab": {
       "version": "2.0.6",
@@ -3866,7 +3934,6 @@
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
       "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
-      "dev": true,
       "peerDependencies": {
         "acorn": "^8"
       }
@@ -3964,7 +4031,6 @@
       "version": "6.12.6",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
       "dependencies": {
         "fast-deep-equal": "^3.1.1",
         "fast-json-stable-stringify": "^2.0.0",
@@ -4019,7 +4085,6 @@
       "version": "3.5.2",
       "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
       "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "dev": true,
       "peerDependencies": {
         "ajv": "^6.9.1"
       }
@@ -4119,7 +4184,6 @@
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
       "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
-      "dev": true,
       "dependencies": {
         "normalize-path": "^3.0.0",
         "picomatch": "^2.0.4"
@@ -5099,27 +5163,6 @@
         "@babel/core": "^7.0.0"
       }
     },
-    "node_modules/babel-runtime": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
-      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-      "dependencies": {
-        "core-js": "^2.4.0",
-        "regenerator-runtime": "^0.11.0"
-      }
-    },
-    "node_modules/babel-runtime/node_modules/core-js": {
-      "version": "2.6.12",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
-      "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
-      "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
-      "hasInstallScript": true
-    },
-    "node_modules/babel-runtime/node_modules/regenerator-runtime": {
-      "version": "0.11.1",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
-    },
     "node_modules/backbone": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.1.tgz",
@@ -5178,7 +5221,6 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -5257,12 +5299,22 @@
       "dev": true
     },
     "node_modules/bootstrap": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz",
-      "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==",
+      "version": "5.2.3",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz",
+      "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==",
       "dev": true,
-      "engines": {
-        "node": ">=6"
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/twbs"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/bootstrap"
+        }
+      ],
+      "peerDependencies": {
+        "@popperjs/core": "^2.11.6"
       }
     },
     "node_modules/boxen": {
@@ -5383,7 +5435,6 @@
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
       "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "dev": true,
       "dependencies": {
         "fill-range": "^7.0.1"
       },
@@ -5398,10 +5449,9 @@
       "dev": true
     },
     "node_modules/browserslist": {
-      "version": "4.21.3",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
-      "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==",
-      "dev": true,
+      "version": "4.21.5",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+      "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
       "funding": [
         {
           "type": "opencollective",
@@ -5413,10 +5463,10 @@
         }
       ],
       "dependencies": {
-        "caniuse-lite": "^1.0.30001370",
-        "electron-to-chromium": "^1.4.202",
-        "node-releases": "^2.0.6",
-        "update-browserslist-db": "^1.0.5"
+        "caniuse-lite": "^1.0.30001449",
+        "electron-to-chromium": "^1.4.284",
+        "node-releases": "^2.0.8",
+        "update-browserslist-db": "^1.0.10"
       },
       "bin": {
         "browserslist": "cli.js"
@@ -5470,8 +5520,7 @@
     "node_modules/buffer-from": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
-      "dev": true
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
     },
     "node_modules/bytes": {
       "version": "3.0.0",
@@ -5529,10 +5578,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001387",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001387.tgz",
-      "integrity": "sha512-fKDH0F1KOJvR+mWSOvhj8lVRr/Q/mc5u5nabU2vi1/sgvlSqEsE8dOq0Hy/BqVbDkCYQPRRHB1WRjW6PGB/7PA==",
-      "dev": true,
+      "version": "1.0.30001450",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz",
+      "integrity": "sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew==",
       "funding": [
         {
           "type": "opencollective",
@@ -5634,7 +5682,6 @@
       "version": "3.5.3",
       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
       "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "dev": true,
       "funding": [
         {
           "type": "individual",
@@ -5661,7 +5708,6 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
       "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
-      "dev": true,
       "engines": {
         "node": ">=6.0"
       }
@@ -5996,15 +6042,6 @@
       "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
       "dev": true
     },
-    "node_modules/copy-anything": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz",
-      "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==",
-      "dev": true,
-      "dependencies": {
-        "is-what": "^3.12.0"
-      }
-    },
     "node_modules/core-js": {
       "version": "3.25.0",
       "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.0.tgz",
@@ -6402,6 +6439,14 @@
         "node": ">= 0.8"
       }
     },
+    "node_modules/dequal": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+      "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/destroy": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
@@ -6521,14 +6566,6 @@
         "utila": "~0.4"
       }
     },
-    "node_modules/dom-helpers": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
-      "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==",
-      "dependencies": {
-        "@babel/runtime": "^7.1.2"
-      }
-    },
     "node_modules/dom-serializer": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
@@ -6657,10 +6694,9 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.4.239",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.239.tgz",
-      "integrity": "sha512-XbhfzxPIFzMjJm17T7yUGZEyYh5XuUjrA/FQ7JUy2bEd4qQ7MvFTaKpZ6zXZog1cfVttESo2Lx0ctnf7eQOaAQ==",
-      "dev": true
+      "version": "1.4.286",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.286.tgz",
+      "integrity": "sha512-Vp3CVhmYpgf4iXNKAucoQUDcCrBQX3XLBtwgFqP9BUXuucgvAV9zWp1kYU7LL9j4++s9O+12cb3wMtN4SJy6UQ=="
     },
     "node_modules/emittery": {
       "version": "0.13.1",
@@ -6709,7 +6745,6 @@
       "version": "5.10.0",
       "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
       "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
-      "dev": true,
       "dependencies": {
         "graceful-fs": "^4.2.4",
         "tapable": "^2.2.0"
@@ -6849,19 +6884,6 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/errno": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
-      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "prr": "~1.0.1"
-      },
-      "bin": {
-        "errno": "cli.js"
-      }
-    },
     "node_modules/error-ex": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -6910,8 +6932,7 @@
     "node_modules/es-module-lexer": {
       "version": "0.9.3",
       "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
-      "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
-      "dev": true
+      "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
     },
     "node_modules/es-shim-unscopables": {
       "version": "1.0.0",
@@ -7422,7 +7443,6 @@
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
       "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-      "dev": true,
       "dependencies": {
         "esrecurse": "^4.3.0",
         "estraverse": "^4.1.1"
@@ -8006,7 +8026,6 @@
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "dev": true,
       "dependencies": {
         "estraverse": "^5.2.0"
       },
@@ -8018,7 +8037,6 @@
       "version": "5.3.0",
       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
       "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-      "dev": true,
       "engines": {
         "node": ">=4.0"
       }
@@ -8027,7 +8045,6 @@
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
       "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-      "dev": true,
       "engines": {
         "node": ">=4.0"
       }
@@ -8064,7 +8081,6 @@
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
       "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
-      "dev": true,
       "engines": {
         "node": ">=0.8.x"
       }
@@ -8301,8 +8317,7 @@
     "node_modules/fast-deep-equal": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
     },
     "node_modules/fast-glob": {
       "version": "3.2.11",
@@ -8323,8 +8338,7 @@
     "node_modules/fast-json-stable-stringify": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
     },
     "node_modules/fast-levenshtein": {
       "version": "2.0.6",
@@ -8414,9 +8428,9 @@
       }
     },
     "node_modules/fetch-mock/node_modules/debug": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-      "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
       "dev": true,
       "dependencies": {
         "ms": "2.1.2"
@@ -8442,16 +8456,6 @@
       "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==",
       "dev": true
     },
-    "node_modules/fetch-mock/node_modules/querystring": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
-      "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==",
-      "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.x"
-      }
-    },
     "node_modules/file-entry-cache": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -8548,7 +8552,6 @@
       "version": "7.0.1",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dev": true,
       "dependencies": {
         "to-regex-range": "^5.0.1"
       },
@@ -8798,7 +8801,6 @@
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
       "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
       "hasInstallScript": true,
       "optional": true,
       "os": [
@@ -8955,7 +8957,6 @@
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
       "dependencies": {
         "is-glob": "^4.0.1"
       },
@@ -8966,8 +8967,7 @@
     "node_modules/glob-to-regexp": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
-      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
-      "dev": true
+      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
     },
     "node_modules/global": {
       "version": "4.4.0",
@@ -9058,8 +9058,7 @@
     "node_modules/graceful-fs": {
       "version": "4.2.10",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
-      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
-      "dev": true
+      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
     },
     "node_modules/grapheme-splitter": {
       "version": "1.0.4",
@@ -9991,25 +9990,17 @@
         "node": ">= 4"
       }
     },
-    "node_modules/image-size": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
-      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
-      "dev": true,
-      "optional": true,
-      "bin": {
-        "image-size": "bin/image-size.js"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/immediate": {
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
       "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
       "dev": true
     },
+    "node_modules/immutable": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.3.tgz",
+      "integrity": "sha512-IHpmvaOIX4VLJwPOuQr1NpeBr2ZG6vpIj3blsLVxXRWJscLioaJRStqC+NcBsLeCDsnGlPpXd5/WZmnE7MbsKA=="
+    },
     "node_modules/import-fresh": {
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -10221,7 +10212,6 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
       "dependencies": {
         "binary-extensions": "^2.0.0"
       },
@@ -10299,7 +10289,6 @@
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
       "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -10325,7 +10314,6 @@
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
       "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-      "dev": true,
       "dependencies": {
         "is-extglob": "^2.1.1"
       },
@@ -10358,7 +10346,6 @@
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true,
       "engines": {
         "node": ">=0.12.0"
       }
@@ -10555,12 +10542,6 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/is-what": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
-      "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
-      "dev": true
-    },
     "node_modules/is-windows": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -12556,7 +12537,6 @@
       "version": "27.5.1",
       "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
       "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
-      "dev": true,
       "dependencies": {
         "@types/node": "*",
         "merge-stream": "^2.0.0",
@@ -12570,7 +12550,6 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -12579,7 +12558,6 @@
       "version": "8.1.1",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
       "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
-      "dev": true,
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -12774,14 +12752,12 @@
     "node_modules/json-parse-even-better-errors": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
-      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-      "dev": true
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
     },
     "node_modules/json-schema-traverse": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
     },
     "node_modules/json-stable-stringify-without-jsonify": {
       "version": "1.0.1",
@@ -12938,11 +12914,6 @@
       "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
       "dev": true
     },
-    "node_modules/keycode": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.1.tgz",
-      "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg=="
-    },
     "node_modules/kind-of": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -12965,56 +12936,10 @@
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz",
       "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
-      "dev": true,
       "engines": {
         "node": ">= 8"
       }
     },
-    "node_modules/less": {
-      "version": "3.13.1",
-      "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
-      "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
-      "dev": true,
-      "dependencies": {
-        "copy-anything": "^2.0.1",
-        "tslib": "^1.10.0"
-      },
-      "bin": {
-        "lessc": "bin/lessc"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "optionalDependencies": {
-        "errno": "^0.1.1",
-        "graceful-fs": "^4.1.2",
-        "image-size": "~0.5.0",
-        "make-dir": "^2.1.0",
-        "mime": "^1.4.1",
-        "native-request": "^1.0.5",
-        "source-map": "~0.6.0"
-      }
-    },
-    "node_modules/less-loader": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.2.0.tgz",
-      "integrity": "sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==",
-      "dev": true,
-      "dependencies": {
-        "klona": "^2.0.4"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "less": "^3.5.0 || ^4.0.0",
-        "webpack": "^5.0.0"
-      }
-    },
     "node_modules/leven": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
@@ -13090,7 +13015,6 @@
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
       "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
-      "dev": true,
       "engines": {
         "node": ">=6.11.5"
       }
@@ -13276,7 +13200,7 @@
     "node_modules/lodash.sortby": {
       "version": "4.7.0",
       "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
-      "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
+      "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
       "dev": true
     },
     "node_modules/log-symbols": {
@@ -13493,8 +13417,7 @@
     "node_modules/merge-stream": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-      "dev": true
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
     },
     "node_modules/merge2": {
       "version": "1.4.1",
@@ -14057,13 +13980,6 @@
         "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
       }
     },
-    "node_modules/native-request": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz",
-      "integrity": "sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==",
-      "dev": true,
-      "optional": true
-    },
     "node_modules/natural-compare": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -14110,8 +14026,7 @@
     "node_modules/neo-async": {
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
-      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
-      "dev": true
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
     },
     "node_modules/nightwatch": {
       "version": "2.4.1",
@@ -14401,10 +14316,9 @@
       "dev": true
     },
     "node_modules/node-releases": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
-      "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
-      "dev": true
+      "version": "2.0.9",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz",
+      "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA=="
     },
     "node_modules/nopt": {
       "version": "3.0.6",
@@ -14422,7 +14336,6 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -15293,14 +15206,12 @@
     "node_modules/picocolors": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
-      "dev": true
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
     },
     "node_modules/picomatch": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
       "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
-      "dev": true,
       "engines": {
         "node": ">=8.6"
       },
@@ -15582,13 +15493,6 @@
       "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
       "dev": true
     },
-    "node_modules/prr": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
-      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
-      "dev": true,
-      "optional": true
-    },
     "node_modules/psl": {
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
@@ -15692,7 +15596,6 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
       "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-      "dev": true,
       "dependencies": {
         "safe-buffer": "^5.1.0"
       }
@@ -15761,17 +15664,6 @@
         "react-dom": ">=16.9.0"
       }
     },
-    "node_modules/rc-util/node_modules/@babel/runtime": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz",
-      "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==",
-      "dependencies": {
-        "regenerator-runtime": "^0.13.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
     "node_modules/react": {
       "version": "16.14.0",
       "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
@@ -15802,24 +15694,49 @@
       }
     },
     "node_modules/react-bootstrap": {
-      "version": "0.31.5",
-      "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.31.5.tgz",
-      "integrity": "sha512-xgDihgX4QvYHmHzL87faDBMDnGfYyqcrqV0TEbWY+JizePOG1vfb8M3xJN+6MJ3kUYqDtQSZ7v/Q6Y5YDrkMdA==",
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.7.0.tgz",
+      "integrity": "sha512-Jcrn6aUuRVBeSB6dzKODKZU1TONOdhAxu0IDm4Sv74SJUm98dMdhSotF2SNvFEADANoR+stV+7TK6SNX1wWu5w==",
       "dependencies": {
-        "babel-runtime": "^6.11.6",
-        "classnames": "^2.2.5",
-        "dom-helpers": "^3.2.0",
-        "invariant": "^2.2.1",
-        "keycode": "^2.1.2",
-        "prop-types": "^15.5.10",
-        "prop-types-extra": "^1.0.1",
-        "react-overlays": "^0.7.4",
-        "uncontrollable": "^4.1.0",
-        "warning": "^3.0.0"
+        "@babel/runtime": "^7.17.2",
+        "@restart/hooks": "^0.4.6",
+        "@restart/ui": "^1.4.1",
+        "@types/react-transition-group": "^4.4.4",
+        "classnames": "^2.3.1",
+        "dom-helpers": "^5.2.1",
+        "invariant": "^2.2.4",
+        "prop-types": "^15.8.1",
+        "prop-types-extra": "^1.1.0",
+        "react-transition-group": "^4.4.2",
+        "uncontrollable": "^7.2.1",
+        "warning": "^4.0.3"
       },
       "peerDependencies": {
-        "react": "^0.14.9 || >=15.3.0",
-        "react-dom": "^0.14.9 || >=15.3.0"
+        "@types/react": ">=16.14.8",
+        "react": ">=16.14.0",
+        "react-dom": ">=16.14.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/react-bootstrap/node_modules/dom-helpers": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+      "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+      "dependencies": {
+        "@babel/runtime": "^7.8.7",
+        "csstype": "^3.0.2"
+      }
+    },
+    "node_modules/react-bootstrap/node_modules/warning": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
+      "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
+      "dependencies": {
+        "loose-envify": "^1.0.0"
       }
     },
     "node_modules/react-dom": {
@@ -15852,6 +15769,11 @@
       "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
       "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
     },
+    "node_modules/react-lifecycles-compat": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+      "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
+    },
     "node_modules/react-motion": {
       "version": "0.5.2",
       "resolved": "https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz",
@@ -15870,22 +15792,6 @@
       "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
       "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
     },
-    "node_modules/react-overlays": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.7.4.tgz",
-      "integrity": "sha512-7vsooMx3siLAuEfTs8FYeP/lAORWWFXTO8PON3KgX0Htq1Oa+po6ioSjGyO0/GO5CVSMNhpWt6V2opeexHgBuQ==",
-      "dependencies": {
-        "classnames": "^2.2.5",
-        "dom-helpers": "^3.2.1",
-        "prop-types": "^15.5.10",
-        "prop-types-extra": "^1.0.1",
-        "warning": "^3.0.0"
-      },
-      "peerDependencies": {
-        "react": "^0.14.9 || >=15.3.0",
-        "react-dom": "^0.14.9 || >=15.3.0"
-      }
-    },
     "node_modules/react-redux": {
       "version": "8.0.2",
       "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.2.tgz",
@@ -15970,6 +15876,30 @@
         "react-dom": ">=16"
       }
     },
+    "node_modules/react-transition-group": {
+      "version": "4.4.5",
+      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+      "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+      "dependencies": {
+        "@babel/runtime": "^7.5.5",
+        "dom-helpers": "^5.0.1",
+        "loose-envify": "^1.4.0",
+        "prop-types": "^15.6.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0",
+        "react-dom": ">=16.6.0"
+      }
+    },
+    "node_modules/react-transition-group/node_modules/dom-helpers": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+      "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+      "dependencies": {
+        "@babel/runtime": "^7.8.7",
+        "csstype": "^3.0.2"
+      }
+    },
     "node_modules/readable-stream": {
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -15988,7 +15918,6 @@
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
       "dependencies": {
         "picomatch": "^2.2.1"
       },
@@ -16058,9 +15987,9 @@
       }
     },
     "node_modules/regenerator-runtime": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
-      "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
+      "version": "0.13.11",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
     },
     "node_modules/regenerator-transform": {
       "version": "0.15.0",
@@ -16367,8 +16296,7 @@
     "node_modules/safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-      "dev": true
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
     },
     "node_modules/safer-buffer": {
       "version": "2.1.2",
@@ -16376,6 +16304,59 @@
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
       "dev": true
     },
+    "node_modules/sass": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.0.tgz",
+      "integrity": "sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==",
+      "dependencies": {
+        "chokidar": ">=3.0.0 <4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
+      },
+      "bin": {
+        "sass": "sass.js"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/sass-loader": {
+      "version": "13.2.0",
+      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.2.0.tgz",
+      "integrity": "sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg==",
+      "dependencies": {
+        "klona": "^2.0.4",
+        "neo-async": "^2.6.2"
+      },
+      "engines": {
+        "node": ">= 14.15.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "fibers": ">= 3.1.0",
+        "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0",
+        "sass": "^1.3.0",
+        "sass-embedded": "*",
+        "webpack": "^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "fibers": {
+          "optional": true
+        },
+        "node-sass": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "sass-embedded": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/saxes": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
@@ -16453,9 +16434,9 @@
       }
     },
     "node_modules/semver": {
-      "version": "7.3.7",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-      "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+      "version": "7.3.8",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
       "dependencies": {
         "lru-cache": "^6.0.0"
       },
@@ -16498,7 +16479,6 @@
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
       "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
-      "dev": true,
       "dependencies": {
         "randombytes": "^2.1.0"
       }
@@ -16739,7 +16719,6 @@
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -16748,7 +16727,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
       "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
-      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -17328,7 +17306,6 @@
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
       "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
-      "dev": true,
       "engines": {
         "node": ">=6"
       }
@@ -17370,7 +17347,6 @@
       "version": "5.14.2",
       "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
       "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
-      "dev": true,
       "dependencies": {
         "@jridgewell/source-map": "^0.3.2",
         "acorn": "^8.5.0",
@@ -17388,7 +17364,6 @@
       "version": "5.3.6",
       "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz",
       "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==",
-      "dev": true,
       "dependencies": {
         "@jridgewell/trace-mapping": "^0.3.14",
         "jest-worker": "^27.4.5",
@@ -17421,14 +17396,12 @@
     "node_modules/terser-webpack-plugin/node_modules/@types/json-schema": {
       "version": "7.0.11",
       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
-      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
-      "dev": true
+      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
     },
     "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
       "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-      "dev": true,
       "dependencies": {
         "@types/json-schema": "^7.0.8",
         "ajv": "^6.12.5",
@@ -17445,14 +17418,12 @@
     "node_modules/terser/node_modules/commander": {
       "version": "2.20.3",
       "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-      "dev": true
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
     },
     "node_modules/terser/node_modules/source-map-support": {
       "version": "0.5.21",
       "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
       "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
-      "dev": true,
       "dependencies": {
         "buffer-from": "^1.0.0",
         "source-map": "^0.6.0"
@@ -17535,7 +17506,6 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
       "dependencies": {
         "is-number": "^7.0.0"
       },
@@ -17567,18 +17537,12 @@
     "node_modules/tr46": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
-      "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+      "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
       "dev": true,
       "dependencies": {
         "punycode": "^2.1.0"
       }
     },
-    "node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "dev": true
-    },
     "node_modules/type-check": {
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
@@ -17650,14 +17614,17 @@
       }
     },
     "node_modules/uncontrollable": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz",
-      "integrity": "sha1-4DWCkSUuGGUiLZCTmxny9J+Bwak=",
+      "version": "7.2.1",
+      "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz",
+      "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==",
       "dependencies": {
-        "invariant": "^2.1.0"
+        "@babel/runtime": "^7.6.3",
+        "@types/react": ">=16.9.11",
+        "invariant": "^2.2.4",
+        "react-lifecycles-compat": "^3.0.4"
       },
       "peerDependencies": {
-        "react": ">=0.11.0"
+        "react": ">=15.0.0"
       }
     },
     "node_modules/underscore": {
@@ -17742,10 +17709,9 @@
       }
     },
     "node_modules/update-browserslist-db": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz",
-      "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==",
-      "dev": true,
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
+      "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
       "funding": [
         {
           "type": "opencollective",
@@ -17771,7 +17737,6 @@
       "version": "4.4.1",
       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
       "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
       "dependencies": {
         "punycode": "^2.1.0"
       }
@@ -17898,19 +17863,10 @@
         "makeerror": "1.0.12"
       }
     },
-    "node_modules/warning": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
-      "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
-      "dependencies": {
-        "loose-envify": "^1.0.0"
-      }
-    },
     "node_modules/watchpack": {
       "version": "2.4.0",
       "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
       "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
-      "dev": true,
       "dependencies": {
         "glob-to-regexp": "^0.4.1",
         "graceful-fs": "^4.1.2"
@@ -17944,10 +17900,9 @@
       "dev": true
     },
     "node_modules/webpack": {
-      "version": "5.76.2",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
-      "integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
-      "dev": true,
+      "version": "5.76.3",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
+      "integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
       "dependencies": {
         "@types/eslint-scope": "^3.7.3",
         "@types/estree": "^0.0.51",
@@ -18283,7 +18238,6 @@
       "version": "3.2.3",
       "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
       "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
-      "dev": true,
       "engines": {
         "node": ">=10.13.0"
       }
@@ -18291,20 +18245,17 @@
     "node_modules/webpack/node_modules/@types/estree": {
       "version": "0.0.51",
       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
-      "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
-      "dev": true
+      "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ=="
     },
     "node_modules/webpack/node_modules/@types/json-schema": {
       "version": "7.0.11",
       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
-      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
-      "dev": true
+      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
     },
     "node_modules/webpack/node_modules/schema-utils": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
       "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-      "dev": true,
       "dependencies": {
         "@types/json-schema": "^7.0.8",
         "ajv": "^6.12.5",
@@ -19947,11 +19898,11 @@
       }
     },
     "@babel/runtime": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz",
-      "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==",
+      "version": "7.20.13",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz",
+      "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==",
       "requires": {
-        "regenerator-runtime": "^0.13.4"
+        "regenerator-runtime": "^0.13.11"
       }
     },
     "@babel/template": {
@@ -20744,7 +20695,6 @@
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
       "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
-      "dev": true,
       "requires": {
         "@jridgewell/set-array": "^1.0.1",
         "@jridgewell/sourcemap-codec": "^1.4.10",
@@ -20754,20 +20704,17 @@
     "@jridgewell/resolve-uri": {
       "version": "3.0.5",
       "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
-      "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==",
-      "dev": true
+      "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew=="
     },
     "@jridgewell/set-array": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
-      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
-      "dev": true
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
     },
     "@jridgewell/source-map": {
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
       "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
-      "dev": true,
       "requires": {
         "@jridgewell/gen-mapping": "^0.3.0",
         "@jridgewell/trace-mapping": "^0.3.9"
@@ -20776,14 +20723,12 @@
     "@jridgewell/sourcemap-codec": {
       "version": "1.4.11",
       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
-      "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==",
-      "dev": true
+      "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg=="
     },
     "@jridgewell/trace-mapping": {
       "version": "0.3.15",
       "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz",
       "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==",
-      "dev": true,
       "requires": {
         "@jridgewell/resolve-uri": "^3.0.3",
         "@jridgewell/sourcemap-codec": "^1.4.10"
@@ -20842,6 +20787,62 @@
         "fastq": "^1.6.0"
       }
     },
+    "@popperjs/core": {
+      "version": "2.11.6",
+      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
+      "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw=="
+    },
+    "@react-aria/ssr": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.4.1.tgz",
+      "integrity": "sha512-NmhoilMDyIfQiOSdQgxpVH2tC2u85Y0mVijtBNbI9kcDYLEiW/r6vKYVKtkyU+C4qobXhGMPfZ70PTc0lysSVA==",
+      "requires": {
+        "@swc/helpers": "^0.4.14"
+      }
+    },
+    "@restart/hooks": {
+      "version": "0.4.8",
+      "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.8.tgz",
+      "integrity": "sha512-Ivvp1FZ0Lja80iUTYAhbzy+stxwO7FbPHP95ypCtIh0wyOLiayQywXhVJ2ZYP5S1AjW2GmKHeRU4UglMwTG2sA==",
+      "requires": {
+        "dequal": "^2.0.2"
+      }
+    },
+    "@restart/ui": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.5.4.tgz",
+      "integrity": "sha512-ziNtXY2PrjXrRUfR1D/ry1v1i5IF+kfMcH9d1kIcU2lOELfmDsVb+fzbyEDz3yKvKuqkphTunVDuLdYRJ0YsAg==",
+      "requires": {
+        "@babel/runtime": "^7.20.7",
+        "@popperjs/core": "^2.11.6",
+        "@react-aria/ssr": "^3.4.1",
+        "@restart/hooks": "^0.4.7",
+        "@types/warning": "^3.0.0",
+        "dequal": "^2.0.3",
+        "dom-helpers": "^5.2.0",
+        "uncontrollable": "^7.2.1",
+        "warning": "^4.0.3"
+      },
+      "dependencies": {
+        "dom-helpers": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+          "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+          "requires": {
+            "@babel/runtime": "^7.8.7",
+            "csstype": "^3.0.2"
+          }
+        },
+        "warning": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
+          "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
+          "requires": {
+            "loose-envify": "^1.0.0"
+          }
+        }
+      }
+    },
     "@sinclair/typebox": {
       "version": "0.24.51",
       "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz",
@@ -20894,6 +20895,21 @@
       "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==",
       "dev": true
     },
+    "@swc/helpers": {
+      "version": "0.4.14",
+      "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz",
+      "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==",
+      "requires": {
+        "tslib": "^2.4.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.5.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+          "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
+        }
+      }
+    },
     "@testim/chrome-version": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.2.tgz",
@@ -20989,7 +21005,6 @@
       "version": "8.4.6",
       "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz",
       "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==",
-      "dev": true,
       "requires": {
         "@types/estree": "*",
         "@types/json-schema": "*"
@@ -20999,7 +21014,6 @@
       "version": "3.7.4",
       "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
       "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
-      "dev": true,
       "requires": {
         "@types/eslint": "*",
         "@types/estree": "*"
@@ -21008,8 +21022,7 @@
     "@types/estree": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
-      "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
-      "dev": true
+      "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ=="
     },
     "@types/express": {
       "version": "4.17.13",
@@ -21122,8 +21135,7 @@
     "@types/json-schema": {
       "version": "7.0.7",
       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz",
-      "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==",
-      "dev": true
+      "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA=="
     },
     "@types/mime": {
       "version": "3.0.1",
@@ -21134,8 +21146,7 @@
     "@types/node": {
       "version": "17.0.9",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.9.tgz",
-      "integrity": "sha512-5dNBXu/FOER+EXnyah7rn8xlNrfMOQb/qXnw4NQgLkCygKBKhdmF/CA5oXVOKZLBEahw8s2WP9LxIcN/oDDRgQ==",
-      "dev": true
+      "integrity": "sha512-5dNBXu/FOER+EXnyah7rn8xlNrfMOQb/qXnw4NQgLkCygKBKhdmF/CA5oXVOKZLBEahw8s2WP9LxIcN/oDDRgQ=="
     },
     "@types/prettier": {
       "version": "2.7.1",
@@ -21170,6 +21181,14 @@
         "csstype": "^3.0.2"
       }
     },
+    "@types/react-transition-group": {
+      "version": "4.4.5",
+      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
+      "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
+      "requires": {
+        "@types/react": "*"
+      }
+    },
     "@types/retry": {
       "version": "0.12.0",
       "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
@@ -21225,6 +21244,11 @@
       "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
       "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
     },
+    "@types/warning": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
+      "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA=="
+    },
     "@types/ws": {
       "version": "8.5.3",
       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
@@ -21269,7 +21293,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
       "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
-      "dev": true,
       "requires": {
         "@webassemblyjs/helper-numbers": "1.11.1",
         "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
@@ -21278,26 +21301,22 @@
     "@webassemblyjs/floating-point-hex-parser": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
-      "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
-      "dev": true
+      "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ=="
     },
     "@webassemblyjs/helper-api-error": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
-      "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
-      "dev": true
+      "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg=="
     },
     "@webassemblyjs/helper-buffer": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
-      "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
-      "dev": true
+      "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA=="
     },
     "@webassemblyjs/helper-numbers": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
       "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
-      "dev": true,
       "requires": {
         "@webassemblyjs/floating-point-hex-parser": "1.11.1",
         "@webassemblyjs/helper-api-error": "1.11.1",
@@ -21307,14 +21326,12 @@
     "@webassemblyjs/helper-wasm-bytecode": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
-      "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
-      "dev": true
+      "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q=="
     },
     "@webassemblyjs/helper-wasm-section": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
       "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
-      "dev": true,
       "requires": {
         "@webassemblyjs/ast": "1.11.1",
         "@webassemblyjs/helper-buffer": "1.11.1",
@@ -21326,7 +21343,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
       "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
-      "dev": true,
       "requires": {
         "@xtuc/ieee754": "^1.2.0"
       }
@@ -21335,7 +21351,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
       "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
-      "dev": true,
       "requires": {
         "@xtuc/long": "4.2.2"
       }
@@ -21343,14 +21358,12 @@
     "@webassemblyjs/utf8": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
-      "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
-      "dev": true
+      "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ=="
     },
     "@webassemblyjs/wasm-edit": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
       "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
-      "dev": true,
       "requires": {
         "@webassemblyjs/ast": "1.11.1",
         "@webassemblyjs/helper-buffer": "1.11.1",
@@ -21366,7 +21379,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
       "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
-      "dev": true,
       "requires": {
         "@webassemblyjs/ast": "1.11.1",
         "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
@@ -21379,7 +21391,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
       "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
-      "dev": true,
       "requires": {
         "@webassemblyjs/ast": "1.11.1",
         "@webassemblyjs/helper-buffer": "1.11.1",
@@ -21391,7 +21402,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
       "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
-      "dev": true,
       "requires": {
         "@webassemblyjs/ast": "1.11.1",
         "@webassemblyjs/helper-api-error": "1.11.1",
@@ -21405,7 +21415,6 @@
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
       "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
-      "dev": true,
       "requires": {
         "@webassemblyjs/ast": "1.11.1",
         "@xtuc/long": "4.2.2"
@@ -21442,14 +21451,12 @@
     "@xtuc/ieee754": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
-      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
-      "dev": true
+      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
     },
     "@xtuc/long": {
       "version": "4.2.2",
       "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
-      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
-      "dev": true
+      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
     },
     "abab": {
       "version": "2.0.6",
@@ -21514,7 +21521,6 @@
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
       "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
-      "dev": true,
       "requires": {}
     },
     "acorn-jsx": {
@@ -21587,7 +21593,6 @@
       "version": "6.12.6",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
       "requires": {
         "fast-deep-equal": "^3.1.1",
         "fast-json-stable-stringify": "^2.0.0",
@@ -21628,7 +21633,6 @@
       "version": "3.5.2",
       "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
       "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "dev": true,
       "requires": {}
     },
     "ansi-align": {
@@ -21695,7 +21699,6 @@
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
       "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
-      "dev": true,
       "requires": {
         "normalize-path": "^3.0.0",
         "picomatch": "^2.0.4"
@@ -22405,27 +22408,6 @@
         "babel-preset-current-node-syntax": "^1.0.0"
       }
     },
-    "babel-runtime": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
-      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-      "requires": {
-        "core-js": "^2.4.0",
-        "regenerator-runtime": "^0.11.0"
-      },
-      "dependencies": {
-        "core-js": {
-          "version": "2.6.12",
-          "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
-          "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
-        },
-        "regenerator-runtime": {
-          "version": "0.11.1",
-          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
-        }
-      }
-    },
     "backbone": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.1.tgz",
@@ -22466,8 +22448,7 @@
     "binary-extensions": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
-      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-      "dev": true
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
     },
     "bl": {
       "version": "4.1.0",
@@ -22540,10 +22521,11 @@
       "dev": true
     },
     "bootstrap": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz",
-      "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==",
-      "dev": true
+      "version": "5.2.3",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz",
+      "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==",
+      "dev": true,
+      "requires": {}
     },
     "boxen": {
       "version": "5.1.2",
@@ -22632,7 +22614,6 @@
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
       "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "dev": true,
       "requires": {
         "fill-range": "^7.0.1"
       }
@@ -22644,15 +22625,14 @@
       "dev": true
     },
     "browserslist": {
-      "version": "4.21.3",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
-      "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==",
-      "dev": true,
+      "version": "4.21.5",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+      "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
       "requires": {
-        "caniuse-lite": "^1.0.30001370",
-        "electron-to-chromium": "^1.4.202",
-        "node-releases": "^2.0.6",
-        "update-browserslist-db": "^1.0.5"
+        "caniuse-lite": "^1.0.30001449",
+        "electron-to-chromium": "^1.4.284",
+        "node-releases": "^2.0.8",
+        "update-browserslist-db": "^1.0.10"
       }
     },
     "bser": {
@@ -22683,8 +22663,7 @@
     "buffer-from": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
-      "dev": true
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
     },
     "bytes": {
       "version": "3.0.0",
@@ -22732,10 +22711,9 @@
       "dev": true
     },
     "caniuse-lite": {
-      "version": "1.0.30001387",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001387.tgz",
-      "integrity": "sha512-fKDH0F1KOJvR+mWSOvhj8lVRr/Q/mc5u5nabU2vi1/sgvlSqEsE8dOq0Hy/BqVbDkCYQPRRHB1WRjW6PGB/7PA==",
-      "dev": true
+      "version": "1.0.30001450",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz",
+      "integrity": "sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew=="
     },
     "chai-nightwatch": {
       "version": "0.5.3",
@@ -22808,7 +22786,6 @@
       "version": "3.5.3",
       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
       "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "dev": true,
       "requires": {
         "anymatch": "~3.1.2",
         "braces": "~3.0.2",
@@ -22823,8 +22800,7 @@
     "chrome-trace-event": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
-      "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
-      "dev": true
+      "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg=="
     },
     "chromedriver": {
       "version": "105.0.0",
@@ -23074,15 +23050,6 @@
       "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
       "dev": true
     },
-    "copy-anything": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz",
-      "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==",
-      "dev": true,
-      "requires": {
-        "is-what": "^3.12.0"
-      }
-    },
     "core-js": {
       "version": "3.25.0",
       "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.0.tgz",
@@ -23381,6 +23348,11 @@
       "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
       "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
     },
+    "dequal": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+      "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="
+    },
     "destroy": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
@@ -23475,14 +23447,6 @@
         "utila": "~0.4"
       }
     },
-    "dom-helpers": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
-      "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==",
-      "requires": {
-        "@babel/runtime": "^7.1.2"
-      }
-    },
     "dom-serializer": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
@@ -23582,10 +23546,9 @@
       }
     },
     "electron-to-chromium": {
-      "version": "1.4.239",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.239.tgz",
-      "integrity": "sha512-XbhfzxPIFzMjJm17T7yUGZEyYh5XuUjrA/FQ7JUy2bEd4qQ7MvFTaKpZ6zXZog1cfVttESo2Lx0ctnf7eQOaAQ==",
-      "dev": true
+      "version": "1.4.286",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.286.tgz",
+      "integrity": "sha512-Vp3CVhmYpgf4iXNKAucoQUDcCrBQX3XLBtwgFqP9BUXuucgvAV9zWp1kYU7LL9j4++s9O+12cb3wMtN4SJy6UQ=="
     },
     "emittery": {
       "version": "0.13.1",
@@ -23622,7 +23585,6 @@
       "version": "5.10.0",
       "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
       "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
-      "dev": true,
       "requires": {
         "graceful-fs": "^4.2.4",
         "tapable": "^2.2.0"
@@ -23728,16 +23690,6 @@
         "object-is": "^1.1.2"
       }
     },
-    "errno": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
-      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "prr": "~1.0.1"
-      }
-    },
     "error-ex": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -23780,8 +23732,7 @@
     "es-module-lexer": {
       "version": "0.9.3",
       "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
-      "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
-      "dev": true
+      "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
     },
     "es-shim-unscopables": {
       "version": "1.0.0",
@@ -24391,7 +24342,6 @@
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
       "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-      "dev": true,
       "requires": {
         "esrecurse": "^4.3.0",
         "estraverse": "^4.1.1"
@@ -24560,7 +24510,6 @@
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "dev": true,
       "requires": {
         "estraverse": "^5.2.0"
       },
@@ -24568,16 +24517,14 @@
         "estraverse": {
           "version": "5.3.0",
           "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-          "dev": true
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
         }
       }
     },
     "estraverse": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-      "dev": true
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
     },
     "esutils": {
       "version": "2.0.3",
@@ -24604,8 +24551,7 @@
     "events": {
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
-      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
-      "dev": true
+      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
     },
     "execa": {
       "version": "5.1.1",
@@ -24776,8 +24722,7 @@
     "fast-deep-equal": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
     },
     "fast-glob": {
       "version": "3.2.11",
@@ -24795,8 +24740,7 @@
     "fast-json-stable-stringify": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
     },
     "fast-levenshtein": {
       "version": "2.0.6",
@@ -24865,9 +24809,9 @@
       },
       "dependencies": {
         "debug": {
-          "version": "4.3.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+          "version": "4.3.4",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
           "dev": true,
           "requires": {
             "ms": "2.1.2"
@@ -24884,12 +24828,6 @@
           "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz",
           "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==",
           "dev": true
-        },
-        "querystring": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
-          "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==",
-          "dev": true
         }
       }
     },
@@ -24970,7 +24908,6 @@
       "version": "7.0.1",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dev": true,
       "requires": {
         "to-regex-range": "^5.0.1"
       }
@@ -25158,7 +25095,6 @@
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
       "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
       "optional": true
     },
     "function-bind": {
@@ -25263,7 +25199,6 @@
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
       "requires": {
         "is-glob": "^4.0.1"
       }
@@ -25271,8 +25206,7 @@
     "glob-to-regexp": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
-      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
-      "dev": true
+      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
     },
     "global": {
       "version": "4.4.0",
@@ -25347,8 +25281,7 @@
     "graceful-fs": {
       "version": "4.2.10",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
-      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
-      "dev": true
+      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
     },
     "grapheme-splitter": {
       "version": "1.0.4",
@@ -26037,19 +25970,17 @@
       "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
       "dev": true
     },
-    "image-size": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
-      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
-      "dev": true,
-      "optional": true
-    },
     "immediate": {
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
       "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
       "dev": true
     },
+    "immutable": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.3.tgz",
+      "integrity": "sha512-IHpmvaOIX4VLJwPOuQr1NpeBr2ZG6vpIj3blsLVxXRWJscLioaJRStqC+NcBsLeCDsnGlPpXd5/WZmnE7MbsKA=="
+    },
     "import-fresh": {
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -26212,7 +26143,6 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
       "requires": {
         "binary-extensions": "^2.0.0"
       }
@@ -26256,8 +26186,7 @@
     "is-extglob": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-      "dev": true
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
     },
     "is-fullwidth-code-point": {
       "version": "3.0.0",
@@ -26274,7 +26203,6 @@
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
       "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-      "dev": true,
       "requires": {
         "is-extglob": "^2.1.1"
       }
@@ -26294,8 +26222,7 @@
     "is-number": {
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
     },
     "is-number-object": {
       "version": "1.0.5",
@@ -26426,12 +26353,6 @@
         "call-bind": "^1.0.2"
       }
     },
-    "is-what": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
-      "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
-      "dev": true
-    },
     "is-windows": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -27906,7 +27827,6 @@
       "version": "27.5.1",
       "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
       "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
-      "dev": true,
       "requires": {
         "@types/node": "*",
         "merge-stream": "^2.0.0",
@@ -27916,14 +27836,12 @@
         "has-flag": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
         },
         "supports-color": {
           "version": "8.1.1",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
           "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
-          "dev": true,
           "requires": {
             "has-flag": "^4.0.0"
           }
@@ -28069,14 +27987,12 @@
     "json-parse-even-better-errors": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
-      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-      "dev": true
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
     },
     "json-schema-traverse": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
     },
     "json-stable-stringify-without-jsonify": {
       "version": "1.0.1",
@@ -28201,11 +28117,6 @@
       "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
       "dev": true
     },
-    "keycode": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.1.tgz",
-      "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg=="
-    },
     "kind-of": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -28221,34 +28132,7 @@
     "klona": {
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz",
-      "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
-      "dev": true
-    },
-    "less": {
-      "version": "3.13.1",
-      "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
-      "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
-      "dev": true,
-      "requires": {
-        "copy-anything": "^2.0.1",
-        "errno": "^0.1.1",
-        "graceful-fs": "^4.1.2",
-        "image-size": "~0.5.0",
-        "make-dir": "^2.1.0",
-        "mime": "^1.4.1",
-        "native-request": "^1.0.5",
-        "source-map": "~0.6.0",
-        "tslib": "^1.10.0"
-      }
-    },
-    "less-loader": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.2.0.tgz",
-      "integrity": "sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==",
-      "dev": true,
-      "requires": {
-        "klona": "^2.0.4"
-      }
+      "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ=="
     },
     "leven": {
       "version": "3.1.0",
@@ -28314,8 +28198,7 @@
     "loader-runner": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
-      "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
-      "dev": true
+      "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg=="
     },
     "loader-utils": {
       "version": "2.0.4",
@@ -28492,7 +28375,7 @@
     "lodash.sortby": {
       "version": "4.7.0",
       "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
-      "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
+      "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
       "dev": true
     },
     "log-symbols": {
@@ -28664,8 +28547,7 @@
     "merge-stream": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-      "dev": true
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
     },
     "merge2": {
       "version": "1.4.1",
@@ -29078,13 +28960,6 @@
       "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
       "dev": true
     },
-    "native-request": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz",
-      "integrity": "sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==",
-      "dev": true,
-      "optional": true
-    },
     "natural-compare": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -29120,8 +28995,7 @@
     "neo-async": {
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
-      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
-      "dev": true
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
     },
     "nightwatch": {
       "version": "2.4.1",
@@ -29358,10 +29232,9 @@
       "dev": true
     },
     "node-releases": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
-      "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
-      "dev": true
+      "version": "2.0.9",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz",
+      "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA=="
     },
     "nopt": {
       "version": "3.0.6",
@@ -29375,8 +29248,7 @@
     "normalize-path": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
     },
     "npm-run-path": {
       "version": "2.0.2",
@@ -30021,14 +29893,12 @@
     "picocolors": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
-      "dev": true
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
     },
     "picomatch": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
-      "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
-      "dev": true
+      "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw=="
     },
     "pify": {
       "version": "4.0.1",
@@ -30241,13 +30111,6 @@
       "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
       "dev": true
     },
-    "prr": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
-      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
-      "dev": true,
-      "optional": true
-    },
     "psl": {
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
@@ -30321,7 +30184,6 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
       "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-      "dev": true,
       "requires": {
         "safe-buffer": "^5.1.0"
       }
@@ -30370,16 +30232,6 @@
         "@babel/runtime": "^7.18.3",
         "react-is": "^16.12.0",
         "shallowequal": "^1.1.0"
-      },
-      "dependencies": {
-        "@babel/runtime": {
-          "version": "7.18.9",
-          "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz",
-          "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==",
-          "requires": {
-            "regenerator-runtime": "^0.13.4"
-          }
-        }
       }
     },
     "react": {
@@ -30405,20 +30257,41 @@
       }
     },
     "react-bootstrap": {
-      "version": "0.31.5",
-      "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.31.5.tgz",
-      "integrity": "sha512-xgDihgX4QvYHmHzL87faDBMDnGfYyqcrqV0TEbWY+JizePOG1vfb8M3xJN+6MJ3kUYqDtQSZ7v/Q6Y5YDrkMdA==",
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.7.0.tgz",
+      "integrity": "sha512-Jcrn6aUuRVBeSB6dzKODKZU1TONOdhAxu0IDm4Sv74SJUm98dMdhSotF2SNvFEADANoR+stV+7TK6SNX1wWu5w==",
       "requires": {
-        "babel-runtime": "^6.11.6",
-        "classnames": "^2.2.5",
-        "dom-helpers": "^3.2.0",
-        "invariant": "^2.2.1",
-        "keycode": "^2.1.2",
-        "prop-types": "^15.5.10",
-        "prop-types-extra": "^1.0.1",
-        "react-overlays": "^0.7.4",
-        "uncontrollable": "^4.1.0",
-        "warning": "^3.0.0"
+        "@babel/runtime": "^7.17.2",
+        "@restart/hooks": "^0.4.6",
+        "@restart/ui": "^1.4.1",
+        "@types/react-transition-group": "^4.4.4",
+        "classnames": "^2.3.1",
+        "dom-helpers": "^5.2.1",
+        "invariant": "^2.2.4",
+        "prop-types": "^15.8.1",
+        "prop-types-extra": "^1.1.0",
+        "react-transition-group": "^4.4.2",
+        "uncontrollable": "^7.2.1",
+        "warning": "^4.0.3"
+      },
+      "dependencies": {
+        "dom-helpers": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+          "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+          "requires": {
+            "@babel/runtime": "^7.8.7",
+            "csstype": "^3.0.2"
+          }
+        },
+        "warning": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
+          "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
+          "requires": {
+            "loose-envify": "^1.0.0"
+          }
+        }
       }
     },
     "react-dom": {
@@ -30445,6 +30318,11 @@
       "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
       "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
     },
+    "react-lifecycles-compat": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+      "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
+    },
     "react-motion": {
       "version": "0.5.2",
       "resolved": "https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz",
@@ -30462,18 +30340,6 @@
         }
       }
     },
-    "react-overlays": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.7.4.tgz",
-      "integrity": "sha512-7vsooMx3siLAuEfTs8FYeP/lAORWWFXTO8PON3KgX0Htq1Oa+po6ioSjGyO0/GO5CVSMNhpWt6V2opeexHgBuQ==",
-      "requires": {
-        "classnames": "^2.2.5",
-        "dom-helpers": "^3.2.1",
-        "prop-types": "^15.5.10",
-        "prop-types-extra": "^1.0.1",
-        "warning": "^3.0.0"
-      }
-    },
     "react-redux": {
       "version": "8.0.2",
       "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.2.tgz",
@@ -30524,6 +30390,28 @@
         "clsx": "^1.1.1"
       }
     },
+    "react-transition-group": {
+      "version": "4.4.5",
+      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+      "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+      "requires": {
+        "@babel/runtime": "^7.5.5",
+        "dom-helpers": "^5.0.1",
+        "loose-envify": "^1.4.0",
+        "prop-types": "^15.6.2"
+      },
+      "dependencies": {
+        "dom-helpers": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+          "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+          "requires": {
+            "@babel/runtime": "^7.8.7",
+            "csstype": "^3.0.2"
+          }
+        }
+      }
+    },
     "readable-stream": {
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -30539,7 +30427,6 @@
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
       "requires": {
         "picomatch": "^2.2.1"
       }
@@ -30598,9 +30485,9 @@
       }
     },
     "regenerator-runtime": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
-      "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
+      "version": "0.13.11",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
     },
     "regenerator-transform": {
       "version": "0.15.0",
@@ -30834,8 +30721,7 @@
     "safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-      "dev": true
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
     },
     "safer-buffer": {
       "version": "2.1.2",
@@ -30843,6 +30729,25 @@
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
       "dev": true
     },
+    "sass": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.0.tgz",
+      "integrity": "sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==",
+      "requires": {
+        "chokidar": ">=3.0.0 <4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
+      }
+    },
+    "sass-loader": {
+      "version": "13.2.0",
+      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.2.0.tgz",
+      "integrity": "sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg==",
+      "requires": {
+        "klona": "^2.0.4",
+        "neo-async": "^2.6.2"
+      }
+    },
     "saxes": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
@@ -30904,9 +30809,9 @@
       }
     },
     "semver": {
-      "version": "7.3.7",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-      "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+      "version": "7.3.8",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
       "requires": {
         "lru-cache": "^6.0.0"
       }
@@ -30942,7 +30847,6 @@
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
       "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
-      "dev": true,
       "requires": {
         "randombytes": "^2.1.0"
       }
@@ -31145,14 +31049,12 @@
     "source-map": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
     },
     "source-map-js": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
-      "dev": true
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
     },
     "source-map-support": {
       "version": "0.5.19",
@@ -31572,8 +31474,7 @@
     "tapable": {
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
-      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
-      "dev": true
+      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="
     },
     "tcp-port-used": {
       "version": "1.0.2",
@@ -31606,7 +31507,6 @@
       "version": "5.14.2",
       "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
       "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
-      "dev": true,
       "requires": {
         "@jridgewell/source-map": "^0.3.2",
         "acorn": "^8.5.0",
@@ -31617,14 +31517,12 @@
         "commander": {
           "version": "2.20.3",
           "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-          "dev": true
+          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
         },
         "source-map-support": {
           "version": "0.5.21",
           "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
           "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
-          "dev": true,
           "requires": {
             "buffer-from": "^1.0.0",
             "source-map": "^0.6.0"
@@ -31636,7 +31534,6 @@
       "version": "5.3.6",
       "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz",
       "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==",
-      "dev": true,
       "requires": {
         "@jridgewell/trace-mapping": "^0.3.14",
         "jest-worker": "^27.4.5",
@@ -31648,14 +31545,12 @@
         "@types/json-schema": {
           "version": "7.0.11",
           "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
-          "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
-          "dev": true
+          "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
         },
         "schema-utils": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
           "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-          "dev": true,
           "requires": {
             "@types/json-schema": "^7.0.8",
             "ajv": "^6.12.5",
@@ -31728,7 +31623,6 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
       "requires": {
         "is-number": "^7.0.0"
       }
@@ -31751,18 +31645,12 @@
     "tr46": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
-      "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+      "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
       "dev": true,
       "requires": {
         "punycode": "^2.1.0"
       }
     },
-    "tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "dev": true
-    },
     "type-check": {
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
@@ -31813,11 +31701,14 @@
       "dev": true
     },
     "uncontrollable": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz",
-      "integrity": "sha1-4DWCkSUuGGUiLZCTmxny9J+Bwak=",
+      "version": "7.2.1",
+      "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz",
+      "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==",
       "requires": {
-        "invariant": "^2.1.0"
+        "@babel/runtime": "^7.6.3",
+        "@types/react": ">=16.9.11",
+        "invariant": "^2.2.4",
+        "react-lifecycles-compat": "^3.0.4"
       }
     },
     "underscore": {
@@ -31883,10 +31774,9 @@
       "dev": true
     },
     "update-browserslist-db": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz",
-      "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==",
-      "dev": true,
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
+      "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
       "requires": {
         "escalade": "^3.1.1",
         "picocolors": "^1.0.0"
@@ -31896,7 +31786,6 @@
       "version": "4.4.1",
       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
       "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
       "requires": {
         "punycode": "^2.1.0"
       }
@@ -32005,19 +31894,10 @@
         "makeerror": "1.0.12"
       }
     },
-    "warning": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
-      "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
-      "requires": {
-        "loose-envify": "^1.0.0"
-      }
-    },
     "watchpack": {
       "version": "2.4.0",
       "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
       "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
-      "dev": true,
       "requires": {
         "glob-to-regexp": "^0.4.1",
         "graceful-fs": "^4.1.2"
@@ -32048,10 +31928,9 @@
       "dev": true
     },
     "webpack": {
-      "version": "5.76.2",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
-      "integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
-      "dev": true,
+      "version": "5.76.3",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
+      "integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
       "requires": {
         "@types/eslint-scope": "^3.7.3",
         "@types/estree": "^0.0.51",
@@ -32082,20 +31961,17 @@
         "@types/estree": {
           "version": "0.0.51",
           "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
-          "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
-          "dev": true
+          "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ=="
         },
         "@types/json-schema": {
           "version": "7.0.11",
           "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
-          "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
-          "dev": true
+          "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
         },
         "schema-utils": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
           "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-          "dev": true,
           "requires": {
             "@types/json-schema": "^7.0.8",
             "ajv": "^6.12.5",
@@ -32304,8 +32180,7 @@
     "webpack-sources": {
       "version": "3.2.3",
       "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
-      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
-      "dev": true
+      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="
     },
     "websocket-driver": {
       "version": "0.7.4",
diff --git a/package.json b/package.json
index 1f532eb..e0c2097 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
     "babel-jest": "^29.3.1",
     "babel-loader": "^8.2.5",
     "babel-plugin-array-includes": "^2.0.3",
-    "bootstrap": "^3.4.1",
+    "bootstrap": "^5.2.3",
     "chromedriver": "^105.0.0",
     "css-loader": "^6.7.1",
     "enzyme": "^3.11.0",
@@ -49,8 +49,6 @@
     "html-webpack-plugin": "^5.5.0",
     "jest": "^29.3.1",
     "jest-environment-jsdom": "^29.3.1",
-    "less": "^3.13.1",
-    "less-loader": "^10.2.0",
     "mini-css-extract-plugin": "^2.6.1",
     "mock-local-storage": "^1.1.23",
     "nightwatch": "^2.3.3",
@@ -85,10 +83,9 @@
     "rc-slider": "^10.0.1",
     "react": "^16.14.0",
     "react-ace": "^10.1.0",
-    "react-bootstrap": "^0.31.3",
+    "react-bootstrap": "^2.7.0",
     "react-dom": "^16.14.0",
     "react-motion": "^0.5.0",
-    "react-overlays": "^0.7.0",
     "react-redux": "^8.0.2",
     "react-select": "^1.3.0",
     "react-toastify": "^8.2.0",
@@ -96,6 +93,8 @@
     "redux-thunk": "^2.4.1",
     "regenerator-runtime": "^0.13.9",
     "rxjs": "^7.5.6",
+    "sass": "^1.58.0",
+    "sass-loader": "^13.2.0",
     "semver": "^7.3.7",
     "send": "^0.18.0",
     "url": "^0.11.0",
diff --git a/settings.json.default.json b/settings.json.default.json
index 28ee240..f594968 100644
--- a/settings.json.default.json
+++ b/settings.json.default.json
@@ -25,7 +25,8 @@
           "title": "Project Fauxton",
           "generationLabel": "Fauxton Dev",
           "largeLogoPath": "../../../../../assets/img/CouchDB-negative-logo.png",
-          "smallLogoPath": "../../../../../assets/img/couchdb-logo.png"
+          "smallLogoPath": "../../../../../assets/img/couchdb-logo.png",
+          "scss_overrides": []
         },
         "app": {
           "root": "/",
@@ -40,7 +41,8 @@
           "title": "Project Fauxton",
           "generationLabel": "Fauxton Release",
           "largeLogoPath": "../../../../../assets/img/CouchDB-negative-logo.png",
-          "smallLogoPath": "../../../../../assets/img/couchdb-logo.png"
+          "smallLogoPath": "../../../../../assets/img/couchdb-logo.png",
+          "scss_overrides": []
         },
         "app": {
           "root": "/",
@@ -55,7 +57,8 @@
           "title": "Project Fauxton",
           "generationLabel": "Fauxton Couchapp",
           "largeLogoPath": "../../../../../assets/img/CouchDB-negative-logo.png",
-          "smallLogoPath": "../../../../../assets/img/couchdb-logo.png"
+          "smallLogoPath": "../../../../../assets/img/couchdb-logo.png",
+          "scss_overrides": []
         },
         "app": {
           "root": "/",
diff --git a/styleguide.md b/styleguide.md
index 9d11b3a..b804e27 100644
--- a/styleguide.md
+++ b/styleguide.md
@@ -11,7 +11,7 @@
 
 - [Javascript](#js)
 - [HTML](#html)
-- [CSS / Less](#css)
+- [CSS / SCSS](#css)
 
 
 <a name="js" />
@@ -236,9 +236,9 @@
 
 <a name="css" />
 
-## CSS / Less
+## CSS / SCSS
 
-We use Less to generate our CSS.
+We use SCSS to generate our CSS.
 
 #### Indentation / Whitespace
 - Indent using 2 spaces. Don’t use tabs.
diff --git a/tasks/fauxton.js b/tasks/fauxton.js
index 1a6cd0b..70d4b42 100644
--- a/tasks/fauxton.js
+++ b/tasks/fauxton.js
@@ -56,21 +56,29 @@
     grunt.file.write(dest, tmpl({deps: deps}));
   });
 
-  grunt.registerMultiTask('gen_initialize', 'Generate the app.js file', function () {
-    var _ = grunt.util._,
-        settings = this.data,
-        template = 'app/initialize.js.underscore',
-        dest = 'app/initialize.js',
-        tmpl = _.template(grunt.file.read(template)),
-        app = {};
-
+  grunt.registerMultiTask('gen_initialize', 'Generate app/initialize.js and assets/scss/_variables_overrides.sccs', function () {
+    const _ = grunt.util._;
+    const settings = this.data;
+    const initTemplateFile = 'app/initialize.js.underscore';
+    const initDestination = 'app/initialize.js';
+    const initTemplate = _.template(grunt.file.read(initTemplateFile));
+    const app = {};
     _.defaults(app, settings.app, {
       root: '/',
       host: '../..',
       version: "0.0"
     });
+    grunt.file.write(initDestination, initTemplate(app));
 
-    grunt.file.write(dest, tmpl(app));
+    const overridesTemplateFile = 'assets/_variable_overrides.scss.underscore';
+    const overridesDestination = 'assets/scss/_variable_overrides.scss';
+    const overridesTemplate = _.template(grunt.file.read(overridesTemplateFile));
+    const overridesVariables = {
+      scss_overrides: settings.variables && settings.variables.scss_overrides,
+      largeLogoPath: settings.variables && settings.variables.largeLogoPath,
+      smallLogoPath: settings.variables && settings.variables.smallLogoPath
+    };
+    grunt.file.write(overridesDestination, overridesTemplate(overridesVariables));
   });
 
   // run every time nightwatch is executed from the command line
diff --git a/test/nightwatch_tests/custom-commands/auth/loginToGUI.js b/test/nightwatch_tests/custom-commands/auth/loginToGUI.js
index eb14595..0790066 100644
--- a/test/nightwatch_tests/custom-commands/auth/loginToGUI.js
+++ b/test/nightwatch_tests/custom-commands/auth/loginToGUI.js
@@ -12,7 +12,7 @@
 
 exports.command = LoginToGui;
 
-function LoginToGui (user, pw) {
+function LoginToGui(user, pw) {
 
   const client = this;
   const waitTime = client.globals.maxWaitTime;
@@ -33,7 +33,7 @@
     .waitForElementVisible('#password', waitTime, false)
     .setValue('.couch-login-wrapper #password', [password])
 
-    .clickWhenVisible('#submit')
+    .clickWhenVisible('#login-btn')
 
     .closeNotification()
     .waitForElementPresent('[data-name="jump-to-db"]', waitTime, false)
diff --git a/webpack.config.dev.js b/webpack.config.dev.js
index c0c0d77..53532ac 100644
--- a/webpack.config.dev.js
+++ b/webpack.config.dev.js
@@ -14,18 +14,23 @@
 const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 const ESLintPlugin = require('eslint-webpack-plugin');
 const path = require('path');
-const settings = require('./tasks/helper')
-  .init()
-  .readSettingsFile()
-  .template
-  .development;
+const settings = require('./tasks/helper').init().readSettingsFile()
+  .template.development;
 
 module.exports = {
-
   mode: 'development',
 
   entry: {
-    bundle: ['core-js/features/array', 'core-js/features/string/ends-with', 'core-js/features/string/starts-with', 'core-js/features/object', 'core-js/features/symbol', 'core-js/features/promise', 'regenerator-runtime/runtime', './app/main.js'] //Our starting point for our development.
+    bundle: [
+      'core-js/features/array',
+      'core-js/features/string/ends-with',
+      'core-js/features/string/starts-with',
+      'core-js/features/object',
+      'core-js/features/symbol',
+      'core-js/features/promise',
+      'regenerator-runtime/runtime',
+      './app/main.js',
+    ], //Our starting point for our development.
   },
 
   output: {
@@ -84,27 +89,27 @@
         }]
       },
       {
-        test: /\.less$/,
+        // We load Sass files through the extract text plugin.
+        test: /\.scss$/,
         use: [
           {
             loader: MiniCssExtractPlugin.loader,
             options: {
-              publicPath: '../../'
+              publicPath: "../../",
             },
           },
           "css-loader",
           {
-            loader: "less-loader",
+            loader: "sass-loader",
             options: {
-              lessOptions: {
-                modifyVars: {
-                  largeLogoPath: "'" + settings.variables.largeLogoPath + "'",
-                  smallLogoPath: "'" + settings.variables.smallLogoPath + "'"
-                }
-              }
-            }
-          }
-        ]
+              sassOptions: {
+                includePaths: ["node_modules"],
+              },
+              additionalData: `$largeLogoPath: "${settings.variables.largeLogoPath}"; $smallLogoPath: "${settings.variables.smallLogoPath}";`,
+              sourceMap: false,
+            },
+          },
+        ],
       },
       {
         test: /\.css$/,
diff --git a/webpack.config.release.js b/webpack.config.release.js
index 8bb3e34..d61f256 100644
--- a/webpack.config.release.js
+++ b/webpack.config.release.js
@@ -113,7 +113,7 @@
         }]
       },
       {
-        test: /\.less/,
+        test: /\.scss/,
         use: [
           {
             loader: MiniCssExtractPlugin.loader,
@@ -123,15 +123,14 @@
           },
           "css-loader",
           {
-            loader: "less-loader",
+            loader: "sass-loader",
             options: {
-              lessOptions: {
-                modifyVars: {
-                  largeLogoPath: "'" + settings.variables.largeLogoPath + "'",
-                  smallLogoPath: "'" + settings.variables.smallLogoPath + "'"
-                }
-              }
-            }
+              sassOptions: {
+                includePaths: ["node_modules"],
+              },
+              additionalData: `$largeLogoPath: "${settings.variables.largeLogoPath}"; $smallLogoPath: "${settings.variables.smallLogoPath}";`,
+              sourceMap: false,
+            },
           }
         ]
       },