guest.css 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820
  1. /* Copyright (c) 2011, Jan-Christoph Borchardt, http://jancborchardt.net
  2. * SPDX-FileCopyrightText: 2022 Carl Schwan <carl@carlschwan.eu>
  3. This file is licensed under the Affero General Public License version 3 or later.
  4. See the COPYING-README file. */
  5. /* Default and reset */
  6. html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section { margin:0; padding:0; border:0; outline:0; font-weight:inherit; font-size:100%; font-family:inherit; vertical-align:baseline; cursor:default; }
  7. html { height:100%; }
  8. article, aside, dialog, figure, footer, header, hgroup, nav, section { display:block; }
  9. body { line-height:1.5; }
  10. table { border-collapse:separate; border-spacing:0; white-space:nowrap; }
  11. caption, th, td { text-align:left; font-weight:normal; }
  12. table, td, th { vertical-align:middle; }
  13. a { border:0; color: var(--color-main-text); text-decoration:none;}
  14. a, a *, input, input *, select, .button span, label { cursor:pointer; }
  15. ul { list-style:none; }
  16. body {
  17. font-weight: normal;
  18. /* bring the default font size up to 14px */
  19. font-size: .875em;
  20. line-height: 1.6em;
  21. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
  22. color: var(--color-text);
  23. text-align: center;
  24. /* As guest, there is no color-background-plain */
  25. background-color: var(--color-background-plain, var(--color-primary-default, #0082c9));
  26. /* As guest, there is no user background (--image-background)
  27. 1. User background if logged in ('no' if removed, that way the variable is _defined_)
  28. 2. Empty background if enabled ('yes' is used, that way the variable is _defined_)
  29. 3. Else default background
  30. 4. Finally default gradient (should not happened, the background is always defined anyway) */
  31. background-image: var(--image-background, var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))));
  32. background-attachment: fixed;
  33. min-height: 100%; /* fix sticky footer */
  34. height: auto;
  35. overflow: auto;
  36. position: static;
  37. }
  38. /* Various fonts settings */
  39. #body-login a {
  40. font-weight: 600;
  41. }
  42. #body-login footer a {
  43. color: var(--color-text);
  44. }
  45. #body-login a:not(.button):hover,
  46. #body-login a:not(.button):focus {
  47. text-decoration: underline;
  48. text-decoration-skip-ink: auto;
  49. }
  50. em {
  51. font-style: normal;
  52. opacity: .5;
  53. }
  54. /* heading styles */
  55. h2,
  56. h3,
  57. h4 {
  58. font-weight: bold;
  59. }
  60. h2 {
  61. font-size: 20px;
  62. margin-bottom: 12px;
  63. line-height: 140%;
  64. }
  65. h3 {
  66. font-size: 15px;
  67. margin: 12px 0;
  68. }
  69. /* Global content */
  70. body {
  71. display: flex;
  72. flex-direction: column;
  73. justify-content: center;
  74. align-items: center;
  75. }
  76. #header .logo {
  77. max-width: 175px;
  78. width: auto;
  79. max-height: 130px;
  80. margin: 0 auto;
  81. position: relative;
  82. left: unset;
  83. }
  84. #header .logo img {
  85. opacity: 0;
  86. max-width: 100%;
  87. max-height: 200px;
  88. }
  89. .wrapper {
  90. width: 100%;
  91. max-width: 700px;
  92. margin-top: 10vh;
  93. }
  94. /* Default FORM */
  95. form {
  96. position: relative;
  97. margin: auto;
  98. padding: 0;
  99. }
  100. form.install-form {
  101. max-width: 300px;
  102. }
  103. form.install-form fieldset,
  104. form.install-form fieldset input {
  105. width: 100%;
  106. }
  107. form.install-form .strengthify-wrapper {
  108. bottom: 17px;
  109. width: calc(100% - 8px);
  110. left: 4px;
  111. top: unset;
  112. }
  113. form.install-form #show {
  114. top: 18px;
  115. }
  116. form #sqliteInformation {
  117. margin-top: 0.5rem;
  118. margin-bottom: 20px;
  119. }
  120. form #adminaccount, form #use_other_db {
  121. margin-bottom: 15px;
  122. text-align: left;
  123. }
  124. form #adminaccount > legend,
  125. form #adminlogin {
  126. margin-bottom: 1rem;
  127. }
  128. form #advancedHeader {
  129. width: 100%;
  130. }
  131. form fieldset legend, #datadirContent label {
  132. width: 100%;
  133. }
  134. #datadirContent label {
  135. display: block;
  136. margin: 0;
  137. }
  138. form #datadirField legend {
  139. margin-bottom: 15px;
  140. }
  141. /* View more button */
  142. #showAdvanced {
  143. padding: 13px; /* increase clickable area of Advanced dropdown */
  144. }
  145. #showAdvanced img {
  146. vertical-align: middle; /* adjust position of Advanced dropdown arrow */
  147. }
  148. /* Buttons and input */
  149. #submit-wrapper {
  150. display: flex;
  151. align-items: center;
  152. justify-content: center;
  153. padding: 10px 5px;
  154. position: relative; /* Make the wrapper the containing block of its
  155. absolutely positioned descendant icons */
  156. }
  157. @media only screen and (max-width: 1024px) {
  158. .wrapper {
  159. margin-top: 0;
  160. }
  161. }
  162. #submit-wrapper .submit-icon {
  163. position: absolute;
  164. right: 24px;
  165. transition: right 100ms ease-in-out;
  166. pointer-events: none; /* The submit icon is positioned on the submit button.
  167. From the user point of view the icon is part of the
  168. button, so the clicks on the icon have to be
  169. applied to the button instead. */
  170. }
  171. #submit-wrapper {
  172. margin: 0 auto;
  173. }
  174. #submit-wrapper input.login:hover ~ .submit-icon.icon-confirm-white,
  175. #submit-wrapper input.login:focus ~ .submit-icon.icon-confirm-white,
  176. #submit-wrapper input.login:active ~ .submit-icon.icon-confirm-white {
  177. right: 20px;
  178. }
  179. #submit-wrapper .icon-loading-small {
  180. position: absolute;
  181. top: 22px;
  182. right: 26px;
  183. }
  184. input, textarea, select, button, div[contenteditable=true] {
  185. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
  186. }
  187. input,
  188. input:not([type='range']),
  189. input:not([type='text']),
  190. input:not([type='password']),
  191. a.button {
  192. font-size: 20px;
  193. margin: 5px;
  194. padding: 5px;
  195. outline: none;
  196. border-radius: 3px; /* --border-radius */
  197. -webkit-appearance: none;
  198. }
  199. input:not([type='radio']),
  200. input:not([type='range']) {
  201. border-width: 2px;
  202. }
  203. input:not([type='range']):focus-visible {
  204. box-shadow: none !important;
  205. }
  206. input[type='submit'],
  207. input[type='submit'].icon-confirm,
  208. input[type='button'],
  209. button,
  210. a.button,
  211. .button,
  212. select {
  213. display: inline-block;
  214. width: auto;
  215. min-width: 25px;
  216. padding: 12px;
  217. background-color: var(--color-main-background);
  218. font-weight: bold;
  219. color: var(--color-text);
  220. border: none;
  221. border-radius: 100px; /* --border-radius-pill */
  222. cursor: pointer;
  223. }
  224. .icon-confirm.input-button-inline {
  225. position: absolute;
  226. right: 3px;
  227. top: 5px;
  228. }
  229. input[type='submit']:focus {
  230. box-shadow: 0 0 0 2px inset var(--color-main-text) !important;
  231. }
  232. input[type='text'],
  233. input[type='tel'],
  234. input[type='password'],
  235. input[type='email'] {
  236. width: 266px;
  237. padding: 5px 10px;
  238. color: var(--color-text-lighter);
  239. cursor: text;
  240. font-family: inherit;
  241. font-weight: normal;
  242. margin-left: 0;
  243. margin-right: 0;
  244. }
  245. input[type='password'].password-with-toggle, input[type='text'].password-with-toggle {
  246. width: 238px;
  247. padding-right: 40px !important;
  248. }
  249. input.login {
  250. width: 260px;
  251. height: 50px;
  252. background-position: right 16px center;
  253. }
  254. input[type='submit'],
  255. input[type='submit'].icon-confirm,
  256. input.updateButton,
  257. input.update-continue {
  258. padding: 10px 20px; /* larger log in and installation buttons */
  259. overflow: hidden;
  260. text-overflow: ellipsis;
  261. }
  262. /* Get rid of the inside dotted line in Firefox */
  263. button::-moz-focus-inner,
  264. input::-moz-focus-inner {
  265. border: 0;
  266. }
  267. input.primary:not(:disabled):hover,
  268. input.primary:not(:disabled):focus,
  269. button.primary:not(:disabled):hover,
  270. button.primary:not(:disabled):focus,
  271. a.primary:not(:disabled):hover,
  272. a.primary:not(:disabled):focus {
  273. color: var(--color-primary-text);
  274. }
  275. /* Checkboxes - white only for login */
  276. input[type='checkbox'].checkbox {
  277. position: absolute;
  278. left: -10000px;
  279. top: auto;
  280. width: 1px;
  281. height: 1px;
  282. overflow: hidden;
  283. }
  284. input[type='checkbox'].checkbox + label {
  285. user-select: none;
  286. }
  287. input[type='checkbox'].checkbox:disabled + label,
  288. input[type='checkbox'].checkbox:disabled + label:before {
  289. cursor: default;
  290. }
  291. input[type='checkbox'].checkbox + label:before {
  292. content: '';
  293. display: inline-block;
  294. vertical-align: middle;
  295. margin: 3px;
  296. margin-top: 1px;
  297. border: 1px solid #888;
  298. border-radius: 1px;
  299. height: 10px;
  300. width: 10px;
  301. background-position: center;
  302. }
  303. input[type='checkbox'].checkbox--white + label:before {
  304. border-color: #ddd;
  305. }
  306. input[type='checkbox'].checkbox--white:not(:disabled):not(:checked) + label:hover:before,
  307. input[type='checkbox'].checkbox--white:focus + label:before {
  308. border-color: #fff;
  309. }
  310. input[type='checkbox'].checkbox--white:checked + label:before {
  311. background-color: #eee;
  312. border-color: #eee;
  313. }
  314. input[type='checkbox'].checkbox--white:disabled + label:before {
  315. background-color: #666 !important;
  316. border-color: #999 !important;
  317. }
  318. input[type='checkbox'].checkbox--white:checked:disabled + label:before {
  319. border-color: #666;
  320. background-color: #222;
  321. }
  322. input[type='checkbox'].checkbox--white:checked + label:before {
  323. background-color: transparent !important;
  324. border-color: #fff !important;
  325. background-image: url('../img/actions/checkbox-mark-white.svg');
  326. }
  327. /* Password strength meter */
  328. .strengthify-wrapper {
  329. display: inline-block;
  330. position: relative;
  331. top: -20px;
  332. width: 250px;
  333. border-radius: 0 0 3px 3px;
  334. overflow: hidden;
  335. height: 3px;
  336. }
  337. .tooltip-inner {
  338. font-weight: bold;
  339. padding: 3px 6px;
  340. text-align: center;
  341. }
  342. /* Show password toggle */
  343. #show, #dbpassword-toggle {
  344. position: absolute;
  345. right: 2px;
  346. top: -3px;
  347. display: flex;
  348. justify-content: center;
  349. width: 44px;
  350. align-content: center;
  351. padding: 13px;
  352. }
  353. #pass2, input[name='personal-password-clone'] {
  354. padding: .6em 2.5em .4em .4em;
  355. width: 8em;
  356. }
  357. #personal-show + label {
  358. height: 14px;
  359. margin-top: -25px;
  360. left: 295px;
  361. display: block;
  362. }
  363. #passwordbutton {
  364. margin-left: .5em;
  365. }
  366. /* Dark subtle label text */
  367. p.info,
  368. form fieldset legend,
  369. #datadirContent label,
  370. form fieldset .warning-info,
  371. form input[type='checkbox']+label {
  372. text-align: center;
  373. }
  374. /* overrides another !important statement that sets this to unreadable black */
  375. form .warning input[type='checkbox']:hover+label,
  376. form .warning input[type='checkbox']:focus+label,
  377. form .warning input[type='checkbox']+label {
  378. color: var(--color-primary-text) !important;
  379. }
  380. .body-login-container.two-factor {
  381. max-width: 290px;
  382. margin: 15px auto 0;
  383. }
  384. .two-factor-provider {
  385. display: flex;
  386. border-radius: 3px; /* --border-radius */
  387. margin: 12px 0;
  388. border: 1px solid transparent;
  389. text-align: left;
  390. align-items: center;
  391. text-decoration: none !important;
  392. }
  393. .two-factor-provider:hover,
  394. .two-factor-provider:focus,
  395. .two-factor-provider:active {
  396. border: 1px solid #fff;
  397. }
  398. .two-factor-provider img {
  399. width: 64px;
  400. height: 64px;
  401. padding: 0 12px;
  402. }
  403. .two-factor-provider div {
  404. margin: 12px 0;
  405. }
  406. .two-factor-provider h3 {
  407. margin: 0;
  408. }
  409. .two-factor-provider p {
  410. font-weight: normal;
  411. }
  412. .two-factor-icon {
  413. width: 100px;
  414. display: block;
  415. margin: 0 auto;
  416. }
  417. .two-factor-submit {
  418. width: 100%;
  419. padding: 10px;
  420. margin: 0 0 5px 0;
  421. border-radius: 100px; /* --border-radius-pill */
  422. font-size: 20px;
  423. }
  424. .two-factor-primary {
  425. /* Fix for 'Use backup codes' button not taking correct styles */
  426. padding: 14px !important;
  427. width: 226px;
  428. }
  429. .two-factor-secondary {
  430. display: inline-block;
  431. padding: 12px;
  432. }
  433. /* Additional login options */
  434. #remember_login {
  435. margin: 18px 5px 0 16px !important;
  436. }
  437. /* fixes for update page TODO should be fixed some time in a proper way */
  438. /* this is just for an error while updating the ownCloud instance */
  439. .updateProgress .error {
  440. margin-top: 10px;
  441. margin-bottom: 10px;
  442. }
  443. /* Database selector on install page */
  444. form #selectDbType {
  445. text-align:center;
  446. white-space: nowrap;
  447. margin: 0;
  448. display: flex;
  449. }
  450. form #selectDbType .info {
  451. white-space: normal;
  452. }
  453. form #selectDbType label {
  454. flex-grow: 1;
  455. margin: 0 -1px 5px;
  456. font-size: 12px;
  457. background: var(--color-background-hover);
  458. color: var(--color-main-text);
  459. cursor:pointer;
  460. border: 1px solid var(--color-border);
  461. padding: 10px 17px;
  462. }
  463. form #selectDbType label.ui-state-hover,
  464. form #selectDbType label.ui-state-active {
  465. font-weight: normal;
  466. background: var(--color-background-darker);
  467. color: var(--color-main-text);
  468. }
  469. form #selectDbType label span {
  470. display: none;
  471. }
  472. /* Nicely grouping input field sets */
  473. .grouptop,
  474. .groupmiddle,
  475. .groupbottom {
  476. position: relative;
  477. user-select: none;
  478. }
  479. .grouptop, .groupmiddle {
  480. margin-bottom: 8px !important;
  481. }
  482. .groupbottom {
  483. margin-bottom: 13px;
  484. }
  485. .groupbottom input[type=submit] {
  486. box-shadow: none !important;
  487. }
  488. .grouptop.groupbottom input {
  489. border-radius: 3px !important;
  490. margin: 5px 0 !important;
  491. }
  492. /* Errors */
  493. /* Warnings and errors are the same */
  494. .body-login-container {
  495. display: flex;
  496. flex-direction: column;
  497. text-align: left;
  498. word-wrap: break-word;
  499. border-radius: 10px; /* --border-radius-large */
  500. cursor: default;
  501. -moz-user-select: text;
  502. -webkit-user-select: text;
  503. -ms-user-select: text;
  504. user-select: text;
  505. }
  506. /* TODO: Change all .warning/.update/.error to .body-login-container */
  507. .body-login-container .icon-big {
  508. background-size: 70px;
  509. height: 70px;
  510. }
  511. .body-login-container form {
  512. width: initial;
  513. }
  514. .body-login-container p:not(:last-child) {
  515. margin-bottom: 12px;
  516. }
  517. /* Various paragraph styles */
  518. .infogroup {
  519. margin: 8px 0;
  520. }
  521. .infogroup:last-child {
  522. margin-bottom: 0;
  523. }
  524. p.info {
  525. margin: 20px auto;
  526. -webkit-user-select: none;
  527. -moz-user-select: none;
  528. -ms-user-select: none;
  529. user-select: none;
  530. }
  531. /* Update */
  532. .update {
  533. width: calc(100% - 32px);
  534. text-align: center;
  535. }
  536. .update .appList {
  537. list-style: disc;
  538. text-align: left;
  539. margin-left: 25px;
  540. margin-right: 25px;
  541. }
  542. .update img.float-spinner {
  543. float: left;
  544. }
  545. .update a.update-show-detailed {
  546. border-bottom: inherit;
  547. }
  548. #update-progress-detailed {
  549. text-align: left;
  550. margin-bottom: 12px;
  551. }
  552. .update-show-detailed {
  553. padding: 12px;
  554. display: block;
  555. opacity: .75;
  556. }
  557. .update-show-detailed .icon-caret-white {
  558. display: inline-block;
  559. vertical-align: middle;
  560. }
  561. #update-progress-icon {
  562. height: 32px;
  563. margin: 10px;
  564. background-size: 32px;
  565. }
  566. /* Icons */
  567. .icon-info-white {
  568. background-image: url('../img/actions/info-white.svg?v=2');
  569. }
  570. .icon-error-white {
  571. background-image: url('../img/actions/error-white.svg?v=1');
  572. }
  573. .icon-caret-white {
  574. background-image: url('../img/actions/caret-white.svg?v=1');
  575. }
  576. .icon-confirm {
  577. background-image: url('../img/actions/confirm.svg?v=2');
  578. }
  579. .icon-confirm-white {
  580. background-image: url('../img/actions/confirm-white.svg?v=2');
  581. }
  582. .icon-checkmark-white {
  583. background-image: url('../img/actions/checkmark-white.svg?v=1');
  584. }
  585. /* Loading */
  586. .float-spinner {
  587. margin-top: -32px;
  588. padding-top: 32px;
  589. height: 32px;
  590. display: none;
  591. }
  592. [class^='icon-'], [class*=' icon-'] {
  593. background-repeat: no-repeat;
  594. background-position: center;
  595. min-width: 16px;
  596. min-height: 16px;
  597. }
  598. .loading, .loading-small, .icon-loading, .icon-loading-dark, .icon-loading-small, .icon-loading-small-dark {
  599. position: relative;
  600. filter: var(--background-invert-if-dark)
  601. }
  602. .loading:after, .loading-small:after, .icon-loading:after, .icon-loading-dark:after, .icon-loading-small:after, .icon-loading-small-dark:after {
  603. z-index: 2;
  604. content: '';
  605. height: 32px;
  606. width: 32px;
  607. margin: -17px 0 0 -17px;
  608. position: absolute;
  609. top: 50%;
  610. left: 50%;
  611. border-radius: 100%;
  612. -webkit-animation: rotate .8s infinite linear;
  613. animation: rotate .8s infinite linear;
  614. -webkit-transform-origin: center;
  615. -ms-transform-origin: center;
  616. transform-origin: center;
  617. }
  618. .primary .loading,.primary+.loading,.primary .loading-small,.primary+.loading-small,.primary .icon-loading,.primary+.icon-loading,.primary .icon-loading-dark,.primary+.icon-loading-dark,.primary .icon-loading-small,.primary+.icon-loading-small,.primary .icon-loading-small-dark,.primary+.icon-loading-small-dark {
  619. filter: var(--primary-invert-if-bright)
  620. }
  621. .loading:after, .loading-small:after, .icon-loading:after, .icon-loading-dark:after, .icon-loading-small:after, .icon-loading-small-dark:after {
  622. border: 2px solid rgba(150, 150, 150, 0.5);
  623. border-top-color: #646464;
  624. }
  625. .icon-loading-dark:after, .icon-loading-small-dark:after {
  626. border: 2px solid rgba(187, 187, 187, 0.5);
  627. border-top-color: #bbb;
  628. }
  629. .icon-loading-small:after, .icon-loading-small-dark:after {
  630. height: 16px;
  631. width: 16px;
  632. margin: -9px 0 0 -9px;
  633. }
  634. /* Css replaced elements don't have ::after nor ::before */
  635. img.icon-loading, object.icon-loading, video.icon-loading, button.icon-loading, textarea.icon-loading, input.icon-loading, select.icon-loading, div[contenteditable=true].icon-loading {
  636. background-image: url('../img/loading.gif');
  637. }
  638. img.icon-loading-dark, object.icon-loading-dark, video.icon-loading-dark, button.icon-loading-dark, textarea.icon-loading-dark, input.icon-loading-dark, select.icon-loading-dark, div[contenteditable=true].icon-loading-dark {
  639. background-image: url('../img/loading-dark.gif');
  640. }
  641. img.icon-loading-small, object.icon-loading-small, video.icon-loading-small, button.icon-loading-small, textarea.icon-loading-small, input.icon-loading-small, select.icon-loading-small, div[contenteditable=true].icon-loading-small {
  642. background-image: url('../img/loading-small.gif');
  643. }
  644. img.icon-loading-small-dark, object.icon-loading-small-dark, video.icon-loading-small-dark, button.icon-loading-small-dark, textarea.icon-loading-small-dark, input.icon-loading-small-dark, select.icon-loading-small-dark, div[contenteditable=true].icon-loading-small-dark {
  645. background-image: url('../img/loading-small-dark.gif');
  646. }
  647. @-webkit-keyframes rotate {
  648. from {
  649. -webkit-transform: rotate(0deg);
  650. transform: rotate(0deg);
  651. }
  652. to {
  653. -webkit-transform: rotate(360deg);
  654. transform: rotate(360deg);
  655. }
  656. }
  657. @keyframes rotate {
  658. from {
  659. -webkit-transform: rotate(0deg);
  660. transform: rotate(0deg);
  661. }
  662. to {
  663. -webkit-transform: rotate(360deg);
  664. transform: rotate(360deg);
  665. }
  666. }
  667. /* FOOTER */
  668. footer {
  669. min-height: 70px;
  670. margin-top: auto;
  671. }
  672. footer .info .entity-name {
  673. font-weight: bold;
  674. }
  675. .hidden {
  676. display: none;
  677. }
  678. /* keep the labels for screen readers but hide them since we use placeholders */
  679. label.infield,
  680. .hidden-visually {
  681. position: absolute;
  682. left: -10000px;
  683. top: -10000px;
  684. width: 1px;
  685. height: 1px;
  686. overflow: hidden;
  687. }
  688. a.legal {
  689. font-size: smaller;
  690. }
  691. .notecard.success {
  692. --note-background: rgba(var(--color-success-rgb), 0.1);
  693. --note-theme: var(--color-success);
  694. }
  695. .notecard.error {
  696. --note-background: rgba(var(--color-error-rgb), 0.1);
  697. --note-theme: var(--color-error);
  698. }
  699. .notecard.warning {
  700. --note-background: rgba(var(--color-warning-rgb), 0.1);
  701. --note-theme: var(--color-warning);
  702. }
  703. .notecard {
  704. color: var(--color-text-light);
  705. background-color: var(--note-background);
  706. border-left: 4px solid var(--note-theme);
  707. border-radius: var(--border-radius);
  708. margin: 1rem 0;
  709. margin-top: 1rem;
  710. padding: 1rem;
  711. text-align: left;
  712. }
  713. .notecard:last-child {
  714. margin-bottom: 0;
  715. }
  716. .notecard pre {
  717. background-color: var(--color-background-dark);
  718. margin-top: 1rem;
  719. padding: 1em 1.3em;
  720. border-radius: var(--border-radius);
  721. }
  722. .guest-box, .body-login-container {
  723. color: var(--color-main-text);
  724. background-color: var(--color-main-background);
  725. padding: 16px;
  726. border-radius: var(--border-radius-large);
  727. box-shadow: 0 0 10px var(--color-box-shadow);
  728. display: inline-block;
  729. }
  730. .guest-box.wide {
  731. display: block;
  732. text-align: left;
  733. }
  734. .guest-box fieldset {
  735. margin-top: 0;
  736. }
  737. .guest-box pre {
  738. overflow-x: scroll;
  739. }
  740. button.toggle-password {
  741. background-color: transparent;
  742. border-width: 0;
  743. height: 44px;
  744. }
  745. /** Utilities */
  746. .margin-top {
  747. margin-top: 1rem !important;
  748. }
  749. .text-left {
  750. text-align: left !important;
  751. }