/* Tema padrão do CRM ARIEVILO */
:root {
    --cor-primaria: #ED3237;        /* vermelho oficial PePark */
    --cor-primaria-escura: #c61b20; /* vermelho escuro p/ gradiente */
    --cor-fundo: #fafafa;
    --cor-superficie: #ffffff;
    --cor-texto: #1f2330;
    --cor-texto-suave: #6b7280;
    --cor-borda: #e2e6ee;
    --cor-erro: #d92d20;
    --cor-sucesso: #12805c;
    --raio: 10px;
    --sombra: 0 1px 3px rgba(16, 24, 40, .08), 0 1px 2px rgba(16, 24, 40, .06);
    --fonte: "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

* { box-sizing: border-box; }

body {
    margin: 0;
    font-family: var(--fonte);
    background-color: var(--cor-fundo);
    color: var(--cor-texto);
    line-height: 1.5;
    min-height: 100vh;
    position: relative;
}

/* Fundo estilo PePark: blobs vermelhos desfocados nos cantos */
body::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -2;
    pointer-events: none;
    background:
        radial-gradient(560px 560px at calc(100% + 40px) -90px, rgba(237, 50, 55, .50), transparent 62%),
        radial-gradient(600px 600px at -110px calc(100% + 120px), rgba(198, 27, 32, .42), transparent 62%);
}

/* Grade sutil que se esvanece nas bordas */
body::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background-image:
        linear-gradient(to right, rgba(26, 26, 26, .06) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(26, 26, 26, .06) 1px, transparent 1px);
    background-size: 56px 56px;
    -webkit-mask-image: radial-gradient(ellipse at 50% 35%, #000 30%, transparent 78%);
    mask-image: radial-gradient(ellipse at 50% 35%, #000 30%, transparent 78%);
}

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

/* Cabeçalho */
.crm-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--cor-primaria);
    border-bottom: 1px solid var(--cor-primaria-escura);
    padding: .15rem 1rem;
    box-shadow: var(--sombra);
    position: sticky;
    top: 0;
    z-index: 10;
}
.crm-topo .marca { display: inline-flex; align-items: center; }
.crm-topo .marca img { height: 59px; width: auto; display: block; }

