/* =============================================================================
 * Attempo -- UX e UI da tela de login do Portal do Consorciado KSK
 * 13/08/2026 -- cartao de vidro escuro (glassmorphism) sobre o degrade da marca
 *
 * TRES REGRAS DE SOBREVIVENCIA
 * 1. Nenhuma classe de styled-components (sc-dxtBLK, hhPWMs...): o hash muda a cada
 *    build da Siens e o ajuste morreria em silencio. Aqui so entram classes do
 *    Bootstrap, classes proprias do app que nao sao geradas (logoSecondary,
 *    infoFooter), seletor de elemento e estrutura.
 * 2. Cartao transparente escurece o fundo do cartao, portanto TODO texto interno
 *    precisa ser invertido para claro. Se so a transparencia entrasse, o texto
 *    escuro do app ficaria ilegivel.
 * 3. O logo tem que ser a versao BRANCA da marca atual. Medido nos arquivos do
 *    servidor: logo_cnk.png e o ciano correto mas com fundo branco chapado
 *    (alpha 255 nos cantos), e os arquivos "_transp" sao da marca ANTIGA, vermelha
 *    (traco dominante rgb ~224,64,64), cujo uso violaria o manual. Por isso entra
 *    attempo-marca-ksk.svg, o logo branco oficial extraido do proprio site da KSK.
 * ============================================================================= */

/* ============ 0. fundo da pagina ============
 * MEDIDO em producao: abaixo de 992px o app NAO pinta imagem de fundo
 * (background-image computado = none) e a tela fica branca. Como o cartao agora e
 * vidro escuro com texto claro, sobre branco ele perderia contraste. Entao o fundo
 * escuro passa a valer em qualquer largura: cor solida como piso, mais a imagem.
 */
#root > div { background-color: #0b2a52 !important; }

@media (max-width: 991.98px) {
  #root > div {
    background-image: url("/imagens/cnk/fundo_cnk.png") !important;
    background-size: cover !important;
    background-position: 50% 50% !important;
    background-repeat: no-repeat !important;
  }
}

/* ============ 1. cartao: vidro escuro ============
 * brightness() no backdrop garante contraste mesmo na parte clara do degrade,
 * em vez de depender da sorte do pixel que estiver atras.
 */
.col-lg-6 > div {
  background: linear-gradient(160deg, rgba(255, 255, 255, .14), rgba(255, 255, 255, .06)) !important;
  -webkit-backdrop-filter: blur(26px) saturate(1.1) brightness(.72);
  backdrop-filter: blur(26px) saturate(1.1) brightness(.72);
  border: 1px solid rgba(255, 255, 255, .22) !important;
  border-radius: 22px !important;
  box-shadow: 0 30px 80px rgba(2, 10, 28, .55), inset 0 1px 0 rgba(255, 255, 255, .18) !important;
  padding: 10px 8px !important;
}

/* ============ 2. logo dentro do cartao: versao branca ============ */
.col-lg-6 figure.logoSecondary:has(img[src*="logo_cnk"]) {
  height: 58px;
  max-width: 200px;
  background: url("/attempo-marca-ksk.svg") center center / contain no-repeat;
}
.col-lg-6 figure.logoSecondary:has(img[src*="logo_cnk"]) img { visibility: hidden; }
/* a segunda figure do cartao carrega <img src=""> e so ocupa espaco morto */
.col-lg-6 figure.logoSecondary:has(img[src=""]) { display: none !important; }

/* ============ 3. texto do cartao, invertido para claro ============ */
.col-lg-6 h1 {
  color: #fff !important;
  letter-spacing: -.2px;
}
.col-lg-6 h1 + p,
.col-lg-6 .infoFooter p { color: rgba(255, 255, 255, .78) !important; }

/* `p:has(+ form)` pega a instrucao imediatamente antes do formulario sem depender de
 * classe gerada. O vermelho de hoje vem da corSecundaria e faz instrucao normal
 * parecer mensagem de erro.
 */
.col-lg-6 p:has(+ form) {
  color: rgba(255, 255, 255, .86) !important;
  font-weight: 500 !important;
}

