* { -webkit-tap-highlight-color: transparent; }

body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }

input, select, textarea, button { font-family: inherit; }

/* Larger tap targets on touch devices */
button, a.btn, select, input[type="checkbox"] { min-height: 40px; }

.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.cal-cell { min-height: 64px; }
@media (min-width: 640px) { .cal-cell { min-height: 100px; } }

.cal-dot { width: 6px; height: 6px; border-radius: 999px; display: inline-block; }

::-webkit-scrollbar { height: 8px; width: 8px; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 999px; }

.spinner {
  border: 3px solid #e2e8f0;
  border-top-color: #4f46e5;
  border-radius: 50%;
  width: 28px;
  height: 28px;
  animation: spin 0.7s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

.toast {
  animation: slideup 0.2s ease-out;
}
@keyframes slideup {
  from { transform: translateY(12px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}
