/* MyCrcls Keycloak Login Theme */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');

/* === CSS VARIABLES === */
:root {
  --mc-teal-400: #2dd4bf;
  --mc-teal-500: #14b8a6;
  --mc-teal-600: #0d9488;
  --mc-cyan-500: #06b6d4;
  --mc-page-bg: #ffffff;
  --mc-input-bg: #ffffff;
  --mc-input-border: #d1d5db;
  --mc-input-text: #111827;
  --mc-input-placeholder: #9ca3af;
  --mc-label-color: #374151;
  --mc-heading-color: #111827;
  --mc-text-secondary: #4b5563;
  --mc-text-muted: #6b7280;
  --mc-link-color: #14b8a6;
  --mc-link-hover: #0d9488;
  --mc-tab-bg: #f3f4f6;
  --mc-tab-active-bg: #ffffff;
  --mc-tab-text: #4b5563;
  --mc-tab-active-text: #14b8a6;
  --mc-divider: #e5e7eb;
  --mc-branding-from: #2dd4bf;
  --mc-branding-to: #06b6d4;
  --mc-toggle-bg: #e5e7eb;
  --mc-toggle-hover: #d1d5db;
  --mc-toggle-icon: #1f2937;
  --mc-footer-text: #6b7280;
  --mc-footer-brand: #14b8a6;
}

[data-theme="dark"] {
  --mc-page-bg: #111827;
  --mc-input-bg: #1f2937;
  --mc-input-border: #4b5563;
  --mc-input-text: #ffffff;
  --mc-input-placeholder: #9ca3af;
  --mc-label-color: #d1d5db;
  --mc-heading-color: #ffffff;
  --mc-text-secondary: #9ca3af;
  --mc-text-muted: #9ca3af;
  --mc-link-color: #2dd4bf;
  --mc-link-hover: #5eead4;
  --mc-tab-bg: #1f2937;
  --mc-tab-active-bg: #111827;
  --mc-tab-text: #9ca3af;
  --mc-tab-active-text: #14b8a6;
  --mc-divider: #374151;
  --mc-branding-from: #0d9488;
  --mc-branding-to: #0e7490;
  --mc-toggle-bg: #374151;
  --mc-toggle-hover: #4b5563;
  --mc-toggle-icon: #e5e7eb;
  --mc-footer-text: #9ca3af;
}

/* === GLOBAL === */
*, *::before, *::after {
  box-sizing: border-box !important;
}

*:not(.fa):not(.fas):not(.far):not(.fab):not(.fa-solid):not(.fa-regular):not(.fa-brands):not([class*="fa-"]):not([data-icon]) {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
}

html {
  transition: background-color 0.3s ease;
}

body, body.pf-v5-c-page, body#keycloak-bg {
  background: var(--mc-page-bg) !important;
  margin: 0 !important;
  padding: 0 !important;
  transition: background-color 0.3s ease;
  overflow-x: hidden !important;
}

html {
  overflow-x: hidden !important;
}

/* === HIDE DEFAULTS === */
.pf-v5-c-login__header,
.pf-v5-c-login__footer,
.kc-logo-text,
.pf-v5-c-login__main-footer-links,
.pf-v5-c-login__main-footer {
  display: none !important;
}

/* === MAIN LAYOUT === */
.pf-v5-c-login {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: stretch !important;
  min-height: 100vh !important;
  height: 100vh !important;
  background: none !important;
  padding: 0 !important;
  margin: 0 !important;
  grid-template-columns: none !important;
  grid-template-rows: none !important;
  grid-template-areas: none !important;
  --pf-v5-c-login--BackgroundImage: none !important;
  overflow: hidden !important;
}

/* === LEFT BRANDING PANEL === */
.mycrcls-branding {
  display: none;
  width: 50%;
  min-width: 50%;
  max-width: 50%;
  flex-shrink: 0;
  background: linear-gradient(135deg, var(--mc-branding-from) 0%, var(--mc-branding-to) 100%);
  padding: 48px;
  flex-direction: column;
  justify-content: space-between;
  align-self: stretch;
  position: relative;
  overflow: hidden;
  transition: background 0.3s ease;
  box-sizing: border-box;
}

.mycrcls-branding-logo {
  display: flex;
  align-items: center;
  gap: 12px;
}

.mycrcls-branding-logo img {
  width: 48px;
  height: 48px;
  object-fit: contain;
}

