/* ================================
   CSS RESET - NORMALIZE
   ================================ */

*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    line-height: 1.15;
    -webkit-text-size-adjust: 100%;
    -webkit-tap-highlight-color: transparent;
}

body {
    margin: 0;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.5;
    color: #212529;
    background-color: #fff;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

main {
    display: block;
}

h1, h2, h3, h4, h5, h6 {
    margin-top: 0;
    margin-bottom: 0.5rem;
    font-weight: 500;
    line-height: 1.2;
}

p {
    margin-top: 0;
    margin-bottom: 1rem;
}

a {
    color: inherit;
    text-decoration: none;
    background-color: transparent;
}

a:hover {
    text-decoration: none;
}

img {
    max-width: 100%;
    height: auto;
    border-style: none;
    vertical-align: middle;
}

button,
input,
optgroup,
select,
textarea {
    margin: 0;
    font-family: inherit;
    font-size: inherit;
    line-height: inherit;
}

button,
input {
    overflow: visible;
}

button,
select {
    text-transform: none;
}

button,
[type="button"],
[type="reset"],
[type="submit"] {
    -webkit-appearance: button;
}

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
    border-style: none;
    padding: 0;
}

button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
    outline: 1px dotted ButtonText;
}

textarea {
    overflow: auto;
    resize: vertical;
}

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
    height: auto;
}

[type="search"] {
    outline-offset: -2px;
    -webkit-appearance: textfield;
}

[type="search"]::-webkit-search-decoration {
    -webkit-appearance: none;
}

::-webkit-file-upload-button {
    font: inherit;
    -webkit-appearance: button;
}

summary {
    display: list-item;
    cursor: pointer;
}

template {
    display: none;
}

[hidden] {
    display: none !important;
}

ul, ol {
    list-style: none;
}

table {
    border-collapse: collapse;
}

hr {
    box-sizing: content-box;
    height: 0;
    overflow: visible;
}

pre {
    font-family: monospace, monospace;
    font-size: 1em;
}

abbr[title] {
    border-bottom: none;
    text-decoration: underline;
    text-decoration: underline dotted;
}

code,
kbd,
samp {
    font-family: monospace, monospace;
    font-size: 1em;
}

small {
    font-size: 80%;
}

sub,
sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
}

sub {
    bottom: -0.25em;
}

sup {
    top: -0.5em;
}

fieldset {
    padding: 0.35em 0.75em 0.625em;
}

legend {
    box-sizing: border-box;
    color: inherit;
    display: table;
    max-width: 100%;
    padding: 0;
    white-space: normal;
}

progress {
    vertical-align: baseline;
}

/* Evita scroll horizontal */
html,
body {
    overflow-x: hidden;
    max-width: 100vw;
}


/* ✅ OVERRIDE BOOTSTRAP - IDENTIDADE DO TEMA (usa theme-vars.css) */
 :root {
     /* ====== CORES BOOTSTRAP → TEMA ====== */

     /* Primary (Cor de acento do tema) */
     --bs-primary: var(--theme-accent);
     --bs-primary-rgb: var(--theme-accent-rgb);
     --bs-primary-bg-subtle: rgba(var(--theme-accent-rgb), 0.1);
     --bs-primary-border-subtle: rgba(var(--theme-accent-rgb), 0.2);

     /* Secondary (Cor primária do tema) */
     --bs-secondary: var(--theme-primary);
     --bs-secondary-rgb: var(--theme-primary-rgb);
     --bs-secondary-bg-subtle: rgba(var(--theme-primary-rgb), 0.1);
     --bs-secondary-border-subtle: rgba(var(--theme-primary-rgb), 0.2);

     /* Danger */
     --bs-danger: var(--theme-accent);
     --bs-danger-rgb: var(--theme-accent-rgb);

     /* Links */
     --bs-link-color: var(--theme-accent);
     --bs-link-hover-color: var(--theme-accent-dark);

     /* Focus States (CRÍTICO) */
     --bs-focus-ring-color: rgba(var(--theme-accent-rgb), 0.25);
     --bs-focus-ring-width: 0.25rem;
     --bs-focus-ring-opacity: 0.25;

     /* Borders */
     --bs-border-color: rgba(2, 0, 65, 0.12);
     --bs-border-color-translucent: rgba(2, 0, 65, 0.08);
 }

/* ====== BOTÕES BOOTSTRAP - OVERRIDE COMPLETO ====== */

