.badge-hero{
  background:linear-gradient(165deg, var(--purple-deep), var(--purple-mid));
  color:var(--parchment); padding:48px 0 40px;
}
.badge-hero h1{ color:var(--parchment); font-size:clamp(1.6rem,2.6vw,2.2rem); margin-top:.3em; }
.badge-hero p{ max-width:640px; opacity:.9; }

.badge-section{ padding:48px 0 80px; }

.badge-status{
  max-width:520px; margin:0 auto 24px; padding:14px 18px; border-radius:4px; font-size:.9rem; display:none;
}
.badge-status.show{ display:block; }
.badge-status.pending{ background:#f0e8d4; border:1px solid #cbb35a; color:#7a611a; }
.badge-status.error{ background:#fbe7e7; border:1px solid #d98686; color:#7a1f1f; }
.badge-status.error a{ color:#7a1f1f; text-decoration:underline; font-weight:600; }

/* ---------- Printable badge card ---------- */
.badge-stage{ display:flex; justify-content:center; }

.badge-card{
  width:340px; background:#fff; border-radius:10px; overflow:hidden;
  box-shadow:0 20px 50px rgba(0,0,0,.18); border:1px solid var(--wall-line);
  display:none; font-family:var(--font-body);
}
.badge-card.show{ display:block; }

.badge-top{
  background:linear-gradient(165deg, var(--purple-deep), var(--purple-mid));
  color:var(--parchment); padding:22px 22px 60px; text-align:center; position:relative;
}
.badge-top img.badge-logo{ width:52px; height:52px; border-radius:50%; margin:0 auto 8px; display:block; border:2px solid var(--gold-soft); }
.badge-top .eyebrow{ color:var(--gold-soft); }
.badge-top .edition{ font-family:var(--font-mono); font-size:.7rem; opacity:.85; margin-top:2px; }

.badge-type{
  position:absolute; bottom:-14px; left:50%; transform:translateX(-50%);
  background:var(--gold); color:var(--purple-deep); font-family:var(--font-mono); font-weight:700;
  font-size:.72rem; letter-spacing:.06em; text-transform:uppercase; padding:.4em 1em; border-radius:20px;
  box-shadow:0 4px 10px rgba(0,0,0,.25); white-space:nowrap;
}

.badge-body{ padding:34px 24px 24px; text-align:center; }
.badge-body .name{ font-family:var(--font-display); font-size:1.35rem; color:var(--purple-deep); font-weight:700; line-height:1.2; }
.badge-body .role{ font-size:.88rem; color:#5a5163; margin-top:4px; }
.badge-body .inst{ font-size:.82rem; color:#5a5163; margin-top:2px; }

.badge-qr{ margin:18px auto 6px; width:150px; height:150px; }
.badge-qr img{ width:100%; height:100%; display:block; }
.badge-ref{ font-family:var(--font-mono); font-size:.72rem; color:#8a8090; letter-spacing:.03em; margin-top:4px; }

.badge-bottom{
  border-top:1px dashed var(--wall-line); padding:12px 24px 18px; text-align:center;
  font-family:var(--font-mono); font-size:.68rem; color:#8a8090; letter-spacing:.03em;
}

.badge-actions{ text-align:center; margin-top:24px; }
.badge-actions .btn{ margin:0 6px; }

/* ---------- print ---------- */
@media print{
  body *{ visibility:hidden; }
  .badge-card, .badge-card *{ visibility:visible; }
  .badge-card{
    display:block !important; position:fixed; top:0; left:0; margin:0; box-shadow:none;
    border:none; border-radius:0; width:100%;
  }
  @page{ size:89mm 140mm; margin:0; }
}
