From e68a7ca7c6c2cfadd018287bbb93c7abb180450b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andrej=20Rama=C5=A1euski?= <andrej@x2.cz>
Date: Wed, 21 Feb 2024 00:30:27 +0100
Subject: [PATCH] Minimizace zmen, kompatibilita s v26

---
 README.md                             |   1 -
 login/messages/messages_cs.properties | 263 +-------------------------
 login/register.ftl                    | 143 --------------
 login/resources/css/pirati.css        |   9 -
 login/theme.properties                |  54 +++++-
 5 files changed, 50 insertions(+), 420 deletions(-)
 delete mode 100644 README.md
 delete mode 100644 login/register.ftl

diff --git a/README.md b/README.md
deleted file mode 100644
index 5696a0e..0000000
--- a/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Zdroj: https://github.com/keycloak/keycloak/tree/12.0.4/themes/src/main/resources/theme/keycloak
diff --git a/login/messages/messages_cs.properties b/login/messages/messages_cs.properties
index 5db8eef..1ecadcd 100644
--- a/login/messages/messages_cs.properties
+++ b/login/messages/messages_cs.properties
@@ -1,261 +1,2 @@
-# encoding: utf-8
-doLogIn=Přihlásit se
-doRegister=Registrovat se
-doCancel=Zrušit
-doSubmit=Odeslat
-doYes=Ano
-doNo=Ne
-doContinue=PokraÄŤovat
-doIgnore=Ignorovat
-doAccept=Potvrdit
-doDecline=ZamĂ­tnout
-doForgotPassword=Zapomenuté heslo?
-doClickHere=Klikněte zde
-doImpersonate=Zosobnit
-kerberosNotConfigured=Kerberos není nakonfigurován
-kerberosNotConfiguredTitle=Kerberos není nakonfigurován
-bypassKerberosDetail=Buď nejste přihlášeni přes Kerberos nebo váš prohlížeč není nastaven pro přihlášení Kerberos. Klepnutím na tlačítko pokračujte k přihlášení jinými způsoby
-kerberosNotSetUp=Kerberos není nastaven. Nemůžete se přihlásit.
-registerTitle=Registrovat se
-registerWithTitle=Registrovat {0}
-registerWithTitleHtml={0}
-loginAccountTitle=Přihlásit se
-loginTitle=Přihlásit do {0}
-loginTitleHtml={0}
-impersonateTitle={0} Zosobnit uĹľivatele
-impersonateTitleHtml=<strong>{0}</strong> Zosobnit uĹľivatele
-realmChoice=Realm
-unknownUser=Neznámý uživatel
-loginTotpTitle=Nastavení autentizátoru OTP
-loginProfileTitle=Aktualizovat informace o účtu
-loginTimeout=Přihlašování trvalo příliš dlouho. Přihlašovací proces začíná od začátku.
-oauthGrantTitle=Poskytnout přístup
-oauthGrantTitleHtml={0}
-errorTitle=Je nám líto ...
-errorTitleHtml=<strong>Omlouváme</strong> se ...
-emailVerifyTitle=Ověření e-mailu
-emailForgotTitle=Zapomněli jste heslo?
-updatePasswordTitle=Aktualizace hesla
-codeSuccessTitle=Kód úspěchu 
-codeErrorTitle=KĂłd chyby\: {0}
-
-termsTitle=SmluvnĂ­ podmĂ­nky
-termsTitleHtml=SmluvnĂ­ podmĂ­nky
-termsText=<p>Smluvní podmínky, které se mají definovat</p>
-
-recaptchaFailed=Neplatné Recaptcha
-recaptchaNotConfigured=Recaptcha je vyžadována, ale není nakonfigurována
-consentDenied=Souhlas byl zamĂ­tnut.
-
-noAccount=NovĂ˝ uĹľivatel?
-username=Přihlašovací jméno
-usernameOrEmail=Přihlašovací jméno nebo e-mail
-firstName=Křestní jméno
-givenName=Křestní jména
-fullName=Celé jméno
-lastName=Příjmení
-familyName=Příjmení
-email=E-mail
-password=Heslo
-passwordConfirm=Potvrdit heslo
-passwordNew=Nové heslo
-passwordNewConfirm=Potvrdit nové heslo
-rememberMe=Pamatovat si mÄ›
-authenticatorCode=Jednorázový kód
-address=Adresa
-street=Ulice
-locality=Město
-region=Kraj
-postal_code=PSÄŚ
-country=Stát
-emailVerified=E-mail ověřen
-gssDelegationCredential=GSS Delegované Oprávnění
-
-loginTotpStep1=Nainstalujte do mobilu jednu z následujících aplikací
-loginTotpStep2=Otevřete aplikaci a naskenujte čárový kód
-loginTotpStep3=Zadejte jednorázový kód poskytnutý aplikací a klepnutím na tlačítko Odeslat dokončete nastavení
-loginTotpManualStep2=Otevřete aplikaci a zadejte klíč
-loginTotpManualStep3=Použijte následující hodnoty konfigurace, pokud aplikace umožňuje jejich nastavení
-loginTotpUnableToScan=Nelze skenovat?
-loginTotpScanBarcode=Skenovat čárový kód?
-loginTotpOneTime=Jednorázový kód
-loginTotpType=Typ
-loginTotpAlgorithm=Algoritmus
-loginTotpDigits=ÄŚĂ­slice
-loginTotpInterval=Interval
-loginTotpCounter=PoÄŤĂ­tadlo
-
-loginTotp.totp=ZaloĹľeno na ÄŤase
-loginTotp.hotp=ZaloĹľeno na poÄŤĂ­tadle
-
-
-oauthGrantRequest=Poskytujete tyto přístupová oprávnění?
-inResource=v
-
-emailVerifyInstruction1=Byl Vám zaslán e-mail s pokyny k ověření vaší e-mailové adresy.
-emailVerifyInstruction2=Nezískali jste v e-mailu ověřovací kód?
-emailVerifyInstruction3=znovu odeslat e-mail.
-
-emailLinkIdpTitle=Odkaz {0}
-emailLinkIdp1=Byl vám zaslán e-mail s pokyny k propojení {0} účtu {1} s vaším účtem {2}.
-emailLinkIdp2=Nezískali jste v e-mailu ověřovací kód?
-emailLinkIdp3=znovu odeslat e-mail.
-emailLinkIdp4=Pokud jste již ověřili e-mail v jiném prohlížeči
-emailLinkIdp5=pokraÄŤovat.
-
-backToLogin=&laquo; Zpět k přihlášení
-
-emailInstruction=Zadejte své uživatelské jméno nebo e-mailovou adresu a my vám zašleme pokyny k vytvoření nového hesla.
-
-copyCodeInstruction=Zkopírujte tento kód a vložte jej do své aplikace:
-
-pageExpiredTitle=Vypršela platnost stránky
-pageExpiredMsg1=Pro restart procesu přihlášení
-pageExpiredMsg2=Pokračovat v procesu přihlášení
-
-personalInfo=OsobnĂ­ Ăşdaje:
-role_admin=Administrátor realmu
-role_realm-admin=Administrátor realmu
-role_create-realm=Vytvořit realm
-role_create-client=Vytvořit klienta
-role_view-realm=Zobrazit realm
-role_view-users=Zobrazit uĹľivatele
-role_view-applications=Zobrazit aplikace
-role_view-clients=Zobrazit klienty
-role_view-events=Zobrazit události
-role_view-identity-providers=Zobrazit poskytovatele identity
-role_manage-realm=Spravovat realm
-role_manage-users=Spravovat uĹľivatele
-role_manage-applications=Spravovat aplikace
-role_manage-identity-providers=Spravovat poskytovatele identity
-role_manage-clients=Spravovat klienty
-role_manage-events=Spravovat události
-role_view-profile=Zobrazit profil
-role_manage-account=Spravovat účet
-role_manage-account-links=Spravovat odkazy na účet
-role_read-token=ÄŚĂ­st token
-role_offline-access=Přístup offline
-client_account=Účet
-client_security-admin-console=Security Admin Console
-client_admin-cli=Admin CLI
-client_realm-management=Spravovat Realm
-client_broker=Broker
-
-invalidUserMessage=Nesprávné jméno nebo heslo.
-invalidEmailMessage=Nesprávný e-mail.
-accountDisabledMessage=Účet je neplatný, kontaktujte administrátora.
-accountTemporarilyDisabledMessage=Účet je dočasně deaktivován, kontaktujte administrátora nebo zkuste později.
-expiredCodeMessage=Platnost přihlášení vypršela. Přihlašte se znovu.
-expiredActionMessage=Akce vypršela. Pokračujte přihlášením.
-expiredActionTokenNoSessionMessage=Akce vypršela.
-expiredActionTokenSessionExistsMessage=Akce vypršela. Začněte znovu
-
-missingFirstNameMessage=Zadejte prosím jméno.
-missingLastNameMessage=Zadejte prosím příjmení.
-missingEmailMessage=Zadejte prosĂ­m e-mail.
-missingUsernameMessage=Zadejte prosím uživatelské jméno.
-missingPasswordMessage=Zadejte prosĂ­m heslo.
-missingTotpMessage=Zadejte prosím kód ověřovatele.
-notMatchPasswordMessage=Hesla se neshodujĂ­.
-
-invalidPasswordExistingMessage=Neplatné existující heslo.
-invalidPasswordBlacklistedMessage=Neplatné heslo: heslo je na černé listině.
-invalidPasswordConfirmMessage=PotvrzenĂ­ hesla se neshoduje.
-invalidTotpMessage=Neplatný kód ověřování.
-
-usernameExistsMessage=Uživatelské jméno již existuje.
-emailExistsMessage=Email jiĹľ existuje.
-
-federatedIdentityExistsMessage=Uživatel s {0} {1} již existuje. Přihlaste se ke správě účtu a propojte účet.
-
-confirmLinkIdpTitle=Účet již existuje
-federatedIdentityConfirmLinkMessage=UĹľivatel s {0} {1} jiĹľ existuje. Jak chcete pokraÄŤovat?
-federatedIdentityConfirmReauthenticateMessage=Ověřte jako {0} k propojení účtu {1}
-confirmLinkIdpReviewProfile=Zkontrolujte profil
-confirmLinkIdpContinue=Přidat do existujícího účtu
-
-configureTotpMessage=Chcete-li aktivovat účet, musíte nastavit službu Mobile Authenticator.
-updateProfileMessage=Pro aktivaci účtu potřebujete aktualizovat svůj uživatelský profil.
-updatePasswordMessage=Pro aktivaci účtu musíte provést aktualizaci hesla.
-resetPasswordMessage=Je třeba změnit heslo.
-verifyEmailMessage=Pro aktivaci účtu potřebujete ověřit vaši e-mailovou adresu.
-linkIdpMessage=Potřebujete-li ověřit vaši e-mailovou adresu, propojte svůj účet s {0}.
-
-emailSentMessage=Měli byste brzy obdržet e-mail s dalšími pokyny.
-emailSendErrorMessage=Nepodařilo se odeslat e-mail, zkuste to prosím později.
-
-accountUpdatedMessage=Váš účet byl aktualizován.
-accountPasswordUpdatedMessage=Vaše heslo bylo aktualizováno.
-
-noAccessMessage=Žádný přístup
-
-invalidPasswordMinLengthMessage=Neplatné heslo: minimální délka {0}.
-invalidPasswordMinDigitsMessage=Neplatné heslo: musí obsahovat nejméně {0} číslic.
-invalidPasswordMinLowerCaseCharsMessage=Neplatné heslo: musí obsahovat minimálně {0} malé znaky.
-invalidPasswordMinUpperCaseCharsMessage=Neplatné heslo: musí obsahovat nejméně {0} velká písmena.
-invalidPasswordMinSpecialCharsMessage=Neplatné heslo: musí obsahovat nejméně {0} speciální znaky.
-invalidPasswordNotUsernameMessage=Neplatné heslo: nesmí být totožné s uživatelským jménem.
-invalidPasswordRegexPatternMessage=Neplatné heslo: neshoduje se vzorem regulérního výrazu.
-invalidPasswordHistoryMessage=Neplatné heslo: Nesmí se rovnat žádnému z posledních {0} hesel.
-invalidPasswordGenericMessage=Neplatné heslo: nové heslo neodpovídá pravidlům hesla.
-
-failedToProcessResponseMessage=Nepodařilo se zpracovat odpověď
-httpsRequiredMessage=Požadováno HTTPS
-realmNotEnabledMessage=Realm nenĂ­ povolen
-invalidRequestMessage=Neplatná žádost
-failedLogout=Odhlášení se nezdařilo
-unknownLoginRequesterMessage=Neznámý žadatel o přihlášení
-loginRequesterNotEnabledMessage=Žadatel o přihlášení není povolen
-bearerOnlyMessage=Aplikace bearer-only nemohou iniciovat přihlašování pomocí prohlížeče
-standardFlowDisabledMessage=Klient nesmí iniciovat přihlašování prohlížeče s daným typem odpovědi. Standardní tok je pro klienta zakázán.
-implicitFlowDisabledMessage=Klient nesmí iniciovat přihlašování prohlížeče s daným typem odpovědi. Implicitní tok je pro klienta zakázán.
-invalidRedirectUriMessage=Neplatné redirect uri
-unsupportedNameIdFormatMessage=NepodporovanĂ˝ NameIDFormat
-invalidRequesterMessage=NeplatnĂ˝ Ĺľadatel
-registrationNotAllowedMessage=Registrace nenĂ­ povolena
-resetCredentialNotAllowedMessage=Reset Credential nenĂ­ povoleno
-
-permissionNotApprovedMessage=Oprávnění nebylo schváleno.
-noRelayStateInResponseMessage=Neexistuje relay state relé v odpovědi od poskytovatele totožnosti.
-insufficientPermissionMessage=Nedostatečná oprávnění k propojení identit.
-couldNotProceedWithAuthenticationRequestMessage=Nemohu pokračovat s žádostí o ověření poskytovateli totožnosti.
-couldNotObtainTokenMessage=Nelze zĂ­skat token od poskytovatele totoĹľnosti.
-unexpectedErrorRetrievingTokenMessage=Neočekávaná chyba při načítání tokenu od poskytovatele identity.
-unexpectedErrorHandlingResponseMessage=Neočekávaná chyba při zpracování odpovědi od poskytovatele identity.
-identityProviderAuthenticationFailedMessage=Ověření selhalo. Nelze ověřit s poskytovatelem identity.
-identityProviderDifferentUserMessage=Ověřeno jako {0}, ale mělo by být ověřeno jako {1}
-couldNotSendAuthenticationRequestMessage=Nelze odeslat žádost o ověření poskytovateli totožnosti.
-unexpectedErrorHandlingRequestMessage=Neočekávaná chyba při zpracování požadavku na ověření poskytovateli totožnosti.
-invalidAccessCodeMessage=Neplatný přístupový kód.
-sessionNotActiveMessage=Session nenĂ­ aktivnĂ­.
-invalidCodeMessage=Došlo k chybě, přihlaste se znovu prostřednictvím své aplikace.
-identityProviderUnexpectedErrorMessage=Neočekávaná chyba při ověřování s poskytovatelem identity
-identityProviderNotFoundMessage=Nelze najít poskytovatele identity s identifikátorem.
-identityProviderLinkSuccess=Úspěšně jste ověřili svůj e-mail. Vraťte se prosím zpět do původního prohlížeče a pokračujte tam s přihlašovacími údaji.
-staleCodeMessage=Tato stránka již není platná. Vraťte se zpět do aplikace a přihlaste se znovu
-realmSupportsNoCredentialsMessage=Realm nepodporuje žádný typ pověření.
-identityProviderNotUniqueMessage=Oblast podporuje více poskytovatelů totožnosti. Nelze určit, s jakým zprostředkovatelem totožnosti se má ověřit.
-emailVerifiedMessage=Vaše e-mailová adresa byla ověřena.
-staleEmailVerificationLink=Odkaz, na který jste klikli, je starý starý odkaz a již není platný. Možná jste již ověřili svůj e-mail?
-identityProviderAlreadyLinkedMessage=Federovaná identita vrácená {0} je již propojena s jiným uživatelem.
-confirmAccountLinking=Potvrďte propojení účtu {0} poskytovatele totožnosti {1} s vaším účtem.
-confirmEmailAddressVerification=Potvrďte platnost e-mailové adresy {0}.
-confirmExecutionOfActions=Proveďte následující akce
-
-backToApplication=&laquo; Zpět na aplikaci
-missingParameterMessage=Chybějící parametry \: {0}
-clientNotFoundMessage=Klient nebyl nalezen.
-clientDisabledMessage=Klient byl zneplatněn.
-invalidParameterMessage=NeplatnĂ˝ parametr : {0}
-alreadyLoggedIn=Jste již přihlášeni.
-differentUserAuthenticated=Jste již v této relaci ověřeni jako jiný uživatel '' {0} ''. Nejdříve se odhlašte.
-brokerLinkingSessionExpired=Požadované propojení účtu brokerů, ale aktuální relace již není platná.
-proceedWithAction=&raquo; Klikněte zde pro pokračování
-
-requiredAction.CONFIGURE_TOTP=Konfigurovat OTP
-requiredAction.terms_and_conditions=SmluvnĂ­ podmĂ­nky
-requiredAction.UPDATE_PASSWORD=Aktualizace hesla
-requiredAction.UPDATE_PROFILE=Aktualizovat profil
-requiredAction.VERIFY_EMAIL=Ověřit e-mail
-
-p3pPolicy=CP="Toto nenĂ­ politika P3P!"
+usernameOrEmail=Přihlašovací jméno nebo registrační e-mail
+emailInstruction=Zadejte své uživatelské jméno (většinou ve formátu jmeno.prijmeni) nebo registráční e-mailovou adresu (ne alias @pirati.cz) a my vám zašleme pokyny k vytvoření nového hesla. 
diff --git a/login/register.ftl b/login/register.ftl
deleted file mode 100644
index 596d5d0..0000000
--- a/login/register.ftl
+++ /dev/null
@@ -1,143 +0,0 @@
-<#import "template.ftl" as layout>
-<@layout.registrationLayout displayMessage=!messagesPerField.existsError('firstName','lastName','email','username','password','password-confirm'); section>
-    <#if section = "header">
-        ${msg("registerTitle")}
-    <#elseif section = "form">
-        <form id="kc-register-form" class="${properties.kcFormClass!}" action="${url.registrationAction}" method="post">
-            <div class="${properties.kcFormGroupClass!}">
-                <div class="${properties.kcLabelWrapperClass!}">
-                    <label for="firstName" class="${properties.kcLabelClass!}">${msg("firstName")}</label>
-                </div>
-                <div class="${properties.kcInputWrapperClass!}">
-                    <input type="text" id="firstName" class="${properties.kcInputClass!}" name="firstName"
-                           value="${(register.formData.firstName!'')}"
-                           aria-invalid="<#if messagesPerField.existsError('firstName')>true</#if>"
-                    />
-
-                    <#if messagesPerField.existsError('firstName')>
-                        <span id="input-error-firstname" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
-                            ${kcSanitize(messagesPerField.get('firstName'))?no_esc}
-                        </span>
-                    </#if>
-                </div>
-            </div>
-
-            <div class="${properties.kcFormGroupClass!}">
-                <div class="${properties.kcLabelWrapperClass!}">
-                    <label for="lastName" class="${properties.kcLabelClass!}">${msg("lastName")}</label>
-                </div>
-                <div class="${properties.kcInputWrapperClass!}">
-                    <input type="text" id="lastName" class="${properties.kcInputClass!}" name="lastName"
-                           value="${(register.formData.lastName!'')}"
-                           aria-invalid="<#if messagesPerField.existsError('lastName')>true</#if>"
-                    />
-
-                    <#if messagesPerField.existsError('lastName')>
-                        <span id="input-error-lastname" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
-                            ${kcSanitize(messagesPerField.get('lastName'))?no_esc}
-                        </span>
-                    </#if>
-                </div>
-            </div>
-
-            <div class="${properties.kcFormGroupClass!}">
-                <div class="${properties.kcLabelWrapperClass!}">
-                    <label for="email" class="${properties.kcLabelClass!}">${msg("email")}</label>
-                </div>
-                <div class="${properties.kcInputWrapperClass!}">
-                    <input type="text" id="email" class="${properties.kcInputClass!}" name="email"
-                           value="${(register.formData.email!'')}" autocomplete="email" pattern=".+@(?!pirati\.cz).+"
-                           aria-invalid="<#if messagesPerField.existsError('email')>true</#if>"
-                    />
-
-                    <#if messagesPerField.existsError('email')>
-                        <span id="input-error-email" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
-                            ${kcSanitize(messagesPerField.get('email'))?no_esc}
-                        </span>
-                    </#if>
-                </div>
-            </div>
-
-            <#if !realm.registrationEmailAsUsername>
-                <div class="${properties.kcFormGroupClass!}">
-                    <div class="${properties.kcLabelWrapperClass!}">
-                        <label for="username" class="${properties.kcLabelClass!}">${msg("username")}</label>
-                    </div>
-                    <div class="${properties.kcInputWrapperClass!}">
-                        <input type="text" id="username" class="${properties.kcInputClass!}" name="username"
-                               value="${(register.formData.username!'')}" autocomplete="username" pattern="[\w\x2d\x2e]{3,30}"
-                               aria-invalid="<#if messagesPerField.existsError('username')>true</#if>"
-                        />
-                    povoleny jsou písmena, čísla, tečka a podtržítko
-
-                        <#if messagesPerField.existsError('username')>
-                            <span id="input-error-username" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
-                                ${kcSanitize(messagesPerField.get('username'))?no_esc}
-                            </span>
-                        </#if>
-                    </div>
-                </div>
-            </#if>
-
-            <#if passwordRequired??>
-                <div class="${properties.kcFormGroupClass!}">
-                    <div class="${properties.kcLabelWrapperClass!}">
-                        <label for="password" class="${properties.kcLabelClass!}">${msg("password")}</label>
-                    </div>
-                    <div class="${properties.kcInputWrapperClass!}">
-                        <input type="password" id="password" class="${properties.kcInputClass!}" name="password"
-                               autocomplete="new-password"
-                               aria-invalid="<#if messagesPerField.existsError('password','password-confirm')>true</#if>"
-                        />
-            nejméně 10 znaků, alespoň jedno velké, jedno malé písmeno a alespoň jedna číslice
-
-                        <#if messagesPerField.existsError('password')>
-                            <span id="input-error-password" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
-                                ${kcSanitize(messagesPerField.get('password'))?no_esc}
-                            </span>
-                        </#if>
-                    </div>
-                </div>
-
-                <div class="${properties.kcFormGroupClass!}">
-                    <div class="${properties.kcLabelWrapperClass!}">
-                        <label for="password-confirm"
-                               class="${properties.kcLabelClass!}">${msg("passwordConfirm")}</label>
-                    </div>
-                    <div class="${properties.kcInputWrapperClass!}">
-                        <input type="password" id="password-confirm" class="${properties.kcInputClass!}"
-                               name="password-confirm"
-                               aria-invalid="<#if messagesPerField.existsError('password-confirm')>true</#if>"
-                        />
-
-                        <#if messagesPerField.existsError('password-confirm')>
-                            <span id="input-error-password-confirm" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
-                                ${kcSanitize(messagesPerField.get('password-confirm'))?no_esc}
-                            </span>
-                        </#if>
-                    </div>
-                </div>
-            </#if>
-
-            <#if recaptchaRequired??>
-                <div class="form-group">
-                    <div class="${properties.kcInputWrapperClass!}">
-                        <div class="g-recaptcha" data-size="compact" data-sitekey="${recaptchaSiteKey}"></div>
-                    </div>
-                </div>
-            </#if>
-
-            <div class="${properties.kcFormGroupClass!}">
-                <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
-                    <div class="${properties.kcFormOptionsWrapperClass!}">
-                        <span><a href="${url.loginUrl}">${kcSanitize(msg("backToLogin"))?no_esc}</a></span>
-                    </div>
-                </div>
-
-                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
-                    <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doRegister")}"/>
-                </div>
-            </div>
-        </form>
-    </#if>
-</@layout.registrationLayout>
diff --git a/login/resources/css/pirati.css b/login/resources/css/pirati.css
index c29ddf2..f94fb8b 100644
--- a/login/resources/css/pirati.css
+++ b/login/resources/css/pirati.css
@@ -1,19 +1,10 @@
 .login-pf body {
     background: #000;
-    height: 100%;
-}
-
-.login-pf .kc-content {
-    max-width: 100%;
-    overflow: hidden;
 }
 
 div.kc-logo-text {
     background-image: url(../img/piratska-identita.svg);
-    background-repeat: no-repeat;
     background-size: 100% 100%;
     height: 66px;
     width: 471px;
-    margin: 0 auto;
-    max-width: 100%;
 }
