/* ===== Buttons: icons and interaction ===== */
.btn { position: relative; overflow: hidden; transition: transform 0.15s ease, box-shadow 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease; }
.btn:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 6px 14px rgba(0, 0, 0, 0.12); }
.btn:active:not(:disabled) { transform: scale(0.97); box-shadow: none; }
.btn:disabled { cursor: not-allowed; }
.btn i, .btn .btn-icon { display: inline-block; transition: transform 0.25s ease; }
.btn:hover:not(:disabled) i, .btn:hover:not(:disabled) .btn-icon { transform: scale(1.18) rotate(-6deg); }
.btn:hover:not(:disabled) .bi-plus-lg { transform: rotate(90deg) scale(1.1); }
.btn:hover:not(:disabled) .bi-arrow-right, .btn:hover:not(:disabled) .bi-arrow-counterclockwise { transform: translateX(3px) scale(1.1); }
.btn:hover:not(:disabled) .bi-trash3 { transform: rotate(-12deg) scale(1.15); }
.btn-ripple { position: absolute; border-radius: 50%; background: rgba(255, 255, 255, 0.45); transform: scale(0); animation: btn-ripple 0.6s ease-out forwards; pointer-events: none; }
.btn-secondary .btn-ripple { background: rgba(47, 91, 216, 0.18); }
@keyframes btn-ripple { to { transform: scale(1); opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  .btn, .btn i, .btn .btn-icon { transition: none; }
  .btn:hover:not(:disabled), .btn:active:not(:disabled) { transform: none; }
  .btn-ripple { display: none; }
}
