/* ===== Línea gráfica LigaEcuabet ===== */
:root{
  --bg:#061228; --bg-deep:#040C1C; --card:#111A39; --card-2:#0C1530; --line:#2A3352;
  --lime:#D5FC2E; --green:#00D09A; --red:#FD4D5D;
  --ink:#FFFFFF; --muted:#AEB7CC; --ink-dark:#061228;
  --display:"Fraunces", Georgia, "Times New Roman", serif;
  --font:"Archivo", "Helvetica Neue", Arial, sans-serif;
  color-scheme:dark;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]){ --bg:#061228; } }
:root[data-theme="dark"]{ --bg:#061228; }
html{scroll-padding-top:env(safe-area-inset-top,0px);background:var(--bg)}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--lime)}
:focus-visible{outline:3px solid var(--lime);outline-offset:2px}
.wrap{max-width:640px;margin:0 auto;padding:0 20px}
[hidden]{display:none !important}

/* Barra de prototipo */
.demo{background:var(--card);color:var(--muted);border-bottom:1px solid var(--line);font-size:.8125rem;padding:8px 16px;display:flex;flex-wrap:wrap;gap:6px 16px;justify-content:center;align-items:center}
.demo-group{display:inline-flex;align-items:center;gap:4px}
.demo button{font:600 .75rem var(--font);border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:999px;padding:3px 9px;cursor:pointer}
.demo button[aria-pressed="true"]{background:var(--lime);border-color:var(--lime);color:var(--ink-dark)}

/* Franjas diagonales de marca */
.stripes{position:relative;overflow:hidden}
.stripes::before,.stripes::after{content:"";position:absolute;pointer-events:none;width:220px;height:70px;
  background:repeating-linear-gradient(-60deg,var(--lime) 0 3px,transparent 3px 11px);opacity:.9;animation:stripesIn .9s .2s ease-out both}
