Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/core/css
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@protonmail.com>2022-05-04 10:56:50 +0300
committerJohn Molakvoæ <skjnldsv@protonmail.com>2022-05-13 17:13:00 +0300
commit73918b8af9626d445f8b58faed15b32dc195ce7f (patch)
tree6eefbb1d5cd1b793de6224d635dfbb40b3271fee /core/css
parent3e29e0ad13b427b6ba4b62c7a35497e9a75de976 (diff)
Cleanup and compile
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Diffstat (limited to 'core/css')
-rw-r--r--core/css/apps.css1575
-rw-r--r--core/css/apps.css.map1
-rw-r--r--core/css/apps.scss10
-rw-r--r--core/css/fixes.css7
-rw-r--r--core/css/fixes.css.map1
-rw-r--r--core/css/functions.css38
-rw-r--r--core/css/functions.css.map1
-rw-r--r--core/css/global.css50
-rw-r--r--core/css/global.css.map1
-rw-r--r--core/css/header.css644
-rw-r--r--core/css/header.css.map1
-rw-r--r--core/css/icons.css206
-rw-r--r--core/css/icons.css.map1
-rw-r--r--core/css/inputs.css1039
-rw-r--r--core/css/inputs.css.map1
-rw-r--r--core/css/inputs.scss24
-rw-r--r--core/css/mobile.css198
-rw-r--r--core/css/mobile.css.map1
-rw-r--r--core/css/public.css72
-rw-r--r--core/css/public.css.map1
-rw-r--r--core/css/server.css5178
-rw-r--r--core/css/server.css.map1
-rw-r--r--core/css/styles.css1181
-rw-r--r--core/css/styles.css.map1
-rw-r--r--core/css/styles.scss9
-rw-r--r--core/css/systemtags.css86
-rw-r--r--core/css/systemtags.css.map1
-rw-r--r--core/css/toast.css111
-rw-r--r--core/css/toast.css.map1
-rw-r--r--core/css/tooltip.css125
-rw-r--r--core/css/tooltip.css.map1
-rw-r--r--core/css/variables.css24
-rw-r--r--core/css/variables.css.map1
-rw-r--r--core/css/whatsnew.css32
-rw-r--r--core/css/whatsnew.css.map1
35 files changed, 10603 insertions, 22 deletions
diff --git a/core/css/apps.css b/core/css/apps.css
new file mode 100644
index 00000000000..b875d08d628
--- /dev/null
+++ b/core/css/apps.css
@@ -0,0 +1,1575 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @copyright Copyright (c) 2016-2017, John Molakvoæ <skjnldsv@protonmail.com>
+ * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
+ * @copyright Copyright (c) 2016, Morris Jobke <hey@morrisjobke.de>
+ * @copyright Copyright (c) 2016, pgys <info@pexlab.space>
+ * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
+ * @copyright Copyright (c) 2016, Stefan Weil <sw@weilnetz.de>
+ * @copyright Copyright (c) 2016, Roeland Jago Douma <rullzer@owncloud.com>
+ * @copyright Copyright (c) 2016, jowi <sjw@gmx.ch>
+ * @copyright Copyright (c) 2015, Hendrik Leppelsack <hendrik@leppelsack.de>
+ * @copyright Copyright (c) 2015, Thomas Müller <thomas.mueller@tmit.eu>
+ * @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>
+ * @copyright Copyright (c) 2014-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ */
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @see core/src/icons.js
+ */
+/**
+ * SVG COLOR API
+ *
+ * @param string $icon the icon filename
+ * @param string $dir the icon folder within /core/img if $core or app name
+ * @param string $color the desired color in hexadecimal
+ * @param int $version the version of the file
+ * @param bool [$core] search icon in core
+ *
+ * @returns A background image with the url to the set to the requested icon.
+ */
+/* BASE STYLING ------------------------------------------------------------ */
+h2 {
+ font-weight: bold;
+ font-size: 20px;
+ margin-bottom: 12px;
+ line-height: 30px;
+ color: var(--color-text-light);
+}
+
+h3 {
+ font-size: 16px;
+ margin: 12px 0;
+ color: var(--color-text-light);
+}
+
+h4 {
+ font-size: 14px;
+}
+
+/* do not use italic typeface style, instead lighter color */
+em {
+ font-style: normal;
+ color: var(--color-text-lighter);
+}
+
+dl {
+ padding: 12px 0;
+}
+
+dt,
+dd {
+ display: inline-block;
+ padding: 12px;
+ padding-left: 0;
+}
+
+dt {
+ width: 130px;
+ white-space: nowrap;
+ text-align: right;
+}
+
+kbd {
+ padding: 4px 10px;
+ border: 1px solid #ccc;
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
+ border-radius: var(--border-radius);
+ display: inline-block;
+ white-space: nowrap;
+}
+
+/* APP STYLING ------------------------------------------------------------ */
+#content[class*=app-] * {
+ box-sizing: border-box;
+}
+
+/* APP-NAVIGATION ------------------------------------------------------------ */
+/* Navigation: folder like structure */
+#app-navigation:not(.vue) {
+ width: 300px;
+ position: fixed;
+ top: 50px;
+ left: 0;
+ z-index: 500;
+ overflow-y: auto;
+ overflow-x: hidden;
+ height: calc(100% - 50px);
+ box-sizing: border-box;
+ background-color: var(--color-main-background);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ border-right: 1px solid var(--color-border);
+ display: flex;
+ flex-direction: column;
+ flex-grow: 0;
+ flex-shrink: 0;
+ /* 'New' button */
+ /**
+ * Button styling for menu, edit and undo
+ */
+ /**
+ * Collapsible menus
+ */
+ /**
+ * App navigation utils, buttons and counters for drop down menu
+ */
+ /**
+ * Editable entries
+ */
+ /**
+ * Deleted entries with undo button
+ */
+ /**
+ * Common rules for animation of undo and edit entries
+ */
+ /**
+ * drag and drop
+ */
+}
+#app-navigation:not(.vue) .app-navigation-new {
+ display: block;
+ padding: 10px;
+}
+#app-navigation:not(.vue) .app-navigation-new button {
+ display: inline-block;
+ width: 100%;
+ padding: 10px;
+ padding-left: 34px;
+ background-position: 10px center;
+ text-align: left;
+ margin: 0;
+}
+#app-navigation:not(.vue) li {
+ position: relative;
+}
+#app-navigation:not(.vue) > ul {
+ position: relative;
+ height: 100%;
+ width: inherit;
+ overflow-x: hidden;
+ overflow-y: auto;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ /* Menu and submenu */
+}
+#app-navigation:not(.vue) > ul > li {
+ display: inline-flex;
+ flex-wrap: wrap;
+ order: 1;
+ flex-shrink: 0;
+ /* Pinned-to-bottom entries */
+ /* align loader */
+ /* hide deletion/collapse of subitems */
+ /* Second level nesting for lists */
+}
+#app-navigation:not(.vue) > ul > li.pinned {
+ order: 2;
+}
+#app-navigation:not(.vue) > ul > li.pinned.first-pinned {
+ margin-top: auto !important;
+}
+#app-navigation:not(.vue) > ul > li > .app-navigation-entry-deleted {
+ /* Ugly hack for overriding the main entry link */
+ padding-left: 44px !important;
+}
+#app-navigation:not(.vue) > ul > li > .app-navigation-entry-edit {
+ /* Ugly hack for overriding the main entry link */
+ /* align the input correctly with the link text
+ 44px-6px padding for the input */
+ padding-left: 38px !important;
+}
+#app-navigation:not(.vue) > ul > li a:hover,
+#app-navigation:not(.vue) > ul > li a:hover > a,
+#app-navigation:not(.vue) > ul > li a:focus,
+#app-navigation:not(.vue) > ul > li a:focus > a {
+ background-color: var(--color-background-hover);
+}
+#app-navigation:not(.vue) > ul > li.active,
+#app-navigation:not(.vue) > ul > li.active > a,
+#app-navigation:not(.vue) > ul > li a:active,
+#app-navigation:not(.vue) > ul > li a:active > a,
+#app-navigation:not(.vue) > ul > li a.selected,
+#app-navigation:not(.vue) > ul > li a.selected > a,
+#app-navigation:not(.vue) > ul > li a.active,
+#app-navigation:not(.vue) > ul > li a.active > a {
+ background-color: var(--color-primary-light);
+}
+#app-navigation:not(.vue) > ul > li.icon-loading-small:after {
+ left: 22px;
+ top: 22px;
+}
+#app-navigation:not(.vue) > ul > li.deleted > ul, #app-navigation:not(.vue) > ul > li.collapsible:not(.open) > ul {
+ display: none;
+}
+#app-navigation:not(.vue) > ul > li.app-navigation-caption {
+ font-weight: bold;
+ line-height: 44px;
+ padding: 0 44px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ box-shadow: none !important;
+ user-select: none;
+ pointer-events: none;
+}
+#app-navigation:not(.vue) > ul > li.app-navigation-caption:not(:first-child) {
+ margin-top: 22px;
+}
+#app-navigation:not(.vue) > ul > li > ul {
+ flex: 0 1 auto;
+ width: 100%;
+ position: relative;
+}
+#app-navigation:not(.vue) > ul > li > ul > li {
+ display: inline-flex;
+ flex-wrap: wrap;
+ padding-left: 44px;
+ /* align loader */
+}
+#app-navigation:not(.vue) > ul > li > ul > li:hover,
+#app-navigation:not(.vue) > ul > li > ul > li:hover > a, #app-navigation:not(.vue) > ul > li > ul > li:focus,
+#app-navigation:not(.vue) > ul > li > ul > li:focus > a {
+ background-color: var(--color-background-hover);
+}
+#app-navigation:not(.vue) > ul > li > ul > li.active,
+#app-navigation:not(.vue) > ul > li > ul > li.active > a,
+#app-navigation:not(.vue) > ul > li > ul > li a.selected,
+#app-navigation:not(.vue) > ul > li > ul > li a.selected > a {
+ background-color: var(--color-primary-light);
+}
+#app-navigation:not(.vue) > ul > li > ul > li.icon-loading-small:after {
+ left: 22px;
+ /* 44px / 2 */
+}
+#app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-deleted {
+ /* margin to keep active indicator visible */
+ margin-left: 4px;
+ padding-left: 84px;
+}
+#app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-edit {
+ /* margin to keep active indicator visible */
+ margin-left: 4px;
+ /* align the input correctly with the link text
+ 44px+44px-4px-6px padding for the input */
+ padding-left: 78px !important;
+}
+#app-navigation:not(.vue) > ul > li,
+#app-navigation:not(.vue) > ul > li > ul > li {
+ position: relative;
+ width: 100%;
+ box-sizing: border-box;
+ /* hide icons if loading */
+ /* Main entry link */
+ /* Bullet icon */
+ /* popover fix the flex positionning of the li parent */
+ /* show edit/undo field if editing/deleted */
+}
+#app-navigation:not(.vue) > ul > li.icon-loading-small > a,
+#app-navigation:not(.vue) > ul > li.icon-loading-small > .app-navigation-entry-bullet,
+#app-navigation:not(.vue) > ul > li > ul > li.icon-loading-small > a,
+#app-navigation:not(.vue) > ul > li > ul > li.icon-loading-small > .app-navigation-entry-bullet {
+ /* hide icon or bullet if loading state*/
+ background: transparent !important;
+}
+#app-navigation:not(.vue) > ul > li > a,
+#app-navigation:not(.vue) > ul > li > ul > li > a {
+ background-size: 16px 16px;
+ background-position: 14px center;
+ background-repeat: no-repeat;
+ display: block;
+ justify-content: space-between;
+ line-height: 44px;
+ min-height: 44px;
+ padding: 0 12px 0 14px;
+ overflow: hidden;
+ box-sizing: border-box;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ color: var(--color-main-text);
+ opacity: 0.8;
+ flex: 1 1 0px;
+ z-index: 100;
+ /* above the bullet to allow click*/
+ /* TODO: forbid using img as icon in menu? */
+ /* counter can also be inside the link */
+}
+#app-navigation:not(.vue) > ul > li > a.svg,
+#app-navigation:not(.vue) > ul > li > ul > li > a.svg {
+ padding: 0 12px 0 44px;
+}
+#app-navigation:not(.vue) > ul > li > a:first-child img,
+#app-navigation:not(.vue) > ul > li > ul > li > a:first-child img {
+ margin-right: 11px;
+ width: 16px;
+ height: 16px;
+ filter: var(--background-invert-if-dark);
+}
+#app-navigation:not(.vue) > ul > li > a > .app-navigation-entry-utils,
+#app-navigation:not(.vue) > ul > li > ul > li > a > .app-navigation-entry-utils {
+ display: inline-block;
+ float: right;
+}
+#app-navigation:not(.vue) > ul > li > a > .app-navigation-entry-utils .app-navigation-entry-utils-counter,
+#app-navigation:not(.vue) > ul > li > ul > li > a > .app-navigation-entry-utils .app-navigation-entry-utils-counter {
+ padding-right: 0 !important;
+}
+#app-navigation:not(.vue) > ul > li > .app-navigation-entry-bullet,
+#app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-bullet {
+ position: absolute;
+ display: block;
+ margin: 16px;
+ width: 12px;
+ height: 12px;
+ border: none;
+ border-radius: 50%;
+ cursor: pointer;
+ transition: background 100ms ease-in-out;
+}
+#app-navigation:not(.vue) > ul > li > .app-navigation-entry-bullet + a,
+#app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-bullet + a {
+ /* hide icon if bullet, can't have both */
+ background: transparent !important;
+}
+#app-navigation:not(.vue) > ul > li > .app-navigation-entry-menu,
+#app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-menu {
+ top: 44px;
+}
+#app-navigation:not(.vue) > ul > li.editing .app-navigation-entry-edit,
+#app-navigation:not(.vue) > ul > li > ul > li.editing .app-navigation-entry-edit {
+ opacity: 1;
+ z-index: 250;
+}
+#app-navigation:not(.vue) > ul > li.deleted .app-navigation-entry-deleted,
+#app-navigation:not(.vue) > ul > li > ul > li.deleted .app-navigation-entry-deleted {
+ transform: translateX(0);
+ z-index: 250;
+}
+#app-navigation:not(.vue).hidden {
+ display: none;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button > button,
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button {
+ border: 0;
+ opacity: 0.5;
+ background-color: transparent;
+ background-repeat: no-repeat;
+ background-position: center;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button > button:hover, #app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button > button:focus,
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover,
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus {
+ background-color: transparent;
+ opacity: 1;
+}
+#app-navigation:not(.vue) .collapsible {
+ /* Fallback for old collapse button.
+ TODO: to be removed. Leaved here for retro compatibility */
+ /* force padding on link no matter if 'a' has an icon class */
+}
+#app-navigation:not(.vue) .collapsible .collapse {
+ opacity: 0;
+ position: absolute;
+ width: 44px;
+ height: 44px;
+ margin: 0;
+ z-index: 110;
+ /* Needed for IE11; otherwise the button appears to the right of the
+ * link. */
+ left: 0;
+}
+#app-navigation:not(.vue) .collapsible:before {
+ position: absolute;
+ height: 44px;
+ width: 44px;
+ margin: 0;
+ padding: 0;
+ background: none;
+ /* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */
+ background-image: var(--icon-triangle-s-dark);
+ background-size: 16px;
+ background-repeat: no-repeat;
+ background-position: center;
+ border: none;
+ border-radius: 0;
+ outline: none !important;
+ box-shadow: none;
+ content: " ";
+ opacity: 0;
+ -webkit-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+ z-index: 105;
+ background-color: var(--color-background-hover);
+ border-radius: 50%;
+ transition: opacity 100ms ease-in-out;
+}
+#app-navigation:not(.vue) .collapsible > a:first-child {
+ padding-left: 44px;
+}
+#app-navigation:not(.vue) .collapsible:hover:before, #app-navigation:not(.vue) .collapsible:focus:before {
+ opacity: 1;
+}
+#app-navigation:not(.vue) .collapsible:hover > .app-navigation-entry-bullet, #app-navigation:not(.vue) .collapsible:focus > .app-navigation-entry-bullet {
+ background: transparent !important;
+}
+#app-navigation:not(.vue) .collapsible.open:before {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils {
+ flex: 0 1 auto;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils ul {
+ display: flex !important;
+ align-items: center;
+ justify-content: flex-end;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils li {
+ width: 44px !important;
+ height: 44px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils button {
+ height: 100%;
+ width: 100%;
+ margin: 0;
+ box-shadow: none;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button {
+ /* Prevent bg img override if an icon class is set */
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button button:not([class^=icon-]):not([class*=" icon-"]) {
+ /* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */
+ background-image: var(--icon-more-dark);
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:hover button, #app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:focus button {
+ background-color: transparent;
+ opacity: 1;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter {
+ overflow: hidden;
+ text-align: right;
+ font-size: 9pt;
+ line-height: 44px;
+ padding: 0 12px;
+ /* Same padding as all li > a in the app-navigation */
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted {
+ padding: 0;
+ text-align: center;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted span {
+ padding: 2px 5px;
+ border-radius: 10px;
+ background-color: var(--color-primary);
+ color: var(--color-primary-text);
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit {
+ padding-left: 5px;
+ padding-right: 5px;
+ display: block;
+ width: calc(100% - 1px);
+ /* Avoid border overlapping */
+ transition: opacity 250ms ease-in-out;
+ opacity: 0;
+ position: absolute;
+ background-color: var(--color-main-background);
+ z-index: -1;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit form,
+#app-navigation:not(.vue) .app-navigation-entry-edit div {
+ display: inline-flex;
+ width: 100%;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit input {
+ padding: 5px;
+ margin-right: 0;
+ height: 38px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit input:hover, #app-navigation:not(.vue) .app-navigation-entry-edit input:focus {
+ /* overlapp borders */
+ z-index: 1;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit input[type=text] {
+ width: 100%;
+ min-width: 0;
+ /* firefox hack: override auto */
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit button,
+#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]) {
+ width: 36px;
+ height: 38px;
+ flex: 0 0 36px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:last-child),
+#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:last-child) {
+ border-radius: 0 !important;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:first-child),
+#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:first-child) {
+ margin-left: -1px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit button:last-child,
+#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):last-child {
+ border-bottom-right-radius: var(--border-radius);
+ border-top-right-radius: var(--border-radius);
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+#app-navigation:not(.vue) .app-navigation-entry-deleted {
+ display: inline-flex;
+ padding-left: 44px;
+ transform: translateX(300px);
+}
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-description {
+ position: relative;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ flex: 1 1 0px;
+ line-height: 44px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button {
+ margin: 0;
+ height: 44px;
+ width: 44px;
+ line-height: 44px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover, #app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus {
+ opacity: 1;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit,
+#app-navigation:not(.vue) .app-navigation-entry-deleted {
+ width: calc(100% - 1px);
+ /* Avoid border overlapping */
+ transition: transform 250ms ease-in-out, opacity 250ms ease-in-out, z-index 250ms ease-in-out;
+ position: absolute;
+ left: 0;
+ background-color: var(--color-main-background);
+ box-sizing: border-box;
+}
+#app-navigation:not(.vue) .drag-and-drop {
+ -webkit-transition: padding-bottom 500ms ease 0s;
+ transition: padding-bottom 500ms ease 0s;
+ padding-bottom: 40px;
+}
+#app-navigation:not(.vue) .error {
+ color: var(--color-error);
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils ul,
+#app-navigation:not(.vue) .app-navigation-entry-menu ul {
+ list-style-type: none;
+}
+
+/* CONTENT --------------------------------------------------------- */
+#content {
+ box-sizing: border-box;
+ position: relative;
+ display: flex;
+ padding-top: 50px;
+ min-height: 100%;
+}
+
+/* APP-CONTENT AND WRAPPER ------------------------------------------ */
+/* Part where the content will be loaded into */
+/**
+ * !Important. We are defining the minimum requirement we want for flex
+ * Just before the mobile breakpoint we have variables.$breakpoint-mobile (1024px) - variables.$navigation-width
+ * -> 468px. In that case we want 200px for the list and 268px for the content
+ */
+#app-content {
+ z-index: 1000;
+ background-color: var(--color-main-background);
+ position: relative;
+ flex-basis: 100vw;
+ min-height: 100%;
+ /* margin if navigation element is here */
+ /* no top border for first settings item */
+ /* if app-content-list is present */
+}
+#app-navigation:not(.hidden) + #app-content {
+ margin-left: 300px;
+}
+#app-content > .section:first-child {
+ border-top: none;
+}
+#app-content #app-content-wrapper {
+ display: flex;
+ position: relative;
+ align-items: stretch;
+ /* make sure we have at least full height for loaders or such
+ no need for list/details since we have a flex stretch */
+ min-height: 100%;
+ /* CONTENT DETAILS AFTER LIST*/
+}
+#app-content #app-content-wrapper .app-content-details {
+ /* grow full width */
+ flex: 1 1 524px;
+}
+#app-content #app-content-wrapper .app-content-details #app-navigation-toggle-back {
+ display: none;
+}
+
+/* APP-SIDEBAR ------------------------------------------------------------ */
+/*
+ Sidebar: a sidebar to be used within #content
+ #app-content will be shrinked properly
+*/
+#app-sidebar {
+ width: 27vw;
+ min-width: 300px;
+ max-width: 500px;
+ display: block;
+ position: -webkit-sticky;
+ position: sticky;
+ top: 50px;
+ right: 0;
+ overflow-y: auto;
+ overflow-x: hidden;
+ z-index: 1500;
+ height: calc(100vh - 50px);
+ background: var(--color-main-background);
+ border-left: 1px solid var(--color-border);
+ flex-shrink: 0;
+}
+#app-sidebar.disappear {
+ display: none;
+}
+
+/* APP-SETTINGS ------------------------------------------------------------ */
+/* settings area */
+#app-settings {
+ margin-top: auto;
+}
+#app-settings.open #app-settings-content, #app-settings.opened #app-settings-content {
+ display: block;
+}
+
+#app-settings-content {
+ display: none;
+ padding: 10px;
+ background-color: var(--color-main-background);
+ /* restrict height of settings and make scrollable */
+ max-height: 300px;
+ overflow-y: auto;
+ box-sizing: border-box;
+ /* display input fields at full width */
+}
+#app-settings-content input[type=text] {
+ width: 93%;
+}
+#app-settings-content .info-text {
+ padding: 5px 0 7px 22px;
+ color: var(--color-text-lighter);
+}
+#app-settings-content input[type=checkbox].radio + label, #app-settings-content input[type=checkbox].checkbox + label, #app-settings-content input[type=radio].radio + label, #app-settings-content input[type=radio].checkbox + label {
+ display: inline-block;
+ width: 100%;
+ padding: 5px 0;
+}
+
+#app-settings-header {
+ box-sizing: border-box;
+ background-color: var(--color-main-background);
+}
+
+#app-settings-header .settings-button {
+ display: flex;
+ align-items: center;
+ height: 44px;
+ width: 100%;
+ padding: 0;
+ margin: 0;
+ background-color: var(--color-main-background);
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: left;
+ font-weight: normal;
+ font-size: 100%;
+ opacity: 0.8;
+ /* like app-navigation a */
+ color: var(--color-main-text);
+}
+#app-settings-header .settings-button.opened {
+ border-top: solid 1px var(--color-border);
+ background-color: var(--color-main-background);
+}
+#app-settings-header .settings-button:hover, #app-settings-header .settings-button:focus {
+ background-color: var(--color-background-hover);
+}
+#app-settings-header .settings-button::before {
+ background-image: var(--icon-settings-dark);
+ background-position: 14px center;
+ background-repeat: no-repeat;
+ content: "";
+ width: 44px;
+ height: 44px;
+ top: 0;
+ left: 0;
+ display: block;
+ filter: var(--background-invert-if-dark);
+}
+
+/* GENERAL SECTION ------------------------------------------------------------ */
+.section {
+ display: block;
+ padding: 30px;
+ margin-bottom: 24px;
+ /* slight position correction of checkboxes and radio buttons */
+}
+.section.hidden {
+ display: none !important;
+}
+.section input[type=checkbox], .section input[type=radio] {
+ vertical-align: -2px;
+ margin-right: 4px;
+}
+
+.sub-section {
+ position: relative;
+ margin-top: 10px;
+ margin-left: 27px;
+ margin-bottom: 10px;
+}
+
+.appear {
+ opacity: 1;
+ -webkit-transition: opacity 500ms ease 0s;
+ -moz-transition: opacity 500ms ease 0s;
+ -ms-transition: opacity 500ms ease 0s;
+ -o-transition: opacity 500ms ease 0s;
+ transition: opacity 500ms ease 0s;
+}
+.appear.transparent {
+ opacity: 0;
+}
+
+/* TABS ------------------------------------------------------------ */
+.tabHeaders {
+ display: flex;
+ margin-bottom: 16px;
+}
+.tabHeaders .tabHeader {
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ text-align: center;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ cursor: pointer;
+ color: var(--color-text-lighter);
+ margin-bottom: 1px;
+ padding: 5px;
+ /* Use same amount as sidebar padding */
+}
+.tabHeaders .tabHeader.hidden {
+ display: none;
+}
+.tabHeaders .tabHeader:first-child {
+ padding-left: 15px;
+}
+.tabHeaders .tabHeader:last-child {
+ padding-right: 15px;
+}
+.tabHeaders .tabHeader .icon {
+ display: inline-block;
+ width: 100%;
+ height: 16px;
+ background-size: 16px;
+ vertical-align: middle;
+ margin-top: -2px;
+ margin-right: 3px;
+ opacity: 0.7;
+ cursor: pointer;
+}
+.tabHeaders .tabHeader a {
+ color: var(--color-text-lighter);
+ margin-bottom: 1px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.tabHeaders .tabHeader.selected {
+ font-weight: bold;
+}
+.tabHeaders .tabHeader.selected, .tabHeaders .tabHeader:hover, .tabHeaders .tabHeader:focus {
+ margin-bottom: 0px;
+ color: var(--color-main-text);
+ border-bottom: 1px solid var(--color-text-lighter);
+}
+
+.tabsContainer {
+ clear: left;
+}
+.tabsContainer .tab {
+ padding: 0 15px 15px;
+}
+
+/* POPOVER MENU ------------------------------------------------------------ */
+.ie .bubble, .ie .bubble:after,
+.ie .popovermenu, .ie .popovermenu:after,
+.ie #app-navigation .app-navigation-entry-menu,
+.ie #app-navigation .app-navigation-entry-menu:after,
+.edge .bubble,
+.edge .bubble:after,
+.edge .popovermenu,
+.edge .popovermenu:after,
+.edge #app-navigation .app-navigation-entry-menu,
+.edge #app-navigation .app-navigation-entry-menu:after {
+ border: 1px solid var(--color-border);
+}
+
+.bubble,
+.app-navigation-entry-menu,
+.popovermenu {
+ position: absolute;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+ border-radius: var(--border-radius);
+ z-index: 110;
+ margin: 5px;
+ margin-top: -5px;
+ right: 0;
+ filter: drop-shadow(0 1px 3px var(--color-box-shadow));
+ display: none;
+ will-change: filter;
+ /* Center the popover */
+ /* Align the popover to the left */
+}
+.bubble:after,
+.app-navigation-entry-menu:after,
+.popovermenu:after {
+ bottom: 100%;
+ right: 7px;
+ /* change this to adjust the arrow position */
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ border-bottom-color: var(--color-main-background);
+ border-width: 9px;
+}
+.bubble.menu-center,
+.app-navigation-entry-menu.menu-center,
+.popovermenu.menu-center {
+ transform: translateX(50%);
+ right: 50%;
+ margin-right: 0;
+}
+.bubble.menu-center:after,
+.app-navigation-entry-menu.menu-center:after,
+.popovermenu.menu-center:after {
+ right: 50%;
+ transform: translateX(50%);
+}
+.bubble.menu-left,
+.app-navigation-entry-menu.menu-left,
+.popovermenu.menu-left {
+ right: auto;
+ left: 0;
+ margin-right: 0;
+}
+.bubble.menu-left:after,
+.app-navigation-entry-menu.menu-left:after,
+.popovermenu.menu-left:after {
+ left: 6px;
+ right: auto;
+}
+.bubble.open,
+.app-navigation-entry-menu.open,
+.popovermenu.open {
+ display: block;
+}
+.bubble.contactsmenu-popover,
+.app-navigation-entry-menu.contactsmenu-popover,
+.popovermenu.contactsmenu-popover {
+ margin: 0;
+}
+.bubble ul,
+.app-navigation-entry-menu ul,
+.popovermenu ul {
+ /* Overwrite #app-navigation > ul ul */
+ display: flex !important;
+ flex-direction: column;
+}
+.bubble li,
+.app-navigation-entry-menu li,
+.popovermenu li {
+ display: flex;
+ flex: 0 0 auto;
+ /* css hack, only first not hidden */
+}
+.bubble li.hidden,
+.app-navigation-entry-menu li.hidden,
+.popovermenu li.hidden {
+ display: none;
+}
+.bubble li > button,
+.bubble li > a,
+.bubble li > .menuitem,
+.app-navigation-entry-menu li > button,
+.app-navigation-entry-menu li > a,
+.app-navigation-entry-menu li > .menuitem,
+.popovermenu li > button,
+.popovermenu li > a,
+.popovermenu li > .menuitem {
+ cursor: pointer;
+ line-height: 44px;
+ border: 0;
+ border-radius: 0;
+ background-color: transparent;
+ display: flex;
+ align-items: flex-start;
+ height: auto;
+ margin: 0;
+ font-weight: normal;
+ box-shadow: none;
+ width: 100%;
+ color: var(--color-main-text);
+ white-space: nowrap;
+ /* prevent .action class to break the design */
+ /* Add padding if contains icon+text */
+ /* DEPRECATED! old img in popover fallback
+ * TODO: to remove */
+ /* checkbox/radio fixes */
+ /* no margin if hidden span before */
+ /* Inputs inside popover supports text, submit & reset */
+}
+.bubble li > button span[class^=icon-],
+.bubble li > button span[class*=" icon-"], .bubble li > button[class^=icon-], .bubble li > button[class*=" icon-"],
+.bubble li > a span[class^=icon-],
+.bubble li > a span[class*=" icon-"],
+.bubble li > a[class^=icon-],
+.bubble li > a[class*=" icon-"],
+.bubble li > .menuitem span[class^=icon-],
+.bubble li > .menuitem span[class*=" icon-"],
+.bubble li > .menuitem[class^=icon-],
+.bubble li > .menuitem[class*=" icon-"],
+.app-navigation-entry-menu li > button span[class^=icon-],
+.app-navigation-entry-menu li > button span[class*=" icon-"],
+.app-navigation-entry-menu li > button[class^=icon-],
+.app-navigation-entry-menu li > button[class*=" icon-"],
+.app-navigation-entry-menu li > a span[class^=icon-],
+.app-navigation-entry-menu li > a span[class*=" icon-"],
+.app-navigation-entry-menu li > a[class^=icon-],
+.app-navigation-entry-menu li > a[class*=" icon-"],
+.app-navigation-entry-menu li > .menuitem span[class^=icon-],
+.app-navigation-entry-menu li > .menuitem span[class*=" icon-"],
+.app-navigation-entry-menu li > .menuitem[class^=icon-],
+.app-navigation-entry-menu li > .menuitem[class*=" icon-"],
+.popovermenu li > button span[class^=icon-],
+.popovermenu li > button span[class*=" icon-"],
+.popovermenu li > button[class^=icon-],
+.popovermenu li > button[class*=" icon-"],
+.popovermenu li > a span[class^=icon-],
+.popovermenu li > a span[class*=" icon-"],
+.popovermenu li > a[class^=icon-],
+.popovermenu li > a[class*=" icon-"],
+.popovermenu li > .menuitem span[class^=icon-],
+.popovermenu li > .menuitem span[class*=" icon-"],
+.popovermenu li > .menuitem[class^=icon-],
+.popovermenu li > .menuitem[class*=" icon-"] {
+ min-width: 0;
+ /* Overwrite icons*/
+ min-height: 0;
+ background-position: 14px center;
+ background-size: 16px;
+}
+.bubble li > button span[class^=icon-],
+.bubble li > button span[class*=" icon-"],
+.bubble li > a span[class^=icon-],
+.bubble li > a span[class*=" icon-"],
+.bubble li > .menuitem span[class^=icon-],
+.bubble li > .menuitem span[class*=" icon-"],
+.app-navigation-entry-menu li > button span[class^=icon-],
+.app-navigation-entry-menu li > button span[class*=" icon-"],
+.app-navigation-entry-menu li > a span[class^=icon-],
+.app-navigation-entry-menu li > a span[class*=" icon-"],
+.app-navigation-entry-menu li > .menuitem span[class^=icon-],
+.app-navigation-entry-menu li > .menuitem span[class*=" icon-"],
+.popovermenu li > button span[class^=icon-],
+.popovermenu li > button span[class*=" icon-"],
+.popovermenu li > a span[class^=icon-],
+.popovermenu li > a span[class*=" icon-"],
+.popovermenu li > .menuitem span[class^=icon-],
+.popovermenu li > .menuitem span[class*=" icon-"] {
+ /* Keep padding to define the width to
+ assure correct position of a possible text */
+ padding: 22px 0 22px 44px;
+}
+.bubble li > button:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > button:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > button:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > a:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > a:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > a:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > .menuitem:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > .menuitem:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > .menuitem:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > button:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > button:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > button:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > a:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > a:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > a:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > button:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > button:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > button:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > a:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > a:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > a:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child {
+ margin-left: 44px;
+}
+.bubble li > button[class^=icon-], .bubble li > button[class*=" icon-"],
+.bubble li > a[class^=icon-],
+.bubble li > a[class*=" icon-"],
+.bubble li > .menuitem[class^=icon-],
+.bubble li > .menuitem[class*=" icon-"],
+.app-navigation-entry-menu li > button[class^=icon-],
+.app-navigation-entry-menu li > button[class*=" icon-"],
+.app-navigation-entry-menu li > a[class^=icon-],
+.app-navigation-entry-menu li > a[class*=" icon-"],
+.app-navigation-entry-menu li > .menuitem[class^=icon-],
+.app-navigation-entry-menu li > .menuitem[class*=" icon-"],
+.popovermenu li > button[class^=icon-],
+.popovermenu li > button[class*=" icon-"],
+.popovermenu li > a[class^=icon-],
+.popovermenu li > a[class*=" icon-"],
+.popovermenu li > .menuitem[class^=icon-],
+.popovermenu li > .menuitem[class*=" icon-"] {
+ padding: 0 14px 0 44px !important;
+}
+.bubble li > button:hover, .bubble li > button:focus,
+.bubble li > a:hover,
+.bubble li > a:focus,
+.bubble li > .menuitem:hover,
+.bubble li > .menuitem:focus,
+.app-navigation-entry-menu li > button:hover,
+.app-navigation-entry-menu li > button:focus,
+.app-navigation-entry-menu li > a:hover,
+.app-navigation-entry-menu li > a:focus,
+.app-navigation-entry-menu li > .menuitem:hover,
+.app-navigation-entry-menu li > .menuitem:focus,
+.popovermenu li > button:hover,
+.popovermenu li > button:focus,
+.popovermenu li > a:hover,
+.popovermenu li > a:focus,
+.popovermenu li > .menuitem:hover,
+.popovermenu li > .menuitem:focus {
+ background-color: var(--color-background-hover);
+}
+.bubble li > button.active,
+.bubble li > a.active,
+.bubble li > .menuitem.active,
+.app-navigation-entry-menu li > button.active,
+.app-navigation-entry-menu li > a.active,
+.app-navigation-entry-menu li > .menuitem.active,
+.popovermenu li > button.active,
+.popovermenu li > a.active,
+.popovermenu li > .menuitem.active {
+ background-color: var(--color-primary-light);
+}
+.bubble li > button.action,
+.bubble li > a.action,
+.bubble li > .menuitem.action,
+.app-navigation-entry-menu li > button.action,
+.app-navigation-entry-menu li > a.action,
+.app-navigation-entry-menu li > .menuitem.action,
+.popovermenu li > button.action,
+.popovermenu li > a.action,
+.popovermenu li > .menuitem.action {
+ padding: inherit !important;
+}
+.bubble li > button > span,
+.bubble li > a > span,
+.bubble li > .menuitem > span,
+.app-navigation-entry-menu li > button > span,
+.app-navigation-entry-menu li > a > span,
+.app-navigation-entry-menu li > .menuitem > span,
+.popovermenu li > button > span,
+.popovermenu li > a > span,
+.popovermenu li > .menuitem > span {
+ cursor: pointer;
+ white-space: nowrap;
+}
+.bubble li > button > p,
+.bubble li > a > p,
+.bubble li > .menuitem > p,
+.app-navigation-entry-menu li > button > p,
+.app-navigation-entry-menu li > a > p,
+.app-navigation-entry-menu li > .menuitem > p,
+.popovermenu li > button > p,
+.popovermenu li > a > p,
+.popovermenu li > .menuitem > p {
+ width: 150px;
+ line-height: 1.6em;
+ padding: 8px 0;
+ white-space: normal;
+}
+.bubble li > button > select,
+.bubble li > a > select,
+.bubble li > .menuitem > select,
+.app-navigation-entry-menu li > button > select,
+.app-navigation-entry-menu li > a > select,
+.app-navigation-entry-menu li > .menuitem > select,
+.popovermenu li > button > select,
+.popovermenu li > a > select,
+.popovermenu li > .menuitem > select {
+ margin: 0;
+ margin-left: 6px;
+}
+.bubble li > button:not(:empty),
+.bubble li > a:not(:empty),
+.bubble li > .menuitem:not(:empty),
+.app-navigation-entry-menu li > button:not(:empty),
+.app-navigation-entry-menu li > a:not(:empty),
+.app-navigation-entry-menu li > .menuitem:not(:empty),
+.popovermenu li > button:not(:empty),
+.popovermenu li > a:not(:empty),
+.popovermenu li > .menuitem:not(:empty) {
+ padding-right: 14px !important;
+}
+.bubble li > button > img,
+.bubble li > a > img,
+.bubble li > .menuitem > img,
+.app-navigation-entry-menu li > button > img,
+.app-navigation-entry-menu li > a > img,
+.app-navigation-entry-menu li > .menuitem > img,
+.popovermenu li > button > img,
+.popovermenu li > a > img,
+.popovermenu li > .menuitem > img {
+ width: 16px;
+ padding: 14px;
+}
+.bubble li > button > input.radio + label,
+.bubble li > button > input.checkbox + label,
+.bubble li > a > input.radio + label,
+.bubble li > a > input.checkbox + label,
+.bubble li > .menuitem > input.radio + label,
+.bubble li > .menuitem > input.checkbox + label,
+.app-navigation-entry-menu li > button > input.radio + label,
+.app-navigation-entry-menu li > button > input.checkbox + label,
+.app-navigation-entry-menu li > a > input.radio + label,
+.app-navigation-entry-menu li > a > input.checkbox + label,
+.app-navigation-entry-menu li > .menuitem > input.radio + label,
+.app-navigation-entry-menu li > .menuitem > input.checkbox + label,
+.popovermenu li > button > input.radio + label,
+.popovermenu li > button > input.checkbox + label,
+.popovermenu li > a > input.radio + label,
+.popovermenu li > a > input.checkbox + label,
+.popovermenu li > .menuitem > input.radio + label,
+.popovermenu li > .menuitem > input.checkbox + label {
+ padding: 0 !important;
+ width: 100%;
+}
+.bubble li > button > input.checkbox + label::before,
+.bubble li > a > input.checkbox + label::before,
+.bubble li > .menuitem > input.checkbox + label::before,
+.app-navigation-entry-menu li > button > input.checkbox + label::before,
+.app-navigation-entry-menu li > a > input.checkbox + label::before,
+.app-navigation-entry-menu li > .menuitem > input.checkbox + label::before,
+.popovermenu li > button > input.checkbox + label::before,
+.popovermenu li > a > input.checkbox + label::before,
+.popovermenu li > .menuitem > input.checkbox + label::before {
+ margin: -2px 13px 0;
+}
+.bubble li > button > input.radio + label::before,
+.bubble li > a > input.radio + label::before,
+.bubble li > .menuitem > input.radio + label::before,
+.app-navigation-entry-menu li > button > input.radio + label::before,
+.app-navigation-entry-menu li > a > input.radio + label::before,
+.app-navigation-entry-menu li > .menuitem > input.radio + label::before,
+.popovermenu li > button > input.radio + label::before,
+.popovermenu li > a > input.radio + label::before,
+.popovermenu li > .menuitem > input.radio + label::before {
+ margin: -2px 12px 0;
+}
+.bubble li > button > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.bubble li > a > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.bubble li > .menuitem > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.app-navigation-entry-menu li > button > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.app-navigation-entry-menu li > a > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.app-navigation-entry-menu li > .menuitem > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.popovermenu li > button > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.popovermenu li > a > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.popovermenu li > .menuitem > input:not([type=radio]):not([type=checkbox]):not([type=image]) {
+ width: 150px;
+}
+.bubble li > button form,
+.bubble li > a form,
+.bubble li > .menuitem form,
+.app-navigation-entry-menu li > button form,
+.app-navigation-entry-menu li > a form,
+.app-navigation-entry-menu li > .menuitem form,
+.popovermenu li > button form,
+.popovermenu li > a form,
+.popovermenu li > .menuitem form {
+ display: flex;
+ flex: 1 1 auto;
+ /* put a small space between text and form
+ if there is an element before */
+}
+.bubble li > button form:not(:first-child),
+.bubble li > a form:not(:first-child),
+.bubble li > .menuitem form:not(:first-child),
+.app-navigation-entry-menu li > button form:not(:first-child),
+.app-navigation-entry-menu li > a form:not(:first-child),
+.app-navigation-entry-menu li > .menuitem form:not(:first-child),
+.popovermenu li > button form:not(:first-child),
+.popovermenu li > a form:not(:first-child),
+.popovermenu li > .menuitem form:not(:first-child) {
+ margin-left: 5px;
+}
+.bubble li > button > span.hidden + form,
+.bubble li > button > span[style*="display:none"] + form,
+.bubble li > a > span.hidden + form,
+.bubble li > a > span[style*="display:none"] + form,
+.bubble li > .menuitem > span.hidden + form,
+.bubble li > .menuitem > span[style*="display:none"] + form,
+.app-navigation-entry-menu li > button > span.hidden + form,
+.app-navigation-entry-menu li > button > span[style*="display:none"] + form,
+.app-navigation-entry-menu li > a > span.hidden + form,
+.app-navigation-entry-menu li > a > span[style*="display:none"] + form,
+.app-navigation-entry-menu li > .menuitem > span.hidden + form,
+.app-navigation-entry-menu li > .menuitem > span[style*="display:none"] + form,
+.popovermenu li > button > span.hidden + form,
+.popovermenu li > button > span[style*="display:none"] + form,
+.popovermenu li > a > span.hidden + form,
+.popovermenu li > a > span[style*="display:none"] + form,
+.popovermenu li > .menuitem > span.hidden + form,
+.popovermenu li > .menuitem > span[style*="display:none"] + form {
+ margin-left: 0;
+}
+.bubble li > button input,
+.bubble li > a input,
+.bubble li > .menuitem input,
+.app-navigation-entry-menu li > button input,
+.app-navigation-entry-menu li > a input,
+.app-navigation-entry-menu li > .menuitem input,
+.popovermenu li > button input,
+.popovermenu li > a input,
+.popovermenu li > .menuitem input {
+ min-width: 44px;
+ max-height: 40px;
+ /* twice the element margin-y */
+ margin: 2px 0;
+ flex: 1 1 auto;
+}
+.bubble li > button input:not(:first-child),
+.bubble li > a input:not(:first-child),
+.bubble li > .menuitem input:not(:first-child),
+.app-navigation-entry-menu li > button input:not(:first-child),
+.app-navigation-entry-menu li > a input:not(:first-child),
+.app-navigation-entry-menu li > .menuitem input:not(:first-child),
+.popovermenu li > button input:not(:first-child),
+.popovermenu li > a input:not(:first-child),
+.popovermenu li > .menuitem input:not(:first-child) {
+ margin-left: 5px;
+}
+.bubble li:not(.hidden):not([style*="display:none"]):first-of-type > button > form, .bubble li:not(.hidden):not([style*="display:none"]):first-of-type > button > input, .bubble li:not(.hidden):not([style*="display:none"]):first-of-type > a > form, .bubble li:not(.hidden):not([style*="display:none"]):first-of-type > a > input, .bubble li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > form, .bubble li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > button > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > button > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > a > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > a > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > button > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > button > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > a > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > a > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > input {
+ margin-top: 12px;
+}
+.bubble li:not(.hidden):not([style*="display:none"]):last-of-type > button > form, .bubble li:not(.hidden):not([style*="display:none"]):last-of-type > button > input, .bubble li:not(.hidden):not([style*="display:none"]):last-of-type > a > form, .bubble li:not(.hidden):not([style*="display:none"]):last-of-type > a > input, .bubble li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > form, .bubble li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > button > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > button > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > a > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > a > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > button > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > button > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > a > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > a > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > input {
+ margin-bottom: 12px;
+}
+.bubble li > button,
+.app-navigation-entry-menu li > button,
+.popovermenu li > button {
+ padding: 0;
+}
+.bubble li > button span,
+.app-navigation-entry-menu li > button span,
+.popovermenu li > button span {
+ opacity: 1;
+}
+
+/* "app-*" descendants use border-box sizing, so the height of the icon must be
+ * set to the height of the item (as well as its width to make it squared). */
+#content[class*=app-] .bubble li > button,
+#content[class*=app-] .bubble li > a,
+#content[class*=app-] .bubble li > .menuitem,
+#content[class*=app-] .app-navigation-entry-menu li > button,
+#content[class*=app-] .app-navigation-entry-menu li > a,
+#content[class*=app-] .app-navigation-entry-menu li > .menuitem,
+#content[class*=app-] .popovermenu li > button,
+#content[class*=app-] .popovermenu li > a,
+#content[class*=app-] .popovermenu li > .menuitem {
+ /* DEPRECATED! old img in popover fallback
+ * TODO: to remove */
+}
+#content[class*=app-] .bubble li > button > img,
+#content[class*=app-] .bubble li > a > img,
+#content[class*=app-] .bubble li > .menuitem > img,
+#content[class*=app-] .app-navigation-entry-menu li > button > img,
+#content[class*=app-] .app-navigation-entry-menu li > a > img,
+#content[class*=app-] .app-navigation-entry-menu li > .menuitem > img,
+#content[class*=app-] .popovermenu li > button > img,
+#content[class*=app-] .popovermenu li > a > img,
+#content[class*=app-] .popovermenu li > .menuitem > img {
+ width: 44px;
+ height: 44px;
+}
+
+/* CONTENT LIST ------------------------------------------------------------ */
+.app-content-list {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 50px;
+ border-right: 1px solid var(--color-border);
+ display: flex;
+ flex-direction: column;
+ transition: transform 250ms ease-in-out;
+ min-height: calc(100vh - 50px);
+ max-height: calc(100vh - 50px);
+ overflow-y: auto;
+ overflow-x: hidden;
+ flex: 1 1 200px;
+ min-width: 200px;
+ max-width: 300px;
+ /* Default item */
+}
+.app-content-list .app-content-list-item {
+ position: relative;
+ height: 68px;
+ cursor: pointer;
+ padding: 10px 7px;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ flex: 0 0 auto;
+ /* Icon fixes */
+}
+.app-content-list .app-content-list-item > [class^=icon-],
+.app-content-list .app-content-list-item > [class*=" icon-"],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"] {
+ order: 4;
+ width: 24px;
+ height: 24px;
+ margin: -7px;
+ padding: 22px;
+ opacity: 0.3;
+ cursor: pointer;
+}
+.app-content-list .app-content-list-item > [class^=icon-]:hover, .app-content-list .app-content-list-item > [class^=icon-]:focus,
+.app-content-list .app-content-list-item > [class*=" icon-"]:hover,
+.app-content-list .app-content-list-item > [class*=" icon-"]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"]:focus {
+ opacity: 0.7;
+}
+.app-content-list .app-content-list-item > [class^=icon-][class^=icon-star], .app-content-list .app-content-list-item > [class^=icon-][class*=" icon-star"],
+.app-content-list .app-content-list-item > [class*=" icon-"][class^=icon-star],
+.app-content-list .app-content-list-item > [class*=" icon-"][class*=" icon-star"],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class^=icon-star],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class*=" icon-star"],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class^=icon-star],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class*=" icon-star"] {
+ opacity: 0.7;
+}
+.app-content-list .app-content-list-item > [class^=icon-][class^=icon-star]:hover, .app-content-list .app-content-list-item > [class^=icon-][class^=icon-star]:focus, .app-content-list .app-content-list-item > [class^=icon-][class*=" icon-star"]:hover, .app-content-list .app-content-list-item > [class^=icon-][class*=" icon-star"]:focus,
+.app-content-list .app-content-list-item > [class*=" icon-"][class^=icon-star]:hover,
+.app-content-list .app-content-list-item > [class*=" icon-"][class^=icon-star]:focus,
+.app-content-list .app-content-list-item > [class*=" icon-"][class*=" icon-star"]:hover,
+.app-content-list .app-content-list-item > [class*=" icon-"][class*=" icon-star"]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class^=icon-star]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class^=icon-star]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class*=" icon-star"]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class*=" icon-star"]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class^=icon-star]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class^=icon-star]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class*=" icon-star"]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class*=" icon-star"]:focus {
+ opacity: 1;
+}
+.app-content-list .app-content-list-item > [class^=icon-].icon-starred,
+.app-content-list .app-content-list-item > [class*=" icon-"].icon-starred,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-].icon-starred,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"].icon-starred {
+ opacity: 1;
+}
+.app-content-list .app-content-list-item:hover, .app-content-list .app-content-list-item:focus, .app-content-list .app-content-list-item.active {
+ background-color: var(--color-background-dark);
+}
+.app-content-list .app-content-list-item:hover .app-content-list-item-checkbox.checkbox + label, .app-content-list .app-content-list-item:focus .app-content-list-item-checkbox.checkbox + label, .app-content-list .app-content-list-item.active .app-content-list-item-checkbox.checkbox + label {
+ display: flex;
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox + label,
+.app-content-list .app-content-list-item .app-content-list-item-star {
+ position: absolute;
+ height: 40px;
+ width: 40px;
+ z-index: 50;
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked + label, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover + label, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus + label, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active + label {
+ display: flex;
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked + label + .app-content-list-item-icon, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover + label + .app-content-list-item-icon, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus + label + .app-content-list-item-icon, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active + label + .app-content-list-item-icon {
+ opacity: 0.7;
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox + label {
+ top: 14px;
+ left: 7px;
+ display: none;
+ /* Hide the star, priority to the checkbox */
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox + label::before {
+ margin: 0;
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox + label ~ .app-content-list-item-star {
+ display: none;
+}
+.app-content-list .app-content-list-item .app-content-list-item-star {
+ display: flex;
+ top: 10px;
+ left: 32px;
+ background-size: 16px;
+ height: 20px;
+ width: 20px;
+ margin: 0;
+ padding: 0;
+}
+.app-content-list .app-content-list-item .app-content-list-item-icon {
+ position: absolute;
+ display: inline-block;
+ height: 40px;
+ width: 40px;
+ line-height: 40px;
+ border-radius: 50%;
+ vertical-align: middle;
+ margin-right: 10px;
+ color: #fff;
+ text-align: center;
+ font-size: 1.5em;
+ text-transform: capitalize;
+ object-fit: cover;
+ user-select: none;
+ cursor: pointer;
+ top: 50%;
+ margin-top: -20px;
+}
+.app-content-list .app-content-list-item .app-content-list-item-line-one,
+.app-content-list .app-content-list-item .app-content-list-item-line-two {
+ display: block;
+ padding-left: 50px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ order: 1;
+ flex: 1 1 0px;
+ padding-right: 10px;
+ cursor: pointer;
+}
+.app-content-list .app-content-list-item .app-content-list-item-line-two {
+ opacity: 0.5;
+ order: 3;
+ flex: 1 0;
+ flex-basis: calc(100% - 44px);
+}
+.app-content-list .app-content-list-item .app-content-list-item-details {
+ order: 2;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ max-width: 100px;
+ opacity: 0.5;
+ font-size: 80%;
+ user-select: none;
+}
+.app-content-list .app-content-list-item .app-content-list-item-menu {
+ order: 4;
+ position: relative;
+}
+.app-content-list .app-content-list-item .app-content-list-item-menu .popovermenu {
+ margin: 0;
+ right: -2px;
+}
+.app-content-list.selection .app-content-list-item-checkbox.checkbox + label {
+ display: flex;
+}
+
+/*# sourceMappingURL=apps.css.map */
diff --git a/core/css/apps.css.map b/core/css/apps.css.map
new file mode 100644
index 00000000000..dc67886047c
--- /dev/null
+++ b/core/css/apps.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["variables.scss","apps.scss","functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AD7BA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAID;AAEA;EACC;;;AAGD;AACA;AACA;EACC,ODyBkB;ECxBlB;EACA,KDsBe;ECrBf;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AA4OA;AAAA;AAAA;AAiBA;AAAA;AAAA;AAkEA;AAAA;AAAA;AAmDA;AAAA;AAAA;AAsDA;AAAA;AAAA;AA2BA;AAAA;AAAA;AAeA;AAAA;AAAA;;AAjdA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAsHA;;AArHA;EACC;EACA;EACA;EACA;AAEA;AAoCA;AAMA;AAwBA;;AAjEA;EACC;;AACA;EACC;;AAIF;AACC;EACA;;AAED;AACC;AACA;AAAA;EAEA;;AAKA;AAAA;AAAA;AAAA;EAEC;;AAOD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;AAgBA;;AAbC;AAAA;AAAA;EAEC;;AAKD;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;EACA;AACA;AAQA;AAwCA;AAkBA;AAKA;;AArEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAaA;;AAXA;AAAA;EACC;;AAED;AAAA;EACI;EACA;EACA;EAEH;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AAwCA;;AAtCA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;AC/TF;EAEA;ED+TE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAID;EACC;;AAIA;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AC/XF;EAEA;;ADgYE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EAEA,aD1ee;EC2ef;;;AAGD;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;AACA;AAIA;AAKA;;AARA;EACC,aD/fiB;;ACkgBlB;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WDhiBmB;ECiiBnB,WDhiBmB;ECiiBnB;EACA;EACA;EACA,KDviBe;ECwiBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;;;AAIF;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAiIA;;AA/HA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA5FkB;EA6FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAsCA;AAkBA;AAIA;AAAA;AAMA;AAwBA;AAKA;;AA7FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;AAAc;EACd;EACA;EACA,iBAhHe;;AAkHhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEC;AAAA;EAEA;;AAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,aA/He;;AAmIlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,OAtKe;EAuKf;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;AACA;AAAA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,WAzMiB;EA0MjB;AAA0C;EAC1C;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAMD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAKJ;AAAA;AAAA;EACC;;AACA;AAAA;AAAA;EACC;;;AAOJ;AAAA;AAOG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGC;AAAA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,OA3PgB;EA4PhB,QA5PgB;;;AAmQrB;AACA;EACC;EACA;EACA,KDpgCe;ECqgCf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WD1gCgB;EC2gChB,WD1gCgB;AC4gChB;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AAGC;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIF;AAAA;AAAA;AAAA;EACC;;AAKH;EAGC;;AAEA;EACC;;AAIF;AAAA;EAEC;EACA;EACA;EACA;;AAQC;EAEC;;AAEA;EACC;;AAIH;EACC;EACA;EAEA;AAIA;;AAHA;EACC;;AAGD;EACC;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EAGA;;AAIH;EACC","file":"apps.css"} \ No newline at end of file
diff --git a/core/css/apps.scss b/core/css/apps.scss
index aab575f5dd2..aa532c462d0 100644
--- a/core/css/apps.scss
+++ b/core/css/apps.scss
@@ -90,7 +90,7 @@ kbd {
overflow-x: hidden;
// Do not use vh because of mobile headers
// are included in the calculation
- height: calc(100% - #{$header-height});
+ height: calc(100% - #{variables.$header-height});
box-sizing: border-box;
background-color: var(--color-main-background);
-webkit-user-select: none;
@@ -982,14 +982,14 @@ $outter-margin: math.div($popoveritem-height - $popovericon-size, 2);
&[class*=' icon-'] {
min-width: 0; /* Overwrite icons*/
min-height: 0;
- background-position: #{($popoveritem-height - $popovericon-size) / 2} center;
+ background-position: #{math.div($popoveritem-height - $popovericon-size, 2)} center;
background-size: $popovericon-size;
}
span[class^='icon-'],
span[class*=' icon-'] {
/* Keep padding to define the width to
assure correct position of a possible text */
- padding: #{$popoveritem-height / 2} 0 #{$popoveritem-height / 2} $popoveritem-height;
+ padding: #{math.div($popoveritem-height, 2)} 0 #{math.div($popoveritem-height, 2)} $popoveritem-height;
}
// If no icons set, force left margin to align
&:not([class^='icon-']):not([class*='icon-']) {
@@ -1003,7 +1003,7 @@ $outter-margin: math.div($popoveritem-height - $popovericon-size, 2);
}
&[class^='icon-'],
&[class*=' icon-'] {
- padding: 0 #{($popoveritem-height - $popovericon-size) / 2} 0 $popoveritem-height !important;
+ padding: 0 #{math.div($popoveritem-height - $popovericon-size, 2)} 0 $popoveritem-height !important;
}
&:hover,
&:focus {
@@ -1038,7 +1038,7 @@ $outter-margin: math.div($popoveritem-height - $popovericon-size, 2);
* TODO: to remove */
> img {
width: $popovericon-size;
- padding: #{($popoveritem-height - $popovericon-size) / 2};
+ padding: #{math.div($popoveritem-height - $popovericon-size, 2)};
}
/* checkbox/radio fixes */
> input.radio + label,
diff --git a/core/css/fixes.css b/core/css/fixes.css
new file mode 100644
index 00000000000..6401bd3ec67
--- /dev/null
+++ b/core/css/fixes.css
@@ -0,0 +1,7 @@
+/* ---- BROWSER-SPECIFIC FIXES ---- */
+/* remove dotted outlines in Firefox */
+::-moz-focus-inner {
+ border: 0;
+}
+
+/*# sourceMappingURL=fixes.css.map */
diff --git a/core/css/fixes.css.map b/core/css/fixes.css.map
new file mode 100644
index 00000000000..582048ec0ef
--- /dev/null
+++ b/core/css/fixes.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["fixes.scss"],"names":[],"mappings":"AAAA;AAEA;AACA;EACC","file":"fixes.css"} \ No newline at end of file
diff --git a/core/css/functions.css b/core/css/functions.css
new file mode 100644
index 00000000000..eade50140ea
--- /dev/null
+++ b/core/css/functions.css
@@ -0,0 +1,38 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @see core/src/icons.js
+ */
+/**
+ * SVG COLOR API
+ *
+ * @param string $icon the icon filename
+ * @param string $dir the icon folder within /core/img if $core or app name
+ * @param string $color the desired color in hexadecimal
+ * @param int $version the version of the file
+ * @param bool [$core] search icon in core
+ *
+ * @returns A background image with the url to the set to the requested icon.
+ */
+
+/*# sourceMappingURL=functions.css.map */
diff --git a/core/css/functions.css.map b/core/css/functions.css.map
new file mode 100644
index 00000000000..76274d3efda
--- /dev/null
+++ b/core/css/functions.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"functions.css"} \ No newline at end of file
diff --git a/core/css/global.css b/core/css/global.css
new file mode 100644
index 00000000000..d9ecc634d78
--- /dev/null
+++ b/core/css/global.css
@@ -0,0 +1,50 @@
+/* Copyright (c) 2015, Raghu Nayyar, http://raghunayyar.com
+ This file is licensed under the Affero General Public License version 3 or later.
+ See the COPYING-README file. */
+/* Global Components */
+.pull-left {
+ float: left;
+}
+
+.pull-right {
+ float: right;
+}
+
+.clear-left {
+ clear: left;
+}
+
+.clear-right {
+ clear: right;
+}
+
+.clear-both {
+ clear: both;
+}
+
+.hidden {
+ display: none;
+}
+
+.hidden-visually {
+ position: absolute;
+ left: -10000px;
+ top: -10000px;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
+}
+
+.bold {
+ font-weight: 600;
+}
+
+.center {
+ text-align: center;
+}
+
+.inlineblock {
+ display: inline-block;
+}
+
+/*# sourceMappingURL=global.css.map */
diff --git a/core/css/global.css.map b/core/css/global.css.map
new file mode 100644
index 00000000000..638db781eb4
--- /dev/null
+++ b/core/css/global.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["global.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAIA;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC","file":"global.css"} \ No newline at end of file
diff --git a/core/css/header.css b/core/css/header.css
new file mode 100644
index 00000000000..93c44812e57
--- /dev/null
+++ b/core/css/header.css
@@ -0,0 +1,644 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
+ * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
+ * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
+ * @copyright Copyright (c) 2016, Jos Poortvliet <jos@opensuse.org>
+ * @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>
+ * @copyright Copyright (c) 2016, jowi <sjw@gmx.ch>
+ * @copyright Copyright (c) 2015, Hendrik Leppelsack <hendrik@leppelsack.de>
+ * @copyright Copyright (c) 2015, Volker E <volker.e@temporaer.net>
+ * @copyright Copyright (c) 2014-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ */
+/* prevent ugly selection effect on accidental selection */
+#header,
+#navigation,
+#expanddiv {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+}
+
+/* removed until content-focusing issue is fixed */
+#skip-to-content a {
+ position: absolute;
+ left: -10000px;
+ top: auto;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
+}
+#skip-to-content a:focus {
+ left: 76px;
+ top: -9px;
+ color: var(--color-primary-text);
+ width: auto;
+ height: auto;
+}
+
+/* HEADERS ------------------------------------------------------------------ */
+#body-user #header,
+#body-settings #header,
+#body-public #header {
+ display: inline-flex;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: 2000;
+ height: 50px;
+ background-color: var(--color-primary);
+ background-image: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-element-light) 100%);
+ box-sizing: border-box;
+ justify-content: space-between;
+}
+
+/* LOGO and APP NAME -------------------------------------------------------- */
+#nextcloud {
+ padding: 7px 0;
+ padding-left: 86px;
+ position: relative;
+ height: 100%;
+ box-sizing: border-box;
+ opacity: 1;
+ align-items: center;
+ display: flex;
+ flex-wrap: wrap;
+ overflow: hidden;
+}
+#nextcloud:focus {
+ opacity: 0.75;
+}
+#nextcloud:hover, #nextcloud:active {
+ opacity: 1;
+}
+
+#header {
+ /* Header menu */
+ /* show caret indicator next to logo to make clear it is tappable */
+ /* Right header standard */
+}
+#header .header-left > nav > .menu,
+#header .header-right > div > .menu {
+ background-color: var(--color-main-background);
+ filter: drop-shadow(0 1px 5px var(--color-box-shadow));
+ border-radius: 0 0 var(--border-radius) var(--border-radius);
+ box-sizing: border-box;
+ z-index: 2000;
+ position: absolute;
+ max-width: 350px;
+ min-height: 66px;
+ max-height: calc(100vh - 50px * 4);
+ right: 5px;
+ top: 50px;
+ margin: 0;
+ /* Dropdown arrow */
+ /* Use by the apps menu and the settings right menu */
+}
+#header .header-left > nav > .menu:not(.popovermenu),
+#header .header-right > div > .menu:not(.popovermenu) {
+ display: none;
+}
+#header .header-left > nav > .menu:after,
+#header .header-right > div > .menu:after {
+ border: 10px solid transparent;
+ border-bottom-color: var(--color-main-background);
+ bottom: 100%;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ right: 10px;
+}
+#header .header-left > nav > .menu #apps > ul, #header .header-left > nav > .menu > div, #header .header-left > nav > .menu > ul,
+#header .header-right > div > .menu #apps > ul,
+#header .header-right > div > .menu > div,
+#header .header-right > div > .menu > ul {
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ min-height: 66px;
+ max-height: calc(100vh - 50px * 4);
+}
+#header .header-left > nav > .menu #apps > ul li a, #header .header-left > nav > .menu.settings-menu > ul li a,
+#header .header-right > div > .menu #apps > ul li a,
+#header .header-right > div > .menu.settings-menu > ul li a {
+ display: inline-flex;
+ align-items: center;
+ height: 44px;
+ color: var(--color-main-text);
+ padding: 10px 12px;
+ box-sizing: border-box;
+ white-space: nowrap;
+ position: relative;
+ width: 100%;
+}
+#header .header-left > nav > .menu #apps > ul li a:hover, #header .header-left > nav > .menu #apps > ul li a:focus, #header .header-left > nav > .menu.settings-menu > ul li a:hover, #header .header-left > nav > .menu.settings-menu > ul li a:focus,
+#header .header-right > div > .menu #apps > ul li a:hover,
+#header .header-right > div > .menu #apps > ul li a:focus,
+#header .header-right > div > .menu.settings-menu > ul li a:hover,
+#header .header-right > div > .menu.settings-menu > ul li a:focus {
+ background-color: var(--color-background-hover);
+}
+#header .header-left > nav > .menu #apps > ul li a:active, #header .header-left > nav > .menu #apps > ul li a.active, #header .header-left > nav > .menu.settings-menu > ul li a:active, #header .header-left > nav > .menu.settings-menu > ul li a.active,
+#header .header-right > div > .menu #apps > ul li a:active,
+#header .header-right > div > .menu #apps > ul li a.active,
+#header .header-right > div > .menu.settings-menu > ul li a:active,
+#header .header-right > div > .menu.settings-menu > ul li a.active {
+ background-color: var(--color-primary-light);
+}
+#header .header-left > nav > .menu #apps > ul li a span, #header .header-left > nav > .menu.settings-menu > ul li a span,
+#header .header-right > div > .menu #apps > ul li a span,
+#header .header-right > div > .menu.settings-menu > ul li a span {
+ display: inline-block;
+ padding-bottom: 0;
+ color: var(--color-main-text);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ max-width: 110px;
+}
+#header .header-left > nav > .menu #apps > ul li a .icon-loading-small, #header .header-left > nav > .menu.settings-menu > ul li a .icon-loading-small,
+#header .header-right > div > .menu #apps > ul li a .icon-loading-small,
+#header .header-right > div > .menu.settings-menu > ul li a .icon-loading-small {
+ margin-right: 10px;
+ background-size: 16px 16px;
+}
+#header .header-left > nav > .menu #apps > ul li a img,
+#header .header-left > nav > .menu #apps > ul li a svg, #header .header-left > nav > .menu.settings-menu > ul li a img,
+#header .header-left > nav > .menu.settings-menu > ul li a svg,
+#header .header-right > div > .menu #apps > ul li a img,
+#header .header-right > div > .menu #apps > ul li a svg,
+#header .header-right > div > .menu.settings-menu > ul li a img,
+#header .header-right > div > .menu.settings-menu > ul li a svg {
+ opacity: 0.7;
+ margin-right: 10px;
+ height: 16px;
+ width: 16px;
+ filter: var(--background-invert-if-dark);
+}
+#header .logo {
+ display: inline-flex;
+ background-image: var(--image-logoheader, var(--image-logo, url("../img/logo/logo.svg")));
+ background-repeat: no-repeat;
+ background-size: contain;
+ background-position: center;
+ width: 62px;
+ position: absolute;
+ left: 12px;
+ top: 1px;
+ bottom: 1px;
+ filter: var(--image-logoheader-custom, var(--primary-invert-if-bright));
+}
+#header .header-appname-container {
+ display: none;
+ padding-right: 10px;
+ flex-shrink: 0;
+}
+#header .icon-caret {
+ display: inline-block;
+ width: 12px;
+ height: 12px;
+ margin: 0;
+ margin-top: -21px;
+ padding: 0;
+ vertical-align: middle;
+}
+#header #header-left, #header .header-left,
+#header #header-right, #header .header-right {
+ display: inline-flex;
+ align-items: center;
+}
+#header #header-left, #header .header-left {
+ flex: 1 0;
+ white-space: nowrap;
+ min-width: 0;
+}
+#header #header-right, #header .header-right {
+ justify-content: flex-end;
+ flex-shrink: 1;
+}
+#header .header-right > div,
+#header .header-right > form {
+ height: 100%;
+ position: relative;
+}
+#header .header-right > div > .menutoggle,
+#header .header-right > form > .menutoggle {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 50px;
+ height: 100%;
+ cursor: pointer;
+ opacity: 0.6;
+ padding: 0;
+ margin: 0;
+}
+
+/* hover effect for app switcher label */
+.header-appname-container .header-appname {
+ opacity: 0.75;
+}
+
+.menutoggle .icon-caret {
+ opacity: 0.75;
+}
+.menutoggle:hover .header-appname, .menutoggle:hover .icon-caret {
+ opacity: 1;
+}
+.menutoggle:focus .header-appname, .menutoggle:focus .icon-caret {
+ opacity: 1;
+}
+.menutoggle.active .header-appname, .menutoggle.active .icon-caret {
+ opacity: 1;
+}
+
+/* TODO: move into minimal css file for public shared template */
+/* only used for public share pages now as we have the app icons when logged in */
+.header-appname {
+ color: var(--color-primary-text);
+ font-size: 16px;
+ font-weight: bold;
+ margin: 0;
+ padding: 0;
+ padding-right: 5px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ flex: 1 1 100%;
+}
+
+.header-shared-by {
+ color: var(--color-primary-text);
+ position: relative;
+ font-weight: 300;
+ font-size: 11px;
+ line-height: 11px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+/* do not show menu toggle on public share links as there is no menu */
+#body-public #header .icon-caret {
+ display: none;
+}
+
+/* NAVIGATION --------------------------------------------------------------- */
+nav[role=navigation] {
+ display: inline-block;
+ width: 50px;
+ height: 50px;
+ margin-left: -50px;
+ position: relative;
+}
+
+#header .header-left > nav > #navigation {
+ position: relative;
+ left: 25px;
+ /* half the togglemenu */
+ transform: translateX(-50%);
+ width: 160px;
+}
+
+#header .header-left > nav > #navigation,
+.ui-datepicker,
+.ui-timepicker.ui-widget {
+ background-color: var(--color-main-background);
+ filter: drop-shadow(0 1px 10px var(--color-box-shadow));
+}
+#header .header-left > nav > #navigation:after,
+.ui-datepicker:after,
+.ui-timepicker.ui-widget:after {
+ /* position of dropdown arrow */
+ left: 50%;
+ bottom: 100%;
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ border-color: rgba(0, 0, 0, 0);
+ border-bottom-color: var(--color-main-background);
+ border-width: 10px;
+ margin-left: -10px;
+ /* border width */
+}
+
+#navigation {
+ box-sizing: border-box;
+}
+#navigation .in-header {
+ display: none;
+}
+
+/* USER MENU -----------------------------------------------------------------*/
+#settings {
+ display: inline-block;
+ height: 100%;
+ cursor: pointer;
+ flex: 0 0 auto;
+ /* User menu on the right */
+}
+#settings #expand {
+ opacity: 1;
+ /* override icon opacity */
+ padding-right: 12px;
+ /* Profile picture in header */
+ /* show triangle below user menu if active */
+}
+#settings #expand:hover, #settings #expand:focus, #settings #expand:active {
+ color: var(--color-primary-text);
+}
+#settings #expand:hover #expandDisplayName,
+#settings #expand:hover .avatardiv, #settings #expand:focus #expandDisplayName,
+#settings #expand:focus .avatardiv, #settings #expand:active #expandDisplayName,
+#settings #expand:active .avatardiv {
+ border-radius: 50%;
+ border: 2px solid var(--color-primary-text);
+ margin: -2px;
+}
+#settings #expand:hover .avatardiv, #settings #expand:focus .avatardiv, #settings #expand:active .avatardiv {
+ background-color: var(--color-primary-text);
+}
+#settings #expand:hover #expandDisplayName, #settings #expand:focus #expandDisplayName, #settings #expand:active #expandDisplayName {
+ opacity: 1;
+}
+#settings #expand .avatardiv {
+ cursor: pointer;
+ height: 32px;
+ width: 32px;
+ /* do not show display name when profile picture is present */
+}
+#settings #expand .avatardiv img {
+ opacity: 1;
+ cursor: pointer;
+}
+#settings #expand .avatardiv.avatardiv-shown + #expandDisplayName {
+ display: none;
+}
+#settings #expand #expandDisplayName {
+ padding: 8px;
+ opacity: 0.6;
+ cursor: pointer;
+ /* full opacity for gear icon if active */
+}
+#body-settings #settings #expand #expandDisplayName {
+ opacity: 1;
+}
+#body-settings #settings #expand:before {
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ border: 0 solid transparent;
+ border-bottom-color: var(--color-main-background);
+ border-width: 10px;
+ bottom: 0;
+ z-index: 100;
+ display: block;
+}
+#settings #expanddiv:after {
+ right: 22px;
+}
+
+/* Apps menu */
+#appmenu {
+ display: inline-flex;
+ min-width: 50px;
+ z-index: 2;
+ /* Show all app titles on hovering app menu area */
+ /* Also show app title on focusing single entry (showing all on focus is only possible with CSS4 and parent selectors) */
+ /* show triangle below active app */
+ /* triangle focus feedback */
+}
+#appmenu li {
+ position: relative;
+ cursor: pointer;
+ padding: 0 2px;
+ display: flex;
+ justify-content: center;
+ /* focused app visual feedback */
+ /* hidden apps menu */
+ /* App title */
+ /* Set up transitions for showing app titles on hover */
+ /* App icon */
+ /* Triangle */
+}
+#appmenu li a {
+ position: relative;
+ display: flex;
+ margin: 0;
+ height: 50px;
+ width: 50px;
+ align-items: center;
+ justify-content: center;
+ opacity: 0.6;
+ letter-spacing: -0.5px;
+ font-size: 12px;
+}
+#appmenu li:hover a,
+#appmenu li a:focus,
+#appmenu li a.active {
+ opacity: 1;
+ font-weight: bold;
+}
+#appmenu li:hover a,
+#appmenu li a:focus {
+ font-size: 14px;
+}
+#appmenu li:hover a + span,
+#appmenu li a:focus + span, #appmenu li:hover span, #appmenu li:focus span,
+#appmenu li a:focus span,
+#appmenu li a.active span {
+ display: inline-block;
+ text-overflow: initial;
+ width: auto;
+ overflow: hidden;
+ padding: 0 5px;
+ z-index: 2;
+}
+#appmenu li img,
+#appmenu li .icon-more-white {
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+}
+#appmenu li span {
+ opacity: 0;
+ position: absolute;
+ color: var(--color-primary-text);
+ bottom: 2px;
+ width: 100%;
+ text-align: center;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ transition: all var(--animation-quick) ease;
+ pointer-events: none;
+}
+#appmenu li svg,
+#appmenu li .icon-more-white {
+ transition: transform var(--animation-quick) ease;
+ filter: var(--primary-invert-if-bright);
+}
+#appmenu li a::before {
+ transition: border var(--animation-quick) ease;
+}
+#appmenu:hover li {
+ /* Move up app icon */
+ /* Show app title */
+ /* Prominent app title for current and hovered/focused app */
+ /* Smaller triangle because of limited space */
+}
+#appmenu:hover li svg,
+#appmenu:hover li .icon-more,
+#appmenu:hover li .icon-more-white,
+#appmenu:hover li .icon-loading-small,
+#appmenu:hover li .icon-loading-small-dark {
+ transform: translateY(-7px);
+}
+#appmenu:hover li span {
+ opacity: 0.6;
+ bottom: 2px;
+ z-index: -1;
+ /* fix clickability issue - otherwise we need to move the span into the link */
+}
+#appmenu:hover li:hover span, #appmenu:hover li:focus span,
+#appmenu:hover li .active + span {
+ opacity: 1;
+}
+#appmenu:hover li a::before {
+ border-width: 5px;
+}
+#appmenu li a:focus {
+ /* Move up app icon */
+ /* Show app title */
+ /* Smaller triangle because of limited space */
+}
+#appmenu li a:focus svg,
+#appmenu li a:focus .icon-more,
+#appmenu li a:focus .icon-more-white,
+#appmenu li a:focus .icon-loading-small,
+#appmenu li a:focus .icon-loading-small-dark {
+ transform: translateY(-7px);
+}
+#appmenu li a:focus + span,
+#appmenu li a:focus span {
+ opacity: 1;
+ bottom: 2px;
+}
+#appmenu li a:focus::before {
+ border-width: 5px;
+}
+#appmenu li a::before {
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ border: 0 solid transparent;
+ border-bottom-color: var(--color-main-background);
+ border-width: 10px;
+ transform: translateX(-50%);
+ left: 50%;
+ bottom: 0;
+ display: none;
+}
+#appmenu li a.active::before,
+#appmenu li:hover a::before,
+#appmenu li:hover a.active::before,
+#appmenu li a:focus::before {
+ display: block;
+}
+#appmenu li a.active::before {
+ z-index: 99;
+}
+#appmenu li:hover a::before,
+#appmenu li a.active:hover::before,
+#appmenu li a:focus::before {
+ z-index: 101;
+}
+#appmenu li.hidden {
+ display: none;
+}
+#appmenu #more-apps {
+ z-index: 3;
+}
+
+.unread-counter {
+ display: none;
+}
+
+#apps .app-icon-notification,
+#appmenu .app-icon-notification {
+ fill: var(--color-error);
+}
+
+#apps svg:not(.has-unread) .app-icon-notification-mask,
+#appmenu svg:not(.has-unread) .app-icon-notification-mask {
+ display: none;
+}
+#apps svg:not(.has-unread) .app-icon-notification,
+#appmenu svg:not(.has-unread) .app-icon-notification {
+ display: none;
+}
+
+/* Skip navigation links – show only on keyboard focus */
+.skip-navigation {
+ padding: 11px;
+ position: absolute;
+ overflow: hidden;
+ z-index: 9999;
+ top: -999px;
+ left: 3px;
+ /* Force primary color, otherwise too light focused color */
+ background: var(--color-primary) !important;
+}
+.skip-navigation.skip-content {
+ left: 300px;
+ margin-left: 3px;
+}
+.skip-navigation:focus, .skip-navigation:active {
+ top: 50px;
+}
+
+/* Empty content messages in the header e.g. notifications, contacts menu, … */
+header #emptycontent h2,
+header .emptycontent h2 {
+ font-weight: normal;
+ font-size: 16px;
+}
+header #emptycontent [class^=icon-],
+header #emptycontent [class*=icon-],
+header .emptycontent [class^=icon-],
+header .emptycontent [class*=icon-] {
+ background-size: 48px;
+ height: 48px;
+ width: 48px;
+}
+
+/*# sourceMappingURL=header.css.map */
diff --git a/core/css/header.css.map b/core/css/header.css.map
new file mode 100644
index 00000000000..b7763cbbdd7
--- /dev/null
+++ b/core/css/header.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["variables.scss","header.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;AAAA;EAGC;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QDwDe;ECvDf;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAED;EACC;;;AASF;AACC;AA6GA;AA4BA;;AAtIA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAhBD;EACA;EAiBC;EACA,KDQc;ECPd;AAMA;AAqBA;;AAzBA;AAAA;EACC;;AAID;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;AAAA;EAGC;EACA;EA3CF;EACA;;AAkDG;AAAA;AAAA;EACC;EACA;EACA,QAhDuB;EAiDvB;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,OD7HY;EC8HZ;EACA;EACA;EACA;EACA;;;AAMJ;AAEA;EACC;;;AAIA;EACC;;AAGA;EACC;;AAID;EACC;;AAID;EACC;;;AAKH;AACA;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;;;AAGD;AACA;EACC;EACA,ODpMe;ECqMf,QDrMe;ECsMf;EACA;;;AAGD;EACC;EACA;AAAY;EACZ;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;AACA;AAAA;AAAA;AACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAoB;;;AAItB;EACC;;AACA;EACC;;;AAIF;AACA;EACC;EACA;EACA;EACA;AAEA;;AACA;EACC;AAAY;EACZ;AAqBA;AA2BA;;AA9CA;EAGC;;AAEA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;AAED;EACC;;AAED;EACC;;AAKF;EACC;EACA;EACA;AAMA;;AAJA;EACC;EACA;;AAGD;EACC;;AAIF;EACC;EACA;EACA;AAEA;;AACA;EACC;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;;AAIF;AACA;EACC;EACA,WDhUe;ECiUf;AAwFA;AAiCA;AAwBA;AAgBA;;AA/JA;EACC;EACA;EACA;EACA;EACA;AAgBA;AA4BA;AAQA;AAcA;AACA;AAQA;;AAzEA;EACC;EACA;EACA;EACA,QD9Ua;EC+Ub,OD/Ua;ECgVb;EACA;EACA;EAEA;EACA;;AAID;AAAA;AAAA;EAGC;EACA;;AAID;AAAA;EAEC;;AAGD;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;;AAID;AAAA;EAEC;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;AAAA;EAEC;EAEA;;AAID;EACC;;AAMD;AACC;AASA;AAOA;AAOA;;AAtBA;AAAA;AAAA;AAAA;AAAA;EAKC;;AAID;EACC;EACA;EACA;AAAa;;AAId;AAAA;EAGC;;AAID;EACC;;AAMH;AACC;AASA;AAOA;;AAfA;AAAA;AAAA;AAAA;AAAA;EAKC;;AAID;AAAA;EAEC;EACA;;AAID;EACC;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAID;AAAA;AAAA;AAAA;EAIC;;AAED;EACC;;AAED;AAAA;AAAA;EAGC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAED;AAAA;EAEC;;;AAKA;AAAA;EACC;;AAED;AAAA;EACC;;;AAKF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;AACA;EACA;;AAEA;EACC,MDzhBiB;EC0hBjB;;AAGD;EAEC,KDhiBc;;;ACqiBhB;AAGC;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA","file":"header.css"} \ No newline at end of file
diff --git a/core/css/icons.css b/core/css/icons.css
new file mode 100644
index 00000000000..80728ebd00c
--- /dev/null
+++ b/core/css/icons.css
@@ -0,0 +1,206 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ * @author Joas Schilling <coding@schilljs.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Vincent Chan <plus.vincchan@gmail.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Hendrik Leppelsack <hendrik@leppelsack.de>
+ * @author Jan-Christoph Borchardt <hey@jancborchardt.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @see core/src/icons.js
+ */
+/**
+ * SVG COLOR API
+ *
+ * @param string $icon the icon filename
+ * @param string $dir the icon folder within /core/img if $core or app name
+ * @param string $color the desired color in hexadecimal
+ * @param int $version the version of the file
+ * @param bool [$core] search icon in core
+ *
+ * @returns A background image with the url to the set to the requested icon.
+ */
+/* GLOBAL ------------------------------------------------------------------- */
+@import url("../../dist/icons.css");
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+[class^=icon-], [class*=" icon-"] {
+ background-repeat: no-repeat;
+ background-position: center;
+ min-width: 16px;
+ min-height: 16px;
+}
+
+.icon-breadcrumb {
+ background-image: url("../img/breadcrumb.svg?v=1");
+}
+
+/* LOADING ------------------------------------------------------------------ */
+.loading,
+.loading-small,
+.icon-loading,
+.icon-loading-dark,
+.icon-loading-small,
+.icon-loading-small-dark {
+ position: relative;
+}
+.loading:after,
+.loading-small:after,
+.icon-loading:after,
+.icon-loading-dark:after,
+.icon-loading-small:after,
+.icon-loading-small-dark:after {
+ z-index: 2;
+ content: "";
+ height: 28px;
+ width: 28px;
+ margin: -16px 0 0 -16px;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ border-radius: 100%;
+ -webkit-animation: rotate 0.8s infinite linear;
+ animation: rotate 0.8s infinite linear;
+ -webkit-transform-origin: center;
+ -ms-transform-origin: center;
+ transform-origin: center;
+ border: 2px solid var(--color-loading-light);
+ border-top-color: var(--color-loading-dark);
+ filter: var(--background-invert-if-dark);
+}
+.primary .loading:after, .primary + .loading:after,
+.primary .loading-small:after,
+.primary + .loading-small:after,
+.primary .icon-loading:after,
+.primary + .icon-loading:after,
+.primary .icon-loading-dark:after,
+.primary + .icon-loading-dark:after,
+.primary .icon-loading-small:after,
+.primary + .icon-loading-small:after,
+.primary .icon-loading-small-dark:after,
+.primary + .icon-loading-small-dark:after {
+ filter: var(--primary-invert-if-bright);
+}
+
+.icon-loading-dark:after,
+.icon-loading-small-dark:after {
+ border: 2px solid var(--color-loading-dark);
+ border-top-color: var(--color-loading-light);
+}
+
+.icon-loading-small:after,
+.icon-loading-small-dark:after {
+ height: 12px;
+ width: 12px;
+ margin: -8px 0 0 -8px;
+}
+
+/* Css replaced elements don't have ::after nor ::before */
+audio.icon-loading, canvas.icon-loading, embed.icon-loading, iframe.icon-loading, img.icon-loading, input.icon-loading, object.icon-loading, video.icon-loading {
+ background-image: url("../img/loading.gif");
+}
+audio.icon-loading-dark, canvas.icon-loading-dark, embed.icon-loading-dark, iframe.icon-loading-dark, img.icon-loading-dark, input.icon-loading-dark, object.icon-loading-dark, video.icon-loading-dark {
+ background-image: url("../img/loading-dark.gif");
+}
+audio.icon-loading-small, canvas.icon-loading-small, embed.icon-loading-small, iframe.icon-loading-small, img.icon-loading-small, input.icon-loading-small, object.icon-loading-small, video.icon-loading-small {
+ background-image: url("../img/loading-small.gif");
+}
+audio.icon-loading-small-dark, canvas.icon-loading-small-dark, embed.icon-loading-small-dark, iframe.icon-loading-small-dark, img.icon-loading-small-dark, input.icon-loading-small-dark, object.icon-loading-small-dark, video.icon-loading-small-dark {
+ background-image: url("../img/loading-small-dark.gif");
+}
+
+@keyframes rotate {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
+.icon-32 {
+ background-size: 32px !important;
+}
+
+.icon-white.icon-shadow,
+.icon-audio-white,
+.icon-audio-off-white,
+.icon-fullscreen-white,
+.icon-screen-white,
+.icon-screen-off-white,
+.icon-video-white,
+.icon-video-off-white {
+ filter: drop-shadow(1px 1px 4px var(--color-box-shadow));
+}
+
+/* ICONS -------------------------------------------------------------------
+ * These icon classes are generated automatically with the following pattern
+ * .icon-close (black icon)
+ * .icon-close-white (white icon)
+ * .icon-close.icon-white (white icon)
+ *
+ * Some class definitions are kept as before, since they don't follow the pattern
+ * or have some additional styling like drop shadows
+ */
+
+/*# sourceMappingURL=icons.css.map */
diff --git a/core/css/icons.css.map b/core/css/icons.css.map
new file mode 100644
index 00000000000..f78070a9adc
--- /dev/null
+++ b/core/css/icons.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["icons.scss","functions.scss","variables.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADnBA;AA+GQ;AE9IR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AFgCA;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;;;AAKH;AAAA;EAEC;EACA;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;AAEC;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;;AAIF;EACC;IACC;;EAED;IACC;;;AAIF;EACC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"icons.css"} \ No newline at end of file
diff --git a/core/css/inputs.css b/core/css/inputs.css
new file mode 100644
index 00000000000..4eda99a53fd
--- /dev/null
+++ b/core/css/inputs.css
@@ -0,0 +1,1039 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
+ * @copyright Copyright (c) 2016, Morris Jobke <hey@morrisjobke.de>
+ * @copyright Copyright (c) 2016, Joas Schilling <coding@schilljs.com>
+ * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
+ * @copyright Copyright (c) 2016, jowi <sjw@gmx.ch>
+ * @copyright Copyright (c) 2015, Joas Schilling <nickvergessen@owncloud.com>
+ * @copyright Copyright (c) 2015, Hendrik Leppelsack <hendrik@leppelsack.de>
+ * @copyright Copyright (c) 2014-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ */
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @see core/src/icons.js
+ */
+/**
+ * SVG COLOR API
+ *
+ * @param string $icon the icon filename
+ * @param string $dir the icon folder within /core/img if $core or app name
+ * @param string $color the desired color in hexadecimal
+ * @param int $version the version of the file
+ * @param bool [$core] search icon in core
+ *
+ * @returns A background image with the url to the set to the requested icon.
+ */
+/* Specifically override browser styles */
+input, textarea, select, button, div[contenteditable=true], div[contenteditable=false] {
+ font-family: var(--font-face);
+}
+
+.select2-container-multi .select2-choices .select2-search-field input, .select2-search input, .ui-widget {
+ font-family: var(--font-face) !important;
+}
+
+/* Simple selector to allow easy overriding */
+select,
+button:not(.button-vue),
+input,
+textarea,
+div[contenteditable=true],
+div[contenteditable=false] {
+ width: 130px;
+ min-height: 34px;
+ box-sizing: border-box;
+}
+
+/**
+ * color-text-lighter normal state
+ * color-text-lighter active state
+ * color-text-maxcontrast disabled state
+ */
+/* Default global values */
+div.select2-drop .select2-search input,
+select,
+button:not(.button-vue), .button,
+input:not([type=range]),
+textarea,
+div[contenteditable=true],
+.pager li a {
+ margin: 3px 3px 3px 0;
+ padding: 7px 6px;
+ font-size: 13px;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+ border: 1px solid var(--color-border-dark);
+ outline: none;
+ border-radius: var(--border-radius);
+ cursor: text;
+ /* Primary action button, use sparingly */
+}
+div.select2-drop .select2-search input:not(:disabled):not(.primary):hover, div.select2-drop .select2-search input:not(:disabled):not(.primary):focus, div.select2-drop .select2-search input:not(:disabled):not(.primary).active,
+select:not(:disabled):not(.primary):hover,
+select:not(:disabled):not(.primary):focus,
+select:not(:disabled):not(.primary).active,
+button:not(.button-vue):not(:disabled):not(.primary):hover,
+button:not(.button-vue):not(:disabled):not(.primary):focus,
+button:not(.button-vue):not(:disabled):not(.primary).active, .button:not(:disabled):not(.primary):hover, .button:not(:disabled):not(.primary):focus, .button:not(:disabled):not(.primary).active,
+input:not([type=range]):not(:disabled):not(.primary):hover,
+input:not([type=range]):not(:disabled):not(.primary):focus,
+input:not([type=range]):not(:disabled):not(.primary).active,
+textarea:not(:disabled):not(.primary):hover,
+textarea:not(:disabled):not(.primary):focus,
+textarea:not(:disabled):not(.primary).active,
+div[contenteditable=true]:not(:disabled):not(.primary):hover,
+div[contenteditable=true]:not(:disabled):not(.primary):focus,
+div[contenteditable=true]:not(:disabled):not(.primary).active,
+.pager li a:not(:disabled):not(.primary):hover,
+.pager li a:not(:disabled):not(.primary):focus,
+.pager li a:not(:disabled):not(.primary).active {
+ /* active class used for multiselect */
+ border-color: var(--color-primary-element);
+ outline: none;
+}
+div.select2-drop .select2-search input:not(:disabled):not(.primary):active,
+select:not(:disabled):not(.primary):active,
+button:not(.button-vue):not(:disabled):not(.primary):active, .button:not(:disabled):not(.primary):active,
+input:not([type=range]):not(:disabled):not(.primary):active,
+textarea:not(:disabled):not(.primary):active,
+div[contenteditable=true]:not(:disabled):not(.primary):active,
+.pager li a:not(:disabled):not(.primary):active {
+ outline: none;
+ background-color: var(--color-main-background);
+ color: var(--color-text-light);
+}
+div.select2-drop .select2-search input:disabled,
+select:disabled,
+button:not(.button-vue):disabled, .button:disabled,
+input:not([type=range]):disabled,
+textarea:disabled,
+div[contenteditable=true]:disabled,
+.pager li a:disabled {
+ background-color: var(--color-background-dark);
+ color: var(--color-text-maxcontrast);
+ cursor: default;
+ opacity: 0.5;
+}
+div.select2-drop .select2-search input:required,
+select:required,
+button:not(.button-vue):required, .button:required,
+input:not([type=range]):required,
+textarea:required,
+div[contenteditable=true]:required,
+.pager li a:required {
+ box-shadow: none;
+}
+div.select2-drop .select2-search input:invalid,
+select:invalid,
+button:not(.button-vue):invalid, .button:invalid,
+input:not([type=range]):invalid,
+textarea:invalid,
+div[contenteditable=true]:invalid,
+.pager li a:invalid {
+ box-shadow: none !important;
+ border-color: var(--color-error);
+}
+div.select2-drop .select2-search input.primary,
+select.primary,
+button:not(.button-vue).primary, .button.primary,
+input:not([type=range]).primary,
+textarea.primary,
+div[contenteditable=true].primary,
+.pager li a.primary {
+ background-color: var(--color-primary-element);
+ border-color: var(--color-primary-element);
+ color: var(--color-primary-text);
+ cursor: pointer;
+ /* Apply border to primary button if on log in page (and not in a dark container) or if in header */
+}
+#body-login :not(.body-login-container) div.select2-drop .select2-search input.primary, #header div.select2-drop .select2-search input.primary,
+#body-login :not(.body-login-container) select.primary,
+#header select.primary,
+#body-login :not(.body-login-container) button:not(.button-vue).primary,
+#header button:not(.button-vue).primary, #body-login :not(.body-login-container) .button.primary, #header .button.primary,
+#body-login :not(.body-login-container) input:not([type=range]).primary,
+#header input:not([type=range]).primary,
+#body-login :not(.body-login-container) textarea.primary,
+#header textarea.primary,
+#body-login :not(.body-login-container) div[contenteditable=true].primary,
+#header div[contenteditable=true].primary,
+#body-login :not(.body-login-container) .pager li a.primary,
+#header .pager li a.primary {
+ border-color: var(--color-primary-text);
+}
+div.select2-drop .select2-search input.primary:not(:disabled):hover, div.select2-drop .select2-search input.primary:not(:disabled):focus, div.select2-drop .select2-search input.primary:not(:disabled):active,
+select.primary:not(:disabled):hover,
+select.primary:not(:disabled):focus,
+select.primary:not(:disabled):active,
+button:not(.button-vue).primary:not(:disabled):hover,
+button:not(.button-vue).primary:not(:disabled):focus,
+button:not(.button-vue).primary:not(:disabled):active, .button.primary:not(:disabled):hover, .button.primary:not(:disabled):focus, .button.primary:not(:disabled):active,
+input:not([type=range]).primary:not(:disabled):hover,
+input:not([type=range]).primary:not(:disabled):focus,
+input:not([type=range]).primary:not(:disabled):active,
+textarea.primary:not(:disabled):hover,
+textarea.primary:not(:disabled):focus,
+textarea.primary:not(:disabled):active,
+div[contenteditable=true].primary:not(:disabled):hover,
+div[contenteditable=true].primary:not(:disabled):focus,
+div[contenteditable=true].primary:not(:disabled):active,
+.pager li a.primary:not(:disabled):hover,
+.pager li a.primary:not(:disabled):focus,
+.pager li a.primary:not(:disabled):active {
+ background-color: var(--color-primary-element-light);
+ border-color: var(--color-primary-element-light);
+}
+div.select2-drop .select2-search input.primary:not(:disabled):active,
+select.primary:not(:disabled):active,
+button:not(.button-vue).primary:not(:disabled):active, .button.primary:not(:disabled):active,
+input:not([type=range]).primary:not(:disabled):active,
+textarea.primary:not(:disabled):active,
+div[contenteditable=true].primary:not(:disabled):active,
+.pager li a.primary:not(:disabled):active {
+ color: var(--color-primary-text-dark);
+}
+div.select2-drop .select2-search input.primary:disabled,
+select.primary:disabled,
+button:not(.button-vue).primary:disabled, .button.primary:disabled,
+input:not([type=range]).primary:disabled,
+textarea.primary:disabled,
+div[contenteditable=true].primary:disabled,
+.pager li a.primary:disabled {
+ background-color: var(--color-primary-element);
+ color: var(--color-primary-text-dark);
+ cursor: default;
+}
+
+div[contenteditable=false] {
+ margin: 3px 3px 3px 0;
+ padding: 7px 6px;
+ font-size: 13px;
+ background-color: var(--color-main-background);
+ color: var(--color-text-lighter);
+ border: 1px solid var(--color-background-darker);
+ outline: none;
+ border-radius: var(--border-radius);
+ background-color: var(--color-background-dark);
+ color: var(--color-text-lighter);
+ cursor: default;
+ opacity: 0.5;
+}
+
+/* Specific override */
+input {
+ /* Color input doesn't respect the initial height
+ so we need to set a custom one */
+}
+input:not([type=radio]):not([type=checkbox]):not([type=range]):not([type=submit]):not([type=button]):not([type=reset]):not([type=color]):not([type=file]):not([type=image]) {
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ height: 34px;
+}
+input[type=radio], input[type=checkbox], input[type=file], input[type=image] {
+ height: auto;
+ width: auto;
+}
+input[type=color] {
+ margin: 3px;
+ padding: 0 2px;
+ min-height: 30px;
+ width: 40px;
+ cursor: pointer;
+}
+input[type=hidden] {
+ height: 0;
+ width: 0;
+}
+input[type=time] {
+ width: initial;
+}
+
+/* 'Click' inputs */
+select,
+button:not(.button-vue), .button,
+input[type=button],
+input[type=submit],
+input[type=reset] {
+ padding: 6px 16px;
+ width: auto;
+ min-height: 34px;
+ cursor: pointer;
+ box-sizing: border-box;
+ background-color: var(--color-background-dark);
+}
+select:disabled,
+button:not(.button-vue):disabled, .button:disabled,
+input[type=button]:disabled,
+input[type=submit]:disabled,
+input[type=reset]:disabled {
+ cursor: default;
+}
+
+select *,
+button:not(.button-vue) *, .button * {
+ cursor: pointer;
+}
+select:disabled *,
+button:not(.button-vue):disabled *, .button:disabled * {
+ cursor: default;
+}
+
+/* Buttons */
+button:not(.button-vue), .button,
+input[type=button],
+input[type=submit],
+input[type=reset] {
+ font-weight: bold;
+ border-radius: var(--border-radius-pill);
+ /* Get rid of the inside dotted line in Firefox */
+}
+button:not(.button-vue)::-moz-focus-inner, .button::-moz-focus-inner,
+input[type=button]::-moz-focus-inner,
+input[type=submit]::-moz-focus-inner,
+input[type=reset]::-moz-focus-inner {
+ border: 0;
+}
+button:not(.button-vue).error, .button.error,
+input[type=button].error,
+input[type=submit].error,
+input[type=reset].error {
+ background-color: var(--color-error) !important;
+ border-color: var(--color-error) !important;
+ color: #fff !important;
+}
+
+button:not(.button-vue):not(.action-button) > span, .button > span {
+ /* icon position inside buttons */
+}
+button:not(.button-vue):not(.action-button) > span[class^=icon-], button:not(.button-vue):not(.action-button) > span[class*=" icon-"], .button > span[class^=icon-], .button > span[class*=" icon-"] {
+ display: inline-block;
+ vertical-align: text-bottom;
+ opacity: 0.5;
+}
+
+textarea, div[contenteditable=true] {
+ color: var(--color-main-text);
+ cursor: text;
+ font-family: inherit;
+ height: auto;
+}
+textarea:not(:disabled):active, textarea:not(:disabled):hover, textarea:not(:disabled):focus, div[contenteditable=true]:not(:disabled):active, div[contenteditable=true]:not(:disabled):hover, div[contenteditable=true]:not(:disabled):focus {
+ border-color: var(--color-background-darker) !important;
+ background-color: var(--color-main-background) !important;
+}
+
+div[contenteditable=false] {
+ color: var(--color-text-lighter);
+ font-family: inherit;
+ height: auto;
+}
+
+/* Override the ugly select arrow */
+select {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background: var(--icon-triangle-s-dark) no-repeat right 4px center;
+ background-color: inherit;
+ outline: 0;
+ padding-right: 24px !important;
+ height: 34px;
+}
+
+/* Confirm inputs */
+input[type=text], input[type=password], input[type=email] {
+ /* only show confirm borders if input is not focused */
+}
+input[type=text] + .icon-confirm, input[type=password] + .icon-confirm, input[type=email] + .icon-confirm {
+ margin-left: -8px !important;
+ border-left-color: transparent !important;
+ border-radius: 0 var(--border-radius) var(--border-radius) 0 !important;
+ background-clip: padding-box;
+ /* Avoid background under border */
+ background-color: var(--color-main-background) !important;
+ opacity: 1;
+ height: 34px;
+ width: 34px;
+ padding: 7px 6px;
+ cursor: pointer;
+ margin-right: 0;
+}
+input[type=text] + .icon-confirm:disabled, input[type=password] + .icon-confirm:disabled, input[type=email] + .icon-confirm:disabled {
+ cursor: default;
+ /* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */
+ background-image: var(--icon-confirm-fade-dark);
+}
+input[type=text]:not(:active):not(:hover):not(:focus):invalid + .icon-confirm, input[type=password]:not(:active):not(:hover):not(:focus):invalid + .icon-confirm, input[type=email]:not(:active):not(:hover):not(:focus):invalid + .icon-confirm {
+ border-color: var(--color-error);
+}
+input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:active, input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover, input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:active, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:active, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus {
+ border-color: var(--color-primary-element) !important;
+ border-radius: var(--border-radius) !important;
+}
+input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:active:disabled, input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover:disabled, input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus:disabled, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:active:disabled, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover:disabled, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus:disabled, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:active:disabled, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover:disabled, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus:disabled {
+ border-color: var(--color-background-darker) !important;
+}
+input[type=text]:active + .icon-confirm, input[type=text]:hover + .icon-confirm, input[type=text]:focus + .icon-confirm, input[type=password]:active + .icon-confirm, input[type=password]:hover + .icon-confirm, input[type=password]:focus + .icon-confirm, input[type=email]:active + .icon-confirm, input[type=email]:hover + .icon-confirm, input[type=email]:focus + .icon-confirm {
+ border-color: var(--color-primary-element) !important;
+ border-left-color: transparent !important;
+ /* above previous input */
+ z-index: 2;
+}
+
+/* Various Fixes */
+button img,
+.button img {
+ cursor: pointer;
+}
+
+select,
+.button.multiselect {
+ font-weight: normal;
+}
+
+/* Radio & Checkboxes */
+input[type=checkbox], input[type=radio] {
+ /* We do not use the variables as we keep the colours as white for this variant */
+}
+input[type=checkbox].radio, input[type=checkbox].checkbox, input[type=radio].radio, input[type=radio].checkbox {
+ position: absolute;
+ left: -10000px;
+ top: auto;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
+}
+input[type=checkbox].radio + label, input[type=checkbox].checkbox + label, input[type=radio].radio + label, input[type=radio].checkbox + label {
+ user-select: none;
+}
+input[type=checkbox].radio:disabled + label, input[type=checkbox].radio:disabled + label:before, input[type=checkbox].checkbox:disabled + label, input[type=checkbox].checkbox:disabled + label:before, input[type=radio].radio:disabled + label, input[type=radio].radio:disabled + label:before, input[type=radio].checkbox:disabled + label, input[type=radio].checkbox:disabled + label:before {
+ cursor: default;
+}
+input[type=checkbox].radio + label:before, input[type=checkbox].checkbox + label:before, input[type=radio].radio + label:before, input[type=radio].checkbox + label:before {
+ content: "";
+ display: inline-block;
+ height: 14px;
+ width: 14px;
+ vertical-align: middle;
+ border-radius: 50%;
+ margin: 0 6px 3px 3px;
+ border: 1px solid var(--color-text-lighter);
+}
+input[type=checkbox].radio:not(:disabled):not(:checked) + label:hover:before, input[type=checkbox].radio:focus + label:before, input[type=checkbox].checkbox:not(:disabled):not(:checked) + label:hover:before, input[type=checkbox].checkbox:focus + label:before, input[type=radio].radio:not(:disabled):not(:checked) + label:hover:before, input[type=radio].radio:focus + label:before, input[type=radio].checkbox:not(:disabled):not(:checked) + label:hover:before, input[type=radio].checkbox:focus + label:before {
+ border-color: var(--color-primary-element);
+}
+input[type=checkbox].radio:focus-visible + label, input[type=checkbox].checkbox:focus-visible + label, input[type=radio].radio:focus-visible + label, input[type=radio].checkbox:focus-visible + label {
+ outline-style: solid;
+ outline-color: var(--color-main-text);
+ outline-width: 1px;
+ outline-offset: 2px;
+}
+input[type=checkbox].radio:checked + label:before, input[type=checkbox].radio.checkbox:indeterminate + label:before, input[type=checkbox].checkbox:checked + label:before, input[type=checkbox].checkbox.checkbox:indeterminate + label:before, input[type=radio].radio:checked + label:before, input[type=radio].radio.checkbox:indeterminate + label:before, input[type=radio].checkbox:checked + label:before, input[type=radio].checkbox.checkbox:indeterminate + label:before {
+ /* ^ :indeterminate have a strange behavior on radio,
+ so we respecified the checkbox class again to be safe */
+ box-shadow: inset 0px 0px 0px 2px var(--color-main-background);
+ background-color: var(--color-primary-element);
+ border-color: var(--color-primary-element);
+}
+input[type=checkbox].radio:disabled + label:before, input[type=checkbox].checkbox:disabled + label:before, input[type=radio].radio:disabled + label:before, input[type=radio].checkbox:disabled + label:before {
+ border: 1px solid var(--color-text-lighter);
+ background-color: var(--color-text-maxcontrast) !important;
+ /* override other status */
+}
+input[type=checkbox].radio:checked:disabled + label:before, input[type=checkbox].checkbox:checked:disabled + label:before, input[type=radio].radio:checked:disabled + label:before, input[type=radio].checkbox:checked:disabled + label:before {
+ background-color: var(--color-text-maxcontrast);
+}
+input[type=checkbox].radio + label ~ em, input[type=checkbox].checkbox + label ~ em, input[type=radio].radio + label ~ em, input[type=radio].checkbox + label ~ em {
+ display: inline-block;
+ margin-left: 25px;
+}
+input[type=checkbox].radio + label ~ em:last-of-type, input[type=checkbox].checkbox + label ~ em:last-of-type, input[type=radio].radio + label ~ em:last-of-type, input[type=radio].checkbox + label ~ em:last-of-type {
+ margin-bottom: 14px;
+}
+input[type=checkbox].checkbox + label:before, input[type=radio].checkbox + label:before {
+ border-radius: 1px;
+ height: 14px;
+ width: 14px;
+ box-shadow: none !important;
+ background-position: center;
+}
+input[type=checkbox].checkbox:checked + label:before, input[type=radio].checkbox:checked + label:before {
+ background-image: url("../img/actions/checkbox-mark.svg");
+}
+input[type=checkbox].checkbox:indeterminate + label:before, input[type=radio].checkbox:indeterminate + label:before {
+ background-image: url("../img/actions/checkbox-mixed.svg");
+}
+input[type=checkbox].radio--white + label:before, input[type=checkbox].radio--white:focus + label:before, input[type=checkbox].checkbox--white + label:before, input[type=checkbox].checkbox--white:focus + label:before, input[type=radio].radio--white + label:before, input[type=radio].radio--white:focus + label:before, input[type=radio].checkbox--white + label:before, input[type=radio].checkbox--white:focus + label:before {
+ border-color: #bababa;
+}
+input[type=checkbox].radio--white:not(:disabled):not(:checked) + label:hover:before, input[type=checkbox].checkbox--white:not(:disabled):not(:checked) + label:hover:before, input[type=radio].radio--white:not(:disabled):not(:checked) + label:hover:before, input[type=radio].checkbox--white:not(:disabled):not(:checked) + label:hover:before {
+ border-color: #fff;
+}
+input[type=checkbox].radio--white:checked + label:before, input[type=checkbox].checkbox--white:checked + label:before, input[type=radio].radio--white:checked + label:before, input[type=radio].checkbox--white:checked + label:before {
+ box-shadow: inset 0px 0px 0px 2px var(--color-main-background);
+ background-color: #dbdbdb;
+ border-color: #dbdbdb;
+}
+input[type=checkbox].radio--white:disabled + label:before, input[type=checkbox].checkbox--white:disabled + label:before, input[type=radio].radio--white:disabled + label:before, input[type=radio].checkbox--white:disabled + label:before {
+ background-color: #bababa !important;
+ /* override other status */
+ border-color: rgba(255, 255, 255, 0.4) !important;
+ /* override other status */
+}
+input[type=checkbox].radio--white:checked:disabled + label:before, input[type=checkbox].checkbox--white:checked:disabled + label:before, input[type=radio].radio--white:checked:disabled + label:before, input[type=radio].checkbox--white:checked:disabled + label:before {
+ box-shadow: inset 0px 0px 0px 2px var(--color-main-background);
+ border-color: rgba(255, 255, 255, 0.4) !important;
+ /* override other status */
+ background-color: #bababa;
+}
+input[type=checkbox].checkbox--white:checked + label:before, input[type=checkbox].checkbox--white:indeterminate + label:before, input[type=radio].checkbox--white:checked + label:before, input[type=radio].checkbox--white:indeterminate + label:before {
+ background-color: transparent !important;
+ /* Override default checked */
+ border-color: #fff !important;
+ /* Override default checked */
+ background-image: url("../img/actions/checkbox-mark-white.svg");
+}
+input[type=checkbox].checkbox--white:indeterminate + label:before, input[type=radio].checkbox--white:indeterminate + label:before {
+ background-image: url("../img/actions/checkbox-mixed-white.svg");
+}
+input[type=checkbox].checkbox--white:disabled + label:before, input[type=radio].checkbox--white:disabled + label:before {
+ opacity: 0.7;
+ /* No other choice for white background image */
+}
+
+/* Select2 overriding. Merged to core with vendor stylesheet */
+div.select2-drop {
+ margin-top: -2px;
+ background-color: var(--color-main-background);
+}
+div.select2-drop.select2-drop-active {
+ border-color: var(--color-border-dark);
+}
+div.select2-drop .avatar {
+ display: inline-block;
+ margin-right: 8px;
+ vertical-align: middle;
+}
+div.select2-drop .avatar img {
+ cursor: pointer;
+}
+div.select2-drop .select2-search input {
+ min-height: auto;
+ background: var(--icon-search-dark) no-repeat right center !important;
+ background-origin: content-box !important;
+}
+div.select2-drop .select2-results {
+ max-height: 250px;
+ margin: 0;
+ padding: 0;
+}
+div.select2-drop .select2-results .select2-result-label {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+div.select2-drop .select2-results .select2-result-label span {
+ cursor: pointer;
+}
+div.select2-drop .select2-results .select2-result-label span em {
+ cursor: inherit;
+ background: unset;
+}
+div.select2-drop .select2-results .select2-result,
+div.select2-drop .select2-results .select2-no-results,
+div.select2-drop .select2-results .select2-searching {
+ position: relative;
+ display: list-item;
+ padding: 12px;
+ background-color: transparent;
+ cursor: pointer;
+ color: var(--color-text-lighter);
+}
+div.select2-drop .select2-results .select2-result.select2-selected {
+ background-color: var(--color-background-dark);
+}
+div.select2-drop .select2-results .select2-highlighted {
+ background-color: var(--color-background-dark);
+ color: var(--color-main-text);
+}
+
+.select2-chosen .avatar,
+.select2-chosen .avatar img,
+#select2-drop .avatar,
+#select2-drop .avatar img {
+ cursor: pointer;
+}
+
+div.select2-container-multi .select2-choices, div.select2-container-multi.select2-container-active .select2-choices {
+ box-shadow: none;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ background: var(--color-main-background);
+ color: var(--color-text-lighter) !important;
+ box-sizing: content-box;
+ border-radius: var(--border-radius);
+ border: 1px solid var(--color-border-dark);
+ margin: 0;
+ padding: 2px 0;
+ min-height: auto;
+}
+div.select2-container-multi .select2-choices .select2-search-choice, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice {
+ line-height: 20px;
+ padding-left: 5px;
+}
+div.select2-container-multi .select2-choices .select2-search-choice.select2-search-choice-focus, div.select2-container-multi .select2-choices .select2-search-choice:hover, div.select2-container-multi .select2-choices .select2-search-choice:active, div.select2-container-multi .select2-choices .select2-search-choice, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice.select2-search-choice-focus, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:hover, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:active, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice {
+ background-image: none;
+ background-color: var(--color-main-background);
+ color: var(--color-text-lighter);
+ border: 1px solid var(--color-border-dark);
+}
+div.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice .select2-search-choice-close {
+ display: none;
+}
+div.select2-container-multi .select2-choices .select2-search-field input, div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input {
+ line-height: 20px;
+}
+div.select2-container-multi .select2-choices .select2-search-field input.select2-active, div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input.select2-active {
+ background: none !important;
+}
+
+div.select2-container {
+ margin: 3px 3px 3px 0;
+}
+div.select2-container.select2-container-multi .select2-choices {
+ display: flex;
+ flex-wrap: wrap;
+}
+div.select2-container.select2-container-multi .select2-choices li {
+ float: none;
+}
+div.select2-container a.select2-choice {
+ box-shadow: none;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ background: var(--color-main-background);
+ color: var(--color-text-lighter) !important;
+ box-sizing: content-box;
+ border-radius: var(--border-radius);
+ border: 1px solid var(--color-border-dark);
+ margin: 0;
+ padding: 2px 0;
+ padding-left: 6px;
+ min-height: auto;
+}
+div.select2-container a.select2-choice .select2-search-choice {
+ line-height: 20px;
+ padding-left: 5px;
+ background-image: none;
+ background-color: var(--color-background-dark);
+ border-color: var(--color-background-dark);
+}
+div.select2-container a.select2-choice .select2-search-choice .select2-search-choice-close {
+ display: none;
+}
+div.select2-container a.select2-choice .select2-search-choice.select2-search-choice-focus, div.select2-container a.select2-choice .select2-search-choice:hover {
+ background-color: var(--color-border);
+ border-color: var(--color-border);
+}
+div.select2-container a.select2-choice .select2-arrow {
+ background: none;
+ border-radius: 0;
+ border: none;
+}
+div.select2-container a.select2-choice .select2-arrow b {
+ background: var(--icon-triangle-s-dark) no-repeat center !important;
+ opacity: 0.5;
+}
+div.select2-container a.select2-choice:hover .select2-arrow b, div.select2-container a.select2-choice:focus .select2-arrow b, div.select2-container a.select2-choice:active .select2-arrow b {
+ opacity: 0.7;
+}
+div.select2-container a.select2-choice .select2-search-field input {
+ line-height: 20px;
+}
+
+/* Vue v-select */
+.v-select {
+ margin: 3px 3px 3px 0;
+ display: inline-block;
+}
+.v-select .dropdown-toggle {
+ display: flex !important;
+ flex-wrap: wrap;
+}
+.v-select .dropdown-toggle .selected-tag {
+ line-height: 20px;
+ padding-left: 5px;
+ background-image: none;
+ background-color: var(--color-main-background);
+ color: var(--color-text-lighter);
+ border: 1px solid var(--color-border-dark);
+ display: inline-flex;
+ align-items: center;
+}
+.v-select .dropdown-toggle .selected-tag .close {
+ margin-left: 3px;
+}
+.v-select .dropdown-menu {
+ padding: 0;
+}
+.v-select .dropdown-menu li {
+ padding: 5px;
+ position: relative;
+ display: list-item;
+ background-color: transparent;
+ cursor: pointer;
+ color: var(--color-text-lighter);
+}
+.v-select .dropdown-menu li a {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ height: 25px;
+ padding: 3px 7px 4px 2px;
+ margin: 0;
+ cursor: pointer;
+ min-height: 1em;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ display: inline-flex;
+ align-items: center;
+ background-color: transparent !important;
+ color: inherit !important;
+}
+.v-select .dropdown-menu li a::before {
+ content: " ";
+ background-image: var(--icon-checkmark-dark);
+ background-repeat: no-repeat;
+ background-position: center;
+ min-width: 16px;
+ min-height: 16px;
+ display: block;
+ opacity: 0.5;
+ margin-right: 5px;
+ visibility: hidden;
+}
+.v-select .dropdown-menu li.highlight {
+ color: var(--color-main-text);
+}
+.v-select .dropdown-menu li.active > a {
+ background-color: var(--color-background-dark);
+ color: var(--color-main-text);
+}
+.v-select .dropdown-menu li.active > a::before {
+ visibility: visible;
+}
+
+/* Vue multiselect */
+.multiselect.multiselect-vue {
+ margin: 1px 2px;
+ padding: 0 !important;
+ display: inline-block;
+ width: 160px;
+ position: relative;
+ background-color: var(--color-main-background);
+ /* results wrapper */
+}
+.multiselect.multiselect-vue.multiselect--active {
+ /* Opened: force display the input */
+}
+.multiselect.multiselect-vue.multiselect--active input.multiselect__input {
+ opacity: 1 !important;
+ cursor: text !important;
+}
+.multiselect.multiselect-vue.multiselect--disabled, .multiselect.multiselect-vue.multiselect--disabled .multiselect__single {
+ background-color: var(--color-background-dark) !important;
+}
+.multiselect.multiselect-vue .multiselect__tags {
+ /* space between tags and limit tag */
+ display: flex;
+ flex-wrap: nowrap;
+ overflow: hidden;
+ border: 1px solid var(--color-border-dark);
+ cursor: pointer;
+ position: relative;
+ border-radius: var(--border-radius);
+ height: 34px;
+ /* tag wrapper */
+ /* Single select default value */
+ /* displayed text if tag limit reached */
+ /* default multiselect input for search and placeholder */
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap {
+ align-items: center;
+ display: inline-flex;
+ overflow: hidden;
+ max-width: 100%;
+ position: relative;
+ padding: 3px 5px;
+ flex-grow: 1;
+ /* no tags or simple select? Show input directly
+ input is used to display single value */
+ /* selected tag */
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input {
+ opacity: 1 !important;
+ /* hide default empty text, show input instead */
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input + span:not(.multiselect__single) {
+ display: none;
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap .multiselect__tag {
+ flex: 1 0 0;
+ line-height: 20px;
+ padding: 1px 5px;
+ background-image: none;
+ color: var(--color-text-lighter);
+ border: 1px solid var(--color-border-dark);
+ display: inline-flex;
+ align-items: center;
+ border-radius: var(--border-radius);
+ /* require to override the default width
+ and force the tag to shring properly */
+ min-width: 0;
+ max-width: 50%;
+ max-width: fit-content;
+ max-width: -moz-fit-content;
+ /* css hack, detect if more than two tags
+ if so, flex-basis is set to half */
+ /* ellipsis the groups to be sure
+ we display at least two of them */
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap .multiselect__tag:only-child {
+ flex: 0 1 auto;
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap .multiselect__tag:not(:last-child) {
+ margin-right: 5px;
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap .multiselect__tag > span {
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__single {
+ padding: 8px 10px;
+ flex: 0 0 100%;
+ z-index: 1;
+ /* above input */
+ background-color: var(--color-main-background);
+ cursor: pointer;
+ line-height: 17px;
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__strong,
+.multiselect.multiselect-vue .multiselect__tags .multiselect__limit {
+ flex: 0 0 auto;
+ line-height: 20px;
+ color: var(--color-text-lighter);
+ display: inline-flex;
+ align-items: center;
+ opacity: 0.7;
+ margin-right: 5px;
+ /* above the input */
+ z-index: 5;
+}
+.multiselect.multiselect-vue .multiselect__tags input.multiselect__input {
+ width: 100% !important;
+ position: absolute !important;
+ margin: 0;
+ opacity: 0;
+ /* let's leave it on top of tags but hide it */
+ height: 100%;
+ border: none;
+ /* override hide to force show the placeholder */
+ display: block !important;
+ /* only when not active */
+ cursor: pointer;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper {
+ position: absolute;
+ width: 100%;
+ margin-top: -1px;
+ border: 1px solid var(--color-border-dark);
+ background: var(--color-main-background);
+ z-index: 50;
+ max-height: 175px !important;
+ overflow-y: auto;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper .multiselect__content {
+ width: 100%;
+ padding: 5px 0;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li {
+ padding: 5px;
+ position: relative;
+ display: flex;
+ align-items: center;
+ background-color: transparent;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li,
+.multiselect.multiselect-vue .multiselect__content-wrapper li span {
+ cursor: pointer;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ height: 20px;
+ margin: 0;
+ min-height: 1em;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ display: inline-flex;
+ align-items: center;
+ background-color: transparent !important;
+ color: var(--color-text-lighter);
+ width: 100%;
+ /* selected checkmark icon */
+ /* add the prop tag-placeholder="create" to add the +
+ * icon on top of an unknown-and-ready-to-be-created entry
+ */
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span::before {
+ content: " ";
+ background-image: var(--icon-checkmark-dark);
+ background-repeat: no-repeat;
+ background-position: center;
+ min-width: 16px;
+ min-height: 16px;
+ display: block;
+ opacity: 0.5;
+ margin-right: 5px;
+ visibility: hidden;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span.multiselect__option--disabled {
+ background-color: var(--color-background-dark);
+ opacity: 0.5;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span[data-select=create]::before {
+ background-image: var(--icon-add-dark);
+ visibility: visible;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span.multiselect__option--highlight {
+ color: var(--color-main-text);
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span:not(.multiselect__option--disabled):hover::before {
+ opacity: 0.3;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span.multiselect__option--selected::before, .multiselect.multiselect-vue .multiselect__content-wrapper li > span:not(.multiselect__option--disabled):hover::before {
+ visibility: visible;
+}
+
+/* Progressbar */
+progress:not(.vue) {
+ display: block;
+ width: 100%;
+ padding: 0;
+ border: 0 none;
+ background-color: var(--color-background-dark);
+ border-radius: var(--border-radius);
+ flex-basis: 100%;
+ height: 5px;
+ overflow: hidden;
+}
+progress:not(.vue).warn::-moz-progress-bar {
+ background: var(--color-error);
+}
+progress:not(.vue).warn::-webkit-progress-value {
+ background: var(--color-error);
+}
+progress:not(.vue)::-webkit-progress-bar {
+ background: transparent;
+}
+progress:not(.vue)::-moz-progress-bar {
+ border-radius: var(--border-radius);
+ background: var(--color-primary);
+ transition: 250ms all ease-in-out;
+}
+progress:not(.vue)::-webkit-progress-value {
+ border-radius: var(--border-radius);
+ background: var(--color-primary);
+ transition: 250ms all ease-in-out;
+}
+
+/* Animation */
+@keyframes shake {
+ 10%, 90% {
+ transform: translate(-1px);
+ }
+ 20%, 80% {
+ transform: translate(2px);
+ }
+ 30%, 50%, 70% {
+ transform: translate(-4px);
+ }
+ 40%, 60% {
+ transform: translate(4px);
+ }
+}
+.shake {
+ animation-name: shake;
+ animation-duration: 0.7s;
+ animation-timing-function: ease-out;
+}
+
+label.infield {
+ position: absolute;
+ left: -10000px;
+ top: -10000px;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
+}
+
+::placeholder,
+::-ms-input-placeholder,
+::-webkit-input-placeholder {
+ color: var(--color-text-maxcontrast);
+}
+
+/*# sourceMappingURL=inputs.css.map */
diff --git a/core/css/inputs.css.map b/core/css/inputs.css.map
new file mode 100644
index 00000000000..02bd287fa2c
--- /dev/null
+++ b/core/css/inputs.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["variables.scss","inputs.scss","functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAKD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA4BA;;AA1BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QAvHe;;AAyHhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA,YA1JgB;EA2JhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAKD;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;;AAEC;EAGC;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,QA9OgB;;;AAiPjB;AAEC;AAsBC;;AAnBA;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QA9Pc;EA+Pd,OA/Pc;EAgQd;EACA;EACA;;AACA;EACC;AC7NH;EAEA;;ADmOG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAQL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;AAiHA;;AAhHA;AACC;;AACA;EACC;EACA;;AAGF;EAEC;;AAED;AACC;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QA1rBe;AA2rBf;AAoDA;AASA;AAaA;;AAzEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;AASA;;AAPA;EACC;AACA;;AACA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;EAEA;EACA;EACA;EACA;AACA;AAAA;AAQA;AAAA;;AANA;EACC;;AAED;EACC,cAnDa;;AAuDd;EACC;EACA;EACA;;AAKH;EACC;EACA;EACA;AAAY;EACZ;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA,cAhFe;AAiFf;EACA;;AAGD;EACC;EACA;EACA;EACA;AACA;EACA;EACA;AACA;EACA;AACA;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAiBA;AAAA;AAAA;;AAhBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAMA;EACC;EACA;;AAGF;EACC;;AAED;EACC;;AAIA;EACC;;;AAQN;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC","file":"inputs.css"} \ No newline at end of file
diff --git a/core/css/inputs.scss b/core/css/inputs.scss
index 4d444df8f62..0b7204ab78e 100644
--- a/core/css/inputs.scss
+++ b/core/css/inputs.scss
@@ -255,7 +255,7 @@ select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
- background: var(--icon-triangle-s-000) no-repeat right 4px center;
+ background: var(--icon-triangle-s-dark) no-repeat right 4px center;
background-color: inherit;
outline: 0;
padding-right: 24px !important;
@@ -332,8 +332,6 @@ select,
/* Radio & Checkboxes */
$checkbox-radio-size: 14px;
-$color-checkbox-radio-disabled: nc-darken(variables.$color-main-background, 27%);
-$color-checkbox-radio-border: nc-darken(variables.$color-main-background, 47%);
$color-checkbox-radio-white: #fff;
input {
@@ -362,7 +360,7 @@ input {
vertical-align: middle;
border-radius: 50%;
margin: 0 6px 3px 3px;
- border: 1px solid $color-checkbox-radio-border;
+ border: 1px solid var(--color-text-lighter);
}
&:not(:disabled):not(:checked) + label:hover:before,
&:focus + label:before {
@@ -383,11 +381,11 @@ input {
border-color: var(--color-primary-element);
}
&:disabled + label:before {
- border: 1px solid $color-checkbox-radio-border;
- background-color: $color-checkbox-radio-disabled !important; /* override other status */
+ border: 1px solid var(--color-text-lighter);
+ background-color: var(--color-text-maxcontrast) !important; /* override other status */
}
&:checked:disabled + label:before {
- background-color: $color-checkbox-radio-disabled;
+ background-color: var(--color-text-maxcontrast);
}
// Detail description below label of checkbox or radio button
@@ -415,7 +413,7 @@ input {
}
}
- /* We do not use the nc-darken function as this is not supposed to be changed */
+ /* We do not use the variables as we keep the colours as white for this variant */
&.radio--white,
&.checkbox--white {
+ label:before,
@@ -474,7 +472,7 @@ div.select2-drop {
}
.select2-search input {
min-height: auto;
- background: var(--icon-search-000) no-repeat right center !important;
+ background: var(--icon-search-dark) no-repeat right center !important;
background-origin: content-box !important;
}
.select2-results {
@@ -601,7 +599,7 @@ div.select2-container {
border-radius: 0;
border: none;
b {
- background: var(--icon-triangle-s-000) no-repeat center !important;
+ background: var(--icon-triangle-s-dark) no-repeat center !important;
opacity: .5;
}
}
@@ -666,7 +664,7 @@ div.select2-container {
color: inherit !important;
&::before {
content: ' ';
- background-image: var(--icon-checkmark-000);
+ background-image: var(--icon-checkmark-dark);
background-repeat: no-repeat;
background-position: center;
min-width: 16px;
@@ -856,7 +854,7 @@ div.select2-container {
/* selected checkmark icon */
&::before {
content: ' ';
- background-image: var(--icon-checkmark-000);
+ background-image: var(--icon-checkmark-dark);
background-repeat: no-repeat;
background-position: center;
min-width: 16px;
@@ -875,7 +873,7 @@ div.select2-container {
*/
&[data-select='create'] {
&::before {
- background-image: var(--icon-add-000);
+ background-image: var(--icon-add-dark);
visibility: visible;
}
}
diff --git a/core/css/mobile.css b/core/css/mobile.css
new file mode 100644
index 00000000000..0cc41788b7a
--- /dev/null
+++ b/core/css/mobile.css
@@ -0,0 +1,198 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+@media only screen and (max-width: 1024px) {
+ /* position share dropdown */
+ #dropdown {
+ margin-right: 10% !important;
+ width: 80% !important;
+ }
+
+ /* fix name autocomplete not showing on mobile */
+ .ui-autocomplete {
+ z-index: 1000 !important;
+ }
+
+ /* fix error display on smaller screens */
+ .error-wide {
+ width: 100%;
+ margin-left: 0 !important;
+ box-sizing: border-box;
+ }
+
+ /* APP SIDEBAR TOGGLE and SWIPE ----------------------------------------------*/
+ #app-navigation {
+ transform: translateX(-300px);
+ }
+
+ .snapjs-left #app-navigation {
+ transform: translateX(0);
+ }
+
+ #app-navigation:not(.hidden) + #app-content {
+ margin-left: 0;
+ }
+
+ .skip-navigation.skip-content {
+ left: 3px;
+ margin-left: 0;
+ }
+
+ /* full width for message list on mobile */
+ .app-content-list {
+ background: var(--color-main-background);
+ flex: 1 1 100%;
+ max-height: unset;
+ max-width: 100%;
+ }
+ .app-content-list + .app-content-details {
+ display: none;
+ }
+ .app-content-list.showdetails {
+ display: none;
+ }
+ .app-content-list.showdetails + .app-content-details {
+ display: initial;
+ }
+
+ /* Show app details page */
+ #app-content.showdetails #app-navigation-toggle {
+ transform: translateX(-44px);
+ }
+ #app-content.showdetails #app-navigation-toggle-back {
+ position: fixed;
+ display: inline-block !important;
+ top: 50px;
+ left: 0;
+ width: 44px;
+ height: 44px;
+ z-index: 1050;
+ background-color: rgba(255, 255, 255, 0.7);
+ cursor: pointer;
+ opacity: 0.6;
+ transform: rotate(90deg);
+ }
+ #app-content.showdetails .app-content-list {
+ transform: translateX(-100%);
+ }
+
+ #app-navigation-toggle {
+ position: fixed;
+ display: inline-block !important;
+ left: 0;
+ width: 44px;
+ height: 44px;
+ z-index: 1050;
+ cursor: pointer;
+ opacity: 0.6;
+ }
+
+ #app-navigation-toggle:hover,
+#app-navigation-toggle:focus {
+ opacity: 1;
+ }
+
+ /* position controls for apps with app-navigation */
+ #app-navigation + #app-content #controls {
+ padding-left: 44px;
+ }
+
+ /* .viewer-mode is when text editor, PDF viewer, etc is open */
+ #body-user .app-files.viewer-mode #controls {
+ padding-left: 0 !important;
+ }
+
+ .app-files.viewer-mode #app-navigation-toggle {
+ display: none !important;
+ }
+
+ table.multiselect thead {
+ left: 0 !important;
+ }
+
+ /* prevent overflow in user management controls bar */
+ #usersearchform {
+ display: none;
+ }
+
+ #body-settings #controls {
+ min-width: 1024px !important;
+ }
+
+ /* do not show dates in filepicker */
+ #oc-dialog-filepicker-content .filelist #headerSize,
+#oc-dialog-filepicker-content .filelist #headerDate,
+#oc-dialog-filepicker-content .filelist .filesize,
+#oc-dialog-filepicker-content .filelist .date {
+ display: none;
+ }
+
+ #oc-dialog-filepicker-content .filelist .filename {
+ max-width: 100%;
+ }
+
+ .snapjs-left table.multiselect thead {
+ top: 44px;
+ }
+
+ /* end of media query */
+}
+@media only screen and (max-width: 480px) {
+ #header .header-right > div > .menu {
+ max-width: calc(100vw - 10px);
+ position: fixed;
+ }
+ #header .header-right > div > .menu::after {
+ display: none !important;
+ }
+
+ /* Arrow directly child of menutoggle */
+ #header .header-right > div {
+ /* settings need a different offset, since they have a right padding */
+ }
+ #header .header-right > div.openedMenu::after {
+ display: block;
+ }
+ #header .header-right > div::after {
+ border: 10px solid transparent;
+ border-bottom-color: var(--color-main-background);
+ bottom: 0;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ right: 15px;
+ z-index: 2001;
+ display: none;
+ }
+ #header .header-right > div#settings::after {
+ right: 27px;
+ }
+
+ #notification-container {
+ max-width: 100%;
+ width: 100%;
+ }
+}
+
+/*# sourceMappingURL=mobile.css.map */
diff --git a/core/css/mobile.css.map b/core/css/mobile.css.map
new file mode 100644
index 00000000000..5601256135d
--- /dev/null
+++ b/core/css/mobile.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["variables.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;AAEC;EACA;IACC;IACA;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAGD;EACA;IACC;;;EAGA;IACC;;;EAIF;IACC;;;EAGD;IACC;IACA;;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KDuCa;ICtCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;EAED;AAAA;IAEC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC;;;EAIF;IACC;IACA","file":"mobile.css"} \ No newline at end of file
diff --git a/core/css/public.css b/core/css/public.css
new file mode 100644
index 00000000000..a936d0c4152
--- /dev/null
+++ b/core/css/public.css
@@ -0,0 +1,72 @@
+#body-public {
+ /** don't apply content header padding on the base layout */
+ /* force layout to make sure the content element's height matches its contents' height */
+ /* public footer */
+}
+#body-public .header-right #header-primary-action a {
+ color: var(--color-primary-text);
+}
+#body-public .header-right #header-secondary-action ul li {
+ min-width: 270px;
+}
+#body-public .header-right #header-secondary-action #header-actions-toggle {
+ background-color: transparent;
+ border-color: transparent;
+}
+#body-public .header-right #header-secondary-action #header-actions-toggle:hover, #body-public .header-right #header-secondary-action #header-actions-toggle:focus, #body-public .header-right #header-secondary-action #header-actions-toggle:active {
+ opacity: 1;
+}
+#body-public .header-right #header-secondary-action #external-share-menu-item form {
+ display: flex;
+}
+#body-public .header-right #header-secondary-action #external-share-menu-item .hidden {
+ display: none;
+}
+#body-public .header-right #header-secondary-action #external-share-menu-item #save-button-confirm {
+ flex-grow: 0;
+}
+#body-public #content {
+ min-height: calc(100% - 65px);
+}
+#body-public.layout-base #content {
+ padding-top: 0;
+}
+#body-public .ie #content {
+ display: inline-block;
+}
+#body-public p.info {
+ margin: 20px auto;
+ text-shadow: 0 0 2px rgba(0, 0, 0, 0.4);
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+#body-public p.info, #body-public form fieldset legend,
+#body-public #datadirContent label,
+#body-public form fieldset .warning-info,
+#body-public form input[type=checkbox] + label {
+ text-align: center;
+}
+#body-public footer {
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 65px;
+ flex-direction: column;
+}
+#body-public footer p {
+ text-align: center;
+ color: var(--color-text-lighter);
+}
+#body-public footer p a {
+ color: var(--color-text-lighter);
+ font-weight: bold;
+ white-space: nowrap;
+ /* increasing clickability to more than the text height */
+ padding: 10px;
+ margin: -10px;
+ line-height: 200%;
+}
+
+/*# sourceMappingURL=public.css.map */
diff --git a/core/css/public.css.map b/core/css/public.css.map
new file mode 100644
index 00000000000..e3229512ffa
--- /dev/null
+++ b/core/css/public.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["public.scss"],"names":[],"mappings":"AAEA;AAyCC;AAKA;AAoBA;;AA/DC;EACC;;AAIA;EACC;;AAED;EACC;EACA;;AAEA;EAGC;;AAID;EACC;;AAED;EACC;;AAED;EACC;;AAMJ;EAEC;;AAKD;EACC;;AAID;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;EAIC;;AAID;EACC;EACA;EACA;EACA;EACA,QA1Ec;EA2Ed;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;AACA;EACA;EACA;EACA","file":"public.css"} \ No newline at end of file
diff --git a/core/css/server.css b/core/css/server.css
new file mode 100644
index 00000000000..beb10cd1e73
--- /dev/null
+++ b/core/css/server.css
@@ -0,0 +1,5178 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+@import url("../../dist/icons.css");
+/**
+ * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
+ * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
+ * @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>
+ * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
+ * @copyright Copyright (c) 2016, Joas Schilling <coding@schilljs.com>
+ * @copyright Copyright (c) 2016, Morris Jobke <hey@morrisjobke.de>
+ * @copyright Copyright (c) 2016, Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @copyright Copyright (c) 2016, Raghu Nayyar <hey@raghunayyar.com>
+ * @copyright Copyright (c) 2011-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
+ * @copyright Copyright (c) 2019-2020, Gary Kim <gary@garykim.dev>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ */
+html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ font-weight: inherit;
+ font-size: 100%;
+ font-family: inherit;
+ vertical-align: baseline;
+ cursor: default;
+ scrollbar-color: var(--color-border-dark) transparent;
+ scrollbar-width: thin;
+}
+
+html, body {
+ height: 100%;
+}
+
+article, aside, dialog, figure, footer, header, hgroup, nav, section {
+ display: block;
+}
+
+body {
+ line-height: 1.5;
+}
+
+table {
+ border-collapse: separate;
+ border-spacing: 0;
+ white-space: nowrap;
+}
+
+caption, th, td {
+ text-align: left;
+ font-weight: normal;
+}
+
+table, td, th {
+ vertical-align: middle;
+}
+
+a {
+ border: 0;
+ color: var(--color-main-text);
+ text-decoration: none;
+ cursor: pointer;
+}
+a * {
+ cursor: pointer;
+}
+
+a.external {
+ margin: 0 3px;
+ text-decoration: underline;
+}
+
+input {
+ cursor: pointer;
+}
+input * {
+ cursor: pointer;
+}
+
+select, .button span, label {
+ cursor: pointer;
+}
+
+ul {
+ list-style: none;
+}
+
+body {
+ background-color: var(--color-main-background);
+ font-weight: normal;
+ /* bring the default font size up to 15px */
+ font-size: var(--default-font-size);
+ line-height: var(--default-line-height);
+ font-family: var(--font-face);
+ color: var(--color-main-text);
+}
+
+.two-factor-header {
+ text-align: center;
+}
+
+.two-factor-provider {
+ text-align: center;
+ width: 258px !important;
+ display: inline-block;
+ margin-bottom: 0 !important;
+ background-color: var(--color-background-darker) !important;
+ border: none !important;
+}
+
+.two-factor-link {
+ display: inline-block;
+ padding: 12px;
+ color: var(--color-text-lighter);
+}
+
+.float-spinner {
+ height: 32px;
+ display: none;
+}
+
+#nojavascript {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ z-index: 9000;
+ text-align: center;
+ background-color: var(--color-background-darker);
+ color: var(--color-primary-text);
+ line-height: 125%;
+ font-size: 24px;
+}
+#nojavascript div {
+ display: block;
+ position: relative;
+ width: 50%;
+ top: 35%;
+ margin: 0px auto;
+}
+#nojavascript a {
+ color: var(--color-primary-text);
+ border-bottom: 2px dotted var(--color-main-background);
+}
+#nojavascript a:hover, #nojavascript a:focus {
+ color: var(--color-primary-text-dark);
+}
+
+/* SCROLLING */
+::-webkit-scrollbar {
+ width: 12px;
+ height: 12px;
+}
+
+::-webkit-scrollbar-track-piece {
+ background-color: transparent;
+}
+
+::-webkit-scrollbar-thumb {
+ background: var(--color-border-dark);
+ border-radius: var(--border-radius-large);
+ border: 2px solid transparent;
+ background-clip: content-box;
+}
+
+/* SELECTION */
+::selection {
+ background-color: var(--color-primary-element);
+ color: var(--color-primary-text);
+}
+
+/* CONTENT ------------------------------------------------------------------ */
+#controls {
+ box-sizing: border-box;
+ position: -webkit-sticky;
+ position: sticky;
+ height: 44px;
+ padding: 0;
+ margin: 0;
+ background-color: var(--color-main-background-translucent);
+ z-index: 62;
+ /* must be above the filelist sticky header and texteditor menubar */
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ display: flex;
+ top: 50px;
+}
+
+/* position controls for apps with app-navigation */
+.viewer-mode #app-navigation + #app-content #controls {
+ left: 0;
+}
+
+#app-navigation * {
+ box-sizing: border-box;
+}
+
+#controls .actions > div > .button, #controls .actions > div button, #controls .actions > .button, #controls .actions button {
+ box-sizing: border-box;
+ display: inline-block;
+ display: flex;
+ height: 36px;
+ width: 36px;
+ padding: 9px;
+ align-items: center;
+ justify-content: center;
+}
+#controls .actions > div .button.hidden, #controls .actions .button.hidden {
+ display: none;
+}
+
+/* EMPTY CONTENT DISPLAY ------------------------------------------------------------ */
+#emptycontent,
+.emptycontent {
+ color: var(--color-text-maxcontrast);
+ text-align: center;
+ margin-top: 30vh;
+ width: 100%;
+}
+#app-sidebar #emptycontent,
+#app-sidebar .emptycontent {
+ margin-top: 10vh;
+}
+#emptycontent .emptycontent-search,
+.emptycontent .emptycontent-search {
+ position: static;
+}
+#emptycontent h2,
+.emptycontent h2 {
+ margin-bottom: 10px;
+}
+#emptycontent [class^=icon-],
+#emptycontent [class*=icon-],
+.emptycontent [class^=icon-],
+.emptycontent [class*=icon-] {
+ background-size: 64px;
+ height: 64px;
+ width: 64px;
+ margin: 0 auto 15px;
+}
+#emptycontent [class^=icon-]:not([class^=icon-loading]), #emptycontent [class^=icon-]:not([class*=icon-loading]),
+#emptycontent [class*=icon-]:not([class^=icon-loading]),
+#emptycontent [class*=icon-]:not([class*=icon-loading]),
+.emptycontent [class^=icon-]:not([class^=icon-loading]),
+.emptycontent [class^=icon-]:not([class*=icon-loading]),
+.emptycontent [class*=icon-]:not([class^=icon-loading]),
+.emptycontent [class*=icon-]:not([class*=icon-loading]) {
+ opacity: 0.4;
+}
+
+/* LOG IN & INSTALLATION ------------------------------------------------------------ */
+#datadirContent label {
+ width: 100%;
+}
+
+/* strengthify wrapper */
+/* General new input field look */
+/* Nicely grouping input field sets */
+.grouptop, .groupmiddle, .groupbottom {
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+/* Show password toggle */
+#show, #dbpassword {
+ position: absolute;
+ right: 1em;
+ top: 0.8em;
+ float: right;
+}
+
+#show + label, #dbpassword + label {
+ right: 21px;
+ top: 15px !important;
+ margin: -14px !important;
+ padding: 14px !important;
+}
+
+#show:checked + label, #dbpassword:checked + label, #personal-show:checked + label {
+ opacity: 0.8;
+}
+
+#show + label, #dbpassword + label, #personal-show + label {
+ position: absolute !important;
+ height: 20px;
+ width: 24px;
+ background-image: var(--icon-toggle-dark);
+ background-repeat: no-repeat;
+ background-position: center;
+ opacity: 0.3;
+}
+
+/* Feedback for keyboard focus and mouse hover */
+#show:focus + label,
+#dbpassword:focus + label,
+#personal-show:focus + label {
+ opacity: 1;
+}
+#show + label:hover,
+#dbpassword + label:hover,
+#personal-show + label:hover {
+ opacity: 1;
+}
+
+#show + label:before, #dbpassword + label:before, #personal-show + label:before {
+ display: none;
+}
+
+#pass2, input[name=personal-password-clone] {
+ padding-right: 30px;
+}
+
+.personal-show-container {
+ position: relative;
+ display: inline-block;
+ margin-right: 6px;
+}
+
+#personal-show + label {
+ display: block;
+ right: 0;
+ margin-top: -43px;
+ margin-right: -4px;
+ padding: 22px;
+}
+
+/* Warnings and errors are the same */
+#body-user .warning, #body-settings .warning {
+ margin-top: 8px;
+ padding: 5px;
+ border-radius: var(--border-radius);
+ color: var(--color-primary-text);
+ background-color: var(--color-warning);
+}
+
+.warning legend, .warning a {
+ color: var(--color-primary-text) !important;
+ font-weight: bold !important;
+}
+
+.error:not(.toastify) a {
+ color: white !important;
+ font-weight: bold !important;
+}
+.error:not(.toastify) a.button {
+ color: var(--color-text-lighter) !important;
+ display: inline-block;
+ text-align: center;
+}
+.error:not(.toastify) pre {
+ white-space: pre-wrap;
+ text-align: left;
+}
+
+.error-wide {
+ width: 700px;
+ margin-left: -200px !important;
+}
+.error-wide .button {
+ color: black !important;
+}
+
+.warning-input {
+ border-color: var(--color-error) !important;
+}
+
+/* fixes for update page TODO should be fixed some time in a proper way */
+/* this is just for an error while updating the Nextcloud instance */
+/* Sticky footer */
+/* round profile photos */
+.avatar, .avatardiv {
+ border-radius: 50%;
+ flex-shrink: 0;
+}
+.avatar > img, .avatardiv > img {
+ border-radius: 50%;
+ flex-shrink: 0;
+}
+
+td.avatar {
+ border-radius: 0;
+}
+
+#notification-container {
+ left: 50%;
+ max-width: 60%;
+ position: fixed;
+ top: 0;
+ text-align: center;
+ transform: translateX(-50%);
+ z-index: 8000;
+}
+
+#notification {
+ margin: 0 auto;
+ z-index: 8000;
+ background-color: var(--color-main-background);
+ border: 0;
+ padding: 1px 8px;
+ display: none;
+ position: relative;
+ top: 0;
+ border-bottom-left-radius: 3px;
+ border-bottom-right-radius: 3px;
+ opacity: 0.9;
+ overflow-x: hidden;
+ overflow-y: auto;
+ max-height: 100px;
+}
+#notification span {
+ cursor: pointer;
+ margin-left: 1em;
+}
+#notification .row {
+ position: relative;
+}
+#notification .row .close {
+ display: inline-block;
+ vertical-align: middle;
+ position: absolute;
+ right: 0;
+ top: 0;
+ margin-top: 2px;
+}
+#notification .row.closeable {
+ padding-right: 20px;
+}
+
+tr .action:not(.permanent), .selectedActions > a {
+ opacity: 0;
+}
+
+tr:hover .action:not(.menuitem), tr:focus .action:not(.menuitem),
+tr .action.permanent:not(.menuitem) {
+ opacity: 0.5;
+}
+
+.selectedActions > a {
+ opacity: 0.5;
+ position: relative;
+ top: 2px;
+}
+.selectedActions > a:hover, .selectedActions > a:focus {
+ opacity: 1;
+}
+
+tr .action {
+ width: 16px;
+ height: 16px;
+}
+
+.header-action {
+ opacity: 0.8;
+}
+
+tr:hover .action:hover, tr:focus .action:focus {
+ opacity: 1;
+}
+
+.selectedActions a:hover, .selectedActions a:focus {
+ opacity: 1;
+}
+
+.header-action:hover, .header-action:focus {
+ opacity: 1;
+}
+
+tbody tr:hover, tbody tr:focus, tbody tr:active {
+ background-color: var(--color-background-dark);
+}
+
+code {
+ font-family: "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", monospace;
+}
+
+.pager {
+ list-style: none;
+ float: right;
+ display: inline;
+ margin: 0.7em 13em 0 0;
+}
+.pager li {
+ display: inline-block;
+}
+
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.ui-icon-circle-triangle-e {
+ background-image: url("../img/actions/play-next.svg?v=1");
+}
+
+.ui-icon-circle-triangle-w {
+ background-image: url("../img/actions/play-previous.svg?v=1");
+}
+
+/* ---- jQuery UI datepicker ---- */
+.ui-widget.ui-datepicker {
+ margin-top: 10px;
+ padding: 4px 8px;
+ width: auto;
+ border-radius: var(--border-radius);
+ border: none;
+ z-index: 1600 !important;
+}
+.ui-widget.ui-datepicker .ui-state-default,
+.ui-widget.ui-datepicker .ui-widget-content .ui-state-default,
+.ui-widget.ui-datepicker .ui-widget-header .ui-state-default {
+ border: 1px solid transparent;
+ background: inherit;
+}
+.ui-widget.ui-datepicker .ui-widget-header {
+ padding: 7px;
+ font-size: 13px;
+ border: none;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+}
+.ui-widget.ui-datepicker .ui-widget-header .ui-datepicker-title {
+ line-height: 1;
+ font-weight: normal;
+}
+.ui-widget.ui-datepicker .ui-widget-header .ui-icon {
+ opacity: 0.5;
+}
+.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e {
+ background: url("../img/actions/arrow-right.svg") center center no-repeat;
+}
+.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w {
+ background: url("../img/actions/arrow-left.svg") center center no-repeat;
+}
+.ui-widget.ui-datepicker .ui-widget-header .ui-state-hover .ui-icon {
+ opacity: 1;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar th {
+ font-weight: normal;
+ color: var(--color-text-lighter);
+ opacity: 0.8;
+ width: 26px;
+ padding: 2px;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar tr:hover {
+ background-color: inherit;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-today a:not(.ui-state-hover) {
+ background-color: var(--color-background-darker);
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-current-day a.ui-state-active,
+.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-hover,
+.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-focus {
+ background-color: var(--color-primary);
+ color: var(--color-primary-text);
+ font-weight: bold;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-week-end:not(.ui-state-disabled) :not(.ui-state-hover),
+.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-priority-secondary:not(.ui-state-hover) {
+ color: var(--color-text-lighter);
+ opacity: 0.8;
+}
+
+.ui-datepicker-prev, .ui-datepicker-next {
+ border: var(--color-border-dark);
+ background: var(--color-main-background);
+}
+
+/* ---- jQuery UI timepicker ---- */
+.ui-widget.ui-timepicker {
+ margin-top: 10px !important;
+ width: auto !important;
+ border-radius: var(--border-radius);
+ z-index: 1600 !important;
+ /* AM/PM fix */
+}
+.ui-widget.ui-timepicker .ui-widget-content {
+ border: none !important;
+}
+.ui-widget.ui-timepicker .ui-state-default,
+.ui-widget.ui-timepicker .ui-widget-content .ui-state-default,
+.ui-widget.ui-timepicker .ui-widget-header .ui-state-default {
+ border: 1px solid transparent;
+ background: inherit;
+}
+.ui-widget.ui-timepicker .ui-widget-header {
+ padding: 7px;
+ font-size: 13px;
+ border: none;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+}
+.ui-widget.ui-timepicker .ui-widget-header .ui-timepicker-title {
+ line-height: 1;
+ font-weight: normal;
+}
+.ui-widget.ui-timepicker table.ui-timepicker tr .ui-timepicker-hour-cell:first-child {
+ margin-left: 30px;
+}
+.ui-widget.ui-timepicker .ui-timepicker-table th {
+ font-weight: normal;
+ color: var(--color-text-lighter);
+ opacity: 0.8;
+}
+.ui-widget.ui-timepicker .ui-timepicker-table th.periods {
+ padding: 0;
+ width: 30px;
+ line-height: 30px;
+}
+.ui-widget.ui-timepicker .ui-timepicker-table tr:hover {
+ background-color: inherit;
+}
+.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hour-cell a.ui-state-active, .ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minute-cell a.ui-state-active,
+.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-hover,
+.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-focus {
+ background-color: var(--color-primary);
+ color: var(--color-primary-text);
+ font-weight: bold;
+}
+.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minutes:not(.ui-state-hover) {
+ color: var(--color-text-lighter);
+}
+.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hours {
+ border-right: 1px solid var(--color-border);
+}
+
+/* ---- jQuery UI datepicker & timepicker global rules ---- */
+.ui-widget.ui-datepicker .ui-datepicker-calendar tr,
+.ui-widget.ui-timepicker table.ui-timepicker tr {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar tr td,
+.ui-widget.ui-timepicker table.ui-timepicker tr td {
+ flex: 1 1 auto;
+ margin: 0;
+ padding: 2px;
+ height: 26px;
+ width: 26px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar tr td > *,
+.ui-widget.ui-timepicker table.ui-timepicker tr td > * {
+ border-radius: 50%;
+ text-align: center;
+ font-weight: normal;
+ color: var(--color-main-text);
+ display: block;
+ line-height: 18px;
+ width: 18px;
+ height: 18px;
+ padding: 3px;
+ font-size: 0.9em;
+}
+
+/* ---- DIALOGS ---- */
+#oc-dialog-filepicker-content {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ /* Grid view toggle */
+}
+#oc-dialog-filepicker-content .dirtree {
+ flex-wrap: wrap;
+ box-sizing: border-box;
+ padding-right: 140px;
+}
+#oc-dialog-filepicker-content .dirtree div:first-child a {
+ background-image: var(--icon-home-dark);
+ background-repeat: no-repeat;
+ background-position: left center;
+}
+#oc-dialog-filepicker-content .dirtree span:not(:last-child) {
+ cursor: pointer;
+}
+#oc-dialog-filepicker-content .dirtree span:last-child {
+ font-weight: bold;
+}
+#oc-dialog-filepicker-content .dirtree span:not(:last-child)::after {
+ content: ">";
+ padding: 3px;
+}
+#oc-dialog-filepicker-content #picker-view-toggle {
+ position: absolute;
+ background-color: transparent;
+ border: none;
+ margin: 0;
+ padding: 22px;
+ opacity: 0.5;
+ right: 0;
+ top: 0;
+}
+#oc-dialog-filepicker-content #picker-view-toggle:hover, #oc-dialog-filepicker-content #picker-view-toggle:focus {
+ opacity: 1;
+}
+#oc-dialog-filepicker-content #picker-showgridview:focus + #picker-view-toggle {
+ opacity: 1;
+}
+#oc-dialog-filepicker-content .actions.creatable {
+ flex-wrap: wrap;
+ padding: 0px;
+ box-sizing: border-box;
+ display: inline-flex;
+ float: none;
+ max-height: 36px;
+ max-width: 36px;
+ background-color: var(--color-background-dark);
+ border: 1px solid var(--color-border-dark);
+ border-radius: var(--border-radius-pill);
+ position: relative;
+ left: 15px;
+ top: 3px;
+ order: 1;
+}
+#oc-dialog-filepicker-content .actions.creatable .icon.icon-add {
+ background-image: var(--icon-add-dark);
+ background-size: 16px 16px;
+ width: 34px;
+ height: 34px;
+ margin: 0px;
+ opacity: 0.5;
+}
+#oc-dialog-filepicker-content .actions.creatable a {
+ width: 36px;
+ padding: 0px;
+ position: static;
+}
+#oc-dialog-filepicker-content .actions.creatable .menu {
+ top: 100%;
+ margin-top: 10px;
+}
+#oc-dialog-filepicker-content .actions.creatable .menu form {
+ display: flex;
+ margin: 10px;
+}
+#oc-dialog-filepicker-content .filelist-container {
+ box-sizing: border-box;
+ display: inline-block;
+ overflow-y: auto;
+ flex: 1;
+ /*height: 100%;*/
+ /* overflow under the button row */
+ width: 100%;
+ overflow-x: hidden;
+}
+#oc-dialog-filepicker-content .emptycontent {
+ color: var(--color-text-maxcontrast);
+ text-align: center;
+ margin-top: 80px;
+ width: 100%;
+ display: none;
+}
+#oc-dialog-filepicker-content .filelist {
+ background-color: var(--color-main-background);
+ width: 100%;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist {
+ /* prevent the filepicker to overflow */
+ min-width: initial;
+ margin-bottom: 50px;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist thead tr {
+ border-bottom: 1px solid var(--color-border);
+ background-color: var(--color-main-background);
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist thead tr th {
+ width: 80%;
+ border: none;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle {
+ display: block;
+ padding: 15px;
+ height: 50px;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ vertical-align: middle;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle.name {
+ padding-left: 5px;
+ margin-left: 50px;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist th .sort-indicator {
+ width: 10px;
+ height: 8px;
+ margin-left: 5px;
+ display: inline-block;
+ vertical-align: text-bottom;
+ opacity: 0.3;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .sort-indicator.hidden,
+#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,
+#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden {
+ visibility: hidden;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,
+#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden {
+ visibility: visible;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist td {
+ padding: 14px;
+ border-bottom: 1px solid var(--color-border);
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist tr:last-child td {
+ border-bottom: none;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filename {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ background-size: 32px;
+ background-repeat: no-repeat;
+ padding-left: 51px;
+ background-position: 7px 7px;
+ cursor: pointer;
+ max-width: 0;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts {
+ display: flex;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__first {
+ overflow: hidden;
+ white-space: pre;
+ text-overflow: ellipsis;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__last {
+ white-space: pre;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filesize, #oc-dialog-filepicker-content #picker-filestable.filelist .date {
+ width: 80px;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filesize {
+ text-align: right;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid {
+ display: flex;
+ flex-direction: column;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, 120px);
+ justify-content: space-around;
+ row-gap: 15px;
+ margin: 15px 0;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr {
+ display: block;
+ position: relative;
+ border-radius: var(--border-radius);
+ padding: 10px;
+ display: flex;
+ flex-direction: column;
+ width: 100px;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td {
+ border: none;
+ padding: 0;
+ text-align: center;
+ border-radius: var(--border-radius);
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename {
+ padding: 100px 0 0 0;
+ background-position: center top;
+ background-size: contain;
+ line-height: 30px;
+ max-width: none;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename .filename-parts {
+ justify-content: center;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filesize {
+ line-height: 10px;
+ width: 100%;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.date {
+ display: none;
+}
+#oc-dialog-filepicker-content .filepicker_element_selected {
+ background-color: var(--color-background-darker);
+}
+
+.ui-dialog {
+ position: fixed !important;
+}
+
+span.ui-icon {
+ float: left;
+ margin: 3px 7px 30px 0;
+}
+
+/* ---- CONTACTS MENU ---- */
+#contactsmenu .menutoggle {
+ background-size: 20px 20px;
+ padding: 14px;
+ cursor: pointer;
+ background-image: var(--original-icon-contacts-white);
+ filter: var(--primary-invert-if-bright);
+}
+#contactsmenu .menutoggle:hover, #contactsmenu .menutoggle:focus, #contactsmenu .menutoggle:active {
+ opacity: 1 !important;
+}
+
+#header .header-right > div#contactsmenu > .menu {
+ /* show 2.5 to 4.5 entries depending on the screen height */
+ height: calc(100vh - 150px);
+ max-height: 275px;
+ min-height: 175px;
+ width: 350px;
+}
+#header .header-right > div#contactsmenu > .menu .emptycontent {
+ margin-top: 5vh !important;
+ margin-bottom: 2vh;
+}
+#header .header-right > div#contactsmenu > .menu .emptycontent .icon-loading,
+#header .header-right > div#contactsmenu > .menu .emptycontent .icon-search {
+ display: inline-block;
+}
+#header .header-right > div#contactsmenu > .menu .content {
+ /* fixed max height of the parent container without the search input */
+ height: calc(100vh - 150px - 50px);
+ max-height: 225px;
+ min-height: 125px;
+ overflow-y: auto;
+}
+#header .header-right > div#contactsmenu > .menu .content .footer {
+ text-align: center;
+}
+#header .header-right > div#contactsmenu > .menu .content .footer a {
+ display: block;
+ width: 100%;
+ padding: 12px 0;
+ opacity: 0.5;
+}
+#header .header-right > div#contactsmenu > .menu .contact {
+ display: flex;
+ position: relative;
+ align-items: center;
+ padding: 3px 3px 3px 10px;
+ border-bottom: 1px solid var(--color-border);
+ /* actions menu */
+}
+#header .header-right > div#contactsmenu > .menu .contact :last-of-type {
+ border-bottom: none;
+}
+#header .header-right > div#contactsmenu > .menu .contact .avatar {
+ height: 32px;
+ width: 32px;
+ display: inline-block;
+}
+#header .header-right > div#contactsmenu > .menu .contact .body {
+ flex-grow: 1;
+ padding-left: 8px;
+}
+#header .header-right > div#contactsmenu > .menu .contact .body div {
+ position: relative;
+ width: 100%;
+}
+#header .header-right > div#contactsmenu > .menu .contact .body .full-name, #header .header-right > div#contactsmenu > .menu .contact .body .last-message {
+ /* TODO: don't use fixed width */
+ max-width: 204px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+#header .header-right > div#contactsmenu > .menu .contact .body .last-message {
+ opacity: 0.5;
+}
+#header .header-right > div#contactsmenu > .menu .contact .top-action, #header .header-right > div#contactsmenu > .menu .contact .second-action, #header .header-right > div#contactsmenu > .menu .contact .other-actions {
+ width: 16px;
+ height: 16px;
+ padding: 14px;
+ opacity: 0.5;
+ cursor: pointer;
+}
+#header .header-right > div#contactsmenu > .menu .contact .top-action :hover, #header .header-right > div#contactsmenu > .menu .contact .second-action :hover, #header .header-right > div#contactsmenu > .menu .contact .other-actions :hover {
+ opacity: 1;
+}
+#header .header-right > div#contactsmenu > .menu .contact .menu {
+ top: 47px;
+ margin-right: 13px;
+}
+#header .header-right > div#contactsmenu > .menu .contact .popovermenu::after {
+ right: 2px;
+}
+
+#contactsmenu-search {
+ width: calc(100% - 16px);
+ margin: 8px;
+ height: 34px;
+}
+
+/* ---- TOOLTIPS ---- */
+.extra-data {
+ padding-right: 5px !important;
+}
+
+/* ---- TAGS ---- */
+#tagsdialog .content {
+ width: 100%;
+ height: 280px;
+}
+#tagsdialog .scrollarea {
+ overflow: auto;
+ border: 1px solid var(--color-background-darker);
+ width: 100%;
+ height: 240px;
+}
+#tagsdialog .bottombuttons {
+ width: 100%;
+ height: 30px;
+}
+#tagsdialog .bottombuttons * {
+ float: left;
+}
+#tagsdialog .taglist li {
+ background: var(--color-background-dark);
+ padding: 0.3em 0.8em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ -webkit-transition: background-color 500ms;
+ transition: background-color 500ms;
+}
+#tagsdialog .taglist li:hover, #tagsdialog .taglist li:active {
+ background: var(--color-background-darker);
+}
+#tagsdialog .addinput {
+ width: 90%;
+ clear: both;
+}
+
+/* ---- BREADCRUMB ---- */
+.breadcrumb {
+ display: inline-flex;
+}
+
+div.crumb {
+ display: inline-flex;
+ background-image: url("../img/breadcrumb.svg?v=1");
+ background-repeat: no-repeat;
+ background-position: right center;
+ height: 44px;
+ background-size: auto 24px;
+ flex: 0 0 auto;
+ order: 1;
+ padding-right: 7px;
+}
+div.crumb.crumbmenu {
+ order: 2;
+ position: relative;
+}
+div.crumb.crumbmenu a {
+ opacity: 0.5;
+}
+div.crumb.crumbmenu.canDropChildren .popovermenu, div.crumb.crumbmenu.canDrop .popovermenu {
+ display: block;
+}
+div.crumb.crumbmenu .popovermenu {
+ top: 100%;
+ margin-right: 3px;
+}
+div.crumb.crumbmenu .popovermenu ul {
+ max-height: 345px;
+ overflow-y: auto;
+ overflow-x: hidden;
+ padding-right: 5px;
+}
+div.crumb.crumbmenu .popovermenu ul li.canDrop span:first-child {
+ background-image: url("../img/filetypes/folder-drag-accept.svg?v=1") !important;
+}
+div.crumb.crumbmenu .popovermenu .in-breadcrumb {
+ display: none;
+}
+div.crumb.hidden {
+ display: none;
+}
+div.crumb.hidden ~ .crumb {
+ order: 3;
+}
+div.crumb > a,
+div.crumb > span {
+ position: relative;
+ padding: 12px;
+ opacity: 0.5;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ flex: 0 0 auto;
+ max-width: 200px;
+}
+div.crumb > a.icon-home, div.crumb > a.icon-delete,
+div.crumb > span.icon-home,
+div.crumb > span.icon-delete {
+ text-indent: -9999px;
+}
+div.crumb > a[class^=icon-] {
+ padding: 0;
+ width: 44px;
+}
+div.crumb:last-child {
+ font-weight: bold;
+ margin-right: 10px;
+}
+div.crumb:last-child a ~ span {
+ padding-left: 0;
+}
+div.crumb:hover, div.crumb:focus, div.crumb a:focus, div.crumb:active {
+ opacity: 1;
+}
+div.crumb:hover > a,
+div.crumb:hover > span, div.crumb:focus > a,
+div.crumb:focus > span, div.crumb a:focus > a,
+div.crumb a:focus > span, div.crumb:active > a,
+div.crumb:active > span {
+ opacity: 0.7;
+}
+
+/* some feedback for hover/tap on breadcrumbs */
+.appear {
+ opacity: 1;
+ -webkit-transition: opacity 500ms ease 0s;
+ -moz-transition: opacity 500ms ease 0s;
+ -ms-transition: opacity 500ms ease 0s;
+ -o-transition: opacity 500ms ease 0s;
+ transition: opacity 500ms ease 0s;
+}
+.appear.transparent {
+ opacity: 0;
+}
+
+/* LEGACY FIX only - do not use fieldsets for settings */
+fieldset.warning legend, fieldset.update legend {
+ top: 18px;
+ position: relative;
+}
+fieldset.warning legend + p, fieldset.update legend + p {
+ margin-top: 12px;
+}
+
+/* for IE10 */
+@-ms-viewport {
+ width: device-width;
+}
+/* hidden input type=file field */
+.hiddenuploadfield {
+ display: none;
+ width: 0;
+ height: 0;
+ opacity: 0;
+}
+
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
+ * @copyright Copyright (c) 2016, Morris Jobke <hey@morrisjobke.de>
+ * @copyright Copyright (c) 2016, Joas Schilling <coding@schilljs.com>
+ * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
+ * @copyright Copyright (c) 2016, jowi <sjw@gmx.ch>
+ * @copyright Copyright (c) 2015, Joas Schilling <nickvergessen@owncloud.com>
+ * @copyright Copyright (c) 2015, Hendrik Leppelsack <hendrik@leppelsack.de>
+ * @copyright Copyright (c) 2014-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ */
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @see core/src/icons.js
+ */
+/**
+ * SVG COLOR API
+ *
+ * @param string $icon the icon filename
+ * @param string $dir the icon folder within /core/img if $core or app name
+ * @param string $color the desired color in hexadecimal
+ * @param int $version the version of the file
+ * @param bool [$core] search icon in core
+ *
+ * @returns A background image with the url to the set to the requested icon.
+ */
+/* Specifically override browser styles */
+input, textarea, select, button, div[contenteditable=true], div[contenteditable=false] {
+ font-family: var(--font-face);
+}
+
+.select2-container-multi .select2-choices .select2-search-field input, .select2-search input, .ui-widget {
+ font-family: var(--font-face) !important;
+}
+
+/* Simple selector to allow easy overriding */
+select,
+button:not(.button-vue),
+input,
+textarea,
+div[contenteditable=true],
+div[contenteditable=false] {
+ width: 130px;
+ min-height: 34px;
+ box-sizing: border-box;
+}
+
+/**
+ * color-text-lighter normal state
+ * color-text-lighter active state
+ * color-text-maxcontrast disabled state
+ */
+/* Default global values */
+div.select2-drop .select2-search input,
+select,
+button:not(.button-vue), .button,
+input:not([type=range]),
+textarea,
+div[contenteditable=true],
+.pager li a {
+ margin: 3px 3px 3px 0;
+ padding: 7px 6px;
+ font-size: 13px;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+ border: 1px solid var(--color-border-dark);
+ outline: none;
+ border-radius: var(--border-radius);
+ cursor: text;
+ /* Primary action button, use sparingly */
+}
+div.select2-drop .select2-search input:not(:disabled):not(.primary):hover, div.select2-drop .select2-search input:not(:disabled):not(.primary):focus, div.select2-drop .select2-search input:not(:disabled):not(.primary).active,
+select:not(:disabled):not(.primary):hover,
+select:not(:disabled):not(.primary):focus,
+select:not(:disabled):not(.primary).active,
+button:not(.button-vue):not(:disabled):not(.primary):hover,
+button:not(.button-vue):not(:disabled):not(.primary):focus,
+button:not(.button-vue):not(:disabled):not(.primary).active, .button:not(:disabled):not(.primary):hover, .button:not(:disabled):not(.primary):focus, .button:not(:disabled):not(.primary).active,
+input:not([type=range]):not(:disabled):not(.primary):hover,
+input:not([type=range]):not(:disabled):not(.primary):focus,
+input:not([type=range]):not(:disabled):not(.primary).active,
+textarea:not(:disabled):not(.primary):hover,
+textarea:not(:disabled):not(.primary):focus,
+textarea:not(:disabled):not(.primary).active,
+div[contenteditable=true]:not(:disabled):not(.primary):hover,
+div[contenteditable=true]:not(:disabled):not(.primary):focus,
+div[contenteditable=true]:not(:disabled):not(.primary).active,
+.pager li a:not(:disabled):not(.primary):hover,
+.pager li a:not(:disabled):not(.primary):focus,
+.pager li a:not(:disabled):not(.primary).active {
+ /* active class used for multiselect */
+ border-color: var(--color-primary-element);
+ outline: none;
+}
+div.select2-drop .select2-search input:not(:disabled):not(.primary):active,
+select:not(:disabled):not(.primary):active,
+button:not(.button-vue):not(:disabled):not(.primary):active, .button:not(:disabled):not(.primary):active,
+input:not([type=range]):not(:disabled):not(.primary):active,
+textarea:not(:disabled):not(.primary):active,
+div[contenteditable=true]:not(:disabled):not(.primary):active,
+.pager li a:not(:disabled):not(.primary):active {
+ outline: none;
+ background-color: var(--color-main-background);
+ color: var(--color-text-light);
+}
+div.select2-drop .select2-search input:disabled,
+select:disabled,
+button:not(.button-vue):disabled, .button:disabled,
+input:not([type=range]):disabled,
+textarea:disabled,
+div[contenteditable=true]:disabled,
+.pager li a:disabled {
+ background-color: var(--color-background-dark);
+ color: var(--color-text-maxcontrast);
+ cursor: default;
+ opacity: 0.5;
+}
+div.select2-drop .select2-search input:required,
+select:required,
+button:not(.button-vue):required, .button:required,
+input:not([type=range]):required,
+textarea:required,
+div[contenteditable=true]:required,
+.pager li a:required {
+ box-shadow: none;
+}
+div.select2-drop .select2-search input:invalid,
+select:invalid,
+button:not(.button-vue):invalid, .button:invalid,
+input:not([type=range]):invalid,
+textarea:invalid,
+div[contenteditable=true]:invalid,
+.pager li a:invalid {
+ box-shadow: none !important;
+ border-color: var(--color-error);
+}
+div.select2-drop .select2-search input.primary,
+select.primary,
+button:not(.button-vue).primary, .button.primary,
+input:not([type=range]).primary,
+textarea.primary,
+div[contenteditable=true].primary,
+.pager li a.primary {
+ background-color: var(--color-primary-element);
+ border-color: var(--color-primary-element);
+ color: var(--color-primary-text);
+ cursor: pointer;
+ /* Apply border to primary button if on log in page (and not in a dark container) or if in header */
+}
+#body-login :not(.body-login-container) div.select2-drop .select2-search input.primary, #header div.select2-drop .select2-search input.primary,
+#body-login :not(.body-login-container) select.primary,
+#header select.primary,
+#body-login :not(.body-login-container) button:not(.button-vue).primary,
+#header button:not(.button-vue).primary, #body-login :not(.body-login-container) .button.primary, #header .button.primary,
+#body-login :not(.body-login-container) input:not([type=range]).primary,
+#header input:not([type=range]).primary,
+#body-login :not(.body-login-container) textarea.primary,
+#header textarea.primary,
+#body-login :not(.body-login-container) div[contenteditable=true].primary,
+#header div[contenteditable=true].primary,
+#body-login :not(.body-login-container) .pager li a.primary,
+#header .pager li a.primary {
+ border-color: var(--color-primary-text);
+}
+div.select2-drop .select2-search input.primary:not(:disabled):hover, div.select2-drop .select2-search input.primary:not(:disabled):focus, div.select2-drop .select2-search input.primary:not(:disabled):active,
+select.primary:not(:disabled):hover,
+select.primary:not(:disabled):focus,
+select.primary:not(:disabled):active,
+button:not(.button-vue).primary:not(:disabled):hover,
+button:not(.button-vue).primary:not(:disabled):focus,
+button:not(.button-vue).primary:not(:disabled):active, .button.primary:not(:disabled):hover, .button.primary:not(:disabled):focus, .button.primary:not(:disabled):active,
+input:not([type=range]).primary:not(:disabled):hover,
+input:not([type=range]).primary:not(:disabled):focus,
+input:not([type=range]).primary:not(:disabled):active,
+textarea.primary:not(:disabled):hover,
+textarea.primary:not(:disabled):focus,
+textarea.primary:not(:disabled):active,
+div[contenteditable=true].primary:not(:disabled):hover,
+div[contenteditable=true].primary:not(:disabled):focus,
+div[contenteditable=true].primary:not(:disabled):active,
+.pager li a.primary:not(:disabled):hover,
+.pager li a.primary:not(:disabled):focus,
+.pager li a.primary:not(:disabled):active {
+ background-color: var(--color-primary-element-light);
+ border-color: var(--color-primary-element-light);
+}
+div.select2-drop .select2-search input.primary:not(:disabled):active,
+select.primary:not(:disabled):active,
+button:not(.button-vue).primary:not(:disabled):active, .button.primary:not(:disabled):active,
+input:not([type=range]).primary:not(:disabled):active,
+textarea.primary:not(:disabled):active,
+div[contenteditable=true].primary:not(:disabled):active,
+.pager li a.primary:not(:disabled):active {
+ color: var(--color-primary-text-dark);
+}
+div.select2-drop .select2-search input.primary:disabled,
+select.primary:disabled,
+button:not(.button-vue).primary:disabled, .button.primary:disabled,
+input:not([type=range]).primary:disabled,
+textarea.primary:disabled,
+div[contenteditable=true].primary:disabled,
+.pager li a.primary:disabled {
+ background-color: var(--color-primary-element);
+ color: var(--color-primary-text-dark);
+ cursor: default;
+}
+
+div[contenteditable=false] {
+ margin: 3px 3px 3px 0;
+ padding: 7px 6px;
+ font-size: 13px;
+ background-color: var(--color-main-background);
+ color: var(--color-text-lighter);
+ border: 1px solid var(--color-background-darker);
+ outline: none;
+ border-radius: var(--border-radius);
+ background-color: var(--color-background-dark);
+ color: var(--color-text-lighter);
+ cursor: default;
+ opacity: 0.5;
+}
+
+/* Specific override */
+input {
+ /* Color input doesn't respect the initial height
+ so we need to set a custom one */
+}
+input:not([type=radio]):not([type=checkbox]):not([type=range]):not([type=submit]):not([type=button]):not([type=reset]):not([type=color]):not([type=file]):not([type=image]) {
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ height: 34px;
+}
+input[type=radio], input[type=checkbox], input[type=file], input[type=image] {
+ height: auto;
+ width: auto;
+}
+input[type=color] {
+ margin: 3px;
+ padding: 0 2px;
+ min-height: 30px;
+ width: 40px;
+ cursor: pointer;
+}
+input[type=hidden] {
+ height: 0;
+ width: 0;
+}
+input[type=time] {
+ width: initial;
+}
+
+/* 'Click' inputs */
+select,
+button:not(.button-vue), .button,
+input[type=button],
+input[type=submit],
+input[type=reset] {
+ padding: 6px 16px;
+ width: auto;
+ min-height: 34px;
+ cursor: pointer;
+ box-sizing: border-box;
+ background-color: var(--color-background-dark);
+}
+select:disabled,
+button:not(.button-vue):disabled, .button:disabled,
+input[type=button]:disabled,
+input[type=submit]:disabled,
+input[type=reset]:disabled {
+ cursor: default;
+}
+
+select *,
+button:not(.button-vue) *, .button * {
+ cursor: pointer;
+}
+select:disabled *,
+button:not(.button-vue):disabled *, .button:disabled * {
+ cursor: default;
+}
+
+/* Buttons */
+button:not(.button-vue), .button,
+input[type=button],
+input[type=submit],
+input[type=reset] {
+ font-weight: bold;
+ border-radius: var(--border-radius-pill);
+ /* Get rid of the inside dotted line in Firefox */
+}
+button:not(.button-vue)::-moz-focus-inner, .button::-moz-focus-inner,
+input[type=button]::-moz-focus-inner,
+input[type=submit]::-moz-focus-inner,
+input[type=reset]::-moz-focus-inner {
+ border: 0;
+}
+button:not(.button-vue).error, .button.error,
+input[type=button].error,
+input[type=submit].error,
+input[type=reset].error {
+ background-color: var(--color-error) !important;
+ border-color: var(--color-error) !important;
+ color: #fff !important;
+}
+
+button:not(.button-vue):not(.action-button) > span, .button > span {
+ /* icon position inside buttons */
+}
+button:not(.button-vue):not(.action-button) > span[class^=icon-], button:not(.button-vue):not(.action-button) > span[class*=" icon-"], .button > span[class^=icon-], .button > span[class*=" icon-"] {
+ display: inline-block;
+ vertical-align: text-bottom;
+ opacity: 0.5;
+}
+
+textarea, div[contenteditable=true] {
+ color: var(--color-main-text);
+ cursor: text;
+ font-family: inherit;
+ height: auto;
+}
+textarea:not(:disabled):active, textarea:not(:disabled):hover, textarea:not(:disabled):focus, div[contenteditable=true]:not(:disabled):active, div[contenteditable=true]:not(:disabled):hover, div[contenteditable=true]:not(:disabled):focus {
+ border-color: var(--color-background-darker) !important;
+ background-color: var(--color-main-background) !important;
+}
+
+div[contenteditable=false] {
+ color: var(--color-text-lighter);
+ font-family: inherit;
+ height: auto;
+}
+
+/* Override the ugly select arrow */
+select {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background: var(--icon-triangle-s-dark) no-repeat right 4px center;
+ background-color: inherit;
+ outline: 0;
+ padding-right: 24px !important;
+ height: 34px;
+}
+
+/* Confirm inputs */
+input[type=text], input[type=password], input[type=email] {
+ /* only show confirm borders if input is not focused */
+}
+input[type=text] + .icon-confirm, input[type=password] + .icon-confirm, input[type=email] + .icon-confirm {
+ margin-left: -8px !important;
+ border-left-color: transparent !important;
+ border-radius: 0 var(--border-radius) var(--border-radius) 0 !important;
+ background-clip: padding-box;
+ /* Avoid background under border */
+ background-color: var(--color-main-background) !important;
+ opacity: 1;
+ height: 34px;
+ width: 34px;
+ padding: 7px 6px;
+ cursor: pointer;
+ margin-right: 0;
+}
+input[type=text] + .icon-confirm:disabled, input[type=password] + .icon-confirm:disabled, input[type=email] + .icon-confirm:disabled {
+ cursor: default;
+ /* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */
+ background-image: var(--icon-confirm-fade-dark);
+}
+input[type=text]:not(:active):not(:hover):not(:focus):invalid + .icon-confirm, input[type=password]:not(:active):not(:hover):not(:focus):invalid + .icon-confirm, input[type=email]:not(:active):not(:hover):not(:focus):invalid + .icon-confirm {
+ border-color: var(--color-error);
+}
+input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:active, input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover, input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:active, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:active, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus {
+ border-color: var(--color-primary-element) !important;
+ border-radius: var(--border-radius) !important;
+}
+input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:active:disabled, input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover:disabled, input[type=text]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus:disabled, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:active:disabled, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover:disabled, input[type=password]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus:disabled, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:active:disabled, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:hover:disabled, input[type=email]:not(:active):not(:hover):not(:focus) + .icon-confirm:focus:disabled {
+ border-color: var(--color-background-darker) !important;
+}
+input[type=text]:active + .icon-confirm, input[type=text]:hover + .icon-confirm, input[type=text]:focus + .icon-confirm, input[type=password]:active + .icon-confirm, input[type=password]:hover + .icon-confirm, input[type=password]:focus + .icon-confirm, input[type=email]:active + .icon-confirm, input[type=email]:hover + .icon-confirm, input[type=email]:focus + .icon-confirm {
+ border-color: var(--color-primary-element) !important;
+ border-left-color: transparent !important;
+ /* above previous input */
+ z-index: 2;
+}
+
+/* Various Fixes */
+button img,
+.button img {
+ cursor: pointer;
+}
+
+select,
+.button.multiselect {
+ font-weight: normal;
+}
+
+/* Radio & Checkboxes */
+input[type=checkbox], input[type=radio] {
+ /* We do not use the variables as we keep the colours as white for this variant */
+}
+input[type=checkbox].radio, input[type=checkbox].checkbox, input[type=radio].radio, input[type=radio].checkbox {
+ position: absolute;
+ left: -10000px;
+ top: auto;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
+}
+input[type=checkbox].radio + label, input[type=checkbox].checkbox + label, input[type=radio].radio + label, input[type=radio].checkbox + label {
+ user-select: none;
+}
+input[type=checkbox].radio:disabled + label, input[type=checkbox].radio:disabled + label:before, input[type=checkbox].checkbox:disabled + label, input[type=checkbox].checkbox:disabled + label:before, input[type=radio].radio:disabled + label, input[type=radio].radio:disabled + label:before, input[type=radio].checkbox:disabled + label, input[type=radio].checkbox:disabled + label:before {
+ cursor: default;
+}
+input[type=checkbox].radio + label:before, input[type=checkbox].checkbox + label:before, input[type=radio].radio + label:before, input[type=radio].checkbox + label:before {
+ content: "";
+ display: inline-block;
+ height: 14px;
+ width: 14px;
+ vertical-align: middle;
+ border-radius: 50%;
+ margin: 0 6px 3px 3px;
+ border: 1px solid var(--color-text-lighter);
+}
+input[type=checkbox].radio:not(:disabled):not(:checked) + label:hover:before, input[type=checkbox].radio:focus + label:before, input[type=checkbox].checkbox:not(:disabled):not(:checked) + label:hover:before, input[type=checkbox].checkbox:focus + label:before, input[type=radio].radio:not(:disabled):not(:checked) + label:hover:before, input[type=radio].radio:focus + label:before, input[type=radio].checkbox:not(:disabled):not(:checked) + label:hover:before, input[type=radio].checkbox:focus + label:before {
+ border-color: var(--color-primary-element);
+}
+input[type=checkbox].radio:focus-visible + label, input[type=checkbox].checkbox:focus-visible + label, input[type=radio].radio:focus-visible + label, input[type=radio].checkbox:focus-visible + label {
+ outline-style: solid;
+ outline-color: var(--color-main-text);
+ outline-width: 1px;
+ outline-offset: 2px;
+}
+input[type=checkbox].radio:checked + label:before, input[type=checkbox].radio.checkbox:indeterminate + label:before, input[type=checkbox].checkbox:checked + label:before, input[type=checkbox].checkbox.checkbox:indeterminate + label:before, input[type=radio].radio:checked + label:before, input[type=radio].radio.checkbox:indeterminate + label:before, input[type=radio].checkbox:checked + label:before, input[type=radio].checkbox.checkbox:indeterminate + label:before {
+ /* ^ :indeterminate have a strange behavior on radio,
+ so we respecified the checkbox class again to be safe */
+ box-shadow: inset 0px 0px 0px 2px var(--color-main-background);
+ background-color: var(--color-primary-element);
+ border-color: var(--color-primary-element);
+}
+input[type=checkbox].radio:disabled + label:before, input[type=checkbox].checkbox:disabled + label:before, input[type=radio].radio:disabled + label:before, input[type=radio].checkbox:disabled + label:before {
+ border: 1px solid var(--color-text-lighter);
+ background-color: var(--color-text-maxcontrast) !important;
+ /* override other status */
+}
+input[type=checkbox].radio:checked:disabled + label:before, input[type=checkbox].checkbox:checked:disabled + label:before, input[type=radio].radio:checked:disabled + label:before, input[type=radio].checkbox:checked:disabled + label:before {
+ background-color: var(--color-text-maxcontrast);
+}
+input[type=checkbox].radio + label ~ em, input[type=checkbox].checkbox + label ~ em, input[type=radio].radio + label ~ em, input[type=radio].checkbox + label ~ em {
+ display: inline-block;
+ margin-left: 25px;
+}
+input[type=checkbox].radio + label ~ em:last-of-type, input[type=checkbox].checkbox + label ~ em:last-of-type, input[type=radio].radio + label ~ em:last-of-type, input[type=radio].checkbox + label ~ em:last-of-type {
+ margin-bottom: 14px;
+}
+input[type=checkbox].checkbox + label:before, input[type=radio].checkbox + label:before {
+ border-radius: 1px;
+ height: 14px;
+ width: 14px;
+ box-shadow: none !important;
+ background-position: center;
+}
+input[type=checkbox].checkbox:checked + label:before, input[type=radio].checkbox:checked + label:before {
+ background-image: url("../img/actions/checkbox-mark.svg");
+}
+input[type=checkbox].checkbox:indeterminate + label:before, input[type=radio].checkbox:indeterminate + label:before {
+ background-image: url("../img/actions/checkbox-mixed.svg");
+}
+input[type=checkbox].radio--white + label:before, input[type=checkbox].radio--white:focus + label:before, input[type=checkbox].checkbox--white + label:before, input[type=checkbox].checkbox--white:focus + label:before, input[type=radio].radio--white + label:before, input[type=radio].radio--white:focus + label:before, input[type=radio].checkbox--white + label:before, input[type=radio].checkbox--white:focus + label:before {
+ border-color: #bababa;
+}
+input[type=checkbox].radio--white:not(:disabled):not(:checked) + label:hover:before, input[type=checkbox].checkbox--white:not(:disabled):not(:checked) + label:hover:before, input[type=radio].radio--white:not(:disabled):not(:checked) + label:hover:before, input[type=radio].checkbox--white:not(:disabled):not(:checked) + label:hover:before {
+ border-color: #fff;
+}
+input[type=checkbox].radio--white:checked + label:before, input[type=checkbox].checkbox--white:checked + label:before, input[type=radio].radio--white:checked + label:before, input[type=radio].checkbox--white:checked + label:before {
+ box-shadow: inset 0px 0px 0px 2px var(--color-main-background);
+ background-color: #dbdbdb;
+ border-color: #dbdbdb;
+}
+input[type=checkbox].radio--white:disabled + label:before, input[type=checkbox].checkbox--white:disabled + label:before, input[type=radio].radio--white:disabled + label:before, input[type=radio].checkbox--white:disabled + label:before {
+ background-color: #bababa !important;
+ /* override other status */
+ border-color: rgba(255, 255, 255, 0.4) !important;
+ /* override other status */
+}
+input[type=checkbox].radio--white:checked:disabled + label:before, input[type=checkbox].checkbox--white:checked:disabled + label:before, input[type=radio].radio--white:checked:disabled + label:before, input[type=radio].checkbox--white:checked:disabled + label:before {
+ box-shadow: inset 0px 0px 0px 2px var(--color-main-background);
+ border-color: rgba(255, 255, 255, 0.4) !important;
+ /* override other status */
+ background-color: #bababa;
+}
+input[type=checkbox].checkbox--white:checked + label:before, input[type=checkbox].checkbox--white:indeterminate + label:before, input[type=radio].checkbox--white:checked + label:before, input[type=radio].checkbox--white:indeterminate + label:before {
+ background-color: transparent !important;
+ /* Override default checked */
+ border-color: #fff !important;
+ /* Override default checked */
+ background-image: url("../img/actions/checkbox-mark-white.svg");
+}
+input[type=checkbox].checkbox--white:indeterminate + label:before, input[type=radio].checkbox--white:indeterminate + label:before {
+ background-image: url("../img/actions/checkbox-mixed-white.svg");
+}
+input[type=checkbox].checkbox--white:disabled + label:before, input[type=radio].checkbox--white:disabled + label:before {
+ opacity: 0.7;
+ /* No other choice for white background image */
+}
+
+/* Select2 overriding. Merged to core with vendor stylesheet */
+div.select2-drop {
+ margin-top: -2px;
+ background-color: var(--color-main-background);
+}
+div.select2-drop.select2-drop-active {
+ border-color: var(--color-border-dark);
+}
+div.select2-drop .avatar {
+ display: inline-block;
+ margin-right: 8px;
+ vertical-align: middle;
+}
+div.select2-drop .avatar img {
+ cursor: pointer;
+}
+div.select2-drop .select2-search input {
+ min-height: auto;
+ background: var(--icon-search-dark) no-repeat right center !important;
+ background-origin: content-box !important;
+}
+div.select2-drop .select2-results {
+ max-height: 250px;
+ margin: 0;
+ padding: 0;
+}
+div.select2-drop .select2-results .select2-result-label {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+div.select2-drop .select2-results .select2-result-label span {
+ cursor: pointer;
+}
+div.select2-drop .select2-results .select2-result-label span em {
+ cursor: inherit;
+ background: unset;
+}
+div.select2-drop .select2-results .select2-result,
+div.select2-drop .select2-results .select2-no-results,
+div.select2-drop .select2-results .select2-searching {
+ position: relative;
+ display: list-item;
+ padding: 12px;
+ background-color: transparent;
+ cursor: pointer;
+ color: var(--color-text-lighter);
+}
+div.select2-drop .select2-results .select2-result.select2-selected {
+ background-color: var(--color-background-dark);
+}
+div.select2-drop .select2-results .select2-highlighted {
+ background-color: var(--color-background-dark);
+ color: var(--color-main-text);
+}
+
+.select2-chosen .avatar,
+.select2-chosen .avatar img,
+#select2-drop .avatar,
+#select2-drop .avatar img {
+ cursor: pointer;
+}
+
+div.select2-container-multi .select2-choices, div.select2-container-multi.select2-container-active .select2-choices {
+ box-shadow: none;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ background: var(--color-main-background);
+ color: var(--color-text-lighter) !important;
+ box-sizing: content-box;
+ border-radius: var(--border-radius);
+ border: 1px solid var(--color-border-dark);
+ margin: 0;
+ padding: 2px 0;
+ min-height: auto;
+}
+div.select2-container-multi .select2-choices .select2-search-choice, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice {
+ line-height: 20px;
+ padding-left: 5px;
+}
+div.select2-container-multi .select2-choices .select2-search-choice.select2-search-choice-focus, div.select2-container-multi .select2-choices .select2-search-choice:hover, div.select2-container-multi .select2-choices .select2-search-choice:active, div.select2-container-multi .select2-choices .select2-search-choice, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice.select2-search-choice-focus, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:hover, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:active, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice {
+ background-image: none;
+ background-color: var(--color-main-background);
+ color: var(--color-text-lighter);
+ border: 1px solid var(--color-border-dark);
+}
+div.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice .select2-search-choice-close {
+ display: none;
+}
+div.select2-container-multi .select2-choices .select2-search-field input, div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input {
+ line-height: 20px;
+}
+div.select2-container-multi .select2-choices .select2-search-field input.select2-active, div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input.select2-active {
+ background: none !important;
+}
+
+div.select2-container {
+ margin: 3px 3px 3px 0;
+}
+div.select2-container.select2-container-multi .select2-choices {
+ display: flex;
+ flex-wrap: wrap;
+}
+div.select2-container.select2-container-multi .select2-choices li {
+ float: none;
+}
+div.select2-container a.select2-choice {
+ box-shadow: none;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ background: var(--color-main-background);
+ color: var(--color-text-lighter) !important;
+ box-sizing: content-box;
+ border-radius: var(--border-radius);
+ border: 1px solid var(--color-border-dark);
+ margin: 0;
+ padding: 2px 0;
+ padding-left: 6px;
+ min-height: auto;
+}
+div.select2-container a.select2-choice .select2-search-choice {
+ line-height: 20px;
+ padding-left: 5px;
+ background-image: none;
+ background-color: var(--color-background-dark);
+ border-color: var(--color-background-dark);
+}
+div.select2-container a.select2-choice .select2-search-choice .select2-search-choice-close {
+ display: none;
+}
+div.select2-container a.select2-choice .select2-search-choice.select2-search-choice-focus, div.select2-container a.select2-choice .select2-search-choice:hover {
+ background-color: var(--color-border);
+ border-color: var(--color-border);
+}
+div.select2-container a.select2-choice .select2-arrow {
+ background: none;
+ border-radius: 0;
+ border: none;
+}
+div.select2-container a.select2-choice .select2-arrow b {
+ background: var(--icon-triangle-s-dark) no-repeat center !important;
+ opacity: 0.5;
+}
+div.select2-container a.select2-choice:hover .select2-arrow b, div.select2-container a.select2-choice:focus .select2-arrow b, div.select2-container a.select2-choice:active .select2-arrow b {
+ opacity: 0.7;
+}
+div.select2-container a.select2-choice .select2-search-field input {
+ line-height: 20px;
+}
+
+/* Vue v-select */
+.v-select {
+ margin: 3px 3px 3px 0;
+ display: inline-block;
+}
+.v-select .dropdown-toggle {
+ display: flex !important;
+ flex-wrap: wrap;
+}
+.v-select .dropdown-toggle .selected-tag {
+ line-height: 20px;
+ padding-left: 5px;
+ background-image: none;
+ background-color: var(--color-main-background);
+ color: var(--color-text-lighter);
+ border: 1px solid var(--color-border-dark);
+ display: inline-flex;
+ align-items: center;
+}
+.v-select .dropdown-toggle .selected-tag .close {
+ margin-left: 3px;
+}
+.v-select .dropdown-menu {
+ padding: 0;
+}
+.v-select .dropdown-menu li {
+ padding: 5px;
+ position: relative;
+ display: list-item;
+ background-color: transparent;
+ cursor: pointer;
+ color: var(--color-text-lighter);
+}
+.v-select .dropdown-menu li a {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ height: 25px;
+ padding: 3px 7px 4px 2px;
+ margin: 0;
+ cursor: pointer;
+ min-height: 1em;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ display: inline-flex;
+ align-items: center;
+ background-color: transparent !important;
+ color: inherit !important;
+}
+.v-select .dropdown-menu li a::before {
+ content: " ";
+ background-image: var(--icon-checkmark-dark);
+ background-repeat: no-repeat;
+ background-position: center;
+ min-width: 16px;
+ min-height: 16px;
+ display: block;
+ opacity: 0.5;
+ margin-right: 5px;
+ visibility: hidden;
+}
+.v-select .dropdown-menu li.highlight {
+ color: var(--color-main-text);
+}
+.v-select .dropdown-menu li.active > a {
+ background-color: var(--color-background-dark);
+ color: var(--color-main-text);
+}
+.v-select .dropdown-menu li.active > a::before {
+ visibility: visible;
+}
+
+/* Vue multiselect */
+.multiselect.multiselect-vue {
+ margin: 1px 2px;
+ padding: 0 !important;
+ display: inline-block;
+ width: 160px;
+ position: relative;
+ background-color: var(--color-main-background);
+ /* results wrapper */
+}
+.multiselect.multiselect-vue.multiselect--active {
+ /* Opened: force display the input */
+}
+.multiselect.multiselect-vue.multiselect--active input.multiselect__input {
+ opacity: 1 !important;
+ cursor: text !important;
+}
+.multiselect.multiselect-vue.multiselect--disabled, .multiselect.multiselect-vue.multiselect--disabled .multiselect__single {
+ background-color: var(--color-background-dark) !important;
+}
+.multiselect.multiselect-vue .multiselect__tags {
+ /* space between tags and limit tag */
+ display: flex;
+ flex-wrap: nowrap;
+ overflow: hidden;
+ border: 1px solid var(--color-border-dark);
+ cursor: pointer;
+ position: relative;
+ border-radius: var(--border-radius);
+ height: 34px;
+ /* tag wrapper */
+ /* Single select default value */
+ /* displayed text if tag limit reached */
+ /* default multiselect input for search and placeholder */
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap {
+ align-items: center;
+ display: inline-flex;
+ overflow: hidden;
+ max-width: 100%;
+ position: relative;
+ padding: 3px 5px;
+ flex-grow: 1;
+ /* no tags or simple select? Show input directly
+ input is used to display single value */
+ /* selected tag */
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input {
+ opacity: 1 !important;
+ /* hide default empty text, show input instead */
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input + span:not(.multiselect__single) {
+ display: none;
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap .multiselect__tag {
+ flex: 1 0 0;
+ line-height: 20px;
+ padding: 1px 5px;
+ background-image: none;
+ color: var(--color-text-lighter);
+ border: 1px solid var(--color-border-dark);
+ display: inline-flex;
+ align-items: center;
+ border-radius: var(--border-radius);
+ /* require to override the default width
+ and force the tag to shring properly */
+ min-width: 0;
+ max-width: 50%;
+ max-width: fit-content;
+ max-width: -moz-fit-content;
+ /* css hack, detect if more than two tags
+ if so, flex-basis is set to half */
+ /* ellipsis the groups to be sure
+ we display at least two of them */
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap .multiselect__tag:only-child {
+ flex: 0 1 auto;
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap .multiselect__tag:not(:last-child) {
+ margin-right: 5px;
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__tags-wrap .multiselect__tag > span {
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__single {
+ padding: 8px 10px;
+ flex: 0 0 100%;
+ z-index: 1;
+ /* above input */
+ background-color: var(--color-main-background);
+ cursor: pointer;
+ line-height: 17px;
+}
+.multiselect.multiselect-vue .multiselect__tags .multiselect__strong,
+.multiselect.multiselect-vue .multiselect__tags .multiselect__limit {
+ flex: 0 0 auto;
+ line-height: 20px;
+ color: var(--color-text-lighter);
+ display: inline-flex;
+ align-items: center;
+ opacity: 0.7;
+ margin-right: 5px;
+ /* above the input */
+ z-index: 5;
+}
+.multiselect.multiselect-vue .multiselect__tags input.multiselect__input {
+ width: 100% !important;
+ position: absolute !important;
+ margin: 0;
+ opacity: 0;
+ /* let's leave it on top of tags but hide it */
+ height: 100%;
+ border: none;
+ /* override hide to force show the placeholder */
+ display: block !important;
+ /* only when not active */
+ cursor: pointer;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper {
+ position: absolute;
+ width: 100%;
+ margin-top: -1px;
+ border: 1px solid var(--color-border-dark);
+ background: var(--color-main-background);
+ z-index: 50;
+ max-height: 175px !important;
+ overflow-y: auto;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper .multiselect__content {
+ width: 100%;
+ padding: 5px 0;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li {
+ padding: 5px;
+ position: relative;
+ display: flex;
+ align-items: center;
+ background-color: transparent;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li,
+.multiselect.multiselect-vue .multiselect__content-wrapper li span {
+ cursor: pointer;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ height: 20px;
+ margin: 0;
+ min-height: 1em;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ display: inline-flex;
+ align-items: center;
+ background-color: transparent !important;
+ color: var(--color-text-lighter);
+ width: 100%;
+ /* selected checkmark icon */
+ /* add the prop tag-placeholder="create" to add the +
+ * icon on top of an unknown-and-ready-to-be-created entry
+ */
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span::before {
+ content: " ";
+ background-image: var(--icon-checkmark-dark);
+ background-repeat: no-repeat;
+ background-position: center;
+ min-width: 16px;
+ min-height: 16px;
+ display: block;
+ opacity: 0.5;
+ margin-right: 5px;
+ visibility: hidden;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span.multiselect__option--disabled {
+ background-color: var(--color-background-dark);
+ opacity: 0.5;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span[data-select=create]::before {
+ background-image: var(--icon-add-dark);
+ visibility: visible;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span.multiselect__option--highlight {
+ color: var(--color-main-text);
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span:not(.multiselect__option--disabled):hover::before {
+ opacity: 0.3;
+}
+.multiselect.multiselect-vue .multiselect__content-wrapper li > span.multiselect__option--selected::before, .multiselect.multiselect-vue .multiselect__content-wrapper li > span:not(.multiselect__option--disabled):hover::before {
+ visibility: visible;
+}
+
+/* Progressbar */
+progress:not(.vue) {
+ display: block;
+ width: 100%;
+ padding: 0;
+ border: 0 none;
+ background-color: var(--color-background-dark);
+ border-radius: var(--border-radius);
+ flex-basis: 100%;
+ height: 5px;
+ overflow: hidden;
+}
+progress:not(.vue).warn::-moz-progress-bar {
+ background: var(--color-error);
+}
+progress:not(.vue).warn::-webkit-progress-value {
+ background: var(--color-error);
+}
+progress:not(.vue)::-webkit-progress-bar {
+ background: transparent;
+}
+progress:not(.vue)::-moz-progress-bar {
+ border-radius: var(--border-radius);
+ background: var(--color-primary);
+ transition: 250ms all ease-in-out;
+}
+progress:not(.vue)::-webkit-progress-value {
+ border-radius: var(--border-radius);
+ background: var(--color-primary);
+ transition: 250ms all ease-in-out;
+}
+
+/* Animation */
+@keyframes shake {
+ 10%, 90% {
+ transform: translate(-1px);
+ }
+ 20%, 80% {
+ transform: translate(2px);
+ }
+ 30%, 50%, 70% {
+ transform: translate(-4px);
+ }
+ 40%, 60% {
+ transform: translate(4px);
+ }
+}
+.shake {
+ animation-name: shake;
+ animation-duration: 0.7s;
+ animation-timing-function: ease-out;
+}
+
+label.infield {
+ position: absolute;
+ left: -10000px;
+ top: -10000px;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
+}
+
+::placeholder,
+::-ms-input-placeholder,
+::-webkit-input-placeholder {
+ color: var(--color-text-maxcontrast);
+}
+
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
+ * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
+ * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
+ * @copyright Copyright (c) 2016, Jos Poortvliet <jos@opensuse.org>
+ * @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>
+ * @copyright Copyright (c) 2016, jowi <sjw@gmx.ch>
+ * @copyright Copyright (c) 2015, Hendrik Leppelsack <hendrik@leppelsack.de>
+ * @copyright Copyright (c) 2015, Volker E <volker.e@temporaer.net>
+ * @copyright Copyright (c) 2014-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ */
+/* prevent ugly selection effect on accidental selection */
+#header,
+#navigation,
+#expanddiv {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+}
+
+/* removed until content-focusing issue is fixed */
+#skip-to-content a {
+ position: absolute;
+ left: -10000px;
+ top: auto;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
+}
+#skip-to-content a:focus {
+ left: 76px;
+ top: -9px;
+ color: var(--color-primary-text);
+ width: auto;
+ height: auto;
+}
+
+/* HEADERS ------------------------------------------------------------------ */
+#body-user #header,
+#body-settings #header,
+#body-public #header {
+ display: inline-flex;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: 2000;
+ height: 50px;
+ background-color: var(--color-primary);
+ background-image: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-element-light) 100%);
+ box-sizing: border-box;
+ justify-content: space-between;
+}
+
+/* LOGO and APP NAME -------------------------------------------------------- */
+#nextcloud {
+ padding: 7px 0;
+ padding-left: 86px;
+ position: relative;
+ height: 100%;
+ box-sizing: border-box;
+ opacity: 1;
+ align-items: center;
+ display: flex;
+ flex-wrap: wrap;
+ overflow: hidden;
+}
+#nextcloud:focus {
+ opacity: 0.75;
+}
+#nextcloud:hover, #nextcloud:active {
+ opacity: 1;
+}
+
+#header {
+ /* Header menu */
+ /* show caret indicator next to logo to make clear it is tappable */
+ /* Right header standard */
+}
+#header .header-left > nav > .menu,
+#header .header-right > div > .menu {
+ background-color: var(--color-main-background);
+ filter: drop-shadow(0 1px 5px var(--color-box-shadow));
+ border-radius: 0 0 var(--border-radius) var(--border-radius);
+ box-sizing: border-box;
+ z-index: 2000;
+ position: absolute;
+ max-width: 350px;
+ min-height: 66px;
+ max-height: calc(100vh - 50px * 4);
+ right: 5px;
+ top: 50px;
+ margin: 0;
+ /* Dropdown arrow */
+ /* Use by the apps menu and the settings right menu */
+}
+#header .header-left > nav > .menu:not(.popovermenu),
+#header .header-right > div > .menu:not(.popovermenu) {
+ display: none;
+}
+#header .header-left > nav > .menu:after,
+#header .header-right > div > .menu:after {
+ border: 10px solid transparent;
+ border-bottom-color: var(--color-main-background);
+ bottom: 100%;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ right: 10px;
+}
+#header .header-left > nav > .menu #apps > ul, #header .header-left > nav > .menu > div, #header .header-left > nav > .menu > ul,
+#header .header-right > div > .menu #apps > ul,
+#header .header-right > div > .menu > div,
+#header .header-right > div > .menu > ul {
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ min-height: 66px;
+ max-height: calc(100vh - 50px * 4);
+}
+#header .header-left > nav > .menu #apps > ul li a, #header .header-left > nav > .menu.settings-menu > ul li a,
+#header .header-right > div > .menu #apps > ul li a,
+#header .header-right > div > .menu.settings-menu > ul li a {
+ display: inline-flex;
+ align-items: center;
+ height: 44px;
+ color: var(--color-main-text);
+ padding: 10px 12px;
+ box-sizing: border-box;
+ white-space: nowrap;
+ position: relative;
+ width: 100%;
+}
+#header .header-left > nav > .menu #apps > ul li a:hover, #header .header-left > nav > .menu #apps > ul li a:focus, #header .header-left > nav > .menu.settings-menu > ul li a:hover, #header .header-left > nav > .menu.settings-menu > ul li a:focus,
+#header .header-right > div > .menu #apps > ul li a:hover,
+#header .header-right > div > .menu #apps > ul li a:focus,
+#header .header-right > div > .menu.settings-menu > ul li a:hover,
+#header .header-right > div > .menu.settings-menu > ul li a:focus {
+ background-color: var(--color-background-hover);
+}
+#header .header-left > nav > .menu #apps > ul li a:active, #header .header-left > nav > .menu #apps > ul li a.active, #header .header-left > nav > .menu.settings-menu > ul li a:active, #header .header-left > nav > .menu.settings-menu > ul li a.active,
+#header .header-right > div > .menu #apps > ul li a:active,
+#header .header-right > div > .menu #apps > ul li a.active,
+#header .header-right > div > .menu.settings-menu > ul li a:active,
+#header .header-right > div > .menu.settings-menu > ul li a.active {
+ background-color: var(--color-primary-light);
+}
+#header .header-left > nav > .menu #apps > ul li a span, #header .header-left > nav > .menu.settings-menu > ul li a span,
+#header .header-right > div > .menu #apps > ul li a span,
+#header .header-right > div > .menu.settings-menu > ul li a span {
+ display: inline-block;
+ padding-bottom: 0;
+ color: var(--color-main-text);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ max-width: 110px;
+}
+#header .header-left > nav > .menu #apps > ul li a .icon-loading-small, #header .header-left > nav > .menu.settings-menu > ul li a .icon-loading-small,
+#header .header-right > div > .menu #apps > ul li a .icon-loading-small,
+#header .header-right > div > .menu.settings-menu > ul li a .icon-loading-small {
+ margin-right: 10px;
+ background-size: 16px 16px;
+}
+#header .header-left > nav > .menu #apps > ul li a img,
+#header .header-left > nav > .menu #apps > ul li a svg, #header .header-left > nav > .menu.settings-menu > ul li a img,
+#header .header-left > nav > .menu.settings-menu > ul li a svg,
+#header .header-right > div > .menu #apps > ul li a img,
+#header .header-right > div > .menu #apps > ul li a svg,
+#header .header-right > div > .menu.settings-menu > ul li a img,
+#header .header-right > div > .menu.settings-menu > ul li a svg {
+ opacity: 0.7;
+ margin-right: 10px;
+ height: 16px;
+ width: 16px;
+ filter: var(--background-invert-if-dark);
+}
+#header .logo {
+ display: inline-flex;
+ background-image: var(--image-logoheader, var(--image-logo, url("../img/logo/logo.svg")));
+ background-repeat: no-repeat;
+ background-size: contain;
+ background-position: center;
+ width: 62px;
+ position: absolute;
+ left: 12px;
+ top: 1px;
+ bottom: 1px;
+ filter: var(--image-logoheader-custom, var(--primary-invert-if-bright));
+}
+#header .header-appname-container {
+ display: none;
+ padding-right: 10px;
+ flex-shrink: 0;
+}
+#header .icon-caret {
+ display: inline-block;
+ width: 12px;
+ height: 12px;
+ margin: 0;
+ margin-top: -21px;
+ padding: 0;
+ vertical-align: middle;
+}
+#header #header-left, #header .header-left,
+#header #header-right, #header .header-right {
+ display: inline-flex;
+ align-items: center;
+}
+#header #header-left, #header .header-left {
+ flex: 1 0;
+ white-space: nowrap;
+ min-width: 0;
+}
+#header #header-right, #header .header-right {
+ justify-content: flex-end;
+ flex-shrink: 1;
+}
+#header .header-right > div,
+#header .header-right > form {
+ height: 100%;
+ position: relative;
+}
+#header .header-right > div > .menutoggle,
+#header .header-right > form > .menutoggle {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 50px;
+ height: 100%;
+ cursor: pointer;
+ opacity: 0.6;
+ padding: 0;
+ margin: 0;
+}
+
+/* hover effect for app switcher label */
+.header-appname-container .header-appname {
+ opacity: 0.75;
+}
+
+.menutoggle .icon-caret {
+ opacity: 0.75;
+}
+.menutoggle:hover .header-appname, .menutoggle:hover .icon-caret {
+ opacity: 1;
+}
+.menutoggle:focus .header-appname, .menutoggle:focus .icon-caret {
+ opacity: 1;
+}
+.menutoggle.active .header-appname, .menutoggle.active .icon-caret {
+ opacity: 1;
+}
+
+/* TODO: move into minimal css file for public shared template */
+/* only used for public share pages now as we have the app icons when logged in */
+.header-appname {
+ color: var(--color-primary-text);
+ font-size: 16px;
+ font-weight: bold;
+ margin: 0;
+ padding: 0;
+ padding-right: 5px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ flex: 1 1 100%;
+}
+
+.header-shared-by {
+ color: var(--color-primary-text);
+ position: relative;
+ font-weight: 300;
+ font-size: 11px;
+ line-height: 11px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+/* do not show menu toggle on public share links as there is no menu */
+#body-public #header .icon-caret {
+ display: none;
+}
+
+/* NAVIGATION --------------------------------------------------------------- */
+nav[role=navigation] {
+ display: inline-block;
+ width: 50px;
+ height: 50px;
+ margin-left: -50px;
+ position: relative;
+}
+
+#header .header-left > nav > #navigation {
+ position: relative;
+ left: 25px;
+ /* half the togglemenu */
+ transform: translateX(-50%);
+ width: 160px;
+}
+
+#header .header-left > nav > #navigation,
+.ui-datepicker,
+.ui-timepicker.ui-widget {
+ background-color: var(--color-main-background);
+ filter: drop-shadow(0 1px 10px var(--color-box-shadow));
+}
+#header .header-left > nav > #navigation:after,
+.ui-datepicker:after,
+.ui-timepicker.ui-widget:after {
+ /* position of dropdown arrow */
+ left: 50%;
+ bottom: 100%;
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ border-color: rgba(0, 0, 0, 0);
+ border-bottom-color: var(--color-main-background);
+ border-width: 10px;
+ margin-left: -10px;
+ /* border width */
+}
+
+#navigation {
+ box-sizing: border-box;
+}
+#navigation .in-header {
+ display: none;
+}
+
+/* USER MENU -----------------------------------------------------------------*/
+#settings {
+ display: inline-block;
+ height: 100%;
+ cursor: pointer;
+ flex: 0 0 auto;
+ /* User menu on the right */
+}
+#settings #expand {
+ opacity: 1;
+ /* override icon opacity */
+ padding-right: 12px;
+ /* Profile picture in header */
+ /* show triangle below user menu if active */
+}
+#settings #expand:hover, #settings #expand:focus, #settings #expand:active {
+ color: var(--color-primary-text);
+}
+#settings #expand:hover #expandDisplayName,
+#settings #expand:hover .avatardiv, #settings #expand:focus #expandDisplayName,
+#settings #expand:focus .avatardiv, #settings #expand:active #expandDisplayName,
+#settings #expand:active .avatardiv {
+ border-radius: 50%;
+ border: 2px solid var(--color-primary-text);
+ margin: -2px;
+}
+#settings #expand:hover .avatardiv, #settings #expand:focus .avatardiv, #settings #expand:active .avatardiv {
+ background-color: var(--color-primary-text);
+}
+#settings #expand:hover #expandDisplayName, #settings #expand:focus #expandDisplayName, #settings #expand:active #expandDisplayName {
+ opacity: 1;
+}
+#settings #expand .avatardiv {
+ cursor: pointer;
+ height: 32px;
+ width: 32px;
+ /* do not show display name when profile picture is present */
+}
+#settings #expand .avatardiv img {
+ opacity: 1;
+ cursor: pointer;
+}
+#settings #expand .avatardiv.avatardiv-shown + #expandDisplayName {
+ display: none;
+}
+#settings #expand #expandDisplayName {
+ padding: 8px;
+ opacity: 0.6;
+ cursor: pointer;
+ /* full opacity for gear icon if active */
+}
+#body-settings #settings #expand #expandDisplayName {
+ opacity: 1;
+}
+#body-settings #settings #expand:before {
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ border: 0 solid transparent;
+ border-bottom-color: var(--color-main-background);
+ border-width: 10px;
+ bottom: 0;
+ z-index: 100;
+ display: block;
+}
+#settings #expanddiv:after {
+ right: 22px;
+}
+
+/* Apps menu */
+#appmenu {
+ display: inline-flex;
+ min-width: 50px;
+ z-index: 2;
+ /* Show all app titles on hovering app menu area */
+ /* Also show app title on focusing single entry (showing all on focus is only possible with CSS4 and parent selectors) */
+ /* show triangle below active app */
+ /* triangle focus feedback */
+}
+#appmenu li {
+ position: relative;
+ cursor: pointer;
+ padding: 0 2px;
+ display: flex;
+ justify-content: center;
+ /* focused app visual feedback */
+ /* hidden apps menu */
+ /* App title */
+ /* Set up transitions for showing app titles on hover */
+ /* App icon */
+ /* Triangle */
+}
+#appmenu li a {
+ position: relative;
+ display: flex;
+ margin: 0;
+ height: 50px;
+ width: 50px;
+ align-items: center;
+ justify-content: center;
+ opacity: 0.6;
+ letter-spacing: -0.5px;
+ font-size: 12px;
+}
+#appmenu li:hover a,
+#appmenu li a:focus,
+#appmenu li a.active {
+ opacity: 1;
+ font-weight: bold;
+}
+#appmenu li:hover a,
+#appmenu li a:focus {
+ font-size: 14px;
+}
+#appmenu li:hover a + span,
+#appmenu li a:focus + span, #appmenu li:hover span, #appmenu li:focus span,
+#appmenu li a:focus span,
+#appmenu li a.active span {
+ display: inline-block;
+ text-overflow: initial;
+ width: auto;
+ overflow: hidden;
+ padding: 0 5px;
+ z-index: 2;
+}
+#appmenu li img,
+#appmenu li .icon-more-white {
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+}
+#appmenu li span {
+ opacity: 0;
+ position: absolute;
+ color: var(--color-primary-text);
+ bottom: 2px;
+ width: 100%;
+ text-align: center;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ transition: all var(--animation-quick) ease;
+ pointer-events: none;
+}
+#appmenu li svg,
+#appmenu li .icon-more-white {
+ transition: transform var(--animation-quick) ease;
+ filter: var(--primary-invert-if-bright);
+}
+#appmenu li a::before {
+ transition: border var(--animation-quick) ease;
+}
+#appmenu:hover li {
+ /* Move up app icon */
+ /* Show app title */
+ /* Prominent app title for current and hovered/focused app */
+ /* Smaller triangle because of limited space */
+}
+#appmenu:hover li svg,
+#appmenu:hover li .icon-more,
+#appmenu:hover li .icon-more-white,
+#appmenu:hover li .icon-loading-small,
+#appmenu:hover li .icon-loading-small-dark {
+ transform: translateY(-7px);
+}
+#appmenu:hover li span {
+ opacity: 0.6;
+ bottom: 2px;
+ z-index: -1;
+ /* fix clickability issue - otherwise we need to move the span into the link */
+}
+#appmenu:hover li:hover span, #appmenu:hover li:focus span,
+#appmenu:hover li .active + span {
+ opacity: 1;
+}
+#appmenu:hover li a::before {
+ border-width: 5px;
+}
+#appmenu li a:focus {
+ /* Move up app icon */
+ /* Show app title */
+ /* Smaller triangle because of limited space */
+}
+#appmenu li a:focus svg,
+#appmenu li a:focus .icon-more,
+#appmenu li a:focus .icon-more-white,
+#appmenu li a:focus .icon-loading-small,
+#appmenu li a:focus .icon-loading-small-dark {
+ transform: translateY(-7px);
+}
+#appmenu li a:focus + span,
+#appmenu li a:focus span {
+ opacity: 1;
+ bottom: 2px;
+}
+#appmenu li a:focus::before {
+ border-width: 5px;
+}
+#appmenu li a::before {
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ border: 0 solid transparent;
+ border-bottom-color: var(--color-main-background);
+ border-width: 10px;
+ transform: translateX(-50%);
+ left: 50%;
+ bottom: 0;
+ display: none;
+}
+#appmenu li a.active::before,
+#appmenu li:hover a::before,
+#appmenu li:hover a.active::before,
+#appmenu li a:focus::before {
+ display: block;
+}
+#appmenu li a.active::before {
+ z-index: 99;
+}
+#appmenu li:hover a::before,
+#appmenu li a.active:hover::before,
+#appmenu li a:focus::before {
+ z-index: 101;
+}
+#appmenu li.hidden {
+ display: none;
+}
+#appmenu #more-apps {
+ z-index: 3;
+}
+
+.unread-counter {
+ display: none;
+}
+
+#apps .app-icon-notification,
+#appmenu .app-icon-notification {
+ fill: var(--color-error);
+}
+
+#apps svg:not(.has-unread) .app-icon-notification-mask,
+#appmenu svg:not(.has-unread) .app-icon-notification-mask {
+ display: none;
+}
+#apps svg:not(.has-unread) .app-icon-notification,
+#appmenu svg:not(.has-unread) .app-icon-notification {
+ display: none;
+}
+
+/* Skip navigation links – show only on keyboard focus */
+.skip-navigation {
+ padding: 11px;
+ position: absolute;
+ overflow: hidden;
+ z-index: 9999;
+ top: -999px;
+ left: 3px;
+ /* Force primary color, otherwise too light focused color */
+ background: var(--color-primary) !important;
+}
+.skip-navigation.skip-content {
+ left: 300px;
+ margin-left: 3px;
+}
+.skip-navigation:focus, .skip-navigation:active {
+ top: 50px;
+}
+
+/* Empty content messages in the header e.g. notifications, contacts menu, … */
+header #emptycontent h2,
+header .emptycontent h2 {
+ font-weight: normal;
+ font-size: 16px;
+}
+header #emptycontent [class^=icon-],
+header #emptycontent [class*=icon-],
+header .emptycontent [class^=icon-],
+header .emptycontent [class*=icon-] {
+ background-size: 48px;
+ height: 48px;
+ width: 48px;
+}
+
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ * @author Joas Schilling <coding@schilljs.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Vincent Chan <plus.vincchan@gmail.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Hendrik Leppelsack <hendrik@leppelsack.de>
+ * @author Jan-Christoph Borchardt <hey@jancborchardt.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @see core/src/icons.js
+ */
+/**
+ * SVG COLOR API
+ *
+ * @param string $icon the icon filename
+ * @param string $dir the icon folder within /core/img if $core or app name
+ * @param string $color the desired color in hexadecimal
+ * @param int $version the version of the file
+ * @param bool [$core] search icon in core
+ *
+ * @returns A background image with the url to the set to the requested icon.
+ */
+/* GLOBAL ------------------------------------------------------------------- */
+[class^=icon-], [class*=" icon-"] {
+ background-repeat: no-repeat;
+ background-position: center;
+ min-width: 16px;
+ min-height: 16px;
+}
+
+.icon-breadcrumb {
+ background-image: url("../img/breadcrumb.svg?v=1");
+}
+
+/* LOADING ------------------------------------------------------------------ */
+.loading,
+.loading-small,
+.icon-loading,
+.icon-loading-dark,
+.icon-loading-small,
+.icon-loading-small-dark {
+ position: relative;
+}
+.loading:after,
+.loading-small:after,
+.icon-loading:after,
+.icon-loading-dark:after,
+.icon-loading-small:after,
+.icon-loading-small-dark:after {
+ z-index: 2;
+ content: "";
+ height: 28px;
+ width: 28px;
+ margin: -16px 0 0 -16px;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ border-radius: 100%;
+ -webkit-animation: rotate 0.8s infinite linear;
+ animation: rotate 0.8s infinite linear;
+ -webkit-transform-origin: center;
+ -ms-transform-origin: center;
+ transform-origin: center;
+ border: 2px solid var(--color-loading-light);
+ border-top-color: var(--color-loading-dark);
+ filter: var(--background-invert-if-dark);
+}
+.primary .loading:after, .primary + .loading:after,
+.primary .loading-small:after,
+.primary + .loading-small:after,
+.primary .icon-loading:after,
+.primary + .icon-loading:after,
+.primary .icon-loading-dark:after,
+.primary + .icon-loading-dark:after,
+.primary .icon-loading-small:after,
+.primary + .icon-loading-small:after,
+.primary .icon-loading-small-dark:after,
+.primary + .icon-loading-small-dark:after {
+ filter: var(--primary-invert-if-bright);
+}
+
+.icon-loading-dark:after,
+.icon-loading-small-dark:after {
+ border: 2px solid var(--color-loading-dark);
+ border-top-color: var(--color-loading-light);
+}
+
+.icon-loading-small:after,
+.icon-loading-small-dark:after {
+ height: 12px;
+ width: 12px;
+ margin: -8px 0 0 -8px;
+}
+
+/* Css replaced elements don't have ::after nor ::before */
+audio.icon-loading, canvas.icon-loading, embed.icon-loading, iframe.icon-loading, img.icon-loading, input.icon-loading, object.icon-loading, video.icon-loading {
+ background-image: url("../img/loading.gif");
+}
+audio.icon-loading-dark, canvas.icon-loading-dark, embed.icon-loading-dark, iframe.icon-loading-dark, img.icon-loading-dark, input.icon-loading-dark, object.icon-loading-dark, video.icon-loading-dark {
+ background-image: url("../img/loading-dark.gif");
+}
+audio.icon-loading-small, canvas.icon-loading-small, embed.icon-loading-small, iframe.icon-loading-small, img.icon-loading-small, input.icon-loading-small, object.icon-loading-small, video.icon-loading-small {
+ background-image: url("../img/loading-small.gif");
+}
+audio.icon-loading-small-dark, canvas.icon-loading-small-dark, embed.icon-loading-small-dark, iframe.icon-loading-small-dark, img.icon-loading-small-dark, input.icon-loading-small-dark, object.icon-loading-small-dark, video.icon-loading-small-dark {
+ background-image: url("../img/loading-small-dark.gif");
+}
+
+@keyframes rotate {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
+.icon-32 {
+ background-size: 32px !important;
+}
+
+.icon-white.icon-shadow,
+.icon-audio-white,
+.icon-audio-off-white,
+.icon-fullscreen-white,
+.icon-screen-white,
+.icon-screen-off-white,
+.icon-video-white,
+.icon-video-off-white {
+ filter: drop-shadow(1px 1px 4px var(--color-box-shadow));
+}
+
+/* ICONS -------------------------------------------------------------------
+ * These icon classes are generated automatically with the following pattern
+ * .icon-close (black icon)
+ * .icon-close-white (white icon)
+ * .icon-close.icon-white (white icon)
+ *
+ * Some class definitions are kept as before, since they don't follow the pattern
+ * or have some additional styling like drop shadows
+ */
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @copyright Copyright (c) 2016-2017, John Molakvoæ <skjnldsv@protonmail.com>
+ * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
+ * @copyright Copyright (c) 2016, Morris Jobke <hey@morrisjobke.de>
+ * @copyright Copyright (c) 2016, pgys <info@pexlab.space>
+ * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
+ * @copyright Copyright (c) 2016, Stefan Weil <sw@weilnetz.de>
+ * @copyright Copyright (c) 2016, Roeland Jago Douma <rullzer@owncloud.com>
+ * @copyright Copyright (c) 2016, jowi <sjw@gmx.ch>
+ * @copyright Copyright (c) 2015, Hendrik Leppelsack <hendrik@leppelsack.de>
+ * @copyright Copyright (c) 2015, Thomas Müller <thomas.mueller@tmit.eu>
+ * @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>
+ * @copyright Copyright (c) 2014-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ */
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @see core/src/icons.js
+ */
+/**
+ * SVG COLOR API
+ *
+ * @param string $icon the icon filename
+ * @param string $dir the icon folder within /core/img if $core or app name
+ * @param string $color the desired color in hexadecimal
+ * @param int $version the version of the file
+ * @param bool [$core] search icon in core
+ *
+ * @returns A background image with the url to the set to the requested icon.
+ */
+/* BASE STYLING ------------------------------------------------------------ */
+h2 {
+ font-weight: bold;
+ font-size: 20px;
+ margin-bottom: 12px;
+ line-height: 30px;
+ color: var(--color-text-light);
+}
+
+h3 {
+ font-size: 16px;
+ margin: 12px 0;
+ color: var(--color-text-light);
+}
+
+h4 {
+ font-size: 14px;
+}
+
+/* do not use italic typeface style, instead lighter color */
+em {
+ font-style: normal;
+ color: var(--color-text-lighter);
+}
+
+dl {
+ padding: 12px 0;
+}
+
+dt,
+dd {
+ display: inline-block;
+ padding: 12px;
+ padding-left: 0;
+}
+
+dt {
+ width: 130px;
+ white-space: nowrap;
+ text-align: right;
+}
+
+kbd {
+ padding: 4px 10px;
+ border: 1px solid #ccc;
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
+ border-radius: var(--border-radius);
+ display: inline-block;
+ white-space: nowrap;
+}
+
+/* APP STYLING ------------------------------------------------------------ */
+#content[class*=app-] * {
+ box-sizing: border-box;
+}
+
+/* APP-NAVIGATION ------------------------------------------------------------ */
+/* Navigation: folder like structure */
+#app-navigation:not(.vue) {
+ width: 300px;
+ position: fixed;
+ top: 50px;
+ left: 0;
+ z-index: 500;
+ overflow-y: auto;
+ overflow-x: hidden;
+ height: calc(100% - 50px);
+ box-sizing: border-box;
+ background-color: var(--color-main-background);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ border-right: 1px solid var(--color-border);
+ display: flex;
+ flex-direction: column;
+ flex-grow: 0;
+ flex-shrink: 0;
+ /* 'New' button */
+ /**
+ * Button styling for menu, edit and undo
+ */
+ /**
+ * Collapsible menus
+ */
+ /**
+ * App navigation utils, buttons and counters for drop down menu
+ */
+ /**
+ * Editable entries
+ */
+ /**
+ * Deleted entries with undo button
+ */
+ /**
+ * Common rules for animation of undo and edit entries
+ */
+ /**
+ * drag and drop
+ */
+}
+#app-navigation:not(.vue) .app-navigation-new {
+ display: block;
+ padding: 10px;
+}
+#app-navigation:not(.vue) .app-navigation-new button {
+ display: inline-block;
+ width: 100%;
+ padding: 10px;
+ padding-left: 34px;
+ background-position: 10px center;
+ text-align: left;
+ margin: 0;
+}
+#app-navigation:not(.vue) li {
+ position: relative;
+}
+#app-navigation:not(.vue) > ul {
+ position: relative;
+ height: 100%;
+ width: inherit;
+ overflow-x: hidden;
+ overflow-y: auto;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ /* Menu and submenu */
+}
+#app-navigation:not(.vue) > ul > li {
+ display: inline-flex;
+ flex-wrap: wrap;
+ order: 1;
+ flex-shrink: 0;
+ /* Pinned-to-bottom entries */
+ /* align loader */
+ /* hide deletion/collapse of subitems */
+ /* Second level nesting for lists */
+}
+#app-navigation:not(.vue) > ul > li.pinned {
+ order: 2;
+}
+#app-navigation:not(.vue) > ul > li.pinned.first-pinned {
+ margin-top: auto !important;
+}
+#app-navigation:not(.vue) > ul > li > .app-navigation-entry-deleted {
+ /* Ugly hack for overriding the main entry link */
+ padding-left: 44px !important;
+}
+#app-navigation:not(.vue) > ul > li > .app-navigation-entry-edit {
+ /* Ugly hack for overriding the main entry link */
+ /* align the input correctly with the link text
+ 44px-6px padding for the input */
+ padding-left: 38px !important;
+}
+#app-navigation:not(.vue) > ul > li a:hover,
+#app-navigation:not(.vue) > ul > li a:hover > a,
+#app-navigation:not(.vue) > ul > li a:focus,
+#app-navigation:not(.vue) > ul > li a:focus > a {
+ background-color: var(--color-background-hover);
+}
+#app-navigation:not(.vue) > ul > li.active,
+#app-navigation:not(.vue) > ul > li.active > a,
+#app-navigation:not(.vue) > ul > li a:active,
+#app-navigation:not(.vue) > ul > li a:active > a,
+#app-navigation:not(.vue) > ul > li a.selected,
+#app-navigation:not(.vue) > ul > li a.selected > a,
+#app-navigation:not(.vue) > ul > li a.active,
+#app-navigation:not(.vue) > ul > li a.active > a {
+ background-color: var(--color-primary-light);
+}
+#app-navigation:not(.vue) > ul > li.icon-loading-small:after {
+ left: 22px;
+ top: 22px;
+}
+#app-navigation:not(.vue) > ul > li.deleted > ul, #app-navigation:not(.vue) > ul > li.collapsible:not(.open) > ul {
+ display: none;
+}
+#app-navigation:not(.vue) > ul > li.app-navigation-caption {
+ font-weight: bold;
+ line-height: 44px;
+ padding: 0 44px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ box-shadow: none !important;
+ user-select: none;
+ pointer-events: none;
+}
+#app-navigation:not(.vue) > ul > li.app-navigation-caption:not(:first-child) {
+ margin-top: 22px;
+}
+#app-navigation:not(.vue) > ul > li > ul {
+ flex: 0 1 auto;
+ width: 100%;
+ position: relative;
+}
+#app-navigation:not(.vue) > ul > li > ul > li {
+ display: inline-flex;
+ flex-wrap: wrap;
+ padding-left: 44px;
+ /* align loader */
+}
+#app-navigation:not(.vue) > ul > li > ul > li:hover,
+#app-navigation:not(.vue) > ul > li > ul > li:hover > a, #app-navigation:not(.vue) > ul > li > ul > li:focus,
+#app-navigation:not(.vue) > ul > li > ul > li:focus > a {
+ background-color: var(--color-background-hover);
+}
+#app-navigation:not(.vue) > ul > li > ul > li.active,
+#app-navigation:not(.vue) > ul > li > ul > li.active > a,
+#app-navigation:not(.vue) > ul > li > ul > li a.selected,
+#app-navigation:not(.vue) > ul > li > ul > li a.selected > a {
+ background-color: var(--color-primary-light);
+}
+#app-navigation:not(.vue) > ul > li > ul > li.icon-loading-small:after {
+ left: 22px;
+ /* 44px / 2 */
+}
+#app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-deleted {
+ /* margin to keep active indicator visible */
+ margin-left: 4px;
+ padding-left: 84px;
+}
+#app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-edit {
+ /* margin to keep active indicator visible */
+ margin-left: 4px;
+ /* align the input correctly with the link text
+ 44px+44px-4px-6px padding for the input */
+ padding-left: 78px !important;
+}
+#app-navigation:not(.vue) > ul > li,
+#app-navigation:not(.vue) > ul > li > ul > li {
+ position: relative;
+ width: 100%;
+ box-sizing: border-box;
+ /* hide icons if loading */
+ /* Main entry link */
+ /* Bullet icon */
+ /* popover fix the flex positionning of the li parent */
+ /* show edit/undo field if editing/deleted */
+}
+#app-navigation:not(.vue) > ul > li.icon-loading-small > a,
+#app-navigation:not(.vue) > ul > li.icon-loading-small > .app-navigation-entry-bullet,
+#app-navigation:not(.vue) > ul > li > ul > li.icon-loading-small > a,
+#app-navigation:not(.vue) > ul > li > ul > li.icon-loading-small > .app-navigation-entry-bullet {
+ /* hide icon or bullet if loading state*/
+ background: transparent !important;
+}
+#app-navigation:not(.vue) > ul > li > a,
+#app-navigation:not(.vue) > ul > li > ul > li > a {
+ background-size: 16px 16px;
+ background-position: 14px center;
+ background-repeat: no-repeat;
+ display: block;
+ justify-content: space-between;
+ line-height: 44px;
+ min-height: 44px;
+ padding: 0 12px 0 14px;
+ overflow: hidden;
+ box-sizing: border-box;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ color: var(--color-main-text);
+ opacity: 0.8;
+ flex: 1 1 0px;
+ z-index: 100;
+ /* above the bullet to allow click*/
+ /* TODO: forbid using img as icon in menu? */
+ /* counter can also be inside the link */
+}
+#app-navigation:not(.vue) > ul > li > a.svg,
+#app-navigation:not(.vue) > ul > li > ul > li > a.svg {
+ padding: 0 12px 0 44px;
+}
+#app-navigation:not(.vue) > ul > li > a:first-child img,
+#app-navigation:not(.vue) > ul > li > ul > li > a:first-child img {
+ margin-right: 11px;
+ width: 16px;
+ height: 16px;
+ filter: var(--background-invert-if-dark);
+}
+#app-navigation:not(.vue) > ul > li > a > .app-navigation-entry-utils,
+#app-navigation:not(.vue) > ul > li > ul > li > a > .app-navigation-entry-utils {
+ display: inline-block;
+ float: right;
+}
+#app-navigation:not(.vue) > ul > li > a > .app-navigation-entry-utils .app-navigation-entry-utils-counter,
+#app-navigation:not(.vue) > ul > li > ul > li > a > .app-navigation-entry-utils .app-navigation-entry-utils-counter {
+ padding-right: 0 !important;
+}
+#app-navigation:not(.vue) > ul > li > .app-navigation-entry-bullet,
+#app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-bullet {
+ position: absolute;
+ display: block;
+ margin: 16px;
+ width: 12px;
+ height: 12px;
+ border: none;
+ border-radius: 50%;
+ cursor: pointer;
+ transition: background 100ms ease-in-out;
+}
+#app-navigation:not(.vue) > ul > li > .app-navigation-entry-bullet + a,
+#app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-bullet + a {
+ /* hide icon if bullet, can't have both */
+ background: transparent !important;
+}
+#app-navigation:not(.vue) > ul > li > .app-navigation-entry-menu,
+#app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-menu {
+ top: 44px;
+}
+#app-navigation:not(.vue) > ul > li.editing .app-navigation-entry-edit,
+#app-navigation:not(.vue) > ul > li > ul > li.editing .app-navigation-entry-edit {
+ opacity: 1;
+ z-index: 250;
+}
+#app-navigation:not(.vue) > ul > li.deleted .app-navigation-entry-deleted,
+#app-navigation:not(.vue) > ul > li > ul > li.deleted .app-navigation-entry-deleted {
+ transform: translateX(0);
+ z-index: 250;
+}
+#app-navigation:not(.vue).hidden {
+ display: none;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button > button,
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button {
+ border: 0;
+ opacity: 0.5;
+ background-color: transparent;
+ background-repeat: no-repeat;
+ background-position: center;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button > button:hover, #app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button > button:focus,
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover,
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus {
+ background-color: transparent;
+ opacity: 1;
+}
+#app-navigation:not(.vue) .collapsible {
+ /* Fallback for old collapse button.
+ TODO: to be removed. Leaved here for retro compatibility */
+ /* force padding on link no matter if 'a' has an icon class */
+}
+#app-navigation:not(.vue) .collapsible .collapse {
+ opacity: 0;
+ position: absolute;
+ width: 44px;
+ height: 44px;
+ margin: 0;
+ z-index: 110;
+ /* Needed for IE11; otherwise the button appears to the right of the
+ * link. */
+ left: 0;
+}
+#app-navigation:not(.vue) .collapsible:before {
+ position: absolute;
+ height: 44px;
+ width: 44px;
+ margin: 0;
+ padding: 0;
+ background: none;
+ /* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */
+ background-image: var(--icon-triangle-s-dark);
+ background-size: 16px;
+ background-repeat: no-repeat;
+ background-position: center;
+ border: none;
+ border-radius: 0;
+ outline: none !important;
+ box-shadow: none;
+ content: " ";
+ opacity: 0;
+ -webkit-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+ z-index: 105;
+ background-color: var(--color-background-hover);
+ border-radius: 50%;
+ transition: opacity 100ms ease-in-out;
+}
+#app-navigation:not(.vue) .collapsible > a:first-child {
+ padding-left: 44px;
+}
+#app-navigation:not(.vue) .collapsible:hover:before, #app-navigation:not(.vue) .collapsible:focus:before {
+ opacity: 1;
+}
+#app-navigation:not(.vue) .collapsible:hover > .app-navigation-entry-bullet, #app-navigation:not(.vue) .collapsible:focus > .app-navigation-entry-bullet {
+ background: transparent !important;
+}
+#app-navigation:not(.vue) .collapsible.open:before {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils {
+ flex: 0 1 auto;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils ul {
+ display: flex !important;
+ align-items: center;
+ justify-content: flex-end;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils li {
+ width: 44px !important;
+ height: 44px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils button {
+ height: 100%;
+ width: 100%;
+ margin: 0;
+ box-shadow: none;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button {
+ /* Prevent bg img override if an icon class is set */
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button button:not([class^=icon-]):not([class*=" icon-"]) {
+ /* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */
+ background-image: var(--icon-more-dark);
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:hover button, #app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:focus button {
+ background-color: transparent;
+ opacity: 1;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter {
+ overflow: hidden;
+ text-align: right;
+ font-size: 9pt;
+ line-height: 44px;
+ padding: 0 12px;
+ /* Same padding as all li > a in the app-navigation */
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted {
+ padding: 0;
+ text-align: center;
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted span {
+ padding: 2px 5px;
+ border-radius: 10px;
+ background-color: var(--color-primary);
+ color: var(--color-primary-text);
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit {
+ padding-left: 5px;
+ padding-right: 5px;
+ display: block;
+ width: calc(100% - 1px);
+ /* Avoid border overlapping */
+ transition: opacity 250ms ease-in-out;
+ opacity: 0;
+ position: absolute;
+ background-color: var(--color-main-background);
+ z-index: -1;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit form,
+#app-navigation:not(.vue) .app-navigation-entry-edit div {
+ display: inline-flex;
+ width: 100%;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit input {
+ padding: 5px;
+ margin-right: 0;
+ height: 38px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit input:hover, #app-navigation:not(.vue) .app-navigation-entry-edit input:focus {
+ /* overlapp borders */
+ z-index: 1;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit input[type=text] {
+ width: 100%;
+ min-width: 0;
+ /* firefox hack: override auto */
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit button,
+#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]) {
+ width: 36px;
+ height: 38px;
+ flex: 0 0 36px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:last-child),
+#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:last-child) {
+ border-radius: 0 !important;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:first-child),
+#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:first-child) {
+ margin-left: -1px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit button:last-child,
+#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):last-child {
+ border-bottom-right-radius: var(--border-radius);
+ border-top-right-radius: var(--border-radius);
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+#app-navigation:not(.vue) .app-navigation-entry-deleted {
+ display: inline-flex;
+ padding-left: 44px;
+ transform: translateX(300px);
+}
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-description {
+ position: relative;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ flex: 1 1 0px;
+ line-height: 44px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button {
+ margin: 0;
+ height: 44px;
+ width: 44px;
+ line-height: 44px;
+}
+#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover, #app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus {
+ opacity: 1;
+}
+#app-navigation:not(.vue) .app-navigation-entry-edit,
+#app-navigation:not(.vue) .app-navigation-entry-deleted {
+ width: calc(100% - 1px);
+ /* Avoid border overlapping */
+ transition: transform 250ms ease-in-out, opacity 250ms ease-in-out, z-index 250ms ease-in-out;
+ position: absolute;
+ left: 0;
+ background-color: var(--color-main-background);
+ box-sizing: border-box;
+}
+#app-navigation:not(.vue) .drag-and-drop {
+ -webkit-transition: padding-bottom 500ms ease 0s;
+ transition: padding-bottom 500ms ease 0s;
+ padding-bottom: 40px;
+}
+#app-navigation:not(.vue) .error {
+ color: var(--color-error);
+}
+#app-navigation:not(.vue) .app-navigation-entry-utils ul,
+#app-navigation:not(.vue) .app-navigation-entry-menu ul {
+ list-style-type: none;
+}
+
+/* CONTENT --------------------------------------------------------- */
+#content {
+ box-sizing: border-box;
+ position: relative;
+ display: flex;
+ padding-top: 50px;
+ min-height: 100%;
+}
+
+/* APP-CONTENT AND WRAPPER ------------------------------------------ */
+/* Part where the content will be loaded into */
+/**
+ * !Important. We are defining the minimum requirement we want for flex
+ * Just before the mobile breakpoint we have variables.$breakpoint-mobile (1024px) - variables.$navigation-width
+ * -> 468px. In that case we want 200px for the list and 268px for the content
+ */
+#app-content {
+ z-index: 1000;
+ background-color: var(--color-main-background);
+ position: relative;
+ flex-basis: 100vw;
+ min-height: 100%;
+ /* margin if navigation element is here */
+ /* no top border for first settings item */
+ /* if app-content-list is present */
+}
+#app-navigation:not(.hidden) + #app-content {
+ margin-left: 300px;
+}
+#app-content > .section:first-child {
+ border-top: none;
+}
+#app-content #app-content-wrapper {
+ display: flex;
+ position: relative;
+ align-items: stretch;
+ /* make sure we have at least full height for loaders or such
+ no need for list/details since we have a flex stretch */
+ min-height: 100%;
+ /* CONTENT DETAILS AFTER LIST*/
+}
+#app-content #app-content-wrapper .app-content-details {
+ /* grow full width */
+ flex: 1 1 524px;
+}
+#app-content #app-content-wrapper .app-content-details #app-navigation-toggle-back {
+ display: none;
+}
+
+/* APP-SIDEBAR ------------------------------------------------------------ */
+/*
+ Sidebar: a sidebar to be used within #content
+ #app-content will be shrinked properly
+*/
+#app-sidebar {
+ width: 27vw;
+ min-width: 300px;
+ max-width: 500px;
+ display: block;
+ position: -webkit-sticky;
+ position: sticky;
+ top: 50px;
+ right: 0;
+ overflow-y: auto;
+ overflow-x: hidden;
+ z-index: 1500;
+ height: calc(100vh - 50px);
+ background: var(--color-main-background);
+ border-left: 1px solid var(--color-border);
+ flex-shrink: 0;
+}
+#app-sidebar.disappear {
+ display: none;
+}
+
+/* APP-SETTINGS ------------------------------------------------------------ */
+/* settings area */
+#app-settings {
+ margin-top: auto;
+}
+#app-settings.open #app-settings-content, #app-settings.opened #app-settings-content {
+ display: block;
+}
+
+#app-settings-content {
+ display: none;
+ padding: 10px;
+ background-color: var(--color-main-background);
+ /* restrict height of settings and make scrollable */
+ max-height: 300px;
+ overflow-y: auto;
+ box-sizing: border-box;
+ /* display input fields at full width */
+}
+#app-settings-content input[type=text] {
+ width: 93%;
+}
+#app-settings-content .info-text {
+ padding: 5px 0 7px 22px;
+ color: var(--color-text-lighter);
+}
+#app-settings-content input[type=checkbox].radio + label, #app-settings-content input[type=checkbox].checkbox + label, #app-settings-content input[type=radio].radio + label, #app-settings-content input[type=radio].checkbox + label {
+ display: inline-block;
+ width: 100%;
+ padding: 5px 0;
+}
+
+#app-settings-header {
+ box-sizing: border-box;
+ background-color: var(--color-main-background);
+}
+
+#app-settings-header .settings-button {
+ display: flex;
+ align-items: center;
+ height: 44px;
+ width: 100%;
+ padding: 0;
+ margin: 0;
+ background-color: var(--color-main-background);
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: left;
+ font-weight: normal;
+ font-size: 100%;
+ opacity: 0.8;
+ /* like app-navigation a */
+ color: var(--color-main-text);
+}
+#app-settings-header .settings-button.opened {
+ border-top: solid 1px var(--color-border);
+ background-color: var(--color-main-background);
+}
+#app-settings-header .settings-button:hover, #app-settings-header .settings-button:focus {
+ background-color: var(--color-background-hover);
+}
+#app-settings-header .settings-button::before {
+ background-image: var(--icon-settings-dark);
+ background-position: 14px center;
+ background-repeat: no-repeat;
+ content: "";
+ width: 44px;
+ height: 44px;
+ top: 0;
+ left: 0;
+ display: block;
+ filter: var(--background-invert-if-dark);
+}
+
+/* GENERAL SECTION ------------------------------------------------------------ */
+.section {
+ display: block;
+ padding: 30px;
+ margin-bottom: 24px;
+ /* slight position correction of checkboxes and radio buttons */
+}
+.section.hidden {
+ display: none !important;
+}
+.section input[type=checkbox], .section input[type=radio] {
+ vertical-align: -2px;
+ margin-right: 4px;
+}
+
+.sub-section {
+ position: relative;
+ margin-top: 10px;
+ margin-left: 27px;
+ margin-bottom: 10px;
+}
+
+.appear {
+ opacity: 1;
+ -webkit-transition: opacity 500ms ease 0s;
+ -moz-transition: opacity 500ms ease 0s;
+ -ms-transition: opacity 500ms ease 0s;
+ -o-transition: opacity 500ms ease 0s;
+ transition: opacity 500ms ease 0s;
+}
+.appear.transparent {
+ opacity: 0;
+}
+
+/* TABS ------------------------------------------------------------ */
+.tabHeaders {
+ display: flex;
+ margin-bottom: 16px;
+}
+.tabHeaders .tabHeader {
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ text-align: center;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ cursor: pointer;
+ color: var(--color-text-lighter);
+ margin-bottom: 1px;
+ padding: 5px;
+ /* Use same amount as sidebar padding */
+}
+.tabHeaders .tabHeader.hidden {
+ display: none;
+}
+.tabHeaders .tabHeader:first-child {
+ padding-left: 15px;
+}
+.tabHeaders .tabHeader:last-child {
+ padding-right: 15px;
+}
+.tabHeaders .tabHeader .icon {
+ display: inline-block;
+ width: 100%;
+ height: 16px;
+ background-size: 16px;
+ vertical-align: middle;
+ margin-top: -2px;
+ margin-right: 3px;
+ opacity: 0.7;
+ cursor: pointer;
+}
+.tabHeaders .tabHeader a {
+ color: var(--color-text-lighter);
+ margin-bottom: 1px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.tabHeaders .tabHeader.selected {
+ font-weight: bold;
+}
+.tabHeaders .tabHeader.selected, .tabHeaders .tabHeader:hover, .tabHeaders .tabHeader:focus {
+ margin-bottom: 0px;
+ color: var(--color-main-text);
+ border-bottom: 1px solid var(--color-text-lighter);
+}
+
+.tabsContainer {
+ clear: left;
+}
+.tabsContainer .tab {
+ padding: 0 15px 15px;
+}
+
+/* POPOVER MENU ------------------------------------------------------------ */
+.ie .bubble, .ie .bubble:after,
+.ie .popovermenu, .ie .popovermenu:after,
+.ie #app-navigation .app-navigation-entry-menu,
+.ie #app-navigation .app-navigation-entry-menu:after,
+.edge .bubble,
+.edge .bubble:after,
+.edge .popovermenu,
+.edge .popovermenu:after,
+.edge #app-navigation .app-navigation-entry-menu,
+.edge #app-navigation .app-navigation-entry-menu:after {
+ border: 1px solid var(--color-border);
+}
+
+.bubble,
+.app-navigation-entry-menu,
+.popovermenu {
+ position: absolute;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+ border-radius: var(--border-radius);
+ z-index: 110;
+ margin: 5px;
+ margin-top: -5px;
+ right: 0;
+ filter: drop-shadow(0 1px 3px var(--color-box-shadow));
+ display: none;
+ will-change: filter;
+ /* Center the popover */
+ /* Align the popover to the left */
+}
+.bubble:after,
+.app-navigation-entry-menu:after,
+.popovermenu:after {
+ bottom: 100%;
+ right: 7px;
+ /* change this to adjust the arrow position */
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ border-bottom-color: var(--color-main-background);
+ border-width: 9px;
+}
+.bubble.menu-center,
+.app-navigation-entry-menu.menu-center,
+.popovermenu.menu-center {
+ transform: translateX(50%);
+ right: 50%;
+ margin-right: 0;
+}
+.bubble.menu-center:after,
+.app-navigation-entry-menu.menu-center:after,
+.popovermenu.menu-center:after {
+ right: 50%;
+ transform: translateX(50%);
+}
+.bubble.menu-left,
+.app-navigation-entry-menu.menu-left,
+.popovermenu.menu-left {
+ right: auto;
+ left: 0;
+ margin-right: 0;
+}
+.bubble.menu-left:after,
+.app-navigation-entry-menu.menu-left:after,
+.popovermenu.menu-left:after {
+ left: 6px;
+ right: auto;
+}
+.bubble.open,
+.app-navigation-entry-menu.open,
+.popovermenu.open {
+ display: block;
+}
+.bubble.contactsmenu-popover,
+.app-navigation-entry-menu.contactsmenu-popover,
+.popovermenu.contactsmenu-popover {
+ margin: 0;
+}
+.bubble ul,
+.app-navigation-entry-menu ul,
+.popovermenu ul {
+ /* Overwrite #app-navigation > ul ul */
+ display: flex !important;
+ flex-direction: column;
+}
+.bubble li,
+.app-navigation-entry-menu li,
+.popovermenu li {
+ display: flex;
+ flex: 0 0 auto;
+ /* css hack, only first not hidden */
+}
+.bubble li.hidden,
+.app-navigation-entry-menu li.hidden,
+.popovermenu li.hidden {
+ display: none;
+}
+.bubble li > button,
+.bubble li > a,
+.bubble li > .menuitem,
+.app-navigation-entry-menu li > button,
+.app-navigation-entry-menu li > a,
+.app-navigation-entry-menu li > .menuitem,
+.popovermenu li > button,
+.popovermenu li > a,
+.popovermenu li > .menuitem {
+ cursor: pointer;
+ line-height: 44px;
+ border: 0;
+ border-radius: 0;
+ background-color: transparent;
+ display: flex;
+ align-items: flex-start;
+ height: auto;
+ margin: 0;
+ font-weight: normal;
+ box-shadow: none;
+ width: 100%;
+ color: var(--color-main-text);
+ white-space: nowrap;
+ /* prevent .action class to break the design */
+ /* Add padding if contains icon+text */
+ /* DEPRECATED! old img in popover fallback
+ * TODO: to remove */
+ /* checkbox/radio fixes */
+ /* no margin if hidden span before */
+ /* Inputs inside popover supports text, submit & reset */
+}
+.bubble li > button span[class^=icon-],
+.bubble li > button span[class*=" icon-"], .bubble li > button[class^=icon-], .bubble li > button[class*=" icon-"],
+.bubble li > a span[class^=icon-],
+.bubble li > a span[class*=" icon-"],
+.bubble li > a[class^=icon-],
+.bubble li > a[class*=" icon-"],
+.bubble li > .menuitem span[class^=icon-],
+.bubble li > .menuitem span[class*=" icon-"],
+.bubble li > .menuitem[class^=icon-],
+.bubble li > .menuitem[class*=" icon-"],
+.app-navigation-entry-menu li > button span[class^=icon-],
+.app-navigation-entry-menu li > button span[class*=" icon-"],
+.app-navigation-entry-menu li > button[class^=icon-],
+.app-navigation-entry-menu li > button[class*=" icon-"],
+.app-navigation-entry-menu li > a span[class^=icon-],
+.app-navigation-entry-menu li > a span[class*=" icon-"],
+.app-navigation-entry-menu li > a[class^=icon-],
+.app-navigation-entry-menu li > a[class*=" icon-"],
+.app-navigation-entry-menu li > .menuitem span[class^=icon-],
+.app-navigation-entry-menu li > .menuitem span[class*=" icon-"],
+.app-navigation-entry-menu li > .menuitem[class^=icon-],
+.app-navigation-entry-menu li > .menuitem[class*=" icon-"],
+.popovermenu li > button span[class^=icon-],
+.popovermenu li > button span[class*=" icon-"],
+.popovermenu li > button[class^=icon-],
+.popovermenu li > button[class*=" icon-"],
+.popovermenu li > a span[class^=icon-],
+.popovermenu li > a span[class*=" icon-"],
+.popovermenu li > a[class^=icon-],
+.popovermenu li > a[class*=" icon-"],
+.popovermenu li > .menuitem span[class^=icon-],
+.popovermenu li > .menuitem span[class*=" icon-"],
+.popovermenu li > .menuitem[class^=icon-],
+.popovermenu li > .menuitem[class*=" icon-"] {
+ min-width: 0;
+ /* Overwrite icons*/
+ min-height: 0;
+ background-position: 14px center;
+ background-size: 16px;
+}
+.bubble li > button span[class^=icon-],
+.bubble li > button span[class*=" icon-"],
+.bubble li > a span[class^=icon-],
+.bubble li > a span[class*=" icon-"],
+.bubble li > .menuitem span[class^=icon-],
+.bubble li > .menuitem span[class*=" icon-"],
+.app-navigation-entry-menu li > button span[class^=icon-],
+.app-navigation-entry-menu li > button span[class*=" icon-"],
+.app-navigation-entry-menu li > a span[class^=icon-],
+.app-navigation-entry-menu li > a span[class*=" icon-"],
+.app-navigation-entry-menu li > .menuitem span[class^=icon-],
+.app-navigation-entry-menu li > .menuitem span[class*=" icon-"],
+.popovermenu li > button span[class^=icon-],
+.popovermenu li > button span[class*=" icon-"],
+.popovermenu li > a span[class^=icon-],
+.popovermenu li > a span[class*=" icon-"],
+.popovermenu li > .menuitem span[class^=icon-],
+.popovermenu li > .menuitem span[class*=" icon-"] {
+ /* Keep padding to define the width to
+ assure correct position of a possible text */
+ padding: 22px 0 22px 44px;
+}
+.bubble li > button:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > button:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > button:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > a:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > a:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > a:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > .menuitem:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > .menuitem:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.bubble li > .menuitem:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > button:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > button:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > button:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > a:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > a:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > a:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.app-navigation-entry-menu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > button:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > button:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > button:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > a:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > a:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > a:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > span:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > input:not([class^=icon-]):not([class*=icon-]):first-child,
+.popovermenu li > .menuitem:not([class^=icon-]):not([class*=icon-]) > form:not([class^=icon-]):not([class*=icon-]):first-child {
+ margin-left: 44px;
+}
+.bubble li > button[class^=icon-], .bubble li > button[class*=" icon-"],
+.bubble li > a[class^=icon-],
+.bubble li > a[class*=" icon-"],
+.bubble li > .menuitem[class^=icon-],
+.bubble li > .menuitem[class*=" icon-"],
+.app-navigation-entry-menu li > button[class^=icon-],
+.app-navigation-entry-menu li > button[class*=" icon-"],
+.app-navigation-entry-menu li > a[class^=icon-],
+.app-navigation-entry-menu li > a[class*=" icon-"],
+.app-navigation-entry-menu li > .menuitem[class^=icon-],
+.app-navigation-entry-menu li > .menuitem[class*=" icon-"],
+.popovermenu li > button[class^=icon-],
+.popovermenu li > button[class*=" icon-"],
+.popovermenu li > a[class^=icon-],
+.popovermenu li > a[class*=" icon-"],
+.popovermenu li > .menuitem[class^=icon-],
+.popovermenu li > .menuitem[class*=" icon-"] {
+ padding: 0 14px 0 44px !important;
+}
+.bubble li > button:hover, .bubble li > button:focus,
+.bubble li > a:hover,
+.bubble li > a:focus,
+.bubble li > .menuitem:hover,
+.bubble li > .menuitem:focus,
+.app-navigation-entry-menu li > button:hover,
+.app-navigation-entry-menu li > button:focus,
+.app-navigation-entry-menu li > a:hover,
+.app-navigation-entry-menu li > a:focus,
+.app-navigation-entry-menu li > .menuitem:hover,
+.app-navigation-entry-menu li > .menuitem:focus,
+.popovermenu li > button:hover,
+.popovermenu li > button:focus,
+.popovermenu li > a:hover,
+.popovermenu li > a:focus,
+.popovermenu li > .menuitem:hover,
+.popovermenu li > .menuitem:focus {
+ background-color: var(--color-background-hover);
+}
+.bubble li > button.active,
+.bubble li > a.active,
+.bubble li > .menuitem.active,
+.app-navigation-entry-menu li > button.active,
+.app-navigation-entry-menu li > a.active,
+.app-navigation-entry-menu li > .menuitem.active,
+.popovermenu li > button.active,
+.popovermenu li > a.active,
+.popovermenu li > .menuitem.active {
+ background-color: var(--color-primary-light);
+}
+.bubble li > button.action,
+.bubble li > a.action,
+.bubble li > .menuitem.action,
+.app-navigation-entry-menu li > button.action,
+.app-navigation-entry-menu li > a.action,
+.app-navigation-entry-menu li > .menuitem.action,
+.popovermenu li > button.action,
+.popovermenu li > a.action,
+.popovermenu li > .menuitem.action {
+ padding: inherit !important;
+}
+.bubble li > button > span,
+.bubble li > a > span,
+.bubble li > .menuitem > span,
+.app-navigation-entry-menu li > button > span,
+.app-navigation-entry-menu li > a > span,
+.app-navigation-entry-menu li > .menuitem > span,
+.popovermenu li > button > span,
+.popovermenu li > a > span,
+.popovermenu li > .menuitem > span {
+ cursor: pointer;
+ white-space: nowrap;
+}
+.bubble li > button > p,
+.bubble li > a > p,
+.bubble li > .menuitem > p,
+.app-navigation-entry-menu li > button > p,
+.app-navigation-entry-menu li > a > p,
+.app-navigation-entry-menu li > .menuitem > p,
+.popovermenu li > button > p,
+.popovermenu li > a > p,
+.popovermenu li > .menuitem > p {
+ width: 150px;
+ line-height: 1.6em;
+ padding: 8px 0;
+ white-space: normal;
+}
+.bubble li > button > select,
+.bubble li > a > select,
+.bubble li > .menuitem > select,
+.app-navigation-entry-menu li > button > select,
+.app-navigation-entry-menu li > a > select,
+.app-navigation-entry-menu li > .menuitem > select,
+.popovermenu li > button > select,
+.popovermenu li > a > select,
+.popovermenu li > .menuitem > select {
+ margin: 0;
+ margin-left: 6px;
+}
+.bubble li > button:not(:empty),
+.bubble li > a:not(:empty),
+.bubble li > .menuitem:not(:empty),
+.app-navigation-entry-menu li > button:not(:empty),
+.app-navigation-entry-menu li > a:not(:empty),
+.app-navigation-entry-menu li > .menuitem:not(:empty),
+.popovermenu li > button:not(:empty),
+.popovermenu li > a:not(:empty),
+.popovermenu li > .menuitem:not(:empty) {
+ padding-right: 14px !important;
+}
+.bubble li > button > img,
+.bubble li > a > img,
+.bubble li > .menuitem > img,
+.app-navigation-entry-menu li > button > img,
+.app-navigation-entry-menu li > a > img,
+.app-navigation-entry-menu li > .menuitem > img,
+.popovermenu li > button > img,
+.popovermenu li > a > img,
+.popovermenu li > .menuitem > img {
+ width: 16px;
+ padding: 14px;
+}
+.bubble li > button > input.radio + label,
+.bubble li > button > input.checkbox + label,
+.bubble li > a > input.radio + label,
+.bubble li > a > input.checkbox + label,
+.bubble li > .menuitem > input.radio + label,
+.bubble li > .menuitem > input.checkbox + label,
+.app-navigation-entry-menu li > button > input.radio + label,
+.app-navigation-entry-menu li > button > input.checkbox + label,
+.app-navigation-entry-menu li > a > input.radio + label,
+.app-navigation-entry-menu li > a > input.checkbox + label,
+.app-navigation-entry-menu li > .menuitem > input.radio + label,
+.app-navigation-entry-menu li > .menuitem > input.checkbox + label,
+.popovermenu li > button > input.radio + label,
+.popovermenu li > button > input.checkbox + label,
+.popovermenu li > a > input.radio + label,
+.popovermenu li > a > input.checkbox + label,
+.popovermenu li > .menuitem > input.radio + label,
+.popovermenu li > .menuitem > input.checkbox + label {
+ padding: 0 !important;
+ width: 100%;
+}
+.bubble li > button > input.checkbox + label::before,
+.bubble li > a > input.checkbox + label::before,
+.bubble li > .menuitem > input.checkbox + label::before,
+.app-navigation-entry-menu li > button > input.checkbox + label::before,
+.app-navigation-entry-menu li > a > input.checkbox + label::before,
+.app-navigation-entry-menu li > .menuitem > input.checkbox + label::before,
+.popovermenu li > button > input.checkbox + label::before,
+.popovermenu li > a > input.checkbox + label::before,
+.popovermenu li > .menuitem > input.checkbox + label::before {
+ margin: -2px 13px 0;
+}
+.bubble li > button > input.radio + label::before,
+.bubble li > a > input.radio + label::before,
+.bubble li > .menuitem > input.radio + label::before,
+.app-navigation-entry-menu li > button > input.radio + label::before,
+.app-navigation-entry-menu li > a > input.radio + label::before,
+.app-navigation-entry-menu li > .menuitem > input.radio + label::before,
+.popovermenu li > button > input.radio + label::before,
+.popovermenu li > a > input.radio + label::before,
+.popovermenu li > .menuitem > input.radio + label::before {
+ margin: -2px 12px 0;
+}
+.bubble li > button > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.bubble li > a > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.bubble li > .menuitem > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.app-navigation-entry-menu li > button > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.app-navigation-entry-menu li > a > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.app-navigation-entry-menu li > .menuitem > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.popovermenu li > button > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.popovermenu li > a > input:not([type=radio]):not([type=checkbox]):not([type=image]),
+.popovermenu li > .menuitem > input:not([type=radio]):not([type=checkbox]):not([type=image]) {
+ width: 150px;
+}
+.bubble li > button form,
+.bubble li > a form,
+.bubble li > .menuitem form,
+.app-navigation-entry-menu li > button form,
+.app-navigation-entry-menu li > a form,
+.app-navigation-entry-menu li > .menuitem form,
+.popovermenu li > button form,
+.popovermenu li > a form,
+.popovermenu li > .menuitem form {
+ display: flex;
+ flex: 1 1 auto;
+ /* put a small space between text and form
+ if there is an element before */
+}
+.bubble li > button form:not(:first-child),
+.bubble li > a form:not(:first-child),
+.bubble li > .menuitem form:not(:first-child),
+.app-navigation-entry-menu li > button form:not(:first-child),
+.app-navigation-entry-menu li > a form:not(:first-child),
+.app-navigation-entry-menu li > .menuitem form:not(:first-child),
+.popovermenu li > button form:not(:first-child),
+.popovermenu li > a form:not(:first-child),
+.popovermenu li > .menuitem form:not(:first-child) {
+ margin-left: 5px;
+}
+.bubble li > button > span.hidden + form,
+.bubble li > button > span[style*="display:none"] + form,
+.bubble li > a > span.hidden + form,
+.bubble li > a > span[style*="display:none"] + form,
+.bubble li > .menuitem > span.hidden + form,
+.bubble li > .menuitem > span[style*="display:none"] + form,
+.app-navigation-entry-menu li > button > span.hidden + form,
+.app-navigation-entry-menu li > button > span[style*="display:none"] + form,
+.app-navigation-entry-menu li > a > span.hidden + form,
+.app-navigation-entry-menu li > a > span[style*="display:none"] + form,
+.app-navigation-entry-menu li > .menuitem > span.hidden + form,
+.app-navigation-entry-menu li > .menuitem > span[style*="display:none"] + form,
+.popovermenu li > button > span.hidden + form,
+.popovermenu li > button > span[style*="display:none"] + form,
+.popovermenu li > a > span.hidden + form,
+.popovermenu li > a > span[style*="display:none"] + form,
+.popovermenu li > .menuitem > span.hidden + form,
+.popovermenu li > .menuitem > span[style*="display:none"] + form {
+ margin-left: 0;
+}
+.bubble li > button input,
+.bubble li > a input,
+.bubble li > .menuitem input,
+.app-navigation-entry-menu li > button input,
+.app-navigation-entry-menu li > a input,
+.app-navigation-entry-menu li > .menuitem input,
+.popovermenu li > button input,
+.popovermenu li > a input,
+.popovermenu li > .menuitem input {
+ min-width: 44px;
+ max-height: 40px;
+ /* twice the element margin-y */
+ margin: 2px 0;
+ flex: 1 1 auto;
+}
+.bubble li > button input:not(:first-child),
+.bubble li > a input:not(:first-child),
+.bubble li > .menuitem input:not(:first-child),
+.app-navigation-entry-menu li > button input:not(:first-child),
+.app-navigation-entry-menu li > a input:not(:first-child),
+.app-navigation-entry-menu li > .menuitem input:not(:first-child),
+.popovermenu li > button input:not(:first-child),
+.popovermenu li > a input:not(:first-child),
+.popovermenu li > .menuitem input:not(:first-child) {
+ margin-left: 5px;
+}
+.bubble li:not(.hidden):not([style*="display:none"]):first-of-type > button > form, .bubble li:not(.hidden):not([style*="display:none"]):first-of-type > button > input, .bubble li:not(.hidden):not([style*="display:none"]):first-of-type > a > form, .bubble li:not(.hidden):not([style*="display:none"]):first-of-type > a > input, .bubble li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > form, .bubble li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > button > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > button > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > a > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > a > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > button > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > button > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > a > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > a > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type > .menuitem > input {
+ margin-top: 12px;
+}
+.bubble li:not(.hidden):not([style*="display:none"]):last-of-type > button > form, .bubble li:not(.hidden):not([style*="display:none"]):last-of-type > button > input, .bubble li:not(.hidden):not([style*="display:none"]):last-of-type > a > form, .bubble li:not(.hidden):not([style*="display:none"]):last-of-type > a > input, .bubble li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > form, .bubble li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > button > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > button > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > a > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > a > input,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > form,
+.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > button > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > button > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > a > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > a > input,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > form,
+.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type > .menuitem > input {
+ margin-bottom: 12px;
+}
+.bubble li > button,
+.app-navigation-entry-menu li > button,
+.popovermenu li > button {
+ padding: 0;
+}
+.bubble li > button span,
+.app-navigation-entry-menu li > button span,
+.popovermenu li > button span {
+ opacity: 1;
+}
+
+/* "app-*" descendants use border-box sizing, so the height of the icon must be
+ * set to the height of the item (as well as its width to make it squared). */
+#content[class*=app-] .bubble li > button,
+#content[class*=app-] .bubble li > a,
+#content[class*=app-] .bubble li > .menuitem,
+#content[class*=app-] .app-navigation-entry-menu li > button,
+#content[class*=app-] .app-navigation-entry-menu li > a,
+#content[class*=app-] .app-navigation-entry-menu li > .menuitem,
+#content[class*=app-] .popovermenu li > button,
+#content[class*=app-] .popovermenu li > a,
+#content[class*=app-] .popovermenu li > .menuitem {
+ /* DEPRECATED! old img in popover fallback
+ * TODO: to remove */
+}
+#content[class*=app-] .bubble li > button > img,
+#content[class*=app-] .bubble li > a > img,
+#content[class*=app-] .bubble li > .menuitem > img,
+#content[class*=app-] .app-navigation-entry-menu li > button > img,
+#content[class*=app-] .app-navigation-entry-menu li > a > img,
+#content[class*=app-] .app-navigation-entry-menu li > .menuitem > img,
+#content[class*=app-] .popovermenu li > button > img,
+#content[class*=app-] .popovermenu li > a > img,
+#content[class*=app-] .popovermenu li > .menuitem > img {
+ width: 44px;
+ height: 44px;
+}
+
+/* CONTENT LIST ------------------------------------------------------------ */
+.app-content-list {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 50px;
+ border-right: 1px solid var(--color-border);
+ display: flex;
+ flex-direction: column;
+ transition: transform 250ms ease-in-out;
+ min-height: calc(100vh - 50px);
+ max-height: calc(100vh - 50px);
+ overflow-y: auto;
+ overflow-x: hidden;
+ flex: 1 1 200px;
+ min-width: 200px;
+ max-width: 300px;
+ /* Default item */
+}
+.app-content-list .app-content-list-item {
+ position: relative;
+ height: 68px;
+ cursor: pointer;
+ padding: 10px 7px;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ flex: 0 0 auto;
+ /* Icon fixes */
+}
+.app-content-list .app-content-list-item > [class^=icon-],
+.app-content-list .app-content-list-item > [class*=" icon-"],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"] {
+ order: 4;
+ width: 24px;
+ height: 24px;
+ margin: -7px;
+ padding: 22px;
+ opacity: 0.3;
+ cursor: pointer;
+}
+.app-content-list .app-content-list-item > [class^=icon-]:hover, .app-content-list .app-content-list-item > [class^=icon-]:focus,
+.app-content-list .app-content-list-item > [class*=" icon-"]:hover,
+.app-content-list .app-content-list-item > [class*=" icon-"]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"]:focus {
+ opacity: 0.7;
+}
+.app-content-list .app-content-list-item > [class^=icon-][class^=icon-star], .app-content-list .app-content-list-item > [class^=icon-][class*=" icon-star"],
+.app-content-list .app-content-list-item > [class*=" icon-"][class^=icon-star],
+.app-content-list .app-content-list-item > [class*=" icon-"][class*=" icon-star"],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class^=icon-star],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class*=" icon-star"],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class^=icon-star],
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class*=" icon-star"] {
+ opacity: 0.7;
+}
+.app-content-list .app-content-list-item > [class^=icon-][class^=icon-star]:hover, .app-content-list .app-content-list-item > [class^=icon-][class^=icon-star]:focus, .app-content-list .app-content-list-item > [class^=icon-][class*=" icon-star"]:hover, .app-content-list .app-content-list-item > [class^=icon-][class*=" icon-star"]:focus,
+.app-content-list .app-content-list-item > [class*=" icon-"][class^=icon-star]:hover,
+.app-content-list .app-content-list-item > [class*=" icon-"][class^=icon-star]:focus,
+.app-content-list .app-content-list-item > [class*=" icon-"][class*=" icon-star"]:hover,
+.app-content-list .app-content-list-item > [class*=" icon-"][class*=" icon-star"]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class^=icon-star]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class^=icon-star]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class*=" icon-star"]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-][class*=" icon-star"]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class^=icon-star]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class^=icon-star]:focus,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class*=" icon-star"]:hover,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"][class*=" icon-star"]:focus {
+ opacity: 1;
+}
+.app-content-list .app-content-list-item > [class^=icon-].icon-starred,
+.app-content-list .app-content-list-item > [class*=" icon-"].icon-starred,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class^=icon-].icon-starred,
+.app-content-list .app-content-list-item > .app-content-list-item-menu > [class*=" icon-"].icon-starred {
+ opacity: 1;
+}
+.app-content-list .app-content-list-item:hover, .app-content-list .app-content-list-item:focus, .app-content-list .app-content-list-item.active {
+ background-color: var(--color-background-dark);
+}
+.app-content-list .app-content-list-item:hover .app-content-list-item-checkbox.checkbox + label, .app-content-list .app-content-list-item:focus .app-content-list-item-checkbox.checkbox + label, .app-content-list .app-content-list-item.active .app-content-list-item-checkbox.checkbox + label {
+ display: flex;
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox + label,
+.app-content-list .app-content-list-item .app-content-list-item-star {
+ position: absolute;
+ height: 40px;
+ width: 40px;
+ z-index: 50;
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked + label, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover + label, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus + label, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active + label {
+ display: flex;
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked + label + .app-content-list-item-icon, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover + label + .app-content-list-item-icon, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus + label + .app-content-list-item-icon, .app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active + label + .app-content-list-item-icon {
+ opacity: 0.7;
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox + label {
+ top: 14px;
+ left: 7px;
+ display: none;
+ /* Hide the star, priority to the checkbox */
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox + label::before {
+ margin: 0;
+}
+.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox + label ~ .app-content-list-item-star {
+ display: none;
+}
+.app-content-list .app-content-list-item .app-content-list-item-star {
+ display: flex;
+ top: 10px;
+ left: 32px;
+ background-size: 16px;
+ height: 20px;
+ width: 20px;
+ margin: 0;
+ padding: 0;
+}
+.app-content-list .app-content-list-item .app-content-list-item-icon {
+ position: absolute;
+ display: inline-block;
+ height: 40px;
+ width: 40px;
+ line-height: 40px;
+ border-radius: 50%;
+ vertical-align: middle;
+ margin-right: 10px;
+ color: #fff;
+ text-align: center;
+ font-size: 1.5em;
+ text-transform: capitalize;
+ object-fit: cover;
+ user-select: none;
+ cursor: pointer;
+ top: 50%;
+ margin-top: -20px;
+}
+.app-content-list .app-content-list-item .app-content-list-item-line-one,
+.app-content-list .app-content-list-item .app-content-list-item-line-two {
+ display: block;
+ padding-left: 50px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ order: 1;
+ flex: 1 1 0px;
+ padding-right: 10px;
+ cursor: pointer;
+}
+.app-content-list .app-content-list-item .app-content-list-item-line-two {
+ opacity: 0.5;
+ order: 3;
+ flex: 1 0;
+ flex-basis: calc(100% - 44px);
+}
+.app-content-list .app-content-list-item .app-content-list-item-details {
+ order: 2;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ max-width: 100px;
+ opacity: 0.5;
+ font-size: 80%;
+ user-select: none;
+}
+.app-content-list .app-content-list-item .app-content-list-item-menu {
+ order: 4;
+ position: relative;
+}
+.app-content-list .app-content-list-item .app-content-list-item-menu .popovermenu {
+ margin: 0;
+ right: -2px;
+}
+.app-content-list.selection .app-content-list-item-checkbox.checkbox + label {
+ display: flex;
+}
+
+/* Copyright (c) 2015, Raghu Nayyar, http://raghunayyar.com
+ This file is licensed under the Affero General Public License version 3 or later.
+ See the COPYING-README file. */
+/* Global Components */
+.pull-left {
+ float: left;
+}
+
+.pull-right {
+ float: right;
+}
+
+.clear-left {
+ clear: left;
+}
+
+.clear-right {
+ clear: right;
+}
+
+.clear-both {
+ clear: both;
+}
+
+.hidden {
+ display: none;
+}
+
+.hidden-visually {
+ position: absolute;
+ left: -10000px;
+ top: -10000px;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
+}
+
+.bold {
+ font-weight: 600;
+}
+
+.center {
+ text-align: center;
+}
+
+.inlineblock {
+ display: inline-block;
+}
+
+/* ---- BROWSER-SPECIFIC FIXES ---- */
+/* remove dotted outlines in Firefox */
+::-moz-focus-inner {
+ border: 0;
+}
+
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+@media only screen and (max-width: 1024px) {
+ /* position share dropdown */
+ #dropdown {
+ margin-right: 10% !important;
+ width: 80% !important;
+ }
+
+ /* fix name autocomplete not showing on mobile */
+ .ui-autocomplete {
+ z-index: 1000 !important;
+ }
+
+ /* fix error display on smaller screens */
+ .error-wide {
+ width: 100%;
+ margin-left: 0 !important;
+ box-sizing: border-box;
+ }
+
+ /* APP SIDEBAR TOGGLE and SWIPE ----------------------------------------------*/
+ #app-navigation {
+ transform: translateX(-300px);
+ }
+
+ .snapjs-left #app-navigation {
+ transform: translateX(0);
+ }
+
+ #app-navigation:not(.hidden) + #app-content {
+ margin-left: 0;
+ }
+
+ .skip-navigation.skip-content {
+ left: 3px;
+ margin-left: 0;
+ }
+
+ /* full width for message list on mobile */
+ .app-content-list {
+ background: var(--color-main-background);
+ flex: 1 1 100%;
+ max-height: unset;
+ max-width: 100%;
+ }
+ .app-content-list + .app-content-details {
+ display: none;
+ }
+ .app-content-list.showdetails {
+ display: none;
+ }
+ .app-content-list.showdetails + .app-content-details {
+ display: initial;
+ }
+
+ /* Show app details page */
+ #app-content.showdetails #app-navigation-toggle {
+ transform: translateX(-44px);
+ }
+ #app-content.showdetails #app-navigation-toggle-back {
+ position: fixed;
+ display: inline-block !important;
+ top: 50px;
+ left: 0;
+ width: 44px;
+ height: 44px;
+ z-index: 1050;
+ background-color: rgba(255, 255, 255, 0.7);
+ cursor: pointer;
+ opacity: 0.6;
+ transform: rotate(90deg);
+ }
+ #app-content.showdetails .app-content-list {
+ transform: translateX(-100%);
+ }
+
+ #app-navigation-toggle {
+ position: fixed;
+ display: inline-block !important;
+ left: 0;
+ width: 44px;
+ height: 44px;
+ z-index: 1050;
+ cursor: pointer;
+ opacity: 0.6;
+ }
+
+ #app-navigation-toggle:hover,
+#app-navigation-toggle:focus {
+ opacity: 1;
+ }
+
+ /* position controls for apps with app-navigation */
+ #app-navigation + #app-content #controls {
+ padding-left: 44px;
+ }
+
+ /* .viewer-mode is when text editor, PDF viewer, etc is open */
+ #body-user .app-files.viewer-mode #controls {
+ padding-left: 0 !important;
+ }
+
+ .app-files.viewer-mode #app-navigation-toggle {
+ display: none !important;
+ }
+
+ table.multiselect thead {
+ left: 0 !important;
+ }
+
+ /* prevent overflow in user management controls bar */
+ #usersearchform {
+ display: none;
+ }
+
+ #body-settings #controls {
+ min-width: 1024px !important;
+ }
+
+ /* do not show dates in filepicker */
+ #oc-dialog-filepicker-content .filelist #headerSize,
+#oc-dialog-filepicker-content .filelist #headerDate,
+#oc-dialog-filepicker-content .filelist .filesize,
+#oc-dialog-filepicker-content .filelist .date {
+ display: none;
+ }
+
+ #oc-dialog-filepicker-content .filelist .filename {
+ max-width: 100%;
+ }
+
+ .snapjs-left table.multiselect thead {
+ top: 44px;
+ }
+
+ /* end of media query */
+}
+@media only screen and (max-width: 480px) {
+ #header .header-right > div > .menu {
+ max-width: calc(100vw - 10px);
+ position: fixed;
+ }
+ #header .header-right > div > .menu::after {
+ display: none !important;
+ }
+
+ /* Arrow directly child of menutoggle */
+ #header .header-right > div {
+ /* settings need a different offset, since they have a right padding */
+ }
+ #header .header-right > div.openedMenu::after {
+ display: block;
+ }
+ #header .header-right > div::after {
+ border: 10px solid transparent;
+ border-bottom-color: var(--color-main-background);
+ bottom: 0;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ right: 15px;
+ z-index: 2001;
+ display: none;
+ }
+ #header .header-right > div#settings::after {
+ right: 27px;
+ }
+
+ #notification-container {
+ max-width: 100%;
+ width: 100%;
+ }
+}
+/**
+ * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
+ * @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>
+ * @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>
+ * @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>
+ * @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>
+ *
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+.tooltip {
+ position: absolute;
+ display: block;
+ font-family: var(--font-face);
+ font-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ line-break: auto;
+ line-height: 1.6;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ overflow-wrap: anywhere;
+ font-size: 12px;
+ opacity: 0;
+ z-index: 100000;
+ /* default to top */
+ margin-top: -3px;
+ padding: 10px 0;
+ filter: drop-shadow(0 1px 10px var(--color-box-shadow));
+ /* TOP */
+ /* BOTTOM */
+}
+.tooltip.in, .tooltip.show, .tooltip.tooltip[aria-hidden=false] {
+ visibility: visible;
+ opacity: 1;
+ transition: opacity 0.15s;
+}
+.tooltip.top .tooltip-arrow, .tooltip[x-placement^=top] {
+ left: 50%;
+ margin-left: -10px;
+}
+.tooltip.bottom, .tooltip[x-placement^=bottom] {
+ margin-top: 3px;
+ padding: 10px 0;
+}
+.tooltip.right, .tooltip[x-placement^=right] {
+ margin-left: 3px;
+ padding: 0 10px;
+}
+.tooltip.right .tooltip-arrow, .tooltip[x-placement^=right] .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -10px;
+ border-width: 10px 10px 10px 0;
+ border-right-color: var(--color-main-background);
+}
+.tooltip.left, .tooltip[x-placement^=left] {
+ margin-left: -3px;
+ padding: 0 5px;
+}
+.tooltip.left .tooltip-arrow, .tooltip[x-placement^=left] .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -10px;
+ border-width: 10px 0 10px 10px;
+ border-left-color: var(--color-main-background);
+}
+.tooltip.top .tooltip-arrow, .tooltip.top .arrow, .tooltip.top-left .tooltip-arrow, .tooltip.top-left .arrow, .tooltip[x-placement^=top] .tooltip-arrow, .tooltip[x-placement^=top] .arrow, .tooltip.top-right .tooltip-arrow, .tooltip.top-right .arrow {
+ bottom: 0;
+ border-width: 10px 10px 0;
+ border-top-color: var(--color-main-background);
+}
+.tooltip.top-left .tooltip-arrow {
+ right: 10px;
+ margin-bottom: -10px;
+}
+.tooltip.top-right .tooltip-arrow {
+ left: 10px;
+ margin-bottom: -10px;
+}
+.tooltip.bottom .tooltip-arrow, .tooltip.bottom .arrow, .tooltip[x-placement^=bottom] .tooltip-arrow, .tooltip[x-placement^=bottom] .arrow, .tooltip.bottom-left .tooltip-arrow, .tooltip.bottom-left .arrow, .tooltip.bottom-right .tooltip-arrow, .tooltip.bottom-right .arrow {
+ top: 0;
+ border-width: 0 10px 10px;
+ border-bottom-color: var(--color-main-background);
+}
+.tooltip[x-placement^=bottom] .tooltip-arrow, .tooltip.bottom .tooltip-arrow {
+ left: 50%;
+ margin-left: -10px;
+}
+.tooltip.bottom-left .tooltip-arrow {
+ right: 10px;
+ margin-top: -10px;
+}
+.tooltip.bottom-right .tooltip-arrow {
+ left: 10px;
+ margin-top: -10px;
+}
+
+.tooltip-inner {
+ max-width: 350px;
+ padding: 5px 8px;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+ text-align: center;
+ border-radius: var(--border-radius);
+}
+
+.tooltip-arrow, .tooltip .arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <jus@bitgrid.net>
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+.toastify.dialogs {
+ min-width: 200px;
+ background: none;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+ box-shadow: 0 0 6px 0 var(--color-box-shadow);
+ padding: 12px;
+ padding-right: 34px;
+ margin-top: 45px;
+ position: fixed;
+ z-index: 10100;
+ border-radius: var(--border-radius);
+}
+.toastify.dialogs .toast-undo-button,
+.toastify.dialogs .toast-close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ overflow: hidden;
+ box-sizing: border-box;
+ min-width: 44px;
+ height: 100%;
+ padding: 12px;
+ white-space: nowrap;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-color: transparent;
+ min-height: 0;
+}
+.toastify.dialogs .toast-undo-button.toast-close,
+.toastify.dialogs .toast-close.toast-close {
+ background-image: url("./close.svg");
+ text-indent: 200%;
+ opacity: 0.4;
+}
+.toastify.dialogs .toast-undo-button.toast-undo-button,
+.toastify.dialogs .toast-close.toast-undo-button {
+ margin: 3px;
+ height: calc(100% - 2 * 3px);
+}
+.toastify.dialogs .toast-undo-button:hover, .toastify.dialogs .toast-undo-button:focus, .toastify.dialogs .toast-undo-button:active,
+.toastify.dialogs .toast-close:hover,
+.toastify.dialogs .toast-close:focus,
+.toastify.dialogs .toast-close:active {
+ cursor: pointer;
+ opacity: 1;
+}
+.toastify.dialogs.toastify-top {
+ right: 10px;
+}
+.toastify.dialogs.toast-with-click {
+ cursor: pointer;
+}
+.toastify.dialogs.toast-error {
+ border-left: 3px solid var(--color-error);
+}
+.toastify.dialogs.toast-info {
+ border-left: 3px solid var(--color-primary);
+}
+.toastify.dialogs.toast-warning {
+ border-left: 3px solid var(--color-warning);
+}
+.toastify.dialogs.toast-success {
+ border-left: 3px solid var(--color-success);
+}
+.toastify.dialogs.toast-undo {
+ border-left: 3px solid var(--color-success);
+}
+
+/* dark theme overrides */
+.theme--dark .toastify.dialogs .toast-close {
+ /* close icon style */
+}
+.theme--dark .toastify.dialogs .toast-close.toast-close {
+ background-image: url("./close-dark.svg");
+}
+
+#body-public {
+ /** don't apply content header padding on the base layout */
+ /* force layout to make sure the content element's height matches its contents' height */
+ /* public footer */
+}
+#body-public .header-right #header-primary-action a {
+ color: var(--color-primary-text);
+}
+#body-public .header-right #header-secondary-action ul li {
+ min-width: 270px;
+}
+#body-public .header-right #header-secondary-action #header-actions-toggle {
+ background-color: transparent;
+ border-color: transparent;
+}
+#body-public .header-right #header-secondary-action #header-actions-toggle:hover, #body-public .header-right #header-secondary-action #header-actions-toggle:focus, #body-public .header-right #header-secondary-action #header-actions-toggle:active {
+ opacity: 1;
+}
+#body-public .header-right #header-secondary-action #external-share-menu-item form {
+ display: flex;
+}
+#body-public .header-right #header-secondary-action #external-share-menu-item .hidden {
+ display: none;
+}
+#body-public .header-right #header-secondary-action #external-share-menu-item #save-button-confirm {
+ flex-grow: 0;
+}
+#body-public #content {
+ min-height: calc(100% - 65px);
+}
+#body-public.layout-base #content {
+ padding-top: 0;
+}
+#body-public .ie #content {
+ display: inline-block;
+}
+#body-public p.info {
+ margin: 20px auto;
+ text-shadow: 0 0 2px rgba(0, 0, 0, 0.4);
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+#body-public p.info, #body-public form fieldset legend,
+#body-public #datadirContent label,
+#body-public form fieldset .warning-info,
+#body-public form input[type=checkbox] + label {
+ text-align: center;
+}
+#body-public footer {
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 65px;
+ flex-direction: column;
+}
+#body-public footer p {
+ text-align: center;
+ color: var(--color-text-lighter);
+}
+#body-public footer p a {
+ color: var(--color-text-lighter);
+ font-weight: bold;
+ white-space: nowrap;
+ /* increasing clickability to more than the text height */
+ padding: 10px;
+ margin: -10px;
+ line-height: 200%;
+}
+
+/*# sourceMappingURL=server.css.map */
diff --git a/core/css/server.css.map b/core/css/server.css.map
new file mode 100644
index 00000000000..779df1379e3
--- /dev/null
+++ b/core/css/server.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["variables.scss","icons.scss","styles.scss","inputs.scss","functions.scss","header.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","../../node_modules/@nextcloud/dialogs/styles/toast.scss","public.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AC8IQ;AC9IR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA,KFxFe;;;AE2FhB;AAEA;EACC;;;AAGD;EACC;;;AAMC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAKH;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;EACA;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAKA;EACA;EACA;;AANA;EACC;EACA;;AAKD;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAKH;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;AA0BA;;AAxBA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEC;;AAKF;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;EACA;EACA;EAEA;EACA;;AAEA;EAGC;;;AAKH;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;AA6CA;;AA3CA;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA;;;AFrvCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AGAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAKD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA4BA;;AA1BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QAvHe;;AAyHhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA,YA1JgB;EA2JhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAKD;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;;AAEC;EAGC;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,QA9OgB;;;AAiPjB;AAEC;AAsBC;;AAnBA;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QA9Pc;EA+Pd,OA/Pc;EAgQd;EACA;EACA;;AACA;EACC;AC7NH;EAEA;;ADmOG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAQL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;AAiHA;;AAhHA;AACC;;AACA;EACC;EACA;;AAGF;EAEC;;AAED;AACC;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QA1rBe;AA2rBf;AAoDA;AASA;AAaA;;AAzEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;AASA;;AAPA;EACC;AACA;;AACA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;EAEA;EACA;EACA;EACA;AACA;AAAA;AAQA;AAAA;;AANA;EACC;;AAED;EACC,cAnDa;;AAuDd;EACC;EACA;EACA;;AAKH;EACC;EACA;EACA;AAAY;EACZ;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA,cAhFe;AAiFf;EACA;;AAGD;EACC;EACA;EACA;EACA;AACA;EACA;EACA;AACA;EACA;AACA;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAiBA;AAAA;AAAA;;AAhBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAMA;EACC;EACA;;AAGF;EACC;;AAED;EACC;;AAIA;EACC;;;AAQN;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;;;AH18BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AKAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;AAAA;EAGC;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QLwDe;EKvDf;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAED;EACC;;;AASF;AACC;AA6GA;AA4BA;;AAtIA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAhBD;EACA;EAiBC;EACA,KLQc;EKPd;AAMA;AAqBA;;AAzBA;AAAA;EACC;;AAID;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;AAAA;EAGC;EACA;EA3CF;EACA;;AAkDG;AAAA;AAAA;EACC;EACA;EACA,QAhDuB;EAiDvB;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,OL7HY;EK8HZ;EACA;EACA;EACA;EACA;;;AAMJ;AAEA;EACC;;;AAIA;EACC;;AAGA;EACC;;AAID;EACC;;AAID;EACC;;;AAKH;AACA;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;;;AAGD;AACA;EACC;EACA,OLpMe;EKqMf,QLrMe;EKsMf;EACA;;;AAGD;EACC;EACA;AAAY;EACZ;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;AACA;AAAA;AAAA;AACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAoB;;;AAItB;EACC;;AACA;EACC;;;AAIF;AACA;EACC;EACA;EACA;EACA;AAEA;;AACA;EACC;AAAY;EACZ;AAqBA;AA2BA;;AA9CA;EAGC;;AAEA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;AAED;EACC;;AAED;EACC;;AAKF;EACC;EACA;EACA;AAMA;;AAJA;EACC;EACA;;AAGD;EACC;;AAIF;EACC;EACA;EACA;AAEA;;AACA;EACC;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;;AAIF;AACA;EACC;EACA,WLhUe;EKiUf;AAwFA;AAiCA;AAwBA;AAgBA;;AA/JA;EACC;EACA;EACA;EACA;EACA;AAgBA;AA4BA;AAQA;AAcA;AACA;AAQA;;AAzEA;EACC;EACA;EACA;EACA,QL9Ua;EK+Ub,OL/Ua;EKgVb;EACA;EACA;EAEA;EACA;;AAID;AAAA;AAAA;EAGC;EACA;;AAID;AAAA;EAEC;;AAGD;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;;AAID;AAAA;EAEC;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;AAAA;EAEC;EAEA;;AAID;EACC;;AAMD;AACC;AASA;AAOA;AAOA;;AAtBA;AAAA;AAAA;AAAA;AAAA;EAKC;;AAID;EACC;EACA;EACA;AAAa;;AAId;AAAA;EAGC;;AAID;EACC;;AAMH;AACC;AASA;AAOA;;AAfA;AAAA;AAAA;AAAA;AAAA;EAKC;;AAID;AAAA;EAEC;EACA;;AAID;EACC;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAID;AAAA;AAAA;AAAA;EAIC;;AAED;EACC;;AAED;AAAA;AAAA;EAGC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAED;AAAA;EAEC;;;AAKA;AAAA;EACC;;AAED;AAAA;EACC;;;AAKF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;AACA;EACA;;AAEA;EACC,MLzhBiB;EK0hBjB;;AAGD;EAEC,KLhiBc;;;AKqiBhB;AAGC;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AL3pBF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AGAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AHnBA;AACA;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;;;AAKH;AAAA;EAEC;EACA;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;AAEC;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;;AAIF;EACC;IACC;;EAED;IACC;;;AAIF;EACC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADpIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AMAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AFAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AE7BA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAID;AAEA;EACC;;;AAGD;AACA;AACA;EACC,ONyBkB;EMxBlB;EACA,KNsBe;EMrBf;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AA4OA;AAAA;AAAA;AAiBA;AAAA;AAAA;AAkEA;AAAA;AAAA;AAmDA;AAAA;AAAA;AAsDA;AAAA;AAAA;AA2BA;AAAA;AAAA;AAeA;AAAA;AAAA;;AAjdA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAsHA;;AArHA;EACC;EACA;EACA;EACA;AAEA;AAoCA;AAMA;AAwBA;;AAjEA;EACC;;AACA;EACC;;AAIF;AACC;EACA;;AAED;AACC;AACA;AAAA;EAEA;;AAKA;AAAA;AAAA;AAAA;EAEC;;AAOD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;AAgBA;;AAbC;AAAA;AAAA;EAEC;;AAKD;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;EACA;AACA;AAQA;AAwCA;AAkBA;AAKA;;AArEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAaA;;AAXA;AAAA;EACC;;AAED;AAAA;EACI;EACA;EACA;EAEH;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AAwCA;;AAtCA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;AF/TF;EAEA;EE+TE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAID;EACC;;AAIA;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AF/XF;EAEA;;AEgYE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EAEA,aN1ee;EM2ef;;;AAGD;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;AACA;AAIA;AAKA;;AARA;EACC,aN/fiB;;AMkgBlB;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WNhiBmB;EMiiBnB,WNhiBmB;EMiiBnB;EACA;EACA;EACA,KNviBe;EMwiBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;;;AAIF;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAiIA;;AA/HA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA5FkB;EA6FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAsCA;AAkBA;AAIA;AAAA;AAMA;AAwBA;AAKA;;AA7FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;AAAc;EACd;EACA;EACA,iBAhHe;;AAkHhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEC;AAAA;EAEA;;AAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,aA/He;;AAmIlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,OAtKe;EAuKf;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;AACA;AAAA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,WAzMiB;EA0MjB;AAA0C;EAC1C;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAMD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAKJ;AAAA;AAAA;EACC;;AACA;AAAA;AAAA;EACC;;;AAOJ;AAAA;AAOG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGC;AAAA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,OA3PgB;EA4PhB,QA5PgB;;;AAmQrB;AACA;EACC;EACA;EACA,KNpgCe;EMqgCf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WN1gCgB;EM2gChB,WN1gCgB;AM4gChB;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AAGC;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIF;AAAA;AAAA;AAAA;EACC;;AAKH;EAGC;;AAEA;EACC;;AAIF;AAAA;EAEC;EACA;EACA;EACA;;AAQC;EAEC;;AAEA;EACC;;AAIH;EACC;EACA;EAEA;AAIA;;AAHA;EACC;;AAGD;EACC;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EAGA;;AAIH;EACC;;;AC/xCF;AAAA;AAAA;AAIA;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AChDD;AAEA;AACA;EACC;;;ARJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ASEA;AAEC;EACA;IACC;IACA;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAGD;EACA;IACC;;;EAGA;IACC;;;EAIF;IACC;;;EAGD;IACC;IACA;;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KTuCa;IStCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;EAED;AAAA;IAEC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC;;;EAIF;IACC;IACA;;;ACnLF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AA0CA;AAmBA;;AA5DA;EAGI;EACA;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAGR;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAQJ;EACI;EACA;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAOA;EACI;EACA;EACA;;AAGR;EAEI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AC1IJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;EACC;EACA;EACA;;AAGD;AAAA;EAEC,QADS;EAET;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;;AAIF;EACC;;AAID;EACC;;AAID;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;AAGE;AACC;;AACA;EACC;;;AC3GJ;AAyCC;AAKA;AAoBA;;AA/DC;EACC;;AAIA;EACC;;AAED;EACC;EACA;;AAEA;EAGC;;AAID;EACC;;AAED;EACC;;AAED;EACC;;AAMJ;EAEC;;AAKD;EACC;;AAID;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;EAIC;;AAID;EACC;EACA;EACA;EACA;EACA,QA1Ec;EA2Ed;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;AACA;EACA;EACA;EACA","file":"server.css"} \ No newline at end of file
diff --git a/core/css/styles.css b/core/css/styles.css
new file mode 100644
index 00000000000..15035935c27
--- /dev/null
+++ b/core/css/styles.css
@@ -0,0 +1,1181 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
+ * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
+ * @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>
+ * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
+ * @copyright Copyright (c) 2016, Joas Schilling <coding@schilljs.com>
+ * @copyright Copyright (c) 2016, Morris Jobke <hey@morrisjobke.de>
+ * @copyright Copyright (c) 2016, Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @copyright Copyright (c) 2016, Raghu Nayyar <hey@raghunayyar.com>
+ * @copyright Copyright (c) 2011-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
+ * @copyright Copyright (c) 2019-2020, Gary Kim <gary@garykim.dev>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ */
+html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ font-weight: inherit;
+ font-size: 100%;
+ font-family: inherit;
+ vertical-align: baseline;
+ cursor: default;
+ scrollbar-color: var(--color-border-dark) transparent;
+ scrollbar-width: thin;
+}
+
+html, body {
+ height: 100%;
+}
+
+article, aside, dialog, figure, footer, header, hgroup, nav, section {
+ display: block;
+}
+
+body {
+ line-height: 1.5;
+}
+
+table {
+ border-collapse: separate;
+ border-spacing: 0;
+ white-space: nowrap;
+}
+
+caption, th, td {
+ text-align: left;
+ font-weight: normal;
+}
+
+table, td, th {
+ vertical-align: middle;
+}
+
+a {
+ border: 0;
+ color: var(--color-main-text);
+ text-decoration: none;
+ cursor: pointer;
+}
+a * {
+ cursor: pointer;
+}
+
+a.external {
+ margin: 0 3px;
+ text-decoration: underline;
+}
+
+input {
+ cursor: pointer;
+}
+input * {
+ cursor: pointer;
+}
+
+select, .button span, label {
+ cursor: pointer;
+}
+
+ul {
+ list-style: none;
+}
+
+body {
+ background-color: var(--color-main-background);
+ font-weight: normal;
+ /* bring the default font size up to 15px */
+ font-size: var(--default-font-size);
+ line-height: var(--default-line-height);
+ font-family: var(--font-face);
+ color: var(--color-main-text);
+}
+
+.two-factor-header {
+ text-align: center;
+}
+
+.two-factor-provider {
+ text-align: center;
+ width: 258px !important;
+ display: inline-block;
+ margin-bottom: 0 !important;
+ background-color: var(--color-background-darker) !important;
+ border: none !important;
+}
+
+.two-factor-link {
+ display: inline-block;
+ padding: 12px;
+ color: var(--color-text-lighter);
+}
+
+.float-spinner {
+ height: 32px;
+ display: none;
+}
+
+#nojavascript {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ z-index: 9000;
+ text-align: center;
+ background-color: var(--color-background-darker);
+ color: var(--color-primary-text);
+ line-height: 125%;
+ font-size: 24px;
+}
+#nojavascript div {
+ display: block;
+ position: relative;
+ width: 50%;
+ top: 35%;
+ margin: 0px auto;
+}
+#nojavascript a {
+ color: var(--color-primary-text);
+ border-bottom: 2px dotted var(--color-main-background);
+}
+#nojavascript a:hover, #nojavascript a:focus {
+ color: var(--color-primary-text-dark);
+}
+
+/* SCROLLING */
+::-webkit-scrollbar {
+ width: 12px;
+ height: 12px;
+}
+
+::-webkit-scrollbar-track-piece {
+ background-color: transparent;
+}
+
+::-webkit-scrollbar-thumb {
+ background: var(--color-border-dark);
+ border-radius: var(--border-radius-large);
+ border: 2px solid transparent;
+ background-clip: content-box;
+}
+
+/* SELECTION */
+::selection {
+ background-color: var(--color-primary-element);
+ color: var(--color-primary-text);
+}
+
+/* CONTENT ------------------------------------------------------------------ */
+#controls {
+ box-sizing: border-box;
+ position: -webkit-sticky;
+ position: sticky;
+ height: 44px;
+ padding: 0;
+ margin: 0;
+ background-color: var(--color-main-background-translucent);
+ z-index: 62;
+ /* must be above the filelist sticky header and texteditor menubar */
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ display: flex;
+ top: 50px;
+}
+
+/* position controls for apps with app-navigation */
+.viewer-mode #app-navigation + #app-content #controls {
+ left: 0;
+}
+
+#app-navigation * {
+ box-sizing: border-box;
+}
+
+#controls .actions > div > .button, #controls .actions > div button, #controls .actions > .button, #controls .actions button {
+ box-sizing: border-box;
+ display: inline-block;
+ display: flex;
+ height: 36px;
+ width: 36px;
+ padding: 9px;
+ align-items: center;
+ justify-content: center;
+}
+#controls .actions > div .button.hidden, #controls .actions .button.hidden {
+ display: none;
+}
+
+/* EMPTY CONTENT DISPLAY ------------------------------------------------------------ */
+#emptycontent,
+.emptycontent {
+ color: var(--color-text-maxcontrast);
+ text-align: center;
+ margin-top: 30vh;
+ width: 100%;
+}
+#app-sidebar #emptycontent,
+#app-sidebar .emptycontent {
+ margin-top: 10vh;
+}
+#emptycontent .emptycontent-search,
+.emptycontent .emptycontent-search {
+ position: static;
+}
+#emptycontent h2,
+.emptycontent h2 {
+ margin-bottom: 10px;
+}
+#emptycontent [class^=icon-],
+#emptycontent [class*=icon-],
+.emptycontent [class^=icon-],
+.emptycontent [class*=icon-] {
+ background-size: 64px;
+ height: 64px;
+ width: 64px;
+ margin: 0 auto 15px;
+}
+#emptycontent [class^=icon-]:not([class^=icon-loading]), #emptycontent [class^=icon-]:not([class*=icon-loading]),
+#emptycontent [class*=icon-]:not([class^=icon-loading]),
+#emptycontent [class*=icon-]:not([class*=icon-loading]),
+.emptycontent [class^=icon-]:not([class^=icon-loading]),
+.emptycontent [class^=icon-]:not([class*=icon-loading]),
+.emptycontent [class*=icon-]:not([class^=icon-loading]),
+.emptycontent [class*=icon-]:not([class*=icon-loading]) {
+ opacity: 0.4;
+}
+
+/* LOG IN & INSTALLATION ------------------------------------------------------------ */
+#datadirContent label {
+ width: 100%;
+}
+
+/* strengthify wrapper */
+/* General new input field look */
+/* Nicely grouping input field sets */
+.grouptop, .groupmiddle, .groupbottom {
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+/* Show password toggle */
+#show, #dbpassword {
+ position: absolute;
+ right: 1em;
+ top: 0.8em;
+ float: right;
+}
+
+#show + label, #dbpassword + label {
+ right: 21px;
+ top: 15px !important;
+ margin: -14px !important;
+ padding: 14px !important;
+}
+
+#show:checked + label, #dbpassword:checked + label, #personal-show:checked + label {
+ opacity: 0.8;
+}
+
+#show + label, #dbpassword + label, #personal-show + label {
+ position: absolute !important;
+ height: 20px;
+ width: 24px;
+ background-image: var(--icon-toggle-dark);
+ background-repeat: no-repeat;
+ background-position: center;
+ opacity: 0.3;
+}
+
+/* Feedback for keyboard focus and mouse hover */
+#show:focus + label,
+#dbpassword:focus + label,
+#personal-show:focus + label {
+ opacity: 1;
+}
+#show + label:hover,
+#dbpassword + label:hover,
+#personal-show + label:hover {
+ opacity: 1;
+}
+
+#show + label:before, #dbpassword + label:before, #personal-show + label:before {
+ display: none;
+}
+
+#pass2, input[name=personal-password-clone] {
+ padding-right: 30px;
+}
+
+.personal-show-container {
+ position: relative;
+ display: inline-block;
+ margin-right: 6px;
+}
+
+#personal-show + label {
+ display: block;
+ right: 0;
+ margin-top: -43px;
+ margin-right: -4px;
+ padding: 22px;
+}
+
+/* Warnings and errors are the same */
+#body-user .warning, #body-settings .warning {
+ margin-top: 8px;
+ padding: 5px;
+ border-radius: var(--border-radius);
+ color: var(--color-primary-text);
+ background-color: var(--color-warning);
+}
+
+.warning legend, .warning a {
+ color: var(--color-primary-text) !important;
+ font-weight: bold !important;
+}
+
+.error:not(.toastify) a {
+ color: white !important;
+ font-weight: bold !important;
+}
+.error:not(.toastify) a.button {
+ color: var(--color-text-lighter) !important;
+ display: inline-block;
+ text-align: center;
+}
+.error:not(.toastify) pre {
+ white-space: pre-wrap;
+ text-align: left;
+}
+
+.error-wide {
+ width: 700px;
+ margin-left: -200px !important;
+}
+.error-wide .button {
+ color: black !important;
+}
+
+.warning-input {
+ border-color: var(--color-error) !important;
+}
+
+/* fixes for update page TODO should be fixed some time in a proper way */
+/* this is just for an error while updating the Nextcloud instance */
+/* Sticky footer */
+/* round profile photos */
+.avatar, .avatardiv {
+ border-radius: 50%;
+ flex-shrink: 0;
+}
+.avatar > img, .avatardiv > img {
+ border-radius: 50%;
+ flex-shrink: 0;
+}
+
+td.avatar {
+ border-radius: 0;
+}
+
+#notification-container {
+ left: 50%;
+ max-width: 60%;
+ position: fixed;
+ top: 0;
+ text-align: center;
+ transform: translateX(-50%);
+ z-index: 8000;
+}
+
+#notification {
+ margin: 0 auto;
+ z-index: 8000;
+ background-color: var(--color-main-background);
+ border: 0;
+ padding: 1px 8px;
+ display: none;
+ position: relative;
+ top: 0;
+ border-bottom-left-radius: 3px;
+ border-bottom-right-radius: 3px;
+ opacity: 0.9;
+ overflow-x: hidden;
+ overflow-y: auto;
+ max-height: 100px;
+}
+#notification span {
+ cursor: pointer;
+ margin-left: 1em;
+}
+#notification .row {
+ position: relative;
+}
+#notification .row .close {
+ display: inline-block;
+ vertical-align: middle;
+ position: absolute;
+ right: 0;
+ top: 0;
+ margin-top: 2px;
+}
+#notification .row.closeable {
+ padding-right: 20px;
+}
+
+tr .action:not(.permanent), .selectedActions > a {
+ opacity: 0;
+}
+
+tr:hover .action:not(.menuitem), tr:focus .action:not(.menuitem),
+tr .action.permanent:not(.menuitem) {
+ opacity: 0.5;
+}
+
+.selectedActions > a {
+ opacity: 0.5;
+ position: relative;
+ top: 2px;
+}
+.selectedActions > a:hover, .selectedActions > a:focus {
+ opacity: 1;
+}
+
+tr .action {
+ width: 16px;
+ height: 16px;
+}
+
+.header-action {
+ opacity: 0.8;
+}
+
+tr:hover .action:hover, tr:focus .action:focus {
+ opacity: 1;
+}
+
+.selectedActions a:hover, .selectedActions a:focus {
+ opacity: 1;
+}
+
+.header-action:hover, .header-action:focus {
+ opacity: 1;
+}
+
+tbody tr:hover, tbody tr:focus, tbody tr:active {
+ background-color: var(--color-background-dark);
+}
+
+code {
+ font-family: "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", monospace;
+}
+
+.pager {
+ list-style: none;
+ float: right;
+ display: inline;
+ margin: 0.7em 13em 0 0;
+}
+.pager li {
+ display: inline-block;
+}
+
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.ui-icon-circle-triangle-e {
+ background-image: url("../img/actions/play-next.svg?v=1");
+}
+
+.ui-icon-circle-triangle-w {
+ background-image: url("../img/actions/play-previous.svg?v=1");
+}
+
+/* ---- jQuery UI datepicker ---- */
+.ui-widget.ui-datepicker {
+ margin-top: 10px;
+ padding: 4px 8px;
+ width: auto;
+ border-radius: var(--border-radius);
+ border: none;
+ z-index: 1600 !important;
+}
+.ui-widget.ui-datepicker .ui-state-default,
+.ui-widget.ui-datepicker .ui-widget-content .ui-state-default,
+.ui-widget.ui-datepicker .ui-widget-header .ui-state-default {
+ border: 1px solid transparent;
+ background: inherit;
+}
+.ui-widget.ui-datepicker .ui-widget-header {
+ padding: 7px;
+ font-size: 13px;
+ border: none;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+}
+.ui-widget.ui-datepicker .ui-widget-header .ui-datepicker-title {
+ line-height: 1;
+ font-weight: normal;
+}
+.ui-widget.ui-datepicker .ui-widget-header .ui-icon {
+ opacity: 0.5;
+}
+.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e {
+ background: url("../img/actions/arrow-right.svg") center center no-repeat;
+}
+.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w {
+ background: url("../img/actions/arrow-left.svg") center center no-repeat;
+}
+.ui-widget.ui-datepicker .ui-widget-header .ui-state-hover .ui-icon {
+ opacity: 1;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar th {
+ font-weight: normal;
+ color: var(--color-text-lighter);
+ opacity: 0.8;
+ width: 26px;
+ padding: 2px;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar tr:hover {
+ background-color: inherit;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-today a:not(.ui-state-hover) {
+ background-color: var(--color-background-darker);
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-current-day a.ui-state-active,
+.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-hover,
+.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-focus {
+ background-color: var(--color-primary);
+ color: var(--color-primary-text);
+ font-weight: bold;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-week-end:not(.ui-state-disabled) :not(.ui-state-hover),
+.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-priority-secondary:not(.ui-state-hover) {
+ color: var(--color-text-lighter);
+ opacity: 0.8;
+}
+
+.ui-datepicker-prev, .ui-datepicker-next {
+ border: var(--color-border-dark);
+ background: var(--color-main-background);
+}
+
+/* ---- jQuery UI timepicker ---- */
+.ui-widget.ui-timepicker {
+ margin-top: 10px !important;
+ width: auto !important;
+ border-radius: var(--border-radius);
+ z-index: 1600 !important;
+ /* AM/PM fix */
+}
+.ui-widget.ui-timepicker .ui-widget-content {
+ border: none !important;
+}
+.ui-widget.ui-timepicker .ui-state-default,
+.ui-widget.ui-timepicker .ui-widget-content .ui-state-default,
+.ui-widget.ui-timepicker .ui-widget-header .ui-state-default {
+ border: 1px solid transparent;
+ background: inherit;
+}
+.ui-widget.ui-timepicker .ui-widget-header {
+ padding: 7px;
+ font-size: 13px;
+ border: none;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+}
+.ui-widget.ui-timepicker .ui-widget-header .ui-timepicker-title {
+ line-height: 1;
+ font-weight: normal;
+}
+.ui-widget.ui-timepicker table.ui-timepicker tr .ui-timepicker-hour-cell:first-child {
+ margin-left: 30px;
+}
+.ui-widget.ui-timepicker .ui-timepicker-table th {
+ font-weight: normal;
+ color: var(--color-text-lighter);
+ opacity: 0.8;
+}
+.ui-widget.ui-timepicker .ui-timepicker-table th.periods {
+ padding: 0;
+ width: 30px;
+ line-height: 30px;
+}
+.ui-widget.ui-timepicker .ui-timepicker-table tr:hover {
+ background-color: inherit;
+}
+.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hour-cell a.ui-state-active, .ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minute-cell a.ui-state-active,
+.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-hover,
+.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-focus {
+ background-color: var(--color-primary);
+ color: var(--color-primary-text);
+ font-weight: bold;
+}
+.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minutes:not(.ui-state-hover) {
+ color: var(--color-text-lighter);
+}
+.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hours {
+ border-right: 1px solid var(--color-border);
+}
+
+/* ---- jQuery UI datepicker & timepicker global rules ---- */
+.ui-widget.ui-datepicker .ui-datepicker-calendar tr,
+.ui-widget.ui-timepicker table.ui-timepicker tr {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar tr td,
+.ui-widget.ui-timepicker table.ui-timepicker tr td {
+ flex: 1 1 auto;
+ margin: 0;
+ padding: 2px;
+ height: 26px;
+ width: 26px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.ui-widget.ui-datepicker .ui-datepicker-calendar tr td > *,
+.ui-widget.ui-timepicker table.ui-timepicker tr td > * {
+ border-radius: 50%;
+ text-align: center;
+ font-weight: normal;
+ color: var(--color-main-text);
+ display: block;
+ line-height: 18px;
+ width: 18px;
+ height: 18px;
+ padding: 3px;
+ font-size: 0.9em;
+}
+
+/* ---- DIALOGS ---- */
+#oc-dialog-filepicker-content {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ /* Grid view toggle */
+}
+#oc-dialog-filepicker-content .dirtree {
+ flex-wrap: wrap;
+ box-sizing: border-box;
+ padding-right: 140px;
+}
+#oc-dialog-filepicker-content .dirtree div:first-child a {
+ background-image: var(--icon-home-dark);
+ background-repeat: no-repeat;
+ background-position: left center;
+}
+#oc-dialog-filepicker-content .dirtree span:not(:last-child) {
+ cursor: pointer;
+}
+#oc-dialog-filepicker-content .dirtree span:last-child {
+ font-weight: bold;
+}
+#oc-dialog-filepicker-content .dirtree span:not(:last-child)::after {
+ content: ">";
+ padding: 3px;
+}
+#oc-dialog-filepicker-content #picker-view-toggle {
+ position: absolute;
+ background-color: transparent;
+ border: none;
+ margin: 0;
+ padding: 22px;
+ opacity: 0.5;
+ right: 0;
+ top: 0;
+}
+#oc-dialog-filepicker-content #picker-view-toggle:hover, #oc-dialog-filepicker-content #picker-view-toggle:focus {
+ opacity: 1;
+}
+#oc-dialog-filepicker-content #picker-showgridview:focus + #picker-view-toggle {
+ opacity: 1;
+}
+#oc-dialog-filepicker-content .actions.creatable {
+ flex-wrap: wrap;
+ padding: 0px;
+ box-sizing: border-box;
+ display: inline-flex;
+ float: none;
+ max-height: 36px;
+ max-width: 36px;
+ background-color: var(--color-background-dark);
+ border: 1px solid var(--color-border-dark);
+ border-radius: var(--border-radius-pill);
+ position: relative;
+ left: 15px;
+ top: 3px;
+ order: 1;
+}
+#oc-dialog-filepicker-content .actions.creatable .icon.icon-add {
+ background-image: var(--icon-add-dark);
+ background-size: 16px 16px;
+ width: 34px;
+ height: 34px;
+ margin: 0px;
+ opacity: 0.5;
+}
+#oc-dialog-filepicker-content .actions.creatable a {
+ width: 36px;
+ padding: 0px;
+ position: static;
+}
+#oc-dialog-filepicker-content .actions.creatable .menu {
+ top: 100%;
+ margin-top: 10px;
+}
+#oc-dialog-filepicker-content .actions.creatable .menu form {
+ display: flex;
+ margin: 10px;
+}
+#oc-dialog-filepicker-content .filelist-container {
+ box-sizing: border-box;
+ display: inline-block;
+ overflow-y: auto;
+ flex: 1;
+ /*height: 100%;*/
+ /* overflow under the button row */
+ width: 100%;
+ overflow-x: hidden;
+}
+#oc-dialog-filepicker-content .emptycontent {
+ color: var(--color-text-maxcontrast);
+ text-align: center;
+ margin-top: 80px;
+ width: 100%;
+ display: none;
+}
+#oc-dialog-filepicker-content .filelist {
+ background-color: var(--color-main-background);
+ width: 100%;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist {
+ /* prevent the filepicker to overflow */
+ min-width: initial;
+ margin-bottom: 50px;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist thead tr {
+ border-bottom: 1px solid var(--color-border);
+ background-color: var(--color-main-background);
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist thead tr th {
+ width: 80%;
+ border: none;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle {
+ display: block;
+ padding: 15px;
+ height: 50px;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ vertical-align: middle;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle.name {
+ padding-left: 5px;
+ margin-left: 50px;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist th .sort-indicator {
+ width: 10px;
+ height: 8px;
+ margin-left: 5px;
+ display: inline-block;
+ vertical-align: text-bottom;
+ opacity: 0.3;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .sort-indicator.hidden,
+#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,
+#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden {
+ visibility: hidden;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,
+#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden {
+ visibility: visible;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist td {
+ padding: 14px;
+ border-bottom: 1px solid var(--color-border);
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist tr:last-child td {
+ border-bottom: none;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filename {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ background-size: 32px;
+ background-repeat: no-repeat;
+ padding-left: 51px;
+ background-position: 7px 7px;
+ cursor: pointer;
+ max-width: 0;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts {
+ display: flex;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__first {
+ overflow: hidden;
+ white-space: pre;
+ text-overflow: ellipsis;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__last {
+ white-space: pre;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filesize, #oc-dialog-filepicker-content #picker-filestable.filelist .date {
+ width: 80px;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist .filesize {
+ text-align: right;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid {
+ display: flex;
+ flex-direction: column;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, 120px);
+ justify-content: space-around;
+ row-gap: 15px;
+ margin: 15px 0;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr {
+ display: block;
+ position: relative;
+ border-radius: var(--border-radius);
+ padding: 10px;
+ display: flex;
+ flex-direction: column;
+ width: 100px;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td {
+ border: none;
+ padding: 0;
+ text-align: center;
+ border-radius: var(--border-radius);
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename {
+ padding: 100px 0 0 0;
+ background-position: center top;
+ background-size: contain;
+ line-height: 30px;
+ max-width: none;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename .filename-parts {
+ justify-content: center;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filesize {
+ line-height: 10px;
+ width: 100%;
+}
+#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.date {
+ display: none;
+}
+#oc-dialog-filepicker-content .filepicker_element_selected {
+ background-color: var(--color-background-darker);
+}
+
+.ui-dialog {
+ position: fixed !important;
+}
+
+span.ui-icon {
+ float: left;
+ margin: 3px 7px 30px 0;
+}
+
+/* ---- CONTACTS MENU ---- */
+#contactsmenu .menutoggle {
+ background-size: 20px 20px;
+ padding: 14px;
+ cursor: pointer;
+ background-image: var(--original-icon-contacts-white);
+ filter: var(--primary-invert-if-bright);
+}
+#contactsmenu .menutoggle:hover, #contactsmenu .menutoggle:focus, #contactsmenu .menutoggle:active {
+ opacity: 1 !important;
+}
+
+#header .header-right > div#contactsmenu > .menu {
+ /* show 2.5 to 4.5 entries depending on the screen height */
+ height: calc(100vh - 150px);
+ max-height: 275px;
+ min-height: 175px;
+ width: 350px;
+}
+#header .header-right > div#contactsmenu > .menu .emptycontent {
+ margin-top: 5vh !important;
+ margin-bottom: 2vh;
+}
+#header .header-right > div#contactsmenu > .menu .emptycontent .icon-loading,
+#header .header-right > div#contactsmenu > .menu .emptycontent .icon-search {
+ display: inline-block;
+}
+#header .header-right > div#contactsmenu > .menu .content {
+ /* fixed max height of the parent container without the search input */
+ height: calc(100vh - 150px - 50px);
+ max-height: 225px;
+ min-height: 125px;
+ overflow-y: auto;
+}
+#header .header-right > div#contactsmenu > .menu .content .footer {
+ text-align: center;
+}
+#header .header-right > div#contactsmenu > .menu .content .footer a {
+ display: block;
+ width: 100%;
+ padding: 12px 0;
+ opacity: 0.5;
+}
+#header .header-right > div#contactsmenu > .menu .contact {
+ display: flex;
+ position: relative;
+ align-items: center;
+ padding: 3px 3px 3px 10px;
+ border-bottom: 1px solid var(--color-border);
+ /* actions menu */
+}
+#header .header-right > div#contactsmenu > .menu .contact :last-of-type {
+ border-bottom: none;
+}
+#header .header-right > div#contactsmenu > .menu .contact .avatar {
+ height: 32px;
+ width: 32px;
+ display: inline-block;
+}
+#header .header-right > div#contactsmenu > .menu .contact .body {
+ flex-grow: 1;
+ padding-left: 8px;
+}
+#header .header-right > div#contactsmenu > .menu .contact .body div {
+ position: relative;
+ width: 100%;
+}
+#header .header-right > div#contactsmenu > .menu .contact .body .full-name, #header .header-right > div#contactsmenu > .menu .contact .body .last-message {
+ /* TODO: don't use fixed width */
+ max-width: 204px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+#header .header-right > div#contactsmenu > .menu .contact .body .last-message {
+ opacity: 0.5;
+}
+#header .header-right > div#contactsmenu > .menu .contact .top-action, #header .header-right > div#contactsmenu > .menu .contact .second-action, #header .header-right > div#contactsmenu > .menu .contact .other-actions {
+ width: 16px;
+ height: 16px;
+ padding: 14px;
+ opacity: 0.5;
+ cursor: pointer;
+}
+#header .header-right > div#contactsmenu > .menu .contact .top-action :hover, #header .header-right > div#contactsmenu > .menu .contact .second-action :hover, #header .header-right > div#contactsmenu > .menu .contact .other-actions :hover {
+ opacity: 1;
+}
+#header .header-right > div#contactsmenu > .menu .contact .menu {
+ top: 47px;
+ margin-right: 13px;
+}
+#header .header-right > div#contactsmenu > .menu .contact .popovermenu::after {
+ right: 2px;
+}
+
+#contactsmenu-search {
+ width: calc(100% - 16px);
+ margin: 8px;
+ height: 34px;
+}
+
+/* ---- TOOLTIPS ---- */
+.extra-data {
+ padding-right: 5px !important;
+}
+
+/* ---- TAGS ---- */
+#tagsdialog .content {
+ width: 100%;
+ height: 280px;
+}
+#tagsdialog .scrollarea {
+ overflow: auto;
+ border: 1px solid var(--color-background-darker);
+ width: 100%;
+ height: 240px;
+}
+#tagsdialog .bottombuttons {
+ width: 100%;
+ height: 30px;
+}
+#tagsdialog .bottombuttons * {
+ float: left;
+}
+#tagsdialog .taglist li {
+ background: var(--color-background-dark);
+ padding: 0.3em 0.8em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ -webkit-transition: background-color 500ms;
+ transition: background-color 500ms;
+}
+#tagsdialog .taglist li:hover, #tagsdialog .taglist li:active {
+ background: var(--color-background-darker);
+}
+#tagsdialog .addinput {
+ width: 90%;
+ clear: both;
+}
+
+/* ---- BREADCRUMB ---- */
+.breadcrumb {
+ display: inline-flex;
+}
+
+div.crumb {
+ display: inline-flex;
+ background-image: url("../img/breadcrumb.svg?v=1");
+ background-repeat: no-repeat;
+ background-position: right center;
+ height: 44px;
+ background-size: auto 24px;
+ flex: 0 0 auto;
+ order: 1;
+ padding-right: 7px;
+}
+div.crumb.crumbmenu {
+ order: 2;
+ position: relative;
+}
+div.crumb.crumbmenu a {
+ opacity: 0.5;
+}
+div.crumb.crumbmenu.canDropChildren .popovermenu, div.crumb.crumbmenu.canDrop .popovermenu {
+ display: block;
+}
+div.crumb.crumbmenu .popovermenu {
+ top: 100%;
+ margin-right: 3px;
+}
+div.crumb.crumbmenu .popovermenu ul {
+ max-height: 345px;
+ overflow-y: auto;
+ overflow-x: hidden;
+ padding-right: 5px;
+}
+div.crumb.crumbmenu .popovermenu ul li.canDrop span:first-child {
+ background-image: url("../img/filetypes/folder-drag-accept.svg?v=1") !important;
+}
+div.crumb.crumbmenu .popovermenu .in-breadcrumb {
+ display: none;
+}
+div.crumb.hidden {
+ display: none;
+}
+div.crumb.hidden ~ .crumb {
+ order: 3;
+}
+div.crumb > a,
+div.crumb > span {
+ position: relative;
+ padding: 12px;
+ opacity: 0.5;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ flex: 0 0 auto;
+ max-width: 200px;
+}
+div.crumb > a.icon-home, div.crumb > a.icon-delete,
+div.crumb > span.icon-home,
+div.crumb > span.icon-delete {
+ text-indent: -9999px;
+}
+div.crumb > a[class^=icon-] {
+ padding: 0;
+ width: 44px;
+}
+div.crumb:last-child {
+ font-weight: bold;
+ margin-right: 10px;
+}
+div.crumb:last-child a ~ span {
+ padding-left: 0;
+}
+div.crumb:hover, div.crumb:focus, div.crumb a:focus, div.crumb:active {
+ opacity: 1;
+}
+div.crumb:hover > a,
+div.crumb:hover > span, div.crumb:focus > a,
+div.crumb:focus > span, div.crumb a:focus > a,
+div.crumb a:focus > span, div.crumb:active > a,
+div.crumb:active > span {
+ opacity: 0.7;
+}
+
+/* some feedback for hover/tap on breadcrumbs */
+.appear {
+ opacity: 1;
+ -webkit-transition: opacity 500ms ease 0s;
+ -moz-transition: opacity 500ms ease 0s;
+ -ms-transition: opacity 500ms ease 0s;
+ -o-transition: opacity 500ms ease 0s;
+ transition: opacity 500ms ease 0s;
+}
+.appear.transparent {
+ opacity: 0;
+}
+
+/* LEGACY FIX only - do not use fieldsets for settings */
+fieldset.warning legend, fieldset.update legend {
+ top: 18px;
+ position: relative;
+}
+fieldset.warning legend + p, fieldset.update legend + p {
+ margin-top: 12px;
+}
+
+/* for IE10 */
+@-ms-viewport {
+ width: device-width;
+}
+/* hidden input type=file field */
+.hiddenuploadfield {
+ display: none;
+ width: 0;
+ height: 0;
+ opacity: 0;
+}
+
+/*# sourceMappingURL=styles.css.map */
diff --git a/core/css/styles.css.map b/core/css/styles.css.map
new file mode 100644
index 00000000000..3eb43213bff
--- /dev/null
+++ b/core/css/styles.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["variables.scss","styles.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA,KDxFe;;;AC2FhB;AAEA;EACC;;;AAGD;EACC;;;AAMC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAKH;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;EACA;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAKA;EACA;EACA;;AANA;EACC;EACA;;AAKD;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAKH;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;AA0BA;;AAxBA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEC;;AAKF;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;EACA;EACA;EAEA;EACA;;AAEA;EAGC;;;AAKH;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;AA6CA;;AA3CA;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA","file":"styles.css"} \ No newline at end of file
diff --git a/core/css/styles.scss b/core/css/styles.scss
index f1130979134..ab6eddaae8c 100644
--- a/core/css/styles.scss
+++ b/core/css/styles.scss
@@ -13,6 +13,7 @@
* @license GNU AGPL version 3 or any later version
*
*/
+@use 'sass:math';
@use 'variables';
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {
@@ -298,7 +299,7 @@ body {
position: absolute !important;
height: 20px;
width: 24px;
- background-image: var(--icon-toggle-000);
+ background-image: var(--icon-toggle-dark);
background-repeat: no-repeat;
background-position: center;
opacity: .3;
@@ -720,7 +721,7 @@ code {
padding-right: 140px;
div:first-child a {
- background-image: var(--icon-home-000);
+ background-image: var(--icon-home-dark);
background-repeat: no-repeat;
background-position: left center;
}
@@ -777,7 +778,7 @@ code {
order:1;
.icon.icon-add{
- background-image: var(--icon-add-000);
+ background-image: var(--icon-add-dark);
background-size: 16px 16px;
width: 34px;
height: 34px;
@@ -945,7 +946,7 @@ code {
}
}
&.filesize {
- line-height: $name-height / 3;
+ line-height: math.div($name-height, 3);
width: 100%;
}
&.date {
diff --git a/core/css/systemtags.css b/core/css/systemtags.css
new file mode 100644
index 00000000000..f2c3e75b568
--- /dev/null
+++ b/core/css/systemtags.css
@@ -0,0 +1,86 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
+ * @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>
+ * @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>
+ * @copyright Copyright (c) 2016, Vincent Petry <pvince81@owncloud.com>
+ * @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>
+ * @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ */
+.systemtags-select2-dropdown .select2-result-label .checkmark {
+ visibility: hidden;
+ margin-left: -5px;
+ margin-right: 5px;
+ padding: 4px;
+}
+.systemtags-select2-dropdown .select2-result-label .new-item .systemtags-actions {
+ display: none;
+}
+.systemtags-select2-dropdown .select2-selected .select2-result-label .checkmark {
+ visibility: visible;
+}
+.systemtags-select2-dropdown .select2-result-label .icon {
+ display: inline-block;
+ opacity: 0.5;
+}
+.systemtags-select2-dropdown .select2-result-label .icon.rename {
+ padding: 4px;
+}
+.systemtags-select2-dropdown .systemtags-actions {
+ position: absolute;
+ right: 5px;
+}
+.systemtags-select2-dropdown .systemtags-rename-form {
+ display: inline-block;
+ width: calc(100% - 20px);
+ top: -6px;
+ position: relative;
+}
+.systemtags-select2-dropdown .systemtags-rename-form input {
+ display: inline-block;
+ height: 30px;
+ width: calc(100% - 40px);
+}
+.systemtags-select2-dropdown .label {
+ width: 85%;
+ display: inline-block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.systemtags-select2-dropdown .label.hidden {
+ display: none;
+}
+.systemtags-select2-dropdown span {
+ line-height: 25px;
+}
+.systemtags-select2-dropdown .systemtags-item {
+ display: inline-block;
+ height: 25px;
+ width: 100%;
+}
+.systemtags-select2-dropdown .select2-result-label {
+ height: 25px;
+}
+
+.systemTagsInfoView,
+.systemtags-select2-container {
+ width: 100%;
+}
+.systemTagsInfoView .select2-choices,
+.systemtags-select2-container .select2-choices {
+ flex-wrap: nowrap !important;
+ max-height: 44px;
+}
+.systemTagsInfoView .select2-choices .select2-search-choice.select2-locked .label,
+.systemtags-select2-container .select2-choices .select2-search-choice.select2-locked .label {
+ opacity: 0.5;
+}
+
+#select2-drop.systemtags-select2-dropdown .select2-results li.select2-result {
+ padding: 5px;
+}
+
+/*# sourceMappingURL=systemtags.css.map */
diff --git a/core/css/systemtags.css.map b/core/css/systemtags.css.map
new file mode 100644
index 00000000000..a4bdce4e0b7
--- /dev/null
+++ b/core/css/systemtags.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["systemtags.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcE;EACC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;;;AAIF;AAAA;EAEC;;AAEA;AAAA;EACC;EACA;;AAGD;AAAA;EACC;;;AAIF;EACC","file":"systemtags.css"} \ No newline at end of file
diff --git a/core/css/toast.css b/core/css/toast.css
new file mode 100644
index 00000000000..d877cc299b7
--- /dev/null
+++ b/core/css/toast.css
@@ -0,0 +1,111 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/**
+ * @see core/src/icons.js
+ */
+/**
+ * SVG COLOR API
+ *
+ * @param string $icon the icon filename
+ * @param string $dir the icon folder within /core/img if $core or app name
+ * @param string $color the desired color in hexadecimal
+ * @param int $version the version of the file
+ * @param bool [$core] search icon in core
+ *
+ * @returns A background image with the url to the set to the requested icon.
+ */
+.toastify.toast {
+ min-width: 200px;
+ background: none;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+ box-shadow: 0 0 6px 0 var(--color-box-shadow);
+ padding: 12px;
+ padding-right: 34px;
+ margin-top: 45px;
+ position: fixed;
+ z-index: 9000;
+ border-radius: var(--border-radius);
+}
+.toastify.toast .toast-close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 38px;
+ opacity: 0.4;
+ padding: 12px;
+ /* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */
+ background-image: var(--icon-close-dark);
+ background-position: center;
+ background-repeat: no-repeat;
+ text-indent: 200%;
+ white-space: nowrap;
+ overflow: hidden;
+}
+.toastify.toast .toast-close:hover, .toastify.toast .toast-close:focus, .toastify.toast .toast-close:active {
+ cursor: pointer;
+ opacity: 1;
+}
+
+.toastify.toastify-top {
+ right: 10px;
+}
+
+.toast-error {
+ border-left: 3px solid var(--color-error);
+}
+
+.toast-info {
+ border-left: 3px solid var(--color-primary);
+}
+
+.toast-warning {
+ border-left: 3px solid var(--color-warning);
+}
+
+.toast-success {
+ border-left: 3px solid var(--color-success);
+}
+
+/*# sourceMappingURL=toast.css.map */
diff --git a/core/css/toast.css.map b/core/css/toast.css.map
new file mode 100644
index 00000000000..19ff0067613
--- /dev/null
+++ b/core/css/toast.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["variables.scss","functions.scss","toast.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AC/CA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;ADyCD;EAEA;ECzCC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;;AAIH;EACC;;;AAGD;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC","file":"toast.css"} \ No newline at end of file
diff --git a/core/css/tooltip.css b/core/css/tooltip.css
new file mode 100644
index 00000000000..a215f2e5649
--- /dev/null
+++ b/core/css/tooltip.css
@@ -0,0 +1,125 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
+ * @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>
+ * @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>
+ * @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>
+ * @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>
+ *
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+.tooltip {
+ position: absolute;
+ display: block;
+ font-family: var(--font-face);
+ font-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ line-break: auto;
+ line-height: 1.6;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ overflow-wrap: anywhere;
+ font-size: 12px;
+ opacity: 0;
+ z-index: 100000;
+ /* default to top */
+ margin-top: -3px;
+ padding: 10px 0;
+ filter: drop-shadow(0 1px 10px var(--color-box-shadow));
+ /* TOP */
+ /* BOTTOM */
+}
+.tooltip.in, .tooltip.show, .tooltip.tooltip[aria-hidden=false] {
+ visibility: visible;
+ opacity: 1;
+ transition: opacity 0.15s;
+}
+.tooltip.top .tooltip-arrow, .tooltip[x-placement^=top] {
+ left: 50%;
+ margin-left: -10px;
+}
+.tooltip.bottom, .tooltip[x-placement^=bottom] {
+ margin-top: 3px;
+ padding: 10px 0;
+}
+.tooltip.right, .tooltip[x-placement^=right] {
+ margin-left: 3px;
+ padding: 0 10px;
+}
+.tooltip.right .tooltip-arrow, .tooltip[x-placement^=right] .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -10px;
+ border-width: 10px 10px 10px 0;
+ border-right-color: var(--color-main-background);
+}
+.tooltip.left, .tooltip[x-placement^=left] {
+ margin-left: -3px;
+ padding: 0 5px;
+}
+.tooltip.left .tooltip-arrow, .tooltip[x-placement^=left] .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -10px;
+ border-width: 10px 0 10px 10px;
+ border-left-color: var(--color-main-background);
+}
+.tooltip.top .tooltip-arrow, .tooltip.top .arrow, .tooltip.top-left .tooltip-arrow, .tooltip.top-left .arrow, .tooltip[x-placement^=top] .tooltip-arrow, .tooltip[x-placement^=top] .arrow, .tooltip.top-right .tooltip-arrow, .tooltip.top-right .arrow {
+ bottom: 0;
+ border-width: 10px 10px 0;
+ border-top-color: var(--color-main-background);
+}
+.tooltip.top-left .tooltip-arrow {
+ right: 10px;
+ margin-bottom: -10px;
+}
+.tooltip.top-right .tooltip-arrow {
+ left: 10px;
+ margin-bottom: -10px;
+}
+.tooltip.bottom .tooltip-arrow, .tooltip.bottom .arrow, .tooltip[x-placement^=bottom] .tooltip-arrow, .tooltip[x-placement^=bottom] .arrow, .tooltip.bottom-left .tooltip-arrow, .tooltip.bottom-left .arrow, .tooltip.bottom-right .tooltip-arrow, .tooltip.bottom-right .arrow {
+ top: 0;
+ border-width: 0 10px 10px;
+ border-bottom-color: var(--color-main-background);
+}
+.tooltip[x-placement^=bottom] .tooltip-arrow, .tooltip.bottom .tooltip-arrow {
+ left: 50%;
+ margin-left: -10px;
+}
+.tooltip.bottom-left .tooltip-arrow {
+ right: 10px;
+ margin-top: -10px;
+}
+.tooltip.bottom-right .tooltip-arrow {
+ left: 10px;
+ margin-top: -10px;
+}
+
+.tooltip-inner {
+ max-width: 350px;
+ padding: 5px 8px;
+ background-color: var(--color-main-background);
+ color: var(--color-main-text);
+ text-align: center;
+ border-radius: var(--border-radius);
+}
+
+.tooltip-arrow, .tooltip .arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+/*# sourceMappingURL=tooltip.css.map */
diff --git a/core/css/tooltip.css.map b/core/css/tooltip.css.map
new file mode 100644
index 00000000000..2b488db1c88
--- /dev/null
+++ b/core/css/tooltip.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["tooltip.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AA0CA;AAmBA;;AA5DA;EAGI;EACA;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAGR;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAQJ;EACI;EACA;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAOA;EACI;EACA;EACA;;AAGR;EAEI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA","file":"tooltip.css"} \ No newline at end of file
diff --git a/core/css/variables.css b/core/css/variables.css
new file mode 100644
index 00000000000..904c85ccd0e
--- /dev/null
+++ b/core/css/variables.css
@@ -0,0 +1,24 @@
+@charset "UTF-8";
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/*# sourceMappingURL=variables.css.map */
diff --git a/core/css/variables.css.map b/core/css/variables.css.map
new file mode 100644
index 00000000000..e2354d551c2
--- /dev/null
+++ b/core/css/variables.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["variables.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"variables.css"} \ No newline at end of file
diff --git a/core/css/whatsnew.css b/core/css/whatsnew.css
new file mode 100644
index 00000000000..942b73451ae
--- /dev/null
+++ b/core/css/whatsnew.css
@@ -0,0 +1,32 @@
+/**
+ * @copyright Copyright (c) 2018, Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ */
+.whatsNewPopover {
+ bottom: 35px !important;
+ left: 15px !important;
+ width: 270px;
+ z-index: 700;
+}
+
+.whatsNewPopover p {
+ width: auto !important;
+}
+
+.whatsNewPopover .caption {
+ font-weight: bold;
+ cursor: auto !important;
+}
+
+.whatsNewPopover .icon-close {
+ position: absolute;
+ right: 0;
+}
+
+.whatsNewPopover::after {
+ content: none;
+}
+
+/*# sourceMappingURL=whatsnew.css.map */
diff --git a/core/css/whatsnew.css.map b/core/css/whatsnew.css.map
new file mode 100644
index 00000000000..b55af64e850
--- /dev/null
+++ b/core/css/whatsnew.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["whatsnew.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE","file":"whatsnew.css"} \ No newline at end of file