/* ===== Fase 14: previsão (grade editável de 12 meses) e prévia da importação. Só tokens. ===== */
.pv-bar { display: flex; align-items: flex-end; flex-wrap: wrap; gap: var(--sp-4); background: var(--card); border: 1px solid var(--borda); border-radius: var(--radius); padding: var(--sp-4); margin-bottom: var(--sp-3); }
.pv-campo { min-width: 240px; }
.pv-campo-ano { min-width: 140px; }
.pv-campo label { display: block; font-size: 0.8125rem; font-weight: 600; margin-bottom: var(--sp-1); }
.pv-acoes { margin-left: auto; display: flex; align-items: center; flex-wrap: wrap; gap: var(--sp-3); }
.pv-status { min-height: 1.25rem; margin-bottom: var(--sp-2); font-size: 0.8125rem; color: var(--text-secundario); }
.pv-card { position: relative; background: var(--card); border: 1px solid var(--borda); border-radius: var(--radius); box-shadow: var(--sombra-card); }
.pv-scroll { overflow-x: auto; max-width: 100%; }
.pv-grid { border-collapse: separate; border-spacing: 0; width: 100%; font-size: 0.8125rem; }
.pv-grid th, .pv-grid td { padding: var(--sp-1) var(--sp-2); border-bottom: 1px solid var(--borda); white-space: nowrap; background: var(--card); }
.pv-grid thead th { position: sticky; top: 0; z-index: 2; background: var(--bg-alt); font-weight: 600; text-align: center; color: var(--text); }
.pv-grid .pv-sticky { position: sticky; left: 0; z-index: 1; min-width: 220px; max-width: 280px; overflow: hidden; text-overflow: ellipsis; text-align: left; border-right: 1px solid var(--borda-forte); background: var(--card); }
.pv-grid thead th.pv-sticky { z-index: 3; background: var(--bg-alt); }
.pv-grid .pv-cod { color: var(--muted); margin-right: var(--sp-2); }
.pv-grid .pv-grupo td { background: var(--bg-alt); font-weight: 600; }
.pv-grid .pv-grupo td.pv-sticky { background: var(--bg-alt); }
.pv-grid .pv-n { text-align: right; font-variant-numeric: tabular-nums; }
.pv-grid .pv-t { font-weight: 600; background: var(--bg-alt); min-width: 110px; }
.pv-grid thead th.pv-a, .pv-grid td.pv-a { text-align: center; width: 70px; }
.pv-grid tfoot td { font-weight: 600; background: var(--bg-alt); position: sticky; bottom: 0; }
.pv-grid tfoot td.pv-sticky { z-index: 2; }
.pv-grid .pv-m { min-width: 128px; }
.pv-grid .pv-m span { margin-right: var(--sp-1); }
.pv-grid .pv-lock { color: var(--muted); vertical-align: middle; }
.pv-grid .pv-c .pv-in { width: 96px; height: var(--altura-controle); text-align: right; font: inherit; font-variant-numeric: tabular-nums; padding: 0 var(--sp-2); border: 1px solid var(--borda-forte); border-radius: var(--radius-xs); background: var(--card); color: var(--text); }
.pv-grid .pv-in:focus { outline: 2px solid var(--cor-primaria); outline-offset: 0; border-color: var(--cor-primaria); }
.pv-grid .pv-in:disabled { background: var(--bg-alt); color: var(--text-secundario); cursor: not-allowed; }
.pv-grid .pv-in.invalido { border-color: var(--erro); background: var(--erro-suave); }
.pv-grid .pv-obs, .pv-grid .pv-cp { background: none; border: none; padding: 2px; margin-left: 2px; cursor: pointer; color: var(--muted); border-radius: var(--radius-xs); vertical-align: middle; font-size: 1rem; }
.pv-grid .pv-obs:hover, .pv-grid .pv-cp:hover { color: var(--cor-primaria); background: var(--cor-primaria-suave); }
.pv-grid .pv-obs.tem { color: var(--cor-primaria); }
.pv-grid .pv-obs:focus-visible, .pv-grid .pv-cp:focus-visible { outline: 2px solid var(--cor-primaria); }
.pv-vazio { text-align: center; padding: var(--sp-6) var(--sp-5); color: var(--text-secundario); }
.pv-vazio i { font-size: 40px; color: var(--cor-primaria); }
.pv-vazio .pv-vazio-t { font-weight: 600; color: var(--text); margin-top: var(--sp-2); }
.pv-vazio .pv-vazio-s { margin-top: var(--sp-1); font-size: 0.8125rem; }
.pv-carregando { display: flex; align-items: center; justify-content: center; gap: var(--sp-3); padding: var(--sp-6) 0; }
.pv-carregando[hidden], .pv-vazio[hidden], .pv-scroll[hidden], .pv-previa[hidden] { display: none; }
.pv-obs-ref { font-size: 0.8125rem; color: var(--text-secundario); margin-bottom: var(--sp-3); }
.pv-obs-lbl { display: block; font-size: 0.8125rem; font-weight: 600; margin-bottom: var(--sp-1); }
.pv-obs-txt { width: 100%; font: inherit; padding: var(--sp-2); border: 1px solid var(--borda-forte); border-radius: var(--radius-sm); resize: vertical; }
.pv-obs-cont { font-size: 0.75rem; color: var(--muted); text-align: right; margin-top: var(--sp-1); }
.pv-previa { display: flex; flex-direction: column; gap: var(--sp-3); }
.pv-previa-lista { max-height: 38vh; overflow-y: auto; border: 1px solid var(--borda); border-radius: var(--radius-sm); }
.pv-pl { display: grid; grid-template-columns: 190px 1fr 2fr; gap: var(--sp-3); padding: var(--sp-2) var(--sp-3); border-bottom: 1px solid var(--borda); font-size: 0.8125rem; }
.pv-pl:last-child { border-bottom: none; }
.pv-pl.erro { background: var(--erro-suave); }
.pv-pl.erro .pv-pl-m { color: var(--erro-escura); font-weight: 600; }
.pv-pl.aviso { background: var(--alerta-suave); }
.pv-pl.ok .pv-pl-m { color: var(--sucesso-escura); }
.pv-pl-p { color: var(--text-secundario); }
.pv-pl-trunc { padding: var(--sp-2) var(--sp-3); font-size: 0.75rem; color: var(--muted); }
dialog .modal-rodape .im-msg { margin-right: auto; }
@media (max-width: 768px) {
    .pv-acoes { margin-left: 0; width: 100%; }
    .pv-campo { min-width: 0; flex: 1 1 100%; }
    .pv-grid .pv-sticky { min-width: 150px; max-width: 160px; }
    .pv-pl { grid-template-columns: 1fr; gap: var(--sp-1); }
    dialog .modal-rodape { flex-wrap: wrap; }
    dialog .modal-rodape .im-msg { flex: 1 1 100%; margin-right: 0; }
}
