guest.scss 19 KB

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