/* Base styles & utility classes */
html {
  scroll-behavior: smooth;
}

/* Custom scrollbar for webkit */
::-webkit-scrollbar {
  width: 8px;
}
::-webkit-scrollbar-track {
  background: #f1f1f1; 
}
::-webkit-scrollbar-thumb {
  background: #cbd5e1; 
  border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
  background: #94a3b8; 
}

/* Hide scrollbar for swiping containers */
.no-scrollbar::-webkit-scrollbar {
  display: none;
}
.no-scrollbar {
  -ms-overflow-style: none;
  scrollbar-width: none;
}

/* Typewriter animation classes */
.typewriter-text {
  border-right: 2px solid #2563eb;
  padding-right: 4px;
  animation: blink 0.75s step-end infinite;
}
@keyframes blink {
  from, to { border-color: transparent }
  50% { border-color: #2563eb; }
}

/* Card hover effects */
.software-card {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.software-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}

/* Material ripple */
.ripple {
  background-position: center;
  transition: background 0.8s;
}
.ripple:hover {
  background: #475569 radial-gradient(circle, transparent 1%, #475569 1%) center/15000%;
}
.ripple:active {
  background-color: #cbd5e1;
  background-size: 100%;
  transition: background 0s;
}

/* Toast animation */
.toast-enter {
  animation: slideIn 0.3s forwards;
}
.toast-leave {
  animation: slideOut 0.3s forwards;
}
@keyframes slideIn {
  from { transform: translateX(100%); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}
@keyframes slideOut {
  from { transform: translateX(0); opacity: 1; }
  to { transform: translateX(100%); opacity: 0; }
}