.stripes::before{top:0;right:-20px;-webkit-mask-image:linear-gradient(to left,#000 30%,transparent);mask-image:linear-gradient(to left,#000 30%,transparent)}
.stripes::after{bottom:0;left:-20px;-webkit-mask-image:linear-gradient(to right,#000 30%,transparent);mask-image:linear-gradient(to right,#000 30%,transparent)}
@keyframes stripesIn{from{opacity:0;transform:translateX(24px)}to{opacity:.9;transform:none}}
@media (prefers-reduced-motion:reduce){.stripes::before,.stripes::after{animation:none}}

/* Cabecera: logo en tarjeta blanca (el logo es azul y necesita fondo claro) */
.top{background:var(--bg);text-align:center;padding:36px 20px 8px}
.top h1{margin:0;line-height:0;display:inline-block;background:#FFFFFF;border-radius:20px;padding:18px 26px;box-shadow:0 0 0 1px rgba(255,255,255,.06),0 18px 40px rgba(0,0,0,.35)}
.logo-v{width:min(56vw,230px);height:auto}
.logo-h{display:none;width:440px;max-width:100%;height:auto}
@media (min-width:700px){.logo-v{display:none}.logo-h{display:inline-block}.top{padding-top:48px}}
.band-wrap{background:var(--bg)}
.band{padding:28px 0 44px}
.eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--lime);margin:0 0 14px}
.band .vs{font-family:var(--display);font-weight:900;font-size:clamp(1.9rem,9vw,3.6rem);line-height:.95;letter-spacing:-.01em;margin:0 0 14px;text-transform:uppercase}
.band .vs .team{display:flex;align-items:center;gap:.3em}
.band .vs .crest{width:1.15em;height:1.15em;object-fit:contain;flex:none;filter:drop-shadow(0 4px 10px rgba(0,0,0,.45))}
.band .vs .vs-sep{display:block;font-family:var(--font);font-weight:700;font-size:.32em;letter-spacing:.3em;color:var(--lime);margin:10px 0;padding-left:4.53em}
.teams .tab-crest{width:22px;height:22px;object-fit:contain;vertical-align:middle;margin:-3px 8px 0 0}
.band .when{color:var(--muted);font-size:.9375rem;margin:0 0 16px}
.band .status{display:inline-block;font-weight:700;font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;border-radius:999px;padding:6px 14px;margin:0 0 20px;border:1.5px solid var(--lime);color:var(--lime)}
.band .status.s-abierta{background:var(--green);border-color:var(--green);color:var(--ink-dark)}
.band .status.s-cerrada{background:var(--red);border-color:var(--red);color:#fff}
.band p.lead{font-size:1.0625rem;max-width:34ch;margin:0 0 24px;color:#DCE2EE}

/* Botones */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;padding:14px 26px;font:700 1rem/1.2 var(--font);cursor:pointer;text-decoration:none}
.btn-light,.btn-primary{background:var(--lime);color:var(--ink-dark)}
.btn-light:hover,.btn-primary:hover{background:#E4FF6A}
.btn-primary{width:100%}
.btn-primary:disabled{opacity:.5;cursor:not-allowed}
.btn-wa{background:var(--green);color:var(--ink-dark);width:100%;margin-bottom:10px}
.btn-ghost{background:transparent;border:1.5px solid var(--line);color:var(--ink);width:100%}

/* Pasos */
.step{padding:28px 0 8px;border-top:1px solid var(--line)}
.step-head{display:flex;gap:16px;align-items:center;margin-bottom:16px}
.step-num{font-family:var(--display);font-weight:900;font-size:3rem;line-height:1;color:var(--lime)}
#paso-3 .step-num{color:var(--green)}
.step h2{font-family:var(--display);font-weight:800;font-size:1.5rem;line-height:1.15;margin:0}
.step .hint{color:var(--muted);margin:-6px 0 16px;font-size:.9375rem}
.locked{opacity:.4;pointer-events:none}

.teams{display:grid;grid-template-columns:1fr 1fr;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:4px;margin-bottom:12px}
.teams button{border:0;background:transparent;color:var(--ink);font:700 .9375rem var(--font);padding:10px;border-radius:999px;cursor:pointer}
.teams button[aria-selected="true"]{background:var(--lime);color:var(--ink-dark)}
.players{list-style:none;margin:0;padding:0;background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.group-label{padding:10px 16px 8px;font-size:.6875rem;font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:var(--lime);background:var(--card-2)}
.player{display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:10px;width:100%;padding:12px 16px;border:0;border-top:1px solid var(--line);background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.player .dorsal{font-family:var(--display);font-weight:900;font-size:1.625rem;color:var(--muted);text-align:center}
.player .tick{width:24px;height:24px;border-radius:50%;border:2px solid var(--line)}
.player[aria-checked="true"]{background:rgba(213,252,46,.08);box-shadow:inset 4px 0 0 var(--lime)}
.player[aria-checked="true"] .dorsal{color:var(--lime)}
.player[aria-checked="true"] .tick{border-color:var(--lime);background:var(--lime) url("../img/icon-check.svg") center/16px no-repeat}

/* Formulario */
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px}
.choice{font-size:.9375rem;color:var(--muted);margin:0 0 16px}
.choice b{color:var(--lime)}
.field{margin-bottom:14px}
.field label,.field-label{display:block;font-weight:600;font-size:.875rem;margin:0 0 6px;color:var(--ink)}
.field input,.field select{width:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);font:inherit}
.field select{appearance:none;-webkit-appearance:none;background-image:url("../img/icon-select.svg");background-repeat:no-repeat;background-position:right 12px center;background-size:18px;padding-right:40px}
.field select option{background:var(--card);color:var(--ink)}
.field input::placeholder{color:#6E7893}
.field input:focus,.field select:focus{border-color:var(--lime);outline:none;box-shadow:0 0 0 3px rgba(213,252,46,.22)}
.field input[aria-invalid="true"],.field select[aria-invalid="true"]{border-color:var(--red)}
.err{color:var(--red);font-size:.8125rem;margin-top:4px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:420px){.row2{grid-template-columns:1fr}}
.check{display:grid;grid-template-columns:22px 1fr;gap:10px;align-items:start;margin:14px 0;font-size:.9375rem}
.check input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--lime)}
.tag{font-size:.6875rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--lime)}
.legal-note{font-size:.8125rem;color:var(--muted);margin:14px 0 18px}
.captcha{border:1px dashed var(--line);border-radius:10px;padding:10px;font-size:.8125rem;color:var(--muted);margin-bottom:16px;text-align:center}
.done h3{font-family:var(--display);font-weight:900;font-size:1.75rem;margin:0 0 8px;color:var(--lime)}
.done p{margin:0 0 18px;color:var(--muted)}
.done b{color:var(--ink)}

/* Premio: barra lima como la del flyer */
.prize{margin:40px 0 0;background:var(--lime);color:var(--ink-dark);border-radius:16px;padding:20px 22px}
.prize h2{font-family:var(--display);font-weight:900;font-size:1.375rem;margin:0 0 4px}
.prize p{margin:0;color:var(--ink-dark)}
.prize a{color:var(--ink-dark) !important;font-weight:700}

footer{padding:32px 0 48px;font-size:.8125rem;color:var(--muted)}
footer nav{display:flex;flex-wrap:wrap;gap:8px 18px;margin-bottom:10px}

/* Aviso inicial */
.overlay{position:fixed;inset:0;background:rgba(2,6,16,.78);display:flex;align-items:flex-end;justify-content:center;z-index:50;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}
@media (min-width:640px){.overlay{align-items:center}}
.modal{background:var(--card);color:var(--ink);border:1px solid var(--line);border-top:4px solid var(--lime);border-radius:18px;max-width:520px;width:100%;max-height:85vh;overflow:auto;padding:24px}
.modal h2{font-family:var(--display);font-weight:800;font-size:1.375rem;margin:0 0 12px}
.modal p{font-size:.9375rem;margin:0 0 20px;color:#DCE2EE}

/* Páginas legales */
.privacy{padding:24px 0 56px}
.privacy h1{font-family:var(--display);font-weight:900;font-size:2rem;line-height:1.05;margin:18px 0 14px}
.back{font-weight:700;text-decoration:none}
.legal .sub{color:var(--lime);font-size:.75rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;margin:0 0 24px}
.legal h2{font-family:var(--display);font-weight:800;font-size:1.25rem;line-height:1.25;margin:34px 0 10px}
.legal h3{font-weight:700;font-size:.8125rem;letter-spacing:.16em;text-transform:uppercase;margin:24px 0 8px;color:var(--lime)}
.legal h4{font-weight:700;font-size:.9375rem;margin:20px 0 6px}
.legal p,.legal li{max-width:68ch;font-size:.9375rem;color:#DCE2EE}
.legal ul,.legal ol{padding-left:22px}
.legal li{margin-bottom:6px}
.legal mark{background:var(--lime);color:var(--ink-dark);padding:0 4px;border-radius:3px;font-weight:600}
.tw{overflow-x:auto;margin:12px 0 18px;border:1px solid var(--line);border-radius:12px}
.tw table{border-collapse:collapse;width:100%;font-size:.875rem;background:var(--card)}
.tw th,.tw td{overflow-wrap:anywhere;text-align:left;vertical-align:top;padding:9px 12px;border-bottom:1px solid var(--line);color:#DCE2EE}
.tw th:first-child,.tw td:first-child{width:34%;min-width:7.5em;overflow-wrap:normal;hyphens:auto}
.tw tr:last-child td{border-bottom:0}
.tw th{background:var(--card-2);font-weight:700;color:var(--ink)}
.legal .updated{color:var(--muted);margin-top:28px}

/* Página no disponible */
.closed-msg{padding:32px 20px 56px;text-align:center}
.closed-msg h1{font-family:var(--display);font-weight:900;font-size:1.875rem;line-height:1.1;margin:0 0 12px}
.closed-msg p{color:var(--muted);max-width:40ch;margin:0 auto 20px}
.closed-links{display:flex;flex-wrap:wrap;gap:8px 18px;justify-content:center;font-size:.875rem}
.top.stripes::after{display:none}
.top > img{background:#FFFFFF;border-radius:20px;padding:16px 22px}
footer.stripes{position:relative;overflow:hidden;padding-bottom:84px}
footer.stripes::before{display:none}
footer.stripes::after{left:-20px;bottom:0}

/* Flujo fijo de tres pasos */
html,body{height:100%;overflow:hidden}
.app{height:100dvh;display:grid;grid-template-rows:auto 1fr;background:var(--bg);overflow:hidden}
.app-top{padding:14px 16px 12px;background:var(--bg);border-bottom:1px solid var(--line);display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"brand match" "steps steps";gap:12px 16px;align-items:center}
.brand-card{grid-area:brand;background:#fff;border-radius:14px;padding:10px 14px;line-height:0;box-shadow:0 12px 28px rgba(0,0,0,.28);z-index:1}
.brand-card .main-logo{display:block;width:291px;max-width:32vw;height:auto}
.match-summary{grid-area:match;min-width:0;z-index:1}
.match-summary .eyebrow{margin:0 0 4px;font-size:.625rem;letter-spacing:.16em}
.match-summary .vs{margin:0 0 4px;font-size:clamp(1.1rem,4.5vw,2rem);line-height:1}
.match-summary .vs.compact{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.match-summary .vs .team{display:inline-flex;align-items:center;gap:6px}
.match-summary .vs .crest{width:1.15em;height:1.15em}
.match-summary .vs .vs-sep{display:inline;font-family:var(--font);font-size:.42em;letter-spacing:.18em;color:var(--lime);margin:0;padding:0}
.match-summary .when{margin:0;color:var(--muted);font-size:.78rem}
.match-summary .status{margin:6px 0 0;font-size:.65rem;padding:4px 10px}
.flow-steps{grid-area:steps;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.flow-step{min-width:0;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--muted);height:38px;display:flex;align-items:center;justify-content:center;gap:7px;font:700 .78rem var(--font)}
.flow-step span{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--card-2);color:var(--muted);font-size:.75rem}
.flow-step b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.flow-step.is-active{background:var(--lime);border-color:var(--lime);color:var(--ink-dark)}
.flow-step.is-active span{background:var(--ink-dark);color:var(--lime)}
.flow-step.is-complete{border-color:rgba(213,252,46,.65);color:var(--ink)}
.flow-step.is-complete span{background:var(--lime);color:var(--ink-dark)}
.flow-step:disabled{cursor:default}
.flow-shell{min-height:0;padding:14px 16px 16px;display:grid;perspective:1400px}
.flow-panel{min-height:0;display:none;grid-template-rows:auto minmax(0,1fr) auto;gap:12px;max-width:760px;width:100%;height:100%;margin:0 auto;transform-style:preserve-3d;backface-visibility:hidden;transform-origin:center}
.flow-panel.is-active{display:grid}
.flow-panel.is-flip-out{animation:panelFlipOut .28s ease-in forwards}
.flow-panel.is-flip-in{animation:panelFlipIn .36s ease-out both}
@keyframes panelFlipOut{
  from{opacity:1;transform:rotateY(0deg) scale(1)}
  to{opacity:0;transform:rotateY(-92deg) scale(.98)}
}
@keyframes panelFlipIn{
  from{opacity:0;transform:rotateY(92deg) scale(.98)}
  to{opacity:1;transform:rotateY(0deg) scale(1)}
}
@media (prefers-reduced-motion:reduce){
  .flow-panel.is-flip-out,.flow-panel.is-flip-in{animation:none}
}
.panel-head{display:flex;align-items:center;gap:14px;min-height:0}
.panel-head h1{font-family:var(--display);font-size:clamp(1.45rem,6vw,2.35rem);line-height:1;margin:0}
.panel-head p{margin:4px 0 0;color:var(--muted);font-size:.92rem}
.panel-body{min-height:0;overflow:auto;-webkit-overflow-scrolling:touch}
.panel-actions{display:grid;gap:8px}
.flow-panel .step-num{font-size:2.4rem}
.flow-panel .teams{margin-bottom:10px}
.flow-panel .players{max-height:none;height:100%;overflow:auto}
.flow-panel .card{min-height:0;overflow:auto}
.flow-panel .field{margin-bottom:10px}
.flow-panel .field input,.flow-panel .field select{padding:10px 12px}
.flow-panel .check{margin:10px 0}
.flow-panel .legal-note{margin:10px 0 12px}
.choice{margin:4px 0 0}
.locked{opacity:1;pointer-events:auto}
.done-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px;min-height:0;overflow:auto;display:grid;align-content:start;gap:16px}
.done-card h2{font-family:var(--display);font-size:1.5rem;line-height:1;margin:0;color:var(--lime)}
.prize-list{display:grid;gap:10px;list-style:none;margin:0;padding:0}
.prize-list li{border:1px solid var(--line);border-radius:12px;background:var(--card-2);padding:14px}
.prize-list b{display:block;color:var(--ink);font-size:1rem}
.prize-list span{display:block;color:var(--muted);font-size:.9rem;margin-top:3px}
.final-links{display:flex;flex-wrap:wrap;gap:10px 18px;font-size:.875rem}
#done{display:none}

body.view-scroll{overflow:auto}
.privacy{height:100dvh;overflow:auto}
#view-closed{min-height:100dvh;overflow:auto;background:var(--bg)}

@media (min-width:720px){
  .app-top{grid-template-columns:auto minmax(0,1fr) minmax(290px,360px);grid-template-areas:"brand match steps";padding:16px 22px}
  .brand-card .main-logo{width:291px}
  .flow-steps{align-self:center}
  .flow-shell{padding:20px 22px 24px}
  .flow-panel{gap:16px}
}
@media (max-width:420px){
  .app-top{padding:10px 10px 8px;gap:8px}
  .brand-card{padding:8px 10px}
  .flow-shell{padding:10px}
  .flow-step{height:34px;font-size:.68rem;gap:5px}
  .flow-step span{width:20px;height:20px}
  .match-summary .vs{font-size:1rem}
  .match-summary .when{display:none}
}

/* Look inspirado en la referencia visual ProGillette */
:root{
  --bg:#07142A;
  --bg-deep:#030D20;
  --card:rgba(24, 73, 151, .72);
  --card-2:#07142A;
  --line:#2E3F71;
  --blue:#1296E3;
  --blue-2:#008AD8;
  --lime:#CFFF2B;
  --muted:#A8B2C8;
}
body{
  background:var(--bg-deep) url("../img/fondo-progillette-azul.webp") center center / cover no-repeat fixed;
}
.app{
  position:relative;
  height:100dvh;
  grid-template-rows:auto minmax(0,1fr);
  background:transparent;
  isolation:isolate;
}
.app::before,.app::after{
  content:"";
  position:absolute;
  pointer-events:none;
  z-index:-1;
  width:440px;
  height:260px;
  border:0;
  background:repeating-linear-gradient(72deg, var(--blue) 0 20px, transparent 20px 44px);
  transform:rotate(-9deg) skewY(-7deg);
  transform-origin:center;
}
.app::before{right:-175px;top:-72px}
.app::after{left:-130px;bottom:-58px}
.app-top{
  max-width:1040px;
  width:100%;
  margin:0 auto;
  padding:54px 0 0;
  border:0;
  background:transparent;
  grid-template-columns:1fr 1fr;
  grid-template-areas:"brand sponsor" "steps steps";
  gap:54px 20px;
}
.app-top.stripes::before,.app-top.stripes::after{display:none}
.brand-card{
  background:transparent;
  box-shadow:none;
  padding:0;
  border-radius:0;
  justify-self:start;
}
.brand-card .main-logo{
  display:block;
  width:291px;
  max-width:32vw;
  height:auto;
}
.sponsor-lockup{
  grid-area:sponsor;
  justify-self:end;
  align-self:center;
  padding-right:36px;
}
.sponsor-logo{
  display:block;
  width:126px;
  max-width:26vw;
  height:auto;
}
.sponsor-lockup .status{
  display:none;
}
.flow-steps{
  background:var(--card);
  border-radius:28px;
  padding:32px 34px;
  gap:18px;
  box-shadow:none;
}
.flow-step{
  position:relative;
  height:178px;
  border:0;
  border-radius:0;
  background:var(--bg-deep);
  color:var(--muted);
  flex-direction:column;
  gap:22px;
  font-size:1.05rem;
  line-height:1.25;
  padding:42px 24px 24px;
  transition:background-color .24s ease,color .24s ease;
}
.flow-step span{
  position:absolute;
  top:-29px;
  left:50%;
  transform:translateX(-50%);
  width:72px;
  height:72px;
  background:var(--blue);
  color:#00142E;
  font-family:var(--display);
  font-size:3rem;
  font-weight:900;
  transition:background-color .24s ease,color .24s ease;
}
.flow-step b{
  max-width:190px;
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
}
.flow-step.is-active{
  background:var(--blue);
  color:#00142E;
}
.flow-step.is-active span{
  background:var(--bg-deep);
  color:var(--blue);
}
.flow-step.is-complete{
  background:var(--bg-deep);
  color:var(--muted);
}
.flow-step.is-complete span{
  background:var(--blue);
  color:#00142E;
}
.flow-shell{
  max-width:1040px;
  width:100%;
  margin:0 auto;
  padding:40px 0 44px;
}
.flow-panel{
  max-width:100%;
  gap:24px;
}
.panel-head{
  justify-content:center;
  text-align:center;
}
.panel-head .step-num{display:none}
.panel-head h1{
  color:var(--blue);
  font-size:2.25rem;
  letter-spacing:0;
  text-transform:none;
}
.panel-head p{color:var(--muted)}
.match-card{
  background:var(--card);
  border-radius:28px;
  padding:30px 28px 38px;
  overflow:hidden;
  display:grid;
  grid-template-rows:auto auto minmax(0,1fr);
  gap:20px;
}
.match-strip{
  height:106px;
  border-radius:999px;
  background:var(--bg-deep);
  width:100%;
  margin:0 auto;
  display:grid;
  grid-template-columns:128px minmax(150px,1fr) 124px minmax(220px,1fr) 128px;
  align-items:center;
  justify-items:center;
  color:#fff;
  font-size:1.75rem;
  position:relative;
  overflow:visible;
}
.match-strip span{
  display:flex;
  align-items:center;
  justify-content:center;
  height:100%;
  line-height:1;
  padding-top:2px;
}
.match-strip b{
  color:var(--blue);
  font-family:var(--display);
  font-size:3.55rem;
  line-height:.8;
  display:flex;
  align-items:center;
  justify-content:center;
  height:100%;
  padding-bottom:2px;
}
.match-crest{
  width:104px;
  height:104px;
  object-fit:contain;
  background:#fff;
  border-radius:50%;
  padding:19px;
  position:relative;
  z-index:1;
}
#crest-local{
  width:104px;
  height:104px;
  max-width:none;
  padding:19px;
  object-fit:contain;
  border-radius:50%;
  background:#fff;
  object-position:center;
}
.match-date{
  color:#fff;
  margin:0;
  text-align:center;
  font-size:1.03rem;
}
.roster-grid{
  min-height:0;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  border:2px solid #061026;
  background:#061026;
}
.roster-list{
  border:0;
  border-radius:0;
  height:100%;
  max-height:430px;
  overflow:auto;
  background:#101A3A;
}
.roster-list::-webkit-scrollbar,.panel-body::-webkit-scrollbar{width:6px}
.roster-list::-webkit-scrollbar-thumb,.panel-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.35);border-radius:999px}
.group-label{
  background:#101A3A;
  color:var(--lime);
  font-size:.55rem;
  letter-spacing:.3em;
  padding:10px 14px 6px;
}
.player{
  grid-template-columns:40px 1fr 26px;
  min-height:39px;
  padding:8px 12px;
  gap:10px;
  background:#121B3E;
  border-top:1px solid rgba(255,255,255,.08);
  font-size:1rem;
  font-weight:700;
}
.player .dorsal{
  font-size:1.35rem;
  color:#A8B2C8;
}
.player .tick{
  width:17px;
  height:17px;
  border-color:#2B3766;
}
.player[aria-checked="true"]{
  background:#26303A;
  box-shadow:inset 4px 0 0 var(--lime);
}
.player[aria-checked="true"] .dorsal{color:var(--lime)}
.player[aria-checked="true"] .tick{background-size:12px}
.panel-actions{
  justify-items:center;
}
.btn-primary,.btn-light{
  background:var(--blue);
  color:#061228;
  border-radius:999px;
  width:min(350px,100%);
  font-size:1.35rem;
  font-weight:500;
  padding:18px 32px;
}
.btn-primary:hover,.btn-light:hover{background:#27A8F4}
#form-card{
  width:100%;
  margin:0;
}
#paso-3 .card,.done-card{
  background:var(--card);
  border:0;
  border-radius:28px;
  padding:34px;
}
.done-card{
  width:100%;
  background:#05235D url("../img/fondo-premios-estadio.webp") center / cover no-repeat;
  margin:0 auto;
  grid-template-rows:minmax(0,1fr) auto;
  align-content:stretch;
}
.done-card .final-links{
  grid-row:2;
  align-self:end;
  padding-top:24px;
}
.participation-art{
  min-height:0;
  display:grid;
  place-items:center;
}
.participation-art img{
  display:block;
  width:80%;
  height:80%;
  min-height:0;
  object-fit:contain;
}
#paso-final.is-active .participation-art img{
  animation:participationBounce .8s .28s both;
  transform-origin:center;
}
@keyframes participationBounce{
  0%{opacity:0;transform:scale(.65)}
  55%{opacity:1;transform:scale(1.06)}
  75%{transform:scale(.97)}
  90%{transform:scale(1.015)}
  100%{opacity:1;transform:scale(1)}
}
@media (prefers-reduced-motion:reduce){
  #paso-final.is-active .participation-art img{animation:none}
}
.field input,.field select{
  background:var(--bg-deep);
  border-color:#263A70;
}
.done-card h2{color:var(--blue)}
.prize-list li{
  background:var(--bg-deep);
  border:0;
  border-left:4px solid var(--blue);
}
.overlay{background:rgba(3,13,32,.86)}
.modal{
  background:var(--card);
  max-width:760px;
  padding:clamp(24px,5vw,48px);
  border:0;
  border-top:6px solid var(--blue);
  border-radius:24px;
}
#share-wa{
  width:min(350px,100%);
  margin:0;
  border-radius:999px;
  font-size:1.35rem;
  font-weight:500;
  padding:18px 32px;
}
#notice-ok{
  display:block;
  margin:28px auto 0;
}
#notice .modal{
  background:#184997;
  max-width:1040px;
  border-top:0;
}

