:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}body{margin:0}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}.password-prompt{box-sizing:border-box;border:1px solid var(--border);background:var(--bg);width:min(400px,100vw - 32px);color:var(--text);box-shadow:var(--shadow);text-align:left;border-radius:10px;padding:24px}.password-prompt::backdrop{background:#0006}.password-prompt form{flex-direction:column;gap:14px;display:flex}.password-prompt h2{margin:0}.password-prompt .hint{font-size:15px}.password-prompt input{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:6px;padding:10px 12px;font-size:max(16px,1em)}.password-prompt input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.password-prompt .actions{justify-content:flex-end;gap:8px;display:flex}.password-prompt button{font:inherit;color:var(--accent);background:var(--accent-bg);cursor:pointer;border:2px solid #0000;border-radius:6px;padding:8px 16px;font-size:15px;transition:border-color .3s}.password-prompt button:hover:not(:disabled){border-color:var(--accent-border)}.password-prompt button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.password-prompt button:disabled{opacity:.5;cursor:not-allowed}.password-prompt button.secondary{color:var(--text);border-color:var(--border);background:0 0}.password-prompt .message{border-radius:6px;padding:10px 14px;font-size:15px}.password-prompt .error{color:#b42318;background:#b423181a}@media (prefers-color-scheme:dark){.password-prompt .error{color:#fda29b;background:#fda29b1f}}.create-tournament{box-sizing:border-box;text-align:left;width:100%;max-width:480px;margin:0 auto;padding:32px 20px}.create-tournament form{flex-direction:column;gap:20px;display:flex}.create-tournament .field{border:none;flex-direction:column;gap:6px;margin:0;padding:0;display:flex}.create-tournament .field>span,.create-tournament legend{color:var(--text-h);margin-bottom:6px;padding:0;font-weight:500}.create-tournament input[type=text]{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:6px;padding:8px 12px}.create-tournament input[type=text]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.create-tournament .participants{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.create-tournament .participants label{color:var(--text-h);cursor:pointer;align-items:center;gap:8px;display:flex}.create-tournament .participants input{accent-color:var(--accent)}.create-tournament button{font:inherit;color:var(--accent);background:var(--accent-bg);cursor:pointer;border:2px solid #0000;border-radius:6px;align-self:flex-start;padding:8px 16px;transition:border-color .3s}.create-tournament button:hover:not(:disabled){border-color:var(--accent-border)}.create-tournament button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.create-tournament button:disabled{opacity:.5;cursor:not-allowed}.create-tournament .hint{font-size:15px}.create-tournament .message{border-radius:6px;margin-top:20px;padding:10px 14px;font-size:15px}.create-tournament .error{color:#b42318;background:#b423181a}.create-tournament .success{color:#067647;background:#0676471a}.create-tournament .success a{color:inherit;font-weight:500}@media (prefers-color-scheme:dark){.create-tournament .error{color:#fda29b;background:#fda29b1f}.create-tournament .success{color:#75e0a7;background:#75e0a71f}}.sign-up{box-sizing:border-box;text-align:left;width:100%;max-width:420px;margin:0 auto;padding:48px 20px}.sign-up .eyebrow{margin-top:0;font-size:15px}.sign-up h1{overflow-wrap:anywhere;margin:4px 0 32px;line-height:1.1}.sign-up form{flex-direction:column;gap:20px;display:flex}.sign-up .field{flex-direction:column;gap:6px;display:flex}.sign-up .field span{color:var(--text-h);font-weight:500}.sign-up input[type=text],.sign-up select{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:6px;padding:10px 12px;font-size:max(16px,1em)}:is(.sign-up input[type=text],.sign-up select):focus-visible{outline:2px solid var(--accent);outline-offset:1px}.sign-up button{font:inherit;color:var(--accent);background:var(--accent-bg);cursor:pointer;border:2px solid #0000;border-radius:6px;padding:10px 16px;transition:border-color .3s}.sign-up button:hover:not(:disabled){border-color:var(--accent-border)}.sign-up button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sign-up button:disabled{opacity:.5;cursor:not-allowed}.sign-up .message{border-radius:6px;padding:10px 14px;font-size:15px}.sign-up .error{color:#b42318;background:#b423181a}.sign-up .success{color:#067647;background:#0676471a}@media (prefers-color-scheme:dark){.sign-up .error{color:#fda29b;background:#fda29b1f}.sign-up .success{color:#75e0a7;background:#75e0a71f}}.tournament-list{box-sizing:border-box;text-align:left;width:100%;max-width:640px;margin:0 auto;padding:32px 20px}.tournament-list .tournaments{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.tournament-list .tournament{border:1px solid var(--border);border-radius:8px;padding:16px 20px;transition:border-color .3s;position:relative}.tournament-list .tournament:hover{border-color:var(--accent-border)}.tournament-list .tournament-link{color:inherit;text-decoration:none}.tournament-list .tournament-link:after{content:"";border-radius:inherit;position:absolute;inset:0}.tournament-list .tournament-link:focus-visible{outline:none}.tournament-list .tournament-link:focus-visible:after{outline:2px solid var(--accent);outline-offset:2px}.tournament-list .tournament-header{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.tournament-list .tournament-header h2{margin:0}.tournament-list .tournament-id{font-family:var(--mono);font-size:15px}.tournament-list .meta{margin-top:4px;font-size:15px}.tournament-list .participants{flex-wrap:wrap;gap:6px;margin:12px 0 0;padding:0;list-style:none;display:flex}.tournament-list .participants li{color:var(--accent);background:var(--accent-bg);border-radius:999px;padding:2px 10px;font-size:15px}.tournament-list .actions{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex;position:relative}.tournament-list .button{font:inherit;cursor:pointer;color:var(--accent);background:var(--accent-bg);border:2px solid #0000;border-radius:6px;padding:6px 14px;font-size:15px;text-decoration:none;transition:border-color .3s;display:inline-block}.tournament-list .button:hover{border-color:var(--accent-border)}.tournament-list .button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tournament-list .button:disabled{opacity:.5;cursor:not-allowed}.tournament-list .button.danger{color:#b42318;background:#b423181a}.tournament-list .button.danger:hover:not(:disabled){border-color:#b4231880}.tournament-list .message+.tournaments{margin-top:16px}.tournament-list .hint{font-size:15px}.tournament-list .message{border-radius:6px;padding:10px 14px;font-size:15px}.tournament-list .error{color:#b42318;background:#b423181a}@media (prefers-color-scheme:dark){.tournament-list .error,.tournament-list .button.danger{color:#fda29b;background:#fda29b1f}.tournament-list .button.danger:hover:not(:disabled){border-color:#fda29b80}}.bracket{--gap:40px;--line:var(--border);gap:var(--gap);text-align:left;padding-bottom:8px;display:flex;overflow-x:auto}.bracket .round{flex-direction:column;flex:none;display:flex}.bracket .round-name{text-transform:uppercase;letter-spacing:.6px;color:var(--text);margin:0 0 8px;font-size:13px;font-weight:500}.bracket .round-matches{flex-direction:column;flex:1;display:flex}.bracket .slot{flex:1;align-items:center;padding:6px 0;display:flex;position:relative}:is(.bracket .round.connect-pair .slot,.bracket .round.connect-straight .slot):after{content:"";top:50%;right:calc(var(--gap) / -2);width:calc(var(--gap) / 2);border-top:1px solid var(--line);position:absolute}.bracket .round.connect-pair .slot:before{content:"";right:calc(var(--gap) / -2);border-right:1px solid var(--line);height:50%;position:absolute}.bracket .round.connect-pair .slot:nth-child(odd):before{top:50%}.bracket .round.connect-pair .slot:nth-child(2n):before{top:0}.bracket .round:not(:first-child) .match:before{content:"";top:50%;left:calc(var(--gap) / -2 - 1px);width:calc(var(--gap) / 2);border-top:1px solid var(--line);position:absolute}.bracket .match{border:1px solid var(--border);background:var(--bg);border-radius:6px;width:160px;font-size:15px;position:relative}.bracket .match.upcoming{border-color:var(--accent-border);box-shadow:0 0 0 1px var(--accent-border)}.bracket .player{color:var(--text-h);white-space:nowrap;text-overflow:ellipsis;padding:6px 10px;overflow:hidden}.bracket .player+.player{border-top:1px solid var(--border)}.bracket .player.winner{color:var(--accent);font-weight:600}.bracket .player.loser{color:var(--text);text-decoration:line-through;-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border)}.bracket .player.empty{color:var(--text);font-style:italic}.tournament-page{box-sizing:border-box;text-align:left;width:100%;padding:32px 20px}.tournament-page .back{color:var(--accent);font-size:15px;text-decoration:none}.tournament-page .back:hover{text-decoration:underline}.tournament-page .tournament-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin:16px 0 24px;display:flex}.tournament-page .tournament-header h1{overflow-wrap:anywhere;margin:0;line-height:1.1}.tournament-page .meta,.tournament-page .hint{font-size:15px}.tournament-page .button{font:inherit;color:var(--accent);background:var(--accent-bg);cursor:pointer;border:2px solid #0000;border-radius:6px;padding:6px 14px;font-size:15px;text-decoration:none;transition:border-color .3s;display:inline-block}.tournament-page .button:hover:not(:disabled){border-color:var(--accent-border)}.tournament-page .button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tournament-page .button:disabled{opacity:.5;cursor:not-allowed}.tournament-page .empty-bracket{flex-direction:column;align-items:flex-start;gap:12px;max-width:480px;display:flex}.tournament-page .participant-list{border:1px solid var(--border);border-radius:8px;width:100%;margin:0 0 12px;padding:0;list-style:none}.tournament-page .participant-list li{color:var(--text-h);justify-content:space-between;align-items:center;gap:12px;padding:8px 14px;display:flex}.tournament-page .participant-list li+li{border-top:1px solid var(--border)}.tournament-page .participant-list span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tournament-page .participant-list button{font:inherit;border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:999px;padding:2px 10px;font-size:13px}.tournament-page .participant-list button:hover:not(:disabled){color:#b42318;border-color:#b4231880}.tournament-page .participant-list button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tournament-page .participant-list button:disabled{opacity:.5;cursor:not-allowed}.tournament-page .empty-bracket h2{margin:0}.tournament-page .option{color:var(--text-h);cursor:pointer;align-items:flex-start;gap:10px;display:flex}.tournament-page .option input{accent-color:var(--accent);margin-top:5px}.tournament-page .option small{color:var(--text);font-size:14px;display:block}.tournament-page .option:has(input:disabled){cursor:not-allowed;opacity:.6}.tournament-page .bracket-panel{flex-direction:column;gap:12px;min-width:0;display:flex}.tournament-page .bracket-panel h2:not(:first-child){margin-top:20px}.tournament-page .tournament-layout{grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:32px;display:grid}@media (width<=800px){.tournament-page .tournament-layout{grid-template-columns:minmax(0,1fr)}}.tournament-page .upcoming-panel h2{margin-bottom:12px}.tournament-page .upcoming-panel .results-heading{margin:32px 0 4px}.tournament-page .upcoming-panel .hint{margin-bottom:12px}.tournament-page .upcoming-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.tournament-page .upcoming-match{border:1px solid var(--border);border-radius:8px;padding:10px 14px}.tournament-page .upcoming-round{text-transform:uppercase;letter-spacing:.6px;margin-bottom:6px;font-size:13px;font-weight:500}.tournament-page .upcoming-player{color:var(--text-h);justify-content:space-between;align-items:center;gap:8px;padding:4px 0;display:flex}.tournament-page .upcoming-player span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tournament-page .upcoming-player .tbd{color:var(--text);font-style:italic}.tournament-page .upcoming-player .result-winner{color:var(--accent);font-weight:600}.tournament-page .upcoming-player .result-loser{color:var(--text)}.tournament-page .upcoming-player .winner-badge{color:var(--accent);background:var(--accent-bg);border-radius:999px;padding:2px 10px;font-size:13px}.tournament-page .upcoming-player button{font:inherit;border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:999px;padding:2px 10px;font-size:13px}.tournament-page .upcoming-player button:hover:not(:disabled){color:var(--accent);border-color:var(--accent-border)}.tournament-page .upcoming-player button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tournament-page .upcoming-player button:disabled{opacity:.5;cursor:not-allowed}.tournament-page .message{border-radius:6px;margin-bottom:16px;padding:10px 14px;font-size:15px}.tournament-page .error{color:#b42318;background:#b423181a}.tournament-page .success{color:#067647;background:#0676471a}@media (prefers-color-scheme:dark){.tournament-page .participant-list button:hover:not(:disabled){color:#fda29b;border-color:#fda29b80}.tournament-page .error{color:#fda29b;background:#fda29b1f}.tournament-page .success{color:#75e0a7;background:#75e0a71f}}.tournament-qr{box-sizing:border-box;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:480px;margin:0 auto;padding:32px 20px;display:flex}.tournament-qr .back{color:var(--accent);align-self:flex-start;font-size:15px;text-decoration:none}.tournament-qr .back:hover{text-decoration:underline}.tournament-qr h1{overflow-wrap:anywhere;margin:0;line-height:1.1}.tournament-qr .hint{font-size:15px}.tournament-qr .qr{background:#fff;border-radius:8px;line-height:0;display:flex}.tournament-qr .qr svg{max-width:100%;height:auto}.tournament-qr .sign-up-url{font-family:var(--mono);color:var(--text-h);word-break:break-all;font-size:14px}.tournament-qr .message{text-align:left;border-radius:6px;padding:10px 14px;font-size:15px}.tournament-qr .error{color:#b42318;background:#b423181a}.tournament-qr .warning{color:#b54708;background:#b547081a}@media (prefers-color-scheme:dark){.tournament-qr .error{color:#fda29b;background:#fda29b1f}.tournament-qr .warning{color:#fec84b;background:#fec84b1f}}.app-nav{border-bottom:1px solid var(--border);gap:8px;padding:12px 20px;display:flex}.app-nav a{color:var(--text);border-radius:6px;padding:6px 12px;font-size:15px;text-decoration:none}.app-nav a:hover{color:var(--text-h)}.app-nav a.active{color:var(--accent);background:var(--accent-bg)}.app-nav a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