[data-theme="dark"] .mycrcls-branding-logo img {
  filter: brightness(0) invert(1);
}

.mycrcls-branding-logo span {
  color: #ffffff;
  font-size: 24px;
  font-weight: 600;
  letter-spacing: 0.5px;
}

.mycrcls-branding-welcome h1 {
  font-size: 36px;
  font-weight: 700;
  margin: 0 0 16px 0;
  line-height: 1.2;
  color: #ffffff;
}

.mycrcls-branding-welcome p {
  font-size: 20px;
  color: rgba(255, 255, 255, 0.9);
  margin: 0;
  line-height: 1.5;
}

.mycrcls-branding-copyright {
  color: rgba(255, 255, 255, 0.6);
  font-size: 14px;
  margin: 0;
}

/* === RIGHT SIDE === */
.pf-v5-c-login__container {
  flex: 1 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 24px 48px !important;
  background: var(--mc-page-bg) !important;
  max-width: none !important;
  min-width: 0 !important;
  grid-column: auto !important;
  grid-row: auto !important;
  grid-template-columns: none !important;
  grid-template-rows: none !important;
  grid-template-areas: none !important;
  transition: background-color 0.3s ease;
  overflow-y: auto !important;
  box-sizing: border-box !important;
}

/* === MAIN FORM === */
.pf-v5-c-login__main {
  width: 100% !important;
  max-width: 420px !important;
  background: none !important;
  box-shadow: none !important;
  border: none !important;
  padding: 0 !important;
  padding-top: 0 !important;
  margin: auto 0 !important;
  flex-shrink: 0 !important;
  --pf-v5-c-login__main--PaddingTop: 0 !important;
  --pf-v5-c-login__main--PaddingRight: 0 !important;
  --pf-v5-c-login__main--PaddingBottom: 0 !important;
  --pf-v5-c-login__main--PaddingLeft: 0 !important;
}

.pf-v5-c-login__main-header {
  display: block !important;
  padding: 0 0 24px 0 !important;
  padding-top: 0 !important;
  margin: 0 !important;
  margin-top: 0 !important;
  flex-direction: unset !important;
  grid-template-columns: none !important;
  --pf-v5-c-login__main-header--PaddingTop: 0 !important;
  --pf-v5-c-login__main-header--PaddingBottom: 0 !important;
}

/* === TABS === */
.mycrcls-tabs {
  display: flex;
  gap: 4px;
  margin-top: 0 !important;
  margin-bottom: 24px;
  padding: 4px !important;
  padding-top: 4px !important;
  background: var(--mc-tab-bg);
  border-radius: 8px;
  transition: background-color 0.3s ease;
  overflow: hidden;
}

.mycrcls-tab {
  flex: 1;
  padding: 10px 16px;
  border-radius: 6px;
  font-weight: 500;
  font-size: 15px;
  text-align: center;
  cursor: pointer;
  border: none;
  text-decoration: none !important;
  transition: all 0.2s ease;
  color: var(--mc-tab-text) !important;
  background: transparent;
  display: block;
  line-height: 1.5;
}

.mycrcls-tab:hover {
  color: var(--mc-heading-color) !important;
}