@media (max-width:900px){
  html,body{overflow:auto}
  .app{height:auto;min-height:100dvh;grid-template-rows:auto 1fr;overflow:visible}
  .app-top{padding:28px 16px 0;grid-template-columns:1fr;grid-template-areas:"brand" "sponsor" "steps";gap:20px}
  .brand-card,.sponsor-lockup{justify-self:center;text-align:center;padding:0}
  .sponsor-logo{width:106px;max-width:60vw}
  .brand-card .main-logo{width:210px;max-width:70vw}
  .flow-steps{padding:28px 18px 18px;gap:10px}
  .flow-step{height:130px;font-size:.82rem;padding:36px 12px 16px}
  .flow-step span{width:56px;height:56px;font-size:2.3rem;top:-24px}
  .flow-shell{padding:28px 16px 34px}
  .match-card{padding:24px 14px 28px;border-radius:24px}
  .match-strip{grid-template-columns:66px minmax(72px,1fr) 48px minmax(96px,1fr) 66px;height:66px;font-size:.88rem}
  .match-strip b{font-size:1.65rem}
  .match-crest{width:64px;height:64px;padding:12px}
  #crest-local{width:64px;height:64px;padding:12px}
  .roster-grid{grid-template-columns:1fr}
  .roster-list{max-height:260px}
  .panel-head h1{font-size:1.8rem}
}

