/* ── ADD FAB ── */
.add-fab{position:fixed;bottom:24px;right:20px;width:52px;height:52px;border-radius:50%;background:#2563EB;color:#fff;border:none;font-size:26px;cursor:pointer;box-shadow:0 4px 16px rgba(37,99,235,.4);display:flex;align-items:center;justify-content:center;z-index:300}

/* ── TOAST ── */
.toast{position:fixed;bottom:88px;left:50%;transform:translateX(-50%);background:#0F172A;color:#fff;padding:9px 18px;border-radius:20px;font-size:13px;font-weight:600;z-index:700;opacity:0;transition:opacity .3s;pointer-events:none;white-space:nowrap}
.toast.show{opacity:1}

.loading{text-align:center;padding:50px 20px;color:var(--text3);font-size:14px}
.no-events{text-align:center;padding:40px 20px;color:var(--text3);font-size:14px}

/* ── Pull to Refresh ── */
#ptr-indicator {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 0;
  overflow: hidden;
  transition: height 0.2s;
  background: #EFF6FF;
  font-size: 12px;
  font-weight: 700;
  color: #2563EB;
}
#ptr-indicator.ptr-ready { height: 48px; }
#ptr-spin {
  width: 16px; height: 16px;
  border: 2px solid #BFDBFE;
  border-top-color: #2563EB;
  border-radius: 50%;
}
@keyframes spin { to { transform: rotate(360deg); } }
#ptr-spin.spinning { animation: spin 0.6s linear infinite; }

/* ── 스켈레톤 로딩 ── */
@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
.skeleton {
  background: linear-gradient(90deg, #F1F5F9 25%, #E2E8F0 50%, #F1F5F9 75%);
  background-size: 200% 100%;
  animation: shimmer 1.4s infinite;
  border-radius: 8px;
}
.skeleton-card {
  background: #fff;
  border: 1px solid #E2E8F0;
  border-radius: 12px;
  padding: 14px;
  margin-bottom: 8px;
  overflow: hidden;
}
.skeleton-line { height: 12px; margin-bottom: 8px; }
.skeleton-line.w-60 { width: 60%; }
.skeleton-line.w-80 { width: 80%; }
.skeleton-line.w-40 { width: 40%; }

/* ── 빈 상태 화면 ── */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 60px 20px;
  text-align: center;
}
.empty-icon { font-size: 48px; margin-bottom: 16px; opacity: 0.5; }
.empty-title { font-size: 16px; font-weight: 800; color: #334155; margin-bottom: 8px; }
.empty-desc { font-size: 13px; color: #94A3B8; margin-bottom: 24px; line-height: 1.6; }
.empty-btn {
  padding: 10px 24px;
  background: #2563EB;
  color: #fff;
  border: none;
  border-radius: 20px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
}