.mycrcls-tab.active {
  background: var(--mc-tab-active-bg);
  color: var(--mc-tab-active-text) !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

/* === MOBILE LOGO === */
.mycrcls-mobile-logo {
  display: none;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-bottom: 32px;
}

.mycrcls-mobile-logo img {
  width: 40px;
  height: 40px;
  object-fit: contain;
}

[data-theme="dark"] .mycrcls-mobile-logo img {
  filter: brightness(0) invert(1);
}

.mycrcls-mobile-logo span {
  font-size: 20px;
  font-weight: 600;
  color: var(--mc-heading-color);
  transition: color 0.3s ease;
}

/* === FORM HEADER === */
.pf-v5-c-login__main-header h1,
#kc-page-title,
h1.pf-v5-c-title.pf-m-3xl {
  font-size: 30px !important;
  font-weight: 700 !important;
  color: var(--mc-heading-color) !important;
  margin: 0 0 8px 0 !important;
  line-height: 1.2 !important;
  transition: color 0.3s ease;
  width: 100% !important;
  white-space: normal !important;
  word-break: normal !important;
  overflow-wrap: normal !important;
}

.mycrcls-subtitle {
  font-size: 16px;
  color: var(--mc-text-secondary);
  margin: 8px 0 0 0;
  line-height: 1.5;
  transition: color 0.3s ease;
}

/* === FORM BODY === */
.pf-v5-c-login__main-body {
  padding: 0 !important;
  margin: 0 !important;
  max-width: 100% !important;
  overflow: hidden !important;
}

.pf-v5-c-form {
  max-width: 100% !important;
}

/* === FORM GROUPS === */
.pf-v5-c-form__group {
  margin-bottom: 20px !important;
}

/* === LABELS === */
.pf-v5-c-form__label,
.pf-v5-c-form__label-text,
label.pf-v5-c-form__label {
  font-size: 14px !important;
  font-weight: 500 !important;
  color: var(--mc-label-color) !important;
  margin-bottom: 8px !important;
  transition: color 0.3s ease;
}

/* === FORM CONTROL WRAPPER (span around input) === */
.pf-v5-c-form-control {
  --pf-v5-c-form-control--BorderTopColor: transparent !important;
  --pf-v5-c-form-control--BorderRightColor: transparent !important;
  --pf-v5-c-form-control--BorderBottomColor: transparent !important;
  --pf-v5-c-form-control--BorderLeftColor: transparent !important;
  --pf-v5-c-form-control--after--BorderBottomWidth: 0 !important;
  --pf-v5-c-form-control--after--BorderBottomColor: transparent !important;
  background-color: transparent !important;
  border: none !important;
  padding: 0 !important;
  position: relative !important;
  display: block !important;
  max-width: 100% !important;
  width: 100% !important;
}

.pf-v5-c-form-control::after {
  display: none !important;
}

/* === INPUT FIELDS === */
.pf-v5-c-form-control > input,
input#username,
input#password,
input#password-new,
input#password-confirm,
input#email,
input#firstName,
input#lastName,
input#phoneNumber {
  width: 100% !important;
  padding: 12px 16px 12px 44px !important;
  border: 1px solid var(--mc-input-border) !important;
  border-radius: 8px !important;
  background: var(--mc-input-bg) !important;
  color: var(--mc-input-text) !important;
  font-size: 16px !important;
  line-height: 1.5 !important;
  outline: none !important;
  box-sizing: border-box !important;
  transition: border-color 0.2s ease, background-color 0.3s ease, color 0.3s ease, box-shadow 0.2s ease !important;
  -webkit-appearance: none !important;
}

.pf-v5-c-form-control > input:focus,
input#username:focus,
input#password:focus,
input#password-new:focus,
input#password-confirm:focus,
input#email:focus,
input#firstName:focus,
input#lastName:focus,
input#phoneNumber:focus {
  border-color: var(--mc-teal-500) !important;
  box-shadow: 0 0 0 3px rgba(20, 184, 166, 0.15) !important;
}

input::placeholder {
  color: var(--mc-input-placeholder) !important;
}

/* === INPUT ICONS === */
.mycrcls-input-icon {
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  width: 20px;
  height: 20px;
  color: var(--mc-input-placeholder);
  pointer-events: none;
  z-index: 2;
  transition: color 0.3s ease;
  display: flex;
  align-items: center;
  justify-content: center;
}

.mycrcls-input-icon svg {
  width: 20px;
  height: 20px;
  display: block;
}

/* === PASSWORD FIELD - INPUT GROUP === */
.pf-v5-c-input-group {
  display: block !important;
  position: relative !important;
  border: none !important;
  background: none !important;
  max-width: 100% !important;
  min-width: 0 !important;
}

.pf-v5-c-input-group__item.pf-m-fill {
  width: 100% !important;
}

/* Password toggle button - overlay on right */
.pf-v5-c-input-group__item:not(.pf-m-fill) {
  position: absolute !important;
  right: 12px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  z-index: 3 !important;
}

.pf-v5-c-input-group .pf-v5-c-button.pf-m-control,
.pf-v5-c-input-group button[data-password-toggle] {
  background: none !important;
  border: none !important;
  padding: 4px !important;
  color: var(--mc-input-placeholder) !important;
  box-shadow: none !important;
  width: auto !important;
  min-width: auto !important;
  cursor: pointer;
}

.pf-v5-c-input-group .pf-v5-c-button.pf-m-control:hover,
.pf-v5-c-input-group button[data-password-toggle]:hover {
  color: var(--mc-text-secondary) !important;
  background: none !important;
}

