/* Skeleton loading + mobile polish */
.skeleton { background: linear-gradient(90deg, #f3f4f6 25%, #e5e7eb 37%, #f3f4f6 63%); background-size: 400% 100%; animation: skeleton 1.4s ease infinite; border-radius: 6px; }
.skeleton-text { height: 12px; margin: 8px 0; }
.skeleton-title { height: 20px; width: 50%; margin: 12px 0; }
.skeleton-card { height: 80px; margin: 8px 0; }
@keyframes skeleton { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }

/* Mobile polish */
@media (max-width: 640px) {
  table { font-size: 12px; }
  .no-mobile { display: none !important; }
  button, .btn, a.btn { min-height: 44px; } /* Apple touch target */
  input, select, textarea { font-size: 16px !important; } /* iOS zoom prevention */
  .p-6 { padding: 1rem !important; }
  h1 { font-size: 1.5rem !important; }
}

/* Toast notification */
.toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); background: #1f2937; color: white; padding: 12px 20px; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.2); z-index: 100; animation: toast-in 0.3s ease; }
@keyframes toast-in { from { opacity: 0; transform: translate(-50%, 20px); } to { opacity: 1; transform: translate(-50%, 0); } }

/* Fade in */
.fade-in { animation: fadein 0.3s ease; }
@keyframes fadein { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
