guest.scss 19 KB

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