#tourney { max-width: 980px; margin-inline: auto; }

.tn-conn { margin: -.6rem 0 1.1rem; min-height: 1.2em; color: var(--muted); font-size: .82rem; }
.tn-conn button { margin-left: .5rem; padding: .15rem .7rem; font-size: .78rem; }
.tn-conn:empty { display: none; }

.tn-mode { grid-column: auto; }

.tn-sec { margin: 1.6rem 0 .8rem; color: var(--muted); font: 500 .72rem/1.4 var(--mono); letter-spacing: .14em; text-transform: uppercase; }
.tn-sec:first-child { margin-top: 0; }
.tn-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; }

.tn-card { position: relative; box-shadow: none; transition: transform .15s, border-color .15s; display: flex; flex-direction: column; align-items: stretch; gap: .6rem; width: 100%; height: 100%; padding: 1.2rem 1.3rem; text-align: left; background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); }
.tn-card:hover { border-color: var(--ink); transform: translateY(-2px); }
.tn-card-top { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; }
.tn-card-top b { font-size: 1.05rem; font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; }
.tn-flag { flex: none; color: var(--ink); font-size: .74rem; }
.tn-desc { margin: 0; color: var(--muted); font-size: .88rem; }
.tn-meta { margin: 0; color: var(--muted); font-size: .8rem; }
.tn-meta b { color: var(--text); font-weight: 500; }

.tn-chips { display: flex; flex-wrap: wrap; gap: .4rem; }
.tn-chip { padding: .1rem .6rem; border: 1px solid var(--line); border-radius: 3px; color: var(--muted); font: .68rem var(--mono); letter-spacing: .04em; }
.tn-chip[data-s="inscripcion"], .tn-chip[data-s="en_curso"] { color: var(--ink); border-color: color-mix(in srgb, var(--accent) 55%, var(--line)); }
.tn-chip[data-s="cancelado"] { color: var(--bad); border-color: color-mix(in srgb, var(--bad) 45%, var(--line)); }

.tn-empty { display: grid; justify-items: center; padding: 2.2rem 1.4rem; text-align: center; background: var(--panel); border: 1px dashed var(--line); border-radius: var(--r); }
.tn-empty .art { width: 7rem; margin-bottom: 1rem; color: var(--muted); }
.tn-empty p { margin: 0 0 .3rem; color: var(--text); }
.tn-empty small { color: var(--muted); }

.tn-alert { display: flex; align-items: center; justify-content: space-between; gap: 1.2rem; flex-wrap: wrap; margin-bottom: 1.2rem; padding: 1.2rem 1.4rem; border: 1px solid var(--accent); border-radius: var(--r); animation: tn-in .35s ease both; }
.tn-alert[hidden] { display: none; }
.tn-al-main { flex: 1 1 16rem; min-width: 0; }
.tn-al-main h3 { margin: 0 0 .2rem; color: var(--ink); font-size: 1.25rem; font-weight: 600; letter-spacing: 0; text-transform: none; }
.tn-al-main p { margin: 0; color: var(--muted); font-size: .88rem; }
.tn-al-main p b { color: var(--text); font-weight: 500; }
.tn-al-main .tn-kicker { margin-bottom: .35rem; font: 500 .68rem var(--mono); letter-spacing: .14em; text-transform: uppercase; }
.tn-al-side { display: flex; align-items: center; gap: 1rem; }
.tn-left { font: 500 1.6rem var(--mono); color: var(--text); }
@keyframes tn-in { from { opacity: 0; transform: translateY(8px); } }