/* ===== Plugin: estado de la votación, plantilla y ganador ===== */
.vote-state{display:inline-block;margin:10px auto 0;font-weight:700;font-size:.8125rem;letter-spacing:.12em;text-transform:uppercase;border-radius:999px;padding:6px 14px;border:1.5px solid var(--lime);color:var(--lime)}
.vote-state.s-abierta{background:var(--green);border-color:var(--green);color:var(--ink-dark)}
.vote-state.s-cerrada{background:var(--red);border-color:var(--red);color:#fff}
.pick-hint{margin:-8px 0 0;text-align:center;color:var(--muted);font-size:.9rem}
.roster-empty{padding:18px 14px;color:var(--muted);font-size:.9rem}
.match-strip img[hidden]{display:block !important;visibility:hidden}
body.is-cerrada .flow-steps{display:none}
.result-card{background:#05235D url("../img/fondo-premios-estadio.webp") center / cover no-repeat;border-radius:28px;padding:34px 24px;display:grid;align-content:center;justify-items:center;gap:14px;text-align:center;min-height:0;overflow:auto}
.result-card .eyebrow{color:var(--lime);margin:0}
.winner{display:flex;align-items:baseline;justify-content:center;gap:14px;margin:0;font-family:var(--display);font-weight:900;line-height:1;text-transform:uppercase}
.winner-num{font-size:clamp(3rem,12vw,5.5rem);color:var(--blue)}
.winner-name{font-size:clamp(2rem,8vw,3.6rem);color:#fff}
.winner-club{display:flex;align-items:center;gap:10px;color:#fff;font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.875rem;margin:0}
.winner-club img{width:44px;height:44px;object-fit:contain;background:#fff;border-radius:50%;padding:6px}
.result-card .lead{max-width:46ch;color:#DCE2EE;margin:8px 0 0}
#paso-resultado.is-active .winner{animation:participationBounce .8s .2s both}
@media (prefers-reduced-motion:reduce){#paso-resultado.is-active .winner{animation:none}}

/* Celulares: el diseño original se desbordaba a la derecha (franja decorativa y anchos mínimos de la franja del partido) */
@media (max-width:900px){
  html,body{overflow:visible;overflow-x:clip}
  .app{overflow-x:clip}
  .flow-shell > *,.flow-panel > *,.match-card > *{min-width:0}
  .match-strip{grid-template-columns:56px minmax(0,1fr) 40px minmax(0,1fr) 56px;height:60px}
  .match-strip span{font-size:.85rem;text-align:center;padding:0 4px;overflow-wrap:anywhere}
  .match-strip b{font-size:1.4rem}
  .match-crest,#crest-local{width:56px;height:56px;padding:9px}
}

/* =====================================================================
   Layout del plugin: el diseño original fijaba todo a la altura de la pantalla
   sin scroll, y en laptops (≈650–900 px de alto) aplastaba la tarjeta del partido.
   Aquí la página fluye con scroll normal y cada bloque tiene una altura útil.
   ===================================================================== */
/* overflow-x:clip (no hidden): recorta la franja decorativa sin crear un contenedor de scroll que anule el botón fijo */
html,body{height:auto;min-height:100%;overflow:visible;overflow-x:clip}
/* El botón fijo de abajo nunca tapa el campo que se está llenando */
html{scroll-padding-bottom:110px}
.app{height:auto;min-height:100dvh;grid-template-rows:auto auto;overflow:visible}
.flow-panel{height:auto;grid-template-rows:auto auto auto}
.panel-body{overflow:visible}

/* Cabecera y pasos más compactos */
.app-top{padding-top:32px;gap:28px 20px}
.brand-card .main-logo{width:230px}
.flow-steps{padding:30px 24px 18px;gap:14px}
.flow-step{height:96px;padding:30px 16px 12px;gap:0;font-size:.95rem}
.flow-step span{width:52px;height:52px;top:-24px;font-size:2.2rem}
.flow-shell{padding:28px 0 48px}
.panel-head h1{font-size:clamp(1.6rem,3vw,2.25rem)}

/* Tarjeta del partido y listas con altura según la pantalla y scroll propio */
.match-card{display:grid;grid-template-rows:none;gap:16px}
.roster-grid{height:auto}
.roster-list{height:clamp(300px,52vh,520px);max-height:none}

/* Botón principal siempre visible al bajar por la página */
.panel-actions{position:sticky;bottom:16px;z-index:20}
.panel-actions .btn{box-shadow:0 10px 30px rgba(3,13,32,.55)}
.btn-primary:disabled{opacity:1;background:#1D3B6E;color:rgba(255,255,255,.6)}

/* Paso 3 y ganador */
.done-card{min-height:400px}
.participation-art img{width:auto;height:auto;max-width:80%;max-height:340px}
.result-card{min-height:380px}
.final-links{justify-content:center}

@media (max-width:900px){
  .app-top{padding-top:24px;gap:18px}
  .brand-card .main-logo{width:190px}
  .flow-steps{padding:26px 12px 12px;gap:8px}
  .flow-step{height:92px;padding:28px 6px 8px;font-size:.74rem}
  .flow-step span{width:44px;height:44px;top:-20px;font-size:1.8rem}
  .flow-shell{padding:22px 12px 32px}
  .roster-list{height:auto;max-height:46vh}
  .panel-actions{bottom:10px}
  .done-card{min-height:320px}
  /* Las franjas decorativas compiten con el contenido centrado en pantallas pequeñas */
  .app::before{opacity:.35}
  .app::after{display:none}
}

/* Encabezado del panel: título y estado centrados como un solo bloque */
.panel-head{justify-content:center;text-align:center}
.panel-head > div{display:flex;flex-direction:column;align-items:center;gap:14px;max-width:100%}
.panel-head h1{margin:0;text-wrap:balance}
.vote-state{
  display:inline-flex;align-items:center;gap:10px;margin:0;
  padding:8px 18px 8px 14px;border-radius:999px;
  font:700 .75rem/1 var(--font);letter-spacing:.16em;text-transform:uppercase;
  background:rgba(3,13,32,.55);border:1px solid rgba(207,255,43,.55);color:var(--lime);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
}
.vote-state::before{content:"";width:9px;height:9px;border-radius:50%;background:currentColor;flex:none}
.vote-state:empty{display:none}
.vote-state.s-abierta{background:rgba(3,13,32,.55);border-color:rgba(0,208,154,.6);color:var(--green)}
.vote-state.s-abierta::before{box-shadow:0 0 0 0 rgba(0,208,154,.6);animation:votePulse 1.6s ease-out infinite}
.vote-state.s-cerrada{background:rgba(3,13,32,.55);border-color:rgba(253,77,93,.6);color:#FF8A95}
@keyframes votePulse{0%{box-shadow:0 0 0 0 rgba(0,208,154,.55)}70%{box-shadow:0 0 0 9px rgba(0,208,154,0)}100%{box-shadow:0 0 0 0 rgba(0,208,154,0)}}
@media (prefers-reduced-motion:reduce){.vote-state.s-abierta::before{animation:none}}
.vote-state{line-height:1.3;text-align:left}
@media (max-width:900px){.panel-head > div{gap:10px}.panel-head h1{font-size:1.5rem}.vote-state{font-size:.6875rem;letter-spacing:.12em;padding:7px 14px 7px 12px}}
/* El botón solo queda fijo abajo cuando se puede usar; deshabilitado vuelve a su lugar */
.panel-actions:has(> .btn:disabled){position:static}
.panel-actions:has(> .btn:disabled) .btn{box-shadow:none}

/* Escudos: concéntricos con los extremos redondeados de la franja y con margen arriba y abajo
   (en el diseño original el círculo tocaba los bordes y quedaba desplazado, por eso se veía cortado) */
.match-strip{--strip-h:106px;height:var(--strip-h);grid-template-columns:var(--strip-h) minmax(0,1fr) 124px minmax(0,1fr) var(--strip-h)}
.match-crest,#crest-local,#crest-visita{
  width:calc(var(--strip-h) - 18px);height:calc(var(--strip-h) - 18px);
  padding:calc(var(--strip-h) * .14);object-fit:contain;background:#fff;border-radius:50%;
  box-shadow:0 0 0 3px rgba(18,150,227,.55),0 6px 18px rgba(0,0,0,.35);
}
@media (max-width:900px){
  .match-strip{--strip-h:64px;grid-template-columns:var(--strip-h) minmax(0,1fr) 40px minmax(0,1fr) var(--strip-h)}
  .match-crest,#crest-local,#crest-visita{width:calc(var(--strip-h) - 12px);height:calc(var(--strip-h) - 12px);box-shadow:0 0 0 2px rgba(18,150,227,.55)}
}

/* Escudos con margen visible dentro de la franja (16 px arriba y abajo en escritorio) */
.match-strip{--strip-h:108px}
.match-crest,#crest-local,#crest-visita{
  width:calc(var(--strip-h) - 32px);height:calc(var(--strip-h) - 32px);
  padding:9px;box-shadow:0 0 0 2px rgba(18,150,227,.7);
}
@media (max-width:900px){
  .match-strip{--strip-h:66px}
  .match-crest,#crest-local,#crest-visita{width:calc(var(--strip-h) - 18px);height:calc(var(--strip-h) - 18px);padding:6px}
}

/* Confirmación del paso 3 en texto real (reemplaza la imagen concurso-06) */
.participation-msg{display:grid;justify-items:center;align-content:center;gap:14px;text-align:center;padding:12px 8px}
.participation-msg h2{margin:0;font-family:var(--display);font-weight:900;font-size:clamp(2.1rem,5.5vw,3.6rem);line-height:1.05;color:var(--blue)}
.participation-msg p{margin:0;font-style:italic;font-size:clamp(1.1rem,2.6vw,1.6rem);color:#DCE2EE;max-width:22ch}
.participation-logos{display:flex;align-items:center;gap:22px;margin-top:18px}
.participation-logos img{display:block;width:auto;height:46px;max-width:none;max-height:none}
.participation-logos span{width:1px;height:46px;background:rgba(255,255,255,.35)}
#paso-final.is-active .participation-msg{animation:participationBounce .8s .28s both;transform-origin:center}
@media (prefers-reduced-motion:reduce){#paso-final.is-active .participation-msg{animation:none}}
@media (max-width:900px){.participation-logos{gap:14px}.participation-logos img{height:34px}.participation-logos span{height:34px}}

/* ===== Listas por equipo ===== */
/* Encabezado de cada lista: escudo + nombre del equipo, fijo arriba al hacer scroll */
.roster-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;padding:10px 14px;background:#0A1430;border-bottom:1px solid rgba(255,255,255,.1);font-weight:800;font-size:.95rem;letter-spacing:.02em}
.roster-head img{width:28px;height:28px;object-fit:contain;background:#fff;border-radius:50%;padding:3px;flex:none}
.roster-list .group-label{position:sticky;top:48px;z-index:1}

/* Pestañas de equipo: solo en celular y tablet */
.team-tabs{display:none}
@media (max-width:900px){
  .team-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:999px;background:var(--bg-deep)}
  .team-tabs button{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;border:0;border-radius:999px;padding:9px 10px;background:transparent;color:var(--muted);font:700 .875rem var(--font);cursor:pointer;transition:background-color .2s,color .2s}
  .team-tabs button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .team-tabs button img{width:24px;height:24px;object-fit:contain;background:#fff;border-radius:50%;padding:2px;flex:none}
  .team-tabs button[aria-selected="true"]{background:var(--blue);color:#00142E}
  .team-tabs .tab-check{font-style:normal;display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--lime);color:#061228;font-size:.7rem;flex:none}
  /* Un equipo a la vez */
  .roster-grid[data-team="local"] #players-visita,.roster-grid[data-team="visita"] #players-local{display:none}
  .roster-list{max-height:58vh}
}
/* El nombre del jugador en el botón no debe desbordar */
#player-next{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===== Logos de cabecera equitativos =====
   ProGillette (proporción 2,6:1) y LigaEcuabet (3,6:1) se dimensionan por altura para ocupar
   la misma superficie visual; con el mismo ancho, LigaEcuabet se vería más pequeño. */
.brand-card .main-logo{width:auto;max-width:none;height:76px}
.sponsor-lockup{padding-right:0}
.sponsor-logo{width:auto;max-width:none;height:64px}
@media (max-width:900px){
  /* En celular, lado a lado con un separador, como en la pantalla de confirmación */
  .app-top{grid-template-columns:auto auto;grid-template-areas:"brand sponsor" "steps steps";justify-content:center;column-gap:0}
  .brand-card{justify-self:end;padding-right:18px;border-right:1px solid rgba(255,255,255,.35)}
  .sponsor-lockup{justify-self:start;padding-left:18px}
  .brand-card .main-logo{width:auto;max-width:none;height:50px}
  .sponsor-logo{width:auto;max-width:none;height:42px}
}
@media (max-width:360px){
  .brand-card .main-logo{height:42px}
  .sponsor-logo{height:35px}
}
/* Ajuste óptico: mismo ancho para ambos logos (LigaEcuabet tiene una tipografía más gruesa y,
   a igual superficie, se ve más grande) */
.brand-card .main-logo{height:auto;width:210px}
.sponsor-logo{height:auto;width:210px}
@media (max-width:900px){
  .brand-card .main-logo,.sponsor-logo{height:auto;width:136px}
}
@media (max-width:360px){
  .brand-card .main-logo,.sponsor-logo{height:auto;width:118px}
}
/* Celulares angostos: los nombres de equipo no se parten a mitad de palabra */
@media (max-width:380px){
  .match-strip span{font-size:.75rem;overflow-wrap:normal;word-break:normal;hyphens:auto}
}

/* Agradecimiento del paso 3 más grande y legible en celular */
#final-choice{font-size:1.05rem;color:#DCE2EE}
#final-choice b{color:var(--lime)}
@media (max-width:900px){
  #paso-final .panel-head p{font-size:1.15rem;line-height:1.45}
  .participation-msg{gap:16px;padding:20px 4px}
  .participation-msg h2{font-size:2.75rem;line-height:1.02}
  .participation-msg p{font-size:1.35rem;line-height:1.35}
  .participation-logos img{height:40px}
  .participation-logos span{height:40px}
}
@media (max-width:900px){
  /* Se ajusta al ancho del teléfono: grande, pero sin desbordar la tarjeta */
  .participation-msg h2{font-size:clamp(2rem,10.5vw,2.75rem)}
  .done-card{overflow-x:hidden}
}
@media (max-width:900px){
  #paso-3 .card,.done-card,.result-card{padding:24px 16px}
  .done-card,.participation-msg{min-width:0;max-width:100%}
}
@media (max-width:380px){
  .participation-logos{gap:12px}
  .participation-logos img{height:30px}
  .participation-logos span{height:30px}
  .panel-actions .btn,#share-wa{font-size:1.1rem;padding:16px 20px;white-space:nowrap}
}

/* Logos de la confirmación: mismo ancho para ambos y proporcionales a la pantalla (no por altura) */
.participation-logos{gap:24px;margin-top:22px}
.participation-logos img{height:auto;width:200px}
.participation-logos span{height:64px}
@media (max-width:900px){
  .participation-logos{gap:16px;margin-top:18px}
  .participation-logos img{height:auto;width:clamp(112px,38vw,170px)}
  .participation-logos span{height:52px}
}

/* Partido pospuesto */
.vote-state.s-pospuesto{border-color:rgba(255,184,77,.6);color:#FFB84D}

/* Antibots ALTCHA con la paleta de la landing */
.pg-altcha{
  display:block;margin:12px 0;
  --altcha-max-width:100%;
  --altcha-border-radius:10px;
  --altcha-color-base:#07142A;
  --altcha-color-border:#263A70;
  --altcha-color-text:#FFFFFF;
  --altcha-color-border-focus:#1296E3;
  --altcha-color-error-text:#FD4D5D;
}
