/* GlobalEduca — tema de login do Keycloak (marca Global Software).
   Estende keycloak.v2 (PatternFly v5); este arquivo só sobrescreve.
   Casa com a tela de login dos apps web: selo redondo, Geist, cartão branco
   com fio superior em gradiente ciano→verde→azul, botão azul #2563eb.
   Todos os templates do keycloak.v2 (login, reset, update-password, erro,
   logout, OTP…) compartilham este DOM, então o CSS cobre todos. */

@font-face {
  font-family: 'Geist';
  src: url('../fonts/geist-sans-variable.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Geist';
  src: url('../fonts/geist-sans-italic-variable.woff2') format('woff2');
  font-weight: 100 900;
  font-style: italic;
  font-display: swap;
}

:root {
  --ge-paper: #f4f6fb;
  --ge-card: #ffffff;
  --ge-ink: #0c1440;
  --ge-ink-soft: #4b5573;
  --ge-ink-muted: #6b7390;
  --ge-line: #d9dfeb;
  --ge-line-strong: #c3cbdd;
  --ge-navy: #010329;
  --ge-blue: #2563eb;
  --ge-blue-deep: #1d4ed8;
  --ge-blue-ring: rgba(37, 99, 235, 0.22);
  --ge-cyan: #22d3ee;
  --ge-green: #34d399;
  --ge-danger: #b91c1c;
  --ge-danger-bg: #fef2f2;
  --ge-danger-line: #fecaca;
  --ge-success: #047857;
  --ge-success-bg: #ecfdf5;
  --ge-success-line: #a7f3d0;
  --ge-warning: #92400e;
  --ge-warning-bg: #fffbeb;
  --ge-warning-line: #fde68a;
  --ge-info: #1e40af;
  --ge-info-bg: #eff6ff;
  --ge-info-line: #bfdbfe;
  --ge-font: 'Geist', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  --ge-radius: 14px;
  --ge-radius-sm: 10px;

  /* PatternFly lê fonte e cores destes tokens — trocar aqui cobre títulos,
     texto, botões e alertas de uma vez. */
  --pf-v5-global--FontFamily--text: var(--ge-font);
  --pf-v5-global--FontFamily--heading: var(--ge-font);
  --pf-v5-global--FontFamily--sans-serif: var(--ge-font);
  --pf-v5-global--FontFamily--heading--sans-serif: var(--ge-font);
  --pf-v5-global--FontFamily--redhat-updated--heading--sans-serif: var(--ge-font);
  --pf-v5-global--FontFamily--redhat-updated--sans-serif: var(--ge-font);
  --pf-v5-global--primary-color--100: var(--ge-blue);
  --pf-v5-global--primary-color--200: var(--ge-blue-deep);
  --pf-v5-global--link--Color: var(--ge-blue-deep);
  --pf-v5-global--link--Color--hover: var(--ge-blue);
  --pf-v5-global--Color--100: var(--ge-ink);
  --pf-v5-global--Color--200: var(--ge-ink-soft);
}

html,
body {
  height: 100%;
}

body,
.pf-v5-c-login,
.login-pf body {
  font-family: var(--ge-font) !important;
  color: var(--ge-ink);
  background-color: var(--ge-paper) !important;
  /* um único brilho suave atrás do selo, nas cores do anel */
  background-image:
    radial-gradient(ellipse 60% 38% at 50% 0%, rgba(34, 211, 238, 0.16), transparent 70%),
    radial-gradient(ellipse 40% 30% at 50% 100%, rgba(37, 99, 235, 0.08), transparent 70%) !important;
  background-size: auto !important;
  background-position: 0 0 !important;
  background-attachment: scroll !important;
  -webkit-font-smoothing: antialiased;
}

.pf-v5-c-login {
  --pf-v5-c-login--PaddingTop: 2.5rem;
  --pf-v5-c-login--PaddingBottom: 2.5rem;
  --pf-v5-c-login--xl--BackgroundImage: none;
  min-height: 100%;
}

.pf-v5-c-login__container {
  grid-template-columns: minmax(0, 25rem);
  grid-template-areas: 'header' 'main';
  row-gap: 1.5rem;
  justify-content: center;
}

/* ── Marca: selo redondo + nome do produto/realm ─────────────────────────
   O selo entra por CSS (o caminho relativo ao tema só existe aqui);
   o texto vem do displayNameHtml do realm:
   GlobalEduca <span class="ge-realm">Gestão</span> */
.pf-v5-c-login__header {
  padding: 0;
}

#kc-header-wrapper,
.pf-v5-c-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  font-family: var(--ge-font) !important;
  font-size: 1.125rem !important;
  font-weight: 600;
  line-height: 1.25 !important;
  letter-spacing: -0.01em !important;
  text-transform: none !important;
  color: var(--ge-navy) !important;
  text-align: center;
  padding: 0 !important;
  margin: 0;
}

