/* ═══════════════════════════════════════════════════════════════
   Telas de cadastro/edição (formulários dos módulos)
   Ativado pelo cabeçalho padrão (.fm-head, partials/form-page-header.html):
   o escopo `body:has(.fm-head)` pega a página inteira, incluindo modais.
   Identidade ERPAvel: azul #0a68f8 (claro) / #2b7bff (escuro).
   ═══════════════════════════════════════════════════════════════ */

body:has(.fm-head) {
    --primary-color: #0a68f8;
    --fm-accent: #0a68f8;
    --fm-danger: #ef4444;
}
body.dark-mode:has(.fm-head) {
    --primary-color: #2b7bff;
    --fm-accent: #5da2ff;
}

/* ── Cabeçalho: faixa de título em pagina.css (.pg-banner) ───────────────── */

/* ── Cartões e títulos de seção ──────────────────────────────── */
body:has(.fm-head) .card {
    background: var(--card-bg, var(--bg-surface)) !important;
    border: 1px solid var(--border-color) !important;
    border-radius: 14px;
    box-shadow: var(--shadow-sm) !important;
}
body:has(.fm-head) .card-body { padding: 1.25rem 1.5rem 1.4rem; }

body:has(.fm-head) h4.border-bottom, body:has(.fm-head) h5.border-bottom, body:has(.fm-head) h6.border-bottom {
    display: flex; align-items: center; gap: .6rem;
    margin: 0 0 1.15rem !important; padding: 0 0 .85rem !important;
    font-size: .95rem; font-weight: 700; letter-spacing: -.005em; color: var(--text-primary);
    border-bottom: 1px solid var(--border-color-light) !important;
}
body:has(.fm-head) h4.border-bottom > i.bi:first-child,
body:has(.fm-head) h5.border-bottom > i.bi:first-child,
body:has(.fm-head) h6.border-bottom > i.bi:first-child {
    width: 28px; height: 28px; flex-shrink: 0; margin: 0 !important;
    display: inline-flex; align-items: center; justify-content: center; font-size: .9rem; border-radius: 8px;
    color: var(--fm-accent); background: color-mix(in srgb, var(--fm-accent) 12%, transparent);
}
body:has(.fm-head) .badge.bg-primary {
    background: color-mix(in srgb, var(--fm-accent) 15%, transparent) !important; color: var(--fm-accent);
    font-weight: 700; border-radius: 999px; padding: .28em .65em;
}

/* ── Rótulos e campos ────────────────────────────────────────── */
body:has(.fm-head) .form-label {
    display: flex; align-items: center; gap: .15rem; min-height: 1.25rem; line-height: 1.25;
    margin-bottom: .4rem; font-size: var(--fs-label); font-weight: 500;
    color: color-mix(in srgb, var(--text-primary) 85%, transparent) !important;
}
body:has(.fm-head) .form-label i.bi { color: var(--text-tertiary); }
body:has(.fm-head) .form-control, body:has(.fm-head) .form-select {
    height: var(--control-height); min-height: var(--control-height); padding: .55rem .95rem; font-size: var(--fs-input); border-radius: var(--control-radius);
    border: 1px solid var(--input-border) !important; background-color: var(--input-bg) !important; color: var(--text-primary) !important;
    transition: border-color .15s, box-shadow .15s;
}
body:has(.fm-head) textarea.form-control { height: auto; min-height: 84px; padding-top: .6rem; }
body:has(.fm-head) .form-control:hover:not(:disabled):not([readonly]),
body:has(.fm-head) .form-select:hover:not(:disabled) { border-color: var(--text-tertiary) !important; }
body:has(.fm-head) .form-control:focus, body:has(.fm-head) .form-select:focus {
    border-color: var(--fm-accent) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--fm-accent) 20%, transparent) !important;
}
body:has(.fm-head) .form-control:disabled, body:has(.fm-head) .form-select:disabled,
body:has(.fm-head) .form-control[readonly] {
    background-color: var(--bg-surface-secondary) !important; color: var(--text-secondary) !important; opacity: 1; cursor: default;
}
body:has(.fm-head) .form-control::placeholder { color: var(--text-tertiary) !important; opacity: .65; }
body:has(.fm-head) .form-control.is-invalid, body:has(.fm-head) .form-select.is-invalid {
    border-color: var(--fm-danger) !important; background-image: none;
    box-shadow: 0 0 0 3px rgba(239, 68, 68, .15) !important;
}
body:has(.fm-head) .form-control.is-valid, body:has(.fm-head) .form-select.is-valid { background-image: none; }
body:has(.fm-head) .invalid-feedback, .fm-feedback { margin-top: .3rem; font-size: var(--fs-help); font-weight: 500; color: var(--fm-danger); }
.fm-feedback { display: block; }
/* Texto de ajuda sob o campo: menor que o valor digitado, mas nunca abaixo de 12px */
body:has(.fm-head) .form-text, body:has(.fm-head) small.text-muted {
    display: block; margin-top: .3rem; font-size: var(--fs-help); line-height: 1.35;
    color: var(--text-tertiary) !important;
}

