@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";.leaderboard-table-container{overflow-x:auto;border-radius:var(--radius-lg);background:var(--color-bg-secondary);border:1px solid var(--color-border);box-shadow:var(--shadow-md)}.leaderboard-table{border-collapse:collapse;font-size:.9rem;font-variant-numeric:tabular-nums;--rank-col-width: 60px;width:max-content;margin:0 auto}.leaderboard-table thead{position:sticky;top:0;z-index:10}.leaderboard-table th{background:var(--color-accent);color:#fff;font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;padding:.85rem .5rem;text-align:center;border-bottom:3px solid var(--color-gold);white-space:nowrap}.leaderboard-table .sub-header th{background:#0c2d48d9;font-size:.7rem;font-weight:600;padding:.375rem .5rem;border-bottom:1px solid var(--color-border);letter-spacing:.04em}.col-course,.sub-header .col-score{border-left:1px solid rgba(255,255,255,.15)}.course-name{font-size:.8rem;display:block}.course-name-with-logo{display:none}.course-logo{max-height:120px;max-width:240px;object-fit:contain;display:block;margin:0 auto}.leaderboard-table td{padding:.5rem;text-align:center;border-bottom:1px solid var(--color-border-light);transition:background var(--transition-fast)}.col-rank{width:60px;max-width:60px;font-weight:700;font-size:1.05rem}.col-player{width:180px;min-width:150px;max-width:180px;text-align:left!important;font-weight:500;font-size:1.05rem}.leaderboard-table td.col-rank,.leaderboard-table th.col-rank{position:sticky;left:0;z-index:3}.leaderboard-table td.col-player,.leaderboard-table th.col-player{position:sticky;left:var(--rank-col-width);z-index:3}.leaderboard-table thead th.col-rank,.leaderboard-table thead th.col-player{z-index:12}.leaderboard-table td.col-rank,.leaderboard-table td.col-player{background:var(--color-bg-secondary)}.player-row.main-bracket.even td.col-rank,.player-row.main-bracket.even td.col-player{background:#fffdf4}.player-row.main-bracket.odd td.col-rank,.player-row.main-bracket.odd td.col-player{background:#fffceb}.player-row.purple-bracket.even td.col-rank,.player-row.purple-bracket.even td.col-player{background:#f9f6fd}.player-row.purple-bracket.odd td.col-rank,.player-row.purple-bracket.odd td.col-player{background:#f2eefb}.player-row.pink-bracket.even td.col-rank,.player-row.pink-bracket.even td.col-player{background:#fef4f9}.player-row.pink-bracket.odd td.col-rank,.player-row.pink-bracket.odd td.col-player{background:#fde9f4}.player-row.copper-bracket.even td.col-rank,.player-row.copper-bracket.even td.col-player{background:#fdf8f5}.player-row.copper-bracket.odd td.col-rank,.player-row.copper-bracket.odd td.col-player{background:#faf2eb}.player-row:hover td.col-rank,.player-row:hover td.col-player{filter:brightness(.97)}.col-score{width:50px;max-width:60px;font-weight:600;font-size:.95rem;border-left:1px solid var(--color-border)}.col-gsps{width:70px;max-width:80px;color:var(--color-text-muted);font-size:.8rem}.col-total-score,.col-total-gsps{width:70px;max-width:80px;font-weight:900;font-size:1.05rem}.col-total-score{border-left:2px solid var(--color-border)}.section-end{border-right:2px solid var(--color-border)}thead .section-end{border-right-color:#ffffff40}.rank{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:#e2e8f0;color:var(--color-text);font-weight:700;font-size:.85rem;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.player-row.main-bracket{border-left:4px solid #d4a800}.player-row.main-bracket.even{background:#ffeb7a14}.player-row.main-bracket.odd{background:#ffeb7a26}.player-row.main-bracket .rank{background:linear-gradient(135deg,#d4a800,#b8960e);color:#fff;box-shadow:0 1px 3px #d4a8004d}.player-row.purple-bracket{border-left:4px solid #9370db}.player-row.purple-bracket.even{background:#9370db0f}.player-row.purple-bracket.odd{background:#9370db1f}.player-row.purple-bracket .rank{background:linear-gradient(135deg,#9370db,#8a2be2);color:#fff;box-shadow:0 1px 3px #9370db4d}.player-row.purple-bracket .player-name{color:#6a1b9a}.player-row.pink-bracket{border-left:4px solid #e91e90}.player-row.pink-bracket.even{background:#e91e900d}.player-row.pink-bracket.odd{background:#e91e901a}.player-row.pink-bracket .rank{background:linear-gradient(135deg,#e91e90,#c2185b);color:#fff;box-shadow:0 1px 3px #e91e904d}.player-row.pink-bracket .player-name{color:#ad1457}.player-row.copper-bracket{border-left:4px solid #b87333}.player-row.copper-bracket.even{background:#b873330d}.player-row.copper-bracket.odd{background:#cd7f321a}.player-row.copper-bracket .rank{background:linear-gradient(135deg,#b87333,#cd7f32);color:#fff;box-shadow:0 1px 3px #b873334d}.player-row.copper-bracket .player-name{color:#8d5524}.score.dnf{color:var(--color-error);font-style:italic}.course-best{position:relative;background:#ffd70026}.course-best .score{color:#b8860b}.best-indicator{color:#daa520;font-size:.7rem;margin-left:2px;vertical-align:super;text-shadow:0 0 4px rgba(255,215,0,.6);animation:starPulse 2s ease-in-out infinite}@keyframes starPulse{0%,to{opacity:1;text-shadow:0 0 4px rgba(255,215,0,.6)}50%{opacity:.7;text-shadow:0 0 8px rgba(255,215,0,.9)}}.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast)}.sortable:hover{background:#ffffff26}.sub-header .sortable:hover{background:#ffffff1f}.player-row{transition:transform var(--transition-fast),background var(--transition-fast)}.player-row:hover{background:#0c2d480a;transform:scale(1.002)}.player-row:hover .rank{transform:scale(1.1);box-shadow:0 2px 8px #00000026}@keyframes scoreUpdate{0%{background:#ffd70059}to{background:transparent}}.score-updated{animation:scoreUpdate 2s ease-out}.player-row:nth-child(1) .rank,.player-row:nth-child(2) .rank,.player-row:nth-child(3) .rank{width:38px;height:38px;font-size:1rem;color:#fff;font-weight:800}.player-row:nth-child(1) .rank{background:linear-gradient(135deg,gold,#ffc107,#daa520);box-shadow:0 0 0 2px #ffd70066,0 0 16px #ffd70080;text-shadow:0 1px 2px rgba(0,0,0,.3);animation:goldPulse 2.5s ease-in-out infinite}@keyframes goldPulse{0%,to{box-shadow:0 0 0 2px #ffd70066,0 0 16px #ffd70080}50%{box-shadow:0 0 0 3px #ffd70080,0 0 24px #ffd70099}}.player-row:nth-child(2) .rank{background:linear-gradient(135deg,#e0e0e0,silver,#a0a0a0);box-shadow:0 0 0 2px #c0c0c066,0 0 12px #c0c0c066;text-shadow:0 1px 2px rgba(0,0,0,.3)}.player-row:nth-child(3) .rank{background:linear-gradient(135deg,#cd7f32,#b8860b,sienna);box-shadow:0 0 0 2px #cd7f3266,0 0 12px #cd7f3266;text-shadow:0 1px 2px rgba(0,0,0,.3)}.inline-gsps{display:block;font-size:.65rem;color:var(--color-text-muted);font-weight:400;line-height:1.1;margin-top:1px}.inline-gsps.total{font-size:.7rem;font-weight:600}.player-row.expanded{background:#0c2d480f!important}@media (max-width: 1200px){.leaderboard-table{font-size:.8rem}.leaderboard-table th,.leaderboard-table td{padding:.375rem .25rem}.course-name{font-size:.7rem}.course-logo{max-height:90px;max-width:180px}.player-row.main-bracket,.player-row.purple-bracket,.player-row.pink-bracket,.player-row.copper-bracket{border-left-width:3px}.rank{width:30px;height:30px;font-size:.8rem}.player-row:nth-child(1) .rank,.player-row:nth-child(2) .rank,.player-row:nth-child(3) .rank{width:34px;height:34px;font-size:.9rem}}@media (max-width: 768px){.col-player{min-width:100px}.player-name{font-size:.8rem}.player-row.main-bracket,.player-row.purple-bracket,.player-row.pink-bracket,.player-row.copper-bracket{border-left-width:3px}.rank{width:28px;height:28px;font-size:.75rem}.player-row:nth-child(1) .rank,.player-row:nth-child(2) .rank,.player-row:nth-child(3) .rank{width:30px;height:30px;font-size:.8rem}}@media (max-width: 480px){.leaderboard-table{--rank-col-width: 40px;font-size:.7rem}.leaderboard-table th{font-size:.6rem;padding:.4rem .15rem;letter-spacing:.02em}.leaderboard-table .sub-header th{font-size:.55rem;padding:.2rem .1rem}.leaderboard-table td{padding:.25rem .1rem}.col-rank{width:40px;font-size:.8rem}.col-player{min-width:80px;max-width:90px}.player-name{font-size:.7rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;max-width:80px}.col-score{width:34px;font-size:.75rem}.col-total-score,.col-total-gsps{font-size:.8rem}.rank{width:24px;height:24px;font-size:.65rem}.player-row:nth-child(1) .rank,.player-row:nth-child(2) .rank,.player-row:nth-child(3) .rank{width:26px;height:26px;font-size:.7rem}.course-logo{max-height:40px;max-width:60px}.course-name{font-size:.55rem}.leaderboard-table td.col-player{box-shadow:2px 0 4px #00000014}.leaderboard-table thead th.col-player{box-shadow:2px 0 4px #00000026}.best-indicator{font-size:.5rem}.player-row.main-bracket,.player-row.purple-bracket,.player-row.pink-bracket,.player-row.copper-bracket{border-left-width:2px}.leaderboard-table-container{border-radius:var(--radius-sm)}.inline-gsps{font-size:.55rem}.inline-gsps.total{font-size:.6rem}.player-row{cursor:pointer}.player-row:hover,.player-row:hover .rank{transform:none}}.stream-player-container{position:relative;width:100%;padding-top:56.25%;background:#000;border-radius:4px;overflow:hidden}.stream-video{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}.stream-offline{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#fff6;font-size:.75rem;font-style:italic}.stream-player-gate{position:relative;width:100%;padding-top:56.25%;background:#0006;border-radius:4px;overflow:hidden}.stream-gate-message{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;color:#ffffffb3;font-size:.8rem;text-align:center;padding:.5rem;box-sizing:border-box}.stream-gate-message.kicked{color:#ff6b6b}.gate-icon{font-size:1.5rem;color:gold}.gate-subtext{font-size:.7rem;color:#fff6}.gate-login-link{padding:.3rem .75rem;background:gold;color:#1a1a2e;border-radius:4px;text-decoration:none;font-weight:600;font-size:.75rem;transition:background .15s}.gate-login-link:hover{background:#ffed4a}.gate-actions{display:flex;gap:.5rem}.gate-btn{padding:.3rem .75rem;background:gold;color:#1a1a2e;border:none;border-radius:4px;font-weight:600;font-size:.75rem;cursor:pointer;transition:background .15s}.gate-btn:hover{background:#ffed4a}.gate-btn:disabled{opacity:.6;cursor:not-allowed}.gate-btn-secondary{background:#ffffff26;color:#fffc}.gate-btn-secondary:hover{background:#ffffff40}.gate-btn-watch{padding:.4rem 1.25rem;font-size:.85rem}.stream-loading{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#ffffff80;font-size:.75rem}.featured-machines{background:linear-gradient(135deg,#0f3460,#16213e);border-bottom:2px solid var(--color-gold);padding:0}.featured-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;padding:.5rem 1.25rem;background:none;border:none;color:#fff;cursor:pointer;font-size:.85rem}.featured-toggle:hover{background:#ffffff0d}.featured-title{font-weight:600;text-transform:uppercase;letter-spacing:.05em;display:flex;align-items:center;gap:.75rem}.featured-count{font-weight:400;font-size:.75rem;color:#fff9}.featured-arrow{font-size:.7rem;color:#ffffff80}.featured-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;padding:0 1.25rem .75rem}.featured-card{background:#ffffff14;border-radius:8px;padding:.6rem .75rem;border:1px solid rgba(255,255,255,.1);transition:border-color .2s}.featured-card.online{border-color:#4caf5066}.featured-card.offline{opacity:.5}.featured-card-header{display:flex;align-items:center;gap:.4rem;margin-bottom:.4rem}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.online{background:#4caf50;box-shadow:0 0 6px #4caf5099}.status-dot.offline{background:#f44336}.machine-label{font-size:.7rem;color:#ffffffb3;text-transform:uppercase;letter-spacing:.03em;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.last-update{font-size:.65rem;color:#fff6}.featured-card-body{display:flex;flex-direction:column;gap:.2rem}.featured-card-body.empty{color:#fff6;font-size:.75rem;font-style:italic;padding:.25rem 0}.featured-card .player-name{font-weight:700;font-size:.9rem;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hole-info{display:flex;justify-content:space-between;font-size:.75rem;color:#ffffffb3}.score-info{display:flex;justify-content:space-between;align-items:baseline}.total-score{font-weight:800;font-size:1.1rem}.total-score.under{color:#4caf50}.total-score.over{color:#f44336}.total-score.even{color:#fff}.distance{font-size:.75rem;color:#fff9}.view-tabs{display:flex;gap:2px;margin-left:auto}.view-tab{background:#ffffff1a;border:none;color:#ffffff80;font-size:.6rem;padding:.15rem .4rem;cursor:pointer;text-transform:uppercase;letter-spacing:.03em;border-radius:3px;transition:all .15s}.view-tab:hover{background:#ffffff26;color:#fffc}.view-tab.active{background:#fff3;color:#fff}.ivs-player-container{position:relative;width:100%;padding-top:56.25%;background:#000;border-radius:4px;overflow:hidden}.ivs-video{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}.ivs-offline{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#fff6;font-size:.75rem;font-style:italic}.featured-card.streaming{grid-column:span 2}body[data-env=dev] .featured-machines{background:linear-gradient(135deg,#0f6034,#163e21)}@media (max-width: 768px){.featured-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.5rem;padding:0 .75rem .5rem}.featured-toggle{padding:.4rem .75rem}.featured-card.streaming{grid-column:span 1}}.connection-status{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border-radius:20px;font-size:.75rem;font-weight:500;text-transform:uppercase}.status-dot{width:8px;height:8px;border-radius:50%}.status-connected{background:#4caf5033;color:var(--color-success)}.status-connected .status-dot{background:var(--color-success);box-shadow:0 0 6px var(--color-success)}.status-disconnected{background:#f4433633;color:var(--color-error)}.status-disconnected .status-dot{background:var(--color-error)}.status-connecting{background:#ff980033;color:var(--color-warning)}.status-connecting .status-dot{background:var(--color-warning);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.leaderboard-page{display:flex;flex-direction:column;height:100vh;background:var(--color-bg)}.leaderboard-header{background:linear-gradient(135deg,#0c2d48,#163a5c);border-bottom:3px solid var(--color-gold);padding:1rem 1.25rem;position:sticky;top:0;z-index:100;box-shadow:0 4px 16px #0c2d4840}.header-content{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem;max-width:1600px;margin:0 auto}.title{font-size:1.75rem;font-weight:800;color:#fff;margin:0;text-transform:uppercase;letter-spacing:.03em}.header-controls{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.tournament-select{padding:.5rem 1rem;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-full);background:#ffffff1a;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;font-size:.9rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.tournament-select option{background:#0c2d48;color:#fff}.tournament-select:focus{outline:none;border-color:var(--color-gold);box-shadow:0 0 0 2px #ffeb7a4d}.tournament-select:hover{background:#ffffff26;border-color:#ffffff59}.scroll-toggle{padding:.5rem 1.25rem;border:1px solid rgba(255,255,255,.25);border-radius:var(--radius-full);background:transparent;color:#ffffffd9;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:all var(--transition-fast)}.scroll-toggle:hover{background:#ffffff1a;color:#fff}.scroll-toggle.active{background:var(--color-gold);color:#0c2d48;border-color:var(--color-gold);box-shadow:0 0 12px #ffeb7a4d}.tournament-info{display:flex;gap:1rem;align-items:center;margin-top:.75rem;padding-top:.75rem;border-top:1px solid rgba(255,255,255,.12);max-width:1600px;margin-left:auto;margin-right:auto}.tournament-name{font-size:1.05rem;font-weight:600;color:#ffffffe6}.tournament-phase{padding:.2rem .75rem;background:var(--color-gold);color:#0c2d48;border-radius:var(--radius-full);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.leaderboard-content{flex:1;min-height:0;overflow-y:auto;padding:1.25rem;max-width:1600px;margin:0 auto;width:100%}.loading-container,.error-container,.empty-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;gap:1rem}.leaderboard-footer{background:linear-gradient(135deg,#0c2d48,#163a5c);border-top:3px solid var(--color-gold);padding:.75rem;text-align:center;color:#fff9;font-size:.8rem;font-weight:500;box-shadow:0 -4px 16px #0c2d4826}body[data-env=dev] .leaderboard-header{background:linear-gradient(135deg,#0c4830,#165c3a);box-shadow:0 4px 16px #0c483040}body[data-env=dev] .leaderboard-footer{background:linear-gradient(135deg,#0c4830,#165c3a);box-shadow:0 -4px 16px #0c483026}body[data-env=dev] .tournament-select option{background:#0c4830}body[data-env=dev] .scroll-toggle.active,body[data-env=dev] .tournament-phase{color:#0c4830}@media (max-width: 768px){.header-content{flex-direction:column;align-items:flex-start}.title{font-size:1.25rem}.header-controls{width:100%;justify-content:space-between}.tournament-select{flex:1;min-width:0}}@media (max-width: 480px){.leaderboard-header{padding:.5rem .75rem}.header-content{gap:.5rem}.title{font-size:1rem}.header-controls{gap:.5rem}.tournament-select{padding:.35rem .5rem;font-size:.8rem}.scroll-toggle{padding:.3rem .6rem;font-size:.65rem}.tournament-info{margin-top:.35rem;padding-top:.35rem;gap:.5rem}.tournament-name{font-size:.8rem}.tournament-phase{font-size:.6rem;padding:.1rem .4rem}.leaderboard-content{padding:.35rem}.leaderboard-footer{padding:.35rem;font-size:.65rem}}.bracket-page{min-height:100vh;display:flex;flex-direction:column;background:var(--color-bg)}.bracket-header{display:flex;align-items:center;justify-content:space-between;padding:1rem;background:var(--color-bg-secondary);border-bottom:2px solid var(--color-gold)}.bracket-header h1{margin:0;font-size:1.5rem;color:var(--color-gold)}.back-link,.view-full-link{color:var(--color-gold);text-decoration:none;font-size:.9rem}.back-link:hover,.view-full-link:hover{text-decoration:underline}.bracket-embed-container{flex:1;display:flex;padding:1rem}.bracket-iframe{width:100%;min-height:600px;flex:1;border:1px solid #333;border-radius:8px;background:#fff}.loading-container,.error-container,.empty-container{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center;padding:2rem}.empty-container h2{margin:0;color:var(--color-text)}@media (max-width: 768px){.bracket-header{flex-direction:column;gap:.5rem}.bracket-iframe{min-height:400px}}.admin-layout{display:flex;min-height:100vh}.admin-topbar{display:none}.admin-sidebar{width:250px;background:var(--color-bg-secondary);border-right:1px solid var(--color-border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100}.sidebar-header{padding:1.5rem 1rem;border-bottom:1px solid var(--color-border);display:flex;flex-direction:column;gap:.5rem}.sidebar-header h2{margin:0;font-size:1.25rem;color:var(--color-gold)}.admin-badge{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;text-transform:uppercase;width:fit-content}.admin-badge.role-god{background:#dc354540;color:#ff6b6b}.admin-badge.role-super_admin{background:#ff980040;color:#ffb74d}.admin-badge.role-tournament_admin{background:#4caf5040;color:#81c784}.sidebar-nav{flex:1;padding:1rem 0;display:flex;flex-direction:column;gap:.25rem;overflow-y:auto}.nav-link{display:block;padding:.75rem 1rem;color:var(--color-text);text-decoration:none;border-left:3px solid transparent;transition:all .2s}.nav-link:hover{background:#ffffff0d;border-left-color:var(--color-text-muted)}.nav-link.active{background:#ffeb7a1a;border-left-color:var(--color-gold);color:var(--color-gold)}.nav-divider{height:1px;background:#333;margin:.5rem 1rem}.sidebar-footer{padding:1rem;border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:.5rem}.user-info{font-size:.875rem}.app-version{font-size:.7rem;color:var(--color-text-muted);opacity:.5}.user-email,.user-username{color:var(--color-text-muted);word-break:break-all}.admin-main{flex:1;margin-left:250px;padding:2rem;min-height:100vh;overflow-y:auto}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:1rem}.sidebar-overlay{display:none}.hamburger-btn{background:none;border:none;color:var(--color-text);cursor:pointer;padding:.5rem;display:flex;align-items:center;justify-content:center}.hamburger-icon{font-size:1.5rem;line-height:1}@media (max-width: 1024px){.admin-layout{flex-direction:column}.admin-topbar{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:90}.topbar-title{margin:0;font-size:1.1rem;color:var(--color-gold);flex:1}.admin-sidebar{width:280px;transform:translate(-100%);transition:transform .25s ease;top:0;bottom:0;z-index:200}.admin-sidebar.menu-open{transform:translate(0)}.sidebar-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:150}.admin-main{margin-left:0;padding:1rem}}@media (max-width: 480px){.admin-topbar{padding:.5rem .75rem}.topbar-title{font-size:1rem}.admin-sidebar{width:260px}.admin-main{padding:.75rem}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-bg) 0%,#252538 100%);padding:1rem}.login-card{width:100%;max-width:400px;background:var(--color-bg-secondary);border-radius:8px;border:1px solid var(--color-border);overflow:hidden}.login-header{padding:2rem;text-align:center;border-bottom:1px solid var(--color-border);background:var(--color-accent)}.login-header h1{margin:0 0 .5rem;color:var(--color-gold);font-size:1.5rem}.login-header p{margin:0;color:#ffffffb3}.login-form{padding:2rem}.btn-block{width:100%;margin-top:1rem}.login-footer{padding:1rem 2rem 2rem;text-align:center}.login-footer a{color:var(--color-text-muted);font-size:.875rem}.login-footer a:hover{color:var(--color-gold)}.dashboard-page{max-width:1200px}.dashboard-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}.card.full-width{grid-column:1 / -1}.status-card-content{display:flex;align-items:center;justify-content:space-between;margin-top:1rem}.status-indicator{display:flex;align-items:center;gap:.5rem}.status-indicator .status-dot{width:12px;height:12px;border-radius:50%}.status-indicator.active .status-dot{background:var(--color-success);box-shadow:0 0 8px var(--color-success)}.status-indicator.inactive .status-dot{background:var(--color-text-muted)}.status-text{font-size:1.25rem;font-weight:600}.quick-actions{display:flex;gap:1rem;margin-top:1rem}.tournaments-list{display:flex;flex-direction:column;gap:.75rem;margin-top:1rem}.tournament-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem;background:#00000026;border-radius:4px;flex-wrap:wrap;gap:.5rem}.tournament-info{display:flex;align-items:center;gap:.75rem}.tournament-name{font-weight:500}.phase-badge{padding:.25rem .5rem;border-radius:4px;font-size:.7rem;text-transform:uppercase}.tournament-actions{display:flex;gap:.5rem;flex-wrap:wrap}@media (max-width: 768px){.dashboard-grid{grid-template-columns:1fr}.tournament-item{flex-direction:column;align-items:flex-start}.tournament-actions{width:100%;margin-top:.5rem}}@media (max-width: 480px){.quick-actions{flex-direction:column}.quick-actions .btn{width:100%}.tournament-item{padding:.5rem}.tournament-info{flex-wrap:wrap;gap:.5rem}.tournament-name{font-size:.9rem}.tournament-actions .btn{flex:1;font-size:.8rem}.status-text{font-size:1rem}}.tournament-manager{max-width:1200px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem}.manager-layout{display:grid;grid-template-columns:250px 1fr;gap:1.5rem}.tournament-list{height:fit-content;position:sticky;top:1rem}.list{list-style:none;margin:1rem 0 0;padding:0}.list-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem;margin-bottom:.25rem;border-radius:4px;cursor:pointer;transition:background .2s}.list-item:hover{background:#ffffff0d}.list-item.active{background:#ffeb7a1a;border-left:3px solid var(--color-gold)}.item-name{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phase-badge{padding:.125rem .375rem;border-radius:3px;font-size:.65rem;text-transform:uppercase}.item-badges{display:flex;gap:.25rem;flex-shrink:0}.phase-qualifier{background:#4caf5033;color:var(--color-success)}.phase-bracket{background:#ff980033;color:var(--color-warning)}.phase-completed{background:#9c9c9c33;color:var(--color-text-muted)}.phase-default{background:#2196f333;color:#2196f3}.tournament-form{padding:1.5rem}.form-help{font-size:.875rem;margin-bottom:.75rem}.course-links{display:flex;flex-direction:column;gap:.5rem}.course-link-row{display:flex;gap:.5rem;align-items:center;overflow:hidden}.course-number{width:24px;text-align:center;font-weight:600;color:var(--color-text-muted)}.course-select{width:150px;min-width:150px;max-width:150px;flex-shrink:0}.url-input{flex:1;min-width:0}.bracket-config{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--color-border)}.bracket-config-row{display:flex;gap:1.5rem;flex-wrap:wrap;margin-bottom:1rem}.config-field{flex:1;min-width:180px}.config-field label{display:block;margin-bottom:.5rem;font-weight:500}.config-field input[type=number]{width:100%;max-width:120px}.config-field input[type=checkbox]{margin-right:.5rem}.config-hint{display:block;font-size:.75rem;color:var(--color-text-muted);margin-top:.25rem}.bracket-preview{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;padding:.75rem 1rem;background:#ffffff0d;border-radius:4px;font-size:.875rem}.preview-label{color:var(--color-text-muted);font-weight:500}.preview-main{padding:.25rem .75rem;background:linear-gradient(135deg,#ffd7004d,#ffb70033);border:1px solid var(--color-gold);border-radius:4px;color:var(--color-gold)}.preview-purple{padding:.25rem .75rem;background:linear-gradient(135deg,#9370db4d,#8a2be233);border:1px solid #9370db;border-radius:4px;color:plum}.preview-pink{padding:.25rem .75rem;background:linear-gradient(135deg,#e91e904d,#c2185b33);border:1px solid #e91e90;border-radius:4px;color:#f48fb1}.preview-copper{padding:.25rem .75rem;background:linear-gradient(135deg,#b873334d,#cd7f3233);border:1px solid #b87333;border-radius:4px;color:#deb887}.challonge-config{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--color-border)}.challonge-key-select{display:flex;gap:.5rem;align-items:center;margin-bottom:1rem}.challonge-key-select select{flex:1;max-width:400px}.key-form-inline{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.key-form-inline .form-control{width:auto;min-width:180px}.key-form-inline .form-help{margin-bottom:0;white-space:nowrap}.password-field{position:relative;display:flex;align-items:center}.password-field .form-control{padding-right:3.5rem;min-width:220px}.password-toggle{position:absolute;right:.5rem;background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:.75rem;padding:.25rem .5rem}.password-toggle:hover{color:var(--color-text)}.form-actions{display:flex;gap:1rem;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--color-border)}@media (max-width: 768px){.manager-layout{grid-template-columns:1fr}.tournament-list{position:relative;top:0}.page-header{flex-direction:column;align-items:flex-start;gap:.75rem}.page-header .btn{width:100%}.bracket-config-row{flex-direction:column;gap:1rem}.config-field{min-width:unset}.config-field input[type=number]{max-width:100%}.challonge-key-select{flex-direction:column;align-items:stretch}.challonge-key-select select{max-width:100%}.key-form-inline{flex-direction:column;align-items:stretch}.key-form-inline .form-control{width:100%;min-width:unset}.form-actions{flex-direction:column}.form-actions .btn{width:100%}.course-link-row{flex-wrap:wrap}.course-select{width:120px;min-width:120px;max-width:120px}.url-input{flex-basis:100%;order:3}}@media (max-width: 480px){.course-link-row{flex-direction:column;align-items:stretch}.course-number{display:none}.course-select{width:100%;min-width:unset;max-width:unset}.url-input{order:unset;flex-basis:auto}.list-item{padding:.5rem;font-size:.85rem}.item-name{font-size:.8rem}.tournament-form{padding:1rem}}.ps-manager{max-width:1600px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:2rem;gap:1rem;flex-wrap:wrap}.player-form{padding-top:1rem}.form-row{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.form-row .form-group{flex:1;min-width:150px;margin-bottom:0}.form-row .btn{height:42px;margin-bottom:0}.card-header{display:flex;align-items:center;gap:.5rem}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 .5rem;background:var(--color-accent);border-radius:12px;font-size:.75rem}.hint{margin-left:auto;font-size:.8rem;font-weight:400;color:var(--color-text-muted)}.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.sortable:hover{color:var(--color-gold, #d4a800)}.row-actions{display:flex;gap:.5rem}.name-cell.editable{cursor:pointer;position:relative}.name-cell.editable:hover{background:#ffeb7a26}.name-cell.saving{opacity:.5;pointer-events:none}.name-cell .inline-edit-input{width:100%;padding:.25rem .5rem;border:2px solid var(--color-gold, #d4a800);border-radius:4px;background:var(--color-bg, #1a1a2e);color:var(--color-text, #e0e0e0);font-size:inherit;font-family:inherit;outline:none}.name-cell .inline-edit-input:focus{box-shadow:0 0 0 2px #d4a8004d}.name-cell .saving-indicator{color:var(--color-text-muted);font-style:italic}.nickname-cell{font-size:.85em}.matched-cell{text-align:center}.exclude-col{text-align:center;width:50px}.actions-cell{white-space:nowrap}.scores-table{font-size:.875rem;touch-action:manipulation;width:auto;border-collapse:collapse}.scores-table th,.scores-table td{padding:.5rem}.rank-cell{width:60px;min-width:45px;font-weight:600}.player-cell{text-align:left}.player-name-text{display:block;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sub-header{font-size:.7rem;font-weight:500;color:var(--color-text-muted);text-transform:uppercase}.score-cell{width:60px;min-width:45px;white-space:nowrap}.gsps-cell{color:var(--color-text-muted);font-size:.8em;border-right:1px solid var(--color-border, rgba(255,255,255,.1))}.score-cell.editable{cursor:pointer;position:relative}.score-cell.editable:hover{background:var(--color-accent)}.score-cell.overwrite{background:#ffa50026;border-left:2px solid #ff9800}.score-cell.saving{opacity:.5;pointer-events:none}.score-cell .inline-edit-input{width:100%;padding:.125rem .25rem;font-size:inherit;font-family:inherit;text-align:center;border:2px solid var(--color-gold);border-radius:3px;background:var(--color-bg);color:var(--color-text);outline:none;box-sizing:border-box}.saving-indicator{opacity:.5}.total-cell{width:80px;min-width:55px;font-weight:700;white-space:nowrap}.undo-toast{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:1rem;padding:.75rem 1.25rem;background:#333;color:#fff;border-radius:8px;box-shadow:0 4px 20px #0006;z-index:1000;font-size:.9rem;animation:slideUp .2s ease-out}@keyframes slideUp{0%{opacity:0;transform:translate(-50%) translateY(1rem)}to{opacity:1;transform:translate(-50%) translateY(0)}}.btn-undo{padding:.35rem .75rem;background:var(--color-gold, #d4a800);color:#000;border:none;border-radius:4px;font-weight:600;font-size:.85rem;cursor:pointer}.btn-undo:hover{background:#e6b800}.btn-dismiss{background:none;border:none;color:#999;font-size:1.2rem;cursor:pointer;padding:0 .25rem;line-height:1}.btn-dismiss:hover{color:#fff}@media (max-width: 1024px){.sticky-rank{position:sticky;left:0;z-index:3;background:var(--color-bg-secondary, #1e1e2e)}.sticky-player{position:sticky;left:60px;z-index:3;background:var(--color-bg-secondary, #1e1e2e);box-shadow:2px 0 4px #0000004d}.player-name-text{max-width:140px}thead .sticky-rank,thead .sticky-player{z-index:4}}@media (max-width: 768px){.form-row{flex-direction:column}.form-row .form-group,.form-row .btn{width:100%}.hint,.hide-tablet{display:none}.sticky-rank{min-width:40px;width:40px}.sticky-player{left:40px}.player-name-text{max-width:110px}.scores-table{font-size:.75rem}.scores-table th,.scores-table td{padding:.25rem}.row-actions{flex-direction:column}.undo-toast{left:1rem;right:1rem;transform:none;bottom:1rem}@keyframes slideUp{0%{opacity:0;transform:translateY(1rem)}to{opacity:1;transform:translateY(0)}}}@media (max-width: 480px){.page-header{flex-direction:column;align-items:flex-start}.page-header h1{font-size:1.2rem}.hide-phone{display:none}.sticky-rank{min-width:32px;width:32px}.sticky-player{left:32px}.player-name-text{max-width:90px}.scores-table{font-size:.65rem}.scores-table th,.scores-table td{padding:.2rem}.rank-cell{width:auto}.player-cell{min-width:100px}.score-cell{width:45px}.total-cell{width:55px}}.scraper-control{max-width:800px}.page-header{margin-bottom:1.5rem}.page-header h1{margin:0;font-size:1.75rem}.scraper-status-banner{display:flex;align-items:center;gap:1.5rem;padding:1.5rem 2rem;border-radius:12px;margin-bottom:1.5rem}.scraper-status-banner.running{background:linear-gradient(135deg,#4caf5026,#4caf500d);border:2px solid var(--color-success);box-shadow:0 0 20px #4caf5033}.scraper-status-banner.stale{background:linear-gradient(135deg,#ffc10726,#ffc1070d);border:2px solid var(--color-warning);box-shadow:0 0 20px #ffc10733}.scraper-status-banner.stopped{background:linear-gradient(135deg,#9c9c9c1a,#9c9c9c05);border:2px solid var(--color-text-muted)}.status-icon{flex-shrink:0;width:60px;height:60px;display:flex;align-items:center;justify-content:center}.pulse-dot{width:40px;height:40px;border-radius:50%;background:var(--color-success);box-shadow:0 0 20px var(--color-success),0 0 40px var(--color-success);animation:pulse-glow 1.5s ease-in-out infinite}@keyframes pulse-glow{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}}.warning-icon{font-size:2.5rem;color:var(--color-warning)}.stopped-icon{font-size:3rem;color:var(--color-text-muted)}.status-info h2{margin:0 0 .25rem;font-size:1.5rem}.scraper-status-banner.running .status-info h2{color:var(--color-success)}.scraper-status-banner.stale .status-info h2{color:var(--color-warning)}.scraper-status-banner.stopped .status-info h2{color:var(--color-text-muted)}.last-heartbeat{margin:0;font-size:.9rem;color:var(--color-text-muted)}.config-section{margin-bottom:1.5rem}.config-section h3{margin:0 0 1rem;font-size:1.1rem}.interval-control{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.interval-input{width:100px;text-align:center}.interval-unit{color:var(--color-text-muted)}hr{border:none;border-top:1px solid var(--color-border);margin:1.5rem 0}.scraper-info{color:var(--color-text-muted);font-size:.9rem}.scraper-info h3{color:var(--color-text);font-size:1.1rem;margin:0 0 .75rem}.scraper-info h4{color:var(--color-text);font-size:.95rem;margin:1.25rem 0 .5rem}.scraper-info p{margin:0 0 1rem;line-height:1.5}.scraper-info ol,.scraper-info ul{margin:0;padding-left:1.25rem}.scraper-info li{margin-bottom:.5rem;line-height:1.5}.scraper-info code{background:#ffffff1a;padding:.15rem .4rem;border-radius:4px;font-size:.85rem;color:var(--color-primary)}.command-example{background:#0000004d;padding:1rem;border-radius:8px;overflow-x:auto;font-size:.85rem;margin:.75rem 0;line-height:1.6;color:var(--color-text)}.loading-container{display:flex;align-items:center;justify-content:center;min-height:200px}@media (max-width: 768px){.scraper-status-banner{flex-direction:column;text-align:center;gap:1rem;padding:1.25rem 1.5rem}.status-icon{width:48px;height:48px}.pulse-dot{width:32px;height:32px}.status-info h2{font-size:1.25rem}}@media (max-width: 480px){.scraper-status-banner{padding:1rem;border-radius:8px}.status-icon{width:40px;height:40px}.pulse-dot{width:24px;height:24px}.status-info h2{font-size:1.1rem}.interval-control{flex-wrap:wrap}.command-example{font-size:.75rem;padding:.75rem}}.bracket-manager{max-width:800px}.page-header{margin-bottom:2rem}.back-link{display:inline-block;margin-bottom:.5rem;color:var(--color-text-muted);font-size:.875rem}.back-link:hover{color:var(--color-gold)}.page-header h1{margin:0;font-size:1.5rem}.bracket-status{padding-top:1rem}.bracket-link{word-break:break-all}.bracket-actions{padding-top:1rem}.action-step{padding:1rem 0;border-bottom:1px solid var(--color-border)}.action-step:last-child{border-bottom:none}.action-step h3{font-size:1.1rem;margin:0 0 .5rem}.action-step p{margin:0 0 1rem}.seed-controls{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.seed-controls label{display:flex;align-items:center;gap:.5rem}.inline-input{width:80px;display:inline-block}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;gap:1rem}@media (max-width: 480px){.seed-controls{flex-direction:column;align-items:stretch}.seed-controls .btn{width:100%}.action-step h3{font-size:1rem}.page-header h1{font-size:1.2rem}}.user-manager{max-width:1200px}.user-list{height:fit-content;position:sticky;top:1rem}.user-form{padding:1.5rem}.role-badge{padding:.125rem .375rem;border-radius:3px;font-size:.65rem;text-transform:uppercase;flex-shrink:0}.role-badge.role-god{background:#dc354540;color:#ff6b6b}.role-badge.role-super_admin{background:#ff980040;color:#ffb74d}.role-badge.role-tournament_admin{background:#4caf5040;color:#81c784}.tournament-checkboxes{display:flex;flex-direction:column;gap:.5rem;max-height:300px;overflow-y:auto;padding:.5rem;background:#ffffff08;border-radius:4px}.checkbox-label{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;border-radius:4px;cursor:pointer;transition:background .2s}.checkbox-label:hover{background:#ffffff0d}.checkbox-label input[type=checkbox]{flex-shrink:0}.checkbox-label span:first-of-type{flex:1}@media (max-width: 768px){.user-form{padding:1rem}.tournament-checkboxes{max-height:200px}}@media (max-width: 480px){.role-badge{font-size:.6rem;padding:.1rem .25rem}.checkbox-label{padding:.25rem .375rem;font-size:.85rem}.tournament-checkboxes{max-height:160px;padding:.375rem}}.course-manager{max-width:1200px}.course-logo-section{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--color-border)}.course-logo-section label{display:block;margin-bottom:.75rem;font-weight:500}.logo-preview-container{display:flex;align-items:center;gap:1rem}.logo-preview{width:64px;height:64px;object-fit:contain;border-radius:4px;border:1px solid var(--color-border)}.logo-placeholder{width:64px;height:64px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--color-border);border-radius:4px;color:var(--color-text-muted);font-size:.75rem}.logo-actions{display:flex;gap:.5rem}@media (max-width: 768px){.logo-preview-container{flex-wrap:wrap}}@media (max-width: 480px){.logo-preview-container{flex-direction:column;align-items:flex-start}.logo-actions{width:100%}.logo-actions .btn{flex:1}.course-logo-section{margin-top:1rem;padding-top:1rem}}.featured-manager{max-width:1200px}.featured-controls{margin-bottom:1rem}.featured-controls .form-group{max-width:400px}.machine-list{display:flex;flex-direction:column}.machine-item{padding:1rem;border-bottom:1px solid var(--color-border);display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-start}.machine-item:last-child{border-bottom:none}.machine-info{flex:1;min-width:200px}.machine-header-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.status-indicator{width:10px;height:10px;border-radius:50%;flex-shrink:0}.status-indicator.online{background:#4caf50;box-shadow:0 0 6px #4caf5080}.status-indicator.offline{background:#9e9e9e}.machine-location{font-size:.85rem;color:var(--color-text-muted)}.machine-state{display:flex;gap:1rem;font-size:.85rem;margin-bottom:.25rem}.machine-meta{font-size:.75rem;color:var(--color-text-muted)}.machine-actions{display:flex;gap:.5rem;align-items:center}.machine-history{width:100%;margin-top:.5rem;padding:.75rem;background:var(--color-bg-alt, rgba(0, 0, 0, .05));border-radius:6px;overflow-x:auto}.history-table{width:100%;border-collapse:collapse;font-size:.8rem}.history-table th,.history-table td{padding:.35rem .6rem;text-align:left;border-bottom:1px solid var(--color-border)}.history-table th{font-weight:600;color:var(--color-text-muted);font-size:.75rem;text-transform:uppercase}.register-form-row{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.register-form-row .form-group{flex:1;min-width:180px}.register-form-row .btn{margin-bottom:0;white-space:nowrap}.stream-badge{font-size:.65rem;font-weight:600;color:#7c4dff;background:#7c4dff1a;padding:.1rem .4rem;border-radius:3px;text-transform:uppercase;letter-spacing:.03em}.stream-section{width:100%;margin-top:.75rem;padding:.75rem;background:var(--color-bg-alt, rgba(0, 0, 0, .03));border-radius:6px;display:flex;flex-direction:column;gap:.75rem}.stream-type-block{border:1px solid var(--color-border);border-radius:6px;padding:.75rem}.stream-type-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.stream-optional{font-size:.75rem;color:var(--color-text-muted)}.stream-status{margin-left:auto;font-size:.7rem;font-weight:600;text-transform:uppercase;padding:.1rem .4rem;border-radius:3px}.stream-status.enabled{color:#4caf50;background:#4caf501a}.stream-status.disabled{color:var(--color-text-muted);background:#0000000d}.stream-config-row{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap}.stream-config-row .form-group{flex:1;min-width:120px}.stream-config-row .btn{white-space:nowrap;margin-bottom:0}.form-control-sm{padding:.3rem .5rem;font-size:.85rem}.stream-info{display:flex;flex-direction:column;gap:.5rem}.stream-credentials{background:var(--color-bg, #fff);border:1px solid var(--color-border);border-radius:4px;padding:.5rem}.credential-row{display:flex;align-items:center;gap:.5rem;padding:.25rem 0}.credential-row+.credential-row{border-top:1px solid var(--color-border)}.credential-label{font-size:.75rem;font-weight:600;color:var(--color-text-muted);min-width:75px}.credential-value{flex:1;font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#00000008;padding:.2rem .4rem;border-radius:3px}.copy-btn{flex-shrink:0;font-size:.7rem!important;padding:.2rem .4rem!important}.stream-meta{font-size:.75rem;color:var(--color-text-muted)}@media (max-width: 768px){.machine-item{flex-direction:column}.machine-state{flex-wrap:wrap;gap:.5rem}.register-form-row{flex-direction:column}.register-form-row .btn{width:100%}.stream-config-row{flex-direction:column}.stream-config-row .btn{width:100%}.credential-row{flex-wrap:wrap}.credential-value{width:100%;order:3}}.viewer-manager{max-width:1200px}.viewer-list{height:fit-content;position:sticky;top:1rem}.viewer-form{padding:1.5rem}.viewer-item-info{display:flex;flex-direction:column;gap:.1rem;flex:1;overflow:hidden}.viewer-username{font-size:.7rem;color:#fff6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-status-badge{padding:.125rem .375rem;border-radius:3px;font-size:.65rem;text-transform:uppercase;flex-shrink:0;cursor:pointer;transition:opacity .15s}.viewer-status-badge:hover{opacity:.8}.viewer-status-badge.active{background:#4caf5040;color:#81c784}.viewer-status-badge.inactive{background:#f4433640;color:#ff6b6b}@media (max-width: 768px){.viewer-form{padding:1rem}}@media (max-width: 480px){.viewer-status-badge{font-size:.6rem;padding:.1rem .25rem}}.ivs-dashboard{max-width:1200px}.ivs-summary-row{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-bottom:1rem}.ivs-summary-card{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:6px;padding:1rem;display:flex;flex-direction:column;align-items:center;gap:.25rem}.summary-value{font-size:1.5rem;font-weight:700;color:var(--color-gold)}.summary-label{font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em}.ivs-alerts{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.ivs-alert{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:4px;font-size:.8rem}.ivs-alert-error{background:#f4433626;border:1px solid rgba(244,67,54,.3);color:#ff6b6b}.ivs-alert-warning{background:#ff980026;border:1px solid rgba(255,152,0,.3);color:#ffb74d}.ivs-alert-info{background:#2196f31a;border:1px solid rgba(33,150,243,.2);color:#64b5f6}.alert-badge{padding:.1rem .35rem;border-radius:3px;font-size:.6rem;font-weight:600;text-transform:uppercase;flex-shrink:0}.ivs-alert-error .alert-badge{background:#f443364d}.ivs-alert-warning .alert-badge{background:#ff98004d}.ivs-alert-info .alert-badge{background:#2196f333}.ivs-section{margin-bottom:1rem}.table-responsive{overflow-x:auto}.ivs-table{width:100%;border-collapse:collapse;font-size:.8rem}.ivs-table th{text-align:left;padding:.5rem .75rem;color:var(--color-text-muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--color-border)}.ivs-table td{padding:.5rem .75rem;border-bottom:1px solid rgba(255,255,255,.05)}.ivs-table tr:last-child td{border-bottom:none}.channel-name{font-weight:500;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-badge{padding:.1rem .4rem;border-radius:3px;font-size:.65rem;font-weight:600;text-transform:uppercase}.status-badge.status-live{background:#4caf5040;color:#81c784}.status-badge.status-offline{background:#9e9e9e33;color:#9e9e9e}.status-badge.status-unknown{background:#ff980033;color:#ffb74d}.health-badge{padding:.1rem .4rem;border-radius:3px;font-size:.65rem;font-weight:600;text-transform:uppercase}.health-badge.health-healthy{background:#4caf5040;color:#81c784}.health-badge.health-starving{background:#f4433640;color:#ff6b6b}.health-badge.health-unknown,.health-badge.health-n\/a{background:#9e9e9e26;color:#9e9e9e}.stream-type-badge{padding:.1rem .35rem;border-radius:3px;font-size:.65rem;text-transform:uppercase;background:#2196f333;color:#64b5f6}.cost-breakdown{padding:.75rem}.cost-row{display:flex;justify-content:space-between;padding:.4rem 0;font-size:.85rem;color:var(--color-text-muted)}.cost-row.cost-total{border-top:1px solid var(--color-border);margin-top:.25rem;padding-top:.5rem;font-weight:600;color:var(--color-gold)}.ivs-refresh-note{text-align:center;font-size:.7rem;color:var(--color-text-muted);margin-top:.5rem}@media (max-width: 768px){.ivs-summary-row{grid-template-columns:repeat(2,1fr)}.ivs-table{font-size:.75rem}.ivs-table th,.ivs-table td{padding:.4rem .5rem}.channel-name{max-width:120px}}@media (max-width: 480px){.ivs-summary-row{grid-template-columns:1fr 1fr;gap:.5rem}.ivs-summary-card{padding:.75rem .5rem}.summary-value{font-size:1.2rem}}.viewer-login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f3460,#16213e);padding:1rem}.viewer-login-card{width:100%;max-width:400px;background:#ffffff14;border-radius:8px;border:1px solid rgba(255,255,255,.15);overflow:hidden}.viewer-login-header{padding:2rem;text-align:center;border-bottom:1px solid rgba(255,255,255,.1);background:#0003}.viewer-login-header h1{margin:0 0 .5rem;color:gold;font-size:1.5rem}.viewer-login-header p{margin:0;color:#ffffffb3}.viewer-login-form{padding:2rem}.viewer-login-form .form-group{margin-bottom:1rem}.viewer-login-form label{display:block;margin-bottom:.35rem;color:#fffc;font-size:.85rem}.viewer-login-form .form-control{width:100%;padding:.5rem .75rem;border-radius:4px;border:1px solid rgba(255,255,255,.2);background:#0000004d;color:#fff;font-size:.9rem;box-sizing:border-box}.viewer-login-form .form-control:focus{outline:none;border-color:gold}.viewer-login-form .alert-error{background:#f4433633;border:1px solid rgba(244,67,54,.4);color:#ff6b6b;padding:.5rem .75rem;border-radius:4px;margin-bottom:1rem;font-size:.85rem}.viewer-login-form .btn-block{width:100%;margin-top:1rem;padding:.6rem;border:none;border-radius:4px;background:gold;color:#1a1a2e;font-weight:600;font-size:.9rem;cursor:pointer}.viewer-login-form .btn-block:hover{background:#ffed4a}.viewer-login-form .btn-block:disabled{opacity:.6;cursor:not-allowed}.viewer-login-footer{padding:1rem 2rem 2rem;text-align:center}.viewer-login-footer a{color:#ffffff80;font-size:.875rem;text-decoration:none}.viewer-login-footer a:hover{color:gold}body[data-env=dev] .viewer-login-page{background:linear-gradient(135deg,#0f6034,#163e21)}:root{--color-gold-light: #fafad2;--color-gold: #ffeb7a;--color-purple-light: #e6e6fa;--color-purple: #e0b0ff;--color-bg: #f0f2f5;--color-bg-secondary: #ffffff;--color-text: #0f172a;--color-text-muted: #64748b;--color-accent: #0c2d48;--color-accent-light: #1a5276;--color-success: #2e7d32;--color-error: #c62828;--color-warning: #e65100;--color-border: #e2e8f0;--color-border-light: #f1f5f9;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .12);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .25s ease}.admin-layout,.login-page{--color-bg: #1e1e2e;--color-bg-secondary: #2a2a3c;--color-text: #e0e0e8;--color-text-muted: #9a9ab0;--color-accent: #5b8fb9;--color-border: #3a3a50;--color-success: #4caf50;--color-error: #ef5350;--color-warning: #ff9800;--color-gold: #ffeb7a}body[data-env=dev]{--color-bg: #edf5f0;--color-bg-secondary: #f8fcf8;--color-accent: #0c4830;--color-accent-light: #1a7652;--color-border: #d4e8d8}body[data-env=dev] .admin-layout,body[data-env=dev] .login-page{--color-bg: #1e2e22;--color-bg-secondary: #2a3c2e;--color-accent: #5bb98f;--color-border: #3a503e}.admin-layout,.login-page{background:var(--color-bg);color:var(--color-text)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background:var(--color-bg);color:var(--color-text);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}.container{max-width:1400px;margin:0 auto;padding:1rem}.text-center{text-align:center}.text-right{text-align:right}.text-muted{color:var(--color-text-muted)}.text-success{color:var(--color-success)}.text-error{color:var(--color-error)}.text-warning{color:var(--color-warning)}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mt-4{margin-top:2rem}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.mb-4{margin-bottom:2rem}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.5rem}.gap-2{gap:1rem}.gap-3{gap:1.5rem}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.25rem;font-weight:500}.form-control{width:100%;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text);font-size:1rem}.form-control:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 2px #5b8fb94d}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;border:none;border-radius:4px;font-size:1rem;font-weight:500;transition:background-color .2s,transform .1s}.btn:active{transform:scale(.98)}.btn-primary{background:var(--color-accent);color:#fff}.btn-primary:hover{background:#1f6694}.btn-secondary{background:#e0e0e0;color:#1a1a2e}.btn-secondary:hover{background:#d0d0d0}.admin-layout .btn-secondary,.login-page .btn-secondary{background:#3a3a50;color:var(--color-text)}.admin-layout .btn-secondary:hover,.login-page .btn-secondary:hover{background:#4a4a62}.btn-danger{background:var(--color-error);color:#fff}.btn-danger:hover{background:#b71c1c}.btn-success{background:var(--color-success);color:#fff}.btn-success:hover{background:#256b27}.btn-sm{padding:.25rem .5rem;font-size:.875rem}.btn:disabled{opacity:.6;cursor:not-allowed}.card{background:var(--color-bg-secondary);border-radius:8px;padding:1.5rem;border:1px solid var(--color-border);box-shadow:0 1px 3px #00000014}.card-header{font-size:1.25rem;font-weight:600;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--color-border)}.table-container{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:.75rem;text-align:center;border-bottom:1px solid var(--color-border)}th{background:var(--color-accent);color:#fff;font-weight:600;position:sticky;top:0;z-index:10}.alert{padding:.75rem 1rem;border-radius:4px;margin-bottom:1rem}.alert-success{background:#2e7d321a;border:1px solid var(--color-success);color:var(--color-success)}.alert-error{background:#c628281a;border:1px solid var(--color-error);color:var(--color-error)}.alert-warning{background:#e651001a;border:1px solid var(--color-warning);color:var(--color-warning)}.spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.status-indicator{display:inline-flex;align-items:center;gap:.5rem;padding:.25rem .5rem;border-radius:4px;font-size:.875rem}.status-indicator:before{content:"";width:8px;height:8px;border-radius:50%}.status-connected:before{background:var(--color-success)}.status-disconnected:before{background:var(--color-error)}.status-connecting:before{background:var(--color-warning);animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}
