styles.css 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133
  1. @charset "UTF-8";
  2. /**
  3. * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
  4. *
  5. * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
  6. *
  7. * @license GNU AGPL version 3 or any later version
  8. *
  9. * This program is free software: you can redistribute it and/or modify
  10. * it under the terms of the GNU Affero General Public License as
  11. * published by the Free Software Foundation, either version 3 of the
  12. * License, or (at your option) any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU Affero General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU Affero General Public License
  20. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  21. *
  22. */
  23. /**
  24. * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
  25. * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
  26. * @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>
  27. * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
  28. * @copyright Copyright (c) 2016, Joas Schilling <coding@schilljs.com>
  29. * @copyright Copyright (c) 2016, Morris Jobke <hey@morrisjobke.de>
  30. * @copyright Copyright (c) 2016, Christoph Wurst <christoph@winzerhof-wurst.at>
  31. * @copyright Copyright (c) 2016, Raghu Nayyar <hey@raghunayyar.com>
  32. * @copyright Copyright (c) 2011-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
  33. * @copyright Copyright (c) 2019-2020, Gary Kim <gary@garykim.dev>
  34. *
  35. * @license GNU AGPL version 3 or any later version
  36. *
  37. */
  38. 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 {
  39. margin: 0;
  40. padding: 0;
  41. border: 0;
  42. font-weight: inherit;
  43. font-size: 100%;
  44. font-family: inherit;
  45. vertical-align: baseline;
  46. cursor: default;
  47. scrollbar-color: var(--color-border-dark) transparent;
  48. scrollbar-width: thin;
  49. }
  50. .js-focus-visible :focus:not(.focus-visible) {
  51. outline: none;
  52. }
  53. /** Let vue apps handle the focus themselves */
  54. .content:not(#content-vue) :focus-visible,
  55. .app-navigation:not(#app-navigation-vue) :focus-visible {
  56. box-shadow: inset 0 0 0 2px var(--color-primary);
  57. outline: none;
  58. }
  59. html, body {
  60. height: 100%;
  61. }
  62. article, aside, dialog, figure, footer, header, hgroup, nav, section {
  63. display: block;
  64. }
  65. body {
  66. line-height: 1.5;
  67. }
  68. table {
  69. border-collapse: separate;
  70. border-spacing: 0;
  71. white-space: nowrap;
  72. }
  73. caption, th, td {
  74. text-align: left;
  75. font-weight: normal;
  76. }
  77. table, td, th {
  78. vertical-align: middle;
  79. }
  80. a {
  81. border: 0;
  82. color: var(--color-main-text);
  83. text-decoration: none;
  84. cursor: pointer;
  85. }
  86. a * {
  87. cursor: pointer;
  88. }
  89. a.external {
  90. margin: 0 3px;
  91. text-decoration: underline;
  92. }
  93. input {
  94. cursor: pointer;
  95. }
  96. input * {
  97. cursor: pointer;
  98. }
  99. select, .button span, label {
  100. cursor: pointer;
  101. }
  102. ul {
  103. list-style: none;
  104. }
  105. body {
  106. font-weight: normal;
  107. /* bring the default font size up to 15px */
  108. font-size: var(--default-font-size);
  109. line-height: var(--default-line-height);
  110. font-family: var(--font-face);
  111. color: var(--color-main-text);
  112. }
  113. .two-factor-header {
  114. text-align: center;
  115. }
  116. .two-factor-provider {
  117. text-align: center;
  118. width: 258px !important;
  119. display: inline-block;
  120. margin-bottom: 0 !important;
  121. background-color: var(--color-background-darker) !important;
  122. border: none !important;
  123. }
  124. .two-factor-link {
  125. display: inline-block;
  126. padding: 12px;
  127. color: var(--color-text-lighter);
  128. }
  129. .float-spinner {
  130. height: 32px;
  131. display: none;
  132. }
  133. #nojavascript {
  134. position: fixed;
  135. top: 0;
  136. bottom: 0;
  137. left: 0;
  138. height: 100%;
  139. width: 100%;
  140. z-index: 9000;
  141. text-align: center;
  142. background-color: var(--color-background-darker);
  143. color: var(--color-primary-text);
  144. line-height: 125%;
  145. font-size: 24px;
  146. }
  147. #nojavascript div {
  148. display: block;
  149. position: relative;
  150. width: 50%;
  151. top: 35%;
  152. margin: 0px auto;
  153. }
  154. #nojavascript a {
  155. color: var(--color-primary-text);
  156. border-bottom: 2px dotted var(--color-main-background);
  157. }
  158. #nojavascript a:hover, #nojavascript a:focus {
  159. color: var(--color-primary-text-dark);
  160. }
  161. /* SCROLLING */
  162. ::-webkit-scrollbar {
  163. width: 12px;
  164. height: 12px;
  165. }
  166. ::-webkit-scrollbar-track-piece {
  167. background-color: transparent;
  168. }
  169. ::-webkit-scrollbar-thumb {
  170. background: var(--color-scrollbar);
  171. border-radius: var(--border-radius-large);
  172. border: 2px solid transparent;
  173. background-clip: content-box;
  174. }
  175. /* SELECTION */
  176. ::selection {
  177. background-color: var(--color-primary-element);
  178. color: var(--color-primary-text);
  179. }
  180. /* CONTENT ------------------------------------------------------------------ */
  181. #app-navigation * {
  182. box-sizing: border-box;
  183. }
  184. /* EMPTY CONTENT DISPLAY ------------------------------------------------------------ */
  185. #emptycontent,
  186. .emptycontent {
  187. color: var(--color-text-maxcontrast);
  188. text-align: center;
  189. margin-top: 30vh;
  190. width: 100%;
  191. }
  192. #app-sidebar #emptycontent,
  193. #app-sidebar .emptycontent {
  194. margin-top: 10vh;
  195. }
  196. #emptycontent .emptycontent-search,
  197. .emptycontent .emptycontent-search {
  198. position: static;
  199. }
  200. #emptycontent h2,
  201. .emptycontent h2 {
  202. margin-bottom: 10px;
  203. }
  204. #emptycontent [class^=icon-],
  205. #emptycontent [class*=icon-],
  206. .emptycontent [class^=icon-],
  207. .emptycontent [class*=icon-] {
  208. background-size: 64px;
  209. height: 64px;
  210. width: 64px;
  211. margin: 0 auto 15px;
  212. }
  213. #emptycontent [class^=icon-]:not([class^=icon-loading]), #emptycontent [class^=icon-]:not([class*=icon-loading]),
  214. #emptycontent [class*=icon-]:not([class^=icon-loading]),
  215. #emptycontent [class*=icon-]:not([class*=icon-loading]),
  216. .emptycontent [class^=icon-]:not([class^=icon-loading]),
  217. .emptycontent [class^=icon-]:not([class*=icon-loading]),
  218. .emptycontent [class*=icon-]:not([class^=icon-loading]),
  219. .emptycontent [class*=icon-]:not([class*=icon-loading]) {
  220. opacity: 0.4;
  221. }
  222. /* LOG IN & INSTALLATION ------------------------------------------------------------ */
  223. #datadirContent label {
  224. width: 100%;
  225. }
  226. /* strengthify wrapper */
  227. /* General new input field look */
  228. /* Nicely grouping input field sets */
  229. .grouptop, .groupmiddle, .groupbottom {
  230. position: relative;
  231. -webkit-user-select: none;
  232. -moz-user-select: none;
  233. -ms-user-select: none;
  234. user-select: none;
  235. }
  236. /* Show password toggle */
  237. #show, #dbpassword {
  238. position: absolute;
  239. right: 1em;
  240. top: 0.8em;
  241. float: right;
  242. }
  243. #show + label, #dbpassword + label {
  244. right: 21px;
  245. top: 15px !important;
  246. margin: -14px !important;
  247. padding: 14px !important;
  248. }
  249. #show:checked + label, #dbpassword:checked + label, #personal-show:checked + label {
  250. opacity: 0.8;
  251. }
  252. #show:focus-visible + label, #dbpassword-toggle:focus-visible + label, #personal-show:focus-visible + label {
  253. box-shadow: var(--color-primary) 0 0 0 2px;
  254. opacity: 1;
  255. border-radius: 9999px;
  256. }
  257. #show + label, #dbpassword + label, #personal-show + label {
  258. position: absolute !important;
  259. height: 20px;
  260. width: 24px;
  261. background-image: var(--icon-toggle-dark);
  262. background-repeat: no-repeat;
  263. background-position: center;
  264. opacity: 0.3;
  265. }
  266. /* Feedback for keyboard focus and mouse hover */
  267. #show:focus + label,
  268. #dbpassword:focus + label,
  269. #personal-show:focus + label {
  270. opacity: 1;
  271. }
  272. #show + label:hover,
  273. #dbpassword + label:hover,
  274. #personal-show + label:hover {
  275. opacity: 1;
  276. }
  277. #show + label:before, #dbpassword + label:before, #personal-show + label:before {
  278. display: none;
  279. }
  280. #pass2, input[name=personal-password-clone] {
  281. padding-right: 30px;
  282. }
  283. .personal-show-container {
  284. position: relative;
  285. display: inline-block;
  286. margin-right: 6px;
  287. }
  288. #personal-show + label {
  289. display: block;
  290. right: 0;
  291. margin-top: -43px;
  292. margin-right: -4px;
  293. padding: 22px;
  294. }
  295. /* Warnings and errors are the same */
  296. #body-user .warning, #body-settings .warning {
  297. margin-top: 8px;
  298. padding: 5px;
  299. border-radius: var(--border-radius);
  300. color: var(--color-main-text);
  301. background-color: rgba(var(--color-warning-rgb), 0.2);
  302. }
  303. .warning legend, .warning a {
  304. font-weight: bold !important;
  305. }
  306. .error:not(.toastify) a {
  307. color: white !important;
  308. font-weight: bold !important;
  309. }
  310. .error:not(.toastify) a.button {
  311. color: var(--color-text-lighter) !important;
  312. display: inline-block;
  313. text-align: center;
  314. }
  315. .error:not(.toastify) pre {
  316. white-space: pre-wrap;
  317. text-align: left;
  318. }
  319. .error-wide {
  320. width: 700px;
  321. margin-left: -200px !important;
  322. }
  323. .error-wide .button {
  324. color: black !important;
  325. }
  326. .warning-input {
  327. border-color: var(--color-error) !important;
  328. }
  329. /* fixes for update page TODO should be fixed some time in a proper way */
  330. /* this is just for an error while updating the Nextcloud instance */
  331. /* Sticky footer */
  332. /* round profile photos */
  333. .avatar, .avatardiv {
  334. border-radius: 50%;
  335. flex-shrink: 0;
  336. }
  337. .avatar > img, .avatardiv > img {
  338. border-radius: 50%;
  339. flex-shrink: 0;
  340. }
  341. td.avatar {
  342. border-radius: 0;
  343. }
  344. tr .action:not(.permanent), .selectedActions > a {
  345. opacity: 0;
  346. }
  347. tr:hover .action:not(.menuitem), tr:focus .action:not(.menuitem),
  348. tr .action.permanent:not(.menuitem) {
  349. opacity: 0.5;
  350. }
  351. .selectedActions > a {
  352. opacity: 0.5;
  353. position: relative;
  354. top: 2px;
  355. }
  356. .selectedActions > a:hover, .selectedActions > a:focus {
  357. opacity: 1;
  358. }
  359. tr .action {
  360. width: 16px;
  361. height: 16px;
  362. }
  363. .header-action {
  364. opacity: 0.8;
  365. }
  366. tr:hover .action:hover, tr:focus .action:focus {
  367. opacity: 1;
  368. }
  369. .selectedActions a:hover, .selectedActions a:focus {
  370. opacity: 1;
  371. }
  372. .header-action:hover, .header-action:focus {
  373. opacity: 1;
  374. }
  375. tbody tr:hover, tbody tr:focus, tbody tr:active {
  376. background-color: var(--color-background-dark);
  377. }
  378. code {
  379. font-family: "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", monospace;
  380. }
  381. .pager {
  382. list-style: none;
  383. float: right;
  384. display: inline;
  385. margin: 0.7em 13em 0 0;
  386. }
  387. .pager li {
  388. display: inline-block;
  389. }
  390. .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
  391. overflow: hidden;
  392. text-overflow: ellipsis;
  393. }
  394. .ui-icon-circle-triangle-e {
  395. background-image: url("../img/actions/play-next.svg?v=1");
  396. }
  397. .ui-icon-circle-triangle-w {
  398. background-image: url("../img/actions/play-previous.svg?v=1");
  399. }
  400. /* ---- jQuery UI datepicker ---- */
  401. .ui-widget.ui-datepicker {
  402. margin-top: 10px;
  403. padding: 4px 8px;
  404. width: auto;
  405. border-radius: var(--border-radius);
  406. border: none;
  407. z-index: 1600 !important;
  408. }
  409. .ui-widget.ui-datepicker .ui-state-default,
  410. .ui-widget.ui-datepicker .ui-widget-content .ui-state-default,
  411. .ui-widget.ui-datepicker .ui-widget-header .ui-state-default {
  412. border: 1px solid transparent;
  413. background: inherit;
  414. }
  415. .ui-widget.ui-datepicker .ui-widget-header {
  416. padding: 7px;
  417. font-size: 13px;
  418. border: none;
  419. background-color: var(--color-main-background);
  420. color: var(--color-main-text);
  421. }
  422. .ui-widget.ui-datepicker .ui-widget-header .ui-datepicker-title {
  423. line-height: 1;
  424. font-weight: normal;
  425. }
  426. .ui-widget.ui-datepicker .ui-widget-header .ui-icon {
  427. opacity: 0.5;
  428. }
  429. .ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e {
  430. background: url("../img/actions/arrow-right.svg") center center no-repeat;
  431. }
  432. .ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w {
  433. background: url("../img/actions/arrow-left.svg") center center no-repeat;
  434. }
  435. .ui-widget.ui-datepicker .ui-widget-header .ui-state-hover .ui-icon {
  436. opacity: 1;
  437. }
  438. .ui-widget.ui-datepicker .ui-datepicker-calendar th {
  439. font-weight: normal;
  440. color: var(--color-text-lighter);
  441. opacity: 0.8;
  442. width: 26px;
  443. padding: 2px;
  444. }
  445. .ui-widget.ui-datepicker .ui-datepicker-calendar tr:hover {
  446. background-color: inherit;
  447. }
  448. .ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-today a:not(.ui-state-hover) {
  449. background-color: var(--color-background-darker);
  450. }
  451. .ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-current-day a.ui-state-active,
  452. .ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-hover,
  453. .ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-focus {
  454. background-color: var(--color-primary);
  455. color: var(--color-primary-text);
  456. font-weight: bold;
  457. }
  458. .ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-week-end:not(.ui-state-disabled) :not(.ui-state-hover),
  459. .ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-priority-secondary:not(.ui-state-hover) {
  460. color: var(--color-text-lighter);
  461. opacity: 0.8;
  462. }
  463. .ui-datepicker-prev, .ui-datepicker-next {
  464. border: var(--color-border-dark);
  465. background: var(--color-main-background);
  466. }
  467. /* ---- jQuery UI timepicker ---- */
  468. .ui-widget.ui-timepicker {
  469. margin-top: 10px !important;
  470. width: auto !important;
  471. border-radius: var(--border-radius);
  472. z-index: 1600 !important;
  473. /* AM/PM fix */
  474. }
  475. .ui-widget.ui-timepicker .ui-widget-content {
  476. border: none !important;
  477. }
  478. .ui-widget.ui-timepicker .ui-state-default,
  479. .ui-widget.ui-timepicker .ui-widget-content .ui-state-default,
  480. .ui-widget.ui-timepicker .ui-widget-header .ui-state-default {
  481. border: 1px solid transparent;
  482. background: inherit;
  483. }
  484. .ui-widget.ui-timepicker .ui-widget-header {
  485. padding: 7px;
  486. font-size: 13px;
  487. border: none;
  488. background-color: var(--color-main-background);
  489. color: var(--color-main-text);
  490. }
  491. .ui-widget.ui-timepicker .ui-widget-header .ui-timepicker-title {
  492. line-height: 1;
  493. font-weight: normal;
  494. }
  495. .ui-widget.ui-timepicker table.ui-timepicker tr .ui-timepicker-hour-cell:first-child {
  496. margin-left: 30px;
  497. }
  498. .ui-widget.ui-timepicker .ui-timepicker-table th {
  499. font-weight: normal;
  500. color: var(--color-text-lighter);
  501. opacity: 0.8;
  502. }
  503. .ui-widget.ui-timepicker .ui-timepicker-table th.periods {
  504. padding: 0;
  505. width: 30px;
  506. line-height: 30px;
  507. }
  508. .ui-widget.ui-timepicker .ui-timepicker-table tr:hover {
  509. background-color: inherit;
  510. }
  511. .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,
  512. .ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-hover,
  513. .ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-focus {
  514. background-color: var(--color-primary);
  515. color: var(--color-primary-text);
  516. font-weight: bold;
  517. }
  518. .ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minutes:not(.ui-state-hover) {
  519. color: var(--color-text-lighter);
  520. }
  521. .ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hours {
  522. border-right: 1px solid var(--color-border);
  523. }
  524. /* ---- jQuery UI datepicker & timepicker global rules ---- */
  525. .ui-widget.ui-datepicker .ui-datepicker-calendar tr,
  526. .ui-widget.ui-timepicker table.ui-timepicker tr {
  527. display: flex;
  528. flex-wrap: nowrap;
  529. justify-content: space-between;
  530. }
  531. .ui-widget.ui-datepicker .ui-datepicker-calendar tr td,
  532. .ui-widget.ui-timepicker table.ui-timepicker tr td {
  533. flex: 1 1 auto;
  534. margin: 0;
  535. padding: 2px;
  536. height: 26px;
  537. width: 26px;
  538. display: flex;
  539. align-items: center;
  540. justify-content: center;
  541. }
  542. .ui-widget.ui-datepicker .ui-datepicker-calendar tr td > *,
  543. .ui-widget.ui-timepicker table.ui-timepicker tr td > * {
  544. border-radius: 50%;
  545. text-align: center;
  546. font-weight: normal;
  547. color: var(--color-main-text);
  548. display: block;
  549. line-height: 18px;
  550. width: 18px;
  551. height: 18px;
  552. padding: 3px;
  553. font-size: 0.9em;
  554. }
  555. /* ---- DIALOGS ---- */
  556. #oc-dialog-filepicker-content {
  557. position: relative;
  558. display: flex;
  559. flex-direction: column;
  560. }
  561. #oc-dialog-filepicker-content .dirtree {
  562. flex-wrap: wrap;
  563. box-sizing: border-box;
  564. padding-right: 140px;
  565. }
  566. #oc-dialog-filepicker-content .dirtree div:first-child a {
  567. background-image: var(--icon-home-dark);
  568. background-repeat: no-repeat;
  569. background-position: left center;
  570. }
  571. #oc-dialog-filepicker-content .dirtree span:not(:last-child) {
  572. cursor: pointer;
  573. }
  574. #oc-dialog-filepicker-content .dirtree span:last-child {
  575. font-weight: bold;
  576. }
  577. #oc-dialog-filepicker-content .dirtree span:not(:last-child)::after {
  578. content: ">";
  579. padding: 3px;
  580. }
  581. #oc-dialog-filepicker-content #picker-showgridview {
  582. position: absolute;
  583. background-color: transparent;
  584. border: none;
  585. margin: 0;
  586. padding: 22px;
  587. opacity: 0.5;
  588. right: 0;
  589. top: 0;
  590. }
  591. #oc-dialog-filepicker-content #picker-showgridview:hover, #oc-dialog-filepicker-content #picker-showgridview:active, #oc-dialog-filepicker-content #picker-showgridview:focus {
  592. box-shadow: 0 0 0 2px var(--color-primary);
  593. opacity: 1;
  594. }
  595. #oc-dialog-filepicker-content .actions.creatable {
  596. flex-wrap: wrap;
  597. padding: 0px;
  598. box-sizing: border-box;
  599. display: inline-flex;
  600. float: none;
  601. max-height: 36px;
  602. max-width: 36px;
  603. background-color: var(--color-background-dark);
  604. border: 1px solid var(--color-border-dark);
  605. border-radius: var(--border-radius-pill);
  606. position: relative;
  607. left: 15px;
  608. top: 3px;
  609. order: 1;
  610. }
  611. #oc-dialog-filepicker-content .actions.creatable .icon.icon-add {
  612. background-image: var(--icon-add-dark);
  613. background-size: 16px 16px;
  614. width: 34px;
  615. height: 34px;
  616. margin: 0px;
  617. opacity: 0.5;
  618. }
  619. #oc-dialog-filepicker-content .actions.creatable a {
  620. width: 36px;
  621. padding: 0px;
  622. position: static;
  623. }
  624. #oc-dialog-filepicker-content .actions.creatable .menu {
  625. top: 100%;
  626. margin-top: 10px;
  627. }
  628. #oc-dialog-filepicker-content .actions.creatable .menu form {
  629. display: flex;
  630. margin: 10px;
  631. }
  632. #oc-dialog-filepicker-content .filelist-container {
  633. box-sizing: border-box;
  634. display: inline-block;
  635. overflow-y: auto;
  636. flex: 1;
  637. /*height: 100%;*/
  638. /* overflow under the button row */
  639. width: 100%;
  640. overflow-x: hidden;
  641. }
  642. #oc-dialog-filepicker-content .emptycontent {
  643. color: var(--color-text-maxcontrast);
  644. text-align: center;
  645. margin-top: 80px;
  646. width: 100%;
  647. display: none;
  648. }
  649. #oc-dialog-filepicker-content .filelist {
  650. background-color: var(--color-main-background);
  651. width: 100%;
  652. }
  653. #oc-dialog-filepicker-content #picker-filestable.filelist {
  654. /* prevent the filepicker to overflow */
  655. min-width: initial;
  656. margin-bottom: 50px;
  657. }
  658. #oc-dialog-filepicker-content #picker-filestable.filelist thead tr {
  659. border-bottom: 1px solid var(--color-border);
  660. background-color: var(--color-main-background);
  661. }
  662. #oc-dialog-filepicker-content #picker-filestable.filelist thead tr th {
  663. width: 80%;
  664. border: none;
  665. }
  666. #oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle {
  667. display: block;
  668. padding: 15px;
  669. height: 50px;
  670. box-sizing: border-box;
  671. -moz-box-sizing: border-box;
  672. vertical-align: middle;
  673. }
  674. #oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle.name {
  675. padding-left: 5px;
  676. margin-left: 50px;
  677. }
  678. #oc-dialog-filepicker-content #picker-filestable.filelist th .sort-indicator {
  679. width: 10px;
  680. height: 8px;
  681. margin-left: 5px;
  682. display: inline-block;
  683. vertical-align: text-bottom;
  684. opacity: 0.3;
  685. }
  686. #oc-dialog-filepicker-content #picker-filestable.filelist .sort-indicator.hidden,
  687. #oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,
  688. #oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden {
  689. visibility: hidden;
  690. }
  691. #oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,
  692. #oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden {
  693. visibility: visible;
  694. }
  695. #oc-dialog-filepicker-content #picker-filestable.filelist td {
  696. padding: 14px;
  697. border-bottom: 1px solid var(--color-border);
  698. }
  699. #oc-dialog-filepicker-content #picker-filestable.filelist tr:last-child td {
  700. border-bottom: none;
  701. }
  702. #oc-dialog-filepicker-content #picker-filestable.filelist .filename {
  703. overflow: hidden;
  704. white-space: nowrap;
  705. text-overflow: ellipsis;
  706. background-size: 32px;
  707. background-repeat: no-repeat;
  708. padding-left: 51px;
  709. background-position: 7px 7px;
  710. cursor: pointer;
  711. max-width: 0;
  712. }
  713. #oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts {
  714. display: flex;
  715. }
  716. #oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__first {
  717. overflow: hidden;
  718. white-space: pre;
  719. text-overflow: ellipsis;
  720. }
  721. #oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__last {
  722. white-space: pre;
  723. }
  724. #oc-dialog-filepicker-content #picker-filestable.filelist .filesize, #oc-dialog-filepicker-content #picker-filestable.filelist .date {
  725. width: 80px;
  726. }
  727. #oc-dialog-filepicker-content #picker-filestable.filelist .filesize {
  728. text-align: right;
  729. }
  730. #oc-dialog-filepicker-content #picker-filestable.filelist.view-grid {
  731. display: flex;
  732. flex-direction: column;
  733. }
  734. #oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody {
  735. display: grid;
  736. grid-template-columns: repeat(auto-fill, 120px);
  737. justify-content: space-around;
  738. row-gap: 15px;
  739. margin: 15px 0;
  740. }
  741. #oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr {
  742. display: block;
  743. position: relative;
  744. border-radius: var(--border-radius);
  745. padding: 10px;
  746. display: flex;
  747. flex-direction: column;
  748. width: 100px;
  749. }
  750. #oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td {
  751. border: none;
  752. padding: 0;
  753. text-align: center;
  754. border-radius: var(--border-radius);
  755. }
  756. #oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename {
  757. padding: 100px 0 0 0;
  758. background-position: center top;
  759. background-size: contain;
  760. line-height: 30px;
  761. max-width: none;
  762. }
  763. #oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename .filename-parts {
  764. justify-content: center;
  765. }
  766. #oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filesize {
  767. line-height: 10px;
  768. width: 100%;
  769. }
  770. #oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.date {
  771. display: none;
  772. }
  773. #oc-dialog-filepicker-content .filepicker_element_selected {
  774. background-color: var(--color-background-darker);
  775. }
  776. .ui-dialog {
  777. position: fixed !important;
  778. }
  779. span.ui-icon {
  780. float: left;
  781. margin: 3px 7px 30px 0;
  782. }
  783. /* ---- CONTACTS MENU ---- */
  784. #contactsmenu .menutoggle {
  785. cursor: pointer;
  786. }
  787. #contactsmenu .menutoggle:before {
  788. background-size: 20px 20px;
  789. background-repeat: no-repeat;
  790. background-position-x: 3px;
  791. background-position-y: 4px;
  792. padding: 14px;
  793. content: " ";
  794. background-image: var(--original-icon-contacts-white);
  795. filter: var(--background-image-invert-if-bright);
  796. }
  797. #contactsmenu .menutoggle:hover, #contactsmenu .menutoggle:focus, #contactsmenu .menutoggle:active {
  798. opacity: 1 !important;
  799. }
  800. #contactsmenu #contactsmenu-menu a {
  801. padding: 2px;
  802. }
  803. #contactsmenu #contactsmenu-menu a:focus-visible {
  804. box-shadow: inset 0 0 0 2px var(--color-main-text) !important;
  805. }
  806. #header .header-right > div#contactsmenu > .menu {
  807. /* show 2.5 to 4.5 entries depending on the screen height */
  808. height: calc(100vh - 150px);
  809. max-height: 302px;
  810. min-height: 175px;
  811. width: 350px;
  812. }
  813. #header .header-right > div#contactsmenu > .menu .emptycontent {
  814. margin-top: 5vh !important;
  815. margin-bottom: 2vh;
  816. }
  817. #header .header-right > div#contactsmenu > .menu .emptycontent .icon-loading,
  818. #header .header-right > div#contactsmenu > .menu .emptycontent .icon-search {
  819. display: inline-block;
  820. }
  821. #header .header-right > div#contactsmenu > .menu .content {
  822. /* fixed max height of the parent container without the search input */
  823. height: calc(100vh - 150px - 50px);
  824. max-height: 250px;
  825. min-height: 125px;
  826. overflow-y: auto;
  827. }
  828. #header .header-right > div#contactsmenu > .menu .content .footer {
  829. text-align: center;
  830. }
  831. #header .header-right > div#contactsmenu > .menu .content .footer a {
  832. display: block;
  833. width: 100%;
  834. padding: 12px 0;
  835. opacity: 0.5;
  836. }
  837. #header .header-right > div#contactsmenu > .menu .contact {
  838. display: flex;
  839. position: relative;
  840. align-items: center;
  841. padding: 3px 3px 3px 10px;
  842. /* actions menu */
  843. }
  844. #header .header-right > div#contactsmenu > .menu .contact .avatar {
  845. height: 32px;
  846. width: 32px;
  847. display: inline-block;
  848. }
  849. #header .header-right > div#contactsmenu > .menu .contact .body {
  850. flex-grow: 1;
  851. padding-left: 8px;
  852. }
  853. #header .header-right > div#contactsmenu > .menu .contact .body div {
  854. position: relative;
  855. width: 100%;
  856. }
  857. #header .header-right > div#contactsmenu > .menu .contact .body .full-name, #header .header-right > div#contactsmenu > .menu .contact .body .last-message {
  858. /* TODO: don't use fixed width */
  859. max-width: 204px;
  860. overflow: hidden;
  861. white-space: nowrap;
  862. text-overflow: ellipsis;
  863. }
  864. #header .header-right > div#contactsmenu > .menu .contact .body .last-message, #header .header-right > div#contactsmenu > .menu .contact .body .email-address {
  865. color: var(--color-text-maxcontrast);
  866. }
  867. #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 {
  868. width: 16px;
  869. height: 16px;
  870. opacity: 0.5;
  871. cursor: pointer;
  872. }
  873. #header .header-right > div#contactsmenu > .menu .contact .top-action:not(button), #header .header-right > div#contactsmenu > .menu .contact .second-action:not(button), #header .header-right > div#contactsmenu > .menu .contact .other-actions:not(button) {
  874. padding: 14px;
  875. }
  876. #header .header-right > div#contactsmenu > .menu .contact .top-action img, #header .header-right > div#contactsmenu > .menu .contact .second-action img, #header .header-right > div#contactsmenu > .menu .contact .other-actions img {
  877. filter: var(--background-invert-if-dark);
  878. }
  879. #header .header-right > div#contactsmenu > .menu .contact .top-action:hover, #header .header-right > div#contactsmenu > .menu .contact .top-action:active, #header .header-right > div#contactsmenu > .menu .contact .top-action:focus, #header .header-right > div#contactsmenu > .menu .contact .second-action:hover, #header .header-right > div#contactsmenu > .menu .contact .second-action:active, #header .header-right > div#contactsmenu > .menu .contact .second-action:focus, #header .header-right > div#contactsmenu > .menu .contact .other-actions:hover, #header .header-right > div#contactsmenu > .menu .contact .other-actions:active, #header .header-right > div#contactsmenu > .menu .contact .other-actions:focus {
  880. opacity: 1;
  881. }
  882. #header .header-right > div#contactsmenu > .menu .contact button.other-actions {
  883. width: 44px;
  884. }
  885. #header .header-right > div#contactsmenu > .menu .contact button.other-actions:focus {
  886. border-color: transparent;
  887. box-shadow: 0 0 0 2px var(--color-main-text);
  888. }
  889. #header .header-right > div#contactsmenu > .menu .contact button.other-actions:focus-visible {
  890. border-radius: var(--border-radius-pill);
  891. }
  892. #header .header-right > div#contactsmenu > .menu .contact .menu {
  893. top: 47px;
  894. margin-right: 13px;
  895. }
  896. #header .header-right > div#contactsmenu > .menu .contact .popovermenu::after {
  897. right: 2px;
  898. }
  899. #contactsmenu-search {
  900. width: calc(100% - 16px);
  901. margin: 8px;
  902. height: 34px;
  903. }
  904. /* ---- TOOLTIPS ---- */
  905. .extra-data {
  906. padding-right: 5px !important;
  907. }
  908. /* ---- TAGS ---- */
  909. #tagsdialog .content {
  910. width: 100%;
  911. height: 280px;
  912. }
  913. #tagsdialog .scrollarea {
  914. overflow: auto;
  915. border: 1px solid var(--color-background-darker);
  916. width: 100%;
  917. height: 240px;
  918. }
  919. #tagsdialog .bottombuttons {
  920. width: 100%;
  921. height: 30px;
  922. }
  923. #tagsdialog .bottombuttons * {
  924. float: left;
  925. }
  926. #tagsdialog .taglist li {
  927. background: var(--color-background-dark);
  928. padding: 0.3em 0.8em;
  929. white-space: nowrap;
  930. overflow: hidden;
  931. text-overflow: ellipsis;
  932. -webkit-transition: background-color 500ms;
  933. transition: background-color 500ms;
  934. }
  935. #tagsdialog .taglist li:hover, #tagsdialog .taglist li:active {
  936. background: var(--color-background-darker);
  937. }
  938. #tagsdialog .addinput {
  939. width: 90%;
  940. clear: both;
  941. }
  942. /* ---- BREADCRUMB ---- */
  943. .breadcrumb {
  944. display: inline-flex;
  945. }
  946. div.crumb {
  947. display: inline-flex;
  948. background-image: url("../img/breadcrumb.svg?v=1");
  949. background-repeat: no-repeat;
  950. background-position: right center;
  951. height: 44px;
  952. background-size: auto 24px;
  953. flex: 0 0 auto;
  954. order: 1;
  955. padding-right: 7px;
  956. }
  957. div.crumb.crumbmenu {
  958. order: 2;
  959. position: relative;
  960. }
  961. div.crumb.crumbmenu a {
  962. opacity: 0.5;
  963. }
  964. div.crumb.crumbmenu.canDropChildren .popovermenu, div.crumb.crumbmenu.canDrop .popovermenu {
  965. display: block;
  966. }
  967. div.crumb.crumbmenu .popovermenu {
  968. top: 100%;
  969. margin-right: 3px;
  970. }
  971. div.crumb.crumbmenu .popovermenu ul {
  972. max-height: 345px;
  973. overflow-y: auto;
  974. overflow-x: hidden;
  975. padding-right: 5px;
  976. }
  977. div.crumb.crumbmenu .popovermenu ul li.canDrop span:first-child {
  978. background-image: url("../img/filetypes/folder-drag-accept.svg?v=1") !important;
  979. }
  980. div.crumb.crumbmenu .popovermenu .in-breadcrumb {
  981. display: none;
  982. }
  983. div.crumb.hidden {
  984. display: none;
  985. }
  986. div.crumb.hidden ~ .crumb {
  987. order: 3;
  988. }
  989. div.crumb > a,
  990. div.crumb > span {
  991. position: relative;
  992. padding: 12px;
  993. opacity: 0.5;
  994. text-overflow: ellipsis;
  995. white-space: nowrap;
  996. overflow: hidden;
  997. flex: 0 0 auto;
  998. max-width: 200px;
  999. }
  1000. div.crumb > a.icon-home, div.crumb > a.icon-delete,
  1001. div.crumb > span.icon-home,
  1002. div.crumb > span.icon-delete {
  1003. text-indent: -9999px;
  1004. }
  1005. div.crumb > a[class^=icon-] {
  1006. padding: 0;
  1007. width: 44px;
  1008. }
  1009. div.crumb:last-child {
  1010. font-weight: bold;
  1011. margin-right: 10px;
  1012. }
  1013. div.crumb:last-child a ~ span {
  1014. padding-left: 0;
  1015. }
  1016. div.crumb:hover, div.crumb:focus, div.crumb a:focus, div.crumb:active {
  1017. opacity: 1;
  1018. }
  1019. div.crumb:hover > a,
  1020. div.crumb:hover > span, div.crumb:focus > a,
  1021. div.crumb:focus > span, div.crumb a:focus > a,
  1022. div.crumb a:focus > span, div.crumb:active > a,
  1023. div.crumb:active > span {
  1024. opacity: 0.7;
  1025. }
  1026. /* some feedback for hover/tap on breadcrumbs */
  1027. .appear {
  1028. opacity: 1;
  1029. -webkit-transition: opacity 500ms ease 0s;
  1030. -moz-transition: opacity 500ms ease 0s;
  1031. -ms-transition: opacity 500ms ease 0s;
  1032. -o-transition: opacity 500ms ease 0s;
  1033. transition: opacity 500ms ease 0s;
  1034. }
  1035. .appear.transparent {
  1036. opacity: 0;
  1037. }
  1038. /* LEGACY FIX only - do not use fieldsets for settings */
  1039. fieldset.warning legend, fieldset.update legend {
  1040. top: 18px;
  1041. position: relative;
  1042. }
  1043. fieldset.warning legend + p, fieldset.update legend + p {
  1044. margin-top: 12px;
  1045. }
  1046. /* for IE10 */
  1047. @-ms-viewport {
  1048. width: device-width;
  1049. }
  1050. /* hidden input type=file field */
  1051. .hiddenuploadfield {
  1052. display: none;
  1053. width: 0;
  1054. height: 0;
  1055. opacity: 0;
  1056. }
  1057. /*# sourceMappingURL=styles.css.map */