#kc-header-wrapper::before {
  content: '';
  display: block;
  width: 7rem;
  height: 7rem;
  margin-bottom: 0.9rem;
  border-radius: 50%;
  background: #fff url('../img/globaleduca-square.png') no-repeat center / 104%;
  box-shadow:
    0 0 0 1px rgba(1, 3, 41, 0.06),
    0 18px 36px -18px rgba(1, 3, 41, 0.45);
}

#kc-header-wrapper .ge-realm {
  display: block;
  margin-top: 0.1rem;
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0;
  color: var(--ge-ink-soft);
}

/* ── Cartão ────────────────────────────────────────────────────────────── */
.pf-v5-c-login__main {
  --pf-v5-c-login__main--BackgroundColor: var(--ge-card);
  --pf-v5-c-login__main--BoxShadow: none;
  position: relative;
  background: var(--ge-card) !important;
  border: 1px solid var(--ge-line);
  border-radius: var(--ge-radius) !important;
  box-shadow:
    0 1px 2px rgba(1, 3, 41, 0.04),
    0 20px 44px -22px rgba(1, 3, 41, 0.28) !important;
  padding-bottom: 0.25rem;
}

.pf-v5-c-login__main::before {
  /* fio no gradiente da marca no topo do cartão */
  content: '';
  position: absolute;
  top: -1px;
  left: -1px;
  right: -1px;
  height: 4px;
  border-radius: var(--ge-radius) var(--ge-radius) 0 0;
  background: linear-gradient(90deg, var(--ge-cyan) 0%, var(--ge-green) 50%, var(--ge-blue) 100%);
}

.pf-v5-c-login__main-header {
  border-top: 0 !important;
  display: block !important;
  grid-template-columns: 1fr !important;
  padding: 2rem 2rem 0.25rem !important;
}

/* seletor de idioma escondido: o realm é pt-BR */
.pf-v5-c-login__main-header-utilities,
#kc-locale {
  display: none !important;
}

#kc-page-title,
.pf-v5-c-login__main-header h1,
.pf-v5-c-title.pf-m-3xl {
  --pf-v5-c-title--m-3xl--FontFamily: var(--ge-font);
  --pf-v5-c-title--m-3xl--FontSize: 1.625rem;
  --pf-v5-c-title--m-3xl--FontWeight: 600;
  --pf-v5-c-title--m-3xl--LineHeight: 1.2;
  font-family: var(--ge-font) !important;
  font-size: 1.625rem !important;
  font-weight: 600 !important;
  line-height: 1.2 !important;
  letter-spacing: -0.02em;
  color: var(--ge-navy) !important;
  margin: 0;
}

.pf-v5-c-login__main-body {
  padding: 1.25rem 2rem 1.5rem !important;
}

/* ── Campos ────────────────────────────────────────────────────────────── */
.pf-v5-c-form {
  --pf-v5-c-form--GridGap: 1.1rem;
}

.pf-v5-c-form__group-label {
  padding-bottom: 0.4rem !important;
}

.pf-v5-c-form__label,
.pf-v5-c-form__label-text {
  font-family: var(--ge-font);
  font-size: 0.8125rem !important;
  font-weight: 500 !important;
  color: var(--ge-ink-soft) !important;
  letter-spacing: 0;
}