/* Busca/lookup: código + nome + lupa como um bloco só */
body:has(.fm-head) .input-group > .btn { height: var(--control-height); display: inline-flex; align-items: center; justify-content: center; }
body:has(.fm-head) .input-group > .btn-outline-primary {
    min-width: 44px; color: var(--fm-accent);
    border-color: var(--input-border);
    background: color-mix(in srgb, var(--fm-accent) 9%, var(--input-bg));
}
body:has(.fm-head) .input-group > .btn-outline-primary:hover { color: #fff; background: var(--fm-accent); border-color: var(--fm-accent); }
body:has(.fm-head) .input-group > .btn-outline-secondary {
    min-width: 40px; color: var(--text-tertiary); border-color: var(--input-border); background: var(--input-bg);
}
body:has(.fm-head) .input-group > .btn-outline-secondary:hover { color: var(--fm-danger); background: rgba(239, 68, 68, .1); }
body:has(.fm-head) .input-group-text {
    height: var(--control-height); font-size: var(--fs-label); color: var(--text-secondary);
    background: var(--bg-surface-secondary); border: 1px solid var(--input-border); border-radius: 0 var(--control-radius) var(--control-radius) 0;
}

/* Interruptores e caixas de seleção */
body:has(.fm-head) .form-check-input { cursor: pointer; border-color: var(--input-border); background-color: var(--input-bg); }
body:has(.fm-head) .form-check-input:checked { background-color: var(--fm-accent); border-color: var(--fm-accent); }
body:has(.fm-head) .form-check-input:focus { border-color: var(--fm-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--fm-accent) 25%, transparent); }
body:has(.fm-head) .form-switch { min-height: 1.6rem; padding-left: 3.2em; }
body:has(.fm-head) .form-switch .form-check-input { width: 2.5em; height: 1.35em; margin-left: -3.2em; }
body:has(.fm-head) .form-check-label { cursor: pointer; font-size: var(--fs-label); color: var(--text-primary); }

/* ── Abas ────────────────────────────────────────────────────── */
body:has(.fm-head) .nav-tabs { gap: .25rem; border-bottom: 1px solid var(--border-color) !important; }
body:has(.fm-head) .nav-tabs .nav-link {
    margin-bottom: -1px; padding: .8rem 1.05rem; font-size: var(--fs-btn); font-weight: 600; border-radius: 0;
    color: var(--text-tertiary) !important; background: transparent !important;
    border: 0 !important; border-bottom: 2px solid transparent !important;
    transition: color .15s, border-color .15s;
}
body:has(.fm-head) .nav-tabs .nav-link:hover:not(.active) { color: var(--text-primary) !important; border-bottom-color: var(--border-color) !important; }
body:has(.fm-head) .nav-tabs .nav-link.active { color: var(--fm-accent) !important; border-bottom-color: var(--fm-accent) !important; }

/* ── Tabelas de itens ────────────────────────────────────────── */
body:has(.fm-head) .table-itens, body:has(.fm-head) .models-form .table { font-size: var(--fs-table-form); }
body:has(.fm-head) .table-itens th {
    padding: .65rem .85rem; font-size: var(--fs-grid-head); font-weight: 600; letter-spacing: .02em; text-transform: uppercase;
    color: var(--text-tertiary); background: var(--bg-surface-secondary); border-color: var(--border-color);
}
body:has(.fm-head) .table-itens td { padding: .65rem .85rem; color: var(--text-primary); border-color: var(--border-color-light); vertical-align: middle; font-variant-numeric: tabular-nums; }
/* Colunas numéricas/centralizadas nunca quebram ("R$ 1.110,26" ocupava 2 linhas): a tabela cede largura
   à coluna Produto, que é a única que pode quebrar. */