.tn-head { display: flex; flex-direction: column; gap: .8rem; padding: 1.4rem 1.5rem; border: 1px solid var(--line); border-radius: var(--r); }
.tn-when { margin: 0; color: var(--muted); font-size: .85rem; }
.tn-when:empty { display: none; }
.tn-actions { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
.tn-actions:empty { display: none; }
.tn-note { margin: 0; color: var(--muted); font-size: .88rem; }
.tn-note.ok { color: var(--text); }
.tn-note.bad { color: var(--bad); }

.tn-champ { display: flex; align-items: baseline; flex-wrap: wrap; gap: .3rem .8rem; margin-top: .8rem; padding: 1rem 1.4rem; background: color-mix(in srgb, var(--accent) 10%, var(--panel)); border: 1px solid var(--accent); border-radius: var(--r); }
.tn-champ small { flex-basis: 100%; color: var(--muted); font: 500 .66rem var(--mono); letter-spacing: .14em; text-transform: uppercase; }
.tn-champ b { font-size: 1.6rem; font-weight: 600; color: var(--ink); letter-spacing: -.02em; }
.tn-champ span { color: var(--muted); }

.tn-block { margin-top: 1.4rem; }
.tn-block h3 { margin: 0 0 .7rem; }
.tn-block h3 small { margin-left: .4rem; color: var(--muted); font-weight: 400; }

.tn-bracket { display: flex; align-items: stretch; gap: 1.4rem; padding-bottom: .8rem; overflow-x: auto; }
.tn-round { display: flex; flex: 1 0 14rem; flex-direction: column; justify-content: space-around; gap: .8rem; }
.tn-round h4 { margin: 0 0 .2rem; color: var(--muted); font: 500 .66rem var(--mono); letter-spacing: .14em; text-transform: uppercase; }
.tn-m { display: flex; flex-direction: column; background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); }
.tn-m[data-s="ready"], .tn-m[data-s="live"] { border-color: var(--accent); }
.tn-m small { padding: .35rem .7rem; border-top: 1px solid var(--line); color: var(--muted); font-size: .7rem; }
.tn-p { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; padding: .5rem .7rem; cursor: pointer; }
.tn-p + .tn-p { border-top: 1px solid var(--line); }
.tn-p span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
.tn-p em { flex: none; color: var(--muted); font: 400 .78rem var(--mono); font-style: normal; }
.tn-p.none { cursor: default; }
.tn-p.none span { color: var(--muted); font-style: italic; }
.tn-p.win span { color: var(--ink); font-weight: 600; }
.tn-p.lose span { color: var(--muted); }
.tn-p.me { box-shadow: inset 3px 0 0 var(--accent); }
.tn-p.dq span { text-decoration: line-through; }

.tn-players { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .5rem; }
.tn-players li { display: flex; align-items: center; gap: .7rem; padding: .55rem .8rem; background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); cursor: pointer; }
.tn-players li:hover { border-color: var(--ink); }
.tn-players li > span:nth-child(2) { display: flex; flex-direction: column; flex: 1; min-width: 0; line-height: 1.3; }
.tn-players small { color: var(--muted); font-size: .72rem; }
.tn-players em { color: var(--muted); font-size: .72rem; font-style: normal; }
.tn-players li.eliminado, .tn-players li.descalificado { opacity: .6; }
.tn-players .none { grid-column: 1 / -1; color: var(--muted); cursor: default; }
.tn-players .none:hover { border-color: var(--line); }

@media (prefers-reduced-motion: reduce) { .tn-alert { animation: none; } }

@media (max-width: 700px) {
  .tn-grid { grid-template-columns: 1fr; }
  .tn-al-side { width: 100%; justify-content: space-between; }
  .tn-round { flex-basis: 12.5rem; }
}

/* Premios de XP del torneo */
.tn-xp { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.tn-xp li { display: flex; flex-direction: column; gap: .15rem; min-width: 7.2rem; padding: .6rem .9rem; background: var(--panel); border: 1px solid var(--line, var(--border, rgba(127,127,127,.3))); border-radius: var(--r); }
.tn-xp li small { color: var(--muted); font: 500 .62rem var(--mono); letter-spacing: .12em; text-transform: uppercase; }
.tn-xp li b { font: 600 1.1rem var(--mono); color: var(--ink); }
.tn-xp li b i { font-style: normal; font-weight: 400; font-size: .75rem; color: var(--muted); margin-left: .2rem; }