.pf-v5-c-form__label-required {
  color: var(--ge-danger);
}

.pf-v5-c-form-control {
  --pf-v5-c-form-control--BorderWidth: 1px;
  --pf-v5-c-form-control--BorderColor: var(--ge-line-strong);
  --pf-v5-c-form-control--BackgroundColor: #fff;
  --pf-v5-c-form-control--Color: var(--ge-ink);
  --pf-v5-c-form-control--FontSize: 0.9375rem;
  --pf-v5-c-form-control--PaddingInlineStart: 0.8rem;
  --pf-v5-c-form-control--PaddingInlineEnd: 0.8rem;
  --pf-v5-c-form-control--hover--BorderBottomColor: var(--ge-blue);
  --pf-v5-c-form-control--focus--BorderBottomColor: var(--ge-blue);
  --pf-v5-c-form-control--focus--BorderBottomWidth: 1px;
  --pf-v5-c-form-control--focus--OutlineOffset: 0;
  --pf-v5-c-form-control--m-error--BorderBottomColor: var(--ge-danger);
  --pf-v5-c-form-control--m-error--BorderBottomWidth: 1px;
  --pf-v5-c-form-control--m-error--OutlineColor: var(--ge-danger);
  border: 1px solid var(--ge-line-strong);
  border-radius: var(--ge-radius-sm) !important;
  background: #fff;
  min-height: 2.75rem;
  transition: border-color 120ms ease, box-shadow 120ms ease;
}

.pf-v5-c-form-control > input,
.pf-v5-c-form-control > select,
.pf-v5-c-form-control > textarea {
  font-family: var(--ge-font);
  font-size: 0.9375rem;
  color: var(--ge-ink);
  min-height: calc(2.75rem - 2px);
  padding-block: 0;
  padding-inline: 0.8rem;
}

/* o anel de foco é do wrapper; o input em si não desenha o contorno do navegador */
.pf-v5-c-form-control > input:focus,
.pf-v5-c-form-control > input:focus-visible,
.pf-v5-c-form-control > select:focus,
.pf-v5-c-form-control > textarea:focus {
  outline: none !important;
  box-shadow: none !important;
}

.pf-v5-c-form-control > input::placeholder {
  color: var(--ge-ink-muted);
}

.pf-v5-c-form-control:hover {
  border-color: var(--ge-blue);
}

.pf-v5-c-form-control:focus-within {
  outline: none !important;
  border-color: var(--ge-blue);
  box-shadow: 0 0 0 3px var(--ge-blue-ring);
}

.pf-v5-c-form-control.pf-m-error {
  border-color: var(--ge-danger);
}

.pf-v5-c-form-control.pf-m-error:focus-within {
  box-shadow: 0 0 0 3px rgba(185, 28, 28, 0.18);
}

/* PF sublinha o campo com uma borda inferior mais grossa; o anel já sinaliza foco */
.pf-v5-c-form-control::after {
  display: none !important;
}

/* senha: campo + botão de mostrar/ocultar como um bloco só */
.pf-v5-c-input-group {
  --pf-v5-c-input-group--BackgroundColor: transparent;
  --pf-v5-c-input-group--BorderRadius: var(--ge-radius-sm);
  border-radius: var(--ge-radius-sm);
  transition: box-shadow 120ms ease;
}

.pf-v5-c-input-group:focus-within {
  box-shadow: 0 0 0 3px var(--ge-blue-ring);
}

.pf-v5-c-input-group .pf-v5-c-form-control:focus-within {
  box-shadow: none;
}

.pf-v5-c-input-group__item.pf-m-fill .pf-v5-c-form-control {
  border-right: 0;
  border-radius: var(--ge-radius-sm) 0 0 var(--ge-radius-sm) !important;
}

.pf-v5-c-input-group:focus-within .pf-v5-c-form-control,
.pf-v5-c-input-group:focus-within .pf-v5-c-button.pf-m-control {
  border-color: var(--ge-blue);
}