/* Primary Button */
.btn-primary {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--theme-accent);
    --bs-btn-border-color: var(--theme-accent);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--theme-accent-medium);
    --bs-btn-hover-border-color: var(--theme-accent-medium);
    --bs-btn-focus-shadow-rgb: var(--theme-accent-rgb);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--theme-accent-dark);
    --bs-btn-active-border-color: var(--theme-accent-dark);
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: var(--theme-accent);
    --bs-btn-disabled-border-color: var(--theme-accent);

    background: var(--gradient-accent);
    border: none;
    box-shadow: 0 2px 12px rgba(228, 45, 47, 0.3);
}

.btn-primary:hover {
    background: var(--gradient-accent-rev);
    box-shadow: 0 4px 18px rgba(228, 45, 47, 0.5);
    border-color: transparent;
}

/* ✅ FOCUS STATE (Remove azul #0062cc) */
.btn-primary:focus,
.btn-primary:focus-visible {
    background: var(--gradient-accent-rev);
    border-color: var(--theme-accent) !important; /* força cor de acento */
    box-shadow: 0 0 0 0.25rem rgba(228, 45, 47, 0.5) !important; /* ✅ SOMBRA VERMELHA */
    outline: none;
}

.btn-primary:active,
.btn-primary.active {
    background: var(--theme-accent-dark);
    border-color: var(--theme-accent-dark) !important;
}

/* Secondary Button */
.btn-secondary {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--theme-primary);
    --bs-btn-border-color: var(--theme-primary);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: #1A1F3A;
    --bs-btn-hover-border-color: #1A1F3A;
    --bs-btn-focus-shadow-rgb: 41, 44, 97;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: #1A1F3A;
    --bs-btn-active-border-color: #1A1F3A;
}

.btn-secondary:focus,
.btn-secondary:focus-visible {
    border-color: var(--theme-primary) !important;
    box-shadow: 0 0 0 0.25rem rgba(41, 44, 97, 0.5) !important;
}

/* Outline Buttons */
.btn-outline-primary {
    --bs-btn-color: var(--theme-accent);
    --bs-btn-border-color: var(--theme-accent);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--theme-accent);
    --bs-btn-hover-border-color: var(--theme-accent);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--theme-accent);
    --bs-btn-active-border-color: var(--theme-accent);
}

.btn-outline-primary:focus,
.btn-outline-primary:focus-visible {
    border-color: var(--theme-accent) !important;
    box-shadow: 0 0 0 0.25rem rgba(228, 45, 47, 0.5) !important;
}

/* ====== LINKS ====== */

a {
    color: var(--theme-accent);
    text-decoration: none;
}

a:hover {
    color: #ffffff;
}

/* Exclude areas with white/light backgrounds from white hover */
.bottom-nav a:hover,
.drawer-nav a:hover {
    color: inherit;
}

a:focus,
a:focus-visible {

    outline: 2px solid rgba(228, 45, 47, 0.5);
    outline-offset: 2px;
}

/* ====== FORMS - OVERRIDE COMPLETO ====== */

.form-control:focus,
.form-select:focus,
.form-check-input:focus {
    border-color: var(--theme-accent) !important; /* força cor de acento */
    box-shadow: 0 0 0 0.25rem rgba(228, 45, 47, 0.15) !important; /* ✅ SOMBRA VERMELHA */
    outline: none;
}

.form-check-input:checked {
    background-color: var(--theme-accent);
    border-color: var(--theme-accent);
}

.form-check-input:focus {
    border-color: var(--theme-accent) !important;
    box-shadow: 0 0 0 0.25rem rgba(228, 45, 47, 0.25) !important;
}

/* Validation States */
.was-validated .form-control:valid:focus,
.form-control.is-valid:focus {
    border-color: #28a745;
    box-shadow: 0 0 0 0.25rem rgba(40, 167, 69, 0.25);
}

.was-validated .form-control:invalid:focus,
.form-control.is-invalid:focus {
    border-color: var(--theme-accent);
    box-shadow: 0 0 0 0.25rem rgba(228, 45, 47, 0.25);
}

/* ====== BADGES ====== */

.badge.bg-primary,
.badge.badge-primary {
    background: var(--gradient-accent) !important;
    color: #fff;
}

.badge.bg-secondary {
    background: var(--theme-primary) !important;
    color: #fff;
}

/* ====== ALERTS ====== */

