{{-- Etapa Visual 1 — padrão visual homologado (PHP puro), escopado em .lg-op --}} @include('livewire.admin.partials.operador-visual')
Sessão #{{ $sessao->numero }} — Quórum e Votação
{{ $sessao->data_sessao->format('d/m/Y') }}
Voltar pra Pauta @if($this->chamadaAtiva && $this->podeRegistrarSegundaChamada) @endif
@if($this->materiaEmLeitura)
📖 Em leitura agora: {{ $this->materiaEmLeitura->materia->titulo }} — é sobre ela que "Pedir vista" age.
@endif
@if($this->blocoAtivo) 📦 Votação em bloco aberta
@foreach($this->blocoAtivo->itens as $item)
{{ $item->materia->titulo }}
@endforeach
Favor: {{ $this->contagemBloco['favor'] }} Contra: {{ $this->contagemBloco['contra'] }} Abstenção: {{ $this->contagemBloco['abstencao'] }}
@elseif($this->materiaAtual) Votação aberta @if($this->materiaAtual->materia->voto_secreto) 🔒 Voto secreto @endif {{ $this->materiaAtual->materia->titulo }}
Favor: {{ $this->contagem['favor'] }} Contra: {{ $this->contagem['contra'] }} Abstenção: {{ $this->contagem['abstencao'] }}
@else
Nenhuma votação aberta — abra uma matéria na tela de Pauta pra habilitar o voto aqui.
@endif
Pedidos de fala @if(count($this->momentosParaSortear))
@foreach($this->momentosParaSortear as $momento) @endforeach
@endif @if($this->falaEmAndamento) @php($falaAtual = $this->falaEmAndamento) @php($restante = $this->restanteFalaAtual ?? 0)
@if($falaAtual->isAparte()) Aparte @elseif($falaAtual->isAvulso()) Convidado @endif {{ $falaAtual->nomeExibicao() }} falando — {{ sprintf('%02d:%02d', intdiv($restante, 60), $restante % 60) }} @if($falaAtual->isAparte() && $falaAtual->pedidoPai) (interrompendo {{ $falaAtual->pedidoPai->nomeExibicao() }}) @endif
@unless($falaAtual->isAparte()) @php($incrementoFala = \App\Models\Configuracao::atual()->incremento_tempo_fala_padrao) @endunless
@endif @if($this->pedidosPendentes->count())
@foreach($this->pedidosPendentes as $pedido)
@if($pedido->isAparte()) Aparte @elseif($pedido->labelMomento()) {{ $pedido->labelMomento() }} #{{ $pedido->ordem }} @endif {{ $pedido->nomeExibicao() }} — {{ $pedido->tempo_solicitado }} min @if($pedido->isAparte() && $pedido->pedidoPai) (na fala de {{ $pedido->pedidoPai->nomeExibicao() }}) @endif
@endforeach
@elseif(! $this->falaEmAndamento)

Nenhum pedido de fala no momento.

