/* ─── Design Tokens ─── */
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,400&display=swap');

:root {
    --canvas:           var(--mud-palette-background, #FAFAF8);
    --surface:          var(--mud-palette-surface, #FFFFFF);
    --border:           var(--mud-palette-lines-default, rgba(0, 0, 0, 0.08));
    --border-focus:     #0CD874;
    --text-primary:     var(--mud-palette-text-primary, #1A1A1A);
    --text-secondary:   var(--mud-palette-text-secondary, #666666);
    --accent:           var(--mud-palette-primary, #0CD874);
    --accent-subtle:    #EDFAF4;
    --sidebar-bg:       #111111;
    --sidebar-text:     #E5E5E5;
    --radius-card:      16px;
    --radius-btn:       10px;
    --radius-input:     10px;
    --shadow-card:      0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.04);
    --transition:       150ms ease;
}

/* ─── Base ─── */
*, *::before, *::after { box-sizing: border-box; }

html, body {
    font-family: 'DM Sans', 'Helvetica Neue', system-ui, -apple-system, sans-serif;
    background-color: var(--canvas);
    color: var(--text-primary);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-size: 14px;
    line-height: 1.6;
}

/* ─── MudBlazor Overrides ─── */
.mud-appbar {
    border-bottom: 1px solid var(--border) !important;
    box-shadow: none !important;
}

.mud-drawer {
    box-shadow: 1px 0 0 var(--border) !important;
}

.mud-card {
    box-shadow: var(--shadow-card) !important;
    border-radius: var(--radius-card) !important;
    border: 1px solid var(--border);
}

.mud-button-root {
    transition: transform var(--transition), background-color var(--transition) !important;
    border-radius: var(--radius-btn) !important;
    font-family: 'DM Sans', sans-serif !important;
    font-weight: 500 !important;
    letter-spacing: 0.01em !important;
}

.mud-button-root:active {
    transform: scale(0.98);
}

.mud-input-outlined fieldset {
    border-color: var(--border) !important;
    border-radius: var(--radius-input) !important;
    transition: border-color var(--transition) !important;
}

.mud-input-outlined:hover fieldset,
.mud-input-outlined.mud-input-focused fieldset {
    border-color: var(--accent) !important;
}

.mud-table-container {
    border: 1px solid var(--border);
    border-radius: var(--radius-card);
    overflow: hidden;
}

.mud-table thead tr th {
    background-color: var(--mud-palette-background-grey, #F5F5F3) !important;
    font-weight: 600 !important;
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.5px;
    color: var(--text-secondary) !important;
    border-bottom: 1px solid var(--border) !important;
}

.mud-table-row:hover {
    background-color: var(--mud-palette-action-default-hover, rgba(0, 0, 0, 0.04)) !important;
}

/* ─── Scrollbar ─── */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.12); border-radius: 99px; }
::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.22); }

/* ─── Validation ─── */
h1:focus { outline: none; }
.valid.modified:not([type=checkbox]) { outline: 1px solid var(--accent); }
.invalid { outline: 1px solid #e50000; }
.validation-message { color: #e50000; }

/* ─── Error Boundary ─── */
.blazor-error-boundary {
    background: #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}
.blazor-error-boundary::after { content: "Ocorreu um erro inesperado."; }

.darker-border-checkbox.form-check-input { border-color: #929292; }

/* --- Universal Softening --- */
.mud-paper, .mud-dialog, .mud-alert, .mud-drawer { border-radius: var(--radius-card) !important; }
.mud-nav-link { border-radius: var(--radius-btn) !important; margin: 2px 8px; }

/* tema escuro do Admin (classe no MudLayout): controles nativos do navegador (data, lista, caixa, rolagem) também escuros */
.tema-escuro { color-scheme: dark; }

/* ─── BIData: grade de lançamento (wwwroot/js/bidata.js) e planilha de campos ─── */
.bidata-aviso { min-height: 1.2rem; margin-bottom: .4rem; font-size: .9rem; color: var(--mud-palette-warning); }
.bidata-grade, .bidata-campos { overflow: auto; max-height: calc(100vh - 290px); border: 1px solid var(--border); border-radius: 4px; }
.bidata-grade table, .bidata-campos table { border-collapse: collapse; width: max-content; min-width: 100%; font-size: .85rem; }
.bidata-grade th, .bidata-campos th { position: sticky; top: 0; z-index: 1; background: var(--mud-palette-background-grey, #F5F5F3); color: var(--mud-palette-text-primary); text-align: left; font-weight: 500; padding: 6px 8px; border-bottom: 1px solid var(--border); white-space: nowrap; }
.bidata-grade td, .bidata-campos td { border-bottom: 1px solid var(--border); padding: 0; vertical-align: middle; }
.bidata-grade td.num { padding: 4px 8px; color: var(--text-secondary); white-space: nowrap; }
.bidata-grade input[type=text], .bidata-grade input[type=date], .bidata-grade input[type=datetime-local], .bidata-grade select {
    width: 100%; min-width: 120px; border: 0; padding: 6px 8px; background: transparent; font: inherit; color: inherit; }
.bidata-grade input[type=checkbox] { margin: 0 12px; }
.bidata-grade input:focus, .bidata-grade select:focus { outline: 2px solid var(--mud-palette-primary); outline-offset: -2px; background: var(--surface); }
.bidata-grade tr.alterada { background: rgba(255,193,7,.14); }
.bidata-grade tr.excluir td { text-decoration: line-through; opacity: .6; }
.bidata-grade td.com-erro, .bidata-campos td.com-erro { background: rgba(229,0,0,.14); box-shadow: inset 0 0 0 1px #e50000; }
.bidata-grade input:disabled, .bidata-grade select:disabled { color: inherit; }
/* espaço entre as colunas: padding maior e uma linha clara separando as células */
.bidata-grade th { padding: 6px 12px; }
.bidata-grade th + th, .bidata-grade td + td { border-left: 1px solid var(--border); }
.bidata-grade td.num { padding: 4px 12px; }
.bidata-grade input[type=text], .bidata-grade input[type=date], .bidata-grade input[type=datetime-local], .bidata-grade select { padding: 6px 12px; }
/* 1ª coluna: marcar a linha e o lápis que abre o formulário */
.bidata-grade th:first-child input[type=checkbox], .bidata-grade td.num input[data-sel] { margin: 0 8px 0 0; vertical-align: middle; }
.bidata-grade a.abrir { display: inline-flex; vertical-align: middle; color: var(--mud-palette-primary); padding: 2px; border-radius: 4px; }
.bidata-grade a.abrir:hover { background: var(--mud-palette-action-default-hover); }
/* a 1ª coluna fica parada ao rolar para o lado (no celular a grade rola dentro da tela) */
.bidata-grade td.num:first-child { position: sticky; left: 0; background: var(--canvas); box-shadow: 1px 0 0 var(--border); }
.bidata-grade th:first-child { left: 0; z-index: 2; box-shadow: 1px 0 0 var(--border); }
.bidata-grade tr.alterada td.num:first-child { background: linear-gradient(rgba(255,193,7,.14), rgba(255,193,7,.14)), var(--canvas); }
.bidata-campos td { padding: 2px 4px; }
.bidata-campos td.nao-vale { background: var(--mud-palette-action-disabled-background); }
.bidata-campos tr.inativo { opacity: .55; }
