{{-- Navegadores bloqueiam som sem uma primeira interação — como esse painel fica ligado sozinho numa TV, precisa de UM clique pra destravar o áudio. Depois disso, os beeps tocam sozinhos. --}} {{-- ============ cabeçalho fixo, comum a todas as telas base ============ --}}
@php($config = \App\Models\Configuracao::atual()) @if($config->logo_path) @endif

{{ $config->nome_camara }}

@if($sessao)
Sessão {{ $sessao->numero }}ª {{ ucfirst($sessao->tipo ?? 'Ordinária') }} — Data: {{ $sessao->data_sessao->format('d/m/Y') }}
@else
Nenhuma sessão ativa no momento
@endif
@if($sessao) AO VIVO @else AGUARDANDO @endif @if($config->painel_mostrar_relogio_data)
@endif
{{-- ============ MENSAGEM NO TELÃO ============ Camada de apresentação pura (ver Sessao::isMensagemTelaoAtiva()) — nunca depende de votação/matéria/fala/cronômetro; some sozinha quando o operador oculta (ResultadoAoVivo::estadoBase() volta a calcular o estado real no próximo wire:poll.2s). --}} @if($this->estadoBase === 'mensagem')
AVISO
{{ $sessao->mensagem_telao_texto }}
@endif {{-- ============ SEM SESSÃO ATIVA (tela de espera) ============ --}} @if($this->estadoBase === 'sem_sessao')
Aguardando início da sessão
Este painel atualiza sozinho assim que uma sessão for iniciada.
@endif {{-- ============ PROJETOR (imagem ou vídeo ativado pelo operador) ============ estadoBase() já tinha prioridade máxima pra 'projecao' (ver ResultadoAoVivo::estadoBase()) e projecaoEmbedUrl() já convertia YouTube/Vimeo corretamente — mas nunca existia HTML aqui pra mostrar isso: o telão ficava só no fundo escuro. Reaproveita o mesmo wire:poll.2s do componente (raiz do arquivo) — nenhum polling novo. Ao desligar, projecao_ativa vira false e estadoBase() recalcula sozinho pro estado real da sessão (fala/ votação/quórum), sem precisar "lembrar" de nada. --}} @if($this->estadoBase === 'projecao')
@if($sessao->projecao_tipo === 'imagem' && $sessao->projecao_arquivo) @elseif($sessao->projecao_tipo === 'video' && $this->projecaoEmbedUrl)
@else
Projetor ativo, mas sem mídia configurada.
@endif
@endif {{-- ============ SESSÃO SUSPENSA ============ Apresentação institucional — preserva cabeçalho/logo/relógio/ AO VIVO (ficam em .telao-topo, fora daqui) e nunca deixa a tela vazia. Some sozinho ao retomar (Sessao.suspensa vira false, estadoBase() recalcula pro estado real na próxima wire:poll.2s), sem F5. --}} @if($this->estadoBase === 'suspensa')
SESSÃO TEMPORARIAMENTE SUSPENSA
@if($sessao->suspensa_motivo)
{{ $sessao->suspensa_motivo }}
@endif
Os trabalhos serão retomados em instantes.
@endif {{-- ============ QUÓRUM (tela padrão) ============ --}} @if($this->estadoBase === 'quorum')
Quórum @if($config->painel_mostrar_quorum) — {{ $this->presentes }}/{{ $this->totalVereadores }} presentes @endif
@foreach($this->vereadoresComPresenca as $v) @php($presente = $v->quorum->presente ?? false) @php($justificada = $v->quorum->falta_justificada ?? false)
@if($v->foto) @else
{{ mb_substr($v->name, 0, 1) }}
@endif
@if($config->painel_mostrar_identificacao_vereadores)
{{ $v->name }} @if($v->eh_presidente) — Presidente @endif
@endif @if($v->partido && $config->painel_mostrar_partido){{ $v->partido }}@endif @if($presente)
Presente
@elseif($justificada)
Ausência Justificada
@else
Ausente
@endif
@endforeach
@endif {{-- ============ LEITURA DA MATÉRIA ============ --}} @if($this->estadoBase === 'leitura' && $this->materiaEmLeitura)
@if($this->materiaEmLeitura->materia->autor?->foto) @else
{{ mb_substr($this->materiaEmLeitura->materia->autor->name ?? '?', 0, 1) }}
@endif
{{ $this->materiaEmLeitura->materia->autor->name ?? '—' }}
@if($this->materiaEmLeitura->materia->autor?->partido && $config->painel_mostrar_partido) {{ $this->materiaEmLeitura->materia->autor->partido }} @endif
Em leitura
{{ $this->materiaEmLeitura->materia->titulo }}
@if($this->materiaEmLeitura->materia->descricao)
{{ $this->materiaEmLeitura->materia->descricao }}
@endif
@endif {{-- ============ ABERTURA DE VOTO ============ --}} @if($this->estadoBase === 'votacao' && $this->materiaAtual) @if($config->painel_mostrar_materia)
{{ $this->materiaAtual->materia->titulo }}
@if($this->materiaAtual->materia->autor)
Proponente: {{ $this->materiaAtual->materia->autor->name }} @if($this->materiaAtual->materia->autor->partido && $config->painel_mostrar_partido) — {{ $this->materiaAtual->materia->autor->partido }} @endif
@endif
@endif @if($config->painel_mostrar_totalizadores)
Favor
{{ $this->contagem['favor'] }}
Contra
{{ $this->contagem['contra'] }}
Abstenção
{{ $this->contagem['abstencao'] }}
@if($config->painel_mostrar_quorum)
Presentes
{{ $this->presentes }}/{{ $this->totalVereadores }}
@endif
@endif
@foreach($this->vereadoresComPresenca as $v) @php($voto = $this->votosPorVereador->get($v->id)) @php($classeVoto = $config->painel_mostrar_votos_individuais ? match($voto) { 'favor' => 'voto-favor', 'contra' => 'voto-contra', 'abstencao' => 'voto-abstencao', default => '' } : '')
@if($v->foto) @else
{{ mb_substr($v->name, 0, 1) }}
@endif
@if($config->painel_mostrar_identificacao_vereadores)
{{ $v->name }} @if($v->eh_presidente) — Presidente @endif
@endif @if($v->partido && $config->painel_mostrar_partido){{ $v->partido }}@endif
@endforeach
@endif {{-- ============ INSCRIÇÕES ABERTAS ============ --}} @if($this->estadoBase === 'inscricoes') @php($momento = $this->momentosAbertos->first()) @php($config = \App\Models\Configuracao::atual()) @php($tempoMomento = match($momento->momento) { 'pequeno_expediente' => $config->tempo_pequeno_expediente, 'grande_expediente' => $config->tempo_grande_expediente, 'explicacoes_pessoais' => $config->tempo_explicacoes_pessoais, default => $config->tempo_fala_padrao, })
Atenção, senhores vereadores
INSCRIÇÕES PARA FALA ABERTAS
{{ $momento->labelMomento() }}
Tempo padrão: {{ $tempoMomento }} minutos

