/* Cards de indicadores clicaveis: levam para a lista ja filtrada. Dica (data-tooltip) explica a funcao. */
.stat-link{position:relative;cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s}
.stat-link:hover,.stat-link:focus-within{border-color:var(--orange)!important;transform:translateY(-1px);box-shadow:0 6px 18px #0003}
.stat-cover{position:absolute;inset:0;z-index:1;border-radius:inherit;text-decoration:none}
.stat-cover:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.stat-link[data-tooltip]:after{content:attr(data-tooltip);position:absolute;z-index:30;left:50%;top:calc(100% + 8px);width:max-content;max-width:230px;padding:7px 10px;border:1px solid #454a53;border-radius:6px;background:#0c0d0f;color:#f2f3f5;font:500 11px 'DM Sans',sans-serif;line-height:1.35;text-align:center;box-shadow:0 8px 22px #0008;opacity:0;visibility:hidden;transform:translate(-50%,-3px);transition:.16s ease;pointer-events:none}
.stat-link[data-tooltip]:hover:after,.stat-link[data-tooltip]:focus-within:after{opacity:1;visibility:visible;transform:translate(-50%,0)}
@media(prefers-reduced-motion:reduce){.stat-link,.stat-link[data-tooltip]:after{transition:none}.stat-link:hover{transform:none}}
/* Filtros das listas (situacao + periodo) */
.lista-filtros{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin:0 0 14px}
.lista-filtros label{margin:0;display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--muted)}
/* Paginacao padrao (telas sem bloco proprio) */
.pagination{display:flex;gap:6px;justify-content:center;margin:20px 0 0}
.pagination a,.pagination span{padding:6px 12px;border-radius:6px;background:var(--surface);color:var(--text);text-decoration:none;font-size:13px}
.pagination .active{background:var(--orange);color:#000;font-weight:600}
.pagination a:hover:not(.active){background:var(--surface-2)}
/* Card separado de filtros (acima da lista) */
.filtros-card{margin-bottom:18px;padding:16px 22px 18px}
.filtros-card .filtros-topo{display:flex;align-items:center;gap:10px;margin:0 0 12px}
.filtros-card .filtros-topo h2{margin:0;font:600 14px Outfit,sans-serif;letter-spacing:.2px}
.filtros-card .lista-filtros,.filtros-card .orc-filtros{margin:0!important;padding:0!important}
/* REGRA GLOBAL DE LAYOUT: todo card (.panel) filho direto da area de conteudo tem 18px de distancia do proximo.
   Vale para qualquer tela, atual ou futura: nao e preciso ajustar espacamento entre cards pagina a pagina. */
.content > .panel:not(:last-child){margin-bottom:18px}

/* Card de filtros em linha (AREA DO TECNICO): titulo a esquerda e controles ocupando o resto da largura, distribuidos (justificados) */
body[data-page^="tecnico-"] .filtros-card{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
body[data-page^="tecnico-"] .filtros-card .filtros-topo{margin:0;flex:0 0 auto}
body[data-page^="tecnico-"] .filtros-card > form,body[data-page^="tecnico-"] .filtros-card > .filter-bar{flex:1 1 560px;display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap;margin:0!important;padding:0!important}
body[data-page^="tecnico-"] .filtros-card > .filter-bar{align-items:center}
body[data-page^="tecnico-"] .filtros-card .filtro-grupo{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin:0}
body[data-page^="tecnico-"] .filtros-card .filter-bar > .filtro-grupo:first-child{align-items:center}
body[data-page^="tecnico-"] .filtros-card .filtro-campo{display:flex;flex-direction:column;gap:4px;margin:0;font-size:11px;color:var(--muted)}
body[data-page^="tecnico-"] .filtros-card .filtro-campo input,body[data-page^="tecnico-"] .filtros-card .filtro-campo select{background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 12px;min-width:170px}

/* Card de filtros em telas de TELA PLENA (admin/financeiro): nao pode esticar para ocupar a altura que sobra
   (a regra de tela plena faz todo .panel filho direto crescer; o card de filtros tem a altura do proprio conteudo). */
body.tela-plena .content > .panel.filtros-card{flex:none!important;min-height:0!important;overflow:visible!important}
body.tela-plena .content > .panel.filtros-card > *{flex:none!important;min-height:0!important;overflow:visible!important}
/* Filtros JUSTIFICADOS e NA MESMA LINHA do titulo "Filtros" (regra global, fora da area do tecnico que tem layout proprio acima):
   o titulo fica a esquerda e os campos dividem o resto da largura do card por igual. */
body:not([data-page^="tecnico-"]) .filtros-card{display:flex;flex-direction:row;align-items:center;gap:24px;flex-wrap:wrap}
body:not([data-page^="tecnico-"]) .filtros-card .filtros-topo{margin:0;flex:0 0 auto}
body:not([data-page^="tecnico-"]) .filtros-card > form{flex:1 1 560px;margin:0!important;padding:0!important;justify-content:space-between;gap:14px}
body:not([data-page^="tecnico-"]) .filtros-card > form label{flex:1 1 112px;min-width:0;max-width:360px}
body:not([data-page^="tecnico-"]) .filtros-card > form label :is(input,select){width:100%;min-width:0;box-sizing:border-box}
body:not([data-page^="tecnico-"]) .filtros-card > form .btn{flex:0 0 auto}
/* a regra de tela plena acima zera o flex dos filhos; o formulario precisa continuar ocupando o resto da linha */
body.tela-plena:not([data-page^="tecnico-"]) .content > .panel.filtros-card{flex-direction:row!important;align-items:center!important}
body.tela-plena:not([data-page^="tecnico-"]) .content > .panel.filtros-card > form{flex:1 1 560px!important}
/* Em QUALQUER tela (tela plena ou nao): o card de filtros nunca estica para ocupar a altura que sobra, mesmo que a pagina tenha CSS proprio com .content > section.panel{flex:1} */
.content > .panel.filtros-card{flex:none!important;min-height:0!important;overflow:visible!important}
body:not([data-page^="tecnico-"]) .content > .panel.filtros-card{flex-direction:row!important;align-items:center!important}
body:not([data-page^="tecnico-"]) .content > .panel.filtros-card > form{flex:1 1 560px!important}

/* AREA DO TECNICO em tela plena: a regra generica acima (".filtros-card > *{flex:none!important}") fazia o bloco de filtros encolher ao conteudo e
   ficar colado a esquerda. Aqui os blocos de filtro voltam a ocupar o resto da linha e a se distribuir por igual (espacos iguais entre eles),
   com as bordas dos grupos alinhadas pela base dos campos. */
body.tela-plena[data-page^="tecnico-"] .content > .panel.filtros-card > :is(.filter-bar,form){flex:1 1 560px!important;min-width:0}
body.tela-plena[data-page^="tecnico-"] .content > .panel.filtros-card > .filter-bar{align-items:flex-end;justify-content:space-between;gap:16px}
body[data-page^="tecnico-"] .filtros-card .filter-bar > .filtro-grupo:first-child{align-self:flex-end;align-items:center;min-height:38px}
body[data-page^="tecnico-"] .filtros-card .filter-bar > .filtro-grupo:not(:first-child){align-items:flex-end}
body[data-page^="tecnico-"] .filtros-card .filter-bar > .filtro-grupo .btn{height:38px;box-sizing:border-box;padding-top:0;padding-bottom:0}body[data-page^="tecnico-"] .filtros-card .filter-bar .filtro-campo :is(input,select){height:38px;box-sizing:border-box}
body.tela-plena[data-page="tecnico-historico"] .content > .panel.filtros-card{align-items:flex-end}
body[data-page="tecnico-historico"] .filtros-card .filtros-topo{padding-bottom:10px}