$60 por equipo (max. 15 jugadores). Si son 12, son $5 por persona para competir por $600.
Como funciona el torneo relampago?
+
Un solo dia. 16 equipos en 4 grupos de 4. Los 2 primeros de cada grupo avanzan a cuartos, semis y final. Futbol 7, 20 minutos por tiempo.
Que incluye la inscripcion?
+
Arbitro profesional, fotografo el dia del torneo, ficha digital tipo FIFA por jugador, tabla en tiempo real, reel del torneo y ceremonia de premiacion.
Cuantos jugadores por equipo?
+
Minimo 7 y maximo 15. Recomendamos entre 10 y 12 para tener suplentes durante el dia.
Como se paga el premio?
+
$600 en efectivo al equipo campeon en la ceremonia de premiacion inmediatamente.
Como sigo los resultados en tiempo real?
+
Desde esta plataforma en tu celular. Tambien publicamos en Instagram y WhatsApp.
Lo que dicen
COMENTARIOS
Deja tu comentario
★★★★★
KOPA · Mayo 2026
TORNEO RELAMPAGO #01
16 equipos · Futbol 7 · Un dia · $600 al campeon
Torneo Relampago #01
EQUIPOS
K
Grupo A
Equipo
Alineacion
CAMPO DE JUEGO
Suplentes
Clasificacion
TABLA DE POSICIONES
Top 2 de cada grupo clasifican a cuartos · V=3pts · E=1pt · D=0pts
Estadisticas
GOLEADORES
ADMIN
Panel organizador KOPA FC 2026
Panel organizador · KOPA FC 2026
Control de partido en vivo
Estado
Local
Visitante
Marcador
-
Fase
Minuto
00'
Agregar equipo
Equipos (0/16)
Agregar jugador
Estadisticas
Agregar partido
vs
Registrar gol
Configuracion
Zona peligrosa
var PUB=['home','torneo','equipos','tabla','goleadores'];
function goTo(id){
document.querySelectorAll('.page').forEach(function(p){p.classList.remove('act');});
document.querySelectorAll('.adm-page').forEach(function(p){p.classList.remove('act');});
var pg=document.getElementById('pg-'+id);
if(pg){pg.classList.add('act');}
document.querySelectorAll('.nl').forEach(function(b,i){b.classList.toggle('act',PUB[i]===id);});
window.scrollTo(0,0);
S=gs();
if(id==='home') renderHome();
if(id==='torneo') renderFixture('todos');
if(id==='equipos') renderEquipos('todos');
if(id==='tabla') renderTabla('A');
if(id==='goleadores') renderGoles();
}
function goToAdmin(){
document.querySelectorAll('.page').forEach(function(p){p.classList.remove('act');});
document.getElementById('pg-admin').classList.add('act');
S=gs();
if(S.loggedIn){showPanel();}
else{document.getElementById('adm-login').style.display='flex';document.getElementById('adm-panel').style.display='none';}
}
function goToEqDet(nombre){
S=gs();
var eq=null;
for(var i=0;i0){
var items=done.slice(-8);
for(var i=0;i<2;i++){for(var j=0;j'+items[j].local+' '+items[j].gl+'-'+items[j].gv+' '+items[j].visita+'';}}
} else {
var def=['KOPA FC','Torneo Relampago #01','Mayo 2026 Cuenca','$600 Al Campeon','16 Equipos','@kopafutbol'];
for(var i=0;i<2;i++){for(var j=0;j'+def[j]+'';}}
}
var t=document.getElementById('ticker-t');if(t)t.innerHTML=html;
}
function renderEV(){
S=gs();
var ev=S.envivo||{};
var block=document.getElementById('ev-block');
if(!block)return;
var pill=document.getElementById('nav-live');
if(!ev||ev.est==='off'||!ev.local){
block.innerHTML='
No hay partido en curso.
';
if(pill)pill.style.display='none';return;
}
if(pill)pill.style.display='flex';
var lbl={live:'En Juego',medio:'Medio Tiempo',fin:'Finalizado'}[ev.est]||ev.est;
var col=ev.est==='live'?'var(--orange)':ev.est==='fin'?'var(--lime)':'var(--muted)';
block.innerHTML='
'+lbl+' - '+ev.fase+'
'+String(ev.min||0).padStart(2,'0')+"'
"+ev.local+'
Local
'+ev.gl+'-'+ev.gv+'
'+ev.fase+'
'+ev.visita+'
Visitante
';
}
/* COMENTARIOS */
var CM_BASE=[
{nombre:'Carlos R.',equipo:'Los Fenomenos',rating:5,texto:'El mejor torneo de Cuenca! Organizacion increible, arbitro profesional y las fotos quedaron epicas.',fecha:'Mayo 2026'},
{nombre:'Andres M.',equipo:'Barrio Norte FC',rating:5,texto:'KOPA FC es otro nivel. Todo online, el carnet digital esta buenazo.',fecha:'Mayo 2026'},
{nombre:'Diego V.',equipo:'La Garra',rating:4,texto:'Muy bien organizado, los resultados en vivo son un detalle genial.',fecha:'Mayo 2026'},
{nombre:'Luis P.',equipo:'El Combo',rating:5,texto:'$5 por jugador para tener una experiencia asi? Vale cada centavo.',fecha:'Mayo 2026'},
];
var cmRating=5;
function setStars(n){
cmRating=n;
var stars=document.querySelectorAll('#stars-sel span');
for(var i=0;i
'+c.nombre.charAt(0)+'
'+c.nombre+'
'+(c.equipo||'Jugador KOPA')+'
'+stars+'
'+c.texto+'
'+(c.fecha||'')+'
';
}
cont.innerHTML=html;
}
function faqT(qEl){
var it=qEl.parentElement;
var wasOpen=it.classList.contains('open');
document.querySelectorAll('.faq-it').forEach(function(x){x.classList.remove('open');});
if(!wasOpen)it.classList.add('open');
}
/* FIXTURE */
function renderFixture(fase){
S=gs();
var pts=S.partidos;
if(fase!=='todos'){var tmp=[];for(var i=0;iSIN PARTIDOS EN EL FIXTURE';return;}
var fases=[];var seen={};for(var i=0;i
'+faseNom+'
';
for(var i=0;i'+p.gl+'-'+p.gv+''):'
vs
';
var badge=p.est==='done'?'Finalizado':p.est==='live'?'EN VIVO':'Pendiente';
return '
'+p.local+'
'+sc+'
'+(p.hora||'')+'
'+p.visita+'
'+p.fase+'
'+badge+'
';
}
/* EQUIPOS */
function renderEquipos(g){
S=gs();
var eqs=S.equipos;
if(g!=='todos'){var tmp=[];for(var i=0;iSIN EQUIPOS REGISTRADOS';return;}
var html='';
for(var i=0;i'):e.nombre.charAt(0);
var gcols={A:'rgba(200,241,53,.1)',B:'rgba(255,94,26,.1)',C:'rgba(74,158,255,.1)',D:'rgba(255,45,120,.1)'};
var gtcols={A:'var(--lime)',B:'var(--orange)',C:'var(--blue)',D:'var(--pink)'};
html+='
';
html+='
'+fotoHtml+'
';
html+='
'+e.nombre+'
';
html+='
Grupo '+e.grupo+'
';
html+='
PJ '+st.pj+'
V '+st.v+'
PTS '+st.pts+'
';
html+='
';
}
grid.innerHTML=html;
}
function filtroEq(g,btn){
document.querySelectorAll('#pg-equipos .gtab').forEach(function(b){b.classList.remove('act');});
btn.classList.add('act');renderEquipos(g);
}
/* EQUIPO DETAIL */
var POS_COORDS={
'Portero': [{x:50,y:88}],
'Defensa': [{x:25,y:72},{x:50,y:67},{x:75,y:72}],
'Lateral': [{x:9,y:58},{x:91,y:58}],
'Mediocampo':[{x:25,y:46},{x:50,y:42},{x:75,y:46}],
'Delantero':[{x:35,y:26},{x:65,y:26}]
};
var POS_ORDER=['Portero','Defensa','Lateral','Mediocampo','Delantero'];
function renderEqDet(eq){
S=gs();
var fd=document.getElementById('eqd-foto');
if(eq.foto){fd.innerHTML='';}
else{fd.innerHTML=eq.nombre.charAt(0);}
document.getElementById('eqd-nom').textContent=eq.nombre;
document.getElementById('eqd-grupo').textContent='Grupo '+eq.grupo;
var cap=document.getElementById('eqd-cap');if(cap)cap.textContent=eq.capitan?'Capitan: '+eq.capitan:'';
var desc=document.getElementById('eqd-desc');if(desc)desc.textContent=eq.desc||'';
var st=calcSt(eq.nombre);
document.getElementById('eqd-stats').innerHTML='
'+st.pj+'
PJ
'+st.v+'
V
'+st.e+'
E
'+st.pts+'
PTS
';
renderCampo(eq.nombre);
}
function renderCampo(equipo){
S=gs();
var jugs=[];for(var i=0;i'+jug.numero+''):'';
var avH=jug.foto?(''):jug.nombre.charAt(0);
var nom=jug.nombre.split(' ')[0];
html+='
';return;}
var shtml='';
for(var i=0;i'):j.nombre.charAt(0);
shtml+='
'+avH+'
'+j.nombre+'
'+(j.posicion||'JUG')+' #'+(j.numero||'-')+'
';
}
supsEl.innerHTML=shtml||'
Sin suplentes
';
}
/* TABLA */
function calcSt(nombre){
var pts=[];for(var i=0;img2)v++;else if(mg===mg2)e++;else d++;}
return{pj:pts.length,v:v,e:e,d:d,gf:gf,gc:gc,pts:v*3+e};
}
function renderTabla(g){
S=gs();
var eqs=[];for(var i=0;iSIN EQUIPOS EN ESTE GRUPO';return;}
var rows=[];for(var i=0;i0?'+':'')+dg;
var dgcol=dg>0?'var(--lime)':dg<0?'var(--orange)':'var(--muted)';
html+='
'+(i+1)+'
'+r.nombre+'
'+r.pj+'
'+r.v+'
'+r.e+'
'+r.d+'
'+r.gf+'
'+r.gc+'
'+dgstr+'
'+r.pts+'
';
}
html+='';
cont.innerHTML=html;
}
function showGrupo(g,btn){
document.querySelectorAll('#pg-tabla .gtab').forEach(function(b){b.classList.remove('act');});
btn.classList.add('act');renderTabla(g);
}
/* GOLEADORES */
function renderGoles(){
S=gs();
var gols=[].concat(S.goleadores);
gols.sort(function(a,b){return b.goles-a.goles;});
var list=document.getElementById('gol-list');
if(!gols.length){list.innerHTML='
SIN GOLES REGISTRADOS
';return;}
var html='';
for(var i=0;i'):g.jugador.charAt(0);
html+='
'+(i+1)+'
'+avH+'
'+g.jugador+'
'+g.equipo+'
'+g.goles+'
goles
';
}
list.innerHTML=html;
}
/* FIFA */
var STATS_POS={Portero:['REF','POS','SAQ','COR','MAN','FIS'],Defensa:['DEF','PAS','FIS','RIT','INT','COR'],Lateral:['RIT','PAS','DEF','CRU','FIS','INT'],Mediocampo:['PAS','REG','TIR','RIT','DEF','FIS'],Delantero:['RIT','TIR','PAS','REG','DEF','FIS'],dflt:['RIT','TIR','PAS','REG','DEF','FIS']};
var curJug=null;
function abrirFifa(nombre,equipo){
S=gs();
var j=null;for(var i=0;i'):(''+j.nombre.charAt(0)+'');
var statsH='';
for(var i=0;i
';
document.getElementById('fifa-ov').classList.add('open');
document.body.style.overflow='hidden';
}
function cerrarFifa(){document.getElementById('fifa-ov').classList.remove('open');document.body.style.overflow='';}
function descargarFifa(){
var card=document.getElementById('fifa-card-el');
if(!card)return;
var nom=curJug?curJug.nombre:'jugador';
if(typeof html2canvas!=='undefined'){
html2canvas(card,{backgroundColor:'#0d1800',scale:3,useCORS:true,logging:false}).then(function(canvas){
var a=document.createElement('a');
a.download='KOPA-FC-'+nom.replace(/\s+/g,'-')+'-2026.png';
a.href=canvas.toDataURL('image/png');a.click();
});
} else {alert('Para descargar, toma un screenshot de la ficha.');}
}
function compartirFifa(){
var nom=curJug?curJug.nombre:'jugador';
if(navigator.share){navigator.share({title:'Ficha KOPA FC 2026 - '+nom,text:'Mi ficha de jugador en KOPA FC 2026! @kopafutbol',url:window.location.href}).catch(function(){});}
else{try{navigator.clipboard.writeText(window.location.href).then(function(){alert('Link copiado!');});}catch(e){alert('Comparte esta pagina: '+window.location.href);}}
}
/* ADMIN AUTH */
function tryLogin(){
S=gs();
var pw=document.getElementById('login-pw').value;
if(pw===S.pw){S.loggedIn=true;ss(S);showPanel();}
else{document.getElementById('login-al').innerHTML='
Contrasena incorrecta
';}
}
function doLogout(){S=gs();S.loggedIn=false;ss(S);document.getElementById('adm-panel').style.display='none';document.getElementById('adm-login').style.display='flex';document.getElementById('login-pw').value='';}
function showPanel(){
document.getElementById('adm-login').style.display='none';
document.getElementById('adm-panel').style.display='block';
fillSelects();renderAdmEq();renderAdmJugs();renderAdmParts();renderAdmGols();syncEVform();
}
function aTab(t,btn){
document.querySelectorAll('.atab').forEach(function(b){b.classList.remove('act');});
document.querySelectorAll('.asec').forEach(function(s){s.classList.remove('act');});
btn.classList.add('act');document.getElementById('asec-'+t).classList.add('act');
}
/* EN VIVO ADMIN */
var cronoTimer=null,cronoSecs=0,cronoRunning=false;
function cronoTick(){cronoSecs++;var m=Math.floor(cronoSecs/60);document.getElementById('crono-big').textContent=String(m).padStart(2,'0')+"'";document.getElementById('ev-min').value=m;}
function cronoStart(){if(cronoRunning)return;cronoRunning=true;cronoTimer=setInterval(cronoTick,1000);}
function cronoPause(){cronoRunning=false;clearInterval(cronoTimer);}
function cronoReset(){cronoPause();cronoSecs=0;document.getElementById('crono-big').textContent="00'";document.getElementById('ev-min').value=0;}
function cronoAdd(m){cronoSecs=m*60;document.getElementById('crono-big').textContent=String(m).padStart(2,'0')+"'";document.getElementById('ev-min').value=m;}
function syncCrono(){var m=parseInt(document.getElementById('ev-min').value)||0;document.getElementById('crono-big').textContent=String(m).padStart(2,'0')+"'";}
function syncPill(){var v=document.getElementById('ev-est').value;document.getElementById('nav-live').style.display=v!=='off'?'flex':'none';}
function syncEVform(){S=gs();var ev=S.envivo||{};document.getElementById('ev-est').value=ev.est||'off';document.getElementById('ev-loc').value=ev.local||'';document.getElementById('ev-vis').value=ev.visita||'';document.getElementById('ev-gl').value=ev.gl||0;document.getElementById('ev-gv').value=ev.gv||0;document.getElementById('ev-min').value=ev.min||0;document.getElementById('ev-fase').value=ev.fase||'';document.getElementById('crono-big').textContent=String(ev.min||0).padStart(2,'0')+"'";}
function guardarEV(){
S=gs();
S.envivo={est:document.getElementById('ev-est').value,local:document.getElementById('ev-loc').value,visita:document.getElementById('ev-vis').value,gl:parseInt(document.getElementById('ev-gl').value)||0,gv:parseInt(document.getElementById('ev-gv').value)||0,min:parseInt(document.getElementById('ev-min').value)||0,fase:document.getElementById('ev-fase').value};
ss(S);showAlert('gadm-al','Marcador publicado!','ok');
}
/* EQUIPOS ADMIN */
function prevEqFoto(inp){var f=inp.files[0];if(!f)return;var r=new FileReader();r.onload=function(e){document.getElementById('eq-fp').style.display='block';document.getElementById('eq-fpimg').src=e.target.result;document.getElementById('eq-foto').value='';};r.readAsDataURL(f);}
function guardarEq(){
S=gs();var nom=document.getElementById('eq-nom').value.trim();
if(!nom){showAlert('eqf-al','Nombre requerido','err');return;}
var eid=document.getElementById('eq-eid').value;
if(!eid&&S.equipos.length>=16){showAlert('eqf-al','Maximo 16 equipos','err');return;}
var furl=document.getElementById('eq-foto').value.trim();
var fprev=document.getElementById('eq-fpimg').src;
var foto=furl||(document.getElementById('eq-ffile').files[0]?fprev:'');
var eq={nombre:nom,grupo:document.getElementById('eq-gru').value,capitan:document.getElementById('eq-cap').value.trim(),desc:document.getElementById('eq-desc').value.trim(),foto:foto||null};
if(eid){for(var i=0;iSin equipos';return;}
var html='';
for(var i=0;i
'+(e.foto?'':e.nombre.charAt(0))+'
'+e.nombre+'
Grupo '+e.grupo+'
';}
c.innerHTML=html;
}
/* JUGADORES ADMIN */
var STAT_LBL={Portero:['REF','POS','SAQ','COR','MAN','FIS'],Defensa:['DEF','PAS','FIS','RIT','INT','COR'],Lateral:['RIT','PAS','DEF','CRU','FIS','INT'],Mediocampo:['PAS','REG','TIR','RIT','DEF','FIS'],Delantero:['RIT','TIR','PAS','REG','DEF','FIS'],dflt:['RIT','TIR','PAS','REG','DEF','FIS']};
function adaptStats(){var pos=document.getElementById('jug-pos').value;var labs=STAT_LBL[pos]||STAT_LBL.dflt;for(var i=0;iSin jugadores';return;}
var html='';
for(var i=0;i
';}
c.innerHTML=html;
}
/* PARTIDOS ADMIN */
function addPartido(){
S=gs();var loc=document.getElementById('p-loc').value;var vis=document.getElementById('p-vis').value;
if(!loc||!vis||loc===vis){showAlert('gadm-al','Selecciona equipos distintos','err');return;}
S.partidos.push({id:Date.now(),local:loc,visita:vis,fase:document.getElementById('p-fas').value,hora:document.getElementById('p-hor').value,est:'pend',gl:null,gv:null});
ss(S);renderAdmParts();showAlert('gadm-al','Partido agregado','ok');
}
function updatePartido(id){
S=gs();var idx=-1;for(var i=0;iSin partidos';return;}
var html='';
for(var i=0;i
'+p.local+' vs '+p.visita+'
'+p.fase+' | '+(p.hora||'--:--')+'
';
html+='
-
';
html+='';
html+='';
}
c.innerHTML=html;
}
/* GOLES ADMIN */
function addGol(){
S=gs();var jug=document.getElementById('gol-jug').value.trim();var eq=document.getElementById('gol-eq').value;
if(!jug||!eq){showAlert('gadm-al','Completa jugador y equipo','err');return;}
var idx=-1;for(var i=0;i=0)S.goleadores[idx].goles++;else S.goleadores.push({jugador:jug,equipo:eq,goles:1});
ss(S);renderAdmGols();showAlert('gadm-al','+1 gol para '+jug,'ok');document.getElementById('gol-jug').value='';
}
function addGolD(jug,eq){
S=gs();for(var i=0;iSin goles';return;}
var html='';
for(var i=0;i
'+g.jugador+'
'+g.equipo+'
'+g.goles+'
';}
c.innerHTML=html;
}
/* CONFIG */
function guardarCfg(){
S=gs();
var wa=document.getElementById('cfg-wa').value;if(wa)S.cfg.wa=wa;
var nom=document.getElementById('cfg-nom').value;if(nom)S.cfg.nom=nom;
var pre=document.getElementById('cfg-pre').value;if(pre)S.cfg.pre=pre;
var pw=document.getElementById('cfg-pw').value;if(pw)S.pw=pw;
ss(S);showAlert('gadm-al','Configuracion guardada','ok');updateWa();
}
function resetTodo(){if(!confirm('BORRAR TODOS LOS DATOS?'))return;if(!confirm('Confirma: se borrara todo'))return;localStorage.removeItem('kopa26');location.reload();}
function fillSelects(){
S=gs();
var opts='';for(var i=0;i'+S.equipos[i].nombre+'';}
var def=opts||'';
var ids=['ev-loc','ev-vis','p-loc','p-vis','gol-eq','jug-eq'];
for(var i=0;iTodos'+opts;
}
function showAlert(id,msg,type){var el=document.getElementById(id);if(!el)return;el.innerHTML='