.card { background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 1rem; }
.btn { display: inline-block; background: var(--primary); color: #fff; padding: 0.6rem 1rem; border-radius: 8px; border: none; cursor: pointer; }
.badge { display: inline-block; padding: 0.2rem 0.5rem; border-radius: 999px; font-size: 0.8rem; font-weight: 600; }
.badge-success { background: #dcfce7; color: #166534; }
.badge-warning { background: #fef3c7; color: #92400e; }
.badge-danger { background: #fee2e2; color: #991b1b; }
.alert { border-radius: 8px; padding: 0.75rem 1rem; margin-bottom: 1rem; }
.alert-danger { background: #fee2e2; color: #7f1d1d; border: 1px solid #fecaca; }
.alert-success { background: #dcfce7; color: #14532d; border: 1px solid #86efac; }
.alert-warning { background: #fff7ed; color: #9a3412; border: 1px solid #fed7aa; }
.muted { color: var(--muted); }

.btn:hover { opacity: 0.95; }
.btn:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 3px solid rgba(59, 130, 246, 0.35);
  outline-offset: 2px;
}
.alert p + p { margin-top: 0.35rem; }
.empty-state { text-align: center; padding: 2rem 1.25rem; }
.empty-state .btn { margin-top: 0.5rem; }

.btn--ghost { background: transparent; color: var(--text); border: 1px solid var(--border); }
.btn--google {
  width: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.55rem;
  background: #fff;
  color: #1f2937;
  border: 1px solid #d1d5db;
  font-weight: 600;
}
.btn--google span[aria-hidden="true"] {
  width: 1.4rem;
  height: 1.4rem;
  border-radius: 999px;
  background: linear-gradient(135deg, #4285f4, #ea4335 45%, #fbbc05 72%, #34a853);
  color: #fff;
  display: inline-grid;
  place-items: center;
  font-size: 0.78rem;
  font-weight: 700;
}
.btn[aria-disabled="true"] { pointer-events: none; opacity: 0.65; }
