




@keyframes entry {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}
.animate-entry {
    animation: entry 0.4s ease-out forwards;
}


@keyframes slideDownFade {
    from { opacity: 0; transform: translateY(-10px); max-height: 0; }
    to { opacity: 1; transform: translateY(0); max-height: 600px; }
}
.animate-slide {
    animation: slideDownFade 0.3s ease-out forwards;
    overflow: hidden;
}


@keyframes fadeOut {
    from { opacity: 1; transform: scale(1); }
    to { opacity: 0; transform: scale(0.95); }
}
.animate-fade-out {
    animation: fadeOut 0.2s ease-out forwards;
}


@keyframes slideDownNewItem {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: translateY(0); }
}
.animate-new-item {
    animation: slideDownNewItem 0.3s ease-out forwards;
}


@keyframes pulse-blue {
    0% { box-shadow: 0 0 0 0 rgba(6, 91, 251, 0.4); }
    50% { box-shadow: 0 0 0 14px rgba(6, 91, 251, 0); }
    50.01% { box-shadow: 0 0 0 0 rgba(6, 91, 251, 0.4); }
    100% { box-shadow: 0 0 0 0 rgba(6, 91, 251, 0.4); }
}
.animate-pulse-blue {
    animation: pulse-blue 2s ease-out infinite;
}


@keyframes float-up {
    from { opacity: 0; transform: translateY(16px); }
    to { opacity: 1; transform: translateY(0); }
}
.animate-float-up {
    animation: float-up 0.5s ease-out forwards;
}


@keyframes float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-6px); }
}
.animate-float {
    animation: float 3s ease-in-out infinite;
}


@keyframes pulse-slow {
    0%, 100% { opacity: 0.6; }
    50% { opacity: 1; }
}
.animate-pulse-slow {
    animation: pulse-slow 2s ease-in-out infinite;
}




:focus-visible {
    outline: 2px solid #065BFB;
    outline-offset: 2px;
    border-radius: 4px;
}


:focus:not(:focus-visible) {
    outline: none;
}


#autoGrowText:focus,
#autoGrowText:focus-visible {
    outline: none !important;
    outline-offset: 0 !important;
    box-shadow: none !important;
}


.skip-to-content {
    position: absolute;
    top: -100%;
    left: 0;
    z-index: 10000;
    padding: 0.75rem 1.5rem;
    background-color: #065BFB;
    color: white;
    font-weight: 700;
    font-size: 0.875rem;
    text-decoration: none;
    border-radius: 0 0 8px 0;
    transition: top 0.1s;
}
.skip-to-content:focus {
    top: 0;
}



::-webkit-scrollbar {
    width: 8px;
}
::-webkit-scrollbar-track {
    background: #f8fafc;
}
::-webkit-scrollbar-thumb {
    background: #cbd5e1;
    border-radius: 4px;
    border: 2px solid #f8fafc;
}
::-webkit-scrollbar-thumb:hover {
    background: #94a3b8;
}

@media (prefers-color-scheme: dark) {
    ::-webkit-scrollbar-track {
        background: #020617;
    }
    ::-webkit-scrollbar-thumb {
        background: #334155;
        border: 2px solid #020617;
    }
    ::-webkit-scrollbar-thumb:hover {
        background: #475569;
    }
}




body {
    overflow-x: hidden;
    width: 100%;
}




.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}


button, button *,
a, a * {
    will-change: transform;
    backface-visibility: hidden;
    -webkit-font-smoothing: subpixel-antialiased;
    transform: translateZ(0);
}




.no-scrollbar::-webkit-scrollbar {
    display: none;
}
.no-scrollbar {
    -ms-overflow-style: none;
    scrollbar-width: none;
}


.help-popup {
    display: none;
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    z-index: 50;
    width: 90vw;
    max-width: 360px;
}
.help-popup.active {
    display: block;
}


@keyframes mic-active {
    0% { transform: scale(1); }
    50% { transform: scale(1.08); }
    100% { transform: scale(1); }
}

.mic-recording {
    background-color: #ef4444 !important;
    animation: mic-active 1.5s infinite ease-in-out !important;
}




.dark .dark\:text-slate-400 {
    color: #cbd5e1 !important;  
}