.pf-v5-c-input-group:hover .pf-v5-c-button.pf-m-control {
  border-color: var(--ge-blue);
}

/* campo de senha com erro: o botão de mostrar/ocultar acompanha a borda vermelha */
.pf-v5-c-input-group:has(.pf-v5-c-form-control.pf-m-error) .pf-v5-c-button.pf-m-control {
  border-color: var(--ge-danger) !important;
}

.pf-v5-c-input-group:has(.pf-v5-c-form-control.pf-m-error):focus-within {
  box-shadow: 0 0 0 3px rgba(185, 28, 28, 0.18);
}

.pf-v5-c-button.pf-m-control {
  --pf-v5-c-button--m-control--BackgroundColor: #fff;
  --pf-v5-c-button--m-control--Color: var(--ge-ink-muted);
  --pf-v5-c-button--m-control--hover--Color: var(--ge-blue-deep);
  --pf-v5-c-button--m-control--hover--BackgroundColor: #fff;
  --pf-v5-c-button--m-control--active--BackgroundColor: #fff;
  --pf-v5-c-button--m-control--focus--BackgroundColor: #fff;
  background: #fff !important;
  color: var(--ge-ink-muted) !important;
  border: 1px solid var(--ge-line-strong) !important;
  border-left: 0 !important;
  border-radius: 0 var(--ge-radius-sm) var(--ge-radius-sm) 0 !important;
  min-height: 2.75rem;
  padding-inline: 0.85rem;
  transition: border-color 120ms ease, color 120ms ease;
}

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

.pf-v5-c-button.pf-m-control:hover {
  color: var(--ge-blue-deep) !important;
}

.pf-v5-c-button.pf-m-control:focus-visible {
  outline: 2px solid var(--ge-blue);
  outline-offset: -2px;
}

/* campo somente leitura (usuário já identificado no "tentar outra forma") */
.pf-v5-c-form-control.pf-m-readonly {
  background: var(--ge-paper);
}

/* ── Texto auxiliar / erro de campo / "Esqueceu sua senha?" ─────────────── */
.pf-v5-c-form__helper-text {
  margin-top: 0.4rem;
}

.pf-v5-c-helper-text__item-text {
  font-family: var(--ge-font);
  font-size: 0.8125rem;
  color: var(--ge-ink-soft);
}

.pf-v5-c-helper-text__item.pf-m-error .pf-v5-c-helper-text__item-text,
.pf-v5-c-helper-text__item-text.pf-m-error {
  color: var(--ge-danger) !important;
  font-weight: 500;
}

.pf-v5-c-helper-text.pf-v5-u-justify-content-space-between {
  justify-content: flex-end !important;
}

/* erro de campo fica alinhado à esquerda, sob o campo; só o link
   "Esqueceu sua senha?" vai para a direita */
[id^='input-error-container-'] .pf-v5-c-helper-text {
  justify-content: flex-start !important;
}

[id^='input-error-container-'] .pf-v5-c-form__helper-text {
  margin-top: 0.4rem;
}

.pf-v5-c-helper-text__item-text a,
#kc-form-options a,
.pf-v5-c-login__main-body a {
  color: var(--ge-blue-deep) !important;
  font-weight: 500;
  text-decoration: none;
  text-underline-offset: 3px;
}

.pf-v5-c-helper-text__item-text a:hover,
#kc-form-options a:hover,
.pf-v5-c-login__main-body a:hover {
  text-decoration: underline;
}

/* checkbox "lembrar de mim" */
.pf-v5-c-check__label {
  font-family: var(--ge-font);
  font-size: 0.875rem;
  color: var(--ge-ink-soft);
}

.pf-v5-c-check__input {
  accent-color: var(--ge-blue);
}

/* ── Botões ────────────────────────────────────────────────────────────── */
.pf-v5-c-form__actions {
  padding-top: 0.35rem !important;
  gap: 0.6rem;
}

.pf-v5-c-button {
  --pf-v5-c-button--FontWeight: 600;
  font-family: var(--ge-font);
  border-radius: var(--ge-radius-sm) !important;
}

