{{ t('hero.eyebrow') }}

{{ t('hero.headline') }}

{{ t('auth.loading_title') }}

{{ t('auth.loading_lead') }}

{{ invitation.loaded ? t('auth.invitation_access') : t('auth.access') }}

{{ invitation.loaded ? t('auth.invited_title', { pool: invitation.poolName }) : t('auth.choose_pool') }}

{{ invitation.loaded ? t('auth.invited_lead') : t('auth.choose_lead') }}

{{ invitation.loaded ? t('auth.continue') : t('auth.login') }}

{{ t('gateway.eyebrow') }}

{{ t('gateway.title') }}

{{ t('gateway.lead') }}

{{ t('gateway.pending_title') }}

{{ t('gateway.pending_text', { name: prode.name }) }}

{{ t('gateway.enter_pool') }}

{{ t('gateway.available', { n: activeProdes.length }) }}

{{ t('gateway.create_pool') }}

{{ t('gateway.new') }}

{{ t('gateway.create_lead') }}

{{ t('create.eyebrow') }}

{{ t('create.title') }}

{{ t('gateway.create_pool') }}

{{ t('gateway.create_lead') }}

Cambiar de prode

{{ activeProdes.length }} disponibles

{{ t('gateway.create_pool') }}

{{ t('gateway.new') }}

{{ t('gateway.create_lead') }}

Cómo jugar

Pronosticá, sumá y jugá bonus

Cómo jugar

  • Elegí un prode, cargá tus pronósticos y guardalos antes de que se bloquee cada partido.
  • La referencia oficial siempre es lo que está cargado por el administrador del prode.
  • Cuando termina una fase, la tabla y las llaves se recalculan con esos resultados.

Cómo sumar puntos

{{ t('rules.finals_phase') }}

{{ t('rules.goals_phase') }}

Minijuegos

  • Penales: desafiá a otro participante y definan la serie eligiendo tiros y atajadas.
  • Ordenar 4: acomodá selecciones o jugadores en el orden correcto. Se juega una vez por día.
  • {{ t('trivia.title') }}: girá la ruleta, respondé rápido y sumá bonus por cada segundo restante.

{{ t('minigames.title') }}

{{ t('minigames.eyebrow') }}

{{ t('minigames.lead') }}

{{ t('ranking.title') }}

{{ isCurrentPoolAdmin ? `${t('ranking.live')} · Eres el admin` : `${t('ranking.live')} (admin: ${currentPoolAdminLabel})` }}
#{{ index + 1 }} {{ row.displayName || row.name }} {{ row.total }} {{ t('common.points') }}

{{ row.identityDetail }}

{{ stageLabel(stage.stage) }} {{ stage.total }} {{ t('common.points') }}
  • {{ displayTriviaText(entry.label) }} {{ entry.points }} {{ t('common.points') }}
    {{ entry.detail.map(displayTriviaText).join(" · ") }}

{{ t('ranking.no_user_scores') }}

{{ t('ranking.no_scores') }}

{{ t('requests.title') }}

{{ t('requests.empty') }}

{{ member.poolEmoji }} {{ member.poolName }} · {{ member.name }}

{{ stageHint }}

{{ displayGroupName(group.name) }}

{{ row.position }}. {{ row.name }} {{ row.points }} pts · DG {{ row.goalDiff }} · GF {{ row.goalsFor }}

{{ displayGroupName(group.name) }}

{{ formatMatchDatetime(match.datetime) }}
{{ teamName(group, match.homeTeamId) }} vs {{ teamName(group, match.awayTeamId) }}
-

{{ t('play.match_locked') }}

{{ t('play.r32_note') }}

{{ displayMatchLabel(match.label) }}

{{ formatMatchDatetime(match.datetime) }}
{{ displayTeamName(match.home || "Equipo 1") }} {{ displaySourceLabel(matchSourceLabel(match, 'home')) }} vs {{ displayTeamName(match.away || "Equipo 2") }} {{ displaySourceLabel(matchSourceLabel(match, 'away')) }}

{{ t('play.regular_result') }}

-

{{ t('play.penalties_result') }}

-

{{ t('play.match_locked') }}

{{ displayTriviaText('Super administrador') }}

{{ displayTriviaText('Backoffice de prodes, etapas y resultados') }}

{{ displayTriviaText('Resumen') }}

{{ displayTriviaText('Prodes') }} {{ admin.pools.length }}
{{ displayTriviaText('Grupos completos') }} {{ adminSummary.groupsComplete }}/{{ state.groups.length }}
{{ adminStageLabel }} {{ adminSummary.currentStageComplete }}/{{ adminSummary.currentStageTotal }}

{{ displayTriviaText('Prodes creados') }}

{{ displayTriviaText('Vista rápida de torneos activos y su cantidad de participantes.') }}

{{ pool.name }} {{ pool.participants }} {{ displayTriviaText('participantes') }} · {{ pool.id }}
{{ adminLeaderboard(pool.id)[0]?.total || 0 }} {{ t('common.points') }}

Solicitudes pendientes

