/* ==========================================================================
   Estilos Globais e Helpers
   ========================================================================== */
.text-xs { font-size: .85rem; } /* Aumentado de 0.7rem */
.text-gray-300 { color: #dddfeb !important; }
.text-gray-800 { color: #343a40 !important; }
.fw-bold { font-weight: 700 !important; }

main.flex-grow-1 {
    padding-bottom: 70px; /* Espaço para o footer não sobrepor o conteúdo */
}

/* ==========================================================================
   Estilos do Dashboard
   ========================================================================== */
/* Cards com borda no início no Bootstrap 5 */
.card.border-start { /* Bootstrap 5 já tem isto, mas pode personalizar */ }
.border-primary { border-color: #0d6efd !important; }
.border-success { border-color: #198754 !important; }
.border-warning { border-color: #ffc107 !important; }
.border-info { border-color: #0dcaf0 !important; }
.border-4 { border-width: .25rem !important; }

/* Estilos para gráficos Chart.js */
.chart-container {
    position: relative;
}

/* ==========================================================================
   Estilos do News Ticker
   ========================================================================== */

.news-ticker-container {
    position: relative;
    background-color: #000000; /* Fundo preto */
    color: #FFD700; /* Letras amarelas (Gold) */
    overflow: hidden;
    padding: 10px 0;
    white-space: nowrap; /* Linha única */
    box-shadow: inset 0 3px 5px rgba(0,0,0,0.25);
    border-top: 1px solid #333;
    border-bottom: 1px solid #333;
    margin-bottom: 0;
    height: 60px;
    display: flex;
    align-items: center;
    line-height: 1.5;
}

.news-ticker-container:hover .news-ticker-content {
    animation-play-state: paused;
}

.news-ticker-content {
    display: inline-block;
    /* Animação mais lenta - mantido 80s */
    animation: ticker-scroll-horizontal 100s linear infinite; 
}

.news-item {
    color: #FFD700;
    text-decoration: none;
    padding: 0 1.5rem; /* Espaço entre notícias */
    font-weight: 500;
    font-size: 1rem; /* Aumentado de 0.9rem */
    display: inline-flex; /* Para alinhar a tag da fonte com o texto */
    align-items: center;
    vertical-align: middle; /* Alinhamento vertical */
}

.news-item:hover {
    color: #FFFFFF;
    text-decoration: underline;
}

/* Estilo para a tag da fonte da notícia */
.news-source {
    font-size: 0.8rem; /* Aumentado de 0.7rem */
    padding: 2px 6px;
    border-radius: 4px;
    margin-right: 0.75em;
    font-weight: bold;
    text-transform: uppercase;
    color: #fff;
    flex-shrink: 0;
}

/* Cores específicas para cada fonte */
.source-hacker-news { 
    background-color: #FFD700; /* Amarelo */
    color: #000;
}

.source-pplware { 
    background-color: #28a745; /* Verde */
    color: #fff;
}

.source-aberto-ate-de-madrugada { 
    background-color: #007bff; /* Azul */
    color: #fff;
}

.source-apdse-pt { 
    background-color: #ff851b; /* Laranja */
    color: #fff;
}

.source-it-security { 
    background-color: #dc3545; /* Vermelho */
    color: #fff;
}

.source-sistema { 
    background-color: #6c757d; /* Cinzento */
    color: #fff;
}

/* Separador entre notícias */
.separator {
    color: #666;
    padding: 0 1rem;
    font-weight: normal;
}

/* Estilo para o título do ticker */
.ticker-title {
    position: absolute;
    background-color: #FFD700; /* Fundo amarelo para o título */
    color: #000000; /* Letras pretas */
    padding: 2px 10px;
    font-size: 0.9rem; /* Aumentado de 0.75rem */
    font-weight: bold;
    text-transform: uppercase;
    border-radius: 3px;
    left: 15px; /* Posição a partir da esquerda */
    top: -10px; /* Posição para ficar ligeiramente acima da barra */
    z-index: 10; /* Para garantir que fica por cima da animação */
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}

/* Definição da animação de scroll */
@keyframes ticker-scroll-horizontal {
    0% {
        transform: translateX(0%);
    }
    100% {
        /* Move o conteúdo para a esquerda pela metade da sua largura total */
        transform: translateX(-50%);
    }
}

/* Responsividade para dispositivos móveis */
@media (max-width: 768px) {
    .news-ticker-container {
        height: 50px;
        padding: 5px 0;
    }
    
    .news-item {
        font-size: 0.9rem; /* Aumentado de 0.8rem */
        padding: 0 1rem;
    }
    
    .news-source {
        font-size: 0.7rem; /* Aumentado de 0.6rem */
        padding: 1px 4px;
        margin-right: 0.5em;
    }
    
    .ticker-title {
        font-size: 0.8rem; /* Aumentado de 0.65rem */
        padding: 1px 6px;
        left: 10px;
        top: -8px;
    }
}