.tournament-page{min-height:80vh;padding:7rem 0 3rem;background:linear-gradient(180deg,#fafaf5,#f3f4f6)}@media(max-width:640px){.tournament-page{padding:6rem 0 2rem}}.tournament-container{max-width:720px;margin:0 auto;padding:0 1rem}.state-loading{text-align:center;padding:4rem 1rem}.spinner{width:32px;height:32px;border:3px solid #e5e7eb;border-top-color:var(--color-primary);border-radius:50%;margin:0 auto 1rem;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.info-card{background:#fff;border-radius:1rem;padding:2rem 1.5rem;text-align:center;box-shadow:0 2px 8px #0000000a}.info-card h1{font-size:1.5rem;margin-bottom:.5rem}.info-card .lead{color:var(--color-text);font-weight:500;margin-bottom:.75rem}.info-card p{color:var(--color-text-muted);line-height:1.6}.event-header{background:linear-gradient(135deg,var(--color-primary-dark),var(--color-primary));color:#fff;border-radius:1rem;padding:1.25rem;margin-bottom:1rem;box-shadow:0 4px 12px #0d3b132e}.event-header h1{font-size:1.4rem;font-weight:800;line-height:1.2;margin-bottom:.4rem}.event-meta{display:flex;gap:.5rem;flex-wrap:wrap;font-size:.85rem}.event-format,.event-status{background:#ffffff26;padding:.2rem .7rem;border-radius:1rem;font-weight:500}.event-status.locked{background:#fff7e640;color:#fff7e6}.event-status.live{background:#c5a57259;color:#fff7e6}.event-status.closed{background:#ffffff14;opacity:.7}section.join-section,section.waiting-section,section.players-section,section.matches-section,section.leaderboard-section{background:#fff;border-radius:.9rem;padding:1.1rem 1rem;margin-bottom:.85rem;box-shadow:0 1px 4px #0000000a}section.locked-banner{background:linear-gradient(135deg,#fff7ed,#ffedd5);border:1px solid #fed7aa;border-radius:.7rem;padding:.85rem 1rem;margin-bottom:.85rem;color:#9a3412;font-size:.92rem;line-height:1.5}section.locked-banner p{margin:0}section.locked-banner strong{color:#7c2d12}section h2{font-size:1.05rem;margin-bottom:.5rem}section h3{font-size:.92rem;font-weight:700;color:var(--color-text);margin-bottom:.6rem}.muted{color:var(--color-text-muted);font-size:.9rem;margin-bottom:.85rem}#join-form{display:flex;flex-direction:column;gap:.6rem}#join-form input{width:100%;padding:.85rem 1rem;font-size:1.05rem;border:1px solid #d1d5db;border-radius:.5rem;background:#fff}#join-form input:focus{outline:2px solid var(--color-primary);border-color:var(--color-primary)}.btn-action{padding:.9rem 1.5rem;background:var(--color-primary);color:#fff;border:none;border-radius:.5rem;font-size:1rem;font-weight:700;cursor:pointer;width:100%}.btn-action:hover:not(:disabled){background:var(--color-primary-light)}.btn-action:disabled{background:#d1d5db;cursor:not-allowed}.form-error{color:#b91c1c;font-size:.85rem;margin-top:.4rem}.me-card{display:flex;flex-direction:column;gap:.2rem;background:linear-gradient(135deg,#f0fdf4,#ecfdf5);border:1px solid #a7f3d0;border-radius:.6rem;padding:.85rem 1rem;margin-bottom:.85rem}.me-label{font-size:.78rem;color:#065f46;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.me-card strong{font-size:1.15rem;color:#064e3b}.player-chips{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem}.player-chips li{display:inline-flex;align-items:center;gap:.3rem;padding:.35rem .7rem;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:1rem;font-size:.85rem;font-weight:500;transition:all .2s}.player-chips li.is-me{background:#ecfdf5;border-color:#6ee7b7;color:#065f46;font-weight:700}.player-chips li.streak-2{background:linear-gradient(135deg,#fef3c7,#fde68a);border-color:#fcd34d;color:#78350f}.player-chips li.streak-3{background:linear-gradient(135deg,#f97316,#dc2626);border-color:#b91c1c;color:#fff;box-shadow:0 0 14px #dc262666;animation:pulse-flame 2s ease-in-out infinite}.player-chips li.streak-5{background:linear-gradient(135deg,#dc2626,#7f1d1d);color:#fff7e6;border-color:#7f1d1d;box-shadow:0 0 18px #dc262699}.player-chips li.frozen{background:#f3f4f6;color:#9ca3af;opacity:.7}@keyframes pulse-flame{0%,to{box-shadow:0 0 14px #dc262666}50%{box-shadow:0 0 22px #dc2626b3}}.match-list{display:grid;gap:.5rem}.round-label{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin:1rem 0 .4rem}.match-card{background:#fff;border:1px solid #e5e7eb;border-radius:.6rem;padding:.75rem .9rem;display:flex;align-items:center;gap:.5rem;font-size:.95rem;transition:all .15s}.match-card.mine{border-color:var(--color-primary);background:#f0fdf4;cursor:pointer}.match-card.mine:hover{transform:translateY(-1px);box-shadow:0 3px 8px #1b5e2026}.match-card.completed{background:#fafaf5}.match-card .p1,.match-card .p2{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.match-card .p2{text-align:right}.match-card .winner{font-weight:800;color:#065f46}.match-card .loser{color:var(--color-text-muted);text-decoration:line-through;text-decoration-thickness:1px}.match-card .vs{color:#9ca3af;font-size:.78rem;flex:none;padding:0 .25rem}.match-card .score-badge{font-size:.78rem;color:var(--color-text-muted);background:#fff;border:1px solid #e5e7eb;padding:.1rem .5rem;border-radius:1rem;flex:none}.match-card .tap-hint{font-size:.72rem;color:var(--color-primary);font-weight:600;flex:none}.leaderboard{list-style:none;display:grid;gap:.35rem}.leaderboard li{display:grid;grid-template-columns:1.6rem 1fr auto auto;gap:.5rem;align-items:center;padding:.5rem .7rem;background:#fafaf5;border-radius:.4rem;font-size:.9rem}.leaderboard .lb-rank{font-weight:800;color:var(--color-text-muted)}.leaderboard .lb-rank.gold{color:#d97706}.leaderboard .lb-rank.silver{color:#6b7280}.leaderboard .lb-rank.bronze{color:#92400e}.leaderboard .lb-name{line-height:1.35}.leaderboard .lb-wins{font-weight:700;color:#065f46;font-size:.9rem}.leaderboard .lb-losses{font-size:.78rem;color:#9ca3af}.leaderboard li.is-me{background:#ecfdf5;border:1px solid #6ee7b7}.leaderboard li.tied{background:#fff7ed;border:1px dashed #fdba74}.leaderboard li.tied.is-me{background:#ecfdf5;border:1px solid #6ee7b7}.leaderboard .lb-trophy{color:#d97706;font-weight:700}.leaderboard.is-final{gap:.5rem}.leaderboard.is-final li:first-child{background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #fcd34d;padding:.85rem .9rem;font-size:.95rem;box-shadow:0 2px 8px #d9770626}.leaderboard.is-final li:first-child .lb-rank.gold{font-size:1.1rem}.leaderboard.is-final li:first-child .lb-name{font-weight:700}.state-drawing{text-align:center;padding:.5rem 0 2rem}.draw-header h1{font-size:1.5rem;margin-bottom:.5rem}.draw-header .muted{font-size:1rem}.current-pick{margin:1rem auto .5rem;text-align:center;font-size:1.15rem;font-weight:700;color:var(--color-primary-dark);min-height:1.8rem;line-height:1.4;padding:0 1rem}.current-pick .pick-q{color:var(--color-text-muted);font-weight:500;opacity:.6}.current-pick.team-complete{font-size:1.3rem;color:#b45309;animation:pop-team .5s cubic-bezier(.34,1.56,.64,1);background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:.6rem;padding:.6rem 1rem;margin:1rem auto;box-shadow:0 4px 16px #d9770640}@keyframes pop-team{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.08)}to{transform:scale(1);opacity:1}}.wheel-wrap{position:relative;width:min(320px,88vw);margin:1.5rem auto;aspect-ratio:1}.wheel-wrap svg{width:100%;height:100%;filter:drop-shadow(0 8px 24px rgba(0,0,0,.25))}#wheel-ring{transform-origin:0 0;transition:none}.wheel-pointer{position:absolute;top:-8px;left:50%;transform:translate(-50%);color:#dc2626;font-size:2.4rem;line-height:1;text-shadow:0 2px 6px rgba(0,0,0,.3);z-index:2}.wheel-name{font-size:11px;font-weight:700;fill:#fff}.revealed-section{background:#fff;border-radius:.9rem;padding:1.1rem 1rem;margin:1rem 0;box-shadow:0 1px 4px #0000000a;text-align:left}.revealed-section h3{font-size:.92rem;font-weight:700;margin-bottom:.6rem}.revealed-teams{list-style:none;display:grid;gap:.4rem;counter-reset:tlist}.revealed-teams li{counter-increment:tlist;padding:.55rem .85rem;background:#fafaf5;border-radius:.4rem;font-size:.95rem;display:flex;align-items:center;gap:.5rem;opacity:0;transform:translateY(-6px);animation:reveal-in .5s cubic-bezier(.2,.8,.2,1) forwards}.revealed-teams li:before{content:counter(tlist) ".";font-weight:800;color:var(--color-text-muted);min-width:1.4rem}.revealed-teams li.is-me{background:#ecfdf5;border:1px solid #6ee7b7;font-weight:700}@keyframes reveal-in{to{opacity:1;transform:translateY(0)}}[hidden]{display:none!important}.modal-backdrop{position:fixed;inset:0;background:#0000008c;z-index:9000;display:flex;align-items:flex-end;justify-content:center;backdrop-filter:blur(4px)}.modal-sheet{background:#fff;border-radius:1rem 1rem 0 0;padding:1.5rem 1.25rem 2rem;width:100%;max-width:480px;position:relative;box-shadow:0 -8px 32px #00000040;animation:sheet-up .25s cubic-bezier(.2,.8,.2,1)}@keyframes sheet-up{0%{transform:translateY(100%);opacity:.5}to{transform:translateY(0);opacity:1}}.modal-close{position:absolute;right:.8rem;top:.8rem;width:36px;height:36px;border-radius:50%;border:none;background:#f3f4f6;font-size:1.4rem;cursor:pointer;line-height:1}.modal-sheet h2{font-size:1.15rem;margin-bottom:.25rem;padding-right:2rem}.winner-picker{display:grid;gap:.5rem;margin:1rem 0 .75rem}.winner-btn{padding:1rem 1.1rem;background:#fff;border:2px solid #e5e7eb;border-radius:.6rem;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:.15rem;font:inherit;transition:all .15s}.winner-btn .winner-label{font-size:.78rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.winner-btn strong{font-size:1.05rem}.winner-btn:hover{border-color:var(--color-primary)}.winner-btn.selected{border-color:var(--color-primary);background:#ecfdf5;color:#065f46}.winner-btn.selected .winner-label{color:var(--color-primary-dark)}.score-label{display:block;font-size:.78rem;font-weight:600;color:var(--color-text-muted);margin:.85rem 0 .4rem;text-transform:uppercase;letter-spacing:.04em}#score-text{width:100%;padding:.7rem .9rem;border:1px solid #d1d5db;border-radius:.5rem;font-size:1rem;margin-bottom:1rem;background:#fff}#report-submit{margin-top:.25rem}@media(min-width:640px){.modal-backdrop{align-items:center}.modal-sheet{border-radius:1rem;max-width:440px}@keyframes sheet-up{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}}
