/* ─────────────────────────────────────────────────────────────────
   RuangParkir.id · Base CSS
   Font, reset, animasi global — dipakai oleh semua halaman
───────────────────────────────────────────────────────────────── */

@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&family=Roboto+Mono:wght@400;500&display=swap');

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
  height: 100%;
  background: #EFF3F8;
}

body {
  font-family: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  color: #0F1E30;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

#root { min-height: 100vh; }

button {
  -webkit-tap-highlight-color: transparent;
  font-family: inherit;
  cursor: pointer;
}

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

a { text-decoration: none; color: inherit; }

::-webkit-scrollbar { display: none; }
* { scrollbar-width: none; }

/* ── Keyframe animations ── */
@keyframes slideUp {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.4; }
}
@keyframes scaleIn {
  from { opacity: 0; transform: scale(.92); }
  to   { opacity: 1; transform: scale(1); }
}

.slide-up  { animation: slideUp  .28s cubic-bezier(.4,0,.2,1) forwards; }
.fade-in   { animation: fadeIn   .2s ease forwards; }
.notif-dot { animation: pulse    2s ease infinite; }
.blink     { animation: pulse    2s ease infinite; }
.scale-in  { animation: scaleIn  .22s cubic-bezier(.4,0,.2,1) forwards; }
