/* 
 * OuviSic - Sistema Integrado de Ouvidoria e Acesso à Informação
 * @author Leandro Kywdery (https://conectsistemas.com.br)
 * @date 2026-03-01 19:35
 */

/* Animações */
@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(-8px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideIn {
    from {
        transform: translateX(-100%);
    }

    to {
        transform: translateX(0);
    }
}

@keyframes pulse-dot {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: .5;
    }
}

@keyframes float {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-15px);
    }
}

.animate-float {
    animation: float 4s ease-in-out infinite;
}

.animate-fade-in {
    animation: fadeIn .3s ease-out;
}

.animate-slide-in {
    animation: slideIn .3s ease-out;
}

/* Scrollbar customizada */
::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

::-webkit-scrollbar-track {
    background: transparent;
}

::-webkit-scrollbar-thumb {
    background: #d1d5db;
    border-radius: 3px;
}

::-webkit-scrollbar-thumb:hover {
    background: #9ca3af;
}

/* Seleção */
::selection {
    background: #6366f1;
    color: #fff;
}

/* Links sidebar ativos */
.sidebar-link.active {
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
}

.sidebar-link.active svg {
    color: #818cf8;
}

/* Focus visible para acessibilidade */
*:focus-visible {
    outline: 2px solid #6366f1;
    outline-offset: 2px;
}

/* Transição suave para todos elementos interativos */
a,
button,
input,
select,
textarea {
    transition: all .15s ease;
}

/* Print styles */
@media print {

    aside,
    header,
    footer,
    .no-print {
        display: none !important;
    }

    main {
        padding: 0 !important;
    }

    body {
        background: #fff !important;
    }
}

/* Loading skeleton */
.skeleton {
    background: linear-gradient(90deg, #f3f4f6 25%, #e5e7eb 50%, #f3f4f6 75%);
    background-size: 200% 100%;
    animation: skeleton 1.5s infinite;
}

/* Acessibilidade */
.font-size-xs {
    font-size: 70% !important;
}

.font-size-sm {
    font-size: 85% !important;
}

.font-size-lg {
    font-size: 130% !important;
}

.font-size-xl {
    font-size: 160% !important;
}

.font-size-2xl {
    font-size: 190% !important;
}

.font-size-3xl {
    font-size: 220% !important;
}

/* Alto Contraste */
body.high-contrast {
    background-color: #000 !important;
    color: #fff !important;
}

body.high-contrast header,
body.high-contrast main,
body.high-contrast footer,
body.high-contrast div,
body.high-contrast section {
    background-color: #000 !important;
    color: #fff !important;
    border-color: #fff !important;
}

body.high-contrast a,
body.high-contrast button {
    color: #ffff00 !important;
    border-color: #ffff00 !important;
}

body.high-contrast .bg-primary-700,
body.high-contrast .bg-primary-600,
body.high-contrast .bg-primary-500 {
    background-color: #000 !important;
    border: 1px solid #ffff00 !important;
}

body.high-contrast img {
    filter: grayscale(100%) contrast(150%);
}

@keyframes skeleton {
    0% {
        background-position: 200% 0;
    }

    100% {
        background-position: -200% 0;
    }
}