.alert-primary {
    --bs-alert-color: var(--theme-accent-dark);
    --bs-alert-bg: rgba(228, 45, 47, 0.1);
    --bs-alert-border-color: rgba(228, 45, 47, 0.2);
}

.alert-danger {
    --bs-alert-color: var(--theme-accent-dark);
    --bs-alert-bg: rgba(228, 45, 47, 0.1);
    --bs-alert-border-color: rgba(228, 45, 47, 0.2);
}

/* ====== PROGRESS BARS ====== */

.progress-bar {
    background: linear-gradient(90deg, var(--theme-accent) 0%, var(--theme-accent-bright) 100%);
}

/* ====== PAGINATION ====== */

.pagination .page-link {
    color: var(--theme-accent);
}

.pagination .page-link:hover {
    color: var(--theme-accent-medium);
    background-color: rgba(228, 45, 47, 0.1);
    border-color: var(--theme-accent);
}

.pagination .page-link:focus,
.pagination .page-link:focus-visible {
    color: var(--theme-accent-medium);
    background-color: rgba(228, 45, 47, 0.1);
    border-color: var(--theme-accent) !important;
    box-shadow: 0 0 0 0.25rem rgba(228, 45, 47, 0.25) !important;
    outline: none;
}

.pagination .page-item.active .page-link {
    background-color: var(--theme-accent);
    border-color: var(--theme-accent);
}

/* ====== NAV TABS/PILLS ====== */

.nav-tabs .nav-link:hover {
    border-color: var(--theme-accent) var(--theme-accent) #dee2e6;
}

.nav-tabs .nav-link:focus,
.nav-tabs .nav-link:focus-visible {
    border-color: var(--theme-accent) var(--theme-accent) #dee2e6;
    outline: none;
}

.nav-tabs .nav-link.active {
    color: var(--theme-accent);
    border-color: var(--theme-accent) var(--theme-accent) #fff;
}

.nav-pills .nav-link.active {
    background-color: var(--theme-accent);
}

.nav-pills .nav-link:focus,
.nav-pills .nav-link:focus-visible {
    outline: 2px solid rgba(228, 45, 47, 0.5);
    outline-offset: 2px;
}

/* ====== SPINNERS/LOADERS ====== */

.spinner-border {
    border-color: rgba(228, 45, 47, 0.25);
    border-right-color: var(--theme-accent);
}

.spinner-grow {
    background-color: var(--theme-accent);
}

/* ====== DROPDOWNS ====== */

.dropdown-item:hover,
.dropdown-item:focus {
    background-color: rgba(228, 45, 47, 0.1);
    color: var(--theme-accent);
}

.dropdown-item.active {
    background-color: var(--theme-accent);
    color: #fff;
}

/* ====== MODALS (Bootstrap) ====== */

.modal-header {
    border-bottom-color: rgba(2, 0, 65, 0.12);
}

.modal-footer {
    border-top-color: rgba(2, 0, 65, 0.12);
}

/* ====== ACCORDION ====== */

.accordion-button:not(.collapsed) {
    color: var(--theme-accent);
    background-color: rgba(228, 45, 47, 0.1);
}

.accordion-button:focus,
.accordion-button:focus-visible {
    border-color: var(--theme-accent);
    box-shadow: 0 0 0 0.25rem rgba(228, 45, 47, 0.25);
    outline: none;
}

/* ====== LIST GROUP ====== */

.list-group-item.active {
    background-color: var(--theme-accent);
    border-color: var(--theme-accent);
}

.list-group-item-action:hover,
.list-group-item-action:focus {
    background-color: rgba(228, 45, 47, 0.1);
    color: var(--theme-accent);
}

/* ====== TOASTS ====== */

.toast-header {
    border-bottom-color: rgba(2, 0, 65, 0.12);
}

/* ====== OFFCANVAS ====== */

.offcanvas-header {
    border-bottom-color: rgba(2, 0, 65, 0.12);
}

/* ====== FORÇAR REMOÇÃO DE QUALQUER AZUL RESTANTE ====== */

*:focus,
*:focus-visible {
    outline-color: rgba(228, 45, 47, 0.5) !important;
}

/* Remove outline azul padrão do navegador */
button:focus,
input:focus,
select:focus,
textarea:focus,
a:focus {
    outline: none;
}

/* Mas mantém acessibilidade com focus-visible */
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
a:focus-visible {
    outline: 2px solid rgba(228, 45, 47, 0.5);
    outline-offset: 2px;
}