@endif
@if($this->chamadaAtiva && $this->chamadasRealizadas->count())
Histórico de chamadas @foreach($this->chamadasRealizadas as $chamada)
{{ $chamada->numero }}ª Chamada {{ match($chamada->fase) { 'leitura_ata' => 'Leitura da Ata', 'expediente' => 'Expediente', 'extra_pauta' => 'Extra Pauta', 'ordem_do_dia' => 'Ordem do Dia', default => '—', } }} — {{ $chamada->realizada_em->format('d/m/Y H:i') }} {{ $chamada->total_presentes }} presentes {{ $chamada->total_ausentes }} ausentes
@foreach($chamada->presencas()->with('vereador')->get() as $p) {{ $p->presente ? '✓' : '—' }} {{ $p->vereador->name }} @endforeach
@endforeach
@endif
Vereadores {{-- Etapa Visual 1 — grade/cards no padrão v-card do PHP homologado (admin_configuracoes.php): foto em destaque à esquerda, nome + partido + estado agrupados, ações em linha abaixo. Mesmos @php/@if/@foreach/wire:* de antes — só a moldura mudou. --}}
@forelse($this->vereadores as $vereador) @php($presente = $this->presencas[$vereador->id] ?? false) @php($votoAtual = $this->blocoAtivo ? ($this->votosDoBloco[$vereador->id] ?? null) : ($this->votosDaMateriaAtual[$vereador->id] ?? null)) @php($statusFala = $this->pedidosPorVereador[$vereador->id] ?? null) @php($quorumDoVereador = $this->quorumPorVereador[$vereador->id] ?? null) {{-- Microetapa "Quórum Visual" — fonte única Quorum::estadoVisual(): 'aguardando' (branco/neutro — nunca confirmou), 'presente' (verde), 'ausente' (vermelho — confirmou e depois ficou ausente). Ordem dos cards preservada (item 54): nenhum reordenamento por estado. --}} @php($estadoPresenca = $quorumDoVereador ? $quorumDoVereador->estadoVisual() : 'aguardando') @php($corEstado = match($estadoPresenca) { 'presente' => ['borda' => '#bbf7d0', 'fundo' => '#f0fdf4', 'texto' => '#166534'], 'ausente' => ['borda' => '#fecaca', 'fundo' => '#fef2f2', 'texto' => '#b91c1c'], default => ['borda' => '#e2e6ee', 'fundo' => '#ffffff', 'texto' => '#64748b'] })
@if($vereador->foto) @else
{{ mb_substr($vereador->name, 0, 1) }}
@endif
{{ $vereador->name }} @if($vereador->eh_presidente) Presidente @endif
{{ $vereador->partido }}
{{ match($estadoPresenca) { 'presente' => '● Presente', 'ausente' => '● Ausente', default => '○ Aguardando presença' } }}
@if($estadoPresenca === 'ausente' && $quorumDoVereador?->origem_ausencia === 'automatica')
Ausência automática — não participou da última votação.
@endif
@if(! $presente) @if($quorumDoVereador?->falta_justificada)
Falta justificada: {{ $quorumDoVereador->motivo_falta }}
·
@else @endif @endif @if($statusFala) {{ $statusFala === 'autorizada' ? 'Falando' : 'Pediu voz' }} @elseif($presente) @if($this->principalFalaAtual && (int) $this->principalFalaAtual->vereador_id !== $vereador->id) @endif @if($this->materiaEmLeitura) @endif @foreach($this->momentosAbertosAgora as $momentoAberto) @endforeach @endif @if(($this->materiaAtual || $this->blocoAtivo) && $presente) @php($metodo = $this->blocoAtivo ? 'votarBlocoPor' : 'votarPor') {{-- voto por vereador: mesmas cores de antes (preenchido = voto atual), agora via --btn-* pra ganhar sombra/hover do padrão homologado --}}
@endif {{-- Voto do Presidente na votação INDIVIDUAL aberta — situação vem da fonte única SessaoMateria::situacaoVotoPresidente(); o botão só aparece quando a regra geral impede o voto e ainda não há liberação nesta tentativa (podeLiberarVotoPresidente). O backend (VotacaoMateriaService::liberarVotoPresidente) revalida tudo. --}} @if($vereador->eh_presidente && in_array($this->situacaoVotoPresidente, ['nao_vota', 'desempate', 'liberado'], true))
@if($this->situacaoVotoPresidente === 'liberado') VOTO LIBERADO nesta votação @elseif($this->situacaoVotoPresidente === 'desempate') DESEMPATE — voto só em caso de empate @else NÃO VOTA — regra da Câmara @endif @if($this->podeLiberarVotoPresidente) @endif
@endif
@empty

Nenhum vereador cadastrado ainda.

@endforelse
@if($vereadorJustificando)

Justificar falta

@error('motivoFalta')
{{ $message }}
@enderror @error('arquivoJustificativa')
{{ $message }}
@enderror
Enviando arquivo...
@endif {{-- Widget de toast local removido (Etapa 2A): agora tratado pelo toast global incluído em admin-layout.blade.php. --}}