/* ============================================================================
   ACESSIBILIDADE - CONTROLES
   ============================================================================ */

.accessibility-controls-mob {
    display: none!important;
}

.accessibility-controls {
    gap: var(--space-2);
    margin-right: var(--space-4);
}

.accessibility-btn {
    width: 36px;
    height: 36px;
    padding: 0;
    border-radius: 8px;
    border: var(--color-border);
    background: transparent;
    cursor: pointer;
    color: var(--color-text-secondary);
    transition: all var(--transition-base);
    display: flex;
    align-items: center;
    justify-content: center;
}

.accessibility-btn:hover {
    background: var(--color-surface);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.accessibility-btn.active {
    background: var(--color-border);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.accessibility-btn svg {
    width: 20px;
    height: 20px;
}

@media(max-width: 640px) {
    .accessibility-controls {
        gap: var(--space-1);
    }
    .accessibility-btn {
        width: 32px;
        height: 32px;
    }
}


/* ============================================================================
   TAMANHOS DE FONTE
   ============================================================================ */


/* Elementos que NÃO devem ser afetados pela acessibilidade */

.banner-title {
    font-size: clamp(3rem, 8vw, 6rem) !important;
}

body.font-small {
    font-size: 14px;
}

body.font-small .form-control,
body.font-small .btn,
body.font-small .sidebar-nav-item {
    font-size: 13px;
}

body.font-small h1:not(.banner-title) {
    font-size: var(--font-size-3xl);
}

body.font-small h2 {
    font-size: var(--font-size-2xl);
}

body.font-small h3 {
    font-size: var(--font-size-xl);
}

body.font-large {
    font-size: 18px;
}

body.font-large .form-control,
body.font-large .btn,
body.font-large .sidebar-nav-item {
    font-size: 17px;
}

body.font-large h1:not(.banner-title) {
    font-size: var(--font-size-5xl);
}

body.font-large h2 {
    font-size: var(--font-size-4xl);
}

body.font-large h3 {
    font-size: var(--font-size-3xl);
}


/* ============================================================================
   DARK MODE - Modo Escuro Moderno
   ============================================================================ */

body.high-contrast {
    /* Backgrounds */
    --color-background: #0f1419;
    --color-surface: #1a1f28;
    --color-border: #2d3748;
    /* Textos */
    --color-text-primary: #e2e8f0;
    --color-text-secondary: #cbd5e0;
    --color-text-muted: #a0aec0;
    /* Cores Primárias - Mantendo identidade visual */
    --color-primary: #4a90e2;
    --color-primary-dark: #357abd;
    --color-primary-light: #6ba3e8;
    --color-secondary: #ffd95e;
    --color-accent: #22d3ee;
    /* Links */
    --color-link: #4a90e2;
    --color-link-hover: #6ba3e8;
    /* Semantic Colors - Ajustados para dark */
    --color-success: #34d399;
    --color-success-light: #1a3a2e;
    --color-warning: #fbbf24;
    --color-warning-light: #3a2f1a;
    --color-error: #f87171;
    --color-error-light: #3a1a1a;
    --color-info: #60a5fa;
    --color-info-light: #1a2a3a;
    /* Sombras adaptadas */
    --shadow-sm: 0 2px 4px 0 rgba(0, 0, 0, 0.3);
    --shadow-base: 0 2px 8px 0 rgba(0, 0, 0, 0.4);
    --shadow-md: 0 4px 12px 0 rgba(0, 0, 0, 0.5);
    --shadow-lg: 0 8px 20px 0 rgba(0, 0, 0, 0.6);
}

body.high-contrast {
    background-color: var(--color-background);
}


/* Indicador de que o dark mode está seguindo o sistema */

body.high-contrast .accessibility-btn#toggle-contrast::after {
    content: '';
    position: absolute;
    top: -2px;
    right: -2px;
    width: 8px;
    height: 8px;
    background: #34d399;
    border-radius: 50%;
    border: 2px solid #0f1419;
}


/* Header */

body.high-contrast .user-header {
    background: #1a1f28;
    border-bottom: 1px solid #2d3748;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.4);
}

body.high-contrast .user-header-logo {
    color: #ffd95e;
    font-weight: var(--font-weight-extrabold);
}


/* Botões de Acessibilidade no Dark Mode */

body.high-contrast .accessibility-btn {
    background: #0f1419;
    color: #4a90e2;
}

body.high-contrast .accessibility-btn:hover {
    background: #4a90e2;
    color: #0f1419;
}

body.high-contrast .accessibility-btn.active {
    background: #ffd95e;
    color: #0f1419;
    border-color: #ffd95e;
}


/* User Menu */

body.high-contrast .user-menu-button {
    background: #0f1419;
    border: 1px solid #2d3748;
}

body.high-contrast .user-menu-button:hover {
    background: #2d3748;
    border-color: #4a90e2;
}

body.high-contrast .user-avatar {
    background: linear-gradient(135deg, #4a90e2, #357abd);
    color: #ffffff;
    font-weight: var(--font-weight-bold);
    border: 2px solid #4a90e2;
}

body.high-contrast .user-name {
    color: #e2e8f0;
    font-weight: var(--font-weight-medium);
}

body.high-contrast .user-dropdown {
    background: #1a1f28;
    border: 1px solid #2d3748;
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.6);
}

body.high-contrast .user-dropdown-item {
    color: #e2e8f0;
}

body.high-contrast .user-dropdown-item:hover {
    background: #2d3748;
    color: #ffd95e;
}

body.high-contrast .user-dropdown-item svg {
    color: #a0aec0;
}

body.high-contrast .user-dropdown-item:hover svg {
    color: #ffd95e;
}

body.high-contrast .user-dropdown-divider {
    background: #2d3748;
}


/* Sidebar */

body.high-contrast .app-sidebar {
    background: #1a1f28;
    border-right: 1px solid #2d3748;
}

body.high-contrast .sidebar-nav-item {
    color: #cbd5e0;
    font-weight: var(--font-weight-normal);
}

body.high-contrast .sidebar-nav-item:hover {
    background: #2d3748;
    color: #ffd95e;
}

body.high-contrast .sidebar-nav-item.active {
    background: #4a90e2;
    color: #ffffff;
    font-weight: var(--font-weight-semibold);
    box-shadow: 0 2px 8px rgba(74, 144, 226, 0.4);
}

body.high-contrast .sidebar-badge.user {
    background: #0f1419;
    border: 1px solid #2d3748;
}

body.high-contrast .sidebar-badge.admin {
    background: linear-gradient(135deg, #4a90e2, #357abd);
    border: 2px solid #ffd95e;
}

body.high-contrast .sidebar-badge-title {
    color: #cbd5e0;
    font-weight: var(--font-weight-medium);
}

body.high-contrast .sidebar-badge.admin .sidebar-badge-title {
    color: #ffffff;
    font-weight: var(--font-weight-bold);
}

body.high-contrast .sidebar-divider {
    border-top: 1px solid #2d3748;
}


/* Content Area */

body.high-contrast .app-content {
    background: #0f1419;
}

body.high-contrast .page-header {
    background: #1a1f28;
    border-bottom: 1px solid #2d3748;
}

body.high-contrast .page-title {
    color: #e2e8f0;
}

body.high-contrast .page-main {
    background: #0f1419;
}


/* Cards */

body.high-contrast .card {
    background: #1a1f28;
    border: 1px solid #2d3748;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}

body.high-contrast .card-header {
    border-bottom: 1px solid #2d3748;
    background: #0f1419;
}

body.high-contrast .card-footer {
    border-top: 1px solid #2d3748;
    background: #0f1419;
}

body.high-contrast .card-title {
    color: #e2e8f0;
    font-weight: var(--font-weight-bold);
}

body.high-contrast .card-subtitle {
    color: #a0aec0;
}


/* Buttons */

body.high-contrast .btn {
    font-weight: var(--font-weight-semibold);
}

body.high-contrast .btn-primary {
    background: #ffd95e;
    color: #0f1419;
    border-color: #ffd95e;
}

body.high-contrast .btn-primary:hover:not(:disabled) {
    background: #ffe17f;
    border-color: #ffe17f;
    box-shadow: 0 4px 12px rgba(255, 217, 94, 0.4);
}

body.high-contrast .btn-secondary {
    background: transparent;
    color: #4a90e2;
    border: 2px solid #4a90e2;
}

body.high-contrast .btn-secondary:hover:not(:disabled) {
    background: #4a90e2;
    color: #ffffff;
}

body.high-contrast .btn-outline {
    color: #4a90e2;
    border: 1px solid #4a90e2;
}

body.high-contrast .btn-outline:hover:not(:disabled) {
    background: #4a90e2;
    color: #ffffff;
}

body.high-contrast .btn-ghost {
    color: #cbd5e0;
}

body.high-contrast .btn-ghost:hover:not(:disabled) {
    background: #2d3748;
}


/* Forms */

body.high-contrast .form-label {
    color: #e2e8f0;
    font-weight: var(--font-weight-medium);
}

body.high-contrast .form-control {
    background: #0f1419;
    color: #e2e8f0;
    border: 1px solid #2d3748;
}

body.high-contrast .form-control:focus {
    border-color: #4a90e2;
    box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
    background: #1a1f28;
}

body.high-contrast .form-control::placeholder {
    color: #718096;
}

body.high-contrast .form-control:disabled {
    background: #0f1419;
    border-color: #1a1f28;
    opacity: 0.6;
}

body.high-contrast .form-help {
    color: #a0aec0;
}

body.high-contrast .form-error {
    color: #f87171;
}

body.high-contrast .form-control.is-invalid {
    border-color: #f87171;
}


/* Tables */

body.high-contrast .table {
    border: 1px solid #2d3748;
}

body.high-contrast .table thead {
    background: #2d3748;
}

body.high-contrast .table th {
    color: #e2e8f0;
    font-weight: var(--font-weight-semibold);
    border-bottom: 1px solid #4a5568;
}

body.high-contrast .table td {
    color: #cbd5e0;
    border-bottom: 1px solid #2d3748;
}

body.high-contrast .table tbody tr:hover {
    background: #2d3748;
}

body.high-contrast .table-striped tbody tr:nth-child(even) {
    background: #1a1f28;
}


/* Badges */

body.high-contrast .badge {
    font-weight: var(--font-weight-semibold);
}

body.high-contrast .badge-primary {
    background: #4a90e2;
    color: #ffffff;
    border-color: #4a90e2;
}

body.high-contrast .badge-success {
    background: #34d399;
    color: #0f1419;
    border-color: #34d399;
}

body.high-contrast .badge-warning {
    background: #fbbf24;
    color: #0f1419;
    border-color: #fbbf24;
}

body.high-contrast .badge-error {
    background: #f87171;
    color: #ffffff;
    border-color: #f87171;
}


/* Alerts */

body.high-contrast .alert {
    border-width: 1px;
}

body.high-contrast .alert-success {
    background: #1a3a2e;
    color: #34d399;
    border-color: #34d399;
}

body.high-contrast .alert-warning {
    background: #3a2f1a;
    color: #fbbf24;
    border-color: #fbbf24;
}

body.high-contrast .alert-error {
    background: #3a1a1a;
    color: #f87171;
    border-color: #f87171;
}

body.high-contrast .alert-info {
    background: #1a2a3a;
    color: #60a5fa;
    border-color: #60a5fa;
}


/* Links */

body.high-contrast a {
    color: #4a90e2;
    font-weight: var(--font-weight-normal);
}

body.high-contrast a:hover {
    color: #6ba3e8;
}


/* Focus States */

body.high-contrast *:focus-visible {
    outline: 2px solid #ffd95e;
    outline-offset: 2px;
}

body.high-contrast code {
    background-color: var(--color-surface);
    color: var(--color-text-primary);
}


/* Scrollbars */

body.high-contrast ::-webkit-scrollbar {
    width: 12px;
    height: 12px;
}

body.high-contrast ::-webkit-scrollbar-track {
    background: #0f1419;
}

body.high-contrast ::-webkit-scrollbar-thumb {
    background: #4a5568;
    border-radius: 6px;
}

body.high-contrast ::-webkit-scrollbar-thumb:hover {
    background: #4a90e2;
}


/* Selection */

body.high-contrast ::selection {
    background: #4a90e2;
    color: #ffffff;
}


/* Banner */

.hero-section {
    background: linear-gradient(135deg, #0f2744 0%, #1a4d7a 50%, #2563a8 100%);
}

body.high-contrast .hero-section {
    background: linear-gradient(135deg, #0f1419 0%, #031627 50%, #06243f 100%);
}

body.high-contrast .auth-container {
    background: linear-gradient(135deg, #0f1419 0%, #031627 50%, #06243f 100%);
}


/* ============================================================================
   ELEMENTOS COM TAMANHO FIXO (NÃO AFETADOS POR ACESSIBILIDADE)
   ============================================================================ */

.fixed-size,
.banner-title {
    font-size: 6rem !important;
    /* 96px */
}

@media (max-width: 1024px) {
    .fixed-size,
    .banner-title {
        font-size: 4rem !important;
        /* 64px em tablets */
    }
}

@media (max-width: 640px) {
    .fixed-size,
    .banner-title {
        font-size: 2.5rem !important;
        /* 40px em mobile */
    }
}