diff --git a/login/messages/.gitkeep b/login/messages/.gitkeep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/login/messages/messages_cs.properties b/login/messages/messages_cs.properties
new file mode 100644
index 0000000000000000000000000000000000000000..bfa0a2c7f286a082939a2fed906807314048ffe4
--- /dev/null
+++ b/login/messages/messages_cs.properties
@@ -0,0 +1,259 @@
+# 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.
+registerWithTitle=Registrovat {0}
+registerWithTitleHtml={0}
+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}
+loginAccountTitle=PIRÁTSKÉ PŘIHLÁŠENÍ
+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=Login
+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!"
diff --git a/login/resources/css/piratistyle.css b/login/resources/css/piratistyle.css
new file mode 100644
index 0000000000000000000000000000000000000000..d10e89c5fd01e85068c398d11232b96cd47e3f43
--- /dev/null
+++ b/login/resources/css/piratistyle.css
@@ -0,0 +1,773 @@
+
+
+.login-pf body {
+
+
+    height: 100%;
+	background-color: transparent;
+}
+
+/*IE compatibility*/
+.pf-c-form-control {
+    font-size: 14px;
+    font-size: var(--pf-global--FontSize--sm);
+    border-width: 1px;
+    border-width: var(--pf-global--BorderWidth--sm);;
+    border-color: #f3f3f3 #f3f3f3 #000000 #f3f3f3;
+    border-color: var(--pf-global--BorderColor--300) var(--pf-global--BorderColor--300) var(--pf-global--BorderColor--200) var(--pf-global--BorderColor--300);
+    background-color: #FFFFFF;
+    background-color: var(--pf-global--BackgroundColor--100);
+    height: 36px;
+    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));
+    padding: 5px 0.5rem;
+    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);
+}
+
+.pf-c-form-control:hover, .pf-c-form-control:focus {
+    border-bottom-color: #ed9654;
+    border-bottom-color: var(--pf-global--primary-color--100);
+    border-bottom-width: 2px;
+    border-bottom-width: var(--pf-global--BorderWidth--md);
+}
+
+.pf-c-form-control[aria-invalid="true"] {
+    border-bottom-color: #d60d53;
+    border-bottom-color: var(--pf-global--danger-color--100);
+    border-bottom-width: 2px;
+    border-bottom-width: var(--pf-global--BorderWidth--md);
+}
+
+.pf-c-alert.pf-m-inline {
+    margin-bottom: 0.5rem; /* default - IE compatibility */
+    margin-bottom: var(--pf-global--spacer--sm);
+    padding: 0.25rem;
+    padding: var(--pf-global--spacer--xs);
+    border: solid #f3f3f3;
+    border: solid var(--pf-global--BorderColor--300);
+    border-width: 1px;
+    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);
+    display: -ms-flexbox;
+    display: grid;
+    -ms-grid-columns: max-content 1fr max-content;
+    grid-template-columns:max-content 1fr max-content;
+    grid-template-columns: var(--pf-c-alert--grid-template-columns);
+    grid-template-rows: 1fr auto;
+    grid-template-rows: var(--pf-c-alert--grid-template-rows);
+}
+
+.pf-c-alert.pf-m-inline::before {
+    position: absolute;
+    top: -1px;
+    top: var(--pf-c-alert--m-inline--before--Top);
+    bottom: -1px;
+    bottom: var(--pf-c-alert--m-inline--before--Bottom);
+    left: 0;
+    width: 3px;
+    width: var(--pf-c-alert--m-inline--before--Width);
+    content: "";
+    background-color: #FFFFFF;
+    background-color: var(--pf-global--BackgroundColor--100);
+}
+
+.pf-c-alert.pf-m-inline.pf-m-success::before {
+    background-color: #76cc9f;
+    background-color: var(--pf-global--success-color--100);
+}
+
+.pf-c-alert.pf-m-inline.pf-m-danger::before {
+    background-color: #d60d53;
+    background-color: var(--pf-global--danger-color--100);
+}
+
+.pf-c-alert.pf-m-inline.pf-m-warning::before {
+    background-color: #ed9654;
+    background-color: var(--pf-global--warning-color--100);
+}
+
+.pf-c-alert.pf-m-inline .pf-c-alert__icon {
+    padding: 1rem 0.5rem 1rem 1rem;
+    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);
+    font-size: 16px;
+    font-size: var(--pf-c-alert--m-inline__icon--FontSize);
+}
+
+.pf-c-alert.pf-m-success .pf-c-alert__icon {
+    color: #76cc9f;
+    color: var(--pf-global--success-color--100);
+}
+
+.pf-c-alert.pf-m-success .pf-c-alert__title {
+    color: #4ca971;
+    color: var(--pf-global--success-color--200);
+}
+
+.pf-c-alert.pf-m-danger .pf-c-alert__icon {
+    color: #d60d53;
+    color: var(--pf-global--danger-color--100);
+}
+
+.pf-c-alert.pf-m-danger .pf-c-alert__title {
+    color: #d60d53;
+    color: var(--pf-global--danger-color--200);
+}
+
+.pf-c-alert.pf-m-warning .pf-c-alert__icon {
+    color: #ed9654;
+    color: var(--pf-global--warning-color--100);
+}
+
+.pf-c-alert.pf-m-warning .pf-c-alert__title {
+    color: #f1ae7b;
+    color: var(--pf-global--warning-color--200);
+}
+
+.pf-c-alert__title {
+    font-size: 14px; /* default - IE compatibility */
+    font-size: var(--pf-global--FontSize--sm);
+    padding: 5px 8px;
+    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);
+}
+
+.pf-c-button{
+    padding:0.375rem 1rem;
+    padding: var(--pf-global--spacer--form-element) var(--pf-global--spacer--md);
+}
+
+/* default - IE compatibility */
+.pf-m-primary {
+    color: #FFFFFF;
+    background-color: #ed9654;
+    background-color: var(--pf-global--primary-color--100);
+}
+
+/* default - IE compatibility */
+.pf-m-primary:hover {
+    background-color: #027da8;
+    background-color: var(--pf-global--primary-color--200);
+}
+
+/* default - IE compatibility */
+.pf-c-button.pf-m-control {
+    border: solid 1px;
+    border: solid var(--pf-global--BorderWidth--sm);
+    border-color: rgba(230, 230, 230, 0.5);
+}
+/*End of IE compatibility*/
+
+
+#kc-locale {
+  font-family: Bebas Neue,Helvetica,Arial,sans-serif;
+}
+
+label {
+  font-family: Bebas Neue,Helvetica,Arial,sans-serif;
+}
+
+
+h1 {
+ font-family: Bebas Neue,Helvetica,Arial,sans-serif;
+ text-align: center;
+}
+
+#form-control {
+  margin-top: 10px;
+  background-color: #fff;
+  
+}
+
+
+#kc-locale ul {
+    display: none;
+    position: absolute;
+    background-color: #fff;
+    list-style: none;
+    right: 0;
+    top: 20px;
+    min-width: 100px;
+    padding: 2px 0;
+    border: solid 1px #bbb;
+}
+
+#kc-locale:hover ul {
+    display: block;
+    margin: 0;
+}
+
+#kc-locale ul li a {
+    display: block;
+    padding: 5px 14px;
+    color: #000 !important;
+    text-decoration: none;
+    line-height: 20px;
+}
+
+#kc-locale ul li a:hover {
+    color: #000000;
+    background-color: #d4edfa;
+}
+
+#kc-locale-dropdown a {
+    color: #000000;
+    background: 0 0;
+    padding: 0 15px 0 0;
+    font-weight: 300;
+}
+
+#kc-locale-dropdown a:hover {
+    text-decoration: none;
+    color: #4c4c4c;
+}
+
+a#kc-current-locale-link {
+    display: block;
+    padding: 0 5px;
+}
+
+/* a#kc-current-locale-link:hover {
+    background-color: rgba(0,0,0,0.2);
+} */
+
+a#kc-current-locale-link::after {
+    content: "\2c5";
+    margin-left: 4px;
+}
+
+.login-pf .container {
+    padding-top: 40px;
+}
+
+.login-pf a:hover {
+    color: #76b4cf;
+}
+
+#kc-logo {
+    width: 100%;
+    font-family: Bebas Neue,Helvetica,Arial,sans-serif;
+}
+
+#kc-logo-wrapper {
+    background-image: url(../img/pirati-logo.png);
+    background-repeat: no-repeat;
+    height: 123px;
+    width: 300px;
+    margin: 120px auto 0;
+    font-family: Bebas Neue,Helvetica,Arial,sans-serif;
+}
+
+div.kc-logo-text {
+    background: url("../img/pirati-logo-bg.png");
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    height: 150px;
+    width: 320px;
+    margin: 0 auto;
+    
+}
+
+div.kc-logo-text span {
+    display: none;
+}
+
+#kc-header {
+    color: #f3f3f3;
+    overflow: visible;
+
+}
+
+#kc-header-wrapper {
+    font-size: 19px;
+    font-family: Bebas Neue,Helvetica,Arial,sans-serif;
+    text-transform: uppercase;
+    letter-spacing: 3px;
+    line-height: 1.2em;
+
+    white-space: normal;
+    
+    
+}
+
+#kc-content {
+    width: 100%;
+    justify-content: center;
+    text-align: center;
+    font-family: Bebas Neue,Helvetica,Arial,sans-serif;
+
+}
+
+#kc-attempted-username {
+    font-size: 20px;
+    font-family: inherit;
+    font-weight: normal;
+    padding-right: 10px;
+}
+
+#kc-username {
+    text-align: center;
+    margin-bottom:-10px;
+}
+
+#kc-webauthn-settings-form {
+    padding-top: 8px;
+}
+
+#kc-content-wrapper {
+    margin-top: 20px;
+}
+
+#kc-form-wrapper {
+    margin-top: 10px;
+    padding-top: 15px;
+}
+
+#kc-info {
+    margin: 20px -40px -30px;
+}
+
+#kc-info-wrapper {
+    font-size: 13px;
+    padding: 15px 35px;
+    background-color: #F0F0F0;
+}
+
+#kc-form-options span {
+    display: block;
+}
+
+#kc-form-options .checkbox {
+    margin-top: 10px;
+    color: #004958;
+}
+
+#kc-terms-text {
+    margin-bottom: 20px;
+}
+
+#kc-registration {
+    margin-bottom: 0;
+}
+
+/* TOTP */
+
+.subtitle {
+    text-align: right;
+    margin-top: 30px;
+    color: #f2d29f;
+}
+
+.required {
+    color: #d60d53; /* default - IE compatibility */
+    color: var(--pf-global--danger-color--200);
+}
+
+ol#kc-totp-settings {
+    margin: 0;
+    padding-left: 20px;
+}
+
+ul#kc-totp-supported-apps {
+    margin-bottom: 10px;
+}
+
+#kc-totp-secret-qr-code {
+    max-width:150px;
+    max-height:150px;
+}
+
+#kc-totp-secret-key {
+    background-color: #fff;
+    color: #343434;
+    font-size: 16px;
+    padding: 10px 0;
+}
+
+/* OAuth */
+
+#kc-oauth h3 {
+    margin-top: 0;
+}
+
+#kc-oauth ul {
+    list-style: none;
+    padding: 0;
+    margin: 0;
+}
+
+#kc-oauth ul li {
+    border-top: 1px solid rgba(255, 255, 255, 0.1);
+    font-size: 12px;
+    padding: 10px 0;
+}
+
+#kc-oauth ul li:first-of-type {
+    border-top: 0;
+}
+
+#kc-oauth .kc-role {
+    display: inline-block;
+    width: 50%;
+}
+
+/* Code */
+#kc-code textarea {
+    width: 100%;
+    height: 8em;
+}
+
+/* Social */
+.kc-social-links {
+    margin-top: 20px;
+}
+
+.kc-social-provider-logo {
+    font-size: 23px;
+    width: 30px;
+    height: 25px;
+    float: left;
+}
+
+.kc-social-gray {
+    color: #adadad; /* default - IE compatibility */
+    color: var(--pf-global--Color--200);
+}
+
+.kc-social-item {
+    margin-bottom: 0.5rem; /* default - IE compatibility */
+    margin-bottom: var(--pf-global--spacer--sm);
+    font-size: 15px;
+    text-align: center;
+}
+
+.kc-social-provider-name {
+    position: relative;
+    top: 3px;
+}
+
+.kc-social-icon-text {
+    left: -15px;
+}
+
+.kc-social-grid {
+    display:grid;
+    grid-column-gap: 10px;
+    grid-row-gap: 5px;
+    grid-column-end: span 6;
+    --pf-l-grid__item--GridColumnEnd: span 6;
+}
+
+.kc-social-grid .kc-social-icon-text {
+    left: -10px;
+}
+
+.kc-login-tooltip {
+    position: relative;
+    display: inline-block;
+}
+
+.kc-social-section {
+    text-align: center;
+}
+
+.kc-social-section hr{
+    margin-bottom: 10px
+}
+
+.kc-login-tooltip .kc-tooltip-text{
+    top:-3px;
+    left:160%;
+    background-color: black;
+    visibility: hidden;
+    color: #fff;
+
+    min-width:170px;
+    text-align: center;
+    border-radius: 2px;
+    box-shadow:0 1px 8px rgba(0,0,0,0.6);
+    padding: 5px;
+
+    position: absolute;
+    opacity:0;
+    transition:opacity 0.5s;
+}
+
+/* Show tooltip */
+.kc-login-tooltip:hover .kc-tooltip-text {
+    visibility: visible;
+    opacity:0.7;
+}
+
+/* Arrow for tooltip */
+.kc-login-tooltip .kc-tooltip-text::after {
+    content: " ";
+    position: absolute;
+    top: 15px;
+    right: 100%;
+    margin-top: -5px;
+    border-width: 5px;
+    border-style: solid;
+    border-color: transparent black transparent transparent;
+}
+
+
+
+@media (min-width: 368px) {
+    #kc-container-wrapper {
+        position: absolute;
+        width: 100%;
+    }
+
+    .login-pf .container {
+        padding-right: 80px;
+    }
+
+    #kc-locale {
+        position: relative;
+        text-align: right;
+        z-index: 9999;
+    }
+    
+}
+
+@media (max-width: 367px) {
+
+    .login-pf body {
+        background: white;
+    }
+
+    #kc-header {
+        padding-left: 15px;
+        padding-right: 15px;
+        float: none;
+        text-align: center;
+    }
+
+    #kc-header-wrapper {
+        font-size: 16px;
+        font-weight: bold;
+        padding: 20px 60px 0 0;
+        color: #72767b;
+        letter-spacing: 0;
+    }
+
+    div.kc-logo-text {
+        margin: 0;
+        width: 150px;
+        height: 32px;
+        background-size: 100%;
+    }
+
+    #kc-form {
+        float: none;
+        padding: 20px 60px 10px 0;
+    }
+
+    #kc-info-wrapper {
+        border-top: 1px solid rgba(255, 255, 255, 0.1);
+        background-color: transparent;
+    }
+
+    .login-pf .container {
+        padding-top: 15px;
+        padding-bottom: 15px;
+    }
+
+    #kc-locale {
+        position: absolute;
+        width: 100px;co
+        top: 20px;
+        right: 20px;
+        text-align: right;
+        z-index: 9999;
+    }
+
+    #kc-logo-wrapper {
+        background-size: 100px 21px;
+        height: 21px;
+        width: 100px;
+        margin: 20px 0 0 20px;
+    }
+
+}
+
+@media (min-height: 646px) {
+    #kc-container-wrapper {
+        bottom: 12%;
+    }
+}
+
+@media (max-height: 645px) {
+    #kc-container-wrapper {
+        padding-top: 50px;
+        top: 20%;
+    }
+}
+
+.card-pf form.form-actions .btn {
+    float: right;
+    margin-left: 7px;
+}
+
+#kc-form-buttons {
+    margin-top: 20px;
+}
+
+.btn-block {
+    background-color: #f1ae7b;
+    border-color: #ed9654;
+    color: #fff;
+}
+
+.btn-primary {
+    background-color: #f1ae7b;
+    background-image: none;
+    border-color: #ed9654;
+    color: #fff;
+}
+
+.login-pf-page .login-pf-brand {
+    margin-top: 20px;
+    max-width: 360px;
+    width: 40%;
+}
+
+/* Internet Explorer 11 compatibility workaround for select-authenticator screen */
+@media all and (-ms-high-contrast: none),
+(-ms-high-contrast: active) {
+    .select-auth-box-parent {
+        border-top: 1px solid #f0f0f0;
+        padding-top: 1rem;
+        padding-bottom: 1rem;
+        cursor: pointer;
+    }
+
+    .select-auth-box-headline {
+        font-size: 16px;
+        color: #06c;
+        font-weight: bold;
+    }
+
+    .select-auth-box-desc {
+        font-size: 14px;
+    }
+
+    .pf-l-stack {
+        flex-basis: 100%;
+    }
+}
+/* End of IE11 workaround for select-authenticator screen */
+
+.select-auth-box-arrow{
+    display: flex;
+    align-items: center;
+    margin-right: 2rem;
+}
+
+.select-auth-box-icon{
+    display: flex;
+    flex: 0 0 2em;
+    justify-content: center;
+    margin-right: 1rem;
+    margin-left: 3rem;
+}
+
+.select-auth-box-parent{
+    border-top: 1px solid var(--pf-global--palette--black-200);
+    padding-top: 1rem;
+    padding-bottom: 1rem;
+    cursor: pointer;
+}
+
+.select-auth-box-parent:hover{
+    background-color: #f7f8f8;
+}
+
+.select-auth-container {
+    padding-bottom: 0px !important;
+}
+
+.select-auth-box-headline {
+    font-size: var(--pf-global--FontSize--md);
+    color: var(--pf-global--primary-color--100);
+    font-weight: bold;
+}
+
+.select-auth-box-desc {
+    font-size: var(--pf-global--FontSize--sm);
+}
+
+.card-pf {
+    margin: 0 auto;
+    box-shadow: var(--pf-global--BoxShadow--lg);
+    padding: 0 7px;
+    border-top: 4px solid;
+    border-color: #ed9654; /* default - IE compatibility */
+    border-color: var(--pf-global--primary-color--100);
+
+}
+
+/*phone*/
+@media (max-width: 767px) {
+    .login-pf-page .card-pf {
+        max-width: none;
+        margin-left: 0;
+        margin-right: 0;
+        padding-top: 0;
+        border-top: 0;
+        box-shadow: 0 0;
+    }
+
+    .kc-social-grid {
+        grid-column-end: 12;
+        --pf-l-grid__item--GridColumnEnd: span 12;
+    }
+
+    .kc-social-grid .kc-social-icon-text {
+        left: -15px;
+    }
+}
+
+.login-pf-header {
+
+}
+
+.login-pf-page .login-pf-signup {
+    font-size: 15px;
+    color: #72767b;
+}
+#kc-content-wrapper .row {
+    margin-left: 0;
+    margin-right: 0;
+    justify-content: center;    
+}
+
+.login-pf-page.login-pf-page-accounts {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+.login-pf-page .btn-primary {
+    margin-top: 0;
+ 
+}
+
+.login-pf-page .list-view-pf .list-group-item {
+    border-bottom: 1px solid #f3f3f3;
+}
+
+.login-pf-page .list-view-pf-description {
+    width: 100%;
+}
+
+#kc-form-login div.form-group:last-of-type,
+#kc-register-form div.form-group:last-of-type,
+#kc-update-profile-form div.form-group:last-of-type {
+    margin-bottom: 0px;
+}
+
+.no-bottom-margin {
+    margin-bottom: 0;
+}
+
+#kc-back {
+    margin-top: 5px;
+}
diff --git a/login/resources/img/pirati-logo-bg.png b/login/resources/img/pirati-logo-bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..1fd8f7305be50f15a5331226cca72ba67b1d2511
Binary files /dev/null and b/login/resources/img/pirati-logo-bg.png differ
diff --git a/login/resources/img/pirati-logo-text-b.png b/login/resources/img/pirati-logo-text-b.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ffbe81fa6d3adaeaa5970717e033ada6048d4e2
Binary files /dev/null and b/login/resources/img/pirati-logo-text-b.png differ
diff --git a/login/resources/img/pirati-logo-text.png b/login/resources/img/pirati-logo-text.png
new file mode 100644
index 0000000000000000000000000000000000000000..80b3d1c7993da13074d46c4224702adf73347c3c
Binary files /dev/null and b/login/resources/img/pirati-logo-text.png differ
diff --git a/login/resources/img/pirati-logo.png b/login/resources/img/pirati-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..431e7042eb9d404904463914c76a652e2f46a435
Binary files /dev/null and b/login/resources/img/pirati-logo.png differ
diff --git a/login/theme.properties b/login/theme.properties
index 417eb5c122584f38106d9d0c6dc2ec30a4d6af28..08af8ba05515912614342b6b66cf05f76859eec8 100644
--- a/login/theme.properties
+++ b/login/theme.properties
@@ -1,6 +1,6 @@
 parent=base
 
-styles=css/login.css
+styles=css/piratistyle.css
 stylesCommon=node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css lib/zocial/zocial.css
 
 meta=viewport==width=device-width,initial-scale=1
@@ -92,4 +92,4 @@ kcAuthenticatorWebAuthnPasswordlessClass=fa fa-key list-view-pf-icon-lg
 kcSelectOTPListClass=card-pf card-pf-view card-pf-view-select card-pf-view-single-select
 kcSelectOTPListItemClass=card-pf-body card-pf-top-element
 kcAuthenticatorOtpCircleClass=fa fa-mobile card-pf-icon-circle
-kcSelectOTPItemHeadingClass=card-pf-title text-center
\ No newline at end of file
+kcSelectOTPItemHeadingClass=card-pf-title text-center