diff --git a/login/theme.properties b/login/theme.properties
index 83d229c..9816bf3 100644
--- a/login/theme.properties
+++ b/login/theme.properties
@@ -1,8 +1,8 @@
 parent=base
 import=common/keycloak
 
-styles=css/login.css css/tile.css css/pirati.css
-stylesCommon=web_modules/@fortawesome/fontawesome-free/css/icons/all.css web_modules/@patternfly/react-core/dist/styles/base.css web_modules/@patternfly/react-core/dist/styles/app.css node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css lib/pficon/pficon.css
+styles=../keycloak/css/login.css css/pirati.css
+stylesCommon=node_modules/@patternfly/patternfly/patternfly.min.css node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css lib/pficon/pficon.css
 
 meta=viewport==width=device-width,initial-scale=1
 
@@ -15,12 +15,16 @@ kcLogoClass=login-pf-brand
 
 kcContainerClass=container-fluid
 kcContentClass=col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-6 col-lg-offset-3
-kcContentWrapperClass=row
 
 kcHeaderClass=login-pf-page-header
 kcFeedbackAreaClass=col-md-12
 kcLocaleClass=col-xs-12 col-sm-1
 
+## Locale
+kcLocaleMainClass=pf-c-dropdown
+kcLocaleListClass=pf-c-dropdown__menu pf-m-align-right
+kcLocaleItemClass=pf-c-dropdown__menu-item
+
 ## Alert
 kcAlertClass=pf-c-alert pf-m-inline
 kcAlertTitleClass=pf-c-alert__title kc-feedback-text
