/*
 * Reset + grid/utilitários próprios (substitui o Bootstrap).
 * Mantém os MESMOS nomes de classe já usados nas views (container, row,
 * col-md-*, d-flex, text-muted, mb-*, etc.) - só a implementação é nova.
 */

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

html, body {
	margin: 0;
	padding: 0;
	background: var(--bg);
	color: var(--texto);
	font-family: var(--fonte);
	font-size: var(--fs-base);
	line-height: 1.5;
	-webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 { margin: 0 0 var(--space-2); font-weight: 700; color: inherit; }
h1 { font-size: var(--fs-2xl); }
h2 { font-size: var(--fs-xl); }
h3 { font-size: var(--fs-lg); }
p { margin: 0 0 var(--space-3); }

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

hr { border: none; border-top: 1px solid var(--borda); margin: var(--space-4) 0; }

fieldset { border: none; margin: 0; padding: 0; min-width: 0; }
legend { padding: 0; }

::selection { background: var(--accent-fraco); color: var(--accent-hover); }

/* ---------- Grid ---------- */

.container {
	width: 100%;
	max-width: 1140px;
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--space-4);
	padding-right: var(--space-4);
}

.row {
	display: flex;
	flex-wrap: wrap;
	margin-left: calc(var(--space-3) * -1);
	margin-right: calc(var(--space-3) * -1);
}
.row > [class*="col"] {
	padding-left: var(--space-3);
	padding-right: var(--space-3);
}

/* gutter utilities (Bootstrap "g-*") */
.g-1 { margin-left: calc(var(--space-1) * -1); margin-right: calc(var(--space-1) * -1); }
.g-1 > [class*="col"] { padding-left: var(--space-1); padding-right: var(--space-1); }
.g-2 { margin-left: calc(var(--space-2) * -1); margin-right: calc(var(--space-2) * -1); }
.g-2 > [class*="col"] { padding-left: var(--space-2); padding-right: var(--space-2); }
.g-3 { margin-left: calc(var(--space-3) * -1); margin-right: calc(var(--space-3) * -1); }
.g-3 > [class*="col"] { padding-left: var(--space-3); padding-right: var(--space-3); }
.g-4 { margin-left: calc(var(--space-4) * -1); margin-right: calc(var(--space-4) * -1); }
.g-4 > [class*="col"] { padding-left: var(--space-4); padding-right: var(--space-4); margin-bottom: var(--space-4); }

.col, .col-auto, .col-12,
.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11,
.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12,
.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
	flex: 1 0 0%;
}
.col-auto { flex: 0 0 auto; width: auto; }
.col-12 { flex: 0 0 auto; width: 100%; }

@media (min-width: 768px) {
	.col-md-1  { flex: 0 0 auto; width: 8.3333%; }
	.col-md-2  { flex: 0 0 auto; width: 16.6667%; }
	.col-md-3  { flex: 0 0 auto; width: 25%; }
	.col-md-4  { flex: 0 0 auto; width: 33.3333%; }
	.col-md-5  { flex: 0 0 auto; width: 41.6667%; }
	.col-md-6  { flex: 0 0 auto; width: 50%; }
	.col-md-7  { flex: 0 0 auto; width: 58.3333%; }
	.col-md-8  { flex: 0 0 auto; width: 66.6667%; }
	.col-md-9  { flex: 0 0 auto; width: 75%; }
	.col-md-10 { flex: 0 0 auto; width: 83.3333%; }
	.col-md-11 { flex: 0 0 auto; width: 91.6667%; }
	.col-md-12 { flex: 0 0 auto; width: 100%; }
	.offset-md-4 { margin-left: 33.3333%; }
}
@media (min-width: 992px) {
	.col-lg-1  { flex: 0 0 auto; width: 8.3333%; }
	.col-lg-2  { flex: 0 0 auto; width: 16.6667%; }
	.col-lg-3  { flex: 0 0 auto; width: 25%; }
	.col-lg-4  { flex: 0 0 auto; width: 33.3333%; }
	.col-lg-5  { flex: 0 0 auto; width: 41.6667%; }
	.col-lg-6  { flex: 0 0 auto; width: 50%; }
	.col-lg-7  { flex: 0 0 auto; width: 58.3333%; }
	.col-lg-8  { flex: 0 0 auto; width: 66.6667%; }
	.col-lg-9  { flex: 0 0 auto; width: 75%; }
	.col-lg-10 { flex: 0 0 auto; width: 83.3333%; }
	.col-lg-11 { flex: 0 0 auto; width: 91.6667%; }
	.col-lg-12 { flex: 0 0 auto; width: 100%; }
}

/* ---------- Flex utilities ---------- */

.d-flex { display: flex; }
.d-none { display: none; }
.d-block { display: block; }
.d-inline { display: inline; }
.d-inline-block { display: inline-block; }
.flex-fill { flex: 1 1 auto; }
.flex-wrap { flex-wrap: wrap; }
.justify-content-center { justify-content: center; }
.justify-content-between { justify-content: space-between; }
.justify-content-end { justify-content: flex-end; }
.align-items-center { align-items: center; }
.align-items-start { align-items: flex-start; }
.align-items-end { align-items: flex-end; }
.align-middle { vertical-align: middle; }
.gap-1 { gap: var(--space-1); }
.gap-2 { gap: var(--space-2); }
.gap-3 { gap: var(--space-3); }
.gap-4 { gap: var(--space-4); }

