/* ===========================================================================
   Portal de Autocontratação de Crédito Estudantil — identidade visual b.Uni
   Paleta: azul #02527e / #00263b, ciano #00b2ff, coral #c63646, amarelo #f6a704
   Fonte: Maven Pro
   =========================================================================== */

:root {
  --buni-azul: #02527e;
  --buni-azul-escuro: #00263b;
  --buni-azul-claro: #5084a9;
  --buni-ciano: #00b2ff;
  --buni-coral: #c63646;
  --buni-amarelo: #f6a704;
  --buni-cinza: #4a5464;
  --buni-cinza-claro: #c1c8d1;
}

* { font-family: 'Maven Pro', system-ui, -apple-system, 'Segoe UI', sans-serif; }

body { color: var(--buni-azul-escuro); background: #eef2f6; }

.bg-buni-gradient {
  background: linear-gradient(120deg, var(--buni-azul-escuro), var(--buni-azul) 60%, var(--buni-azul-claro));
}
.text-buni-azul { color: var(--buni-azul); }
.text-buni-coral { color: var(--buni-coral); }
.bg-buni-azul { background: var(--buni-azul); }
.bg-buni-coral { background: var(--buni-coral); }

/* ---------- Form fields ---------- */
.lbl {
  display: block;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--buni-cinza);
  margin-bottom: 0.3rem;
}
.lbl .req { color: var(--buni-coral); margin-left: 2px; }

.inp, select.inp, textarea.inp {
  width: 100%;
  border: 1px solid #cbd5e1;
  border-radius: 0.6rem;
  padding: 0.6rem 0.8rem;
  font-size: 0.95rem;
  background: #fff;
  color: var(--buni-azul-escuro);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.inp:focus {
  outline: none;
  border-color: var(--buni-azul);
  box-shadow: 0 0 0 3px rgba(2, 82, 126, 0.15);
}
.inp:disabled, .inp[readonly] { background: #f1f5f9; color: #64748b; cursor: not-allowed; }
.inp.err { border-color: var(--buni-coral); box-shadow: 0 0 0 3px rgba(198,54,70,0.12); }

/* ---------- Buttons ---------- */
.btn-primary {
  background: var(--buni-azul);
  color: #fff;
  font-weight: 700;
  padding: 0.75rem 1.4rem;
  border-radius: 0.8rem;
  transition: background 0.15s, transform 0.05s, box-shadow 0.15s;
  box-shadow: 0 4px 14px rgba(2, 82, 126, 0.25);
}
.btn-primary:hover { background: #013f61; }
.btn-primary:active { transform: scale(0.99); }
.btn-primary:disabled { opacity: 0.55; cursor: not-allowed; box-shadow: none; }

.btn-coral {
  background: var(--buni-coral);
  color: #fff;
  font-weight: 700;
  padding: 0.75rem 1.4rem;
  border-radius: 0.8rem;
  transition: background 0.15s, transform 0.05s;
  box-shadow: 0 4px 14px rgba(198, 54, 70, 0.25);
}
.btn-coral:hover { background: #a82c39; }
.btn-coral:disabled { opacity: 0.55; cursor: not-allowed; box-shadow: none; }

.btn-secondary {
  background: #fff;
  color: var(--buni-azul);
  font-weight: 700;
  padding: 0.75rem 1.4rem;
  border-radius: 0.8rem;
  border: 1.5px solid var(--buni-azul);
  transition: background 0.15s;
}
.btn-secondary:hover { background: #eaf3f8; }

/* ---------- Stepper ---------- */
.stepper { display: flex; align-items: center; gap: 0; }
.step { display: flex; align-items: center; gap: 0.5rem; }
.step-dot {
  display: inline-flex; align-items: center; justify-content: center;
  width: 2rem; height: 2rem; border-radius: 9999px;
  background: rgba(255,255,255,0.25); color: #fff;
  font-weight: 700; font-size: 0.85rem; flex-shrink: 0;
  border: 2px solid transparent; transition: all .2s;
}
.step-label { color: rgba(255,255,255,0.7); font-weight: 600; font-size: 0.82rem; white-space: nowrap; }
.step-line { flex: 1; height: 2px; background: rgba(255,255,255,0.25); margin: 0 0.5rem; min-width: 12px; }
.step.active .step-dot { background: var(--buni-amarelo); color: var(--buni-azul-escuro); border-color: #fff; }
.step.active .step-label { color: #fff; }
.step.done .step-dot { background: var(--buni-ciano); color: var(--buni-azul-escuro); }
.step.done .step-label { color: #fff; }

/* ---------- Cards / sections ---------- */
.card {
  background: #fff;
  border-radius: 1.1rem;
  box-shadow: 0 10px 30px rgba(0, 38, 59, 0.08);
}
.section-title {
  font-size: 1.15rem; font-weight: 700; color: var(--buni-azul);
  display: flex; align-items: center; gap: .55rem;
}
.hint { font-size: 0.8rem; color: #64748b; }

/* Cartão de curso selecionável */
.curso-card {
  border: 2px solid #e2e8f0; border-radius: 1rem; padding: 1rem 1.25rem;
  cursor: pointer; transition: border-color .15s, background .15s, box-shadow .15s;
}
.curso-card:hover { border-color: var(--buni-ciano); }
.curso-card.selected { border-color: var(--buni-azul); background: #eef6fb; box-shadow: 0 6px 18px rgba(2,82,126,.12); }

/* Resumo / chips */
.chip {
  display: inline-flex; align-items: center; gap: .4rem;
  background: #eef6fb; color: var(--buni-azul); font-weight: 600;
  padding: .25rem .7rem; border-radius: 9999px; font-size: .8rem;
}

/* Resultado financeiro */
.fin-box { background: linear-gradient(120deg, #eef6fb, #fff); border: 1px solid #d6e6f0; border-radius: 1rem; }
.fin-destaque { color: var(--buni-coral); font-weight: 800; }

/* Tabela de parcelas */
.tbl-parcelas { width: 100%; border-collapse: collapse; font-size: .82rem; }
.tbl-parcelas th { background: #f1f5f9; color: var(--buni-cinza); text-align: right; padding: .5rem .6rem; font-weight: 700; }
.tbl-parcelas th:first-child, .tbl-parcelas td:first-child { text-align: center; }
.tbl-parcelas td { padding: .45rem .6rem; text-align: right; border-bottom: 1px solid #eef2f6; }

/* Alertas */
.alert { border-radius: .8rem; padding: .85rem 1rem; font-size: .9rem; display: flex; gap: .6rem; align-items: flex-start; }
.alert-erro { background: #fde8ea; color: #a82c39; border: 1px solid #f3c4ca; }
.alert-info { background: #e7f6ff; color: #035e8c; border: 1px solid #bfe6fa; }
.alert-ok { background: #e6f7ee; color: #1b7a47; border: 1px solid #bce8cf; }

@keyframes fadein { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.step-panel:not(.hidden) { animation: fadein 0.25s ease; }

/* Loader */
.spinner { width: 1.1rem; height: 1.1rem; border: 2.5px solid rgba(255,255,255,.4); border-top-color: #fff; border-radius: 50%; animation: spin .7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* Footer */
.footer-credit { color: #5b6b7a; font-size: .8rem; }
.footer-credit strong { color: var(--buni-azul); }
