.tournament-bracket-container{background:#fdfdfd;border:1px solid #e1e4e8;border-radius:12px;max-height:90vh;padding:20px;position:relative;overflow:auto;box-shadow:inset 0 2px 8px #00000008}.bracket-scroll-hint{text-align:center;color:#666;z-index:10;background:#fff;border:1px solid #eee;border-radius:20px;width:fit-content;margin-bottom:12px;padding:8px 12px;font-size:13px;position:sticky;top:0;left:50%;transform:translate(-50%);box-shadow:0 2px 4px #0000000d}.tournament-bracket{gap:48px;min-width:fit-content;padding:28px 20px;display:flex;position:sticky}.bracket-round{flex-direction:column;gap:16px;min-width:250px;display:flex}.round-header{z-index:5;flex-direction:column;align-items:center;gap:4px;margin-bottom:4px;padding-bottom:12px;display:flex;position:sticky;top:45px}.round-name{color:#fff;border-radius:20px;padding:8px 24px;font-size:14px;font-weight:600;box-shadow:0 2px 8px #5e4cdb4d;background:linear-gradient(135deg,#5e4cdb 0%,#7c6ae6 100%)!important}.round-matches{color:#666;font-size:12px;font-weight:500}.round-matches-container{flex-direction:column;flex:1;justify-content:space-around;display:flex}.match-card{background:#fff;border:1px solid #e6e9ef;border-left:6px solid #28a745;border-radius:12px;width:230px;min-width:230px;padding:8px;transition:transform .18s,box-shadow .18s;position:relative;box-shadow:0 8px 20px #1e293b0f}.match-card:hover{transform:translateY(-4px);box-shadow:0 12px 30px #1e293b14}.match-card.completed{border-color:#28a745}.match-card.live{border-color:#dc3545;animation:2s infinite pulse}@keyframes pulse{0%{box-shadow:0 0 #dc354566}70%{box-shadow:0 0 0 10px #dc354500}to{box-shadow:0 0 #dc354500}}.match-header{color:#fff;background:linear-gradient(135deg,#3d2f8f 0%,#5e4cdb 100%);border-radius:8px;justify-content:space-between;align-items:center;gap:6px;margin-bottom:6px;padding:6px 8px;display:flex}.match-id,.match-no{letter-spacing:.5px;font-size:13px;font-weight:600}.match-date{opacity:.95;font-size:12px}.match-status{border-radius:4px;padding:3px 10px;font-size:11px}.match-time{color:#666;margin-bottom:12px;padding:0 4px;font-size:12px;font-weight:500}.live-dot{background:#fff;border-radius:50%;width:6px;height:6px;margin-right:4px;animation:1s infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.match-teams{background:#f6f7fb;border-radius:10px;flex-direction:column;gap:12px;padding:10px;display:flex}.team{background:#fff;border-radius:8px;align-items:center;gap:8px;padding:8px;transition:transform .12s,background .12s;display:flex}.team:hover{background:#fafbff;transform:translate(2px)}.team.winner{background:linear-gradient(135deg,#28a7451a 0%,#28a7450d 100%);border:1px solid #28a745}.team-seed{color:#fff;background:linear-gradient(135deg,#5e4cdb 0%,#7c6ae6 100%);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;min-width:32px;height:32px;font-size:14px;font-weight:700;display:flex;box-shadow:0 2px 6px #5e4cdb4d}.team-seed:empty{box-shadow:none;background:#e0e0e0}.team-name{color:#333;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:14px;font-weight:600;overflow:hidden}.athlete-info{flex:1;min-width:0}.athlete-district{color:#888;margin-top:2px;font-size:11px}.winner-icon{color:#28a745;flex-shrink:0;margin-left:auto;font-size:18px}.bi{vertical-align:middle;display:inline-block}.match-score{text-align:center;color:#5e4cdb;background:linear-gradient(135deg,#5e4cdb14 0%,#7c6ae60f 100%);border-radius:10px;margin-top:8px;padding:6px 10px;font-size:15px;font-weight:700}.bracket-connectors{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;top:0;left:0}.bracket-round .match-card+.match-card{margin-top:18px}.bracket-round.champion-round{border-radius:12px;padding:8px}.bracket-round:not(:last-child) .match-card:after{content:"";background:#dfe4ee;width:26px;height:2px;position:absolute;top:50%;right:-26px}.match-venue{color:#666;background:#fff;border-radius:6px;align-items:center;gap:6px;margin-top:8px;padding:6px 8px;font-size:12px;display:flex}.match-venue svg{width:14px;height:14px}.match-card.past-match{opacity:.7}.match-card.past-match .match-header{background:linear-gradient(135deg,#6c757d 0%,#8a8d91 100%)}.match-card.past-match .team-seed{background:linear-gradient(135deg,#6c757d 0%,#8a8d91 100%);box-shadow:0 2px 6px #6c757d4d}.match-card.past-match .match-score{color:#6c757d;background:linear-gradient(135deg,#6c757d1a 0%,#8a8d911a 100%)}.empty-state{text-align:center;color:#666;padding:60px 20px}.empty-state-icon{color:#ccc;margin-bottom:16px;font-size:48px}.loading-container{flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:60px 20px;display:flex}.spinner{border:4px solid #f3f3f3;border-top-color:#5e4cdb;border-radius:50%;width:40px;height:40px;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-container{color:#721c24;background:#f8d7da;border:1px solid #f5c6cb;border-radius:8px;margin:20px 0;padding:20px}.error-container button{color:#fff;cursor:pointer;background:#dc3545;border:none;border-radius:6px;margin-top:12px;padding:8px 16px;font-weight:600}.error-container button:hover{background:#c82333}@media (max-width:768px){.tournament-bracket{gap:30px;padding:10px}.bracket-round{min-width:240px}.match-card{padding:10px}.team-seed{width:36px;min-width:36px;height:36px;font-size:12px}.team-name{font-size:13px}.match-id{font-size:12px}.match-date{font-size:11px}.bracket-round:not(:last-child) .match-card:after{display:none}}