@@ -45,7 +49,15 @@ kcFeedbackSuccessIcon=fa fa-fw fa-check-circle
 kcFeedbackInfoIcon=fa fa-fw fa-info-circle
 
 kcResetFlowIcon=pficon pficon-arrow fa
+
+# WebAuthn icons
 kcWebAuthnKeyIcon=pficon pficon-key
+kcWebAuthnDefaultIcon=pficon pficon-key
+kcWebAuthnUnknownIcon=pficon pficon-key unknown-transport-class
+kcWebAuthnUSB=fa fa-usb
+kcWebAuthnNFC=fa fa-wifi
+kcWebAuthnBLE=fa fa-bluetooth-b
+kcWebAuthnInternal=pficon pficon-key
 
 kcFormClass=form-horizontal
 kcFormGroupClass=form-group
@@ -53,7 +65,17 @@ kcFormGroupErrorClass=has-error
 kcLabelClass=pf-c-form__label pf-c-form__label-text
 kcLabelWrapperClass=col-xs-12 col-sm-12 col-md-12 col-lg-12
 kcInputClass=pf-c-form-control
+kcInputHelperTextBeforeClass=pf-c-form__helper-text pf-c-form__helper-text-before
+kcInputHelperTextAfterClass=pf-c-form__helper-text pf-c-form__helper-text-after
+kcInputClassRadio=pf-c-radio
+kcInputClassRadioInput=pf-c-radio__input
+kcInputClassRadioLabel=pf-c-radio__label
+kcInputClassCheckbox=pf-c-check
+kcInputClassCheckboxInput=pf-c-check__input
+kcInputClassCheckboxLabel=pf-c-check__label
+kcInputClassRadioCheckboxLabelDisabled=pf-m-disabled
 kcInputErrorMessageClass=pf-c-form__helper-text pf-m-error required kc-feedback-text
