.tournament-body {
  min-height: 100vh;
  background:
    radial-gradient(circle at 78% 8%, rgba(30,143,191,.2), transparent 32rem),
    linear-gradient(rgba(255,255,255,.018) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.018) 1px, transparent 1px),
    var(--night);
  background-size: auto, 48px 48px, 48px 48px, auto;
}
.tournament-header { background: linear-gradient(180deg, rgba(5,13,21,.98), rgba(5,13,21,.78)); }
.tournament-header [aria-current="page"] { color: var(--frost); }
.tournament-sound-toggle { position:fixed; right:18px; bottom:18px; z-index:120; display:flex; gap:8px; align-items:center; min-height:40px; padding:8px 12px; border:1px solid rgba(124,217,255,.3); border-radius:999px; background:rgba(5,18,27,.92); color:#8ca6b5; box-shadow:0 10px 35px rgba(0,0,0,.28); cursor:pointer; backdrop-filter:blur(12px); }
.tournament-sound-toggle span { display:grid; width:22px; height:22px; place-items:center; border-radius:50%; background:rgba(124,217,255,.08); color:var(--frost); font-size:.85rem; }
.tournament-sound-toggle strong { font-size:.65rem; letter-spacing:.04em; }
.tournament-sound-toggle[aria-pressed="true"] { border-color:rgba(124,217,255,.65); color:var(--frost); }
.tournament-sound-toggle[aria-pressed="true"] span { background:rgba(124,217,255,.2); box-shadow:0 0 18px rgba(124,217,255,.18); }
.tournament-sound-toggle:not([aria-pressed="true"]):not(:disabled) { animation:sound-toggle-pulse 2s ease-in-out infinite; }
.tournament-sound-toggle:hover { border-color:var(--frost); color:var(--ink); }
.tournament-page { min-height: calc(100vh - 92px); padding: 140px 0 70px; }
.tournament-loading, .tournament-offline, .tournament-error, .tournament-catalog, .tournament-hero, .registration-panel, .bracket-section, .tournament-details {
  width: min(1240px, calc(100% - 36px)); margin-inline: auto;
}
.tournament-catalog { padding: 12px 0 80px; }
.catalog-intro { max-width: 820px; margin-bottom: 40px; }
.catalog-intro h1 { margin-bottom: 22px; font-size: clamp(3.2rem,9vw,7.8rem); line-height: .91; letter-spacing: -.065em; }
.catalog-intro > p:last-child { color: var(--muted); font-size: 1.08rem; }
.tournament-catalog-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }
.catalog-card { position: relative; display: grid; min-height: 260px; align-content: space-between; gap: 30px; padding: clamp(24px,4vw,38px); overflow: hidden; border: 1px solid var(--line); border-radius: 8px; background: linear-gradient(145deg,rgba(16,72,92,.52),rgba(9,23,34,.96)); transition: transform .2s,border-color .2s; }
.catalog-card:hover { transform: translateY(-3px); border-color: rgba(124,217,255,.48); }
.catalog-card::after { content:""; position:absolute; width:180px; aspect-ratio:1; right:-70px; bottom:-90px; border:1px solid rgba(124,217,255,.12); border-radius:50%; box-shadow:inset 0 0 0 20px rgba(124,217,255,.025); }
.catalog-card-top { display:flex; flex-wrap:wrap; gap:7px; }
.catalog-pill { padding:5px 8px; border:1px solid var(--line); border-radius:20px; color:#9db5c2; font-size:.62rem; font-weight:850; text-transform:uppercase; }
.catalog-pill.open { border-color:rgba(119,210,156,.32); color:#8ce2aa; }
.catalog-pill.live { border-color:rgba(124,217,255,.4); color:var(--frost); }
.catalog-card h2 { margin:0 0 10px; font-size:clamp(1.8rem,4vw,3rem); letter-spacing:-.045em; }
.catalog-card p { max-width:540px; color:var(--muted); }
.catalog-card-footer { display:flex; justify-content:space-between; gap:15px; color:#7f99a8; font-size:.72rem; font-weight:800; }
.catalog-card-footer strong { color:var(--frost); }
.catalog-back { display:inline-flex; margin-bottom:22px; color:var(--muted); font-size:.78rem; font-weight:800; }
.catalog-back:hover { color:var(--frost); }
.tournament-loading { min-height: 60vh; display: grid; place-content: center; justify-items: center; color: var(--muted); }
.loading-rune, .offline-mark {
  display: grid; width: 82px; aspect-ratio: 1; place-items: center; border: 1px solid rgba(124,217,255,.45);
  background: rgba(124,217,255,.08); color: var(--frost); font-size: 2rem; font-weight: 950;
  box-shadow: 0 0 44px rgba(124,217,255,.12); animation: tournament-pulse 1.5s ease-in-out infinite;
}
.tournament-offline, .tournament-error { min-height: 62vh; display: grid; align-content: center; justify-items: start; max-width: 850px; }
.tournament-offline h1, .tournament-error h1 { margin: 8px 0 20px; font-size: clamp(3rem,9vw,7.5rem); line-height: .94; letter-spacing: -.06em; }
.tournament-offline > p:not(.section-kicker), .tournament-error p { max-width: 650px; color: var(--muted); font-size: 1.08rem; }
.offline-mark { margin-bottom: 30px; animation: none; }
.offline-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
.tournament-hero { display: grid; grid-template-columns: minmax(0,1fr); gap: 42px; align-items: end; padding: 38px 0 64px; }
.tournament-live-line { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; margin-bottom: 27px; color: #98b4c4; font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.live-indicator { width: 9px; aspect-ratio: 1; border-radius: 50%; background: #77d29c; box-shadow: 0 0 0 5px rgba(119,210,156,.09), 0 0 18px rgba(119,210,156,.5); }
.live-indicator.complete { background: var(--amber); box-shadow: 0 0 0 5px rgba(240,179,91,.09), 0 0 18px rgba(240,179,91,.45); }
.sync-label { margin-left: 8px; padding-left: 16px; border-left: 1px solid var(--line); color: #76909f; }
.sync-label.reconnecting { color: var(--amber); }
.tournament-hero h1 { max-width: 900px; margin: 0 0 24px; font-size: clamp(3.4rem,9vw,8rem); line-height: .89; letter-spacing: -.065em; }
.tournament-description { max-width: 760px; color: var(--muted); font-size: clamp(1rem,2vw,1.2rem); white-space: pre-line; }
.tournament-facts { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 26px; }
.tournament-facts span { padding: 8px 11px; border: 1px solid var(--line); border-radius: 5px; background: rgba(255,255,255,.035); color: #c4d5df; font-size: .75rem; font-weight: 800; }
.champion-card { display: grid; justify-items: center; padding: 28px; border: 1px solid rgba(240,179,91,.42); border-radius: 8px; background: linear-gradient(145deg,rgba(240,179,91,.12),rgba(9,23,34,.92)); text-align: center; box-shadow: 0 24px 80px rgba(0,0,0,.28); }
.champion-card.revealed { animation: champion-reveal .75s cubic-bezier(.2,.8,.2,1); }
.champion-crown { margin-bottom: 8px; color: var(--amber); font-size: 2rem; }
.champion-card small { color: var(--amber); font-size: .65rem; font-weight: 900; letter-spacing: .14em; text-transform: uppercase; }
.champion-card img { margin: 20px 0 14px; border: 2px solid rgba(240,179,91,.65); border-radius: 7px; image-rendering: pixelated; }
.champion-card strong { color: var(--ink); font-size: 1.55rem; }
.champion-card > span:last-child { color: var(--muted); font-size: .78rem; }
.tournament-winner { position:relative; display:grid; justify-items:center; overflow:hidden; padding:clamp(42px,8vw,90px) 24px; border:1px solid rgba(240,179,91,.42); border-radius:8px; background:radial-gradient(circle at 50% 40%,rgba(240,179,91,.19),transparent 28rem),linear-gradient(145deg,rgba(36,33,30,.96),rgba(9,23,34,.98)); text-align:center; box-shadow:0 30px 100px rgba(0,0,0,.32); }
.winner-rays { position:absolute; inset:50% auto auto 50%; color:rgba(240,179,91,.055); font-size:min(70vw,650px); line-height:1; transform:translate(-50%,-50%); pointer-events:none; }
.tournament-winner .section-kicker { position:relative; }
.tournament-winner .champion-crown { position:relative; margin:8px 0 2px; font-size:3rem; }
.tournament-winner > small { position:relative; color:var(--amber); font-size:.68rem; font-weight:900; letter-spacing:.16em; text-transform:uppercase; }
.tournament-winner img { position:relative; margin:25px 0 17px; border:3px solid rgba(240,179,91,.72); border-radius:8px; image-rendering:pixelated; box-shadow:0 0 45px rgba(240,179,91,.18); }
.tournament-winner h2 { position:relative; margin:0; font-size:clamp(2.7rem,7vw,6rem); letter-spacing:-.055em; }
.tournament-winner > span:not(.champion-crown):not(.winner-rays) { position:relative; color:var(--muted); font-size:.88rem; }
.tournament-winner > strong { position:relative; margin-top:24px; padding:10px 14px; border:1px solid rgba(240,179,91,.3); color:var(--amber); font-size:.76rem; }
.tournament-podium { position:relative; display:grid; grid-template-columns:repeat(2,minmax(180px,1fr)); gap:14px; width:min(100%,520px); margin-top:28px; }
.tournament-podium article { display:grid; grid-template-columns:64px 1fr; grid-template-rows:auto auto auto; column-gap:14px; align-items:center; padding:16px; border:1px solid rgba(255,255,255,.12); border-radius:7px; background:rgba(3,14,22,.48); text-align:left; }
.tournament-podium article > img { grid-row:1 / 4; margin:0; border-width:2px; }
.tournament-podium article > small { color:var(--amber); font-size:.63rem; font-weight:900; letter-spacing:.13em; text-transform:uppercase; }
.tournament-podium article > strong { color:var(--ink); font-size:1rem; }
.tournament-podium article > span { color:var(--muted); font-size:.7rem; }
.tournament-podium article[hidden] { display:none; }
.tournament-state-live .tournament-hero,.tournament-state-completed .tournament-hero { padding:8px 0 35px; }
.tournament-state-live .tournament-hero .section-kicker,.tournament-state-completed .tournament-hero .section-kicker,.tournament-state-live .tournament-description,.tournament-state-completed .tournament-description { display:none; }
.tournament-state-live .tournament-hero h1,.tournament-state-completed .tournament-hero h1 { max-width:none; margin-bottom:15px; font-size:clamp(2.5rem,7vw,5.5rem); }
.tournament-state-live .tournament-facts,.tournament-state-completed .tournament-facts { margin-top:0; }
.registration-panel { display:grid; grid-template-columns:minmax(0,1fr) minmax(300px,440px); gap:32px; align-items:center; margin-bottom:54px; padding:clamp(26px,5vw,48px); border:1px solid rgba(124,217,255,.32); border-radius:8px; background:linear-gradient(135deg,rgba(16,72,92,.62),rgba(9,23,34,.96)); }
.registration-copy h2 { margin-bottom:14px; }
.registration-copy > p:not(.section-kicker) { color:var(--muted); }
.registration-capacity { display:inline-flex; margin-top:13px; padding:7px 10px; border:1px solid var(--line); border-radius:4px; color:var(--frost); font-size:.72rem; font-weight:900; }
.registration-action { padding:20px; border:1px solid var(--line); border-radius:7px; background:rgba(4,15,23,.55); }
.registration-action label { display:grid; gap:7px; color:#c3d5df; font-size:.72rem; font-weight:800; }
.registration-action input { width:100%; min-height:44px; padding:10px 12px; border:1px solid var(--line); border-radius:4px; outline:none; background:#07141f; color:var(--ink); font:inherit; }
.registration-action input:focus { border-color:var(--frost); box-shadow:0 0 0 3px rgba(124,217,255,.08); }
#registration-auth-required p,.registration-closed p { color:var(--muted); font-size:.78rem; }
.registration-action form { display:grid; gap:13px; }
.registration-error { min-height:18px; margin:8px 0; color:#ff9d9d; font-size:.72rem; }
.registration-confirmed { display:grid; grid-template-columns:auto 1fr; gap:11px; align-items:center; }
.registration-confirmed > span { display:grid; width:36px; aspect-ratio:1; place-items:center; border:1px solid rgba(119,210,156,.38); color:#8ce2aa; }
.registration-confirmed strong,.registration-confirmed small { display:block; }
.registration-confirmed small { color:var(--muted); }
.registration-closed strong { color:var(--amber); }
.bracket-section { padding: 50px 0 70px; border-top: 1px solid var(--line); }
.bracket-heading { display: flex; justify-content: space-between; align-items: end; gap: 30px; margin-bottom: 30px; }
.bracket-heading h2 { margin: 0; }
.bracket-heading > p { max-width: 420px; margin: 0; color: var(--muted); font-size: .83rem; text-align: right; }
.bracket-scroll { overflow-x: auto; padding: 8px 6px 30px; scrollbar-color: rgba(124,217,255,.42) rgba(255,255,255,.04); }
.bracket { display: flex; align-items: stretch; gap: 58px; width: max-content; min-width: 100%; }
.bracket-round { --round-gap: 18px; --round-offset: 0px; display: flex; width: 245px; flex: 0 0 245px; flex-direction: column; }
.round-title { display: flex; align-items: center; justify-content: space-between; min-height: 36px; margin-bottom: 20px; color: var(--frost); font-size: .72rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.round-title span { color: #607b8b; font-size: .62rem; }
.round-matches { display: flex; flex: 1; flex-direction: column; justify-content: space-around; gap: var(--round-gap); padding-block: var(--round-offset); }
.bracket-match { position: relative; width: 245px; border: 1px solid var(--line); border-radius: 7px; background: linear-gradient(145deg,rgba(15,42,55,.92),rgba(7,20,30,.97)); box-shadow: 0 16px 36px rgba(0,0,0,.16); }
.bracket-match::after { content: ""; position: absolute; top: 50%; left: 100%; width: 59px; border-top: 1px solid rgba(124,217,255,.3); }
.bracket-round:last-child .bracket-match::after { display: none; }
.bracket-round.final-round .bracket-match::after { display:none; }
.bracket-match.changed { animation: match-update .7s ease; border-color: rgba(124,217,255,.68); }
.bracket-match.current-match { border-color:rgba(240,179,91,.82); box-shadow:0 0 0 3px rgba(240,179,91,.08),0 18px 55px rgba(240,179,91,.2); animation:current-match-pulse 1.8s ease-in-out infinite; }
.bracket-match.current-match .match-number { background:rgba(240,179,91,.12); color:var(--amber); }
.match-number { display: flex; justify-content: space-between; padding: 7px 10px; border-bottom: 1px solid rgba(194,235,255,.1); color: #678394; font-size: .59rem; font-weight: 850; letter-spacing: .09em; text-transform: uppercase; }
.match-player { display: grid; grid-template-columns: 30px minmax(0,1fr) auto; gap: 9px; align-items: center; min-height: 51px; padding: 8px 10px; color: #9cb0bc; }
.match-player + .match-player { border-top: 1px solid rgba(194,235,255,.1); }
.match-player-avatar { position:relative; display:grid; width:30px; height:30px; place-items:center; }
.match-player img { width: 30px; height: 30px; border-radius: 3px; image-rendering: pixelated; background: #102733; }
.match-player.eliminated .match-player-avatar img { filter:grayscale(.8) brightness(.55); }
.match-player.eliminated > span:not(.match-player-avatar) { opacity:.62; }
.elimination-x { position:absolute; inset:-3px; filter:drop-shadow(0 1px 2px rgba(0,0,0,.8)); }
.elimination-x::before, .elimination-x::after { content:""; position:absolute; top:50%; left:50%; width:36px; height:4px; border:1px solid rgba(255,220,220,.72); border-radius:99px; background:#d84343; }
.elimination-x::before { transform:translate(-50%,-50%) rotate(45deg); }
.elimination-x::after { transform:translate(-50%,-50%) rotate(-45deg); }
.match-player strong { display: block; overflow: hidden; color: inherit; font-size: .78rem; text-overflow: ellipsis; white-space: nowrap; }
.match-player small { display: block; overflow: hidden; color: #607888; font-size: .61rem; text-overflow: ellipsis; white-space: nowrap; }
.match-player .score { color: #708997; font-size: .95rem; font-weight: 900; }
.match-player.winner { background: rgba(124,217,255,.08); color: var(--ink); }
.match-player.winner strong, .match-player.winner .score { color: var(--frost); }
.match-player.advanced { animation: player-advance .75s cubic-bezier(.2,.8,.2,1); }
.match-player.empty { grid-template-columns: 30px 1fr; color: #536d7c; }
.empty-avatar { display: grid; width: 30px; aspect-ratio: 1; place-items: center; border: 1px dashed rgba(194,235,255,.16); color: #496473; font-size: .68rem; }
.tournament-details { display: grid; grid-template-columns: 1.2fr .8fr; gap: 18px; padding: 10px 0 80px; }
.tournament-details > article { padding: clamp(24px,4vw,38px); border: 1px solid var(--line); border-radius: 8px; background: var(--panel); }
.tournament-details h2 { font-size: clamp(1.8rem,4vw,3rem); }
.public-roster { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
.public-fighter { display: grid; grid-template-columns: 38px minmax(0,1fr) auto; gap: 11px; align-items: center; padding: 10px; border: 1px solid rgba(194,235,255,.12); background: rgba(255,255,255,.025); }
.public-fighter img { width: 38px; height: 38px; border-radius: 4px; image-rendering: pixelated; }
.public-fighter strong, .public-fighter small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.public-fighter small { color: var(--muted); font-size: .65rem; }
.public-fighter > span { color: var(--amber); font-size: .67rem; font-weight: 900; }
.public-fighter.disqualified { opacity:.6; border-color:rgba(237,136,130,.24); }
.public-fighter.disqualified > span { color:#ed8882; }
.match-player.disqualified { opacity:.5; text-decoration:line-through; }
.tournament-rules { color: var(--muted); line-height: 1.75; white-space: pre-line; }
.tournament-footer { width: min(1240px, calc(100% - 36px)); }
.match-announcement { position:fixed; inset:0; z-index:9999; display:grid; place-items:center; overflow:hidden; padding:24px; background:radial-gradient(circle at 50% 50%,rgba(24,105,132,.38),transparent 38rem),rgba(3,10,16,.96); }
.match-announcement-grid { position:absolute; inset:-20%; background-image:linear-gradient(rgba(124,217,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(124,217,255,.045) 1px,transparent 1px); background-size:52px 52px; transform:perspective(700px) rotateX(55deg) scale(1.3); }
.match-announcement-content { position:relative; display:grid; width:min(1050px,100%); justify-items:center; text-align:center; }
.match-announcement h2 { margin:5px 0 30px; font-size:clamp(2.2rem,7vw,5.8rem); line-height:.92; letter-spacing:-.06em; text-transform:uppercase; }
.announcement-fighters { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:clamp(18px,5vw,70px); align-items:center; width:100%; }
.announcement-fighters article { display:grid; justify-items:center; min-width:0; }
.announcement-fighters img { width:clamp(88px,14vw,150px); height:clamp(88px,14vw,150px); border:3px solid rgba(124,217,255,.7); border-radius:9px; image-rendering:pixelated; box-shadow:0 0 55px rgba(124,217,255,.18); }
.announcement-fighters strong { display:block; max-width:100%; margin-top:18px; overflow:hidden; font-family:Unbounded,sans-serif; font-size:clamp(1.35rem,4vw,3.4rem); text-overflow:ellipsis; white-space:nowrap; }
.announcement-fighters small { margin-top:5px; color:var(--muted); font-size:clamp(.7rem,1.4vw,.95rem); }
.announcement-versus { color:var(--amber); font-family:Unbounded,sans-serif; font-size:clamp(2.2rem,7vw,6.5rem); font-weight:950; text-shadow:0 0 45px rgba(240,179,91,.35); }
.announcement-tournament { margin:30px 0 20px; color:#9db7c5; font-size:.78rem; font-weight:850; letter-spacing:.1em; text-transform:uppercase; }
.announcement-timer { width:min(680px,75vw); height:3px; overflow:hidden; background:rgba(255,255,255,.1); }
.announcement-timer span { display:block; width:100%; height:100%; background:linear-gradient(90deg,var(--frost),var(--amber)); transform-origin:left; }
.match-announcement-close { position:absolute; top:20px; right:22px; z-index:2; display:grid; width:42px; aspect-ratio:1; place-items:center; border:1px solid rgba(255,255,255,.18); border-radius:50%; background:rgba(255,255,255,.04); color:var(--ink); cursor:pointer; font-size:1.35rem; }
.match-announcement.showing { animation:announcement-backdrop-in .42s ease both; }
.match-announcement.showing .match-announcement-content { animation:announcement-content-in .7s cubic-bezier(.18,.85,.22,1.08) both; }
.match-announcement.showing .announcement-fighters article:first-child { animation:announcement-left-in .8s cubic-bezier(.18,.85,.22,1.08) both; }
.match-announcement.showing .announcement-fighters article:last-child { animation:announcement-right-in .8s cubic-bezier(.18,.85,.22,1.08) both; }
.match-announcement.showing .announcement-timer span { animation:announcement-countdown var(--announcement-duration,6s) linear both; }
.match-announcement.leaving { animation:announcement-out .42s ease both; }
.winner-announcement { position:fixed; inset:0; z-index:10002; display:grid; place-items:center; overflow:hidden; padding:24px; background:radial-gradient(circle at 50% 45%,rgba(240,179,91,.3),transparent 33rem),linear-gradient(145deg,rgba(27,22,16,.98),rgba(3,10,16,.99)); }
.winner-announcement-glow { position:absolute; width:min(82vw,760px); aspect-ratio:1; border:1px solid rgba(240,179,91,.16); border-radius:50%; box-shadow:inset 0 0 0 45px rgba(240,179,91,.025),0 0 150px rgba(240,179,91,.12); }
.winner-announcement-content { position:relative; display:grid; justify-items:center; width:min(900px,100%); text-align:center; }
.winner-announcement-crown { color:var(--amber); font-size:clamp(3.5rem,9vw,7.5rem); line-height:1; filter:drop-shadow(0 0 35px rgba(240,179,91,.4)); }
.winner-announcement h2 { margin:2px 0 25px; color:var(--amber); font-size:clamp(2.5rem,8vw,7rem); line-height:.9; letter-spacing:-.065em; text-transform:uppercase; }
.winner-announcement img { width:clamp(110px,19vw,180px); height:clamp(110px,19vw,180px); border:4px solid rgba(240,179,91,.82); border-radius:10px; image-rendering:pixelated; box-shadow:0 0 75px rgba(240,179,91,.3); }
.winner-announcement-content > strong { max-width:100%; margin-top:20px; overflow:hidden; font-family:Unbounded,sans-serif; font-size:clamp(2rem,6vw,5.5rem); text-overflow:ellipsis; white-space:nowrap; }
.winner-announcement-content > small { margin-top:6px; color:#c7aa7a; font-size:clamp(.78rem,1.5vw,1.05rem); }
.winner-announcement-content > p:not(.section-kicker) { margin:24px 0 20px; color:var(--amber); font-size:.82rem; font-weight:850; letter-spacing:.11em; text-transform:uppercase; }
.winner-timer span { background:linear-gradient(90deg,var(--amber),#fff0b0,var(--amber)); }
.winner-sparks { position:absolute; inset:0; pointer-events:none; }
.winner-sparks span { position:absolute; width:8px; height:18px; border-radius:2px; background:var(--amber); opacity:0; }
.winner-sparks span:nth-child(1){left:8%;top:14%;--spark-x:18vw;--spark-y:30vh}.winner-sparks span:nth-child(2){left:20%;top:4%;--spark-x:8vw;--spark-y:40vh}.winner-sparks span:nth-child(3){left:36%;top:10%;--spark-x:-5vw;--spark-y:34vh}.winner-sparks span:nth-child(4){left:63%;top:7%;--spark-x:5vw;--spark-y:38vh}.winner-sparks span:nth-child(5){left:79%;top:3%;--spark-x:-8vw;--spark-y:42vh}.winner-sparks span:nth-child(6){left:92%;top:16%;--spark-x:-18vw;--spark-y:30vh}.winner-sparks span:nth-child(7){left:4%;top:52%;--spark-x:24vw;--spark-y:25vh}.winner-sparks span:nth-child(8){left:16%;top:70%;--spark-x:15vw;--spark-y:18vh}.winner-sparks span:nth-child(9){left:34%;top:78%;--spark-x:5vw;--spark-y:14vh}.winner-sparks span:nth-child(10){left:65%;top:80%;--spark-x:-5vw;--spark-y:13vh}.winner-sparks span:nth-child(11){left:84%;top:69%;--spark-x:-15vw;--spark-y:18vh}.winner-sparks span:nth-child(12){left:96%;top:50%;--spark-x:-24vw;--spark-y:25vh}
.winner-announcement.showing { animation:winner-backdrop-in .65s ease both; }
.winner-announcement.showing .winner-announcement-content { animation:winner-content-in 1s cubic-bezier(.16,.88,.2,1.08) both; }
.winner-announcement.showing .winner-announcement-crown { animation:winner-crown 1.3s .3s cubic-bezier(.16,.88,.2,1.08) both; }
.winner-announcement.showing .winner-sparks span { animation:winner-spark 2.4s ease-out infinite; animation-delay:calc((var(--spark-delay,0) + 1) * .08s); }
.winner-announcement.showing .winner-timer span { animation:announcement-countdown var(--announcement-duration,8.5s) linear both; }
.winner-announcement.leaving { animation:winner-out .52s ease both; }
.score-announcement { position:fixed; inset:0; z-index:10001; display:grid; overflow:hidden; place-items:center; pointer-events:none; background:rgba(3,10,16,0); }
.score-announcement::before { content:""; position:absolute; inset:-40%; background:repeating-linear-gradient(90deg,transparent 0 7vw,rgba(124,217,255,.08) 7.2vw 7.35vw,transparent 7.55vw 12vw); opacity:0; transform:skewX(-18deg) translateX(-18vw); }
.score-announcement img { z-index:1; grid-area:1/1; width:clamp(92px,15vw,142px); height:clamp(92px,15vw,142px); border:3px solid rgba(124,217,255,.82); border-radius:9px; image-rendering:pixelated; box-shadow:0 0 65px rgba(124,217,255,.32),0 24px 70px rgba(0,0,0,.5); }
.score-announcement div { z-index:1; display:grid; grid-area:1/1; justify-items:center; width:min(620px,calc(100% - 30px)); margin-top:clamp(176px,24vw,220px); text-align:center; }
.score-announcement small { color:var(--frost); font-size:.68rem; font-weight:900; letter-spacing:.16em; text-transform:uppercase; }
.score-announcement strong { overflow:hidden; max-width:100%; margin-top:5px; font-family:Unbounded,sans-serif; font-size:clamp(1.45rem,4vw,3rem); text-overflow:ellipsis; white-space:nowrap; }
.score-announcement span { margin-top:5px; color:#9db7c5; font-size:clamp(.72rem,1.5vw,.9rem); }
.score-announcement.showing { animation:score-scene var(--announcement-duration,3s) linear both; }
.score-announcement.showing::before { animation:score-speed-lines var(--announcement-duration,3s) linear both; }
.score-announcement.showing img { animation:score-head-slide var(--announcement-duration,3s) linear both; }
.score-announcement.showing div { animation:score-copy-reveal var(--announcement-duration,3s) linear both; }
.score-announcement.leaving { animation:score-scene-out .18s ease both; }
.score-announcement.leaving::before, .score-announcement.leaving img, .score-announcement.leaving div { opacity:0; }
.advance-announcement { position:fixed; inset:0; z-index:10000; display:grid; place-items:center; overflow:hidden; padding:24px; background:radial-gradient(circle at 50% 48%,rgba(63,169,214,.3),transparent 31rem),linear-gradient(145deg,rgba(5,27,39,.98),rgba(3,10,16,.99)); }
.advance-announcement-content { position:relative; display:grid; justify-items:center; width:min(860px,100%); text-align:center; }
.advance-announcement h2 { margin:4px 0 24px; color:var(--frost); font-size:clamp(2.5rem,8vw,6.6rem); line-height:.9; letter-spacing:-.065em; text-transform:uppercase; text-shadow:0 0 45px rgba(124,217,255,.2); }
.advance-announcement img { width:clamp(104px,18vw,150px); height:clamp(104px,18vw,150px); border:3px solid rgba(124,217,255,.78); border-radius:9px; image-rendering:pixelated; box-shadow:0 0 65px rgba(124,217,255,.25); }
.advance-announcement-content > strong { max-width:100%; margin-top:19px; overflow:hidden; font-family:Unbounded,sans-serif; font-size:clamp(1.8rem,5.5vw,4.8rem); text-overflow:ellipsis; white-space:nowrap; }
.advance-announcement-content > small { margin-top:5px; color:#9db7c5; font-size:clamp(.75rem,1.4vw,1rem); }
.advance-announcement-content > p:not(.section-kicker) { margin:22px 0 20px; color:var(--frost); font-size:clamp(.72rem,1.7vw,.96rem); font-weight:850; letter-spacing:.08em; text-transform:uppercase; }
.advance-announcement .announcement-timer span { background:linear-gradient(90deg,#5aaccf,var(--frost),#5aaccf); }
.advance-announcement.showing { animation:announcement-backdrop-in .35s ease both; }
.advance-announcement.showing .advance-announcement-content { animation:advance-content-in .62s cubic-bezier(.16,.88,.2,1.1) both; }
.advance-announcement.showing .announcement-timer span { animation:announcement-countdown var(--announcement-duration,4.2s) linear both; }
.advance-announcement.leaving { animation:announcement-out .42s ease both; }
[hidden] { display: none !important; }
@keyframes tournament-pulse { 50% { transform: scale(1.04); box-shadow: 0 0 60px rgba(124,217,255,.2); } }
@keyframes sound-toggle-pulse { 50% { border-color:rgba(124,217,255,.7); box-shadow:0 10px 35px rgba(0,0,0,.28),0 0 24px rgba(124,217,255,.16); } }
@keyframes match-update { 0% { transform: translateY(5px); box-shadow: 0 0 0 rgba(124,217,255,0); } 45% { box-shadow: 0 0 35px rgba(124,217,255,.24); } }
@keyframes player-advance { 0% { opacity: .1; transform: translateX(-18px); } 100% { opacity: 1; transform: translateX(0); } }
@keyframes champion-reveal { 0% { opacity: 0; transform: translateY(18px) scale(.96); } }
@keyframes current-match-pulse { 50% { box-shadow:0 0 0 5px rgba(240,179,91,.1),0 18px 70px rgba(240,179,91,.29); } }
@keyframes announcement-backdrop-in { from { opacity:0; } }
@keyframes announcement-content-in { from { opacity:0; transform:scale(.82); } }
@keyframes announcement-left-in { from { opacity:0; transform:translateX(-16vw); } }
@keyframes announcement-right-in { from { opacity:0; transform:translateX(16vw); } }
@keyframes announcement-countdown { to { transform:scaleX(0); } }
@keyframes announcement-out { to { opacity:0; transform:scale(1.025); } }
@keyframes winner-backdrop-in { from { opacity:0; } }
@keyframes winner-content-in { from { opacity:0; transform:translateY(30px) scale(.78); } }
@keyframes winner-crown { from { opacity:0; transform:translateY(-80px) scale(1.8) rotate(-12deg); } }
@keyframes winner-spark { 0% { opacity:0; transform:translate(0,0) rotate(0); } 18% { opacity:1; } 100% { opacity:0; transform:translate(var(--spark-x),var(--spark-y)) rotate(520deg); } }
@keyframes winner-out { to { opacity:0; transform:scale(1.035); } }
@keyframes score-scene { 0%,100% { background:rgba(3,10,16,0); } 34%,66% { background:rgba(3,10,16,.82); } 50% { background:rgba(5,24,35,.92); } }
@keyframes score-speed-lines { 0% { opacity:0; transform:skewX(-18deg) translateX(-28vw); } 12%,29% { opacity:.9; } 42%,58% { opacity:.12; } 71%,88% { opacity:.9; } 100% { opacity:0; transform:skewX(-18deg) translateX(28vw); } }
@keyframes score-head-slide { 0% { opacity:0; transform:translateX(-66vw) rotate(-8deg) scale(.7); animation-timing-function:cubic-bezier(.12,.7,.2,1); } 8% { opacity:1; } 36% { transform:translateX(-5vw) rotate(-2deg) scale(1.08); animation-timing-function:ease-in-out; } 50% { transform:translateX(0) rotate(0) scale(1.18); } 64% { transform:translateX(5vw) rotate(2deg) scale(1.08); animation-timing-function:cubic-bezier(.7,0,.92,.35); } 92% { opacity:1; } 100% { opacity:0; transform:translateX(66vw) rotate(8deg) scale(.7); } }
@keyframes score-copy-reveal { 0%,27%,73%,100% { opacity:0; transform:translateY(12px); } 40%,60% { opacity:1; transform:translateY(0); } }
@keyframes score-scene-out { to { opacity:0; } }
@keyframes advance-content-in { from { opacity:0; transform:translateY(38px) scale(.76); } 65% { transform:translateY(-4px) scale(1.025); } }
@media (max-width: 820px) {
  .tournament-page { padding-top: 112px; }
  .tournament-hero, .registration-panel, .tournament-details { grid-template-columns: 1fr; }
  .champion-card { max-width: 360px; }
  .bracket-heading { align-items: start; flex-direction: column; }
  .bracket-heading > p { text-align: left; }
}
@media (max-width: 560px) {
  .tournament-podium { grid-template-columns:1fr; }
  .tournament-sound-toggle { right:12px; bottom:12px; }
  .tournament-loading, .tournament-offline, .tournament-error, .tournament-catalog, .tournament-hero, .registration-panel, .bracket-section, .tournament-details, .tournament-footer { width: calc(100% - 24px); }
  .tournament-hero { padding-top: 20px; }
  .tournament-hero h1 { font-size: clamp(3rem,16vw,5.2rem); }
  .public-roster { grid-template-columns: 1fr; }
  .tournament-catalog-grid { grid-template-columns:1fr; }
  .offline-actions { width: 100%; }
  .bracket { gap: 44px; }
  .bracket-round, .bracket-match { width: 220px; flex-basis: 220px; }
  .bracket-match::after { width: 45px; }
  .match-announcement { padding:18px; }
  .match-announcement h2 { margin-bottom:22px; }
  .announcement-fighters { grid-template-columns:1fr auto 1fr; gap:10px; }
  .announcement-fighters strong { font-size:clamp(1rem,5vw,1.6rem); }
  .announcement-versus { font-size:clamp(1.7rem,10vw,3.2rem); }
}
@media (prefers-reduced-motion: reduce) {
  .loading-rune, .tournament-sound-toggle, .bracket-match.changed, .bracket-match.current-match, .match-player.advanced, .champion-card.revealed, .match-announcement, .match-announcement-content, .announcement-fighters article, .announcement-timer span, .winner-announcement, .winner-announcement-content, .winner-announcement-crown, .winner-sparks span, .score-announcement, .score-announcement::before, .score-announcement img, .score-announcement div, .advance-announcement, .advance-announcement-content { animation: none !important; }
}
.public-event-board { display: grid; gap: 10px; margin-top: 22px; }
.public-event-entry { display: grid; grid-template-columns: 58px 54px minmax(0,1fr) auto; gap: 14px; align-items: center; min-height: 76px; padding: 10px 16px; border: 1px solid var(--line); background: rgba(12,26,30,.78); transition: border-color .3s, transform .3s, opacity .3s; }
.public-event-entry:first-child { border-color: rgba(128,230,221,.42); background: rgba(128,230,221,.055); }
.public-event-entry.eliminated { opacity: .48; }
.public-event-rank { color: var(--ice); font-family: Unbounded,sans-serif; font-size: 1rem; text-align: center; }
.public-event-entry img { width: 54px; height: 54px; image-rendering: pixelated; border-radius: 8px; }
.public-event-entry > div { display: grid; min-width: 0; }
.public-event-entry strong { overflow: hidden; font-family: Unbounded,sans-serif; font-size: .82rem; text-overflow: ellipsis; white-space: nowrap; }
.public-event-entry small { color: var(--muted); }
.public-event-result { color: var(--amber); font-size: .82rem; font-weight: 900; text-align: right; }
@media (max-width: 620px) {
  .public-event-entry { grid-template-columns: 36px 44px minmax(0,1fr); padding-inline: 10px; }
  .public-event-entry img { width: 44px; height: 44px; }
  .public-event-result { grid-column: 2/-1; text-align: left; }
}
.registration-team-members { display: grid; gap: 12px; }