body:has(.fm-head) .table-itens th.text-center, body:has(.fm-head) .table-itens td.text-center,
body:has(.fm-head) .table-itens th.text-end, body:has(.fm-head) .table-itens td.text-end {
    white-space: nowrap; padding-left: .6rem; padding-right: .6rem;
}
body:has(.fm-head) .table-itens tbody tr:hover > td { background: color-mix(in srgb, var(--fm-accent) 6%, transparent); }
body:has(.fm-head) .table-itens .btn-group .btn { border: 0; background: transparent; color: var(--text-tertiary); width: 30px; height: 30px; padding: 0; border-radius: 8px !important; }
body:has(.fm-head) .table-itens .btn-outline-primary:hover { color: var(--fm-accent); background: color-mix(in srgb, var(--fm-accent) 13%, transparent); }
body:has(.fm-head) .table-itens .btn-outline-danger:hover { color: var(--fm-danger); background: rgba(239, 68, 68, .13); }
body:has(.fm-head) .table-itens td.text-muted { padding: 1.6rem .85rem; color: var(--text-tertiary) !important; }
body:has(.fm-head) .btn-add-item {
    display: flex; align-items: center; justify-content: center; gap: .45rem; width: 100%; padding: .75rem;
    font-size: var(--fs-btn); font-weight: 600; color: var(--text-secondary) !important; cursor: pointer;
    background: transparent; border: 1.5px dashed var(--border-color) !important; border-radius: 10px;
    transition: color .15s, border-color .15s, background .15s;
}
body:has(.fm-head) .btn-add-item:hover {
    color: var(--fm-accent) !important; border-color: var(--fm-accent) !important;
    background: color-mix(in srgb, var(--fm-accent) 7%, transparent);
}

/* ── Modais dentro de formulários ────────────────────────────── */
body:has(.fm-head) .modal-content { border: 1px solid var(--border-color); border-radius: 14px; box-shadow: var(--shadow-lg); }
body:has(.fm-head) .modal-title { font-size: 1rem; font-weight: 700; }
body:has(.fm-head) .modal-footer .btn-primary, body:has(.fm-head) .modal-footer .btn-success {
    background: var(--fm-accent); border-color: var(--fm-accent); color: #fff; font-weight: 600; border-radius: 9px;
}
body:has(.fm-head) .modal-footer .btn-secondary { font-weight: 600; border-radius: 9px; }

/* ── Barra de ações (rodapé fixo do formulário) ──────────────── */
body:has(.fm-head) form > hr.my-4 { margin: .25rem 0 !important; border: 0; opacity: 0; height: 0; }
.fm-actions {
    position: sticky; bottom: 0; z-index: 20;
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    margin: 1.25rem 0 0; padding: .85rem 1.25rem;
    background: color-mix(in srgb, var(--card-bg, var(--bg-surface)) 92%, transparent);
    -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    border: 1px solid var(--border-color); border-radius: 14px;
    box-shadow: 0 -6px 18px rgba(8, 20, 40, .12);
}
.fm-actions-hint { display: inline-flex; align-items: center; gap: .45rem; font-size: var(--fs-help); color: var(--text-tertiary); }
.fm-req-dot { width: 6px; height: 6px; border-radius: 50%; background: #ef4444; display: inline-block; }
.fm-actions-btns { display: flex; align-items: center; gap: .6rem; margin-left: auto; }
.fm-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
    height: 40px; padding: 0 1.25rem; font-size: var(--fs-btn); font-weight: 600; line-height: 1; text-decoration: none;
    border-radius: 10px; cursor: pointer; transition: background .15s, border-color .15s, color .15s, box-shadow .15s, transform .15s;
}
.fm-btn--ghost { color: var(--text-secondary); background: transparent; border: 1px solid var(--border-color); }
.fm-btn--ghost:hover { color: var(--text-primary); border-color: var(--text-tertiary); background: var(--bg-surface-hover); }
.fm-btn--primary {
    color: #fff; background: var(--fm-accent, #0a68f8); border: 1px solid var(--fm-accent, #0a68f8);
    box-shadow: 0 2px 8px color-mix(in srgb, var(--fm-accent, #0a68f8) 35%, transparent);
}
body.dark-mode .fm-btn--primary { background: #2b7bff; border-color: #2b7bff; color: #fff; }
.fm-btn--primary:hover { color: #fff; transform: translateY(-1px); filter: brightness(.92); }
.fm-btn--primary:disabled { opacity: .55; cursor: progress; transform: none; }
.fm-btn--outline {
    color: var(--fm-accent, #0a68f8); background: transparent; border: 1px solid var(--fm-accent, #0a68f8);
}
body.dark-mode .fm-btn--outline { color: #6aa5ff; border-color: #2b7bff; }
.fm-btn--outline:hover { color: #fff; background: var(--fm-accent, #0a68f8); }
body.dark-mode .fm-btn--outline:hover { color: #fff; background: #2b7bff; }

@media (max-width: 575px) {
    body:has(.fm-head) .card-body { padding: 1rem; }
    .fm-actions { flex-direction: column-reverse; align-items: stretch; padding: .75rem; }
    .fm-actions-hint { justify-content: center; }
    .fm-actions-btns { margin-left: 0; flex-direction: column-reverse; }
    .fm-btn { width: 100%; }
}
@media print { .fm-actions, .fm-head-hint { display: none !important; } }