/* ============ 4. campos sobre vidro escuro ============ */
.col-lg-6 input.form-control {
  background: rgba(255, 255, 255, .10) !important;
  border: 1px solid rgba(255, 255, 255, .26) !important;
  border-radius: 12px !important;
  min-height: 48px !important;
  color: #fff !important;
  transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
.col-lg-6 input.form-control::placeholder { color: rgba(255, 255, 255, .62) !important; }
.col-lg-6 input.form-control:hover { border-color: rgba(255, 255, 255, .40) !important; }
.col-lg-6 input.form-control:focus {
  background: rgba(255, 255, 255, .16) !important;
  border-color: #41c0f0 !important;
  box-shadow: 0 0 0 3px rgba(65, 192, 240, .25) !important;
  color: #fff !important;
}
/* preenchimento automatico do navegador nao pode voltar com fundo branco e texto escuro */
.col-lg-6 input.form-control:-webkit-autofill,
.col-lg-6 input.form-control:-webkit-autofill:focus {
  -webkit-text-fill-color: #fff !important;
  -webkit-box-shadow: 0 0 0 1000px rgba(20, 64, 116, .92) inset !important;
  caret-color: #fff;
}
/* o app aplica margem negativa inline na linha Cota/Digito e aperta o formulario */
.col-lg-6 form .row {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
/* o olho de mostrar senha vem com fill fixo cinza, escuro demais para vidro escuro */
.col-lg-6 form button svg path { fill: rgba(255, 255, 255, .78) !important; }

/* ============ 5. botao principal: ciano da marca ============
 * Ciano com texto navy da ~7:1 de contraste, bem acima do minimo, e e a cor
 * assinatura da KSK. Preto do config (#161616) some no vidro escuro.
 */
.col-lg-6 button.btn.btn-primary {
  background: #41c0f0 !important;
  border: 1px solid #41c0f0 !important;
  color: #0b2a52 !important;
  border-radius: 12px !important;
  min-height: 50px !important;
  font-weight: 700 !important;
  letter-spacing: .2px;
  box-shadow: 0 10px 26px rgba(65, 192, 240, .28) !important;
  transition: background .15s ease, transform .06s ease, box-shadow .15s ease;
}
.col-lg-6 button.btn.btn-primary:hover,
.col-lg-6 button.btn.btn-primary:focus {
  background: #64cef6 !important;
  border-color: #64cef6 !important;
  box-shadow: 0 12px 30px rgba(65, 192, 240, .38) !important;
}
.col-lg-6 button.btn.btn-primary:active { transform: translateY(1px); }

/* ============ 6. links e foco visivel ============ */
.col-lg-6 a { color: #9fe0fa !important; }
.col-lg-6 a:hover { color: #fff !important; }
.col-lg-6 a:focus-visible,
.col-lg-6 button:focus-visible {
  outline: 3px solid rgba(65, 192, 240, .55) !important;
  outline-offset: 2px;
  border-radius: 8px;
}

/* ============ 7. rodape do cartao ============ */
.col-lg-6 .infoFooter {
  color: rgba(255, 255, 255, .78) !important;
  border-top: 1px solid rgba(255, 255, 255, .16);
  margin-top: 20px;
  padding-top: 14px;
}
.col-lg-6 .infoFooter strong { color: #fff !important; }

/* ============ 8. tela de carregamento ============
 * O overlay original pisca cinza (#d0d0d0) com a animacao da SIENS, 351 KB: a marca
 * do fornecedor aparecendo no portal do consorciado da KSK. Passa a ser o navy da
 * marca com indicador neutro em CSS.
 */
#loading > div {
  background: #0b2a52 !important;
  opacity: 1 !important;
}
#loading img { display: none !important; }
#loading > div::after {
  content: "";
  width: 42px;
  height: 42px;
  border: 3px solid rgba(255, 255, 255, .25);
  border-top-color: #41c0f0;
  border-radius: 50%;
  animation: attempo-gira .9s linear infinite;
}
@keyframes attempo-gira { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  #loading > div::after { animation-duration: 3s; }
}

/* ============ 9. marca e dados da empresa (elementos reais) ============ */
#attempo-marca,
#attempo-dados { display: none; }

body:has(form input#group) #attempo-marca,
body:has(form input#group) #attempo-dados { display: block; }

#attempo-marca {
  position: fixed;
  top: 46px;
  left: 48px;
  z-index: 4;
  pointer-events: none;
}
#attempo-marca img {
  display: block;
  width: 250px;
  height: auto;
}

#attempo-dados {
  position: fixed;
  bottom: 38px;
  left: 48px;
  z-index: 4;
  max-width: 440px;
  color: rgba(255, 255, 255, .80);
  font: 400 13px/1.7 Inter, Roboto, "Segoe UI", system-ui, sans-serif;
  letter-spacing: .1px;
}
#attempo-dados p { margin: 0 0 3px; }
#attempo-dados strong { color: #fff; font-weight: 600; }
#attempo-dados .nb { white-space: nowrap; }   /* telefone nunca quebra no meio */
#attempo-dados a {
  color: rgba(255, 255, 255, .80) !important;
  text-decoration: none;
}
#attempo-dados a:hover,
#attempo-dados a:focus { color: #41c0f0 !important; text-decoration: underline; }
#attempo-dados a:focus-visible {
  outline: 2px solid rgba(65, 192, 240, .6);
  outline-offset: 2px;
}

/* Abaixo de 992px o cartao ocupa a largura toda: marca e dados saem de cena, sem
 * chance de sobreposicao. O proprio cartao ja carrega telefone e e-mail nesse caso.
 */
@media (max-width: 991.98px) {
  body:has(form input#group) #attempo-marca,
  body:has(form input#group) #attempo-dados { display: none; }
}

/* Janela baixa: os dados saem antes de encostar em qualquer coisa. */
@media (max-height: 700px) {
  body:has(form input#group) #attempo-dados { display: none; }
}
