:root{
  --purple:#7C3AED;
  --purple-dark:#5B21B6;
  --pink:#EC4899;
  --orange:#F97316;
  --yellow:#FBBF24;
  --green:#22C55E;
  --red:#EF4444;
  --ink:#1E1B2E;
  --ink-soft:#4B4560;
  --bg:#FAF9FF;
  --card-bg:#FFFFFF;
  --radius:20px;
  --shadow: 0 10px 30px rgba(91,33,182,0.12);
}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  color:var(--ink);
  background:var(--bg);
  line-height:1.5;
}
a{color:var(--purple);}
.top-bar{
  background:linear-gradient(90deg,var(--purple),var(--pink),var(--orange));
  color:#fff;padding:16px 24px;font-weight:800;font-size:20px;
}
.top-bar a{color:#fff;text-decoration:none;}
.wrap{max-width:480px;margin:60px auto;padding:0 20px;}
.wrap.wide{max-width:960px;}
.card{
  background:var(--card-bg);border-radius:var(--radius);padding:36px 32px;
  box-shadow:var(--shadow);
}
h1{font-size:24px;margin:0 0 8px;}
p.subtitle{color:var(--ink-soft);margin:0 0 26px;font-size:14.5px;}
label{display:block;font-weight:700;font-size:13.5px;margin:16px 0 6px;}
input[type=text], input[type=email], input[type=password]{
  width:100%;padding:12px 14px;border-radius:12px;border:1.5px solid #E7E2F5;
  font-size:15px;background:#FBFAFF;
}
input:focus{outline:none;border-color:var(--purple);}
button.btn, a.btn{
  display:inline-block;width:100%;text-align:center;margin-top:24px;
  background:linear-gradient(90deg,var(--purple),var(--pink));color:#fff;
  font-weight:800;padding:14px 20px;border:none;border-radius:14px;font-size:15.5px;
  cursor:pointer;text-decoration:none;
}
button.btn:hover, a.btn:hover{opacity:0.92;}
.msg{padding:12px 16px;border-radius:10px;font-size:14px;margin-bottom:16px;}
.msg.erro{background:#FEE2E2;color:#991B1B;}
.msg.sucesso{background:#DCFCE7;color:#166534;}
.msg.aviso{background:#FEF3C7;color:#92400E;}
.footer-link{text-align:center;margin-top:18px;font-size:13.5px;color:var(--ink-soft);}
.status-badge{
  display:inline-block;padding:4px 12px;border-radius:999px;font-size:12.5px;font-weight:700;
}
.status-badge.ativo{background:#DCFCE7;color:#166534;}
.status-badge.expirado{background:#FEE2E2;color:#991B1B;}
