:root{
  --brand-from: #6f42c1;
  --brand-to:   #0d6efd;
}
.bg-gradient-primary {
  background: linear-gradient(135deg, var(--brand-from), var(--brand-to));
}
.navbar-brand { letter-spacing: 0.3px; }
.card { border-radius: 1rem; }
.btn { border-radius: .8rem; }
.table thead th { white-space: nowrap; }

.app-footer{
  border-top:1px solid #e9ecef;
  background:#f8f9fa;
}
.app-footer strong{ font-weight:600; }
/* === Mini Anim Pack v1 === */
:root{ --ease: cubic-bezier(.2,.7,.3,1); --dur: .32s; --shadow: 0 8px 24px rgba(0,0,0,.08); }
html{ scroll-behavior:smooth; }

/* Page / elements fade-in */
.fade-in{ opacity:0; transform:translateY(6px); animation:fadeIn var(--dur) var(--ease) forwards; }
@keyframes fadeIn{ to{ opacity:1; transform:none; } }

/* Cards hover lift */
.card{ transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease); }
.card:hover{ transform: translateY(-3px); box-shadow: var(--shadow); }

/* Buttons micro-interaction + ripple support */
.btn{ transition: transform .18s var(--ease), box-shadow .18s var(--ease); }
.btn:active{ transform: translateY(1px) scale(.98); }
.btn.ripple{ position:relative; overflow:hidden; }
.btn.ripple span.r{ position:absolute; border-radius:50%; transform:scale(0);
  animation:ripple .6s linear; background:rgba(255,255,255,.35); width:10px; height:10px; pointer-events:none; }
@keyframes ripple{ to{ transform:scale(12); opacity:0; } }

/* Navbar link underline slide */
.navbar .nav-link{
  background-image:linear-gradient(currentColor,currentColor);
  background-position:0 100%; background-repeat:no-repeat; background-size:0% 2px;
  transition: background-size .2s var(--ease), color .2s var(--ease);
}
.navbar .nav-link:hover{ background-size:100% 2px; }

/* Table: row appear + flash highlight */
.table tbody tr{ animation:rowIn .25s var(--ease) both; }
@keyframes rowIn{ from{opacity:0; transform:translateY(4px);} to{opacity:1; transform:none;} }
tr.flash{ animation:flashBg 1.2s ease-out 1; }
@keyframes flashBg{ 0%{ background:#fff3cd; } 100%{ background:transparent; } }

/* Toast smoothness (agar use kar rahe ho) */
.toast{ transition: transform .3s var(--ease), opacity .3s var(--ease); }