/*
 * Estilos comuns aos sistemas UniGov (o mesmo arquivo da intranet) mais os do Obras, no fim.
 * Usam as variáveis de cor do Filament (--primary-*, --gray-*), então acompanham
 * a cor da prefeitura e o modo escuro.
 * As classes sm-* são as mesmas do SisMetas, para os sistemas terem a mesma cara.
 */

/* ---------- Listas e tabelas (padrão SisMetas) ---------- */
.sm-lista { list-style: none; margin: 1rem 0 0; padding: 0; }
.sm-lista li + li { border-top: 1px solid var(--gray-100); }
.dark .sm-lista li + li { border-top-color: rgb(255 255 255 / .05); }
.sm-linha { display: flex; align-items: center; gap: .75rem; padding: .5rem; border-radius: .5rem; color: inherit; text-decoration: none; }
a.sm-linha:hover { background: var(--gray-50); }
.dark a.sm-linha:hover { background: rgb(255 255 255 / .05); }
.sm-linha .sm-icone { width: 1.25rem; height: 1.25rem; flex-shrink: 0; color: var(--gray-400); }
.sm-linha .sm-texto, .sm-texto { flex: 1; min-width: 0; }
.sm-titulo { display: block; font-size: .875rem; font-weight: 500; color: var(--gray-950); }
.dark .sm-titulo { color: #fff; }
.sm-sub { display: block; font-size: .75rem; color: var(--gray-500); }
.dark .sm-sub { color: var(--gray-400); }
.sm-num { font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.sm-vazio { font-size: .8125rem; color: var(--gray-500); padding: .25rem .5rem; }
.sm-sigla { font-size: .75rem; font-weight: 700; color: var(--primary-600); letter-spacing: .02em; }
.dark .sm-sigla { color: var(--primary-400); }

.in-mt { margin-top: 1.5rem; }
.in-rotulo { font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--gray-500); margin: 0 0 .25rem; }
.in-colunas-2 { display: grid; gap: 1.5rem; }
@media (min-width: 640px) { .in-colunas-2 { grid-template-columns: 1fr 1fr; } }
.in-cor-primary { color: var(--primary-600); }
.in-cor-success { color: var(--success-600); }
.in-cor-warning { color: var(--warning-600); }
.in-cor-danger { color: var(--danger-600); }
.in-cor-info { color: var(--info-600); }

/* ---------- Marca no topo ---------- */
.in-marca { display: inline-flex; align-items: center; gap: .625rem; height: 100%; }
.in-marca-brasao { height: 100%; width: auto; object-fit: contain; }
.in-marca-sigla { display: grid; place-items: center; height: 2.25rem; width: 2.25rem; border-radius: .625rem; background: var(--primary-600); color: #fff; font-weight: 700; font-size: 1.125rem; }
.in-marca-texto { display: flex; flex-direction: column; line-height: 1.1; }
.in-marca-nome { font-weight: 700; font-size: 1rem; color: var(--gray-950); letter-spacing: -.01em; }
.dark .in-marca-nome { color: #fff; }
.in-marca-pref { font-size: .75rem; color: var(--gray-500); white-space: nowrap; }

/* ---------- Lançador de sistemas e blocos ---------- */
.in-lancador { padding: .75rem; }
.in-lancador-titulo { font-size: .75rem; font-weight: 600; color: var(--gray-500); padding: 0 .25rem .5rem; }
.in-blocos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .25rem; }
.in-bloco { display: flex; flex-direction: column; align-items: center; gap: .375rem; padding: .625rem .25rem; border-radius: .75rem; text-align: center; color: inherit; text-decoration: none; transition: background .15s; }
.in-bloco:hover { background: var(--gray-50); }
.dark .in-bloco:hover { background: rgb(255 255 255 / .05); }
.in-bloco-icone { display: grid; place-items: center; width: 2.5rem; height: 2.5rem; border-radius: .75rem; background: var(--primary-50); color: var(--primary-600); }
.dark .in-bloco-icone { background: rgb(255 255 255 / .06); color: var(--primary-400); }
.in-bloco-icone svg { width: 1.375rem; height: 1.375rem; }
.in-bloco-texto { font-size: .75rem; font-weight: 500; line-height: 1.2; color: var(--gray-700); }
.dark .in-bloco-texto { color: var(--gray-200); }
.in-atalho-img { width: 1.25rem; height: 1.25rem; object-fit: contain; flex-shrink: 0; }

/* ---------- Página inicial ---------- */
.in-inicio { display: grid; gap: 1.5rem; align-items: start; }
@media (min-width: 1280px) { .in-inicio { grid-template-columns: minmax(0, 1fr) 22rem; } }
.in-inicio-principal { min-width: 0; max-width: 46rem; width: 100%; margin-inline: auto; }
.in-inicio-lateral { display: flex; flex-direction: column; gap: 1.5rem; }
@media (min-width: 1280px) { .in-inicio-lateral { position: sticky; top: 5rem; } }
.in-centro { display: flex; flex-direction: column; gap: 1rem; }

.in-pendencia-num { display: grid; place-items: center; min-width: 2rem; height: 2rem; padding: 0 .375rem; border-radius: .5rem; font-weight: 700; font-size: .875rem; font-variant-numeric: tabular-nums; background: var(--gray-100); }
.dark .in-pendencia-num { background: rgb(255 255 255 / .08); }
.in-tudo-em-dia { display: flex; align-items: center; gap: .5rem; font-size: .875rem; color: var(--gray-500); }
.in-tudo-em-dia svg { width: 1.5rem; height: 1.5rem; color: var(--success-500); }

.in-aniv-hoje { display: flex; flex-direction: column; gap: .5rem; padding: .75rem; border-radius: .75rem; background: linear-gradient(135deg, var(--primary-50), var(--warning-50)); }
.dark .in-aniv-hoje { background: rgb(255 255 255 / .05); }
.in-aniv-hoje-item { display: flex; align-items: center; gap: .75rem; }

.in-feriado { display: flex; align-items: center; gap: .75rem; padding: .375rem 0; }
.in-data-bloco { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; border-radius: .625rem; background: var(--primary-50); color: var(--primary-700); line-height: 1; flex-shrink: 0; }
.dark .in-data-bloco { background: rgb(255 255 255 / .06); color: var(--primary-300); }
.in-data-dia { font-weight: 700; font-size: 1rem; }
.in-data-mes { font-size: .625rem; text-transform: uppercase; font-weight: 600; letter-spacing: .04em; }

/* ---------- Mural ---------- */
.in-mural { display: flex; flex-direction: column; gap: 1rem; }
.in-mural-topo { display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-wrap: wrap; }
.in-abas { display: inline-flex; gap: .25rem; padding: .25rem; border-radius: .75rem; background: var(--gray-100); }
.dark .in-abas { background: rgb(255 255 255 / .05); }
.in-aba { display: inline-flex; align-items: center; gap: .375rem; padding: .375rem .75rem; border-radius: .5rem; font-size: .8125rem; font-weight: 500; color: var(--gray-600); }
.dark .in-aba { color: var(--gray-300); }
.in-aba-ativa { background: #fff; color: var(--gray-950); box-shadow: 0 1px 2px rgb(0 0 0 / .08); }
.dark .in-aba-ativa { background: var(--gray-800); color: #fff; }
.in-contador { display: inline-grid; place-items: center; min-width: 1.25rem; height: 1.25rem; padding: 0 .25rem; border-radius: 999px; background: var(--warning-500); color: #fff; font-size: .6875rem; font-weight: 700; }

.in-cartao { background: #fff; border-radius: .75rem; box-shadow: 0 1px 2px rgb(0 0 0 / .05); outline: 1px solid rgb(var(--gray-950-rgb, 2 6 23) / .05); outline-color: color-mix(in oklab, var(--gray-950) 5%, transparent); }
.dark .in-cartao { background: var(--gray-900); outline-color: rgb(255 255 255 / .1); }
.in-publicacao { padding: 1rem 1.25rem .5rem; }
.in-pub-cabecalho { display: flex; align-items: flex-start; gap: .75rem; }
.in-pub-autor { flex: 1; min-width: 0; }
.in-pub-autor .in-titulo { font-weight: 600; font-size: .9375rem; color: var(--gray-950); }
.dark .in-pub-autor .in-titulo { color: #fff; }
.in-pub-autor .in-sub { display: block; font-size: .75rem; color: var(--gray-500); }
.in-pub-selos { display: flex; align-items: center; gap: .375rem; flex-wrap: wrap; justify-content: flex-end; }
.in-pub-titulo { margin: .875rem 0 0; font-size: 1.125rem; font-weight: 700; line-height: 1.35; color: var(--gray-950); letter-spacing: -.01em; }
.dark .in-pub-titulo { color: #fff; }
.in-pub-texto { margin-top: .5rem; font-size: .9375rem; line-height: 1.6; color: var(--gray-700); overflow-wrap: anywhere; }
.dark .in-pub-texto { color: var(--gray-300); }
.in-pub-texto p { margin: 0 0 .625rem; }
.in-pub-texto a { color: var(--primary-600); text-decoration: underline; }
.in-pub-texto ul, .in-pub-texto ol { padding-left: 1.25rem; margin: 0 0 .625rem; }
.in-pub-texto ul { list-style: disc; }
.in-pub-texto ol { list-style: decimal; }
.in-pub-texto h2 { font-size: 1.0625rem; font-weight: 700; margin: .75rem 0 .375rem; }
.in-pub-texto h3 { font-size: 1rem; font-weight: 600; margin: .75rem 0 .375rem; }
.in-pub-texto blockquote { border-left: 3px solid var(--primary-400); padding-left: .75rem; color: var(--gray-500); }

.in-galeria { display: grid; gap: 3px; margin: .875rem -1.25rem 0; overflow: hidden; }
.in-galeria-1 { grid-template-columns: 1fr; }
.in-galeria-2 { grid-template-columns: 1fr 1fr; }
.in-galeria-3 { grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; }
.in-galeria-3 .in-galeria-item:first-child { grid-row: span 2; }
.in-galeria-4 { grid-template-columns: 1fr 1fr; }
.in-galeria-item { position: relative; display: block; width: 100%; aspect-ratio: 4 / 3; background: var(--gray-100); overflow: hidden; cursor: zoom-in; }
.in-galeria-1 .in-galeria-item { aspect-ratio: auto; max-height: 32rem; }
.in-galeria-3 .in-galeria-item:first-child { aspect-ratio: auto; height: 100%; }
.in-galeria-item img, .in-galeria-item video { width: 100%; height: 100%; object-fit: cover; display: block; }
.in-galeria-1 .in-galeria-item img { object-fit: contain; max-height: 32rem; background: var(--gray-950); }
.in-galeria-play { position: absolute; inset: 0; display: grid; place-items: center; }
.in-galeria-play svg { width: 3.5rem; height: 3.5rem; color: #fff; filter: drop-shadow(0 2px 6px rgb(0 0 0 / .5)); }
.in-galeria-mais { position: absolute; inset: 0; display: grid; place-items: center; background: rgb(0 0 0 / .55); color: #fff; font-size: 1.75rem; font-weight: 700; }

.in-visor { position: fixed; inset: 0; z-index: 60; display: grid; place-items: center; background: rgb(0 0 0 / .92); padding: 3rem 1rem; }
.in-visor img, .in-visor video { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: .25rem; }
.in-visor-fechar { position: absolute; top: .75rem; right: 1rem; color: #fff; font-size: 2.25rem; line-height: 1; }
.in-visor-nav { position: absolute; top: 50%; transform: translateY(-50%); color: #fff; font-size: 3rem; line-height: 1; padding: .5rem 1rem; opacity: .8; }
.in-visor-nav:hover { opacity: 1; }
.in-visor-ant { left: .25rem; }
.in-visor-prox { right: .25rem; }

.in-pub-numeros { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .625rem 0 .375rem; font-size: .8125rem; color: var(--gray-500); min-height: 1rem; }
.in-pub-numeros span { display: inline-flex; align-items: center; gap: .25rem; }
.in-pub-numeros button:hover { text-decoration: underline; }
.in-icone-curtida { width: 1rem; height: 1rem; color: var(--danger-500); }
.in-pub-acoes { display: flex; align-items: center; gap: .25rem; flex-wrap: wrap; border-top: 1px solid var(--gray-100); padding-top: .25rem; }
.dark .in-pub-acoes { border-top-color: rgb(255 255 255 / .06); }
.in-acao { display: inline-flex; align-items: center; gap: .375rem; padding: .5rem .75rem; border-radius: .5rem; font-size: .8125rem; font-weight: 500; color: var(--gray-600); }
.dark .in-acao { color: var(--gray-300); }
.in-acao:hover { background: var(--gray-50); }
.dark .in-acao:hover { background: rgb(255 255 255 / .05); }
.in-acao svg { width: 1.125rem; height: 1.125rem; }
.in-acao-ativa, .in-acao-ativa svg { color: var(--danger-500) !important; }
.in-acao-ciencia { margin-left: auto; }

.in-comentarios { border-top: 1px solid var(--gray-100); padding: .75rem 0 .5rem; display: flex; flex-direction: column; gap: .625rem; }
.dark .in-comentarios { border-top-color: rgb(255 255 255 / .06); }
.in-comentario { display: flex; gap: .5rem; align-items: flex-start; }
.in-comentario-balao { background: var(--gray-50); border-radius: .875rem; padding: .5rem .75rem; max-width: 100%; }
.dark .in-comentario-balao { background: rgb(255 255 255 / .05); }
.in-comentario-balao .in-titulo { font-size: .8125rem; font-weight: 600; }
.in-comentario-balao p { margin: .125rem 0; font-size: .875rem; white-space: pre-line; overflow-wrap: anywhere; }
.in-comentario-balao .in-sub { font-size: .6875rem; color: var(--gray-500); }
.in-comentario-balao .in-sub button:hover { text-decoration: underline; }
.in-comentar { display: flex; gap: .5rem; align-items: center; }
.in-comentar-campo { flex: 1; }

.in-vazio-grande { padding: 3rem 1rem; text-align: center; color: var(--gray-500); }
.in-vazio-grande svg { width: 2.5rem; height: 2.5rem; margin: 0 auto .5rem; color: var(--gray-300); }
.in-carregar-mais { display: flex; justify-content: center; }

/* ---------- Pessoas e ramais ---------- */
.in-pessoas { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); }
.in-pessoa { display: flex; gap: .75rem; align-items: center; padding: .875rem; }
.in-pessoa .sm-texto { overflow: hidden; }
.in-pessoa .sm-titulo, .in-pessoa .sm-sub { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.in-ramal { display: inline-flex; align-items: center; gap: .25rem; margin-top: .25rem; font-size: .8125rem; font-weight: 600; color: var(--primary-700); font-variant-numeric: tabular-nums; }
.dark .in-ramal { color: var(--primary-300); }
.in-ramal svg { width: .875rem; height: .875rem; }
.in-grupo-titulo { margin: 1.5rem 0 .5rem; font-size: .875rem; font-weight: 700; color: var(--gray-700); display: flex; align-items: baseline; gap: .5rem; }
.dark .in-grupo-titulo { color: var(--gray-200); }
.in-busca { display: flex; gap: .75rem; flex-wrap: wrap; align-items: center; margin-bottom: 1rem; }
.in-busca > :first-child { flex: 1 1 18rem; }

/* ---------- Linha do tempo (chamados e atendimentos) ---------- */
.in-linha-tempo { list-style: none; margin: 0; padding: 0; position: relative; }
.in-linha-tempo::before { content: ''; position: absolute; left: 1rem; top: .5rem; bottom: .5rem; width: 2px; background: var(--gray-100); }
.dark .in-linha-tempo::before { background: rgb(255 255 255 / .08); }
.in-evento { position: relative; display: flex; gap: .75rem; padding: .5rem 0; }
.in-evento-marca { position: relative; z-index: 1; display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 999px; background: #fff; outline: 2px solid var(--gray-100); flex-shrink: 0; overflow: hidden; }
.dark .in-evento-marca { background: var(--gray-900); outline-color: rgb(255 255 255 / .1); }
.in-evento-marca svg { width: 1rem; height: 1rem; color: var(--gray-400); }
.in-evento-marca img { width: 100%; height: 100%; object-fit: cover; }
.in-evento-corpo { flex: 1; min-width: 0; }
.in-evento-texto { font-size: .875rem; white-space: pre-line; overflow-wrap: anywhere; color: var(--gray-700); }
.dark .in-evento-texto { color: var(--gray-300); }
.in-evento-mensagem .in-evento-texto { background: var(--gray-50); border-radius: .75rem; padding: .625rem .875rem; margin-top: .25rem; color: var(--gray-900); }
.dark .in-evento-mensagem .in-evento-texto { background: rgb(255 255 255 / .05); color: var(--gray-100); }
.in-evento-interna .in-evento-texto { background: var(--warning-50); outline: 1px dashed var(--warning-300); }
.dark .in-evento-interna .in-evento-texto { background: rgb(234 179 8 / .08); }
.in-anexos { display: flex; flex-wrap: wrap; gap: .375rem; margin-top: .375rem; }

/* ---------- Painel do técnico (celular) ---------- */
.in-tec-lista { display: flex; flex-direction: column; gap: .75rem; }
.in-tec-chamado { padding: 1rem; display: flex; flex-direction: column; gap: .5rem; border-left: 4px solid var(--gray-300); }
.in-tec-chamado.prio-critica { border-left-color: var(--danger-500); }
.in-tec-chamado.prio-alta { border-left-color: var(--warning-500); }
.in-tec-chamado.prio-media { border-left-color: var(--info-500); }
.in-tec-topo { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.in-tec-num { font-size: .75rem; font-weight: 700; color: var(--gray-500); font-variant-numeric: tabular-nums; }
.in-tec-titulo { font-weight: 600; font-size: 1rem; color: var(--gray-950); }
.dark .in-tec-titulo { color: #fff; }
.in-tec-info { display: flex; flex-wrap: wrap; gap: .25rem .875rem; font-size: .8125rem; color: var(--gray-500); }
.in-tec-info span { display: inline-flex; align-items: center; gap: .25rem; }
.in-tec-info svg { width: .875rem; height: .875rem; }
.in-tec-botoes { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .25rem; }
.in-atrasado { color: var(--danger-600) !important; font-weight: 600; }

/* ---------- Agenda de reservas ---------- */
.in-agenda { overflow-x: auto; }
.in-agenda-grade { display: grid; grid-template-columns: 3.5rem repeat(7, minmax(7.5rem, 1fr)); min-width: 58rem; }
.in-agenda-cab { position: sticky; top: 0; z-index: 2; padding: .5rem; text-align: center; font-size: .75rem; font-weight: 600; color: var(--gray-500); background: #fff; border-bottom: 1px solid var(--gray-200); }
.dark .in-agenda-cab { background: var(--gray-900); border-bottom-color: rgb(255 255 255 / .1); }
.in-agenda-cab strong { display: block; font-size: 1.125rem; color: var(--gray-950); }
.dark .in-agenda-cab strong { color: #fff; }
.in-agenda-cab.hoje strong { color: var(--primary-600); }
.in-agenda-hora { font-size: .6875rem; color: var(--gray-400); text-align: right; padding: .125rem .375rem 0; }
.in-agenda-dia { position: relative; border-left: 1px solid var(--gray-100); }
.dark .in-agenda-dia { border-left-color: rgb(255 255 255 / .06); }
.in-agenda-slot { height: 3rem; border-bottom: 1px solid var(--gray-100); cursor: pointer; }
.dark .in-agenda-slot { border-bottom-color: rgb(255 255 255 / .04); }
.in-agenda-slot:hover { background: var(--primary-50); }
.dark .in-agenda-slot:hover { background: rgb(255 255 255 / .04); }
.in-agenda-slot.fechado { background: repeating-linear-gradient(45deg, transparent, transparent 6px, var(--gray-50) 6px, var(--gray-50) 12px); cursor: not-allowed; }
.dark .in-agenda-slot.fechado { background: repeating-linear-gradient(45deg, transparent, transparent 6px, rgb(255 255 255 / .03) 6px, rgb(255 255 255 / .03) 12px); }
.in-agenda-evento { position: absolute; left: 3px; right: 3px; z-index: 1; overflow: hidden; border-radius: .375rem; padding: .25rem .375rem; font-size: .6875rem; line-height: 1.25; background: var(--primary-100); color: var(--primary-900); border-left: 3px solid var(--primary-600); }
.dark .in-agenda-evento { background: color-mix(in oklab, var(--primary-500) 25%, transparent); color: var(--primary-100); }
.in-agenda-evento.pendente { background: var(--warning-50); color: var(--warning-900); border-left-color: var(--warning-500); border-style: dashed; }
.in-agenda-evento.minha { box-shadow: inset 0 0 0 1px var(--primary-500); }
.in-agenda-evento strong { display: block; font-weight: 600; }
.in-agenda-legenda { display: flex; gap: 1rem; font-size: .75rem; color: var(--gray-500); margin-top: .75rem; flex-wrap: wrap; }
.in-agenda-legenda i { display: inline-block; width: .75rem; height: .75rem; border-radius: .2rem; margin-right: .25rem; vertical-align: -1px; }

/* ---------- Recepção ---------- */
.in-recepcao { display: grid; gap: 1.5rem; align-items: start; }
@media (min-width: 1024px) { .in-recepcao { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); } }
.in-visitante-ficha { display: flex; gap: 1rem; align-items: center; }
.in-visitante-ficha img { width: 4rem; height: 4rem; border-radius: 999px; object-fit: cover; }
.in-fila-item { display: flex; gap: .75rem; align-items: center; padding: .625rem .5rem; }
.in-fila-espera { font-size: .75rem; font-variant-numeric: tabular-nums; color: var(--gray-500); white-space: nowrap; }
.in-fila-espera.longa { color: var(--danger-600); font-weight: 600; }

/* ---------- Comprovante impresso ---------- */
.in-comprovante { max-width: 22rem; margin: 0 auto; text-align: center; font-family: 'Public Sans', sans-serif; color: #000; }
.in-comprovante h1 { font-size: 1rem; margin: 0 0 .25rem; }
.in-comprovante .protocolo { font-size: 1.75rem; font-weight: 800; letter-spacing: .02em; margin: .5rem 0; }
.in-comprovante img { width: 11rem; height: 11rem; margin: .5rem auto; }
.in-comprovante p { font-size: .8125rem; margin: .25rem 0; }

/* ---------- Páginas públicas (ramais, protocolo, publicação compartilhada) ---------- */
.in-pub-corpo { background: var(--gray-50); color: var(--gray-950); }
.in-pub-pagina { max-width: 64rem; margin: 0 auto; padding: 1.5rem 1rem 3rem; display: flex; flex-direction: column; gap: 1rem; }
.in-pub-estreita { max-width: 40rem; }
.in-pub-topo { display: flex; align-items: center; justify-content: space-between; height: 2.75rem; margin-bottom: .5rem; }
.in-pub-entrar { font-size: .875rem; font-weight: 600; color: var(--primary-600); }
.in-pub-h1 { font-size: 1.75rem; font-weight: 800; letter-spacing: -.02em; margin: 0; }
.in-pub-h2 { font-size: 1.0625rem; font-weight: 700; margin: 0 0 .5rem; }
.in-pub-lead { color: var(--gray-500); margin: 0; }
.in-ramais-grupo { padding: .25rem 1.25rem 1rem; }
.in-tabela-ramais { width: 100%; border-collapse: collapse; }
.in-tabela-ramais td { padding: .5rem 0; border-top: 1px solid var(--gray-100); vertical-align: middle; }
.in-ramal-num { text-align: right; font-weight: 700; font-size: 1.0625rem; font-variant-numeric: tabular-nums; color: var(--primary-700); white-space: nowrap; padding-left: 1rem !important; }
.in-pub-midia { margin: .75rem -1.25rem 0; }
.in-pub-midia img, .in-pub-midia video { width: 100%; display: block; }
.in-protocolo, .in-avaliacao, .in-protocolo-historico { padding: 1.25rem; }
.in-protocolo-num { font-size: 2.25rem; font-weight: 800; letter-spacing: .01em; color: var(--primary-700); font-variant-numeric: tabular-nums; margin-bottom: .25rem; }
.in-protocolo-dados { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: .75rem; margin-top: 1rem; }
.in-protocolo-dados > div { display: flex; flex-direction: column; align-items: flex-start; gap: .25rem; }
.in-estrelas { display: flex; gap: .25rem; margin: .75rem 0 .25rem; }
.in-estrela { font-size: 2.5rem; line-height: 1; color: var(--gray-300); transition: transform .1s, color .1s; }
.in-estrela:hover { transform: scale(1.12); }
.in-estrela.ativa { color: var(--warning-400); }
.in-erro { color: var(--danger-600); font-size: .8125rem; margin: 0; }
.in-mt-sm { margin-top: .75rem; }
.in-agradecimento { display: flex; align-items: center; gap: .75rem; }
.in-agradecimento svg { width: 2rem; height: 2rem; color: var(--danger-500); }
.in-anexo-mini img { width: 6rem; height: 6rem; object-fit: cover; border-radius: .5rem; outline: 1px solid var(--gray-200); }

/* ---------- TVs (Service Desk e recepção): tela cheia, medidas em vw para qualquer tamanho de TV ---------- */
.in-tv-corpo { background: #0b1120; color: #e2e8f0; overflow: hidden; }
.in-tv { height: 100vh; display: flex; flex-direction: column; gap: 1.25vw; padding: 1.5vw 2vw; box-sizing: border-box; }
.in-tv-topo { display: flex; align-items: center; justify-content: space-between; }
.in-tv-marca { display: flex; align-items: center; gap: 1vw; }
.in-tv-marca img { height: 4vw; width: auto; }
.in-tv-titulo { font-size: 2vw; font-weight: 800; color: #fff; letter-spacing: -.01em; }
.in-tv-sub { font-size: 1vw; color: #94a3b8; }
.in-tv-relogio { text-align: right; }
.in-tv-relogio span { display: block; font-size: 3vw; font-weight: 700; color: #fff; font-variant-numeric: tabular-nums; line-height: 1; }
.in-tv-relogio small { display: block; font-size: .95vw; color: #94a3b8; }
.in-tv-relogio small::first-letter { text-transform: uppercase; }
.in-tv-numeros { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1vw; }
.in-tv-num { background: #111a2e; border: 1px solid #1e293b; border-radius: 1vw; padding: 1vw 1.25vw; }
.in-tv-num strong { display: block; font-size: 3vw; line-height: 1.1; color: #fff; font-variant-numeric: tabular-nums; }
.in-tv-num span { font-size: .95vw; color: #94a3b8; }
.in-tv-num.alerta { border-color: #b45309; background: #2a1d0b; }
.in-tv-num.alerta strong { color: #fbbf24; }
.in-tv-num.perigo { border-color: #b91c1c; background: #2a0f12; }
.in-tv-num.perigo strong { color: #f87171; }
.in-tv-num.ok strong { color: #34d399; }
.in-tv-corpo-grade { flex: 1; min-height: 0; display: grid; grid-template-columns: 2fr 1fr; gap: 1.25vw; }
.in-tv-coluna { display: flex; flex-direction: column; gap: 1.25vw; min-height: 0; }
.in-tv-painel { background: #111a2e; border: 1px solid #1e293b; border-radius: 1vw; padding: 1vw 1.25vw; overflow: hidden; min-height: 0; }
.in-tv-painel h2 { font-size: 1.1vw; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: #94a3b8; margin: 0 0 .75vw; }
.in-tv-tabela { width: 100%; border-collapse: collapse; font-size: 1.05vw; }
.in-tv-tabela td { padding: .6vw .4vw; border-top: 1px solid #1e293b; vertical-align: middle; }
.in-tv-tabela .num { color: #94a3b8; font-variant-numeric: tabular-nums; white-space: nowrap; }
.in-tv-tabela .titulo { color: #f1f5f9; font-weight: 600; }
.in-tv-tabela .titulo small { display: block; font-weight: 400; color: #94a3b8; font-size: .85vw; }
.in-tv-tabela .tecnico, .in-tv-tabela .tempo { color: #cbd5e1; white-space: nowrap; text-align: right; }
.in-tv-tabela tr.atrasado .tempo { color: #f87171; font-weight: 700; }
.in-tv-tabela .vazio { text-align: center; color: #94a3b8; padding: 3vw 0; }
.in-tv-prio { display: inline-block; padding: .2vw .6vw; border-radius: .4vw; font-size: .8vw; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; background: #1e293b; color: #cbd5e1; }
.in-tv-prio.prio-critica { background: #7f1d1d; color: #fecaca; }
.in-tv-prio.prio-alta { background: #78350f; color: #fde68a; }
.in-tv-prio.prio-media { background: #0c4a6e; color: #bae6fd; }
.in-tv-equipe { list-style: none; margin: 0; padding: 0; }
.in-tv-equipe li { display: flex; align-items: center; gap: .75vw; padding: .5vw 0; border-top: 1px solid #1e293b; font-size: 1vw; }
.in-tv-equipe img { width: 2.2vw; height: 2.2vw; border-radius: 999px; }
.in-tv-equipe .nome { flex: 1; color: #f1f5f9; }
.in-tv-equipe .carga { min-width: 2vw; text-align: center; padding: .1vw .5vw; border-radius: .4vw; background: #1e293b; font-weight: 700; color: #fff; }
.in-tv-equipe .feitos { color: #34d399; font-weight: 600; min-width: 3vw; text-align: right; }
.in-tv-avaliacao { padding: .5vw 0; border-top: 1px solid #1e293b; font-size: .95vw; }
.in-tv-avaliacao .estrelas { color: #fbbf24; letter-spacing: .1em; }
.in-tv-avaliacao .estrelas span { color: #334155; }
.in-tv-avaliacao .quem { color: #94a3b8; margin-left: .5vw; }
.in-tv-avaliacao p { margin: .25vw 0 0; color: #cbd5e1; font-style: italic; }
.in-tv-painel .vazio { color: #94a3b8; font-size: 1vw; }

.in-tv-recepcao-grade { flex: 1; min-height: 0; display: grid; grid-template-columns: 1fr 1.35fr; gap: 1.5vw; }
.in-tv-chamada { background: linear-gradient(160deg, var(--primary-700), var(--primary-950)); border-radius: 1.25vw; padding: 2.5vw; display: flex; flex-direction: column; justify-content: center; color: #fff; position: relative; }
.in-tv-chamada-rotulo { font-size: 1.3vw; text-transform: uppercase; letter-spacing: .12em; opacity: .8; font-weight: 600; }
.in-tv-chamada-nome { font-size: 5.5vw; font-weight: 800; line-height: 1.05; margin: 1vw 0; letter-spacing: -.02em; animation: in-pisca 1s ease-in-out 3; }
.in-tv-chamada-local { font-size: 3vw; font-weight: 700; color: #fde68a; }
.in-tv-chamada-sec { font-size: 1.4vw; opacity: .85; margin-top: .3vw; }
.in-tv-chamada-espera { font-size: 2.6vw; font-weight: 600; line-height: 1.3; margin-top: 1vw; opacity: .9; }
.in-tv-anteriores { margin-top: 2.5vw; border-top: 1px solid rgb(255 255 255 / .2); padding-top: 1.2vw; }
.in-tv-anteriores > span { font-size: 1vw; text-transform: uppercase; letter-spacing: .1em; opacity: .7; }
.in-tv-anteriores ul { list-style: none; margin: .5vw 0 0; padding: 0; }
.in-tv-anteriores li { font-size: 1.5vw; padding: .3vw 0; opacity: .9; }
.in-tv-anteriores li strong { margin-right: .75vw; }
.in-tv-aguardando { position: absolute; right: 2vw; bottom: 1.5vw; font-size: 1.1vw; opacity: .8; }
.in-tv-midia { position: relative; border-radius: 1.25vw; overflow: hidden; background: #111a2e; }
.in-tv-slide { position: absolute; inset: 0; display: grid; place-items: center; }
.in-tv-slide img, .in-tv-slide video { width: 100%; height: 100%; object-fit: cover; }
.in-tv-aviso { padding: 4vw; text-align: center; }
.in-tv-aviso h3 { font-size: 3vw; font-weight: 800; color: #fff; margin: 0 0 1.5vw; }
.in-tv-aviso p { font-size: 2.2vw; line-height: 1.35; color: #cbd5e1; margin: 0; }
.in-tv-midia-vazia { position: absolute; inset: 0; display: grid; place-items: center; align-content: center; gap: 1vw; color: #94a3b8; font-size: 1.6vw; }
.in-tv-midia-vazia img { width: 12vw; opacity: .9; }
@keyframes in-pisca { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

/* ---------- Do SisMetas: progresso e alertas ---------- */
.sm-progresso { position: relative; height: .5rem; min-width: 5rem; border-radius: .25rem; background: var(--gray-100); }
.dark .sm-progresso { background: rgb(255 255 255 / .1); }
.sm-progresso > i { position: absolute; inset: 0 auto 0 0; border-radius: .25rem; background: var(--primary-500); }
.sm-progresso > b { position: absolute; top: -3px; bottom: -3px; width: 2px; border-radius: 1px; background: var(--gray-700); }
.dark .sm-progresso > b { background: var(--gray-200); }
.sm-alerta + .sm-alerta { margin-top: 1rem; }
.sm-alerta h4 { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; margin: 0 0 .25rem; font-size: .8125rem; font-weight: 600; color: var(--gray-950); }
.dark .sm-alerta h4 { color: #fff; }

/* ---------- Obras ---------- */
.ob-progresso-coluna { display: flex; align-items: center; gap: .5rem; min-width: 8rem; }
.ob-progresso-coluna .sm-progresso { flex: 1; }
.ob-progresso-coluna .sm-num { font-size: .8125rem; min-width: 3rem; text-align: right; }

.ob-ciclo { display: flex; gap: 0; overflow-x: auto; padding: .25rem 0 .5rem; }
.ob-ciclo-passo { position: relative; flex: 1 1 0; min-width: 6.5rem; display: flex; flex-direction: column; align-items: center; gap: .375rem; text-align: center; }
.ob-ciclo-passo::before { content: ''; position: absolute; top: 1.125rem; left: -50%; width: 100%; height: 3px; background: var(--gray-200); z-index: 0; }
.dark .ob-ciclo-passo::before { background: rgb(255 255 255 / .1); }
.ob-ciclo-passo:first-child::before { display: none; }
.ob-ciclo-passo.feito::before, .ob-ciclo-passo.atual::before { background: var(--primary-500); }
.ob-ciclo-bola { position: relative; z-index: 1; display: grid; place-items: center; width: 2.25rem; height: 2.25rem; border-radius: 999px; background: #fff; color: var(--gray-400); outline: 3px solid var(--gray-200); }
.dark .ob-ciclo-bola { background: var(--gray-900); outline-color: rgb(255 255 255 / .1); }
.ob-ciclo-bola svg { width: 1.125rem; height: 1.125rem; }
.ob-ciclo-passo.feito .ob-ciclo-bola { background: var(--primary-500); color: #fff; outline-color: var(--primary-500); }
.ob-ciclo-passo.atual .ob-ciclo-bola { background: var(--primary-600); color: #fff; outline: 4px solid var(--primary-200); }
.ob-ciclo-passo.parado .ob-ciclo-bola { background: var(--danger-600); outline-color: var(--danger-200); }
.ob-ciclo-nome { font-size: .75rem; font-weight: 500; color: var(--gray-500); }
.ob-ciclo-passo.atual .ob-ciclo-nome { color: var(--gray-950); font-weight: 700; }
.dark .ob-ciclo-passo.atual .ob-ciclo-nome { color: #fff; }
.ob-ciclo-alerta { font-size: .6875rem; font-weight: 700; color: var(--danger-600); text-transform: uppercase; letter-spacing: .04em; }

.ob-indicadores, .ob-numeros { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); }
.ob-ind { padding: 1rem 1.25rem; display: flex; flex-direction: column; gap: .125rem; }
.ob-ind-rotulo { font-size: .75rem; font-weight: 600; color: var(--gray-500); text-transform: uppercase; letter-spacing: .04em; }
.ob-ind-valor { font-size: 1.5rem; font-weight: 700; color: var(--gray-950); letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
.dark .ob-ind-valor { color: #fff; }

.ob-painel { display: flex; flex-direction: column; gap: 1.25rem; }
.ob-funil { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); }
.ob-funil-etapa { position: relative; display: flex; flex-direction: column; gap: .125rem; padding: 1rem; color: inherit; text-decoration: none; transition: transform .1s; }
.ob-funil-etapa:hover { transform: translateY(-2px); }
.ob-funil-icone svg { width: 1.5rem; height: 1.5rem; }
.ob-funil-qtd { font-size: 2rem; font-weight: 800; line-height: 1.1; color: var(--gray-950); font-variant-numeric: tabular-nums; }
.dark .ob-funil-qtd { color: #fff; }
.ob-funil-nome { font-size: .8125rem; font-weight: 600; color: var(--gray-700); }
.dark .ob-funil-nome { color: var(--gray-200); }
.ob-painel-grade { display: grid; gap: 1.25rem; align-items: start; }
@media (min-width: 1280px) { .ob-painel-grade { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); } }

.ob-mapa { width: 100%; border-radius: .5rem; z-index: 0; background: var(--gray-100); }
.ob-mapa-pequeno { height: 16rem; }
.ob-mapa-grande { height: 28rem; }
.ob-legenda { display: flex; flex-wrap: wrap; gap: .25rem .875rem; margin-top: .5rem; font-size: .75rem; color: var(--gray-500); }
.ob-legenda i { display: inline-block; width: .625rem; height: .625rem; border-radius: 999px; margin-right: .25rem; }

.ob-barras { display: flex; flex-direction: column; gap: .5rem; }
.ob-barra-linha { display: grid; grid-template-columns: 9rem 1fr 7rem 5rem; align-items: center; gap: .75rem; font-size: .8125rem; }
.ob-barra-nome { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ob-barra { height: .625rem; border-radius: .25rem; background: var(--gray-100); overflow: hidden; }
.dark .ob-barra { background: rgb(255 255 255 / .08); }
.ob-barra i { display: block; height: 100%; background: var(--primary-500); border-radius: .25rem; }

.ob-anexos-mini { display: flex; gap: .25rem; align-items: center; }
.ob-anexos-mini img, .ob-anexo-doc { width: 2.25rem; height: 2.25rem; border-radius: .375rem; object-fit: cover; outline: 1px solid var(--gray-200); }
.ob-anexo-doc { display: grid; place-items: center; background: var(--gray-50); color: var(--gray-400); }
.ob-anexo-doc svg { width: 1.125rem; height: 1.125rem; }
.ob-gps { display: flex; align-items: center; gap: .375rem; margin: 0 0 .75rem; }

.ob-cartoes { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); }
.ob-cartao-publico { display: flex; flex-direction: column; overflow: hidden; color: inherit; text-decoration: none; transition: transform .1s; }
.ob-cartao-publico:hover { transform: translateY(-2px); }
.ob-cartao-publico > img, .ob-cartao-sem-foto { width: 100%; height: 10rem; object-fit: cover; }
.ob-cartao-sem-foto { display: grid; place-items: center; background: var(--primary-50); color: var(--primary-400); }
.ob-cartao-sem-foto svg { width: 3rem; height: 3rem; }
.ob-cartao-corpo { display: flex; flex-direction: column; align-items: flex-start; gap: .375rem; padding: .875rem 1rem 1rem; }
.ob-galeria-publica { display: grid; gap: .5rem; grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); }
.ob-galeria-publica img { width: 100%; height: 9rem; object-fit: cover; border-radius: .5rem; }

/* ---------- Menu lateral compacto ----------
 * O Filament separa os grupos com 1,75rem; aqui ficam juntos, como num menu comum,
 * com um fio discreto entre os grupos para continuar fácil de achar cada um.
 */
.fi-sidebar-nav-groups { row-gap: .125rem; }
.fi-sidebar-nav { row-gap: .75rem; }
.fi-sidebar-group { row-gap: 0; }
.fi-sidebar-group + .fi-sidebar-group { border-top: 1px solid var(--gray-100); padding-top: .125rem; }
.dark .fi-sidebar-group + .fi-sidebar-group { border-top-color: rgb(255 255 255 / .05); }
.fi-sidebar-group-btn { padding: .4375rem .5rem; }
.fi-sidebar-group-items { row-gap: .0625rem; }
.fi-sidebar-item-btn { padding: .4375rem .5rem; }