.relogio-com { pointer-events: auto; position: relative; display: inline-flex; align-items: center; justify-content: center; color: var(--cor-primaria); margin-bottom: .25rem; }
.relogio-com:hover { opacity: .8; }
.relogio-com-badge { position: absolute; top: -7px; right: -9px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 9px; background: var(--cor-primaria); color: #fff; font-size: .68rem; font-weight: 700; line-height: 16px; text-align: center; box-shadow: 0 0 0 2px #fff; }
.relogio-com-badge[hidden] { display: none; }
.topo-usuario {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .1rem;
    color: #fff;
    text-align: right;
    line-height: 1.3;
}
.topo-usuario .topo-linha { font-size: .85rem; }
.topo-usuario .topo-sessao { font-size: .8rem; color: rgba(255, 255, 255, .9); }
.topo-usuario #sessao-contador { font-variant-numeric: tabular-nums; font-weight: 700; }

/* Layout principal com menu lateral */
.crm-layout { display: flex; align-items: stretch; }

.crm-menu {
    flex: 0 0 220px;
    background: var(--cor-superficie);
    border-right: 1px solid var(--cor-borda);
    box-shadow: var(--sombra);
    min-height: calc(100vh - 65px);
    position: sticky;
    top: 65px;
    align-self: flex-start;
    padding: .75rem 0;
    display: flex;
    flex-direction: column;
}
.crm-menu nav { display: flex; flex-direction: column; flex: 1 1 auto; }
.crm-menu-rodape {
    margin-top: auto;
    padding: 1rem 1.25rem .5rem;
    display: flex;
    justify-content: center;
}
.crm-menu-rodape img {
    max-width: 70%;
    height: auto;
    opacity: .85;
}
.crm-menu nav a {
    display: flex;
    align-items: center;
    gap: .7rem;
    padding: .7rem 1.25rem;
    color: var(--cor-texto);
    font-size: .95rem;
    border-left: 3px solid transparent;
    transition: background .12s, border-color .12s, color .12s;
}
.crm-menu .ico { width: 18px; height: 18px; flex: 0 0 auto; color: var(--cor-texto-suave); transition: color .12s; }
.crm-menu nav a:hover .ico { color: var(--cor-primaria); }
.crm-menu nav a.menu-sair .ico { color: var(--cor-primaria); }
.crm-menu nav a:hover {
    background: #fbe9ea;
    border-left-color: var(--cor-primaria);
    color: var(--cor-primaria);
    text-decoration: none;
}
.crm-menu nav a.menu-sair {
    color: var(--cor-primaria);
}

/* Grupo expansível (submenu) */
.menu-grupo summary {
    display: flex;
    align-items: center;
    gap: .7rem;
    padding: .7rem 1.25rem;
    color: var(--cor-texto);
    font-size: .95rem;
    border-left: 3px solid transparent;
    cursor: pointer;
    list-style: none;
    transition: background .12s, border-color .12s, color .12s;
}
.menu-grupo summary::-webkit-details-marker { display: none; }
.menu-grupo summary .ico { width: 18px; height: 18px; flex: 0 0 auto; color: var(--cor-texto-suave); transition: color .12s; }
.menu-grupo summary .seta { width: 16px; height: 16px; margin-left: auto; flex: 0 0 auto; color: var(--cor-texto-suave); transition: transform .15s, color .12s; }
.menu-grupo[open] summary .seta { transform: rotate(180deg); }
.menu-grupo summary:hover {
    background: #fbe9ea;
    border-left-color: var(--cor-primaria);
    color: var(--cor-primaria);
}
.menu-grupo summary:hover .ico,
.menu-grupo summary:hover .seta { color: var(--cor-primaria); }

.crm-menu .submenu { display: flex; flex-direction: column; background: #faf7f7; }
.crm-menu .submenu a {
    display: flex;
    align-items: center;
    padding: .55rem 1.25rem .55rem 3rem;
    color: var(--cor-texto-suave);
    font-size: .9rem;
    border-left: 3px solid transparent;
    transition: background .12s, border-color .12s, color .12s;
}
.crm-menu .submenu a:hover {
    background: #fbe9ea;
    border-left-color: var(--cor-primaria);
    color: var(--cor-primaria);
    text-decoration: none;
}

.crm-conteudo { flex: 1; min-width: 0; max-width: 1100px; margin: 1.5rem auto; padding: 0 1.25rem; }

/* =========================================================
   Janelas estilo desktop (MDI) + barra de tarefas
   ========================================================= */
.crm-relogio {
    position: fixed;
    right: 1rem;
    bottom: .75rem;
    z-index: 900;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .1rem;
    color: var(--cor-texto);
    font-variant-numeric: tabular-nums;
    pointer-events: none;
    user-select: none;
}
.crm-relogio .relogio-data { font-size: .96rem; color: var(--cor-texto-suave); }
.crm-relogio .relogio-hora { font-size: 1.26rem; font-weight: 700; letter-spacing: .04em; }

#janelas {
    position: fixed;
    inset: 0;
    z-index: 1000;
    pointer-events: none; /* só as janelas capturam eventos */
}
#janelas .win { pointer-events: auto; }

.win {
    position: absolute;
    display: flex;
    flex-direction: column;
    min-width: 280px;
    min-height: 160px;
    background: var(--cor-superficie);
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    box-shadow: 0 12px 32px rgba(16, 24, 40, .22), 0 2px 8px rgba(16, 24, 40, .12);
    overflow: hidden;
}
.win-maximizada {
    left: 0 !important;
    top: 0 !important;
    width: 100% !important;
    height: 100vh !important;
    border-radius: 0;
}

.win-cab {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    padding: .35rem .5rem .35rem .75rem;
    background: var(--cor-primaria);
    color: #fff;
    cursor: move;
    user-select: none;
}
/* Subjanela (editar/incluir): vermelho suavizado no topo. */
.win-sub .win-cab { background: #e8767a; }
.win-tit {
    font-size: .85rem;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.win-btns { display: inline-flex; gap: .15rem; flex: 0 0 auto; }
.win-btns button {
    width: 26px;
    height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: none;
    background: transparent;
    color: #fff;
    font-size: 1rem;
    line-height: 1;
    cursor: pointer;
    border-radius: 5px;
    transition: background .12s;
}
.win-btns button:hover { background: rgba(255, 255, 255, .22); }
.win-btns .win-fechar:hover { background: #b5161b; }

.win-corpo {
    flex: 1;
    min-height: 0;
    overflow: auto;
    background: var(--cor-fundo);
}
.win-corpo .crm-conteudo { margin: 1rem auto; max-width: none; }

.win-carregando,
.win-vazio {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    min-height: 120px;
    color: var(--cor-texto-suave);
    font-size: .95rem;
}

.win-resize {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 16px;
    height: 16px;
    cursor: nwse-resize;
    background:
        linear-gradient(135deg, transparent 50%, var(--cor-borda) 50%, var(--cor-borda) 62%, transparent 62%, transparent 75%, var(--cor-borda) 75%, var(--cor-borda) 87%, transparent 87%);
}

/* Cartões */
.cartao {
    background: var(--cor-superficie);
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    box-shadow: var(--sombra);
    padding: 1.25rem;
    margin-bottom: 1.25rem;
}
.grade {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 1rem;
}

/* Formulários */
.campo { margin-bottom: 1rem; }
.campo label { display: block; font-size: .875rem; color: var(--cor-texto-suave); margin-bottom: .35rem; }
.campo input, .campo select, .campo textarea {
    width: 100%;
    padding: .6rem .7rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    font-size: 1rem;
    font-family: inherit;
}
.campo input:focus, .campo select:focus, .campo textarea:focus {
    outline: none;
    border-color: var(--cor-primaria);
    box-shadow: 0 0 0 3px rgba(31, 111, 235, .15);
}

/* Botões */
.btn {
    display: inline-block;
    background: var(--cor-primaria);
    color: #fff;
    border: none;
    border-radius: var(--raio);
    padding: .6rem 1.1rem;
    font-size: 1rem;
    cursor: pointer;
    transition: background .15s;
}
.btn:hover { background: var(--cor-primaria-escura); text-decoration: none; }
.btn-bloco { width: 100%; }

/* Alertas */
.alerta { padding: .75rem 1rem; border-radius: var(--raio); margin-bottom: 1rem; font-size: .9rem; }
.alerta-erro { background: #fdeceb; color: var(--cor-erro); }
.alerta-sucesso { background: #e7f6f0; color: var(--cor-sucesso); }

/* =========================================================
   Tela de login — layout PE PARK (duas colunas)
   ========================================================= */
.login-page {
    position: fixed;
    inset: 0;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(1.5rem, 5vw, 5rem);
    padding: 2rem clamp(1.5rem, 6vw, 6rem);
    overflow: auto;
    color: #fff;
    background-color: #d81f24;
    background-image:
        url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1600'%20height='820'%20viewBox='0%200%201600%20820'%20preserveAspectRatio='xMaxYMid%20slice'%3E%3Cg%20fill='%23ffffff'%3E%3Cpolygon%20points='980,70 1230,520 730,520'%20opacity='0.06'/%3E%3Cpolygon%20points='1330,40 1540,470 1120,470'%20opacity='0.045'/%3E%3Cpolygon%20points='1480,300 1660,690 1300,690'%20opacity='0.06'/%3E%3Cpolygon%20points='820,430 970,740 670,740'%20opacity='0.05'/%3E%3Cpolygon%20points='1180,520 1340,820 1020,820'%20opacity='0.04'/%3E%3Cpolygon%20points='1430,560 1600,860 1260,860'%20opacity='0.05'/%3E%3Cpolygon%20points='600,120 720,360 480,360'%20opacity='0.035'/%3E%3Cpolygon%20points='1080,-40 1240,280 920,280'%20opacity='0.04'/%3E%3C/g%3E%3Cg%20fill='%23000000'%3E%3Cpolygon%20points='1250,250 1410,560 1090,560'%20opacity='0.03'/%3E%3Cpolygon%20points='760,560 900,840 620,840'%20opacity='0.03'/%3E%3C/g%3E%3C/svg%3E"),
        radial-gradient(ellipse at 22% 45%, #f0353a 0%, #db2227 42%, #b5161b 100%);
    background-repeat: no-repeat, no-repeat;
    background-size: cover, cover;
    background-position: right center, center;
}

/* Card branco */
.login-card {
    flex: 0 0 auto;
    width: 100%;
    max-width: 300px;
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 20px 50px rgba(0, 0, 0, .25);
    padding: 2rem 1.75rem 1.5rem;
    color: var(--cor-texto);
}
.login-logo { display: block; width: auto; height: auto; max-width: 60%; max-height: 90px; object-fit: contain; margin: .25rem auto 1.75rem; }
.login-card .campo { margin-bottom: 1rem; }
.login-card .campo label {
    display: block;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--cor-texto-suave);
    margin-bottom: .4rem;
}
.login-card .campo input { width: 100%; padding: .65rem .75rem; font-size: .95rem; border: 1px solid var(--cor-borda); border-radius: 8px; }
.login-card .btn { width: 100%; margin-top: .25rem; padding: .7rem; font-size: 1rem; font-weight: 700; border-radius: 8px; }

/* Rodapé do card */
.login-rodape { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--cor-borda); text-align: center; }
.login-rodape p { margin: .15rem 0; font-size: .72rem; color: var(--cor-texto); }
.login-rodape strong { color: var(--cor-texto); }
.login-rodape span { color: var(--cor-primaria); }

/* Bloco hero (direita) */
.login-hero { flex: 0 1 540px; max-width: 540px; }
.hero-sup { margin: 0 0 1rem; font-size: .8rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: rgba(255, 255, 255, .75); }
.hero-titulo { margin: 0; font-weight: 800; line-height: 1.02; font-size: clamp(2.4rem, 5vw, 3.8rem); }
.hero-titulo span { display: block; }
.hero-titulo .t-leve { color: rgba(255, 255, 255, .45); font-weight: 700; }
.hero-linha { border: 0; border-top: 1px solid rgba(255, 255, 255, .35); margin: 1.75rem 0 1.25rem; }
.hero-rodape { display: flex; align-items: center; gap: 1rem; }
.hero-saas { height: 34px; width: auto; filter: brightness(0) invert(1); flex: 0 0 auto; }
.hero-rodape p { margin: 0; font-size: .82rem; line-height: 1.45; color: rgba(255, 255, 255, .9); max-width: 320px; }

/* Responsivo: empilha e esconde hero em telas estreitas */
@media (max-width: 860px) {
    .login-hero { display: none; }
    .login-page { padding: 2rem 1.25rem; }
}

/* =========================================================
   Cadastro: Parceiros de negócio (formulário em abas)
   ========================================================= */
.pn-form {
    /* Preenche a largura da janela (sem max-width: o rodapé/campos iam até a
       borda da janela; antes ficava 980px centralizado e sobravam faixas). */
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
}
.pn-form-scroll {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    padding: 1rem 1.2rem 0;
}
.pn-form-rodape {
    flex: 0 0 70px;
    height: 70px;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .9rem;
    padding: 0 1.2rem;
    background: #fff;
    border-top: 1px solid var(--cor-borda);
    box-shadow: 0 -2px 6px rgba(0, 0, 0, .04);
}
.pn-cabecalho {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.2rem 0;
    margin-bottom: .75rem;
    flex-wrap: wrap;
}
.pn-cabecalho h1 { font-size: 1.25rem; margin: 0; }
.pn-acoes { display: flex; align-items: center; gap: .75rem; }

.pn-btn {
    background: var(--cor-primaria);
    color: #fff;
    border: none;
    border-radius: var(--raio);
    padding: .5rem 1.1rem;
    font-size: .95rem;
    font-family: inherit;
    cursor: pointer;
    transition: background .15s;
}
.pn-btn:hover { background: var(--cor-primaria-escura); }
.pn-btn:disabled { opacity: .6; cursor: default; }

/* Botão secundário (ex.: Sair) */
.pn-btn.pn-btn-sec {
    background: #fff;
    color: var(--cor-texto);
    border: 1px solid var(--cor-borda);
}
.pn-btn.pn-btn-sec:hover { background: #f1f1f1; }

.pn-rodape-dir { display: flex; align-items: center; gap: .85rem; }

.pn-msg { font-size: .85rem; }
.pn-msg.ok { color: var(--cor-sucesso); }
.pn-msg.erro { color: var(--cor-erro); }

/* Abas */
.pn-abas {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem;
    border-bottom: 2px solid var(--cor-borda);
    margin-bottom: 1rem;
}
.pn-aba-btn {
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    padding: .6rem .9rem;
    font-size: .95rem;
    font-family: inherit;
    color: var(--cor-texto-suave);
    cursor: pointer;
}
.pn-aba-btn:hover { color: var(--cor-texto); }
.pn-aba-btn.ativa {
    color: var(--cor-primaria);
    border-bottom-color: var(--cor-primaria);
    font-weight: 600;
}

.pn-painel { display: none; }
.pn-painel.ativo { display: block; }

/* Grade de campos (12 colunas) */
.pn-grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: .85rem 1rem;
    margin-bottom: 1rem;
}
.pn-campo { display: flex; flex-direction: column; grid-column: span 12; }
.pn-campo > span { font-size: .8rem; color: var(--cor-texto-suave); margin-bottom: .3rem; }
.pn-campo > span i { color: var(--cor-erro); font-style: normal; }
.pn-campo input, .pn-campo select, .pn-campo textarea {
    width: 100%;
    padding: .55rem .65rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    font-size: .95rem;
    font-family: inherit;
    background: #fff;
}
.pn-campo textarea { resize: vertical; min-height: 90px; line-height: 1.4; }
.pn-campo input:focus, .pn-campo select:focus, .pn-campo textarea:focus {
    outline: none;
    border-color: var(--cor-primaria);
    box-shadow: 0 0 0 3px rgba(237, 50, 55, .15);
}
.pn-campo-botao { justify-content: flex-end; }
.pn-campo-botao .pn-btn { width: 100%; }

/* Valor somente leitura (ex.: CPF/CNPJ não editável) */
.pn-valor-fixo {
    padding: .55rem .65rem;
    border: 1px solid transparent;
    border-radius: var(--raio);
    font-size: .95rem;
    font-weight: 600;
    color: var(--cor-texto);
    background: #f4f4f4;
    min-height: calc(.95rem + 1.1rem);
}

/* Campo de seleção pesquisável (buscaSelect.js): input + lista filtrável. */
.pn-bs { position: relative; }
.pn-bs-nativo { display: none; }   /* <select> original escondido (ainda envia o valor) */
.pn-bs-input {
    width: 100%;
    padding: .55rem .65rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    font-size: .95rem;
    font-family: inherit;
    background: #fff;
    box-sizing: border-box;
}
.pn-bs-input:focus {
    outline: none;
    border-color: var(--cor-primaria);
    box-shadow: 0 0 0 3px rgba(237, 50, 55, .15);
}
.pn-bs-lista {
    position: fixed;
    z-index: 100000;
    background: #fff;
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    box-shadow: 0 8px 24px rgba(16, 24, 40, .18);
    max-height: 260px;
    overflow: auto;
}
.pn-bs-item {
    padding: .45rem .65rem;
    font-size: .9rem;
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.pn-bs-item:hover, .pn-bs-item.hl { background: #fbe9ea; }
.pn-bs-item.sel { font-weight: 600; }
.pn-bs-vazio { padding: .55rem .65rem; color: var(--cor-texto-suave); font-size: .9rem; }

/* Selo (pílula) de situação — ex.: Habilitado Sim/Não na listagem. */
.pn-col-hab { text-align: center; }
.pn-tag {
    display: inline-block;
    padding: .18rem .6rem;
    border-radius: 999px;
    font-size: .8rem;
    font-weight: 600;
    line-height: 1.35;
    border: 1px solid transparent;
    white-space: nowrap;
}
.pn-tag-on  { color: #1b7a3d; background: #e4f6ea; border-color: #b7e3c5; }
.pn-tag-off { color: #6b7280; background: #f1f2f4; border-color: #d9dce1; }
.pn-tag-fila{ color: #9a6a00; background: #fdf3da; border-color: #f0deae; }

/* Alinhamentos auxiliares de coluna/valor (ex.: listagem de caixas). */
.pn-col-cx  { text-align: center; }
.pn-col-dt  { text-align: center; white-space: nowrap; }
.pn-col-tot { text-align: right; }
.pn-tex-dir { text-align: right; }

/* Rodapé com grupo de botões à esquerda (ex.: caixas: Novo + relatórios). */
.pn-rodape-esq { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }

/* Barra de filtros de relatório (datas, combos) + área de resultado. */
.pn-rel-filtros { display: flex; gap: 1rem; align-items: flex-end; flex-wrap: nowrap; }
.pn-rel-campo { display: flex; flex-direction: column; }
.pn-rel-campo > span { font-size: .8rem; color: var(--cor-texto-suave); margin-bottom: .3rem; }
.pn-rel-campo > span i { color: var(--cor-erro); font-style: normal; }
.pn-rel-campo input, .pn-rel-campo select {
    padding: .55rem .65rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    font-size: .95rem;
    font-family: inherit;
    background: #fff;
}
.pn-rel-campo-larga { flex: 1 1 auto; min-width: 0; }
.pn-rel-campo-larga select { width: 100%; }
.pn-rel-vazio { padding: 1.5rem 1.2rem; color: var(--cor-texto-suave); }

/* Resumo de caixa (documento imprimível — estilo simples, sem cores). */
.rc-doc { padding-bottom: 1rem; color: #000; }
.rc-cab { display: flex; align-items: center; gap: 1.1rem; text-align: left; padding: .25rem 0 .7rem; margin-bottom: 1rem; border-bottom: 2px solid #000; }
.rc-logo { height: 58px; width: auto; flex: 0 0 auto; }
.rc-cab-info { flex: 1 1 auto; }
.rc-cab-info p { margin: .06rem 0; font-size: .9rem; }
.rc-cab-info .rc-empresa { font-weight: 700; }
.rc-titulo { font-size: 1.2rem; font-weight: 700; margin: .35rem 0 0; }
.rc-sub { margin: 1.1rem 0 .4rem; font-size: .95rem; }
/* Tabelas do resumo: grade de linhas finas, sem preenchimento de cor. */
.rc-resumo, .rc-ops { border-collapse: collapse; width: 100%; margin-bottom: 1rem; }
.rc-ops { table-layout: fixed; }
.rc-resumo th, .rc-resumo td, .rc-ops th, .rc-ops td { border: 1px solid #999; padding: 3px 6px; }
.rc-resumo { font-size: .82rem; }
.rc-ops { font-size: .82rem; }
/* Cada operação em uma única linha (corta com reticências se faltar espaço). */
.rc-ops th, .rc-ops td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rc-ops th.rc-wrap, .rc-ops td.rc-wrap { white-space: normal; overflow: visible; text-overflow: clip; }
.rc-resumo thead th, .rc-ops thead th { color: #000; font-weight: 700; }
.rc-resumo th, .rc-resumo td { text-align: right; }
.rc-resumo th:nth-child(-n+3), .rc-resumo td:nth-child(-n+3) { text-align: center; }
.rc-resumo td, .rc-ops td.pn-col-tot { font-variant-numeric: tabular-nums; }
.rc-forte { font-weight: 700; }
.rc-totais td { border-top: 2px solid #000; font-weight: 700; white-space: normal; }

/* Rodapé exclusivo de impressão (oculto na tela). */
.pn-print-rodape { display: none; }

/* Impressão: paisagem, sem moldura, só a janela em foco + rodapé fixo. */
@media print {
    @page { size: landscape; margin: 10mm 12mm 16mm; }
    /* Remove os fundos decorativos (blobs vermelhos + grade) na impressão. */
    body { background: #fff !important; }
    body::before, body::after { display: none !important; }
    .crm-menu, .crm-topo, header, .pn-cabecalho, .pn-rel-filtros,
    .pn-form-rodape, .pn-rodape, .win-cab, .win-btns, .win-resize, .pn-busca,
    #crm-relogio, .crm-relogio { display: none !important; }
    /* Imprime apenas a janela que disparou a impressão. */
    body.print-isolado .win:not(.win-print) { display: none !important; }
    #janelas, .win, .win-corpo, .pn-form, .pn-lista-tela, .pn-form-scroll, .pn-lista-scroll {
        position: static !important; overflow: visible !important;
        /* display:block (não flex) + altura livre permite paginar todo o conteúdo;
         * flexbox + overflow recortava o relatório após a 1ª/2ª página. */
        display: block !important; flex: none !important;
        height: auto !important; max-height: none !important; min-height: 0 !important;
        width: auto !important;
        left: 0 !important; top: 0 !important;
        box-shadow: none !important; border: 0 !important;
    }
    /* Tabelas com bordas leves para leitura no papel. */
    .rc-doc .rc-resumo, .rc-doc .rc-ops { font-size: 8.5pt !important; }
    .rc-doc .pn-lista th, .rc-doc .pn-lista td { border: 1px solid #999 !important; padding: 2px 5px !important; }
    .rc-cab h2 { font-size: 12pt !important; }
    /* Continuidade entre páginas: tabela quebra livremente, cabeçalho de
     * coluna repete no topo de cada página, linha não parte ao meio, e o
     * total (tfoot) aparece só uma vez no fim (não repete por página). */
    table { page-break-inside: auto; }
    tr { page-break-inside: avoid; }
    thead { display: table-header-group; }
    tfoot { display: table-row-group; }
    /* Título de seção não fica órfão no fim da página: anda com a tabela. */
    .rc-sub { page-break-after: avoid; break-after: avoid; page-break-inside: avoid; }
    .rc-cab { page-break-inside: avoid; break-inside: avoid; }
    /* Rodapé fixo de impressão: repete em todas as páginas. */
    .pn-print-rodape {
        display: flex !important; justify-content: space-between; align-items: center;
        position: fixed; left: 0; right: 0; bottom: 0;
        padding: 4px 12mm; font-size: 10px; color: #333;
        border-top: 1px solid #999; background: #fff;
    }
    .pn-print-esq { font-weight: 700; letter-spacing: 1px; }
}

/* Interruptor (toggle) ON/OFF — ex.: campo Habilitado no formulário. */
.pn-switch { display: inline-flex; align-items: center; cursor: pointer; user-select: none; padding-top: .15rem; }
.pn-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.pn-switch-trilho {
    position: relative; flex: 0 0 auto;
    width: 68px; height: 28px; border-radius: 999px;
    background: #e23b3b; /* OFF: vermelho */
    transition: background .15s ease;
}
/* Rótulo ON/OFF dentro da pílula, do lado oposto à bolinha. */
.pn-switch-trilho::after {
    content: "OFF";
    position: absolute; top: 0; right: 11px; height: 100%;
    display: flex; align-items: center;
    font-size: .72rem; font-weight: 700; letter-spacing: .5px; color: #fff;
}
.pn-switch-bolinha {
    position: absolute; top: 3px; left: 3px;
    width: 22px; height: 22px; border-radius: 50%;
    background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.3);
    transition: left .15s ease;
}
.pn-switch input:checked + .pn-switch-trilho { background: #23c552; } /* ON: verde */
.pn-switch input:checked + .pn-switch-trilho::after { content: "ON"; right: auto; left: 12px; }
.pn-switch input:checked + .pn-switch-trilho .pn-switch-bolinha { left: 43px; }
.pn-switch input:focus-visible + .pn-switch-trilho { box-shadow: 0 0 0 3px rgba(35,197,82,.4); }

.pn-col-1  { grid-column: span 1; }
.pn-col-2  { grid-column: span 2; }
.pn-col-3  { grid-column: span 3; }
.pn-col-4  { grid-column: span 4; }
.pn-col-5  { grid-column: span 5; }
.pn-col-6  { grid-column: span 6; }
.pn-col-7  { grid-column: span 7; }
.pn-col-8  { grid-column: span 8; }
.pn-col-9  { grid-column: span 9; }
.pn-col-10 { grid-column: span 10; }
.pn-col-11 { grid-column: span 11; }
.pn-col-12 { grid-column: span 12; }
@media (max-width: 720px) {
    .pn-campo, [class*="pn-col-"] { grid-column: span 12 !important; }
}

/* Listas (telefones / emails) */
.pn-lista { width: 100%; border-collapse: collapse; font-size: .9rem; }
.pn-lista th, .pn-lista td {
    text-align: left;
    padding: .5rem .6rem;
    border-bottom: 1px solid var(--cor-borda);
}
.pn-lista thead th { color: var(--cor-texto-suave); font-weight: 600; }
/* Coluna de ações: footprint compacto p/ os ícones nunca vazarem da linha
   (padding reduzido + espaçamento menor entre ícones). */
.pn-lista .pn-lista-acao { text-align: right; white-space: nowrap; padding-left: 4px; padding-right: 4px; }
.pn-lista .pn-lista-acao > * + * { margin-left: 4px; }

/* Documento alinhado à direita */
.pn-lista .pn-col-doc { text-align: right; }

/* Conteúdo de coluna truncado em 1 linha (com reticências). */
.pn-lista .pn-trunc { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Menu flutuante de impressão/exportação (ícone de impressora na lista). */
.pn-menu-imp {
    position: fixed;
    z-index: 1000;
    background: #fff;
    border: 1px solid var(--cor-borda);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .18);
    padding: 4px;
    min-width: 170px;
}
.pn-menu-imp button {
    display: block;
    width: 100%;
    text-align: left;
    padding: .5rem .7rem;
    border: none;
    background: none;
    font: inherit;
    color: var(--cor-texto);
    cursor: pointer;
    border-radius: 6px;
}
.pn-menu-imp button:hover { background: #f1f1f1; }

/* Receitas do caixa: 5 campos lado a lado, ocupando a largura toda na horizontal. */
.cx-receitas { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .85rem 1rem; }
.cx-receitas .pn-campo { flex: 1 1 140px; min-width: 0; }

/* Formulário "Novo caixa": rótulos e textos de preenchimento em preto. */
#cx-form .pn-campo > span { color: #000; }
#cx-form input, #cx-form select { color: #000; }
#cx-form input::placeholder { color: #000; opacity: 1; }
#cx-form input::-webkit-input-placeholder { color: #000; }
#cx-form input::-webkit-datetime-edit,
#cx-form input::-webkit-datetime-edit-text,
#cx-form input::-webkit-datetime-edit-day-field,
#cx-form input::-webkit-datetime-edit-month-field,
#cx-form input::-webkit-datetime-edit-year-field,
#cx-form input::-webkit-datetime-edit-hour-field,
#cx-form input::-webkit-datetime-edit-minute-field { color: #000; }

/* Ícones de ação (editar / excluir) */
.pn-acao-ico {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: none;
    background: none;
    border-radius: var(--raio);
    cursor: pointer;
    color: var(--cor-texto-suave);
    text-decoration: none;
    vertical-align: middle;
}
.pn-acao-ico:hover { background: #f1f1f1; }
.pn-ico-editar:hover { color: var(--cor-primaria); }
.pn-ico-excluir:hover { color: #c0392b; }
/* Exclusão restrita: botões de excluir só aparecem para o grupo Desenvolvedores/admin. */
body.sem-excluir .pn-excluir { display: none !important; }
/* Ícone de anexo (clipe) nas listagens. */
.pn-ico-anexo { vertical-align: -3px; color: var(--cor-primaria); }
a:hover .pn-ico-anexo { opacity: .8; }
.pn-link-remover {
    background: none;
    border: none;
    color: var(--cor-erro);
    cursor: pointer;
    font-size: .85rem;
    font-family: inherit;
}
.pn-link-remover:hover { text-decoration: underline; }

/* Listagem de parceiros */
.pn-lista-tela {
    max-width: 980px;
    margin: 0 auto;
    height: 100%;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    position: relative;
}
/* Variante que ocupa toda a largura da janela (ex.: listagem de Caixas). */
.pn-lista-tela.pn-lista-cheia { max-width: none; }

/* Modal de inclusão (pede CPF/CNPJ) */
.pn-modal {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, .35);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 20;
}
.pn-modal[hidden] { display: none; }
.pn-modal-cx {
    background: #fff;
    border-radius: var(--raio);
    padding: 1.25rem 1.4rem 1.3rem;
    width: 340px;
    max-width: 90%;
    box-shadow: 0 12px 32px rgba(0, 0, 0, .28);
}
.pn-modal-cx h2 { margin: 0 0 1rem; font-size: 1.05rem; }
.pn-modal-msg { min-height: 1.1rem; margin: .55rem 0 0; font-size: .85rem; color: var(--cor-erro); }
.pn-modal-acoes { display: flex; justify-content: flex-end; gap: .7rem; margin-top: 1.1rem; }
.pn-lista-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 0 1.2rem; }
.pn-busca { margin-bottom: 0; margin-left: auto; margin-right: 1.5rem; margin-top: 1rem; }
.pn-busca input {
    width: 100%;
    max-width: 360px;
    padding: .55rem .65rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    font-size: .95rem;
    font-family: inherit;
}
.pn-busca input:focus {
    outline: none;
    border-color: var(--cor-primaria);
    box-shadow: 0 0 0 3px rgba(237, 50, 55, .15);
}
.pn-lista-reg { table-layout: fixed; }
.pn-lista-reg tbody td:first-child {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pn-lista-reg tbody tr:hover { background: #fbe9ea; }
.pn-link-editar { color: var(--cor-primaria); font-size: .85rem; }
.pn-link-editar:hover { text-decoration: underline; }
.pn-lista-reg .pn-vazio td { color: var(--cor-texto-suave); text-align: center; padding: 1.25rem; }
a.pn-btn { display: inline-block; text-decoration: none; }
a.pn-btn:hover { text-decoration: none; }

.pn-rodape {
    flex: 0 0 70px;
    height: 70px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .85rem;
    padding: 0 1.2rem;
    background: #fff;
    border-top: 1px solid var(--cor-borda);
    box-shadow: 0 -2px 6px rgba(0, 0, 0, .04);
}
.pn-rodape .pn-btn { margin-left: 0; }
.pn-paginacao {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .85rem;
    margin-right: 1.5rem;
}
.pn-pag-info { font-size: .85rem; color: var(--cor-texto-suave); }
.pn-pag-btn {
    padding: .4rem .8rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    background: #fff;
    color: var(--cor-texto);
    font-size: .85rem;
    cursor: pointer;
}
.pn-pag-btn:hover:not(:disabled) { border-color: var(--cor-primaria); color: var(--cor-primaria); }
.pn-pag-btn:disabled { opacity: .45; cursor: default; }
