1
0

inputs.css 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000
  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, Morris Jobke <hey@morrisjobke.de>
  26. * @copyright Copyright (c) 2016, Joas Schilling <coding@schilljs.com>
  27. * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
  28. * @copyright Copyright (c) 2016, jowi <sjw@gmx.ch>
  29. * @copyright Copyright (c) 2015, Joas Schilling <nickvergessen@owncloud.com>
  30. * @copyright Copyright (c) 2015, Hendrik Leppelsack <hendrik@leppelsack.de>
  31. * @copyright Copyright (c) 2014-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
  32. *
  33. * @license GNU AGPL version 3 or any later version
  34. *
  35. */
  36. /**
  37. * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
  38. *
  39. * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
  40. *
  41. * @license GNU AGPL version 3 or any later version
  42. *
  43. * This program is free software: you can redistribute it and/or modify
  44. * it under the terms of the GNU Affero General Public License as
  45. * published by the Free Software Foundation, either version 3 of the
  46. * License, or (at your option) any later version.
  47. *
  48. * This program is distributed in the hope that it will be useful,
  49. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  50. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  51. * GNU Affero General Public License for more details.
  52. *
  53. * You should have received a copy of the GNU Affero General Public License
  54. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  55. *
  56. */
  57. /**
  58. * @see core/src/icons.js
  59. */
  60. /**
  61. * SVG COLOR API
  62. *
  63. * @param string $icon the icon filename
  64. * @param string $dir the icon folder within /core/img if $core or app name
  65. * @param string $color the desired color in hexadecimal
  66. * @param int $version the version of the file
  67. * @param bool [$core] search icon in core
  68. *
  69. * @returns A background image with the url to the set to the requested icon.
  70. */
  71. /* Specifically override browser styles */
  72. input, textarea, select, button, div[contenteditable=true], div[contenteditable=false] {
  73. font-family: var(--font-face);
  74. }
  75. .select2-container-multi .select2-choices .select2-search-field input, .select2-search input, .ui-widget {
  76. font-family: var(--font-face) !important;
  77. }
  78. .select2-container.select2-drop-above .select2-choice {
  79. background-image: unset !important;
  80. }
  81. /* Simple selector to allow easy overriding */
  82. select,
  83. button:not(.button-vue,
  84. [class^=vs__]),
  85. input,
  86. textarea,
  87. div[contenteditable=true],
  88. div[contenteditable=false] {
  89. width: 130px;
  90. min-height: 36px;
  91. box-sizing: border-box;
  92. }
  93. /**
  94. * color-text-lighter normal state
  95. * color-text-lighter active state
  96. * color-text-maxcontrast disabled state
  97. */
  98. input:not([type=range]) {
  99. outline: none;
  100. }
  101. /* Default global values */
  102. div.select2-drop .select2-search input,
  103. input[type=submit],
  104. input[type=button],
  105. input[type=reset],
  106. button:not(.button-vue,
  107. [class^=vs__]),
  108. .button,
  109. .pager li a {
  110. margin: 3px 3px 3px 0;
  111. padding: 7px 14px;
  112. font-size: 13px;
  113. background-color: var(--color-main-background);
  114. color: var(--color-main-text);
  115. border: 1px solid var(--color-border-dark);
  116. font-size: var(--default-font-size);
  117. outline: none;
  118. border-radius: var(--border-radius);
  119. cursor: text;
  120. /* Primary action button, use sparingly */
  121. }
  122. 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,
  123. input[type=submit]:not(:disabled):not(.primary):hover,
  124. input[type=submit]:not(:disabled):not(.primary):focus,
  125. input[type=submit]:not(:disabled):not(.primary).active,
  126. input[type=button]:not(:disabled):not(.primary):hover,
  127. input[type=button]:not(:disabled):not(.primary):focus,
  128. input[type=button]:not(:disabled):not(.primary).active,
  129. input[type=reset]:not(:disabled):not(.primary):hover,
  130. input[type=reset]:not(:disabled):not(.primary):focus,
  131. input[type=reset]:not(:disabled):not(.primary).active,
  132. button:not(.button-vue,
  133. [class^=vs__]):not(:disabled):not(.primary):hover,
  134. button:not(.button-vue,
  135. [class^=vs__]):not(:disabled):not(.primary):focus,
  136. button:not(.button-vue,
  137. [class^=vs__]):not(:disabled):not(.primary).active,
  138. .button:not(:disabled):not(.primary):hover,
  139. .button:not(:disabled):not(.primary):focus,
  140. .button:not(:disabled):not(.primary).active,
  141. .pager li a:not(:disabled):not(.primary):hover,
  142. .pager li a:not(:disabled):not(.primary):focus,
  143. .pager li a:not(:disabled):not(.primary).active {
  144. /* active class used for multiselect */
  145. border-color: var(--color-primary-element);
  146. outline: none;
  147. }
  148. div.select2-drop .select2-search input:not(:disabled):not(.primary):active,
  149. input[type=submit]:not(:disabled):not(.primary):active,
  150. input[type=button]:not(:disabled):not(.primary):active,
  151. input[type=reset]:not(:disabled):not(.primary):active,
  152. button:not(.button-vue,
  153. [class^=vs__]):not(:disabled):not(.primary):active,
  154. .button:not(:disabled):not(.primary):active,
  155. .pager li a:not(:disabled):not(.primary):active {
  156. outline: none;
  157. background-color: var(--color-main-background);
  158. color: var(--color-text-light);
  159. }
  160. div.select2-drop .select2-search input:not(:disabled):not(.primary):focus-visible,
  161. input[type=submit]:not(:disabled):not(.primary):focus-visible,
  162. input[type=button]:not(:disabled):not(.primary):focus-visible,
  163. input[type=reset]:not(:disabled):not(.primary):focus-visible,
  164. button:not(.button-vue,
  165. [class^=vs__]):not(:disabled):not(.primary):focus-visible,
  166. .button:not(:disabled):not(.primary):focus-visible,
  167. .pager li a:not(:disabled):not(.primary):focus-visible {
  168. box-shadow: 0 0 0 2px var(--color-primary);
  169. }
  170. div.select2-drop .select2-search input:disabled,
  171. input[type=submit]:disabled,
  172. input[type=button]:disabled,
  173. input[type=reset]:disabled,
  174. button:not(.button-vue,
  175. [class^=vs__]):disabled,
  176. .button:disabled,
  177. .pager li a:disabled {
  178. background-color: var(--color-background-dark);
  179. color: var(--color-main-text);
  180. cursor: default;
  181. opacity: 0.5;
  182. }
  183. div.select2-drop .select2-search input:required,
  184. input[type=submit]:required,
  185. input[type=button]:required,
  186. input[type=reset]:required,
  187. button:not(.button-vue,
  188. [class^=vs__]):required,
  189. .button:required,
  190. .pager li a:required {
  191. box-shadow: none;
  192. }
  193. div.select2-drop .select2-search input:user-invalid,
  194. input[type=submit]:user-invalid,
  195. input[type=button]:user-invalid,
  196. input[type=reset]:user-invalid,
  197. button:not(.button-vue,
  198. [class^=vs__]):user-invalid,
  199. .button:user-invalid,
  200. .pager li a:user-invalid {
  201. box-shadow: 0 0 0 2px var(--color-error) !important;
  202. }
  203. div.select2-drop .select2-search input.primary,
  204. input[type=submit].primary,
  205. input[type=button].primary,
  206. input[type=reset].primary,
  207. button:not(.button-vue,
  208. [class^=vs__]).primary,
  209. .button.primary,
  210. .pager li a.primary {
  211. background-color: var(--color-primary-element);
  212. border-color: var(--color-primary-element);
  213. color: var(--color-primary-text);
  214. cursor: pointer;
  215. /* Apply border to primary button if on log in page (and not in a dark container) or if in header */
  216. }
  217. #body-login :not(.body-login-container) div.select2-drop .select2-search input.primary, #header div.select2-drop .select2-search input.primary,
  218. #body-login :not(.body-login-container) input[type=submit].primary,
  219. #header input[type=submit].primary,
  220. #body-login :not(.body-login-container) input[type=button].primary,
  221. #header input[type=button].primary,
  222. #body-login :not(.body-login-container) input[type=reset].primary,
  223. #header input[type=reset].primary,
  224. #body-login :not(.body-login-container) button:not(.button-vue,
  225. [class^=vs__]).primary,
  226. #header button:not(.button-vue,
  227. [class^=vs__]).primary,
  228. #body-login :not(.body-login-container) .button.primary,
  229. #header .button.primary,
  230. #body-login :not(.body-login-container) .pager li a.primary,
  231. #header .pager li a.primary {
  232. border-color: var(--color-primary-text);
  233. }
  234. 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,
  235. input[type=submit].primary:not(:disabled):hover,
  236. input[type=submit].primary:not(:disabled):focus,
  237. input[type=submit].primary:not(:disabled):active,
  238. input[type=button].primary:not(:disabled):hover,
  239. input[type=button].primary:not(:disabled):focus,
  240. input[type=button].primary:not(:disabled):active,
  241. input[type=reset].primary:not(:disabled):hover,
  242. input[type=reset].primary:not(:disabled):focus,
  243. input[type=reset].primary:not(:disabled):active,
  244. button:not(.button-vue,
  245. [class^=vs__]).primary:not(:disabled):hover,
  246. button:not(.button-vue,
  247. [class^=vs__]).primary:not(:disabled):focus,
  248. button:not(.button-vue,
  249. [class^=vs__]).primary:not(:disabled):active,
  250. .button.primary:not(:disabled):hover,
  251. .button.primary:not(:disabled):focus,
  252. .button.primary:not(:disabled):active,
  253. .pager li a.primary:not(:disabled):hover,
  254. .pager li a.primary:not(:disabled):focus,
  255. .pager li a.primary:not(:disabled):active {
  256. background-color: var(--color-primary-element-hover);
  257. border-color: var(--color-primary-element-hover);
  258. }
  259. div.select2-drop .select2-search input.primary:not(:disabled):focus, div.select2-drop .select2-search input.primary:not(:disabled):focus-visible,
  260. input[type=submit].primary:not(:disabled):focus,
  261. input[type=submit].primary:not(:disabled):focus-visible,
  262. input[type=button].primary:not(:disabled):focus,
  263. input[type=button].primary:not(:disabled):focus-visible,
  264. input[type=reset].primary:not(:disabled):focus,
  265. input[type=reset].primary:not(:disabled):focus-visible,
  266. button:not(.button-vue,
  267. [class^=vs__]).primary:not(:disabled):focus,
  268. button:not(.button-vue,
  269. [class^=vs__]).primary:not(:disabled):focus-visible,
  270. .button.primary:not(:disabled):focus,
  271. .button.primary:not(:disabled):focus-visible,
  272. .pager li a.primary:not(:disabled):focus,
  273. .pager li a.primary:not(:disabled):focus-visible {
  274. box-shadow: 0 0 0 2px var(--color-main-text);
  275. }
  276. div.select2-drop .select2-search input.primary:not(:disabled):active,
  277. input[type=submit].primary:not(:disabled):active,
  278. input[type=button].primary:not(:disabled):active,
  279. input[type=reset].primary:not(:disabled):active,
  280. button:not(.button-vue,
  281. [class^=vs__]).primary:not(:disabled):active,
  282. .button.primary:not(:disabled):active,
  283. .pager li a.primary:not(:disabled):active {
  284. color: var(--color-primary-text-dark);
  285. }
  286. div.select2-drop .select2-search input.primary:disabled,
  287. input[type=submit].primary:disabled,
  288. input[type=button].primary:disabled,
  289. input[type=reset].primary:disabled,
  290. button:not(.button-vue,
  291. [class^=vs__]).primary:disabled,
  292. .button.primary:disabled,
  293. .pager li a.primary:disabled {
  294. background-color: var(--color-primary-element);
  295. color: var(--color-primary-text-dark);
  296. cursor: default;
  297. }
  298. div[contenteditable=false] {
  299. margin: 3px 3px 3px 0;
  300. padding: 7px 6px;
  301. font-size: 13px;
  302. background-color: var(--color-main-background);
  303. color: var(--color-text-lighter);
  304. border: 1px solid var(--color-background-darker);
  305. outline: none;
  306. border-radius: var(--border-radius);
  307. background-color: var(--color-background-dark);
  308. color: var(--color-text-lighter);
  309. cursor: default;
  310. opacity: 0.5;
  311. }
  312. /* Specific override */
  313. input {
  314. /* Color input doesn't respect the initial height
  315. so we need to set a custom one */
  316. }
  317. 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]) {
  318. -webkit-appearance: textfield;
  319. -moz-appearance: textfield;
  320. height: 36px;
  321. }
  322. input[type=radio], input[type=checkbox], input[type=file], input[type=image] {
  323. height: auto;
  324. width: auto;
  325. }
  326. input[type=color] {
  327. margin: 3px;
  328. padding: 0 2px;
  329. min-height: 30px;
  330. width: 40px;
  331. cursor: pointer;
  332. }
  333. input[type=hidden] {
  334. height: 0;
  335. width: 0;
  336. }
  337. input[type=time] {
  338. width: initial;
  339. }
  340. /* 'Click' inputs */
  341. select,
  342. button:not(.button-vue,
  343. [class^=vs__]),
  344. .button,
  345. input[type=button],
  346. input[type=submit],
  347. input[type=reset] {
  348. padding: 8px 14px;
  349. font-size: var(--default-font-size);
  350. width: auto;
  351. min-height: 36px;
  352. cursor: pointer;
  353. box-sizing: border-box;
  354. background-color: var(--color-background-dark);
  355. }
  356. select:disabled,
  357. button:not(.button-vue,
  358. [class^=vs__]):disabled,
  359. .button:disabled,
  360. input[type=button]:disabled,
  361. input[type=submit]:disabled,
  362. input[type=reset]:disabled {
  363. cursor: default;
  364. }
  365. input:not([type=range],
  366. .input-field__input,
  367. [type=submit],
  368. [type=button],
  369. [type=reset],
  370. .multiselect__input,
  371. .select2-input,
  372. .action-input__input,
  373. [class^=vs__]),
  374. select,
  375. div[contenteditable=true],
  376. textarea {
  377. margin: 3px 3px 3px 0;
  378. padding: 0 12px;
  379. font-size: var(--default-font-size);
  380. background-color: var(--color-main-background);
  381. color: var(--color-main-text);
  382. border: 2px solid var(--color-border-maxcontrast);
  383. height: 36px;
  384. outline: none;
  385. border-radius: var(--border-radius-large);
  386. text-overflow: ellipsis;
  387. cursor: pointer;
  388. }
  389. input:not([type=range],
  390. .input-field__input,
  391. [type=submit],
  392. [type=button],
  393. [type=reset],
  394. .multiselect__input,
  395. .select2-input,
  396. .action-input__input,
  397. [class^=vs__]):not(:disabled):hover, input:not([type=range],
  398. .input-field__input,
  399. [type=submit],
  400. [type=button],
  401. [type=reset],
  402. .multiselect__input,
  403. .select2-input,
  404. .action-input__input,
  405. [class^=vs__]):not(:disabled):focus, input:not([type=range],
  406. .input-field__input,
  407. [type=submit],
  408. [type=button],
  409. [type=reset],
  410. .multiselect__input,
  411. .select2-input,
  412. .action-input__input,
  413. [class^=vs__]):not(:disabled):active,
  414. select:not(:disabled):hover,
  415. select:not(:disabled):focus,
  416. select:not(:disabled):active,
  417. div[contenteditable=true]:not(:disabled):hover,
  418. div[contenteditable=true]:not(:disabled):focus,
  419. div[contenteditable=true]:not(:disabled):active,
  420. textarea:not(:disabled):hover,
  421. textarea:not(:disabled):focus,
  422. textarea:not(:disabled):active {
  423. border-color: var(--color-primary-element);
  424. }
  425. input:not([type=range],
  426. .input-field__input,
  427. [type=submit],
  428. [type=button],
  429. [type=reset],
  430. .multiselect__input,
  431. .select2-input,
  432. .action-input__input,
  433. [class^=vs__]):not(:disabled):focus,
  434. select:not(:disabled):focus,
  435. div[contenteditable=true]:not(:disabled):focus,
  436. textarea:not(:disabled):focus {
  437. cursor: text;
  438. }
  439. .multiselect__input, .select2-input {
  440. background-color: var(--color-main-background);
  441. color: var(--color-main-text);
  442. }
  443. textarea, div[contenteditable=true] {
  444. padding: 12px;
  445. height: auto;
  446. }
  447. /* Override the ugly select arrow */
  448. select {
  449. background: var(--icon-triangle-s-dark) no-repeat right 8px center;
  450. appearance: none;
  451. background-color: var(--color-main-background);
  452. padding-right: 28px !important;
  453. }
  454. select *,
  455. button:not(.button-vue,
  456. [class^=vs__]) *,
  457. .button * {
  458. cursor: pointer;
  459. }
  460. select:disabled *,
  461. button:not(.button-vue,
  462. [class^=vs__]):disabled *,
  463. .button:disabled * {
  464. cursor: default;
  465. }
  466. /* Buttons */
  467. button:not(.button-vue,
  468. [class^=vs__]),
  469. .button,
  470. input[type=button],
  471. input[type=submit],
  472. input[type=reset] {
  473. font-weight: bold;
  474. border-radius: var(--border-radius-pill);
  475. /* Get rid of the inside dotted line in Firefox */
  476. }
  477. button:not(.button-vue,
  478. [class^=vs__])::-moz-focus-inner,
  479. .button::-moz-focus-inner,
  480. input[type=button]::-moz-focus-inner,
  481. input[type=submit]::-moz-focus-inner,
  482. input[type=reset]::-moz-focus-inner {
  483. border: 0;
  484. }
  485. button:not(.button-vue,
  486. [class^=vs__]).error,
  487. .button.error,
  488. input[type=button].error,
  489. input[type=submit].error,
  490. input[type=reset].error {
  491. background-color: var(--color-error) !important;
  492. border-color: var(--color-error) !important;
  493. color: #fff !important;
  494. }
  495. button:not(.button-vue,
  496. .action-button,
  497. [class^=vs__]) > span,
  498. .button > span {
  499. /* icon position inside buttons */
  500. }
  501. button:not(.button-vue,
  502. .action-button,
  503. [class^=vs__]) > span[class^=icon-], button:not(.button-vue,
  504. .action-button,
  505. [class^=vs__]) > span[class*=" icon-"],
  506. .button > span[class^=icon-],
  507. .button > span[class*=" icon-"] {
  508. display: inline-block;
  509. vertical-align: text-bottom;
  510. opacity: 0.5;
  511. }
  512. /* Confirm inputs */
  513. input[type=text], input[type=password], input[type=email] {
  514. /* only show confirm borders if input is not focused */
  515. }
  516. input[type=text] + .icon-confirm, input[type=password] + .icon-confirm, input[type=email] + .icon-confirm {
  517. margin-left: -13px !important;
  518. border-left-color: transparent !important;
  519. border-radius: 0 var(--border-radius-large) var(--border-radius-large) 0 !important;
  520. border-width: 2px;
  521. background-clip: padding-box;
  522. /* Avoid background under border */
  523. background-color: var(--color-main-background) !important;
  524. opacity: 1;
  525. height: 36px;
  526. width: 36px;
  527. padding: 7px 6px;
  528. cursor: pointer;
  529. margin-right: 0;
  530. }
  531. input[type=text] + .icon-confirm:disabled, input[type=password] + .icon-confirm:disabled, input[type=email] + .icon-confirm:disabled {
  532. cursor: default;
  533. /* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */
  534. background-image: var(--icon-confirm-fade-dark);
  535. }
  536. 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 {
  537. border-color: var(--color-error);
  538. }
  539. 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 {
  540. border-color: var(--color-primary-element) !important;
  541. border-radius: var(--border-radius) !important;
  542. }
  543. 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 {
  544. border-color: var(--color-background-darker) !important;
  545. }
  546. 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 {
  547. border-color: var(--color-primary-element) !important;
  548. border-left-color: transparent !important;
  549. /* above previous input */
  550. z-index: 2;
  551. }
  552. /* Various Fixes */
  553. button img,
  554. .button img {
  555. cursor: pointer;
  556. }
  557. select,
  558. .button.multiselect {
  559. font-weight: normal;
  560. }
  561. /* Radio & Checkboxes */
  562. input[type=checkbox], input[type=radio] {
  563. /* We do not use the variables as we keep the colours as white for this variant */
  564. }
  565. input[type=checkbox].radio, input[type=checkbox].checkbox, input[type=radio].radio, input[type=radio].checkbox {
  566. position: absolute;
  567. left: -10000px;
  568. top: auto;
  569. width: 1px;
  570. height: 1px;
  571. overflow: hidden;
  572. }
  573. input[type=checkbox].radio + label, input[type=checkbox].checkbox + label, input[type=radio].radio + label, input[type=radio].checkbox + label {
  574. user-select: none;
  575. }
  576. 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 {
  577. cursor: default;
  578. }
  579. input[type=checkbox].radio + label:before, input[type=checkbox].checkbox + label:before, input[type=radio].radio + label:before, input[type=radio].checkbox + label:before {
  580. content: "";
  581. display: inline-block;
  582. height: 14px;
  583. width: 14px;
  584. vertical-align: middle;
  585. border-radius: 50%;
  586. margin: 0 6px 3px 3px;
  587. border: 1px solid var(--color-text-lighter);
  588. }
  589. 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 {
  590. border-color: var(--color-primary-element);
  591. }
  592. 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 {
  593. outline-style: solid;
  594. outline-color: var(--color-main-text);
  595. outline-width: 1px;
  596. outline-offset: 2px;
  597. }
  598. 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 {
  599. /* ^ :indeterminate have a strange behavior on radio,
  600. so we respecified the checkbox class again to be safe */
  601. box-shadow: inset 0px 0px 0px 2px var(--color-main-background);
  602. background-color: var(--color-primary-element);
  603. border-color: var(--color-primary-element);
  604. }
  605. 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 {
  606. border: 1px solid var(--color-text-lighter);
  607. background-color: var(--color-text-maxcontrast) !important;
  608. /* override other status */
  609. }
  610. 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 {
  611. background-color: var(--color-text-maxcontrast);
  612. }
  613. input[type=checkbox].radio + label ~ em, input[type=checkbox].checkbox + label ~ em, input[type=radio].radio + label ~ em, input[type=radio].checkbox + label ~ em {
  614. display: inline-block;
  615. margin-left: 25px;
  616. }
  617. 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 {
  618. margin-bottom: 14px;
  619. }
  620. input[type=checkbox].checkbox + label:before, input[type=radio].checkbox + label:before {
  621. border-radius: 1px;
  622. height: 14px;
  623. width: 14px;
  624. box-shadow: none !important;
  625. background-position: center;
  626. }
  627. input[type=checkbox].checkbox:checked + label:before, input[type=radio].checkbox:checked + label:before {
  628. background-image: url("../img/actions/checkbox-mark.svg");
  629. }
  630. input[type=checkbox].checkbox:indeterminate + label:before, input[type=radio].checkbox:indeterminate + label:before {
  631. background-image: url("../img/actions/checkbox-mixed.svg");
  632. }
  633. 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 {
  634. border-color: #bababa;
  635. }
  636. 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 {
  637. border-color: #fff;
  638. }
  639. 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 {
  640. box-shadow: inset 0px 0px 0px 2px var(--color-main-background);
  641. background-color: #dbdbdb;
  642. border-color: #dbdbdb;
  643. }
  644. 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 {
  645. background-color: #bababa !important;
  646. /* override other status */
  647. border-color: rgba(255, 255, 255, 0.4) !important;
  648. /* override other status */
  649. }
  650. 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 {
  651. box-shadow: inset 0px 0px 0px 2px var(--color-main-background);
  652. border-color: rgba(255, 255, 255, 0.4) !important;
  653. /* override other status */
  654. background-color: #bababa;
  655. }
  656. 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 {
  657. background-color: transparent !important;
  658. /* Override default checked */
  659. border-color: #fff !important;
  660. /* Override default checked */
  661. background-image: url("../img/actions/checkbox-mark-white.svg");
  662. }
  663. input[type=checkbox].checkbox--white:indeterminate + label:before, input[type=radio].checkbox--white:indeterminate + label:before {
  664. background-image: url("../img/actions/checkbox-mixed-white.svg");
  665. }
  666. input[type=checkbox].checkbox--white:disabled + label:before, input[type=radio].checkbox--white:disabled + label:before {
  667. opacity: 0.7;
  668. /* No other choice for white background image */
  669. }
  670. /* Select2 overriding. Merged to core with vendor stylesheet */
  671. div.select2-drop {
  672. margin-top: -2px;
  673. background-color: var(--color-main-background);
  674. }
  675. div.select2-drop.select2-drop-active {
  676. border-color: var(--color-border-dark);
  677. }
  678. div.select2-drop .avatar {
  679. display: inline-block;
  680. margin-right: 8px;
  681. vertical-align: middle;
  682. }
  683. div.select2-drop .avatar img {
  684. cursor: pointer;
  685. }
  686. div.select2-drop .select2-search input {
  687. min-height: auto;
  688. background: var(--icon-search-dark) no-repeat right center !important;
  689. background-origin: content-box !important;
  690. }
  691. div.select2-drop .select2-results {
  692. max-height: 250px;
  693. margin: 0;
  694. padding: 0;
  695. }
  696. div.select2-drop .select2-results .select2-result-label {
  697. white-space: nowrap;
  698. overflow: hidden;
  699. text-overflow: ellipsis;
  700. }
  701. div.select2-drop .select2-results .select2-result-label span {
  702. cursor: pointer;
  703. }
  704. div.select2-drop .select2-results .select2-result-label span em {
  705. cursor: inherit;
  706. background: unset;
  707. }
  708. div.select2-drop .select2-results .select2-result,
  709. div.select2-drop .select2-results .select2-no-results,
  710. div.select2-drop .select2-results .select2-searching {
  711. position: relative;
  712. display: list-item;
  713. padding: 12px;
  714. background-color: transparent;
  715. cursor: pointer;
  716. color: var(--color-text-lighter);
  717. }
  718. div.select2-drop .select2-results .select2-result.select2-selected {
  719. background-color: var(--color-background-dark);
  720. }
  721. div.select2-drop .select2-results .select2-highlighted {
  722. background-color: var(--color-background-dark);
  723. color: var(--color-main-text);
  724. }
  725. .select2-chosen .avatar,
  726. .select2-chosen .avatar img,
  727. #select2-drop .avatar,
  728. #select2-drop .avatar img {
  729. cursor: pointer;
  730. }
  731. div.select2-container-multi .select2-choices, div.select2-container-multi.select2-container-active .select2-choices {
  732. box-shadow: none;
  733. white-space: nowrap;
  734. text-overflow: ellipsis;
  735. background: var(--color-main-background);
  736. color: var(--color-text-lighter) !important;
  737. box-sizing: content-box;
  738. border-radius: var(--border-radius-large);
  739. border: 2px solid var(--color-border-dark);
  740. margin: 0;
  741. padding: 6px;
  742. min-height: 44px;
  743. }
  744. div.select2-container-multi .select2-choices:focus-within, div.select2-container-multi.select2-container-active .select2-choices:focus-within {
  745. border-color: var(--color-primary);
  746. }
  747. div.select2-container-multi .select2-choices .select2-search-choice, div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice {
  748. line-height: 20px;
  749. padding-left: 5px;
  750. }
  751. 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 {
  752. background-image: none;
  753. background-color: var(--color-main-background);
  754. color: var(--color-text-lighter);
  755. border: 1px solid var(--color-border-dark);
  756. }
  757. 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 {
  758. display: none;
  759. }
  760. div.select2-container-multi .select2-choices .select2-search-field input, div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input {
  761. line-height: 20px;
  762. min-height: 28px;
  763. max-height: 28px;
  764. color: var(--color-main-text);
  765. }
  766. 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 {
  767. background: none !important;
  768. }
  769. div.select2-container {
  770. margin: 3px 3px 3px 0;
  771. }
  772. div.select2-container.select2-container-multi .select2-choices {
  773. display: flex;
  774. flex-wrap: wrap;
  775. }
  776. div.select2-container.select2-container-multi .select2-choices li {
  777. float: none;
  778. }
  779. div.select2-container a.select2-choice {
  780. box-shadow: none;
  781. white-space: nowrap;
  782. text-overflow: ellipsis;
  783. background: var(--color-main-background);
  784. color: var(--color-text-lighter) !important;
  785. box-sizing: content-box;
  786. border-radius: var(--border-radius-large);
  787. border: 2px solid var(--color-border-dark);
  788. margin: 0;
  789. padding: 6px 12px;
  790. min-height: 44px;
  791. }
  792. div.select2-container a.select2-choice:focus-within {
  793. border-color: var(--color-primary);
  794. }
  795. div.select2-container a.select2-choice .select2-search-choice {
  796. line-height: 20px;
  797. padding-left: 5px;
  798. background-image: none;
  799. background-color: var(--color-background-dark);
  800. border-color: var(--color-background-dark);
  801. }
  802. div.select2-container a.select2-choice .select2-search-choice .select2-search-choice-close {
  803. display: none;
  804. }
  805. div.select2-container a.select2-choice .select2-search-choice.select2-search-choice-focus, div.select2-container a.select2-choice .select2-search-choice:hover {
  806. background-color: var(--color-border);
  807. border-color: var(--color-border);
  808. }
  809. div.select2-container a.select2-choice .select2-arrow {
  810. background: none;
  811. border-radius: 0;
  812. border: none;
  813. }
  814. div.select2-container a.select2-choice .select2-arrow b {
  815. background: var(--icon-triangle-s-dark) no-repeat center !important;
  816. opacity: 0.5;
  817. }
  818. 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 {
  819. opacity: 0.7;
  820. }
  821. div.select2-container a.select2-choice .select2-search-field input {
  822. line-height: 20px;
  823. }
  824. /* Vue v-select */
  825. .v-select {
  826. margin: 3px 3px 3px 0;
  827. display: inline-block;
  828. }
  829. .v-select .dropdown-toggle {
  830. display: flex !important;
  831. flex-wrap: wrap;
  832. }
  833. .v-select .dropdown-toggle .selected-tag {
  834. line-height: 20px;
  835. padding-left: 5px;
  836. background-image: none;
  837. background-color: var(--color-main-background);
  838. color: var(--color-text-lighter);
  839. border: 1px solid var(--color-border-dark);
  840. display: inline-flex;
  841. align-items: center;
  842. }
  843. .v-select .dropdown-toggle .selected-tag .close {
  844. margin-left: 3px;
  845. }
  846. .v-select .dropdown-menu {
  847. padding: 0;
  848. }
  849. .v-select .dropdown-menu li {
  850. padding: 5px;
  851. position: relative;
  852. display: list-item;
  853. background-color: transparent;
  854. cursor: pointer;
  855. color: var(--color-text-lighter);
  856. }
  857. .v-select .dropdown-menu li a {
  858. white-space: nowrap;
  859. overflow: hidden;
  860. text-overflow: ellipsis;
  861. height: 25px;
  862. padding: 3px 7px 4px 2px;
  863. margin: 0;
  864. cursor: pointer;
  865. min-height: 1em;
  866. -webkit-touch-callout: none;
  867. -webkit-user-select: none;
  868. -moz-user-select: none;
  869. -ms-user-select: none;
  870. user-select: none;
  871. display: inline-flex;
  872. align-items: center;
  873. background-color: transparent !important;
  874. color: inherit !important;
  875. }
  876. .v-select .dropdown-menu li a::before {
  877. content: " ";
  878. background-image: var(--icon-checkmark-dark);
  879. background-repeat: no-repeat;
  880. background-position: center;
  881. min-width: 16px;
  882. min-height: 16px;
  883. display: block;
  884. opacity: 0.5;
  885. margin-right: 5px;
  886. visibility: hidden;
  887. }
  888. .v-select .dropdown-menu li.highlight {
  889. color: var(--color-main-text);
  890. }
  891. .v-select .dropdown-menu li.active > a {
  892. background-color: var(--color-background-dark);
  893. color: var(--color-main-text);
  894. }
  895. .v-select .dropdown-menu li.active > a::before {
  896. visibility: visible;
  897. }
  898. /* Progressbar */
  899. progress:not(.vue) {
  900. display: block;
  901. width: 100%;
  902. padding: 0;
  903. border: 0 none;
  904. background-color: var(--color-background-dark);
  905. border-radius: var(--border-radius);
  906. flex-basis: 100%;
  907. height: 5px;
  908. overflow: hidden;
  909. }
  910. progress:not(.vue).warn::-moz-progress-bar {
  911. background: var(--color-error);
  912. }
  913. progress:not(.vue).warn::-webkit-progress-value {
  914. background: var(--color-error);
  915. }
  916. progress:not(.vue)::-webkit-progress-bar {
  917. background: transparent;
  918. }
  919. progress:not(.vue)::-moz-progress-bar {
  920. border-radius: var(--border-radius);
  921. background: var(--color-primary);
  922. transition: 250ms all ease-in-out;
  923. }
  924. progress:not(.vue)::-webkit-progress-value {
  925. border-radius: var(--border-radius);
  926. background: var(--color-primary);
  927. transition: 250ms all ease-in-out;
  928. }
  929. /* Animation */
  930. @keyframes shake {
  931. 10%, 90% {
  932. transform: translate(-1px);
  933. }
  934. 20%, 80% {
  935. transform: translate(2px);
  936. }
  937. 30%, 50%, 70% {
  938. transform: translate(-4px);
  939. }
  940. 40%, 60% {
  941. transform: translate(4px);
  942. }
  943. }
  944. .shake {
  945. animation-name: shake;
  946. animation-duration: 0.7s;
  947. animation-timing-function: ease-out;
  948. }
  949. label.infield {
  950. position: absolute;
  951. left: -10000px;
  952. top: -10000px;
  953. width: 1px;
  954. height: 1px;
  955. overflow: hidden;
  956. }
  957. ::placeholder {
  958. color: var(--color-text-maxcontrast);
  959. font-size: var(--default-font-size);
  960. }
  961. ::-ms-input-placeholder {
  962. color: var(--color-text-maxcontrast);
  963. font-size: var(--default-font-size);
  964. }
  965. ::-webkit-input-placeholder {
  966. color: var(--color-text-maxcontrast);
  967. font-size: var(--default-font-size);
  968. }
  969. /*# sourceMappingURL=inputs.css.map */