Os vereadores interessados devem realizar a inscrição no tablet. Esta mensagem permanecerá no painel até o encerramento das inscrições.

@endif {{-- ============ FALA ATIVA (mostra pra qualquer fala autorizada, normal ou aparte) ============ --}} @if($this->estadoBase === 'fala' && $this->falaEmAndamento) @php($falaAtual = $this->falaEmAndamento) @php($inicioEm = $falaAtual->tempo_inicio->toIso8601String()) @php($fimEm = $falaAtual->tempo_inicio->copy()->addMinutes($falaAtual->tempo_solicitado)->toIso8601String()) @php($duracaoSegundos = $falaAtual->tempo_solicitado * 60)
@if($falaAtual->fotoExibicao()) @else
{{ mb_substr($falaAtual->nomeExibicao(), 0, 1) }}
@endif
@if($falaAtual->isAparte()) Aparte autorizado @elseif($falaAtual->isAvulso()) Convidado @else Fala autorizada @endif
{{ $falaAtual->nomeExibicao() }}
@if($falaAtual->partidoExibicao())
{{ $falaAtual->partidoExibicao() }}
@endif @if($config->painel_mostrar_cronometro) {{-- Cronômetro — item "7": sempre grande, nunca quebra linha, nunca fica atrás de outro elemento. Lógica de tempo 100% inalterada, só a classe .telao-fala-cronometro mudou (era style inline). --}}
@endif
{{-- Região inferior — nunca sobrepõe o card principal (é um irmão dele, não um overlay). Só pedidos com status pendente aparecem aqui; quem está com a palavra tem status 'autorizada' e nunca aparece duplicado nesta lista. Atualiza sozinho a cada wire:poll.2s (raiz do componente) — nenhum polling novo. --}} @if($this->pedidosPendentes->isNotEmpty())
Aguardando a palavra
@foreach($this->pedidosPendentes->take(8) as $pedido)
{{ $loop->iteration }}º @if($pedido->fotoExibicao()) @else
{{ mb_substr($pedido->nomeExibicao(), 0, 1) }}
@endif {{ $pedido->nomeExibicao() }} @if($pedido->isAparte()) @endif
@endforeach @if($this->pedidosPendentes->count() > 8)
+{{ $this->pedidosPendentes->count() - 8 }}
@endif
@endif
@endif {{-- ============ PEDIDOS DE VOZ (fila, sem ninguém falando agora) ============ --}} @if($this->estadoBase === 'fila')
Pedidos de voz {{ $this->pedidosPendentes->count() }}
@foreach($this->pedidosPendentes as $i => $pedido)
@if($pedido->fotoExibicao()) @else
{{ mb_substr($pedido->nomeExibicao(), 0, 1) }}
@endif
{{ $pedido->nomeExibicao() }} @if($pedido->isAvulso()) Convidado @endif
{{ $pedido->isAparte() ? 'Pedido de aparte registrado' : 'Pedido de fala registrado' }}
{{ $i + 1 }}
{{ $pedido->tempo_solicitado }} min
@endforeach
@endif
{{-- ============================================================ OVERLAYS — aparecem por cima da tela base e somem sozinhos ============================================================ --}} {{-- tela preta de transição (contando os votos) --}}
APURANDO OS VOTOS...
{{-- resultado oficial da votação --}}
RESULTADO OFICIAL DA VOTAÇÃO
@if($config->painel_mostrar_totalizadores)
FAVORÁVEIS
CONTRÁRIOS
ABSTENÇÕES
@endif
{{ strtoupper(\App\Models\Configuracao::atual()->nome_camara) }} · RESULTADO OFICIAL
{{-- pedido de vistas --}}
Pedido de vistas
solicitou vistas da matéria em leitura