/* ===== Páginas públicas, login e telas avulsas: novo visual (mesma paleta) ===== */
body { background:#f6f7fb; }
.ic { flex-shrink:0; vertical-align:-3px; }

/* Topo das páginas públicas */
.topo-publico { background:linear-gradient(135deg,#4338ca 0%,#6d3fd8 100%); padding:22px 20px 88px; }
.topo-publico::before, .topo-publico::after { display:none; }
.topo-conteudo, .faixa-titulo { max-width:960px; }
.marca-topo .logo-circulo { width:42px; height:42px; border-radius:12px; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.3); }
.marca-topo h1 { font-size:1.08rem; font-weight:600; }
.marca-topo span { font-size:.78rem; color:rgba(255,255,255,.75); }
.nav-publica a { display:inline-flex; align-items:center; gap:7px; border-radius:10px; padding:8px 14px; font-size:.84rem; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.25); }
.faixa-titulo { margin-top:26px; }
.faixa-titulo h2 { font-size:1.55rem; font-weight:600; letter-spacing:-.015em; }
.faixa-titulo p { color:rgba(255,255,255,.82); font-size:.95rem; }
.container-publico { margin-top:-58px; }

/* Cartões e botões */
.cartao { border:1px solid #eceef5; border-radius:14px; box-shadow:0 1px 2px rgba(17,24,39,.04), 0 14px 34px -20px rgba(55,48,163,.3); }
.cartao-cabecalho h3, .cartao h3 { font-weight:600; font-size:1.05rem; }
.botao { border-radius:10px; font-weight:600; }
.botao-primario { background:#4f46e5; box-shadow:0 1px 2px rgba(79,70,229,.3); }
.botao-primario:hover { background:#4338ca; transform:none; box-shadow:0 4px 12px -2px rgba(79,70,229,.35); }
.botao-secundario { border:1px solid #dcdff0; color:#3730a3; }
.botao-secundario:hover { background:#f5f6ff; }
input[type="text"], input[type="tel"], input[type="password"], input[type="date"], input[type="time"], input[type="number"], select, textarea { border:1px solid #dcdff0; border-radius:10px; background:#fff; }
input:focus, select:focus, textarea:focus { border-color:#4f46e5; box-shadow:0 0 0 3px rgba(79,70,229,.14); }
label { color:#4b5063; font-weight:500; }
.alerta { border-radius:10px; }

/* Boas-vindas */
.icone-boas-vindas { width:56px; height:56px; border-radius:14px; background:#eef2ff; color:#4f46e5; display:flex; align-items:center; justify-content:center; margin:0 auto 16px; }

/* Calendário */
.calendario-cabecalho h4 { text-transform:none; font-size:1.05rem; font-weight:600; }
.botao-navegacao { border:1px solid #dcdff0; border-radius:10px; width:36px; height:36px; }
.grade-dias-semana, .grade-calendario { gap:8px; }
.grade-dias-semana span { font-size:.7rem; letter-spacing:.06em; color:#8a90a6; }
.dia-calendario { border-radius:12px; border:1px solid transparent; }
.dia-calendario.disponivel { background:#f1f3ff; border-color:#e0e4ff; }
.dia-calendario.disponivel:hover { transform:none; background:#e4e8ff; color:#3730a3; border-color:#4f46e5; }
.dia-calendario.disponivel:hover .rotulo-vagas { color:#3730a3; }
.dia-calendario.disponivel.poucas-vagas { background:#fff4e8; border-color:#fde0c2; color:#b45309; }
.dia-calendario.disponivel.poucas-vagas:hover { background:#ffe8cc; color:#9a3412; border-color:#f97316; }
.dia-calendario.disponivel.poucas-vagas:hover .rotulo-vagas { color:#9a3412; }
.dia-calendario.selecionado, .dia-calendario.selecionado:hover { background:#4f46e5; border-color:#4f46e5; color:#fff; box-shadow:0 6px 14px -6px rgba(79,70,229,.6); }
.dia-calendario.selecionado .rotulo-vagas, .dia-calendario.selecionado:hover .rotulo-vagas { color:#fff; opacity:.9; }
.dia-calendario.lotado { background:#fffaeb; border-color:#fcefc2; }
.dia-calendario.feriado { background:#fef3f2; border-color:#fddcda; }
.dia-calendario.bloqueado, .dia-calendario.fim_semana { background:#f4f5f8; border-color:#eceef3; }
.dia-calendario.passado { background:transparent; border-color:transparent; color:#cfd3de; }
@media (min-width:641px) {
  .dia-calendario { aspect-ratio:auto; min-height:76px; }
  .dia-calendario.vazio { min-height:0; }
}
.lista-feriados-mes, .lista-bloqueios-mes { border-radius:10px; }
.legenda-calendario { gap:10px 18px; margin-top:18px; }
.legenda-cor { width:14px; height:14px; border-radius:5px; border:1px solid rgba(17,24,39,.1); }
.lg-disp { background:#f1f3ff; border-color:#e0e4ff !important; }
.lg-poucas { background:#ffe8cc; border-color:#fdd0a0 !important; }
.lg-lotado { background:#fff3c7; border-color:#f7e08b !important; }
.lg-feriado { background:#fddcda; border-color:#f9b8b3 !important; }
.lg-indisp { background:#e8eaf0; border-color:#d9dce6 !important; }

/* Horários */
.grade-horarios { grid-template-columns:repeat(auto-fill, minmax(88px, 1fr)); }
.horario-item { border:1px solid #dcdff0; border-radius:10px; }
.horario-item:hover { border-color:#4f46e5; background:#f5f6ff; }
.horario-item.selecionado { background:#4f46e5; border-color:#4f46e5; color:#fff; }

/* Login e telas centralizadas */
.pagina-login, .pagina-instalacao { background:radial-gradient(900px 520px at 12% 0%, rgba(124,58,237,.38), transparent 60%), radial-gradient(760px 520px at 100% 100%, rgba(79,70,229,.32), transparent 60%), #1b1230; }
.wrapper-central { max-width:420px; }
.pagina-instalacao .wrapper-central { max-width:560px; }
.cartao-login, .cartao-instalacao { border-radius:16px; padding:36px 32px 28px; box-shadow:0 24px 60px -20px rgba(0,0,0,.55); }
.cabecalho-login { margin-bottom:26px; }
.cabecalho-login .logo-circulo { width:56px; height:56px; border-radius:14px; box-shadow:0 8px 20px -8px rgba(79,70,229,.6); }
.cabecalho-login h1 { font-size:1.35rem; font-weight:600; margin-bottom:4px; }
.cabecalho-login p { font-size:.9rem; margin:0; }
.cartao-login input[type="text"], .cartao-login input[type="password"], .cartao-login input[type="email"] { padding:13px 14px; background:#fafbff; }
.cartao-login .botao-largo { padding:13px 22px; margin-top:4px; }
.links-login { margin-top:18px; padding-top:16px; border-top:1px solid #eef0f6; display:flex; flex-direction:column; align-items:center; gap:10px; font-size:.84rem; }
.links-login a { display:inline-flex; align-items:center; gap:6px; }
.links-login .sep { color:#c4c8d8; }
.links-login .linha { display:flex; flex-wrap:wrap; gap:6px 14px; justify-content:center; }
body[style*="min-height:100vh"] { background:radial-gradient(900px 520px at 12% 0%, rgba(124,58,237,.38), transparent 60%), radial-gradient(760px 520px at 100% 100%, rgba(79,70,229,.32), transparent 60%), #1b1230; }
body[style*="min-height:100vh"] .cartao { border:none; box-shadow:0 24px 60px -20px rgba(0,0,0,.55); padding:32px; }

.rodape-publico { color:#8a90a6; }
@media (max-width:640px) {
  .topo-publico { padding:18px 16px 72px; }
  .container-publico { margin-top:-46px; }
  .faixa-titulo h2 { font-size:1.3rem; }
  .grade-dias-semana, .grade-calendario { gap:5px; }
  .dia-calendario { border-radius:9px; }
  .cartao-login, .cartao-instalacao { padding:30px 22px 24px; }
}
@media (min-width:641px) {
  .dia-calendario.passado { min-height:40px; }
}
.links-login .sep { display:none; }
.links-login .linha { gap:6px 20px; }
/* Celular: células estreitas. Nome do feriado/bloqueio já aparece na lista abaixo do calendário;
   o rótulo "N vagas"/"Sem vagas" passa a caber inteiro. */
@media (max-width:640px) {
  .grade-dias-semana, .grade-calendario { gap:4px; }
  .dia-calendario .rotulo-feriado { display:none !important; }
  .dia-calendario.disponivel, .dia-calendario.lotado { padding:4px 1px; }
  .dia-calendario .rotulo-vagas { font-size:.5rem; letter-spacing:-.03em; overflow:visible; text-overflow:clip; }
}
@media (max-width:400px) {
  .dia-calendario .rotulo-vagas { font-size:.42rem; }
}
@media (max-width:350px) {
  .dia-calendario .rotulo-vagas { font-size:.38rem; }
}
