/* ========== 公告弹窗 ========== */
#popup-overlay {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.55); z-index: 99999;
  display: flex; align-items: center; justify-content: center;
  animation: popupFadeIn 0.3s ease;
  backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px);
}
@keyframes popupFadeIn { from { opacity: 0; } to { opacity: 1; } }
#popup-overlay.closing { animation: popupFadeOut 0.25s ease forwards; }
@keyframes popupFadeOut { to { opacity: 0; } }
#popup-dialog {
  background: linear-gradient(145deg, rgba(255,255,255,0.92), rgba(245,240,255,0.94));
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  border-radius: 24px; padding: 32px 28px 24px;
  max-width: 380px; width: 88vw;
  box-shadow: 0 20px 60px rgba(100,80,180,0.25), 0 0 0 1px rgba(255,255,255,0.5);
  text-align: center; position: relative; overflow: hidden;
  animation: popupBounce 0.35s cubic-bezier(0.17,0.89,0.32,1.25);
}
@keyframes popupBounce { from { transform: scale(0.85); opacity: 0; } to { transform: scale(1); opacity: 1; } }
#popup-dialog::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px;
  background: linear-gradient(90deg, #a78bfa, #6366f1, #8b5cf6, #a78bfa);
  border-radius: 24px 24px 0 0;
}
#popup-dialog .popup-icon {
  width: 56px; height: 56px; margin: 0 auto 14px;
  background: linear-gradient(135deg, #818cf8, #6366f1); border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 8px 24px rgba(99,102,241,0.35);
}
#popup-dialog .popup-icon svg { width: 28px; height: 28px; fill: #fff; }
#popup-dialog .popup-title { font-size: 1.2em; font-weight: 700; color: #4f46e5; margin-bottom: 10px; }
#popup-dialog .popup-body { font-size: 0.93em; color: #4b5563; line-height: 1.7; white-space: pre-line; text-align: left; padding: 0 4px; max-height: 50vh; overflow-y: auto; }
#popup-dialog .popup-btn {
  display: inline-block; margin-top: 20px; padding: 10px 40px;
  background: linear-gradient(135deg, #6366f1, #8b5cf6); color: #fff;
  border: none; border-radius: 50px; font-size: 0.95em; font-weight: 600;
  cursor: pointer; box-shadow: 0 6px 20px rgba(99,102,241,0.4);
}
@media (max-width: 480px) {
  #popup-dialog { padding: 24px 18px 18px; }
  #popup-dialog .popup-body { font-size: 0.88em; }
}