login.css 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692
  1. /* Patternfly CSS places a "bg-login.jpg" as the background on this ".login-pf" class.
  2. This clashes with the "keycloak-bg.png' background defined on the body below.
  3. Therefore the Patternfly background must be set to none. */
  4. .login-pf {
  5. background: none;
  6. }
  7. .login-pf body {
  8. background: url("../img/keycloak-bg.png") no-repeat center center fixed;
  9. background-size: cover;
  10. height: 100%;
  11. }
  12. /*IE compatibility*/
  13. .pf-c-form-control {
  14. font-size: 14px;
  15. font-size: var(--pf-global--FontSize--sm);
  16. border-width: 1px;
  17. border-width: var(--pf-global--BorderWidth--sm);;
  18. border-color: #EDEDED #EDEDED #8A8D90 #EDEDED;
  19. border-color: var(--pf-global--BorderColor--300) var(--pf-global--BorderColor--300) var(--pf-global--BorderColor--200) var(--pf-global--BorderColor--300);
  20. background-color: #FFFFFF;
  21. background-color: var(--pf-global--BackgroundColor--100);
  22. height: 36px;
  23. height: calc(var(--pf-c-form-control--FontSize) * var(--pf-c-form-control--LineHeight) + var(--pf-c-form-control--BorderWidth) * 2 + var(--pf-c-form-control--PaddingTop) + var(--pf-c-form-control--PaddingBottom));
  24. padding: 5px 0.5rem;
  25. padding: var(--pf-c-form-control--PaddingTop) var(--pf-c-form-control--PaddingRight) var(--pf-c-form-control--PaddingBottom) var(--pf-c-form-control--PaddingLeft);
  26. }
  27. textarea.pf-c-form-control {
  28. height: auto;
  29. }
  30. .pf-c-form-control:hover, .pf-c-form-control:focus {
  31. border-bottom-color: #0066CC;
  32. border-bottom-color: var(--pf-global--primary-color--100);
  33. border-bottom-width: 2px;
  34. border-bottom-width: var(--pf-global--BorderWidth--md);
  35. }
  36. .pf-c-form-control[aria-invalid="true"] {
  37. border-bottom-color: #C9190B;
  38. border-bottom-color: var(--pf-global--danger-color--100);
  39. border-bottom-width: 2px;
  40. border-bottom-width: var(--pf-global--BorderWidth--md);
  41. }
  42. .pf-c-check__label, .pf-c-radio__label {
  43. font-size: 14px;
  44. font-size: var(--pf-global--FontSize--sm);
  45. }
  46. .pf-c-alert.pf-m-inline {
  47. margin-bottom: 0.5rem; /* default - IE compatibility */
  48. margin-bottom: var(--pf-global--spacer--sm);
  49. padding: 0.25rem;
  50. padding: var(--pf-global--spacer--xs);
  51. border: solid #ededed;
  52. border: solid var(--pf-global--BorderColor--300);
  53. border-width: 1px;
  54. border-width: var(--pf-c-alert--m-inline--BorderTopWidth) var(--pf-c-alert--m-inline--BorderRightWidth) var(--pf-c-alert--m-inline--BorderBottomWidth) var(--pf-c-alert--m-inline--BorderLeftWidth);
  55. display: -ms-flexbox;
  56. display: grid;
  57. -ms-grid-columns: max-content 1fr max-content;
  58. grid-template-columns:max-content 1fr max-content;
  59. grid-template-columns: var(--pf-c-alert--grid-template-columns);
  60. grid-template-rows: 1fr auto;
  61. grid-template-rows: var(--pf-c-alert--grid-template-rows);
  62. }
  63. .pf-c-alert.pf-m-inline::before {
  64. position: absolute;
  65. top: -1px;
  66. top: var(--pf-c-alert--m-inline--before--Top);
  67. bottom: -1px;
  68. bottom: var(--pf-c-alert--m-inline--before--Bottom);
  69. left: 0;
  70. width: 3px;
  71. width: var(--pf-c-alert--m-inline--before--Width);
  72. content: "";
  73. background-color: #FFFFFF;
  74. background-color: var(--pf-global--BackgroundColor--100);
  75. }
  76. .pf-c-alert.pf-m-inline.pf-m-success::before {
  77. background-color: #92D400;
  78. background-color: var(--pf-global--success-color--100);
  79. }
  80. .pf-c-alert.pf-m-inline.pf-m-danger::before {
  81. background-color: #C9190B;
  82. background-color: var(--pf-global--danger-color--100);
  83. }
  84. .pf-c-alert.pf-m-inline.pf-m-warning::before {
  85. background-color: #F0AB00;
  86. background-color: var(--pf-global--warning-color--100);
  87. }
  88. .pf-c-alert.pf-m-inline .pf-c-alert__icon {
  89. padding: 1rem 0.5rem 1rem 1rem;
  90. padding: var(--pf-c-alert--m-inline__icon--PaddingTop) var(--pf-c-alert--m-inline__icon--PaddingRight) var(--pf-c-alert--m-inline__icon--PaddingBottom) var(--pf-c-alert--m-inline__icon--PaddingLeft);
  91. font-size: 16px;
  92. font-size: var(--pf-c-alert--m-inline__icon--FontSize);
  93. }
  94. .pf-c-alert.pf-m-success .pf-c-alert__icon {
  95. color: #92D400;
  96. color: var(--pf-global--success-color--100);
  97. }
  98. .pf-c-alert.pf-m-success .pf-c-alert__title {
  99. color: #486B00;
  100. color: var(--pf-global--success-color--200);
  101. }
  102. .pf-c-alert.pf-m-danger .pf-c-alert__icon {
  103. color: #C9190B;
  104. color: var(--pf-global--danger-color--100);
  105. }
  106. .pf-c-alert.pf-m-danger .pf-c-alert__title {
  107. color: #A30000;
  108. color: var(--pf-global--danger-color--200);
  109. }
  110. .pf-c-alert.pf-m-warning .pf-c-alert__icon {
  111. color: #F0AB00;
  112. color: var(--pf-global--warning-color--100);
  113. }
  114. .pf-c-alert.pf-m-warning .pf-c-alert__title {
  115. color: #795600;
  116. color: var(--pf-global--warning-color--200);
  117. }
  118. .pf-c-alert__title {
  119. font-size: 14px; /* default - IE compatibility */
  120. font-size: var(--pf-global--FontSize--sm);
  121. padding: 5px 8px;
  122. padding: var(--pf-c-alert__title--PaddingTop) var(--pf-c-alert__title--PaddingRight) var(--pf-c-alert__title--PaddingBottom) var(--pf-c-alert__title--PaddingLeft);
  123. }
  124. .pf-c-button{
  125. padding:0.375rem 1rem;
  126. padding: var(--pf-global--spacer--form-element) var(--pf-global--spacer--md);
  127. }
  128. /* default - IE compatibility */
  129. .pf-m-primary {
  130. color: #FFFFFF;
  131. background-color: #0066CC;
  132. background-color: var(--pf-global--primary-color--100);
  133. }
  134. /* default - IE compatibility */
  135. .pf-m-primary:hover {
  136. background-color: #004080;
  137. background-color: var(--pf-global--primary-color--200);
  138. }
  139. /* default - IE compatibility */
  140. .pf-c-button.pf-m-control {
  141. border: solid 1px;
  142. border: solid var(--pf-global--BorderWidth--sm);
  143. border-color: rgba(230, 230, 230, 0.5);
  144. }
  145. /*End of IE compatibility*/
  146. h1#kc-page-title {
  147. margin-top: 10px;
  148. }
  149. #kc-locale ul {
  150. background-color: #FFF;
  151. background-color: var(--pf-global--BackgroundColor--100);
  152. display: none;
  153. top: 20px;
  154. min-width: 100px;
  155. padding: 0;
  156. }
  157. #kc-locale-dropdown{
  158. display: inline-block;
  159. }
  160. #kc-locale-dropdown:hover ul {
  161. display:block;
  162. }
  163. /* IE compatibility */
  164. #kc-locale-dropdown a {
  165. color: #6A6E73;
  166. color: var(--pf-global--Color--200);
  167. text-align: right;
  168. font-size: 14px;
  169. font-size: var(--pf-global--FontSize--sm);
  170. }
  171. /* IE compatibility */
  172. a#kc-current-locale-link::after {
  173. content: "\2c5";
  174. margin-left: 4px;
  175. margin-left: var(--pf-global--spacer--xs)
  176. }
  177. .login-pf .container {
  178. padding-top: 40px;
  179. }
  180. .login-pf a:hover {
  181. color: #0099d3;
  182. }
  183. #kc-logo {
  184. width: 100%;
  185. }
  186. div.kc-logo-text {
  187. background-image: url(../img/keycloak-logo-text.png);
  188. background-repeat: no-repeat;
  189. height: 63px;
  190. width: 300px;
  191. margin: 0 auto;
  192. }
  193. div.kc-logo-text span {
  194. display: none;
  195. }
  196. #kc-header {
  197. color: #ededed;
  198. overflow: visible;
  199. white-space: nowrap;
  200. }
  201. #kc-header-wrapper {
  202. font-size: 29px;
  203. text-transform: uppercase;
  204. letter-spacing: 3px;
  205. line-height: 1.2em;
  206. padding: 62px 10px 20px;
  207. white-space: normal;
  208. }
  209. #kc-content {
  210. width: 100%;
  211. }
  212. #kc-attempted-username {
  213. font-size: 20px;
  214. font-family: inherit;
  215. font-weight: normal;
  216. padding-right: 10px;
  217. }
  218. #kc-username {
  219. text-align: center;
  220. margin-bottom:-10px;
  221. }
  222. #kc-webauthn-settings-form {
  223. padding-top: 8px;
  224. }
  225. #kc-content-wrapper {
  226. margin-top: 20px;
  227. }
  228. #kc-form-wrapper {
  229. margin-top: 10px;
  230. }
  231. #kc-info {
  232. margin: 20px -40px -30px;
  233. }
  234. #kc-info-wrapper {
  235. font-size: 13px;
  236. padding: 15px 35px;
  237. background-color: #F0F0F0;
  238. }
  239. #kc-form-options span {
  240. display: block;
  241. }
  242. #kc-form-options .checkbox {
  243. margin-top: 0;
  244. color: #72767b;
  245. }
  246. #kc-terms-text {
  247. margin-bottom: 20px;
  248. }
  249. #kc-registration {
  250. margin-bottom: 0;
  251. }
  252. /* TOTP */
  253. .subtitle {
  254. text-align: right;
  255. margin-top: 30px;
  256. color: #909090;
  257. }
  258. .required {
  259. color: #A30000; /* default - IE compatibility */
  260. color: var(--pf-global--danger-color--200);
  261. }
  262. ol#kc-totp-settings {
  263. margin: 0;
  264. padding-left: 20px;
  265. }
  266. ul#kc-totp-supported-apps {
  267. margin-bottom: 10px;
  268. }
  269. #kc-totp-secret-qr-code {
  270. max-width:150px;
  271. max-height:150px;
  272. }
  273. #kc-totp-secret-key {
  274. background-color: #fff;
  275. color: #333333;
  276. font-size: 16px;
  277. padding: 10px 0;
  278. }
  279. /* OAuth */
  280. #kc-oauth h3 {
  281. margin-top: 0;
  282. }
  283. #kc-oauth ul {
  284. list-style: none;
  285. padding: 0;
  286. margin: 0;
  287. }
  288. #kc-oauth ul li {
  289. border-top: 1px solid rgba(255, 255, 255, 0.1);
  290. font-size: 12px;
  291. padding: 10px 0;
  292. }
  293. #kc-oauth ul li:first-of-type {
  294. border-top: 0;
  295. }
  296. #kc-oauth .kc-role {
  297. display: inline-block;
  298. width: 50%;
  299. }
  300. /* Code */
  301. #kc-code textarea {
  302. width: 100%;
  303. height: 8em;
  304. }
  305. /* Social */
  306. .kc-social-links {
  307. margin-top: 20px;
  308. }
  309. .kc-social-provider-logo {
  310. font-size: 23px;
  311. width: 30px;
  312. height: 25px;
  313. float: left;
  314. }
  315. .kc-social-gray {
  316. color: #737679; /* default - IE compatibility */
  317. color: var(--pf-global--Color--200);
  318. }
  319. .kc-social-item {
  320. margin-bottom: 0.5rem; /* default - IE compatibility */
  321. margin-bottom: var(--pf-global--spacer--sm);
  322. font-size: 15px;
  323. text-align: center;
  324. }
  325. .kc-social-provider-name {
  326. position: relative;
  327. top: 3px;
  328. }
  329. .kc-social-icon-text {
  330. left: -15px;
  331. }
  332. .kc-social-grid {
  333. display:grid;
  334. grid-column-gap: 10px;
  335. grid-row-gap: 5px;
  336. grid-column-end: span 6;
  337. --pf-l-grid__item--GridColumnEnd: span 6;
  338. }
  339. .kc-social-grid .kc-social-icon-text {
  340. left: -10px;
  341. }
  342. .kc-login-tooltip {
  343. position: relative;
  344. display: inline-block;
  345. }
  346. .kc-social-section {
  347. text-align: center;
  348. }
  349. .kc-social-section hr{
  350. margin-bottom: 10px
  351. }
  352. .kc-login-tooltip .kc-tooltip-text{
  353. top:-3px;
  354. left:160%;
  355. background-color: black;
  356. visibility: hidden;
  357. color: #fff;
  358. min-width:130px;
  359. text-align: center;
  360. border-radius: 2px;
  361. box-shadow:0 1px 8px rgba(0,0,0,0.6);
  362. padding: 5px;
  363. position: absolute;
  364. opacity:0;
  365. transition:opacity 0.5s;
  366. }
  367. /* Show tooltip */
  368. .kc-login-tooltip:hover .kc-tooltip-text {
  369. visibility: visible;
  370. opacity:0.7;
  371. }
  372. /* Arrow for tooltip */
  373. .kc-login-tooltip .kc-tooltip-text::after {
  374. content: " ";
  375. position: absolute;
  376. top: 15px;
  377. right: 100%;
  378. margin-top: -5px;
  379. border-width: 5px;
  380. border-style: solid;
  381. border-color: transparent black transparent transparent;
  382. }
  383. @media (min-width: 768px) {
  384. #kc-container-wrapper {
  385. position: absolute;
  386. width: 100%;
  387. }
  388. .login-pf .container {
  389. padding-right: 80px;
  390. }
  391. #kc-locale {
  392. position: relative;
  393. text-align: right;
  394. z-index: 9999;
  395. }
  396. }
  397. @media (max-width: 767px) {
  398. .login-pf body {
  399. background: white;
  400. }
  401. #kc-header {
  402. padding-left: 15px;
  403. padding-right: 15px;
  404. float: none;
  405. text-align: left;
  406. }
  407. #kc-header-wrapper {
  408. font-size: 16px;
  409. font-weight: bold;
  410. padding: 20px 60px 0 0;
  411. color: #72767b;
  412. letter-spacing: 0;
  413. }
  414. div.kc-logo-text {
  415. margin: 0;
  416. width: 150px;
  417. height: 32px;
  418. background-size: 100%;
  419. }
  420. #kc-form {
  421. float: none;
  422. }
  423. #kc-info-wrapper {
  424. border-top: 1px solid rgba(255, 255, 255, 0.1);
  425. background-color: transparent;
  426. }
  427. .login-pf .container {
  428. padding-top: 15px;
  429. padding-bottom: 15px;
  430. }
  431. #kc-locale {
  432. position: absolute;
  433. width: 200px;
  434. top: 20px;
  435. right: 20px;
  436. text-align: right;
  437. z-index: 9999;
  438. }
  439. }
  440. @media (min-height: 646px) {
  441. #kc-container-wrapper {
  442. bottom: 12%;
  443. }
  444. }
  445. @media (max-height: 645px) {
  446. #kc-container-wrapper {
  447. padding-top: 50px;
  448. top: 20%;
  449. }
  450. }
  451. .card-pf form.form-actions .btn {
  452. float: right;
  453. margin-left: 10px;
  454. }
  455. #kc-form-buttons {
  456. margin-top: 20px;
  457. }
  458. .login-pf-page .login-pf-brand {
  459. margin-top: 20px;
  460. max-width: 360px;
  461. width: 40%;
  462. }
  463. /* Internet Explorer 11 compatibility workaround for select-authenticator screen */
  464. @media all and (-ms-high-contrast: none),
  465. (-ms-high-contrast: active) {
  466. .select-auth-box-parent {
  467. border-top: 1px solid #f0f0f0;
  468. padding-top: 1rem;
  469. padding-bottom: 1rem;
  470. cursor: pointer;
  471. }
  472. .select-auth-box-headline {
  473. font-size: 16px;
  474. color: #06c;
  475. font-weight: bold;
  476. }
  477. .select-auth-box-desc {
  478. font-size: 14px;
  479. }
  480. .pf-l-stack {
  481. flex-basis: 100%;
  482. }
  483. }
  484. /* End of IE11 workaround for select-authenticator screen */
  485. .select-auth-box-arrow{
  486. display: flex;
  487. align-items: center;
  488. margin-right: 2rem;
  489. }
  490. .select-auth-box-icon{
  491. display: flex;
  492. flex: 0 0 2em;
  493. justify-content: center;
  494. margin-right: 1rem;
  495. margin-left: 3rem;
  496. }
  497. .select-auth-box-parent{
  498. border-top: 1px solid var(--pf-global--palette--black-200);
  499. padding-top: 1rem;
  500. padding-bottom: 1rem;
  501. cursor: pointer;
  502. }
  503. .select-auth-box-parent:hover{
  504. background-color: #f7f8f8;
  505. }
  506. .select-auth-container {
  507. padding-bottom: 0px !important;
  508. }
  509. .select-auth-box-headline {
  510. font-size: var(--pf-global--FontSize--md);
  511. color: var(--pf-global--primary-color--100);
  512. font-weight: bold;
  513. }
  514. .select-auth-box-desc {
  515. font-size: var(--pf-global--FontSize--sm);
  516. }
  517. .card-pf {
  518. margin: 0 auto;
  519. box-shadow: var(--pf-global--BoxShadow--lg);
  520. padding: 0 20px;
  521. max-width: 500px;
  522. border-top: 4px solid;
  523. border-color: #0066CC; /* default - IE compatibility */
  524. border-color: var(--pf-global--primary-color--100);
  525. }
  526. /*phone*/
  527. @media (max-width: 767px) {
  528. .login-pf-page .card-pf {
  529. max-width: none;
  530. margin-left: 0;
  531. margin-right: 0;
  532. padding-top: 0;
  533. border-top: 0;
  534. box-shadow: 0 0;
  535. }
  536. .kc-social-grid {
  537. grid-column-end: 12;
  538. --pf-l-grid__item--GridColumnEnd: span 12;
  539. }
  540. .kc-social-grid .kc-social-icon-text {
  541. left: -15px;
  542. }
  543. }
  544. .login-pf-page .login-pf-signup {
  545. font-size: 15px;
  546. color: #72767b;
  547. }
  548. #kc-content-wrapper .row {
  549. margin-left: 0;
  550. margin-right: 0;
  551. }
  552. .login-pf-page.login-pf-page-accounts {
  553. margin-left: auto;
  554. margin-right: auto;
  555. }
  556. .login-pf-page .btn-primary {
  557. margin-top: 0;
  558. }
  559. .login-pf-page .list-view-pf .list-group-item {
  560. border-bottom: 1px solid #ededed;
  561. }
  562. .login-pf-page .list-view-pf-description {
  563. width: 100%;
  564. }
  565. #kc-form-login div.form-group:last-of-type,
  566. #kc-register-form div.form-group:last-of-type,
  567. #kc-update-profile-form div.form-group:last-of-type {
  568. margin-bottom: 0px;
  569. }
  570. .no-bottom-margin {
  571. margin-bottom: 0;
  572. }
  573. #kc-back {
  574. margin-top: 5px;
  575. }