:root{--bg-primary:#09090b;--bg-secondary:#121216;--bg-tertiary:#1a1a22;--accent:#6366f1;--accent-light:#818cf8;--accent-gradient:linear-gradient(135deg, #6366f1, #a855f7);--border:#202026;--border-focus:#3f3f46;--text-primary:#f4f4f5;--text-secondary:#a1a1aa;--text-muted:#52525b;--success:#10b981;--danger:#ef4444;--warning:#f59e0b;--shadow:0 4px 20px -2px #00000080;--transition-smooth:all .3s cubic-bezier(.4, 0, .2, 1);--font-sans:"Inter", system-ui, -apple-system, sans-serif}*{box-sizing:border-box;font-family:var(--font-sans);scrollbar-width:thin;scrollbar-color:var(--border) transparent;margin:0;padding:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-focus)}html,body,#root{background-color:var(--bg-primary);width:100%;height:100%;color:var(--text-primary);overflow:hidden}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalScaleUp{to{transform:scale(1)}}.animate-fade-in{animation:.4s cubic-bezier(.4,0,.2,1) forwards fadeIn}.btn{cursor:pointer;transition:var(--transition-smooth);border:none;border-radius:8px;outline:none;justify-content:center;align-items:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;display:inline-flex}.btn-primary{background:var(--accent-gradient);color:#fff}.btn-primary:hover{opacity:.9;transform:translateY(-1px)}.btn-secondary{background-color:var(--bg-secondary);border:1px solid var(--border);color:var(--text-primary)}.btn-secondary:hover{background-color:var(--bg-tertiary)}.btn-danger{background-color:var(--danger);color:#fff}.btn-danger:hover{opacity:.9}.badge{border-radius:9999px;align-items:center;padding:.25rem .625rem;font-size:.75rem;font-weight:600;display:inline-flex}.badge-success{color:var(--success);background-color:#10b9811a}.badge-danger{color:var(--danger);background-color:#ef44441a}.badge-warning{color:var(--warning);background-color:#f59e0b1a}.badge-info{color:var(--accent-light);background-color:#6366f11a}.badge-secondary{background-color:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border)}.search-input{background-color:var(--bg-primary);border:1px solid var(--border);color:var(--text-primary);transition:var(--transition-smooth);border-radius:6px;outline:none;width:240px;padding:.5rem 1rem;font-size:.875rem}.search-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #6366f126}.select-input{background-color:var(--bg-primary);border:1px solid var(--border);color:var(--text-primary);cursor:pointer;border-radius:6px;outline:none;padding:.5rem 1rem;font-size:.875rem}.form-group{flex-direction:column;gap:.5rem;display:flex}.form-label{color:var(--text-secondary);font-size:.875rem;font-weight:500}.form-input{background-color:var(--bg-primary);border:1px solid var(--border);color:var(--text-primary);transition:var(--transition-smooth);border-radius:8px;outline:none;padding:.75rem 1rem;font-size:.875rem}.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #6366f126}.modal-overlay{z-index:9999;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#000000bf;justify-content:center;align-items:center;animation:.2s ease-out modalFadeIn;display:flex;position:fixed;inset:0}.modal-container{background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:16px;width:100%;max-width:440px;padding:2rem;animation:.2s cubic-bezier(.34,1.56,.64,1) forwards modalScaleUp;transform:scale(.95);box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0006}.modal-title{color:var(--text-primary);margin-bottom:.75rem;font-size:1.25rem;font-weight:700}.modal-body{color:var(--text-secondary);margin-bottom:1.75rem;font-size:.95rem;line-height:1.5}.modal-footer{justify-content:flex-end;gap:.75rem;display:flex}.table-container{background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;flex-direction:column;flex:1;min-height:200px;margin-bottom:1rem;display:flex;overflow:hidden}.table-scroll{flex:1;position:relative;overflow:auto}.table-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem 1.5rem;display:flex}.table-header-title{font-size:1.1rem;font-weight:600}.filters-wrapper{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.data-table{border-collapse:collapse;text-align:left;width:100%}.data-table th{background-color:var(--bg-secondary);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);z-index:10;padding:1rem 1.5rem;font-size:.75rem;font-weight:600;position:sticky;top:0}.data-table td{border-bottom:1px solid var(--border);color:var(--text-primary);white-space:nowrap;padding:1rem 1.5rem;font-size:.875rem}.data-table tbody tr{transition:var(--transition-smooth)}.data-table tbody tr:hover{cursor:pointer;background-color:#ffffff04}.data-table tbody tr:last-child td{border-bottom:none}@media (width<=768px){.responsive-table,.responsive-table thead,.responsive-table tbody,.responsive-table th,.responsive-table td,.responsive-table tr{display:block}.responsive-table thead{display:none}.responsive-table tr{background-color:var(--bg-tertiary);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;margin-bottom:1rem;padding:1.25rem}.responsive-table td{border-bottom:1px solid var(--border);white-space:normal;text-align:right;justify-content:space-between;align-items:center;padding:.65rem 0;font-size:.875rem;display:flex}.responsive-table td:last-child{border-bottom:none;padding-bottom:0}.responsive-table td:first-child{padding-top:0}.responsive-table td:before{content:attr(data-label);color:var(--text-secondary);text-align:left;text-transform:uppercase;letter-spacing:.05em;margin-right:1.5rem;font-size:.75rem;font-weight:600}}.notification-toast{color:#fff;z-index:99999;border-radius:8px;padding:1rem 1.5rem;font-size:.9rem;font-weight:600;animation:.3s cubic-bezier(.4,0,.2,1) forwards fadeIn;position:fixed;top:20px;right:20px;box-shadow:0 4px 12px #00000026}.notification-toast.toast-success{background-color:#10b981f2}.notification-toast.toast-error{background-color:#ef4444f2}.admin-layout{width:100vw;height:100vh;transition:var(--transition-smooth);grid-template-columns:260px 1fr;display:grid;overflow:hidden}.admin-layout.collapsed{grid-template-columns:80px 1fr}.sidebar{background-color:var(--bg-secondary);border-right:1px solid var(--border);transition:var(--transition-smooth);z-index:10;flex-direction:column;justify-content:space-between;padding:1.5rem 1rem;display:flex;position:relative;overflow-y:auto}.sidebar-brand{color:var(--text-primary);align-items:center;gap:.75rem;margin-bottom:2rem;padding:.5rem;font-size:1.25rem;font-weight:700;display:flex}.sidebar-brand-icon{background:var(--accent-gradient);border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.sidebar-menu{flex-direction:column;flex:1;gap:.5rem;list-style:none;display:flex}.sidebar-item{color:var(--text-secondary);cursor:pointer;transition:var(--transition-smooth);border-radius:8px;align-items:center;gap:.75rem;padding:.75rem 1rem;font-weight:500;text-decoration:none;display:flex}.sidebar-item:hover{background-color:var(--bg-tertiary);color:var(--text-primary)}.sidebar-item.active{background:var(--accent-gradient);color:var(--text-primary);box-shadow:0 4px 12px #6366f14d}.sidebar-footer{border-top:1px solid var(--border);margin-top:auto;padding-top:1.5rem}.main-content{flex-direction:column;height:100%;display:flex;overflow:hidden}.top-nav{background-color:var(--bg-secondary);border-bottom:1px solid var(--border);z-index:5;justify-content:space-between;align-items:center;height:64px;padding:0 2rem;display:flex}.top-nav-title{font-size:1.15rem;font-weight:600}.top-nav-actions{align-items:center;gap:1.5rem;display:flex}.admin-profile{align-items:center;gap:.5rem;display:flex}.admin-avatar{background-color:var(--bg-tertiary);border:1px solid var(--border);border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:.85rem;font-weight:600;display:flex}.admin-info{flex-direction:column;display:flex}.admin-name{font-size:.875rem;font-weight:500}.admin-role{color:var(--text-muted);font-size:.75rem}.content-body{background-color:var(--bg-primary);flex-direction:column;flex:1;padding:2rem;display:flex;overflow:hidden}.mobile-header{background-color:var(--bg-secondary);border-bottom:1px solid var(--border);z-index:15;justify-content:space-between;align-items:center;height:60px;padding:0 1.5rem;display:none}.menu-toggle{color:var(--text-primary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;font-size:1.5rem;display:flex}@media (width<=900px){.admin-layout{grid-template-columns:1fr}.sidebar{width:260px;height:100dvh;transition:var(--transition-smooth);z-index:100;position:fixed;top:0;left:-280px;box-shadow:10px 0 30px #00000080;padding:1rem .75rem!important}.sidebar.open{left:0}.sidebar-brand{justify-content:space-between!important;margin-bottom:1rem!important}.sidebar .menu-toggle{color:var(--text-secondary);font-size:1.75rem;display:flex!important}.sidebar-menu{gap:.25rem!important}.mobile-header{display:flex}.top-nav{display:none}.content-body{padding:1.5rem 1rem}}.mobile-brand{align-items:center;gap:.75rem;display:flex}.mobile-brand span{letter-spacing:.5px;font-size:1.1rem;font-weight:700}.btn-sidebar-toggle{border:1px solid var(--border)!important;padding:.4rem .6rem!important}.login-container{background-color:var(--bg-primary);background-image:radial-gradient(circle,#6366f126 0%,#0000 50%);justify-content:center;align-items:center;width:100vw;height:100vh;padding:1.5rem;display:flex}.login-card{background-color:var(--bg-secondary);border:1px solid var(--border);width:100%;max-width:420px;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;gap:1.5rem;padding:2.5rem;animation:.5s cubic-bezier(.4,0,.2,1) fadeIn;display:flex}.login-header{text-align:center;flex-direction:column;align-items:center;gap:.5rem;display:flex}.login-brand-icon{background:var(--accent-gradient);border-radius:12px;justify-content:center;align-items:center;width:48px;height:48px;margin-bottom:.5rem;font-size:1.5rem;display:flex}.login-brand-icon svg{color:#fff}.login-title{font-size:1.5rem;font-weight:700}.login-subtitle{color:var(--text-secondary);font-size:.875rem}.login-error{color:var(--danger);background-color:#ef44441a;border-radius:8px;align-items:center;gap:.5rem;padding:.75rem 1rem;font-size:.875rem;display:flex}.login-form{flex-direction:column;gap:1.25rem;display:flex}.login-submit-btn{width:100%;margin-top:.5rem;padding:.75rem!important}.login-footer{text-align:center;margin-top:.5rem}.login-toggle-btn{color:var(--accent-light);cursor:pointer;transition:var(--transition-smooth);background:0 0;border:none;font-size:.875rem;text-decoration:underline}.login-toggle-btn:hover{color:var(--text-primary)}.password-input-container{display:flex;position:relative}.password-input-container .form-input{width:100%;padding-right:2.75rem}.password-toggle-btn{color:var(--text-secondary);cursor:pointer;transition:var(--transition-smooth);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:.25rem;display:flex;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.password-toggle-btn:hover{color:var(--text-primary)}.dashboard-container{flex-direction:column;height:100%;padding-right:.25rem;display:flex;overflow-y:auto}.dashboard-loading-container{justify-content:center;align-items:center;height:100%;min-height:300px;display:flex}.dashboard-loading-text{color:var(--text-secondary)}.dashboard-header{margin-bottom:2rem}.dashboard-title{color:var(--text-primary);margin-bottom:.25rem;font-size:1.75rem;font-weight:700}.dashboard-subtitle{color:var(--text-secondary);font-size:.875rem}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem;margin-bottom:2rem;display:grid}.stat-card{background-color:var(--bg-secondary);border:1px solid var(--border);transition:var(--transition-smooth);border-radius:12px;flex-direction:column;gap:.5rem;padding:1.5rem;display:flex}.stat-card:hover{border-color:var(--border-focus);box-shadow:var(--shadow);transform:translateY(-2px)}.stat-header{justify-content:space-between;align-items:center;display:flex}.stat-title{color:var(--text-secondary);font-size:.875rem;font-weight:500}.stat-icon{background-color:var(--bg-tertiary);width:36px;height:36px;color:var(--accent);border-radius:8px;justify-content:center;align-items:center;display:flex}.stat-value-container{align-items:baseline;gap:.5rem;display:flex}.stat-value{color:var(--text-primary);margin-top:.25rem;font-size:2rem;font-weight:700}.stat-live-badge{padding:.125rem .375rem;font-size:.65rem}.stat-desc{color:var(--text-muted);font-size:.75rem}.dashboard-empty-players{text-align:center;color:var(--text-muted);padding:2rem}.dashboard-table-row{cursor:pointer}.rank-badge{color:var(--text-secondary);font-weight:700}.rank-1{color:#f59e0b}.rank-2{color:#94a3b8}.rank-3{color:#b45309}.player-name-cell{font-weight:600}.player-winrate{color:var(--text-primary);font-weight:700}.player-winrate.high-winrate{color:var(--success)}@media (width<=600px){.dashboard-header{margin-bottom:1rem}.stats-grid{margin-bottom:1.5rem;grid-template-columns:repeat(2,1fr)!important;gap:.75rem!important}.stat-card{border-radius:8px!important;gap:.25rem!important;padding:1rem!important}.stat-title{font-size:.75rem!important}.stat-icon{width:28px!important;height:28px!important}.stat-value{font-size:1.35rem!important}.stat-desc{font-size:.65rem!important}}.games-container{flex-direction:column;height:100%;display:flex;overflow:hidden}.games-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.games-title{color:var(--text-primary);margin-bottom:.25rem;font-size:1.75rem;font-weight:700}.games-subtitle{color:var(--text-secondary);font-size:.875rem}.search-wrapper{display:inline-block;position:relative}.search-input-with-icon{padding-left:2.5rem!important}.search-icon{color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:.875rem;transform:translateY(-50%)}.games-loading{text-align:center;color:var(--text-secondary);flex:1;padding:4rem}.games-empty{text-align:center;color:var(--text-muted);flex:1;padding:3rem}.room-name-cell{color:var(--text-primary);font-weight:600}.room-id-subtext{color:var(--text-muted);margin-top:.125rem;font-size:.75rem}.badge-small{font-size:.7rem}.badge-small-public{font-size:.7rem;background-color:var(--bg-tertiary)!important}.host-id-cell{color:var(--text-secondary);font-size:.8rem}.winner-name{color:var(--accent-light);font-weight:600}.winner-empty{color:var(--text-muted)}.btn-small{padding:.25rem .5rem!important;font-size:.75rem!important}.users-container{flex-direction:column;height:100%;display:flex;overflow:hidden}.users-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.users-title{color:var(--text-primary);margin-bottom:.25rem;font-size:1.75rem;font-weight:700}.users-subtitle{color:var(--text-secondary);font-size:.875rem}.table-header-count{color:var(--text-secondary);font-size:.85rem}.users-loading{text-align:center;color:var(--text-secondary);flex:1;padding:4rem}.users-empty{text-align:center;color:var(--text-muted);flex:1;padding:3rem}.user-name-cell{color:var(--text-primary);font-weight:600}.user-id-subtext{color:var(--text-muted);margin-top:.125rem;font-size:.75rem}.user-device-cell{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.scroll-loading-text{text-align:center;color:var(--text-secondary);border-top:1px solid var(--border);padding:1.5rem}.game-detail-container{flex-direction:column;height:100%;padding-right:.25rem;display:flex;overflow:hidden}.game-detail-loading{justify-content:center;align-items:center;height:100%;min-height:300px;display:flex}.game-detail-loading-text{color:var(--text-secondary)}.game-detail-not-found{text-align:center;padding:3rem}.game-detail-not-found-text{color:var(--danger);margin-bottom:1rem}.game-detail-header{align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.game-detail-back-btn{padding:.5rem .75rem!important}.game-detail-title{color:var(--text-primary);margin:0;font-size:1.75rem;font-weight:700}.game-detail-subtitle{color:var(--text-secondary);margin-top:.125rem;font-size:.875rem}.game-detail-grid{flex:1;grid-template-columns:320px 1fr;align-items:stretch;gap:2rem;min-height:0;margin-bottom:1rem;display:grid}.game-profile-card{background-color:var(--bg-secondary);border:1px solid var(--border);text-align:left;border-radius:12px;flex-direction:column;align-items:flex-start;gap:1rem;height:100%;padding:1.5rem 2rem;display:flex;overflow-y:auto}.game-profile-card-header{border-bottom:1px solid var(--border);width:100%;margin-bottom:.5rem;padding-bottom:1rem}.game-profile-card-title{color:var(--text-primary);margin-bottom:.5rem;font-size:1.25rem;font-weight:600}.game-profile-card-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;width:100%;display:flex}.game-profile-btn-danger{padding:.35rem .75rem!important;font-size:.75rem!important}.game-winner-crown{color:var(--warning);align-items:center;gap:.25rem;font-weight:700;display:flex}.game-winner-none{color:var(--text-muted)}.game-scoreboard-wrapper{flex-direction:column;height:100%;min-height:0;max-height:none;display:flex}.game-scoreboard-empty{text-align:center;color:var(--text-muted);flex:1;padding:3rem}.game-player-row{transition:var(--transition-smooth)}.game-player-row.is-winner{border-left:3px solid var(--warning);background-color:#f59e0b08}.game-player-row.has-account{cursor:pointer}.game-player-name-container{align-items:center;gap:.5rem;display:flex}.game-player-winner-emoji{color:var(--warning);font-size:1.1rem}.game-player-name-link{color:var(--text-primary);font-weight:600;text-decoration:none}.game-player-name-link.has-account{color:var(--accent-light);text-decoration:underline}.game-player-badge-host,.game-player-badge-guest{padding:.1rem .3rem!important;font-size:.65rem!important}.game-player-id-cell{color:var(--text-secondary);font-size:.8rem}.game-player-id-link{color:var(--accent-light);text-decoration:underline}.game-player-id-guest{color:var(--text-muted)}.game-player-total-score{color:var(--text-primary);font-size:1rem;font-weight:700}.game-rounds-container{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.game-round-badge{border-radius:4px!important;padding:.2rem .4rem!important;font-size:.75rem!important}@media (width<=900px){.game-detail-container{height:100%;overflow-y:auto;padding-bottom:3rem!important}.game-detail-grid{grid-template-columns:1fr;gap:1.5rem;height:auto;overflow:visible}.game-profile-card{height:auto;padding:1.5rem;overflow:visible}.game-scoreboard-wrapper{height:65vh;min-height:350px;max-height:none;margin-bottom:1.5rem}}.player-detail-container{flex-direction:column;height:100%;padding-right:.25rem;display:flex;overflow:hidden}.player-detail-loading{justify-content:center;align-items:center;height:100%;min-height:300px;display:flex}.player-detail-loading-text{color:var(--text-secondary)}.player-detail-not-found{text-align:center;padding:3rem}.player-detail-not-found-text{color:var(--danger);margin-bottom:1rem}.player-detail-header{align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.player-detail-back-btn{padding:.5rem .75rem!important}.player-detail-title{color:var(--text-primary);margin:0;font-size:1.75rem;font-weight:700}.player-detail-subtitle{color:var(--text-secondary);margin-top:.125rem;font-size:.875rem}.player-details-grid{flex:1;grid-template-columns:320px 1fr;align-items:stretch;gap:2rem;min-height:0;margin-bottom:1rem;display:grid}.player-profile-card{background-color:var(--bg-secondary);border:1px solid var(--border);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:1rem;height:100%;padding:1.5rem 2rem;display:flex;overflow-y:auto}.player-large-avatar{background-color:var(--bg-tertiary);border:2px solid var(--accent);border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;display:flex;overflow:hidden}.player-large-avatar img{object-fit:cover;width:100%;height:100%}.player-large-avatar-placeholder{font-size:2.5rem;font-weight:700}.player-profile-name{color:var(--text-primary);font-size:1.25rem;font-weight:600}.player-profile-badge{margin-top:.5rem}.player-info-container{width:100%;margin-top:1rem}.player-info-item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.75rem 0;font-size:.875rem;display:flex}.player-info-item:last-child{border-bottom:none}.player-info-label{color:var(--text-secondary);font-weight:500}.player-info-value{color:var(--text-primary);font-weight:600}.player-info-value-scroll{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}.player-info-status-active{color:var(--success)}.player-info-status-idle{color:var(--text-muted)}.player-delete-section{border-top:1px solid var(--border);width:100%;margin-top:2rem;padding-top:1.5rem}.player-delete-btn{width:100%;padding:.65rem!important}.player-match-logs-wrapper{flex-direction:column;height:100%;min-height:0;max-height:none;display:flex}.player-match-logs-empty{text-align:center;color:var(--text-muted);flex:1;padding:3rem}.player-match-name{color:var(--text-primary);font-weight:600}.player-match-id{color:var(--text-muted);margin-top:.125rem;font-size:.75rem}.player-match-badge-host{font-size:.7rem}.player-match-badge-player{font-size:.7rem;background-color:var(--bg-tertiary)!important}.player-match-winner-name{color:var(--accent-light);font-weight:600}.player-match-winner-none{color:var(--text-muted)}@media (width<=900px){.player-detail-container{height:100%;overflow-y:auto;padding-bottom:3rem!important}.player-details-grid{grid-template-columns:1fr;gap:1.5rem;height:auto;overflow:visible}.player-profile-card{height:auto;padding:1.5rem;overflow:visible}.player-match-logs-wrapper{height:65vh;min-height:350px;max-height:none;margin-bottom:1.5rem}}
