/* Estilos partilhados: login, registo, recuperar-senha, redefinir-senha */
* { box-sizing: border-box; }
body { margin: 0; font-family: 'Segoe UI', Roboto, -apple-system, BlinkMacSystemFont, sans-serif; min-height: 100vh; }
.auth-page {
  position: relative; min-height: 100vh; display: flex; align-items: center; justify-content: center;
  padding: 40px 20px; overflow: hidden;
  background: radial-gradient(circle at 12% 15%, rgba(255,255,255,0.55), transparent 40%),
    linear-gradient(115deg, #eef4ee 0%, #dcecdd 22%, #bcdcc0 42%, #6fae76 62%, #2f7d43 80%, #1f6236 100%);
}
.decor { position: absolute; pointer-events: none; z-index: 0; }
.decor-waves { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; }
.decor-dots { position: absolute; top: 24px; left: 24px; width: 200px; height: 140px;
  background-image: radial-gradient(rgba(46,110,64,0.35) 1.6px, transparent 1.6px); background-size: 16px 16px;
  -webkit-mask-image: linear-gradient(135deg, black 30%, transparent 90%); mask-image: linear-gradient(135deg, black 30%, transparent 90%); }
.decor-dots-br { position: absolute; bottom: 60px; right: 340px; width: 140px; height: 100px;
  background-image: radial-gradient(rgba(255,255,255,0.55) 1.6px, transparent 1.6px); background-size: 14px 14px; }
.decor-hex { position: absolute; top: 10%; right: 6%; width: 420px; height: 260px; opacity: 0.5; }
.decor-cross { position: absolute; color: rgba(76,150,95,0.4); font-weight: 700; line-height: 1; }
.cross-1 { top: 8%;  right: 30%; font-size: 34px; transform: rotate(0deg); }
.cross-2 { top: 10%; right: 18%; font-size: 26px; }
.cross-3 { top: 24%; right: 6%;  font-size: 30px; }
.cross-4 { top: 3%;  left: 12%;  font-size: 22px; color: rgba(255,255,255,0.5); }
.decor-leaf { position: absolute; top: 34%; left: 10%; width: 60px; opacity: 0.55; }
.decor-heartbeat { position: absolute; top: 42%; right: 0; width: 46%; opacity: 0.45; }
.decor-stetho { position: fixed; left: 10px; bottom: 10px; width: 300px; max-width: 34vw; filter: drop-shadow(0 12px 18px rgba(0,0,0,0.25)); z-index: 1; }
.decor-farmacia { position: fixed; top: 40px; right: 60px; width: 110px; max-width: 18vw; opacity: 0.92; filter: drop-shadow(0 8px 14px rgba(0,0,0,0.2)); z-index: 1; }
.decor-seal { position: fixed; right: 28px; bottom: 24px; width: 92px; height: 92px; z-index: 3; border-radius: 50%; object-fit: contain; background: #fff; box-shadow: 0 6px 16px rgba(0,0,0,0.25); }
.auth-card { position: relative; z-index: 2; width: 100%; max-width: 500px; background: #ffffff; border-radius: 22px; box-shadow: 0 25px 60px rgba(15, 60, 30, 0.28); padding: 44px 48px 40px; }
.auth-card h1 { margin: 0 0 6px; text-align: center; font-size: 34px; font-weight: 800; color: #123420; letter-spacing: -0.3px; }
.auth-card .subtitulo { text-align: center; margin: 0 0 30px; font-size: 15px; }
.auth-card .subtitulo a { color: #2f7d43; text-decoration: none; font-weight: 500; }
.auth-card .subtitulo a:hover { text-decoration: underline; }
.campo { margin-bottom: 20px; }
.campo label { display: block; font-weight: 700; font-size: 15px; color: #1c2b22; margin-bottom: 8px; }
.campo-input-wrap { position: relative; display: flex; align-items: center; }
.campo-input-wrap svg { position: absolute; left: 14px; width: 18px; height: 18px; color: #2f7d43; pointer-events: none; }
.campo-input-wrap input { width: 100%; padding: 13px 16px 13px 42px; border: 1px solid #e1e6e2; background: #fbfcfb; border-radius: 10px; font-size: 15px; color: #223; outline: none; transition: border-color .15s ease, box-shadow .15s ease; }
.campo-input-wrap input::placeholder { color: #9aa39c; }
.campo-input-wrap input:focus { border-color: #2f7d43; box-shadow: 0 0 0 3px rgba(47,125,67,0.12); }
.toggle-senha { position: absolute; right: 14px; background: none; border: none; cursor: pointer; color: #8b948e; padding: 4px; display: flex; }
.toggle-senha:hover { color: #556356; }
.toggle-senha svg { width: 19px; height: 19px; position: static; }
.btn-primario { width: 100%; margin-top: 6px; padding: 14px 16px; border: none; border-radius: 10px; background: linear-gradient(180deg, #1f8a45, #146a34); color: #fff; font-size: 16px; font-weight: 700; cursor: pointer; box-shadow: 0 8px 18px rgba(20,106,52,0.35); transition: filter .15s ease, transform .05s ease; }
.btn-primario:hover { filter: brightness(1.06); }
.btn-primario:active { transform: translateY(1px); }
.btn-primario:disabled { opacity: .6; cursor: not-allowed; }
.rodape-auth { text-align: center; margin-top: 22px; font-size: 14.5px; color: #2b332e; line-height: 1.9; }
.rodape-auth a { color: #2563eb; text-decoration: none; font-weight: 500; }
.rodape-auth a:hover { text-decoration: underline; }
#alerta { margin-bottom: 18px; padding: 12px 14px; border-radius: 8px; font-size: 14px; }
.alerta-erro { background: #fdeceb; color: #b3261e; border: 1px solid #f6c6c2; }
.alerta-sucesso { background: #e8f6ec; color: #1f6d38; border: 1px solid #bfe6cb; }
@media (max-width: 560px) {
  .auth-card { padding: 34px 26px 30px; }
  .decor-stetho { display: none; }
  .decor-farmacia { width: 70px; top: 20px; right: 20px; }
  .decor-seal { width: 64px; height: 64px; right: 14px; bottom: 14px; }
}

/* Variante compacta (registo.html) */
.auth-card-compacto { max-width: 520px; padding: 32px 44px 28px; }
.auth-card-compacto h1 { font-size: 30px; }
.auth-card-compacto .subtitulo { margin-bottom: 20px; }
.auth-card-compacto .campo { margin-bottom: 14px; }
.campo-input-wrap.sem-icone select { width: 100%; padding: 13px 16px; border: 1px solid #e1e6e2; background: #fbfcfb; border-radius: 10px; font-size: 15px; color: #223; outline: none; }
.campo-input-wrap.sem-icone select:focus { border-color: #2f7d43; box-shadow: 0 0 0 3px rgba(47,125,67,0.12); }