.modal-overlay{
  display:none;position:fixed;inset:0;z-index:9000;
  background:rgba(0,0,0,.75);backdrop-filter:blur(6px);
  align-items:flex-start;justify-content:center;
  padding:16px;
  overflow-y:auto;
}
.modal-overlay.active{display:flex;}
.modal-box{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius-xl);padding:28px 24px;
  max-width:420px;width:100%;position:relative;
  animation:fadeUp .3s ease;
  margin:auto; /* centers vertically when content shorter than viewport */
}
.modal-close{
  position:sticky;top:0;float:right;
  background:var(--surface2);border:1px solid var(--border);
  color:var(--muted);border-radius:50%;
  width:32px;height:32px;
  font-size:1rem;cursor:pointer;line-height:1;
  display:flex;align-items:center;justify-content:center;
  z-index:10;transition:color var(--transition),background var(--transition);
  margin-bottom:-16px; /* tuck under title */
}
.modal-close:hover{color:var(--text);background:var(--border);}
.modal-icon{font-size:2rem;margin-bottom:8px;}
.modal-title{font-family:var(--font-display);font-size:1.6rem;letter-spacing:.5px;margin-bottom:4px;}
.modal-sub{font-size:.86rem;color:var(--muted-light);margin-bottom:18px;}
.form-field{margin-bottom:12px;}
.input-group{position:relative;}
.modal-actions{display:flex;flex-direction:column;gap:10px;margin-top:6px;}
.modal-switch{font-size:.82rem;color:var(--muted);text-align:center;margin-top:10px;}
.modal-switch a{color:var(--accent);}

/* ── Payment ── */
.pay-secure{
  display:flex;align-items:center;gap:6px;
  font-size:.75rem;color:var(--muted);margin-top:8px;justify-content:center;
}
.pay-brands{
  display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;
}
.pay-brand{
  background:var(--surface2);border:1px solid var(--border);
  border-radius:var(--radius-sm);padding:4px 10px;
  font-size:.72rem;font-weight:700;color:var(--muted-light);
}
.card-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;}

/* ── OK modal ── */
.ok-modal{text-align:center;}
.ok-modal .modal-icon{display:block;}

/* ── Custom math captcha ── */
#captcha-row{margin:10px 0 6px;}
.captcha-box{
  background:var(--surface2);border:1px solid var(--border);
  border-radius:var(--radius-lg);padding:14px 16px;
  display:flex;flex-direction:column;gap:10px;
}
.captcha-label{
  font-size:.78rem;color:var(--muted-light);
  display:flex;align-items:center;gap:6px;
}
.captcha-label i{color:var(--accent);}
.captcha-challenge{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.captcha-puzzle{
  display:flex;align-items:center;gap:6px;
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius-md);padding:8px 14px;flex:1;min-width:160px;
}
.captcha-canvas{
  border-radius:6px;background:#0a0f14;
}
.captcha-inp{
  flex:1;min-width:70px;max-width:90px;
  background:var(--surface);border:1.5px solid var(--border);
  border-radius:var(--radius-md);padding:8px 10px;
  color:var(--text);font-size:.9rem;text-align:center;
  transition:border-color .2s;
}
.captcha-inp:focus{outline:none;border-color:var(--accent);}
.captcha-inp.err{border-color:#f43f5e;}
.captcha-refresh{
  background:none;border:none;color:var(--muted);cursor:pointer;
  font-size:1rem;padding:4px;transition:color .2s,transform .3s;flex-shrink:0;
}
.captcha-refresh:hover{color:var(--accent);transform:rotate(180deg);}
.captcha-status{font-size:.72rem;min-height:14px;}
.captcha-status.ok{color:var(--accent);}
.captcha-status.bad{color:#f43f5e;}

@media(max-width:480px){
  .modal-box{padding:20px 14px;}
  .modal-title{font-size:1.35rem;}
}