/* Password input needs right padding for the eye icon */
.pf-v5-c-input-group input[type="password"],
.pf-v5-c-input-group input[type="text"] {
  padding-right: 48px !important;
}

/* === FORGOT PASSWORD === */
.pf-v5-c-form__helper-text {
  margin-top: 8px !important;
  text-align: right !important;
}

.pf-v5-c-helper-text__item-text a {
  font-size: 14px !important;
  color: var(--mc-link-color) !important;
  text-decoration: none !important;
}

.pf-v5-c-helper-text__item-text a:hover {
  color: var(--mc-link-hover) !important;
}

/* === SUBMIT BUTTON === */
.pf-v5-c-button.pf-m-primary,
#kc-login,
#kc-register,
input[type="submit"],
button[type="submit"] {
  width: 100% !important;
  padding: 14px 16px !important;
  background: linear-gradient(to right, #2dd4bf, #06b6d4) !important;
  color: #ffffff !important;
  font-weight: 500 !important;
  font-size: 16px !important;
  border: none !important;
  border-radius: 8px !important;
  cursor: pointer !important;
  transition: opacity 0.2s ease !important;
  text-transform: none !important;
  box-shadow: none !important;
  letter-spacing: 0 !important;
  display: block !important;
}

.pf-v5-c-button.pf-m-primary:hover,
#kc-login:hover,
#kc-register:hover {
  background: linear-gradient(to right, #14b8a6, #0891b2) !important;
}

/* Form actions wrapper */
.pf-v5-c-form__actions {
  margin: 0 !important;
  padding: 0 !important;
}

/* === REGISTRATION / LOGIN LINK === */
#kc-info,
.login-pf-signup {
  margin-top: 24px !important;
  background: none !important;
  background-color: transparent !important;
}

#kc-info-wrapper {
  background: none !important;
  background-color: transparent !important;
  padding: 0 !important;
}

#kc-registration-container,
.pf-v5-c-login__main-footer-band,
.pf-v5-c-login__main-footer-band-item {
  background: none !important;
  background-color: transparent !important;
  padding: 0 !important;
  text-align: center !important;
  border: none !important;
  --pf-v5-c-login__main-footer-band--BackgroundColor: transparent !important;
  --pf-v5-c-login__main-footer-band--PaddingTop: 0 !important;
  --pf-v5-c-login__main-footer-band--PaddingRight: 0 !important;
  --pf-v5-c-login__main-footer-band--PaddingBottom: 0 !important;
  --pf-v5-c-login__main-footer-band--PaddingLeft: 0 !important;
}

#kc-registration span,
.pf-v5-c-login__main-footer-band span {
  font-size: 14px !important;
  color: var(--mc-text-secondary) !important;
  transition: color 0.3s ease;
}

#kc-registration a,
.pf-v5-c-login__main-footer-band a {
  color: var(--mc-link-color) !important;
  text-decoration: none !important;
  font-weight: 500 !important;
}

#kc-registration a:hover,
.pf-v5-c-login__main-footer-band a:hover {
  color: var(--mc-link-hover) !important;
}

/* === POWERED BY FOOTER === */
.mycrcls-powered-footer {
  margin-top: 48px;
  padding-top: 24px;
  border-top: 1px solid var(--mc-divider);
  text-align: center;
  transition: border-color 0.3s ease;
}

.mycrcls-powered-footer p {
  font-size: 14px;
  color: var(--mc-footer-text);
  margin: 0;
  transition: color 0.3s ease;
}

.mycrcls-powered-footer .brand {
  font-weight: 600;
  color: var(--mc-footer-brand);
}

/* === THEME TOGGLE === */
.mycrcls-theme-toggle {
  position: fixed;
  top: 24px;
  right: 24px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--mc-toggle-bg);
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 100;
  transition: background-color 0.3s ease;
  padding: 0;
}

.mycrcls-theme-toggle:hover {
  background: var(--mc-toggle-hover);
}

.mycrcls-theme-toggle svg {
  width: 20px;
  height: 20px;
  color: var(--mc-toggle-icon);
  transition: color 0.3s ease;
}

/* === ALERTS === */
.pf-v5-c-alert,
.alert,
.kc-feedback-text {
  border-radius: 8px !important;
  margin-bottom: 16px !important;
  padding: 12px 16px !important;
  font-size: 14px !important;
}

