|
|
/*! * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. * SPDX-License-Identifier: AGPL-3.0-or-later */ @use 'sass:math'; @use 'variables';
:root { font-size: var(--default-font-size); line-height: var(--default-line-height); }
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, main { margin: 0; padding: 0; border: 0; font-weight: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; cursor: default; scrollbar-color: var(--color-scrollbar); }
.js-focus-visible :focus:not(.focus-visible) { outline: none; }
/** Let vue apps handle the focus themselves */ .content:not(#content-vue) :focus-visible { box-shadow: inset 0 0 0 2px var(--color-primary-element); outline: none; }
html, body { height: 100%; // disable pull-down-to-refresh on chromium mobile
overscroll-behavior-y: contain; }
article, aside, dialog, figure, footer, header, hgroup, nav, section { display: block; }
table { border-collapse: separate; border-spacing: 0; white-space: nowrap; }
caption, th, td { text-align: start; font-weight: normal; }
table, td, th { vertical-align: middle; }
a { border: 0; color: var(--color-main-text); text-decoration: none; cursor: pointer; * { cursor: pointer; } }
a.external { margin: 0 3px; text-decoration: underline; }
input { cursor: pointer; * { cursor: pointer; } }
select, .button span, label { cursor: pointer; }
ul { list-style: none; }
body { 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: 100% !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; inset-inline-start: 0; height: 100%; width: 100%; z-index: 9000; text-align: center; background-color: var(--color-background-darker); color: var(--color-primary-element-text); line-height: 125%; font-size: 24px; div { display: block; position: relative; width: 50%; top: 35%; margin: 0px auto; } a { color: var(--color-primary-element-text); border-bottom: 2px dotted var(--color-main-background); &:hover, &:focus { color: var(--color-primary-element-text-dark); } } }
/* SCROLLING */
::-webkit-scrollbar { width: 12px; height: 12px }
::-webkit-scrollbar-corner { background-color: transparent; }
::-webkit-scrollbar-track-piece { background-color: transparent; }
::-webkit-scrollbar-thumb { background: var(--color-scrollbar); 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-element-text); }
/* CONTENT ------------------------------------------------------------------ */
#app-navigation * { box-sizing: border-box; }
/* EMPTY CONTENT DISPLAY ------------------------------------------------------------ */
#emptycontent, .emptycontent { color: var(--color-text-maxcontrast); text-align: center; margin-top: 30vh; width: 100%; #app-sidebar & { margin-top: 10vh; } .emptycontent-search { position: static; } h2 { margin-bottom: 10px; } [class^='icon-'], [class*='icon-'] { background-size: 64px; height: 64px; width: 64px; margin: 0 auto 15px; &:not([class^='icon-loading']), &:not([class*='icon-loading']) { opacity: .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; inset-inline-end: 1em; top: .8em; /* Cannot use inline-start and :dir to support Samsung Internet */ float: right; }
body[dir='rtl'] #show, body[dir='rtl'] #dbpassword { /* Cannot use inline-start and :dir to support Samsung Internet */ float: left; }
#show + label, #dbpassword + label { inset-inline-end: 21px; top: 15px !important; margin: -14px !important; padding: 14px !important; }
#show:checked + label, #dbpassword:checked + label, #personal-show:checked + label { opacity: .8; }
#show:focus-visible + label, #dbpassword-toggle:focus-visible + label, #personal-show:focus-visible + label { box-shadow: var(--color-primary-element) 0 0 0 2px; opacity: 1; border-radius: 9999px; }
#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: .3; }
/* Feedback for keyboard focus and mouse hover */ #show, #dbpassword, #personal-show { &:focus + label { opacity: 1; } + label:hover { opacity: 1; } }
#show + label:before, #dbpassword + label:before, #personal-show + label:before { display: none; }
#pass2, input[name='personal-password-clone'] { padding-inline-end: 30px; }
.personal-show-container { position: relative; display: inline-block; margin-inline-end: 6px; }
#personal-show + label { display: block; inset-inline-end: 0; margin-top: -43px; margin-inline-end: -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-main-text); background-color: rgba(var(--color-warning-rgb), 0.2); }
.warning { legend, a { font-weight: bold !important; } }
.error:not(.toastify) { a { color: white !important; font-weight: bold !important; &.button { color: var(--color-text-lighter) !important; display: inline-block; text-align: center; } } pre { white-space: pre-wrap; text-align: start; } }
.error-wide { width: 700px; margin-inline-start: -200px !important; .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; &> img { border-radius: 50%; flex-shrink: 0; } }
td.avatar { border-radius: 0; }
tr .action:not(.permanent), .selectedActions > a { opacity: 0; }
tr { .action { width: 16px; height: 16px; }
&:hover .action:hover, &:focus .action:focus { opacity: 1; }
&:hover .action:not(.menuitem), &:focus .action:not(.menuitem), .action.permanent:not(.menuitem) { opacity: .5; } }
.selectedActions > a { opacity: .5; position: relative; top: 2px;
&:hover, &:focus { opacity: 1; } }
.selectedActions a { &:hover, &:focus { opacity: 1; } }
.header-action { opacity: .8;
&:hover, &:focus { opacity: 1; } }
tbody tr:not(.group-header) { &:hover, &:focus, &: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: .7em 13em 0 0; 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; // above sidebar
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid transparent; background: inherit; } .ui-widget-header { padding: 7px; font-size: 13px; border: none; background-color: var(--color-main-background); color: var(--color-main-text);
.ui-datepicker-title { line-height: 1; font-weight: normal; } .ui-icon { opacity: .5;
&.ui-icon-circle-triangle-e, &.ui-icon-circle-triangle-w { background-position: center center; background-repeat: no-repeat; } } .ui-state-hover .ui-icon { opacity: 1; } } .ui-datepicker-calendar { th { font-weight: normal; color: var(--color-text-lighter); opacity: .8; width: 26px; padding: 2px; } tr:hover { background-color: inherit; } td { &.ui-datepicker-today a:not(.ui-state-hover) { background-color: var(--color-background-darker); }
&.ui-datepicker-current-day a.ui-state-active, .ui-state-hover, .ui-state-focus { background-color: var(--color-primary-element); color: var(--color-primary-element-text); font-weight: bold; }
&.ui-datepicker-week-end:not(.ui-state-disabled) :not(.ui-state-hover), .ui-priority-secondary:not(.ui-state-hover) { color: var(--color-text-lighter); opacity: .8; } } } }
body[dir='ltr'] .ui-widget.ui-datepicker .ui-widget-header .ui-icon { &.ui-icon-circle-triangle-e { background: url("../img/actions/arrow-right.svg"); } &.ui-icon-circle-triangle-w { background: url("../img/actions/arrow-left.svg"); } }
body[dir='rtl'] .ui-widget.ui-datepicker .ui-widget-header .ui-icon { &.ui-icon-circle-triangle-e { background: url("../img/actions/arrow-left.svg"); } &.ui-icon-circle-triangle-w { background: url("../img/actions/arrow-right.svg"); } }
.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;
.ui-widget-content { border: none !important; }
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid transparent; background: inherit; } .ui-widget-header { padding: 7px; font-size: 13px; border: none; background-color: var(--color-main-background); color: var(--color-main-text);
.ui-timepicker-title { line-height: 1; font-weight: normal; } } /* AM/PM fix */ table.ui-timepicker tr .ui-timepicker-hour-cell:first-child { margin-inline-start: 30px; } .ui-timepicker-table { th { font-weight: normal; color: var(--color-text-lighter); opacity: .8; &.periods { padding: 0; width: 30px; line-height: 30px; } } tr:hover { background-color: inherit; } td { &.ui-timepicker-hour-cell a.ui-state-active, &.ui-timepicker-minute-cell a.ui-state-active, .ui-state-hover, .ui-state-focus { background-color: var(--color-primary-element); color: var(--color-primary-element-text); font-weight: bold; }
&.ui-timepicker-minutes:not(.ui-state-hover) { color: var(--color-text-lighter); }
&.ui-timepicker-hours { border-inline-end: 1px solid var(--color-border); } } } }
/* ---- jQuery UI datepicker & timepicker global rules ---- */ .ui-widget.ui-datepicker .ui-datepicker-calendar, .ui-widget.ui-timepicker table.ui-timepicker { tr { display: flex; flex-wrap: nowrap; justify-content: space-between; td { flex: 1 1 auto; margin: 0; padding: 2px; height: 26px; width: 26px; display: flex; align-items: center; justify-content: center; > * { 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: .9em; } } } }
/* ---- DIALOGS ---- */ .ui-dialog { position: fixed !important; }
span.ui-icon { float: left; margin-block: 3px 30px; margin-inline: 0 7px; }
/* ---- TOOLTIPS ---- */
.extra-data { padding-inline-end: 5px !important; }
/* ---- TAGS ---- */
#tagsdialog { .content { width: 100%; height: 280px; } .scrollarea { overflow: auto; border: 1px solid var(--color-background-darker); width: 100%; height: 240px; } .bottombuttons { width: 100%; height: 30px; * { float: left; } } .taglist li { background: var(--color-background-dark); padding: .3em .8em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -webkit-transition: background-color 500ms; transition: background-color 500ms; &:hover, &:active { background: var(--color-background-darker); } } .addinput { width: 90%; clear: both; } }
/* ---- BREADCRUMB ---- */ .breadcrumb { display: inline-flex; height: 50px; }
li.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-inline-end: 7px; &.crumbmenu { order: 2; position: relative; a { opacity: 0.5 } &.canDropChildren, &.canDrop { .popovermenu { display: block; } } // Fix because of the display flex
.popovermenu { top: 100%; margin-inline-end: 3px; ul { max-height: 345px; overflow-y: auto; overflow-x: hidden; padding-inline-end: 5px; li.canDrop span:first-child { background-image: url('../img/filetypes/folder-drag-accept.svg?v=1') !important; } } .in-breadcrumb { display: none; } } } &.hidden { display: none; ~ .crumb { order: 3; } } > a, > span { position: relative; padding: 12px; opacity: 0.5; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; flex: 0 0 auto; // Some sane max-width for each folder name
max-width: 200px;
&.icon-home, &.icon-delete { // Hide home text
text-indent: -9999px; } } > a[class^='icon-'] { padding: 0; width: 44px; }
&:last-child { font-weight: bold; margin-inline-end: 10px; // Allow multiple span next to the main 'a'
a ~ span { padding-inline-start: 0; } } &:hover, &:focus, a:focus, &:active { opacity: 1;
> a, > span { opacity: .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; &.transparent { opacity: 0; } }
/* LEGACY FIX only - do not use fieldsets for settings */
fieldset { &.warning legend, &.update legend { top: 18px; position: relative; } &.warning legend + p, &.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; }
|