{{ member.name }} {{ member.email || member.userId }}
#{{ index + 1 }} {{ row.name }} {{ row.total }} pts
{{ displayTriviaText(stage.label) }} {{ stage.total }} {{ t('common.points') }}
  • {{ entry.label }} {{ entry.points }} {{ t('common.points') }}
    {{ entry.detail.join(" · ") }}

Todavía no tiene puntos cargados.

Todavía no hay puntajes cargados.

Bloqueo automático de partidos

Bloquea cada partido 1h antes del kickoff. Ejecuta automáticamente cada 1 min vía systemd timer.

Timer {{ lockStatus.timer?.active ? "ACTIVO" : (lockStatus.timer?.error || "INACTIVO") }}
Última ejecución {{ formatTimerTs(lockStatus.timer?.lastRun) }}
Próxima ejecución {{ formatTimerTs(lockStatus.timer?.nextRun) }}
Partidos {{ lockStatus.totals.locked }} bloq · {{ lockStatus.totals.pending }} pendientes

Listado de partidos

Próximos arriba
{{ m.scope }} · {{ m.label }} {{ formatLocalDatetime(m.datetime) }}
BLOQUEADO a bloquear en {{ formatCountdown(m.msUntilLock) }}

Sin partidos.

Log de ejecuciones

{{ lockStatus?.log?.length || 0 }} líneas
{{ (lockStatus?.log || []).join("\n") }}

Performance API

{{ perfStatus?.metrics?.length || 0 }} rutas

Capturado: {{ formatLocalDatetime(perfStatus.capturedAt) }}

{{ perfStatus.error }}

Ruta Count Avg P95 Max Err
{{ metric.route }} {{ metric.count }} {{ metric.avgMs }}ms {{ metric.p95Ms }}ms {{ metric.maxMs }}ms {{ metric.errors }}

Todavía no hay métricas cargadas.

Resultados de grupos

Cargá los resultados oficiales partido por partido. El sistema arma la tabla y los 16avos automáticamente. Cerrá la fase de grupos cuando quieras fijar oficialmente 1° y 2° para el puntaje.

{{ displayGroupName(group.name) }}

{{ group.matches.length }} {{ t('common.matches') }}

{{ displayMatchLabel(match.label) }}

{{ teamName(group, match.homeTeamId) }} vs {{ teamName(group, match.awayTeamId) }}
{{ match.locked ? "Bloqueado" : "Editable" }}
{{ teamName(group, match.homeTeamId) }} vs {{ teamName(group, match.awayTeamId) }}
-

Tabla actual

Derivada de los resultados
{{ row.position }}. {{ row.name }}
{{ row.points }} pts · DG {{ row.goalDiff }} · GF {{ row.goalsFor }}

Llaves y resultados

Completitud actual: {{ adminSummary.currentStageComplete }}/{{ adminSummary.currentStageTotal }} cruces listos.

{{ displayMatchLabel(match.label) }}

{{ stageLabel(match.stage) }}
{{ match.locked ? "Bloqueado" : "Editable" }}
vs

{{ t('play.regular_result') }}

-

{{ t('play.penalties_result') }}

-
Tenés solicitudes pendientes

Revisalas y aprobá participantes desde Solicitudes.

{{ t('lite.rename_title') }}

{{ renameModal.error }}

{{ t('lite.join_name_title') }}

{{ joinNameModal.error }}

Cambiar nombre del prode

{{ renamePoolModal.error }}

{{ t('pool.switch_title') }}

{{ t('pool.share_title') }}

{{ t('pool.copy_predictions_title') }}

{{ copyPredictionsModal.error }}

{{ toast }}

{{ t('trivia.eyebrow') }}

{{ t('trivia.title') }}

{{ t('trivia.lead') }}

{{ t('trivia.spin') }}
{{ cat.icon }} {{ cat.label }}

{{ displayTriviaText(triviaCategoriesStatus) }}

{{ trivia.session?.icon }} {{ displayTriviaCategoryLabel(trivia.session) }}
{{ trivia.timeRemaining.toFixed(1) }}s

{{ triviaSessionQuestion(trivia.session) }}

{{ trivia.result?.correct ? "🎉" : "😬" }}

{{ trivia.result?.correct ? t('trivia.correct') : (trivia.result?.expired ? t('trivia.timeout') : t('trivia.incorrect')) }}

{{ t('trivia.points_left', { points: trivia.result.points.toFixed(1), time: trivia.result.timeRemaining.toFixed(1) }) }}

{{ t('trivia.correct_answer') }} {{ triviaSessionOptions(trivia.session)[trivia.result?.correctIndex] }}

Ordená el ranking

Ordená 4 opciones de mayor a menor. Jugás una vez por día y sumás 0.1 puntos por cada posición correcta.

Minijuego

Definición por penales

Desafiá a otro participante del prode. Cada uno elige 5 tiros y 5 atajadas.

Pendientes

{{ challenge.challengerName }} vs {{ challenge.challengedName }} {{ penaltyStatusLabel(challenge) }}

No hay desafíos pendientes.

Resultados anteriores

{{ challenge.challengerName }} vs {{ challenge.challengedName }} {{ penaltyStatusLabel(challenge) }}

Todavía no hay resultados anteriores.