/* custom styles & animations */

/* Import Google Fonts directly */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap');

body {
    font-family: 'Inter', 'Noto Sans SC', sans-serif;
}

/* Custom Webkit scrollbar */
::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

::-webkit-scrollbar-track {
    background: transparent;
}

::-webkit-scrollbar-thumb {
    background: rgba(148, 163, 184, 0.3);
    border-radius: 9999px;
}

.dark ::-webkit-scrollbar-thumb {
    background: rgba(71, 85, 105, 0.4);
}

::-webkit-scrollbar-thumb:hover {
    background: rgba(148, 163, 184, 0.5);
}

/* Scrollbar None */
.scrollbar-none::-webkit-scrollbar {
    display: none;
}
.scrollbar-none {
    -ms-overflow-style: none;  /* IE and Edge */
    scrollbar-width: none;  /* Firefox */
}

/* Tailored Animations */
@keyframes spin-slow {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

.animate-spin-slow {
    animation: spin-slow 12s linear infinite;
}

/* Glassmorphism utility */
.glass-effect {
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

/* Card 3D Lift & Shadow Glow Effect */
.grid-card {
    position: relative;
    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), 
                box-shadow 0.4s cubic-bezier(0.16, 1, 0.3, 1), 
                border-color 0.3s ease, 
                background-color 0.3s ease;
    will-change: transform, box-shadow;
}

/* Optional Tilt animation dynamic properties managed by script.js */
.grid-card:hover {
    border-color: var(--card-color-hover, rgba(14, 165, 233, 0.4));
}

.grid-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    padding: 1.5px;
    background: linear-gradient(to bottom right, var(--card-color-hover, #0ea5e9), transparent 60%);
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.grid-card:hover::before {
    opacity: 0.8;
}

/* Interactive Glowing Orb (behind card) */
.grid-card .glow-orb {
    position: absolute;
    width: 60px;
    height: 60px;
    background: radial-gradient(circle, var(--card-color-hover, #0ea5e9) 0%, transparent 70%);
    opacity: 0;
    border-radius: 50%;
    pointer-events: none;
    transition: opacity 0.4s ease;
    z-index: 0;
}

.grid-card:hover .glow-orb {
    opacity: 0.15;
}

/* Dark mode specific colors for modal */
.dark .dark\:bg-slate-850 {
    background-color: #1e293b;
}

/* Grid columns transitions class */
#grid-container {
    transition: grid-template-columns 0.4s cubic-bezier(0.16, 1, 0.3, 1), gap 0.4s ease;
}

/* Modal animation */
#modal-add, #modal-detail {
    transition: opacity 0.25s ease-out;
}

#modal-add.flex, #modal-detail.flex {
    opacity: 1;
}

#modal-add.flex > div, #modal-detail.flex > div {
    transform: scale(1);
}

/* Action button bounce */
.icon-container {
    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.grid-card:hover .icon-container {
    transform: scale(1.1) translateY(-2px);
}

/* Smooth active menu underline indicator */
.category-btn {
    position: relative;
    transition: all 0.25s ease;
}

/* Card options menu */
.card-options-btn {
    opacity: 0;
    transform: translateY(2px);
    transition: opacity 0.2s ease, transform 0.2s ease;
}

.grid-card:hover .card-options-btn {
    opacity: 1;
    transform: translateY(0);
}