@media (min-width: 768px) {
	.flex-md-row { flex-direction: row; }
}

/* ---------- Sizing ---------- */

.w-100 { width: 100%; }
.h-100 { height: 100%; }
.vh-100 { min-height: 100vh; }

/* ---------- Spacing (margin/padding) ---------- */

.m-0 { margin: 0; }
.mt-0 { margin-top: 0; }
.mb-0 { margin-bottom: 0; }

.mt-1 { margin-top: var(--space-1); } .mb-1 { margin-bottom: var(--space-1); }
.mt-2 { margin-top: var(--space-2); } .mb-2 { margin-bottom: var(--space-2); }
.mt-3 { margin-top: var(--space-3); } .mb-3 { margin-bottom: var(--space-3); }
.mt-4 { margin-top: var(--space-4); } .mb-4 { margin-bottom: var(--space-4); }
.mt-5 { margin-top: var(--space-5); } .mb-5 { margin-bottom: var(--space-5); }
.mt-auto { margin-top: auto; } .mb-auto { margin-bottom: auto; }
.my-3 { margin-top: var(--space-3); margin-bottom: var(--space-3); }
.my-4 { margin-top: var(--space-4); margin-bottom: var(--space-4); }
.mx-auto { margin-left: auto; margin-right: auto; }
.mx-4 { margin-left: var(--space-4); margin-right: var(--space-4); }
.me-1 { margin-right: var(--space-1); } .ms-1 { margin-left: var(--space-1); }
.me-2 { margin-right: var(--space-2); } .ms-2 { margin-left: var(--space-2); }
.me-auto { margin-right: auto; } .ms-auto { margin-left: auto; }

.p-0 { padding: 0; }
.p-2 { padding: var(--space-2); }
.p-3 { padding: var(--space-3); }
.p-4 { padding: var(--space-4); }
.py-2 { padding-top: var(--space-2); padding-bottom: var(--space-2); }
.py-3 { padding-top: var(--space-3); padding-bottom: var(--space-3); }
.py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); }
.py-5 { padding-top: var(--space-6); padding-bottom: var(--space-6); }
.px-0 { padding-left: 0; padding-right: 0; }
.px-2 { padding-left: var(--space-2); padding-right: var(--space-2); }
.px-4 { padding-left: var(--space-4); padding-right: var(--space-4); }
.px-5 { padding-left: var(--space-5); padding-right: var(--space-5); }

@media (min-width: 768px) {
	.py-md-6 { padding-top: calc(var(--space-6) * 1.4); padding-bottom: calc(var(--space-6) * 1.4); }
}

/* ---------- Tamanhos de fonte / display ---------- */

.fs-1 { font-size: 2.5rem; }
.fs-2 { font-size: 2rem; }
.fs-3 { font-size: 1.75rem; }
.fs-4 { font-size: 1.5rem; }
.fs-5 { font-size: 1.25rem; }
.fs-6 { font-size: var(--fs-base); }
.display-4, .display-5, .display-6 { font-weight: 700; line-height: 1.15; }
.display-4 { font-size: 3rem; }
.display-5 { font-size: 2.5rem; }
.display-6 { font-size: 2rem; }

/* ---------- Text utilities ---------- */

.text-muted { color: var(--texto-secundario) !important; }
.text-secondary { color: var(--texto-secundario) !important; }
.text-danger { color: var(--perigo) !important; }
.text-success { color: var(--sucesso) !important; }
.text-warning { color: var(--aviso) !important; }
.text-center { text-align: center; }
.text-start { text-align: left; }
.text-end { text-align: right; }
.text-nowrap { white-space: nowrap; }
.text-decoration-line-through { text-decoration: line-through; }
.text-white { color: var(--texto-invertido) !important; }
.text-dark { color: var(--texto) !important; }
.fw-bold { font-weight: 700; }
.small, small { font-size: var(--fs-sm); }
.titulo { font-size: var(--fs-lg); font-weight: 700; }
.link-secondary { color: var(--texto-secundario); }
.link-secondary:hover { color: var(--texto); }

/* ---------- Background utilities ---------- */

.bg-white { background-color: var(--bg) !important; }
.bg-light { background-color: var(--bg-elevado) !important; }
.bg-dark { background-color: var(--texto) !important; }
.bg-primary-color { background-color: var(--accent) !important; }
.bg-second-color { background-color: var(--texto-secundario) !important; }
.primary-color { color: var(--texto-invertido) !important; }
.second-color { color: var(--accent) !important; }

/* ---------- Misc ---------- */

.sticky-top { position: sticky; top: 0; z-index: 1020; }
.trHover:hover { background-color: var(--bg-elevado); cursor: pointer; }
.rounded { border-radius: var(--radius); }
.shadow-sm { box-shadow: var(--shadow-sm); }
.border { border: 1px solid var(--borda); }
.border-0 { border: 0 !important; }

/* scroll horizontal só no próprio container, nunca na página inteira */
.table-responsive { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