.pf-v5-c-button.pf-m-primary {
  --pf-v5-c-button--m-primary--BackgroundColor: var(--ge-blue);
  --pf-v5-c-button--m-primary--hover--BackgroundColor: var(--ge-blue-deep);
  --pf-v5-c-button--m-primary--focus--BackgroundColor: var(--ge-blue-deep);
  --pf-v5-c-button--m-primary--active--BackgroundColor: var(--ge-blue-deep);
  --pf-v5-c-button--m-primary--Color: #fff;
  background-color: var(--ge-blue) !important;
  color: #fff !important;
  font-size: 0.9375rem !important;
  font-weight: 600 !important;
  min-height: 2.875rem;
  padding: 0.65rem 1.25rem !important;
  border: 0 !important;
  box-shadow: 0 6px 16px -8px rgba(37, 99, 235, 0.7);
  transition: background-color 120ms ease, box-shadow 120ms ease, transform 80ms ease;
}

.pf-v5-c-button.pf-m-primary:hover {
  background-color: var(--ge-blue-deep) !important;
  box-shadow: 0 8px 18px -8px rgba(29, 78, 216, 0.75);
}

.pf-v5-c-button.pf-m-primary:active {
  transform: translateY(1px);
  box-shadow: none;
}

.pf-v5-c-button.pf-m-primary:focus-visible,
.pf-v5-c-button.pf-m-secondary:focus-visible {
  outline: 2px solid var(--ge-blue);
  outline-offset: 2px;
}

/* botão secundário ("Voltar ao login", "tentar outra forma", cancelar) */
.pf-v5-c-button.pf-m-secondary {
  --pf-v5-c-button--m-secondary--Color: var(--ge-ink-soft);
  --pf-v5-c-button--m-secondary--BorderColor: var(--ge-line);
  --pf-v5-c-button--m-secondary--hover--Color: var(--ge-blue-deep);
  --pf-v5-c-button--m-secondary--hover--BorderColor: var(--ge-blue);
  color: var(--ge-ink-soft) !important;
  background: transparent !important;
  border: 1px solid var(--ge-line) !important;
  font-size: 0.9375rem;
  font-weight: 500 !important;
  min-height: 2.75rem;
  text-decoration: none;
}

.pf-v5-c-button.pf-m-secondary::after {
  display: none;
}

.pf-v5-c-button.pf-m-secondary:hover {
  color: var(--ge-blue-deep) !important;
  border-color: var(--ge-blue) !important;
  background: rgba(37, 99, 235, 0.04) !important;
}

.pf-v5-c-button.pf-m-link {
  color: var(--ge-blue-deep) !important;
  font-weight: 500;
}

/* ── Alertas (erro de login, avisos, sucesso) ───────────────────────────── */
.pf-v5-c-alert.pf-m-inline {
  --pf-v5-c-alert--BoxShadow: none;
  --pf-v5-c-alert--BorderTopWidth: 0;
  --pf-v5-c-alert--GridTemplateColumns: max-content 1fr;
  --pf-v5-c-alert--PaddingTop: 0.75rem;
  --pf-v5-c-alert--PaddingBottom: 0.75rem;
  --pf-v5-c-alert--PaddingRight: 0.9rem;
  --pf-v5-c-alert--PaddingLeft: 0.9rem;
  --pf-v5-c-alert__title--FontSize: 0.875rem;
  --pf-v5-c-alert__icon--FontSize: 1rem;
  --pf-v5-c-alert__icon--MarginTop: 0.05rem;
  border: 1px solid var(--ge-line);
  border-top-width: 1px !important;
  border-radius: var(--ge-radius-sm);
  box-shadow: none;
  margin-bottom: 1.1rem !important;
  align-items: start;
}

.pf-v5-c-alert__title {
  font-family: var(--ge-font);
  font-size: 0.875rem !important;
  font-weight: 500 !important;
  line-height: 1.4;
  color: inherit !important;
}

.pf-v5-c-alert__icon,
.pf-v5-c-alert__icon > span {
  color: inherit;
}