+kcInputGroup=pf-c-input-group
 kcInputWrapperClass=col-xs-12 col-sm-12 col-md-12 col-lg-12
 kcFormOptionsClass=col-xs-12 col-sm-12 col-md-12 col-lg-12
 kcFormButtonsClass=col-xs-12 col-sm-12 col-md-12 col-lg-12
@@ -64,6 +86,9 @@ kcSignUpClass=login-pf-signup
 
 kcInfoAreaClass=col-xs-12 col-sm-4 col-md-4 col-lg-5 details
 
+### user-profile grouping
+kcFormGroupHeader=pf-c-form__group
+
 ##### css classes for form buttons
 # main class used for all buttons
 kcButtonClass=pf-c-button
@@ -84,24 +109,27 @@ kcSrOnlyClass=sr-only
 kcSelectAuthListClass=pf-l-stack select-auth-container
 kcSelectAuthListItemClass=pf-l-stack__item select-auth-box-parent pf-l-split
 kcSelectAuthListItemIconClass=pf-l-split__item select-auth-box-icon
+kcSelectAuthListItemIconPropertyClass=fa-2x select-auth-box-icon-properties
 kcSelectAuthListItemBodyClass=pf-l-split__item pf-l-stack
 kcSelectAuthListItemHeadingClass=pf-l-stack__item select-auth-box-headline pf-c-title
 kcSelectAuthListItemDescriptionClass=pf-l-stack__item select-auth-box-desc
 kcSelectAuthListItemFillClass=pf-l-split__item pf-m-fill
 kcSelectAuthListItemArrowClass=pf-l-split__item select-auth-box-arrow
 kcSelectAuthListItemArrowIconClass=fa fa-angle-right fa-lg