.pf-v5-c-alert.pf-m-danger,
.alert-error {
  background: #fef2f2 !important;
  border: 1px solid #fecaca !important;
  color: #991b1b !important;
}

[data-theme="dark"] .pf-v5-c-alert.pf-m-danger,
[data-theme="dark"] .alert-error {
  background: rgba(239, 68, 68, 0.1) !important;
  border-color: rgba(239, 68, 68, 0.3) !important;
  color: #fca5a5 !important;
}

/* === GENERAL LINKS === */
a {
  color: var(--mc-link-color) !important;
  text-decoration: none !important;
}

a:hover {
  color: var(--mc-link-hover) !important;
}

/* === CHECKBOX === */
input[type="checkbox"] {
  width: 16px !important;
  height: 16px !important;
  accent-color: var(--mc-teal-500);
  border-radius: 4px !important;
}

/* === KC FORM OPTIONS (remember me, etc.) === */
#kc-form-options {
  margin: 0 0 20px 0 !important;
  padding: 0 !important;
}

#kc-form-options .checkbox label {
  font-size: 14px !important;
  color: var(--mc-text-secondary) !important;
}

/* === REQUIRED FIELD INDICATOR === */
.pf-v5-c-form__label-required {
  color: #ef4444 !important;
}

/* === ERROR MESSAGE ON FIELDS === */
#input-error-client-username,
#input-error-client-password,
.pf-v5-c-form__helper-text .pf-m-error {
  color: #ef4444 !important;
  font-size: 13px !important;
  margin-top: 4px !important;
}

[data-theme="dark"] #input-error-client-username,
[data-theme="dark"] #input-error-client-password {
  color: #fca5a5 !important;
}

/* === RESPONSIVE === */
@media (min-width: 1024px) {
  .mycrcls-branding {
    display: flex !important;
  }
  .mycrcls-mobile-logo {
    display: none !important;
  }
}

@media (max-width: 1023px) {
  .pf-v5-c-login {
    flex-direction: column !important;
    height: auto !important;
    min-height: 100vh !important;
    overflow: visible !important;
    overflow-x: hidden !important;
  }
  .mycrcls-branding {
    display: none !important;
  }
  .mycrcls-mobile-logo {
    display: flex !important;
  }
  .pf-v5-c-login__container {
    padding: 24px !important;
    justify-content: flex-start !important;
    align-items: stretch !important;
    flex-direction: column !important;
    padding-top: 40px !important;
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
  }
  .pf-v5-c-login__main {
    max-width: 100% !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }
}

@media (max-width: 480px) {
  .pf-v5-c-login__container {
    padding: 20px !important;
    flex-direction: column !important;
  }
  .pf-v5-c-login__main {
    max-width: calc(100vw - 40px) !important;
    width: calc(100vw - 40px) !important;
  }
  .mycrcls-tabs {
    margin-left: 0 !important;
    margin-right: 0 !important;
    max-width: 100% !important;
  }
}

/* === REGISTRATION PAGE - Required fields subtitle === */
.pf-v5-u-mb-md-on-md .subtitle {
  font-size: 13px !important;
  color: var(--mc-text-muted) !important;
  margin-bottom: 8px !important;
}

/* === REGISTRATION PAGE - Bootstrap grid cols (remove padding issues) === */
.col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  padding: 0 !important;
}

/* === REGISTRATION PAGE - Back to Login link === */
#kc-form-options {
  text-align: center !important;
  margin-top: 16px !important;
  padding-top: 0 !important;
  background: none !important;
  border: none !important;
}

/* === REGISTRATION PAGE - "Back to Login" band === */
.pf-v5-c-form__group.pf-v5-c-login__main-footer-band {
  background: none !important;
  border: none !important;
  padding: 0 !important;
  margin-top: 16px !important;
}

/* === OVERRIDE PF-V5-THEME-DARK (Keycloak's built-in dark mode) === */
/* We use [data-theme="dark"] instead, so neutralize PF dark mode */
.pf-v5-theme-dark {
  --pf-v5-global--BackgroundColor--100: var(--mc-page-bg) !important;
  --pf-v5-global--BackgroundColor--200: var(--mc-input-bg) !important;
  --pf-v5-global--Color--100: var(--mc-heading-color) !important;
  --pf-v5-global--Color--200: var(--mc-text-secondary) !important;
  color-scheme: dark;
}
