/* ══════════════════════════════════════════════════════════════════
   MODELO PROFISSIONAL (João Neto, 4-Out-2026)
   «Cada cliente escolhe o modelo que lhe agradar.» Dois modelos da
   Gestão Comercial sobre o MESMO motor: o Clássico (o de sempre, o
   principal) e este. Só muda a arrumação e o aspecto — os ecrãs, os
   ids, as contas, a numeração e o envio à AGT são os mesmos.

   Tudo aqui está preso a html[data-gp-modelo="pro"], que o
   js/gp-modelo.js põe e tira. Sem o atributo, este ficheiro não faz nada.
   ══════════════════════════════════════════════════════════════════ */

html[data-gp-modelo="pro"] {
    /* Barra lateral escura (azul-noite da casa), menu sempre à vista. */
    --sidebar-bg: #0B1A2D;
    --sidebar-hover: rgba(255,255,255,0.07);
    --sidebar-active: #1B6FC9;
    --sidebar-text: #C3D0E1;
    --sidebar-texto-forte: #FFFFFF;
    --sidebar-label: #8397B1;
    --sidebar-linha: rgba(255,255,255,0.09);
    --sidebar-superficie: rgba(255,255,255,0.035);
    --sidebar-superficie-2: rgba(255,255,255,0.07);
    --sidebar-accent: #7CB3FF;
    --sidebar-width: 212px;
    --topbar-h: 52px;
    /* Cantos mais secos, sem sombras: aspecto de programa de trabalho. */
    --radius: 8px;
    --radius-lg: 12px;
    --shadow-sm: none;
}