+kcSelectAuthListItemTitle=select-auth-box-paragraph
 
 ##### css classes for the authenticators
-kcAuthenticatorDefaultClass=fa list-view-pf-icon-lg
+kcAuthenticatorDefaultClass=fa fa-list list-view-pf-icon-lg
 kcAuthenticatorPasswordClass=fa fa-unlock list-view-pf-icon-lg
 kcAuthenticatorOTPClass=fa fa-mobile list-view-pf-icon-lg
 kcAuthenticatorWebAuthnClass=fa fa-key list-view-pf-icon-lg
 kcAuthenticatorWebAuthnPasswordlessClass=fa fa-key list-view-pf-icon-lg
 
 ##### css classes for the OTP Login Form
-kcLoginOTPListClass=pf-c-tile otp-tile
+kcLoginOTPListClass=pf-c-tile
+kcLoginOTPListInputClass=pf-c-tile__input
 kcLoginOTPListItemHeaderClass=pf-c-tile__header
-kcLoginOTPListItemIconBodyClass=pf-c-tile__icon otp-tile-icon
+kcLoginOTPListItemIconBodyClass=pf-c-tile__icon
 kcLoginOTPListItemIconClass=fa fa-mobile
 kcLoginOTPListItemTitleClass=pf-c-tile__title
 
@@ -123,3 +151,17 @@ kcLogoIdP-stackoverflow=fa fa-stack-overflow
 kcLogoIdP-twitter=fa fa-twitter
 kcLogoIdP-openshift-v4=pf-icon pf-icon-openshift
 kcLogoIdP-openshift-v3=pf-icon pf-icon-openshift
+
+## Recovery codes
+kcRecoveryCodesWarning=kc-recovery-codes-warning
+kcRecoveryCodesList=kc-recovery-codes-list
+kcRecoveryCodesActions=kc-recovery-codes-actions
+kcRecoveryCodesConfirmation=kc-recovery-codes-confirmation
+kcCheckClass=pf-c-check
+kcCheckInputClass=pf-c-check__input
+kcCheckLabelClass=pf-c-check__label
+
+## Password visibility
+kcFormPasswordVisibilityButtonClass=pf-c-button pf-m-control
+kcFormPasswordVisibilityIconShow=fa fa-eye
+kcFormPasswordVisibilityIconHide=fa fa-eye-slash
-- 
GitLab