.pf-v5-c-alert.pf-m-danger {
  color: var(--ge-danger);
  background: var(--ge-danger-bg);
  border-color: var(--ge-danger-line);
  --pf-v5-c-alert--m-danger__icon--Color: var(--ge-danger);
  --pf-v5-c-alert--m-danger__title--Color: var(--ge-danger);
}

.pf-v5-c-alert.pf-m-success {
  color: var(--ge-success);
  background: var(--ge-success-bg);
  border-color: var(--ge-success-line);
  --pf-v5-c-alert--m-success__icon--Color: var(--ge-success);
  --pf-v5-c-alert--m-success__title--Color: var(--ge-success);
}

.pf-v5-c-alert.pf-m-warning {
  color: var(--ge-warning);
  background: var(--ge-warning-bg);
  border-color: var(--ge-warning-line);
  --pf-v5-c-alert--m-warning__icon--Color: var(--ge-warning);
  --pf-v5-c-alert--m-warning__title--Color: var(--ge-warning);
}

.pf-v5-c-alert.pf-m-info {
  color: var(--ge-info);
  background: var(--ge-info-bg);
  border-color: var(--ge-info-line);
  --pf-v5-c-alert--m-info__icon--Color: var(--ge-info);
  --pf-v5-c-alert--m-info__title--Color: var(--ge-info);
}

/* ── Texto informativo dentro do cartão (instruções do reset, erro, logout) */
.pf-v5-c-login__main-body .pf-v5-c-login__main-footer-band,
#kc-info,
#kc-info-wrapper,
#kc-error-message,
.instruction,
.pf-v5-c-login__main-footer-band-item,
.pf-v5-u-font-size-sm.pf-v5-u-color-200 {
  font-family: var(--ge-font);
  font-size: 0.875rem !important;
  line-height: 1.5;
  color: var(--ge-ink-soft) !important;
  text-align: left;
}

.pf-v5-c-login__main-body .pf-v5-c-login__main-footer-band {
  padding: 1rem 0 0 !important;
  margin-top: 1rem !important;
  border-top: 1px solid var(--ge-line);
}

.pf-v5-c-login__main-body .pf-v5-c-login__main-footer-band-item {
  padding: 0;
}

#kc-error-message .instruction,
#kc-logout-confirm .instruction,
.instruction {
  margin: 0 0 1rem;
}

#kc-error-message a,
#kc-info a {
  color: var(--ge-blue-deep) !important;
  font-weight: 500;
}

/* lista de requisitos de senha (política do realm) */
.pf-v5-c-helper-text__item.pf-m-success .pf-v5-c-helper-text__item-text {
  color: var(--ge-success);
}

/* ── Rodapé fora do cartão (footer.ftl deste tema) ─────────────────────── */
.pf-v5-c-login__main > .pf-v5-c-login__main-footer {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  padding: 1.25rem 0 0 !important;
  text-align: center;
}

.ge-footer {
  margin: 0;
  font-family: var(--ge-font);
  font-size: 0.8125rem;
  color: var(--ge-ink-muted);
  letter-spacing: 0;
}

/* ── Responsivo ───────────────────────────────────────────────────────── */
@media (max-width: 480px) {
  .pf-v5-c-login {
    --pf-v5-c-login--PaddingTop: 1.5rem;
    --pf-v5-c-login--PaddingBottom: 3.5rem;
    padding-inline: 1rem;
  }

  .pf-v5-c-login__container {
    grid-template-columns: minmax(0, 1fr);
    width: 100%;
    row-gap: 1rem;
  }

  #kc-header-wrapper::before {
    width: 6rem;
    height: 6rem;
  }

  .pf-v5-c-login__main-header {
    padding: 1.5rem 1.25rem 0.25rem !important;
  }

  .pf-v5-c-login__main-body {
    padding: 1rem 1.25rem 1.25rem !important;
  }

  #kc-page-title,
  .pf-v5-c-login__main-header h1 {
    font-size: 1.5rem !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .pf-v5-c-form-control,
  .pf-v5-c-input-group,
  .pf-v5-c-button {
    transition: none;
  }
}