/* ── BARRA LATERAL ─────────────────────────────────────────────── */
html[data-gp-modelo="pro"] .sidebar { box-shadow: none; border-right: 0; }
html[data-gp-modelo="pro"] .sidebar::after { display: none; }
html[data-gp-modelo="pro"] .sidebar-logo { background: #fff; border-radius: 8px; padding: 3px; box-sizing: border-box; }
html[data-gp-modelo="pro"] .sidebar-nav::-webkit-scrollbar-thumb { background: rgba(255,255,255,.18); }
html[data-gp-modelo="pro"] .nav-section-label::after { background: linear-gradient(90deg, rgba(255,255,255,.14), rgba(255,255,255,0)); }
html[data-gp-modelo="pro"] .nav-item { font-size: 12px; padding: 7px 10px; }
html[data-gp-modelo="pro"] .nav-item i { opacity: .7; }
html[data-gp-modelo="pro"] .nav-item.active,
html[data-gp-modelo="pro"] .nav-item.nav-modulo-activo { background: #1B6FC9; color: #fff; font-weight: 700; }
html[data-gp-modelo="pro"] .nav-item.active::before,
html[data-gp-modelo="pro"] .nav-item.nav-modulo-activo::before { display: none; }
html[data-gp-modelo="pro"] .nav-group-btn,
html[data-gp-modelo="pro"] .nav-group-items .nav-group-btn { color: #AFC0D6; }
html[data-gp-modelo="pro"] .nav-group-btn:hover,
html[data-gp-modelo="pro"] .nav-group-btn.open { color: #fff; }
html[data-gp-modelo="pro"] .nav-group-btn.has-active { color: #7CB3FF !important; }
html[data-gp-modelo="pro"] .nav-group-items { border-left-color: rgba(124,179,255,.22); }
html[data-gp-modelo="pro"] .nav-filho { border-left-color: rgba(255,255,255,.12); }
html[data-gp-modelo="pro"] .company-option.active { color: #fff; }
html[data-gp-modelo="pro"] .sa-consola-btn i,
html[data-gp-modelo="pro"] .sa-consola-btn span { color: #C4B1F5; }
html[data-gp-modelo="pro"] .sa-avisos-btn i,
html[data-gp-modelo="pro"] .sa-avisos-btn span { color: #FCD34D; }
/* Itens com fundo escrito à mão (ex.: Backoffice) ficam legíveis. */
html[data-gp-modelo="pro"] .sidebar-nav .nav-item[style*="background"] { color: #fff; }
/* Os painéis de cada módulo (Painel de RH, Painel Comercial, Pipeline)
   têm a cor da letra escrita no próprio <span>/<i>: vermelho e azul
   escuros que não se lêem sobre o azul-noite. Ficam brancos; o friso
   colorido à esquerda continua a dizer de que módulo são. */
html[data-gp-modelo="pro"] .sidebar-nav .nav-item[style*="border-left"] span:not(.nav-badge),
html[data-gp-modelo="pro"] .sidebar-nav .nav-item[style*="border-left"] i { color: #fff !important; }

/* ── BARRA DE CIMA ─────────────────────────────────────────────── */
html[data-gp-modelo="pro"] .topbar { box-shadow: none; padding: 0 18px; }
html[data-gp-modelo="pro"] .topbar-search { border-radius: 8px; padding: 6px 12px; }
html[data-gp-modelo="pro"] .topbar-search input { width: 260px; }
html[data-gp-modelo="pro"] .topbar-btn { width: 34px; height: 34px; background: #fff; }
html[data-gp-modelo="pro"] .topbar-search::after {
    content: 'Ctrl K'; font: 600 10.5px/1 ui-monospace, Consolas, monospace; color: #33415C;
    padding: 3px 6px; border: 1px solid var(--border-dark); border-bottom-width: 2px; border-radius: 4px; background: #fff; white-space: nowrap;
}

/* ── CONTEÚDO: mais denso, tabelas de programa de gestão ───────── */
html[data-gp-modelo="pro"] .content-area { padding: 16px 20px 56px; }
html[data-gp-modelo="pro"] .page-header { margin-bottom: 16px; }
html[data-gp-modelo="pro"] .page-header-info h1 { font-size: 19px; }
html[data-gp-modelo="pro"] .card { box-shadow: none; }
html[data-gp-modelo="pro"] .card-header { padding: 12px 16px; }
html[data-gp-modelo="pro"] .card-header h3 { font-size: 13px; font-weight: 800; letter-spacing: .03em; }
html[data-gp-modelo="pro"] .card-body { padding: 16px; }
html[data-gp-modelo="pro"] .stat-card { padding: 14px 16px; box-shadow: none; }
html[data-gp-modelo="pro"] .stat-card:hover { transform: none; box-shadow: none; border-color: var(--border-dark); }
html[data-gp-modelo="pro"] .stat-card::after { display: none; }
html[data-gp-modelo="pro"] th { font-size: 11px; padding: 8px 12px; letter-spacing: .04em; }
html[data-gp-modelo="pro"] td { font-size: 13px; padding: 8px 12px; }
html[data-gp-modelo="pro"] tbody tr:hover > td { background: #F7FAFE; }

/* ── BARRA DE ESTADO (fundo do ecrã) ───────────────────────────── */
.gp-estado { display: none; }
html[data-gp-modelo="pro"] .gp-estado {
    display: flex; align-items: center; flex-wrap: wrap; gap: 4px 18px;
    position: sticky; bottom: 0; z-index: 40; min-height: 28px; padding: 4px 16px; box-sizing: border-box;
    background: #0B1A2D; color: #B7C6DA; font-size: 11.5px; font-family: var(--font);
}
.gp-estado b { color: #fff; font-weight: 600; }
.gp-estado .pt { display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 6px; background: #34D399; }
.gp-estado .pt.off { background: #F87171; }
.gp-estado button { margin-left: auto; background: none; border: 0; color: #9FC4F5; font: inherit; font-weight: 700; cursor: pointer; padding: 2px 4px; }
.gp-estado button:hover { color: #fff; text-decoration: underline; }
@media print { .gp-estado, .qi-fkeys { display: none !important; } }

/* ── NOVA FACTURA (Emitir documento) ───────────────────────────── */
/* O Estilo (cores) continua a valer por cima: o Noite fica escuro. */
html[data-gp-modelo="pro"] .modal-container.qi-ecra { border-radius: 10px; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-topo { background: #fff; color: #0F1B2D; border-bottom: 1px solid #DCE3EC; padding: 10px 18px; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-topo h2 { color: #0F1B2D; font-size: 18px; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-topo p,
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-topo .qi-kbd { color: #51607A; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-kbd kbd { border-color: #C9D3E0; background: #fff; color: #33415C; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-topo-ic { background: #1B6FC9; color: #fff; box-shadow: none; width: 38px; height: 38px; border-radius: 10px; font-size: 16px; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-btn-reimp { background: transparent; border: 1px solid transparent; box-shadow: none; color: #33415C; padding: 7px 12px; font-size: 13px; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-btn-reimp:hover { background: #EEF2F7; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-topo .modal-close { background: #fff; color: #33415C; border: 1px solid #C9D3E0; }
html[data-gp-modelo="pro"] .qi-barra { box-shadow: none; padding: 6px 18px; }
html[data-gp-modelo="pro"] .qi-ecra .qi-wrap:not(.qi-est-noite) > .modal-body { background: #EEF2F7; }
html[data-gp-modelo="pro"] .qi-wrap > .modal-body { padding: 14px 18px !important; }

/* Os tipos de documento numa calha cinzenta, compacta. */
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-tipos { background: #E4EAF2; border: 0; border-radius: 10px; box-shadow: none; padding: 4px; gap: 2px; margin-bottom: 14px; width: fit-content; max-width: 100%; }
html[data-gp-modelo="pro"] .qi-tipo { padding: 5px 12px 5px 5px; border-radius: 7px; font-size: 13px; }
html[data-gp-modelo="pro"] .qi-tipo-ic { width: 24px; height: 24px; border-radius: 6px; font-size: 11.5px; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-tipo-ic { background: transparent; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-tipos input:checked + .qi-tipo { background: #fff; color: #0F1B2D; box-shadow: 0 1px 2px rgba(15,27,45,.16); }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-tipos input:checked + .qi-tipo .qi-tipo-ic { background: #1B6FC9; color: #fff; box-shadow: none; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-tipos input:checked + .qi-tipo b { background: #E8F1FC; color: #0F4F99; }
html[data-gp-modelo="pro"] .qi-tipos input:checked + .qi-tipo::after { display: none; }

/* Cartões secos e a grelha de linhas como uma tabela. */
html[data-gp-modelo="pro"] .qi-cartao { border-radius: 10px; padding: 12px 16px; margin-bottom: 12px; box-shadow: none; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-cartao { border-color: #DCE3EC; }
html[data-gp-modelo="pro"] .qi-cartao-tit { color: #33415C; font-size: 11px; margin-bottom: 8px; }
html[data-gp-modelo="pro"] .qi-cabecalho { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 6px 6px 0 0; padding: 8px 6px !important; margin-bottom: 0 !important; }
html[data-gp-modelo="pro"] #qiItems { border: 1px solid var(--border); border-top: 0; border-radius: 0 0 6px 6px; margin-bottom: 8px; }
html[data-gp-modelo="pro"] .qi-row { border-radius: 0; padding: 5px 6px 3px; margin-bottom: 0 !important; border-bottom: 1px solid var(--border-suave); }
html[data-gp-modelo="pro"] .qi-row:last-child { border-bottom: 0; }
html[data-gp-modelo="pro"] .qi-row:nth-child(even) { background: transparent; }
html[data-gp-modelo="pro"] .qi-row:focus-within { background: #F3F8FE; }
html[data-gp-modelo="pro"] .qi-wrap .form-control { border-radius: 6px; }
html[data-gp-modelo="pro"] .qi-add { border-style: dashed; border-radius: 8px; padding: 7px; }

/* O painel dos totais: fixo à direita, sem friso azul nem sombra. */
html[data-gp-modelo="pro"] .qi-painel { border-top-width: 1px; border-radius: 10px; box-shadow: none; padding: 14px 16px; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-painel { border-color: #DCE3EC; }
html[data-gp-modelo="pro"] .qi-total span:last-child { font-size: 28px; font-weight: 800; }
html[data-gp-modelo="pro"] .qi-wrap:not(.qi-est-noite) .qi-total span:last-child { color: #0F4F99; }
html[data-gp-modelo="pro"] .qi-emitir { background: #CA1118; box-shadow: none; border-radius: 8px; padding: 13px; }
/* O Emitir fica sempre à vista no fundo do ecrã, mesmo quando o painel
   é mais alto do que a janela (portátil). */
html[data-gp-modelo="pro"] .qi-painel .qi-emitir { position: sticky; bottom: 8px; z-index: 2; box-shadow: 0 0 0 6px var(--card-bg); }
html[data-gp-modelo="pro"] .qi-ind { border-radius: 10px; }
html[data-gp-modelo="pro"] .qi-chips button.on { background: #1B6FC9; color: #fff; border-color: #1B6FC9; }

/* A barra das teclas, no fundo da Nova Factura. */
.qi-fkeys { display: none; }
html[data-gp-modelo="pro"] .qi-fkeys {
    display: flex; flex-wrap: wrap; gap: 6px 16px; flex-shrink: 0; padding: 8px 18px;
    background: var(--card-bg); border-top: 1px solid var(--border); font-size: 12px; color: var(--text-secondary);
}
.qi-fkeys span { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.qi-fkeys kbd {
    font: 700 10.5px/1 ui-monospace, Consolas, monospace; padding: 3px 6px; border: 1px solid var(--border-dark);
    border-bottom-width: 2px; border-radius: 4px; background: var(--card-bg); color: var(--text-primary);
}
@media (max-width: 900px) { html[data-gp-modelo="pro"] .qi-fkeys { display: none; } }

/* ── MENU SÓ COM ÍCONES (4-Out-2026, 2.º passo) ────────────────────
   No computador, a barra lateral fica estreita (64px), só com os
   ícones, e abre-se POR CIMA do conteúdo ao passar o rato ou ao chegar
   lá com o Tab — os nomes e os grupos continuam todos a um gesto.
   O conteúdo ganha a largura toda. No telemóvel fica a gaveta de sempre.
   O js/gp-modelo.js tira o «collapsed» que o balcão punha: aqui a barra
   já está sempre recolhida, e o recolhido antigo esconderia os nomes
   mesmo com ela aberta. */
@media (min-width: 769px) {
    html[data-gp-modelo="pro"] { --sidebar-width: 64px; }
    html[data-gp-modelo="pro"] .sidebar { transition: width .16s ease, box-shadow .16s ease; }
    html[data-gp-modelo="pro"] .sidebar:not(.gp-fechar):hover,
    html[data-gp-modelo="pro"] .sidebar:not(.gp-fechar):focus-within {
        width: 236px; z-index: 300; box-shadow: 8px 0 28px -10px rgba(0,0,0,.55);
        transition: width .16s ease .12s, box-shadow .16s ease .12s;
    }
    html[data-gp-modelo="pro"] .sidebar-toggle-btn { display: none; }

    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .sidebar-brand { flex-direction: column; gap: 4px; padding: 8px 0; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .sidebar-brand-text,
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .company-info,
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .company-chevron,
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .company-dropdown,
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-item > span:not(.nav-badge),
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-group-btn .nav-chev,
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-section-label .nav-pill-obra,
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .sidebar-user-info { display: none !important; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .company-switcher { justify-content: center; margin: 8px 8px 3px; padding: 6px 0; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .sidebar-nav { padding: 6px 8px; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-item { justify-content: center; padding-left: 0; padding-right: 0; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-item i { width: auto; font-size: 15px; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-item .nav-badge { position: absolute; top: 1px; right: 4px; margin: 0; transform: scale(.85); }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .sa-consola-btn,
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .sa-avisos-btn { margin-left: 8px; margin-right: 8px; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-group-btn { justify-content: center; padding-left: 0; padding-right: 0; font-size: 0; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-group-btn i:first-child { width: auto; font-size: 15px; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-group-items { margin: 0 0 3px; border-left: none; padding-left: 0; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-filho { margin-left: 0; padding-left: 0; border-left: 0; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-section-label { font-size: 0; padding: 10px 4px 4px; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .sidebar-user { flex-direction: column; gap: 6px; padding: 10px 0; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .btn-logout { margin-left: 0; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-voltar { justify-content: center; font-size: 0; padding-left: 0; padding-right: 0; }
    html[data-gp-modelo="pro"] .sidebar:is(:not(:hover):not(:focus-within), .gp-fechar) .nav-voltar i { font-size: 15px; }
}

/* ── CLIENTES: LISTA À ESQUERDA, FICHA À DIREITA ───────────────────
   Desenhado pelo js/gp-modelo.js (gpClientesPro). Os dados, a dívida
   e os movimentos vêm das mesmas funções da conta corrente; os botões
   chamam as funções de sempre (editar, apagar, extracto, factura). */
.gpc { display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start; }
.gpc-lista { flex: 1 1 300px; max-width: 380px; min-width: 0; background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.gpc-lista-topo { padding: 12px; display: flex; flex-direction: column; gap: 8px; border-bottom: 1px solid var(--border); }
.gpc-filtros { display: flex; gap: 6px; flex-wrap: wrap; }
.gpc-filtros button { border: 1px solid var(--border); background: var(--card-bg); border-radius: 999px; padding: 4px 10px; font: inherit; font-size: 12px; font-weight: 700; color: var(--text-secondary); cursor: pointer; }
.gpc-filtros button.on { background: #1B6FC9; border-color: #1B6FC9; color: #fff; }
.gpc-itens { max-height: calc(100vh - 290px); overflow-y: auto; }
.gpc-it { display: flex; justify-content: space-between; align-items: center; gap: 10px; width: 100%; padding: 10px 14px; border: 0; border-bottom: 1px solid var(--border-suave); background: transparent; text-align: left; cursor: pointer; font: inherit; color: var(--text-primary); }
.gpc-it:hover { background: #F7FAFE; }
.gpc-it.on { background: #E8F1FC; box-shadow: inset 3px 0 0 #1B6FC9; }
.gpc-it > span:first-child { min-width: 0; }
.gpc-it .n { display: block; font-size: 13px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gpc-it .m { display: block; font-size: 11.5px; color: var(--text-secondary); margin-top: 1px; }
.gpc-it .s { font-size: 12.5px; font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; }
.gpc-it .s.venc { color: #A31218; } .gpc-it .s.deve { color: #8A4204; } .gpc-it .s.zero { color: var(--text-muted); font-weight: 600; }
.gpc-vazio { padding: 24px 14px; text-align: center; color: var(--text-secondary); font-size: 13px; }
.gpc-ficha { flex: 999 1 520px; min-width: 0; display: flex; flex-direction: column; gap: 14px; }
.gpc-cab { display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; padding: 16px; }
.gpc-av { width: 48px; height: 48px; border-radius: 12px; background: #E8F1FC; color: #0F4F99; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 17px; flex: none; }
.gpc-cab h2 { margin: 0; font-size: 20px; font-weight: 800; }
.gpc-chips { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; }
.gpc-chip { display: inline-flex; align-items: center; height: 22px; padding: 0 9px; border-radius: 999px; font-size: 11.5px; font-weight: 700; background: #EEF2F7; color: #3A4A63; }
.gpc-chip.bom { background: #E7F6EF; color: #03643F; } .gpc-chip.mau { background: #FDECEC; color: #A31218; } .gpc-chip.info { background: #E8F1FC; color: #0F4F99; }
.gpc-acc { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; }
.gpc-dados { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px 16px; padding: 0 16px 16px; }
.gpc-dados div { font-size: 13px; min-width: 0; overflow-wrap: anywhere; }
.gpc-dados span { display: block; font-size: 10.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--text-secondary); margin-bottom: 2px; }
.gpc-num { display: flex; gap: 10px; flex-wrap: wrap; padding: 14px 16px; }
.gpc-num div { flex: 1 1 140px; padding: 10px 12px; border-radius: 8px; background: var(--bg-secondary); }
.gpc-num span { display: block; font-size: 10.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--text-secondary); }
.gpc-num b { font-size: 16px; font-variant-numeric: tabular-nums; }

/* ══════════════════════════════════════════════════════════════════
   EXECUTIVO — o 3.º modelo (João Neto, 4-Out-2026: «GestorPRO deve ser
   diferente de outros softwares angolanos»). É o Profissional com a
   Nova Factura arrumada como o protótipo aprovado. O js/gp-modelo.js
   (_qiExec) muda os nós de sítio; aqui só o aspecto.
   ══════════════════════════════════════════════════════════════════ */
/* A assinatura da marca: a faixa do «5» — bandeira vermelha, tigela celeste. */
html[data-gp-variante="exec"] .topbar { box-shadow: inset 0 3px 0 0 transparent; border-top: 0; background-image: linear-gradient(90deg, #EC1C24 0 64px, #3BB2F6 64px 100%); background-size: 100% 3px; background-repeat: no-repeat; background-color: #fff; }

/* Cabeçalho: título à esquerda, tipos ao meio, acções à direita. */
html[data-gp-variante="exec"] .qx .qi-topo { flex-wrap: wrap; row-gap: 8px; }
html[data-gp-variante="exec"] .qx .qi-topo .qi-kbd { display: none; }
html[data-gp-variante="exec"] .qx .qi-topo .qi-tipos { margin: 0 0 0 10px; flex: 0 1 auto; }
html[data-gp-variante="exec"] .qx .qi-topo .qi-tipo { padding: 4px 10px 4px 4px; font-size: 12.5px; }
html[data-gp-variante="exec"] .qx .qi-topo .qi-tipo-ic { display: none; }
html[data-gp-variante="exec"] .qx .qi-topo .qi-tipo { padding: 5px 10px; gap: 6px; }
html[data-gp-variante="exec"] .qx .qi-topo > div:nth-child(2) { min-width: 0; max-width: 210px; }
html[data-gp-variante="exec"] .qx .qi-topo #qiTopoDica { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
html[data-gp-variante="exec"] .qx .qi-topo .qi-tipos { min-width: 0; max-width: 100%; }
html[data-gp-variante="exec"] .qx-acc { margin-left: auto; display: flex; align-items: center; gap: 2px; flex-wrap: wrap; justify-content: flex-end; }
html[data-gp-variante="exec"] .qx-acc .qi-btn-reimp { margin-left: 0 !important; }

/* Cliente: Nome · NIF · Morada com rótulos. */
html[data-gp-variante="exec"] .qx-cli { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 2fr); column-gap: 12px; row-gap: 4px; align-items: end; }
html[data-gp-variante="exec"] .qx-cli > .qi-cartao-tit, html[data-gp-variante="exec"] .qx-cli > #qiNovoClienteCx, html[data-gp-variante="exec"] .qx-cli > #qiCliInfo { grid-column: 1 / -1; }
html[data-gp-variante="exec"] .qx-cli > #qiNovoClienteCx:empty { display: none; }
html[data-gp-variante="exec"] .qx-cli .qi-cliente { display: contents !important; }
html[data-gp-variante="exec"] .qx-cli .qi-cli-cx .qi-cliente { display: block !important; margin: 0 !important; }
html[data-gp-variante="exec"] .qx-cli .qi-cli-cx::before, html[data-gp-variante="exec"] .qx-fld > span { display: block; font-size: 10.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--text-secondary); margin-bottom: 4px; }
html[data-gp-variante="exec"] .qx-cli .qi-cli-cx::before { content: 'Nome / Firma'; }
html[data-gp-variante="exec"] .qx-fld { display: block; margin: 0; min-width: 0; }
html[data-gp-variante="exec"] .qx-cli #qiCliInfo { margin-top: 8px; }
html[data-gp-variante="exec"] .qx-cli .qi-cartao-tit .dir .btn { padding: 5px 12px; font-size: 12.5px; }

/* Linhas como as de uma tabela, numeradas. A última é a de escrever. */
html[data-gp-variante="exec"] .qx #qiItems { counter-reset: qxl; }
html[data-gp-variante="exec"] .qx #qiItems .qi-row, html[data-gp-variante="exec"] .qx .qi-cabecalho { grid-template-columns: 28px minmax(0,1fr) 68px 110px 64px 96px 104px 34px !important; }
html[data-gp-variante="exec"] .qx #qiItems .qi-row { counter-increment: qxl; align-items: center !important; }
html[data-gp-variante="exec"] .qx #qiItems .qi-row::before { content: counter(qxl); font-size: 12.5px; color: var(--text-secondary); font-variant-numeric: tabular-nums; padding-left: 4px; }
html[data-gp-variante="exec"] .qx .qi-cabecalho::before { content: '#'; }
html[data-gp-variante="exec"] .qx #qiItems .qi-row .form-control { border-color: transparent; background: transparent; box-shadow: none; }
html[data-gp-variante="exec"] .qx #qiItems .qi-row:hover .form-control { border-color: var(--border); }
html[data-gp-variante="exec"] .qx #qiItems .qi-row:last-child .form-control, html[data-gp-variante="exec"] .qx #qiItems .qi-row .form-control:focus { border-color: #1B6FC9; background: var(--card-bg); }
html[data-gp-variante="exec"] .qx #qiItems .qi-row:last-child { background: #F7FAFE; }
html[data-gp-variante="exec"] .qx #qiItems .qi-row:last-child::before { color: #1B6FC9; font-weight: 800; }
html[data-gp-variante="exec"] .qx .qi-qty, html[data-gp-variante="exec"] .qx .qi-price, html[data-gp-variante="exec"] .qx .qi-disc { text-align: right; }
html[data-gp-variante="exec"] .qx .qi-sub { padding-top: 0 !important; font-weight: 800 !important; }
html[data-gp-variante="exec"] .qx .qi-del { background: transparent !important; color: var(--text-secondary) !important; border: 0 !important; }
html[data-gp-variante="exec"] .qx .qi-del:hover { color: #DC2626 !important; }
html[data-gp-variante="exec"] .qx-dicas { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 10px; font-size: 12px; color: var(--text-secondary); }
html[data-gp-variante="exec"] .qx-dicas span { display: inline-flex; align-items: center; gap: 5px; }
html[data-gp-variante="exec"] .qx-dicas kbd { font: 700 10.5px/1 ui-monospace, Consolas, monospace; padding: 3px 6px; border: 1px solid var(--border-dark); border-bottom-width: 2px; border-radius: 4px; background: var(--card-bg); color: var(--text-primary); }
html[data-gp-variante="exec"] .qx-obs textarea { margin: 0 !important; }

/* A coluna da direita: três cartões soltos, sem a moldura do painel. */
html[data-gp-variante="exec"] .qx .qi-painel.qx-painel { background: transparent !important; border: 0 !important; padding: 0 !important; box-shadow: none !important; display: flex; flex-direction: column; gap: 12px; }
html[data-gp-variante="exec"] .qx-painel > .qi-cartao { margin: 0; }
html[data-gp-variante="exec"] .qx-2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; }
html[data-gp-variante="exec"] .qx-2 .form-control { margin-bottom: 6px !important; }
html[data-gp-variante="exec"] .qx-2 .qi-chips { grid-column: 1 / -1; }
html[data-gp-variante="exec"] .qx-datas .qi-chips { margin-bottom: 10px; }
html[data-gp-variante="exec"] .qx-ret { border-top: 0 !important; margin-top: 0 !important; padding-top: 0 !important; }
html[data-gp-variante="exec"] .qx-iva { padding: 0 !important; overflow: hidden; }
html[data-gp-variante="exec"] .qx-iva .qi-cartao-tit { padding: 12px 16px 8px; margin: 0; }
html[data-gp-variante="exec"] .qx-iva-t { width: 100%; border-collapse: collapse; font-size: 13px; }
html[data-gp-variante="exec"] .qx-iva-t th { font-size: 10.5px; padding: 7px 16px; text-align: right; }
html[data-gp-variante="exec"] .qx-iva-t td { padding: 8px 16px; text-align: right; font-variant-numeric: tabular-nums; border-bottom: 1px solid var(--border-suave); }
html[data-gp-variante="exec"] .qx-iva-t th:first-child, html[data-gp-variante="exec"] .qx-iva-t td:first-child { text-align: left; }
html[data-gp-variante="exec"] .qx-iva-t tr:last-child td { border-bottom: 0; }
html[data-gp-variante="exec"] .qx-iva-t .qx-iva-vazio { text-align: center !important; color: var(--text-muted); }
html[data-gp-variante="exec"] .qx-totais > div:first-child { border-top: 0 !important; padding-top: 0 !important; }
html[data-gp-variante="exec"] .qx-totais #qiIvaTaxas { display: none; }
html[data-gp-variante="exec"] .qx-totais .qi-total span:last-child { font-size: 30px; }
html[data-gp-variante="exec"] .qx-pe { position: sticky; bottom: 6px; z-index: 3; display: flex; flex-direction: column; gap: 6px; padding: 10px; background: var(--card-bg); border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 -10px 20px -16px rgba(15,27,45,.45); }
html[data-gp-variante="exec"] .qx-pe .qi-emitir { position: static !important; box-shadow: none !important; display: flex; align-items: center; gap: 10px; margin: 0 !important; }
html[data-gp-variante="exec"] .qx-pe #qiBtnRascunho { margin: 0; }
html[data-gp-variante="exec"] .qx-k { font: 700 10.5px/1 ui-monospace, Consolas, monospace; padding: 3px 6px; border-radius: 4px; border: 1px solid rgba(255,255,255,.45); background: rgba(255,255,255,.14); color: #fff; }
html[data-gp-variante="exec"] #qiBtnRascunho .qx-k { border-color: var(--border-dark); background: var(--card-bg); color: var(--text-primary); margin-left: 6px; }
@media (max-width: 900px) {
    html[data-gp-variante="exec"] .qx-cli { grid-template-columns: minmax(0, 1fr); }
    html[data-gp-variante="exec"] .qx .qi-topo .qi-tipos { margin: 0; order: 9; flex-basis: 100%; }
}
@media (max-width: 620px) {
    /* No telemóvel, como no Clássico (responsivo.css): artigo por cima, números por baixo. */
    html[data-gp-variante="exec"] .qx #qiItems .qi-row { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
    html[data-gp-variante="exec"] .qx #qiItems .qi-row::before { display: none; }
    html[data-gp-variante="exec"] .qx #qiItems .qi-row .form-control { border-color: var(--border); }
}

/* ── JANELA «MODELO DO ECRÃ» (vale em todos os modelos) ───────────── */
.gpm-fundo { position: fixed; inset: 0; z-index: 4000; background: rgba(11,26,45,.55); display: flex; align-items: center; justify-content: center; padding: 16px; }
.gpm-caixa { width: 980px; max-width: 100%; max-height: calc(100vh - 32px); overflow: auto; background: #fff; color: #0F1B2D; border-radius: 14px; padding: 24px; box-sizing: border-box; font-family: var(--font); box-shadow: 0 24px 60px -20px rgba(0,0,0,.5); }
.gpm-caixa h2 { margin: 0; font-size: 20px; font-weight: 800; }
.gpm-caixa > p { margin: 6px 0 18px; font-size: 13.5px; color: #51607A; line-height: 1.5; }
.gpm-ops { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; }
.gpm-op { display: flex; flex-direction: column; gap: 10px; text-align: left; padding: 14px; border: 2px solid #DCE3EC; border-radius: 12px; background: #fff; cursor: pointer; font: inherit; color: inherit; }
.gpm-op:hover { border-color: #9FC4F5; }
.gpm-op.on { border-color: #1B6FC9; background: #F7FAFE; }
.gpm-op b { font-size: 15px; display: flex; align-items: center; gap: 8px; }
.gpm-op b small { font-size: 11px; font-weight: 800; color: #0F4F99; background: #E8F1FC; border-radius: 999px; padding: 2px 8px; }
.gpm-op p { margin: 0; font-size: 12.5px; color: #51607A; line-height: 1.5; }
.gpm-mini { height: 120px; border-radius: 8px; border: 1px solid #DCE3EC; background: #EEF2F7; overflow: hidden; display: flex; }
.gpm-mini i { display: block; font-style: normal; }
.gpm-acc { display: flex; justify-content: flex-end; gap: 10px; margin-top: 20px; padding-top: 16px; border-top: 1px solid #E8EDF3; }
