:root{--primary-color: #2563eb;--primary-hover: #1d4ed8;--secondary-color: #64748b;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--background-color: #f8fafc;--surface-color: #ffffff;--text-primary: #1e293b;--text-secondary: #64748b;--border-color: #e2e8f0;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1);--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--background-color);color:var(--text-primary);font-size:var(--font-size-base);line-height:1.5;min-width:320px}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 var(--spacing-md)}@media(min-width:768px){.container{padding:0 var(--spacing-lg)}}.card{background:var(--surface-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg)}@media(min-width:768px){.card{padding:var(--spacing-xl)}}.btn{display:inline-block;padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-base);font-weight:500;text-align:center;text-decoration:none;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all .2s;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:var(--primary-color);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--primary-hover)}.btn-secondary{background-color:var(--secondary-color);color:#fff}.btn-success{background-color:var(--success-color);color:#fff}.btn-warning{background-color:var(--warning-color);color:#fff}.btn-danger{background-color:var(--error-color);color:#fff}.btn-danger:hover:not(:disabled){background-color:#dc2626}.btn-block{display:block;width:100%}.form-group{margin-bottom:var(--spacing-lg)}.form-label{display:block;margin-bottom:var(--spacing-sm);font-weight:500;color:var(--text-primary)}.form-input,.form-select,textarea{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base);border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:var(--surface-color);transition:border-color .2s;font-family:inherit}.form-input:focus,.form-select:focus,textarea:focus{outline:none;border-color:var(--primary-color)}h1{font-size:var(--font-size-2xl);font-weight:700;margin-bottom:var(--spacing-lg)}h2{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--spacing-md)}h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-md)}@media(min-width:768px){h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-2xl)}h3{font-size:var(--font-size-xl)}}.grid{display:grid;gap:var(--spacing-lg)}@media(min-width:768px){.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}}.alert-success{background-color:#d1fae5;color:#065f46;border:1px solid #10b981}.alert-error{background-color:#fee2e2;color:#991b1b;border:1px solid #ef4444}.alert-info{background-color:#dbeafe;color:#1e40af;border:1px solid #3b82f6}.spinner{display:inline-block;width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:#fff;animation:spin .8s linear infinite}.table{width:100%;border-collapse:collapse;background:var(--surface-color);border-radius:var(--radius-lg);overflow:hidden}.table th,.table td{padding:var(--spacing-md);text-align:left;border-bottom:1px solid var(--border-color)}.table th{background-color:var(--background-color);font-weight:600;color:var(--text-primary)}.table tbody tr:hover{background-color:var(--background-color)}@media(max-width:767px){.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}}.badge{display:inline-block;padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs);font-weight:600;border-radius:var(--radius-sm);text-transform:uppercase}.badge-success{background-color:#d1fae5;color:#065f46}.badge-warning{background-color:#fef3c7;color:#92400e}.badge-info{background-color:#dbeafe;color:#1e40af}.text-center{text-align:center}.text-right{text-align:right}.mt-1{margin-top:var(--spacing-sm)}.mt-2{margin-top:var(--spacing-md)}.mt-3{margin-top:var(--spacing-lg)}.mt-4{margin-top:var(--spacing-xl)}.mb-1{margin-bottom:var(--spacing-sm)}.mb-2{margin-bottom:var(--spacing-md)}.mb-3{margin-bottom:var(--spacing-lg)}.mb-4{margin-bottom:var(--spacing-xl)}.p-1{padding:var(--spacing-sm)}.p-2{padding:var(--spacing-md)}.p-3{padding:var(--spacing-lg)}.p-4{padding:var(--spacing-xl)}.language-switcher{display:flex;gap:.25rem;align-items:center}.lang-btn{padding:.5rem .75rem;border:1px solid var(--border-color);background-color:var(--surface-color);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s ease}.lang-btn:hover{background-color:var(--hover-color);color:var(--text-primary);border-color:var(--primary-color)}.lang-btn.active{background-color:var(--primary-color);color:#fff;border-color:var(--primary-color)}.lang-btn:focus{outline:2px solid var(--primary-color);outline-offset:2px}.home{padding:var(--spacing-xl) 0;min-height:100vh}.language-switcher-container{display:flex;justify-content:flex-end;margin-bottom:var(--spacing-md)}.hero{text-align:center;padding:var(--spacing-xl) 0;margin-bottom:var(--spacing-xl)}.hero h1{font-size:var(--font-size-3xl);margin-bottom:var(--spacing-md)}.hero-subtitle{font-size:var(--font-size-lg);color:var(--text-secondary);margin-bottom:var(--spacing-xl)}.action-cards{max-width:800px;margin:0 auto var(--spacing-xl)}.action-card{text-decoration:none;color:inherit;display:block;transition:transform .2s}.action-card:hover{transform:translateY(-4px)}.action-card .card{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--spacing-xl)}.action-card h2{margin-bottom:var(--spacing-md)}.action-card p{color:var(--text-secondary);margin-bottom:var(--spacing-lg)}.features{margin-top:var(--spacing-xl);padding-top:var(--spacing-xl)}.features h2{margin-bottom:var(--spacing-xl)}.feature-grid .card{text-align:center}.feature-grid h3{color:var(--primary-color);margin-bottom:var(--spacing-sm)}.feature-grid p{color:var(--text-secondary);font-size:var(--font-size-sm)}@media(max-width:767px){.hero h1{font-size:var(--font-size-2xl)}.hero-subtitle{font-size:var(--font-size-base)}.action-cards,.feature-grid{grid-template-columns:1fr}}.qr-redirect-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 0;background:linear-gradient(135deg,#667eea,#764ba2)}.qr-redirect-page .container{max-width:600px}.qr-redirect-page .card{padding:3rem;text-align:center}.qr-redirect-page h1{margin-bottom:2rem;color:#333}.qr-redirect-page h2{color:#e74c3c;margin-bottom:1rem}.url-redirect{display:flex;flex-direction:column;gap:2rem}.redirect-info{display:flex;flex-direction:column;gap:1rem}.redirect-message{font-size:1.2rem;color:#555;margin:0}.url-display{padding:1rem;background:#f9f9f9;border-radius:8px;border:1px solid #ddd}.url-display code{word-break:break-all;font-size:.95rem;color:#333}.redirect-actions{display:flex;gap:1rem;justify-content:center}.text-display{display:flex;flex-direction:column;gap:2rem}.text-content{padding:1.5rem;background:#f9f9f9;border-radius:8px;border:1px solid #ddd;max-height:400px;overflow-y:auto}.text-content pre{margin:0;white-space:pre-wrap;word-wrap:break-word;text-align:left;font-family:Courier New,Courier,monospace;font-size:1rem;color:#333}.text-actions{display:flex;justify-content:center}.back-link{margin-top:2rem;padding-top:2rem;border-top:1px solid #ddd}.back-link .link{color:#667eea;text-decoration:none;font-weight:500}.back-link .link:hover{text-decoration:underline}@media(max-width:768px){.qr-redirect-page .card{padding:2rem 1.5rem}.redirect-actions,.text-actions{flex-direction:column}.redirect-actions button,.text-actions button{width:100%}}.admin-layout{display:flex;height:100vh;overflow:hidden;background:#f5f7fa}.admin-sidebar{width:250px;background:linear-gradient(180deg,#667eea,#764ba2);color:#fff;display:flex;flex-direction:column;transition:width .3s ease;position:relative;z-index:100;box-shadow:2px 0 10px #0000001a}.admin-sidebar.collapsed{width:70px}.sidebar-header{padding:1.5rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-title{font-size:1.25rem;font-weight:600;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-toggle{background:#ffffff1a;border:none;color:#fff;width:32px;height:32px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.2rem;transition:background .2s}.sidebar-toggle:hover{background:#fff3}.sidebar-nav{flex:1;padding:1rem 0;overflow-y:auto}.nav-item{width:100%;display:flex;align-items:center;gap:1rem;padding:.875rem 1.5rem;background:none;border:none;color:#fffc;font-size:1rem;cursor:pointer;transition:all .2s;text-align:left;border-left:3px solid transparent}.admin-sidebar.collapsed .nav-item{justify-content:center;padding:.875rem .5rem}.nav-item:hover{background:#ffffff1a;color:#fff}.nav-item.active{background:#ffffff26;color:#fff;border-left-color:#fff;font-weight:500}.nav-icon{font-size:1.25rem;min-width:24px;display:flex;align-items:center;justify-content:center}.nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-footer{border-top:1px solid rgba(255,255,255,.1);padding:1rem 0}.logout-btn{color:#ffffffb3}.logout-btn:hover{color:#ffcccb;background:#ff00001a}.admin-main{flex:1;display:flex;flex-direction:column;overflow:hidden}.admin-header{background:#fff;padding:1rem 2rem;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 3px #0000000d;z-index:50}.header-spacer{flex:1}.admin-content{flex:1;overflow-y:auto;padding:0}.mobile-menu-toggle{display:none;position:fixed;top:1rem;left:1rem;z-index:1001;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;width:48px;height:48px;cursor:pointer;box-shadow:0 4px 6px #0000001a;transition:all .3s ease}@media(max-width:1024px){.mobile-menu-toggle{display:flex;align-items:center;justify-content:center}.mobile-overlay{display:block}.admin-sidebar{position:fixed;left:-250px;top:0;bottom:0;height:100vh;z-index:1000;transition:left .3s ease;box-shadow:2px 0 12px #0003}.mobile-menu-open .admin-sidebar{left:0}.admin-sidebar.collapsed{left:-70px;width:70px}.mobile-menu-open .admin-sidebar.collapsed{left:0}.admin-main{margin-left:0}.admin-header{padding:1rem 1rem 1rem 4rem}.admin-content{padding:1rem}.sidebar-header .sidebar-toggle{display:flex}}@media(max-width:480px){.mobile-menu-toggle{width:44px;height:44px;top:.75rem;left:.75rem}.admin-header{padding:.75rem .75rem .75rem 3.5rem}.admin-content{padding:.75rem}.sidebar-header{padding:1rem}.nav-item{padding:.75rem 1rem;font-size:.95rem}}.sidebar-nav::-webkit-scrollbar{width:6px}.sidebar-nav::-webkit-scrollbar-track{background:#ffffff0d}.sidebar-nav::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.sidebar-nav::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.migration-manager{padding:var(--spacing-xl);max-width:1200px;margin:0 auto}.migration-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg)}.migration-header h2{margin:0}.migration-overview{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;margin-bottom:var(--spacing-lg)}.migration-overview h3{color:#fff;margin-top:0}.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-md);margin-top:var(--spacing-md)}.status-item{display:flex;flex-direction:column;gap:var(--spacing-xs)}.status-label{font-size:var(--font-size-sm);opacity:.9}.status-value{font-size:var(--font-size-lg);font-weight:600}.status-value.badge{align-self:flex-start;font-size:var(--font-size-md)}.migrations-list{display:flex;flex-direction:column;gap:var(--spacing-sm);margin:var(--spacing-md) 0}.migration-item{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-primary);transition:all .2s ease}.migration-item:hover{box-shadow:0 2px 8px #0000001a;transform:translateY(-2px)}.migration-item.pending{border-left:4px solid #f59e0b}.migration-item.applied{border-left:4px solid #10b981}.migration-icon{font-size:1.5rem;flex-shrink:0}.migration-details{flex:1;display:flex;flex-direction:column;gap:var(--spacing-xs)}.migration-name{font-weight:600;color:var(--text-primary)}.migration-date{font-size:var(--font-size-sm);color:var(--text-secondary)}.logs-container{background:#1e1e1e;color:#d4d4d4;padding:var(--spacing-md);border-radius:var(--radius-md);font-family:Courier New,monospace;font-size:var(--font-size-sm);max-height:400px;overflow-y:auto}.log-entry{padding:var(--spacing-xs) 0;border-bottom:1px solid rgba(255,255,255,.1)}.log-entry:last-child{border-bottom:none}.log-type{display:inline-block;min-width:80px;margin-right:var(--spacing-sm);font-weight:600}.log-info .log-type{color:#4ade80}.log-error .log-type{color:#f87171}.log-warning .log-type{color:#fbbf24}.log-message{color:#d4d4d4}.badge{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:600;white-space:nowrap}.badge-success{background:#10b981;color:#fff}.badge-warning{background:#f59e0b;color:#fff}.badge-info{background:#3b82f6;color:#fff}@media(max-width:767px){.migration-manager{padding:var(--spacing-md)}.migration-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}.migration-header button{align-self:stretch}.status-grid{grid-template-columns:1fr}.migration-item{flex-direction:column;align-items:flex-start}}.admin-login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:var(--spacing-md);position:relative;overflow:hidden}.admin-login-page:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,255,255,.1) 1px,transparent 1px);background-size:50px 50px;animation:moveBackground 20s linear infinite;pointer-events:none}@keyframes moveBackground{0%{transform:translate(0)}to{transform:translate(50px,50px)}}.admin-login-container{width:100%;max-width:480px;position:relative;z-index:1}.admin-login-card{background:#fffffffa;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:20px;box-shadow:0 20px 60px #0000004d,0 0 1px #ffffff80;padding:3rem;border:1px solid rgba(255,255,255,.2);transition:transform .3s ease,box-shadow .3s ease}.admin-login-card:hover{transform:translateY(-5px);box-shadow:0 25px 70px #0006,0 0 1px #ffffff80}.admin-login-header{text-align:center;margin-bottom:2.5rem}.admin-login-header h1{margin:0 0 .5rem;color:#1a202c;font-size:2rem;font-weight:700;letter-spacing:-.5px;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.admin-login-subtitle{margin:0;color:#718096;font-size:.95rem;font-weight:500}.admin-login-form{display:flex;flex-direction:column;gap:1.5rem}.admin-login-form .form-group{position:relative}.admin-login-form .form-group label{font-weight:600;color:#2d3748;margin-bottom:.5rem;display:block;font-size:.9rem;letter-spacing:.3px}.admin-login-form .form-control{width:100%;padding:.875rem 1rem;border:2px solid #e2e8f0;border-radius:10px;font-size:1rem;transition:all .3s ease;background:#f7fafc}.admin-login-form .form-control:focus{outline:none;border-color:#667eea;background:#fff;box-shadow:0 0 0 3px #667eea1a;transform:translateY(-1px)}.admin-login-form .form-control:disabled{opacity:.6;cursor:not-allowed}.admin-login-form .btn-lg{padding:1rem;font-size:1.05rem;font-weight:600;border-radius:10px;background:linear-gradient(135deg,#667eea,#764ba2);border:none;transition:all .3s ease;box-shadow:0 4px 15px #667eea66;margin-top:.5rem}.admin-login-form .btn-lg:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea80}.admin-login-form .btn-lg:active:not(:disabled){transform:translateY(0)}.admin-login-form .btn-lg:disabled{opacity:.7;cursor:not-allowed}.admin-login-form .spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite;margin-right:.5rem;vertical-align:middle}.admin-login-footer{margin-top:2rem;text-align:center;padding-top:1.5rem;border-top:1px solid #e2e8f0}.admin-login-footer p{margin:0;font-size:.9rem;color:#718096}.admin-login-footer .link{color:#667eea;text-decoration:none;font-weight:600;transition:all .2s ease;position:relative}.admin-login-footer .link:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:2px;background:#667eea;transition:width .3s ease}.admin-login-footer .link:hover{color:#764ba2}.admin-login-footer .link:hover:after{width:100%}.admin-login-form .alert-error{background:#fff5f5;border:1px solid #feb2b2;color:#c53030;padding:.875rem 1rem;border-radius:10px;font-size:.9rem;animation:slideDown .3s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media(max-width:767px){.admin-login-card{padding:2rem 1.5rem;border-radius:16px}.admin-login-header h1{font-size:1.75rem}.admin-login-form{gap:1.25rem}}.user-management{padding:2rem;min-height:100vh;background:#f5f7fa}.user-management .container{max-width:1200px;margin:0 auto}.user-management .header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.user-management h1{margin:0;font-size:2rem;color:#1f2937}.user-management .loading{text-align:center;padding:var(--spacing-xxl);color:var(--color-text-secondary)}.users-table-container{overflow-x:auto;margin-top:var(--spacing-lg)}.users-table{width:100%;border-collapse:collapse;background:#fff}.users-table thead{background:var(--color-bg-secondary)}.users-table th{padding:var(--spacing-md);text-align:left;font-weight:600;color:var(--color-text-primary);border-bottom:2px solid var(--color-border)}.users-table td{padding:var(--spacing-md);border-bottom:1px solid var(--color-border);color:var(--color-text-primary)}.users-table tbody tr:hover{background:var(--color-bg-hover)}.users-table .no-users{text-align:center;color:var(--color-text-secondary);padding:var(--spacing-xxl)}.users-table .actions{display:flex;gap:var(--spacing-sm)}.users-table .btn-sm{padding:.375rem .75rem;font-size:var(--font-size-sm)}.status-badge{padding:.25rem .75rem;border-radius:var(--border-radius);font-size:var(--font-size-sm);font-weight:600}.status-badge.active{background:var(--color-success-light);color:var(--color-success)}.status-badge.inactive{background:var(--color-bg-secondary);color:var(--color-text-secondary)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;border-radius:var(--border-radius-lg);width:90%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-xl)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);border-bottom:1px solid var(--color-border)}.modal-header h2{margin:0;font-size:var(--font-size-xl);color:var(--color-text-primary)}.modal-close{background:none;border:none;font-size:2rem;color:var(--color-text-secondary);cursor:pointer;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius);transition:all .2s}.modal-close:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.user-form{padding:var(--spacing-lg)}.user-form .form-group{margin-bottom:var(--spacing-lg)}.user-form label{display:block;margin-bottom:var(--spacing-sm);font-weight:600;color:var(--color-text-primary)}.user-form .form-control{width:100%;padding:var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);font-size:var(--font-size-base);transition:border-color .2s}.user-form .form-control:focus{outline:none;border-color:var(--color-primary)}.user-form .form-text{display:block;margin-top:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.checkbox-label{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox-label input[type=checkbox]{width:1.25rem;height:1.25rem;cursor:pointer}.checkbox-label span{font-weight:400}.modal-actions{display:flex;justify-content:flex-end;gap:var(--spacing-md);margin-top:var(--spacing-xl);padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}@media(max-width:768px){.user-management,.user-management .container{padding:var(--spacing-md)}.user-management .header,.user-management .header-left{flex-direction:column;align-items:stretch}.user-management .header-right{justify-content:space-between}.users-table{font-size:var(--font-size-sm)}.users-table th,.users-table td{padding:var(--spacing-sm)}.users-table .actions{flex-direction:column}.modal-content{width:95%}}.role-badges{display:flex;flex-wrap:wrap;gap:.5rem}.role-badge{display:inline-block;padding:.25rem .75rem;background-color:#3b82f6;color:#fff;border-radius:1rem;font-size:.875rem;font-weight:500}.roles-checkboxes{display:flex;flex-direction:column;gap:.75rem;padding:1rem;background:#f9fafb;border-radius:.5rem;max-height:250px;overflow-y:auto}.role-management{padding:2rem;min-height:100vh;background:#f5f7fa}.role-management .container{max-width:1400px;margin:0 auto}.role-management .header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.role-management h1{margin:0;font-size:2rem;color:#1f2937}.role-management .loading{text-align:center;padding:3rem;color:#6b7280}.roles-table-container{overflow-x:auto;margin-top:1.5rem;background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a}.roles-table{width:100%;border-collapse:collapse}.roles-table thead{background:#f9fafb;border-bottom:2px solid #e5e7eb}.roles-table th{padding:1rem;text-align:left;font-weight:600;color:#374151;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em}.roles-table td{padding:1rem;border-bottom:1px solid #e5e7eb;color:#1f2937}.roles-table tbody tr:hover{background:#f9fafb}.role-name{font-weight:500;color:#111827}.role-description{color:#6b7280;max-width:300px}.role-permissions{max-width:400px}.permission-badges{display:flex;flex-wrap:wrap;gap:.5rem}.permission-badge{display:inline-block;padding:.25rem .75rem;background:#e0e7ff;color:#4338ca;border-radius:9999px;font-size:.75rem;font-weight:500}.badge{display:inline-block;padding:.25rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:500}.badge-system{background:#fef3c7;color:#92400e}.badge-custom{background:#dbeafe;color:#1e40af}.actions{display:flex;gap:.5rem}.no-roles{text-align:center;padding:3rem;color:#6b7280}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:#fff;border-radius:12px;width:100%;max-width:700px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 25px -5px #0000001a}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #e5e7eb}.modal-header h2{margin:0;font-size:1.5rem;color:#111827}.modal-close{background:none;border:none;font-size:1.5rem;color:#6b7280;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:6px}.modal-close:hover{background:#f3f4f6;color:#111827}.modal-content form{padding:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#374151;font-size:.875rem}.form-group input,.form-group textarea{width:100%;padding:.75rem;border:1px solid #d1d5db;border-radius:6px;font-size:1rem;transition:border-color .2s}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.permissions-list{border:1px solid #e5e7eb;border-radius:8px;max-height:400px;overflow-y:auto}.permission-category{border-bottom:1px solid #e5e7eb}.permission-category:last-child{border-bottom:none}.category-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#f9fafb;border-bottom:1px solid #e5e7eb}.category-header h4{margin:0;font-size:.875rem;font-weight:600;color:#111827;text-transform:uppercase;letter-spacing:.05em}.permission-checkboxes{padding:1rem;display:flex;flex-direction:column;gap:.75rem}.checkbox-label{display:flex;align-items:flex-start;gap:.75rem;cursor:pointer;padding:.5rem;border-radius:6px;transition:background .2s}.checkbox-label:hover{background:#f3f4f6}.checkbox-label input[type=checkbox]{margin-top:.125rem;width:1.125rem;height:1.125rem;cursor:pointer;flex-shrink:0}.permission-name{font-weight:500;color:#111827;display:block}.permission-desc{font-size:.875rem;color:#6b7280;display:block;margin-top:.25rem}.modal-actions{display:flex;justify-content:flex-end;gap:1rem;padding:1.5rem;border-top:1px solid #e5e7eb;margin-top:1rem}.btn-link{background:none;border:none;color:#667eea;font-size:.75rem;cursor:pointer;padding:.25rem .5rem;text-decoration:underline}.btn-link:hover{color:#764ba2}@media(max-width:768px){.role-management{padding:1rem}.roles-table th,.roles-table td{padding:.75rem .5rem;font-size:.875rem}.permission-badges{flex-direction:column;gap:.25rem}.actions{flex-direction:column}.modal-content{max-width:100%;margin:1rem}}.settings-page{padding:2rem}.settings-page .container{max-width:1200px;margin:0 auto}.settings-page h1{font-size:2rem;margin-bottom:2rem;color:#1f2937}.settings-placeholder{background:#fff;padding:4rem 2rem;border-radius:12px;box-shadow:0 1px 3px #0000001a;text-align:center}.settings-placeholder p{font-size:1.125rem;color:#6b7280;margin:0}.athlete-management{padding:2rem}.athlete-management .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.athlete-management .page-header h1{margin:0;font-size:2rem;color:#2c3e50}.athlete-management .search-section{margin-bottom:1.5rem}.athlete-management .search-input{max-width:400px;width:100%}.athlete-management .table{width:100%}.athlete-management .action-buttons{display:flex;gap:.5rem}.athlete-management .badge{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.875rem;font-weight:500}.athlete-management .badge-success{background-color:#d4edda;color:#155724}.athlete-management .badge-secondary{background-color:#e2e3e5;color:#383d41}.modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:#fff;border-radius:8px;width:100%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:0 4px 6px #0000001a}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #e2e8f0}.modal-header h2{margin:0;font-size:1.5rem;color:#2c3e50}.modal-close{background:none;border:none;font-size:2rem;color:#94a3b8;cursor:pointer;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;line-height:1;transition:color .2s}.modal-close:hover{color:#64748b}.modal-footer{display:flex;justify-content:flex-end;gap:1rem;padding:1.5rem;border-top:1px solid #e2e8f0}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#374151}.form-input{width:100%;padding:.75rem;border:1px solid #d1d5db;border-radius:6px;font-size:1rem;transition:border-color .2s}.form-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.form-input.error{border-color:#ef4444}.form-input.error:focus{box-shadow:0 0 0 3px #ef44441a}.error-message{display:block;color:#ef4444;font-size:.875rem;margin-top:.25rem}@media(max-width:768px){.athlete-management{padding:1rem}.athlete-management .page-header{flex-direction:column;align-items:flex-start;gap:1rem}.athlete-management .action-buttons{flex-direction:column}.modal-content{max-width:100%}}.create-tournament h2{margin-bottom:var(--spacing-lg)}.form-help{display:block;margin-top:var(--spacing-xs);font-size:var(--font-size-sm);color:var(--text-secondary)}.checkbox-group{margin:var(--spacing-md) 0}.checkbox-label{display:flex;align-items:flex-start;gap:var(--spacing-sm);cursor:pointer;font-weight:500;color:var(--text-primary)}.checkbox-label input[type=checkbox]{margin-top:.25rem;cursor:pointer;width:18px;height:18px;flex-shrink:0}.checkbox-label span{flex:1}.checkbox-group .form-help{margin-left:calc(18px + var(--spacing-sm))}@media(max-width:767px){.create-tournament .grid-2{grid-template-columns:1fr}}.tournament-list h2{margin-bottom:var(--spacing-lg)}.btn-sm{padding:var(--spacing-xs) var(--spacing-md);font-size:var(--font-size-sm)}@media(max-width:767px){.tournament-list .table{font-size:var(--font-size-sm)}.tournament-list th,.tournament-list td{padding:var(--spacing-sm)}}.edit-tournament-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-md)}.edit-tournament-modal{background:#fff;border-radius:var(--radius-lg);width:100%;max-width:800px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 10px 40px #0000004d}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);border-bottom:1px solid var(--border-color)}.modal-header h2{margin:0;color:var(--text-primary)}.close-btn{background:none;border:none;font-size:2rem;color:var(--text-secondary);cursor:pointer;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);transition:all .2s ease}.close-btn:hover{background-color:var(--bg-secondary);color:var(--text-primary)}.modal-body{flex:1;overflow-y:auto;padding:var(--spacing-lg)}.modal-footer{padding:var(--spacing-lg);border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:var(--spacing-md)}.settings-section,.participants-section,.groups-section{margin-bottom:var(--spacing-xl)}.settings-section h3,.participants-section h3,.groups-section h3{margin:0 0 var(--spacing-lg) 0;color:var(--primary-color);font-size:1.25rem}.participants-section h4{margin:var(--spacing-lg) 0 var(--spacing-md) 0;color:var(--text-primary);font-size:1rem}.participants-list{margin-bottom:var(--spacing-lg);background:var(--bg-secondary);border-radius:var(--radius-md);padding:var(--spacing-md);max-height:300px;overflow-y:auto}.participants-list ul{list-style:none;padding:0;margin:0}.participant-item{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-xs);background:var(--bg-primary);border-radius:var(--radius-md);border:1px solid var(--border-color)}.participant-item:last-child{margin-bottom:0}.participant-item span{color:var(--text-primary);font-weight:500}.participant-edit-inline{display:flex;flex-direction:column;gap:var(--spacing-sm);width:100%}.participant-edit-inline input{flex:1}.edit-actions-inline{display:flex;gap:var(--spacing-xs);justify-content:flex-end}.no-data{text-align:center;color:var(--text-secondary);padding:var(--spacing-lg);font-style:italic}.add-participants{background:var(--bg-secondary);border-radius:var(--radius-md);padding:var(--spacing-lg)}.add-participants textarea{margin-bottom:var(--spacing-sm)}.add-participants .form-help{display:block;margin-bottom:var(--spacing-md);font-size:.875rem;color:#666;line-height:1.5}.alert{padding:var(--spacing-md);border-radius:var(--radius-md);margin-bottom:var(--spacing-lg)}.alert-error{background-color:#ef44441a;color:var(--error-color);border:1px solid var(--error-color)}.alert-success{background-color:#22c55e1a;color:var(--success-color);border:1px solid var(--success-color)}.groups-section .section-description{color:var(--text-secondary);margin-bottom:var(--spacing-md);font-size:.95rem}.groups-list{margin-bottom:var(--spacing-lg);background:var(--bg-secondary);border-radius:var(--radius-md);padding:var(--spacing-md)}.group-item{display:flex;align-items:center;padding:var(--spacing-md);margin-bottom:var(--spacing-sm);background:var(--bg-primary);border-radius:var(--radius-md);border:2px solid var(--border-color);cursor:move;transition:all .2s ease;-webkit-user-select:none;user-select:none}.group-item:last-child{margin-bottom:0}.group-item:hover{border-color:var(--primary-color);box-shadow:0 2px 8px #0000001a}.group-item.dragging{opacity:.4;transform:scale(.98)}.group-item.drag-over{border-color:var(--primary-color);background-color:#3b82f60d}.group-handle{font-size:1.5rem;color:var(--text-secondary);margin-right:var(--spacing-md);cursor:grab}.group-handle:active{cursor:grabbing}.group-content{flex:1;min-width:0}.group-content strong{display:block;color:var(--text-primary);margin-bottom:var(--spacing-xs);font-size:1rem}.group-actions{display:flex;flex-direction:column;gap:4px;margin-left:var(--spacing-md)}.btn-icon{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;color:var(--text-primary);transition:all .2s ease;padding:0}.btn-icon:hover:not(:disabled){background-color:var(--primary-color);color:#fff;border-color:var(--primary-color);transform:scale(1.1)}.btn-icon:active:not(:disabled){transform:scale(.95)}.btn-icon:disabled{opacity:.3;cursor:not-allowed}.pair-badge{display:inline-block;background-color:var(--info-color-light, #e0f2fe);color:var(--info-color, #0369a1);padding:4px 10px;border-radius:var(--radius-sm);font-size:.875rem;font-weight:500}.pairing-info{margin-top:var(--spacing-md);padding:var(--spacing-md);background-color:var(--bg-secondary);border-radius:var(--radius-md);border-left:4px solid var(--primary-color)}.pairing-info small{color:var(--text-secondary);font-size:.875rem;line-height:1.5}.drop-indicator{position:relative;height:40px;margin:8px 0;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease}.drop-indicator-line{position:absolute;left:0;right:0;height:3px;background:linear-gradient(90deg,transparent 0%,var(--primary-color) 20%,var(--primary-color) 80%,transparent 100%);border-radius:2px;box-shadow:0 0 8px #3b82f680}.drop-indicator-text{position:relative;background-color:var(--primary-color);color:#fff;padding:4px 12px;border-radius:12px;font-size:.75rem;font-weight:600;z-index:1;box-shadow:0 2px 8px #3b82f666;text-transform:uppercase;letter-spacing:.5px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.groups-actions{display:flex;gap:var(--spacing-md);margin-top:var(--spacing-md)}.groups-actions .btn{flex:1}.organizer-dashboard{padding:2rem;min-height:100vh;background:#f5f7fa}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-xl);flex-wrap:wrap;gap:var(--spacing-md)}.dashboard-header h1{margin-bottom:0}.header-actions{display:flex;gap:var(--spacing-md);align-items:center}@media(max-width:767px){.dashboard-header{flex-direction:column;align-items:stretch}.header-actions{flex-direction:column;width:100%}.dashboard-header .btn{width:100%}}.tournament-management{padding:var(--spacing-xl) 0;min-height:100vh}.management-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-xl);flex-wrap:wrap;gap:var(--spacing-md)}.management-header h1{margin-bottom:var(--spacing-sm)}.tournament-meta{display:flex;gap:var(--spacing-md);align-items:center;flex-wrap:wrap}.meta-item{font-size:var(--font-size-sm);color:var(--text-secondary)}.action-buttons-vertical{display:flex;flex-direction:column;gap:var(--spacing-md)}.progress-section{margin-top:var(--spacing-md)}.participants-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--spacing-sm);margin-top:var(--spacing-md)}.participant-badge{padding:var(--spacing-sm) var(--spacing-md);background-color:var(--background-color);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.participants-list{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-top:var(--spacing-md)}.participant-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background-color:var(--background-color);border-radius:var(--radius-md);border:1px solid var(--border-color)}.participant-number{font-weight:600;color:var(--text-secondary);min-width:30px}.participant-display{display:flex;align-items:center;justify-content:space-between;flex:1;gap:var(--spacing-md)}.participant-name{flex:1;font-size:var(--font-size-base)}.participant-actions{display:flex;gap:var(--spacing-xs)}.participant-edit{display:flex;align-items:center;gap:var(--spacing-sm);flex:1}.participant-edit .form-input{flex:1;padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-base)}.edit-actions{display:flex;gap:var(--spacing-xs)}.btn-link{background:none;border:none;color:var(--primary-color);text-decoration:underline;cursor:pointer;padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm)}.btn-link:hover{color:var(--primary-color-dark);background-color:var(--background-color)}.btn-sm{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm)}.card h2[style*="cursor: pointer"]{transition:background-color .2s ease;padding:var(--spacing-md);margin:calc(var(--spacing-md) * -1);margin-bottom:var(--spacing-md);border-radius:var(--radius-md) var(--radius-md) 0 0}.card h2[style*="cursor: pointer"]:hover{background-color:var(--background-color)}.card h2[style*="cursor: pointer"] span{display:inline-block;transition:transform .2s ease}.score-highlight{color:var(--success-color);font-weight:600;padding:2px 8px;background-color:#d1fae5;border-radius:var(--radius-sm)}.table tbody tr.top-1{background-color:#fef3c7}.table tbody tr.top-2{background-color:#e5e7eb}.table tbody tr.top-3{background-color:#fed7aa}@media(max-width:767px){.management-header{flex-direction:column;align-items:stretch}.management-header .btn{width:100%}.tournament-management .grid-2,.participants-grid{grid-template-columns:1fr}}.settings-section{display:flex;flex-direction:column;gap:var(--spacing-md)}.setting-item{padding:var(--spacing-md);background-color:var(--background-color);border-radius:var(--radius-md);border:1px solid var(--border-color)}.setting-label{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;font-weight:500;margin-bottom:var(--spacing-xs)}.setting-label input[type=checkbox]{width:20px;height:20px;cursor:pointer}.setting-label span{flex:1}.setting-description{margin:var(--spacing-sm) 0 0 28px;font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.5}.current-round-page{min-height:100vh;background:var(--bg-secondary);padding:var(--spacing-md)}.current-round-page .container{max-width:1400px;margin:0 auto}.current-round-page .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);flex-wrap:wrap;gap:var(--spacing-sm)}.current-round-page .page-header h1{font-size:1.5rem;margin:0}.current-round-page .page-subtitle{color:var(--text-secondary);font-size:.875rem;margin-top:4px}.round-navigation{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-primary);border-radius:var(--radius-md);border:1px solid var(--border-color)}.round-indicator{font-weight:600;color:var(--text-primary);padding:0 var(--spacing-xs);white-space:nowrap}.round-navigation .btn{min-width:100px}.round-navigation .btn:disabled{opacity:.5;cursor:not-allowed}.matches-grid{display:grid;gap:var(--spacing-md)}.match-card{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--spacing-md)}.match-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:2px solid var(--border-color)}.match-header h3{margin:0;color:var(--primary-color)}.match-status{font-size:.875rem}.match-groups{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--spacing-md);align-items:center}.match-group{display:flex;flex-direction:column;gap:var(--spacing-sm)}.group-label{font-weight:600;color:var(--text-primary);font-size:1.125rem;margin-bottom:var(--spacing-xs)}.group-pairs{display:flex;flex-direction:column;gap:var(--spacing-xs);padding:var(--spacing-sm);background:var(--bg-secondary);border-radius:var(--radius-sm)}.pair-info{display:flex;align-items:center;gap:var(--spacing-xs);font-size:.9375rem}.player-name{font-weight:500}.pair-separator{color:var(--text-secondary);font-weight:600;display:inline-block}.vs-divider{font-size:1.5rem;font-weight:700;color:var(--primary-color);text-align:center;padding:0 var(--spacing-sm)}.group-score{margin-top:var(--spacing-sm);padding:var(--spacing-sm);background:var(--bg-tertiary);border-radius:var(--radius-sm)}.score-breakdown{display:flex;flex-direction:column;gap:var(--spacing-xs)}.current-score,.total-score-display{font-size:.9375rem;color:var(--text-secondary)}.score-highlight{color:var(--success-color);font-size:1.125rem}.tables-grid{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);flex:1;align-content:flex-start}.table-card{background:var(--bg-primary);border:2px solid var(--primary-color);border-radius:var(--radius-md);padding:var(--spacing-md);transition:transform .2s,box-shadow .2s;flex:1 1 280px;min-width:280px;max-width:350px}.table-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:2px solid var(--border-color)}.table-number-badge{font-size:1.25rem;font-weight:700;color:var(--primary-color)}.table-meta{font-size:.875rem;color:var(--text-secondary)}.table-matchup{display:flex;flex-direction:row;align-items:flex-start;gap:var(--spacing-sm);justify-content:space-between}.seat-orientation-block{margin-top:var(--spacing-sm);padding:var(--spacing-sm);background:var(--bg-secondary);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:var(--spacing-xs);font-size:.85rem}.table-team{display:flex;flex-direction:column;gap:var(--spacing-xs);flex:1;min-width:0}.team-label{font-weight:600;color:var(--text-secondary);font-size:.75rem;text-align:center}.team-pair{display:flex;align-items:center;justify-content:center;gap:4px;padding:var(--spacing-xs);background:var(--bg-secondary);border-radius:var(--radius-sm);flex-wrap:wrap}.team-pair .player-name{font-size:.75rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.team-pair .pair-separator{font-size:.75rem}.team-score{text-align:center;font-size:1.125rem;font-weight:700;color:var(--primary-color);padding:var(--spacing-xs);background:var(--bg-tertiary);border-radius:var(--radius-sm);margin-top:2px}.table-vs{text-align:center;font-weight:700;color:var(--primary-color);padding:0;font-size:1.125rem;align-self:center;flex-shrink:0}.table-actions{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--border-color)}.table-status{margin-bottom:var(--spacing-sm)}.status-pill{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);border-radius:999px;font-size:.875rem;font-weight:600;border:1px solid var(--border-color);background:var(--background-color);color:var(--text-secondary)}.status-complete{background:#10b98126;color:#059669;border-color:#10b98180}.status-partial{background:#f59e0b26;color:#d97706;border-color:#f59e0b80}.status-pending{background:#64748b26;color:#475569;border-color:#64748b80}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--spacing-sm)}.info-item{display:flex;flex-direction:column;gap:4px;padding:var(--spacing-sm);background:var(--bg-secondary);border-radius:var(--radius-sm)}.info-label{font-size:.75rem;color:var(--text-secondary);font-weight:500}.info-value{font-size:1rem;font-weight:700;color:var(--text-primary)}@media(max-width:768px){.current-round-page{padding:var(--spacing-md)}.match-groups{grid-template-columns:1fr;gap:var(--spacing-sm)}.vs-divider{padding:var(--spacing-sm) 0}.tables-grid{flex-direction:column}.table-card{flex:1 1 100%;min-width:100%;max-width:100%}.table-matchup{gap:6px}.team-pair .player-name,.team-pair .pair-separator,.team-label{font-size:.7rem}.team-score,.table-vs{font-size:1rem}.info-grid{grid-template-columns:1fr}}.leaderboard-page{min-height:100vh;background-color:var(--background-color);padding:var(--spacing-xl) 0}.leaderboard-page .page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-xl);gap:var(--spacing-lg)}.leaderboard-page h1{margin:0;color:var(--text-primary)}.leaderboard-page .page-subtitle{margin:var(--spacing-xs) 0 0;color:var(--text-secondary);font-size:var(--font-size-lg)}.leaderboard-table{margin-bottom:0}.rank-col{width:80px;text-align:center}.group-col{width:100px;text-align:left}.pairs-col{min-width:200px;text-align:left}.record-col{width:110px;text-align:center;font-weight:600}.score-col{width:80px;text-align:center}.tb-col{width:70px;font-weight:600}.round-col{width:70px}.total-col{width:90px;font-weight:700}.rank-badge{font-size:var(--font-size-xl);font-weight:700}.top-1{background-color:#fef3c7}.top-2{background-color:#e5e7eb}.top-3{background-color:#fed7aa}.pairs-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.pair-item{display:flex;align-items:center;gap:var(--spacing-xs);font-size:var(--font-size-sm)}.pair-separator{color:var(--text-secondary);display:inline-block}.score-highlight{color:var(--success-color);font-weight:600}.total-score{font-size:var(--font-size-lg);color:var(--primary-color)}.diff-col{width:90px}.diff-positive{color:var(--success-color);font-weight:600}.diff-negative{color:var(--error-color);font-weight:600}.current-round{background-color:#3b82f61a;font-weight:600}thead .current-round{background-color:var(--primary-color);color:#fff}.not-played{color:var(--text-secondary);opacity:.5}.table-scores-section{margin-top:var(--spacing-xl)}.table-scores-section h2{margin:0;color:var(--text-primary)}.table-scores-section.collapsed .table-scores-content{display:none}.table-scores-content{display:flex;flex-direction:column;gap:var(--spacing-xl)}.collapsible-header{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-sm);border-bottom:2px solid var(--border-color);padding-bottom:var(--spacing-sm);margin-bottom:var(--spacing-md)}.round-section{margin-bottom:var(--spacing-lg)}.round-section .collapsible-header{border-bottom:none;margin-bottom:var(--spacing-sm);padding-bottom:0}.collapse-toggle{border:none;background:none;color:var(--primary-color);font-weight:600;cursor:pointer;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);transition:background-color .2s}.collapse-toggle:hover{background-color:#3b82f61a}.round-section h3{margin:0 0 var(--spacing-md) 0;color:var(--primary-color);font-size:var(--font-size-lg);font-weight:600}.no-scores{padding:var(--spacing-md);border:1px dashed var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);font-style:italic}.no-table-info{margin-top:var(--spacing-sm);color:var(--text-secondary);font-size:var(--font-size-sm)}.matches-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:var(--spacing-md)}.match-card{border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--spacing-md);background-color:#fff;box-shadow:0 1px 3px #0000001a}.match-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-sm);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-color)}.match-summary{font-weight:600;color:var(--primary-color)}.match-summary-label{font-size:var(--font-size-md)}.match-actions{display:flex;align-items:center}.match-toggle{border:none;background-color:var(--background-color);color:var(--primary-color);font-weight:600;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background-color .2s}.match-toggle:hover{background-color:#3b82f61f}.pairs-info{display:flex;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--text-secondary);flex-wrap:wrap}.group-pairs{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.pair-name{color:var(--text-secondary);font-size:var(--font-size-sm)}.vs-separator{font-weight:600;color:var(--text-primary);margin:0 var(--spacing-xs)}.match-tables{display:flex;flex-direction:column;gap:var(--spacing-md);margin-top:var(--spacing-md)}.table-card{border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--spacing-md);background-color:var(--background-color)}.table-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-sm)}.table-card-title{font-weight:600;color:var(--primary-color)}.table-card-score{display:flex;align-items:center;gap:var(--spacing-xs);font-weight:600}.table-pair-summary{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);flex-wrap:wrap;margin-bottom:var(--spacing-sm)}.table-pair{display:flex;flex-direction:column;gap:2px}.table-pair-name{font-weight:600;color:var(--text-primary)}.table-pair-group{font-size:var(--font-size-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em}.table-vs{font-weight:600;color:var(--primary-color)}.table-detail{margin-top:var(--spacing-sm)}.table-detail th,.table-detail td{text-align:center}.table-detail th:first-child,.table-detail td:first-child{text-align:left}.sets-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.sets-table thead{background-color:var(--background-secondary)}.sets-table th{padding:var(--spacing-sm);text-align:left;font-weight:600;color:var(--text-secondary);border-bottom:2px solid var(--border-color)}.sets-table td{padding:var(--spacing-sm);border-bottom:1px solid var(--border-color);text-align:center}.sets-table td:first-child{text-align:left;font-weight:500}.sets-table tbody tr:hover{background-color:#3b82f608}.win-score{color:var(--success-color);font-weight:700}@media(max-width:767px){.leaderboard-page{padding:var(--spacing-md) 0}.leaderboard-page .page-header{flex-direction:column;align-items:flex-start}.leaderboard-table{font-size:var(--font-size-sm)}.rank-col{width:60px}.score-col{width:80px}.rank-badge{font-size:var(--font-size-lg)}.matches-grid{grid-template-columns:1fr}.match-header,.pairs-info{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}.vs-separator{display:none}.match-total{flex-direction:column;gap:var(--spacing-xs);align-items:flex-start}.match-total .separator{display:none}}.round-section.collapsed{margin-bottom:var(--spacing-md)}.round-header h3{margin:0}.admin-score-page{min-height:100vh;background-color:var(--background-color);padding:var(--spacing-lg)}.admin-score-page .container{max-width:1200px;margin:0 auto}.admin-score-header{margin-bottom:var(--spacing-xl);background-color:#fff;border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-sm)}.admin-score-header .header-content{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.admin-score-header h1{margin:0;font-size:var(--font-size-2xl);color:var(--primary-color);flex:1}.btn-back{white-space:nowrap}.tournament-info{display:flex;gap:var(--spacing-lg);align-items:center;padding-top:var(--spacing-md);border-top:1px solid var(--border-color)}.tournament-name{font-weight:600;color:var(--text-primary)}.round-info{color:var(--text-secondary);font-size:var(--font-size-sm)}.admin-score-content{background-color:#fff;border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-sm)}.matches-container{display:flex;flex-direction:column;gap:var(--spacing-xl)}.match-section{background-color:var(--background-color);border-radius:var(--radius-md);padding:var(--spacing-lg);border:2px solid var(--border-color)}.match-section h2{margin-top:0;margin-bottom:var(--spacing-md);color:var(--primary-color);font-size:var(--font-size-xl)}.score-input{width:80px;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:var(--font-size-base);text-align:center}.score-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px #3b82f61a}.score-display{font-weight:600;font-size:var(--font-size-lg);color:var(--primary-color)}.score-empty{font-weight:600;font-size:var(--font-size-lg);color:var(--text-secondary);font-style:italic}.vs-cell{text-align:center;color:var(--text-secondary);font-weight:500}.action-buttons{display:flex;gap:var(--spacing-xs)}.table-section{margin-top:var(--spacing-lg);padding:var(--spacing-lg);border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--surface-color);box-shadow:var(--shadow-sm)}.table-section-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--spacing-md)}.match-score-inline{margin-left:var(--spacing-md);color:var(--primary-color);font-weight:600;text-align:right;display:inline-block;float:right}.table-section-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--spacing-md);gap:var(--spacing-md)}.table-section-title{font-weight:700;color:var(--primary-color);margin-right:var(--spacing-sm);font-size:var(--font-size-lg)}.table-section-subtitle{color:var(--text-secondary);font-size:var(--font-size-sm)}.table-section-status{display:flex;justify-content:flex-end}.table-score-summary{display:flex;flex-direction:column;gap:var(--spacing-xs);margin-bottom:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--background-color);border-radius:var(--radius-sm)}.table-score-row{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-sm)}.table-score-names{color:var(--text-secondary)}.table-score-value{font-weight:600;color:var(--primary-color);font-size:var(--font-size-lg)}.seat-orientation-block{margin-bottom:var(--spacing-md);padding:var(--spacing-sm);background:var(--background-color);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:var(--spacing-xs);font-size:var(--font-size-sm)}.seat-orientation-title{font-weight:600;color:var(--text-primary)}.seat-orientation-block.compact{margin-bottom:var(--spacing-sm)}.seat-orientation-row{display:flex;justify-content:space-between;gap:var(--spacing-sm);flex-wrap:wrap}.status-pill{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);border-radius:999px;font-size:var(--font-size-sm);font-weight:600;border:1px solid var(--border-color);background:var(--background-color);color:var(--text-secondary)}.status-complete{background:#10b9811f;color:var(--success-color);border-color:#10b98166}.status-partial{background:#f59e0b1f;color:var(--warning-color);border-color:#f59e0b66}.status-pending{background:#64748b1f;color:var(--secondary-color);border-color:#64748b66}.focus-table-details{background:var(--background-color);border:2px solid var(--primary-color);border-radius:var(--radius-md);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg)}.focus-table-heading{display:flex;justify-content:space-between;align-items:baseline;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.focus-table-number{font-weight:700;color:var(--primary-color);font-size:var(--font-size-xl)}.focus-table-meta{color:var(--text-secondary);font-size:var(--font-size-sm)}.focus-table-matchup{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--spacing-lg);align-items:center}.focus-team{display:flex;flex-direction:column;gap:var(--spacing-xs)}.focus-team-label{font-weight:600;color:var(--text-secondary);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em}.focus-team-pair{display:flex;align-items:center;gap:var(--spacing-xs);font-weight:500;color:var(--text-primary);font-size:var(--font-size-base)}.focus-pair-separator{color:var(--text-secondary);font-weight:600;margin:0 var(--spacing-xs)}.focus-table-vs{text-align:center;font-weight:700;color:var(--primary-color);font-size:var(--font-size-xl)}@media(max-width:767px){.admin-score-page{padding:var(--spacing-sm)}.admin-score-header h1{font-size:var(--font-size-xl)}.admin-score-header .header-content{flex-direction:column;align-items:stretch}.btn-back{width:100%}.tournament-info{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}.table{font-size:var(--font-size-sm)}.score-input{width:60px}.action-buttons{flex-direction:column}.btn-sm{padding:var(--spacing-xs);font-size:var(--font-size-xs)}.table-section{padding:var(--spacing-md)}.table-score-summary{padding:var(--spacing-xs) var(--spacing-sm)}.focus-table-matchup{grid-template-columns:1fr;text-align:center}.focus-table-vs{margin:var(--spacing-sm) 0}.focus-team{align-items:center}.match-section h2{font-size:var(--font-size-lg)}}.all-rounds-scores-page{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:2rem 0}.all-rounds-scores-page .container{max-width:1400px;margin:0 auto;padding:0 1rem}.all-rounds-scores-page .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 8px #0000001a}.all-rounds-scores-page .header-left{display:flex;align-items:center;gap:1rem}.all-rounds-scores-page .page-header h1{margin:0;font-size:1.8rem;color:#333}.all-rounds-scores-page .tournament-info{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 8px #0000001a;margin-bottom:2rem}.all-rounds-scores-page .tournament-info h2{margin:0 0 1rem;font-size:1.5rem;color:#667eea}.all-rounds-scores-page .info-row{display:flex;gap:2rem;align-items:center}.all-rounds-scores-page .info-label{font-weight:600;color:#555}.all-rounds-scores-page .info-value{color:#333;font-weight:500}.all-rounds-scores-page .scores-table-wrapper{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 8px #0000001a;overflow-x:auto;margin-bottom:2rem}.all-rounds-scores-table{width:100%;border-collapse:collapse;min-width:800px}.all-rounds-scores-table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.all-rounds-scores-table th{padding:1rem;text-align:center;font-weight:600;border:1px solid #ddd}.all-rounds-scores-table th.group-col{background:linear-gradient(135deg,#667eea,#764ba2);position:sticky;left:0;z-index:2;min-width:120px}.all-rounds-scores-table th.round-col{min-width:180px}.all-rounds-scores-table th.round-col.current-round{background:linear-gradient(135deg,#ffc107,#ff9800)}.all-rounds-scores-table th.round-col .current-badge{display:block;background:#667eea;color:#fff;padding:.2rem .5rem;border-radius:4px;font-size:.75rem;margin-top:.3rem}.all-rounds-scores-table tbody tr{transition:background-color .2s}.all-rounds-scores-table tbody tr:hover{background-color:#f8f9fa}.all-rounds-scores-table td{padding:1rem;border:1px solid #ddd;text-align:center;vertical-align:middle}.all-rounds-scores-table td.group-number{background:linear-gradient(135deg,#f8f9fa,#e9ecef);font-weight:600;color:#333;position:sticky;left:0;z-index:1}.all-rounds-scores-table .group-info{display:flex;flex-direction:column;align-items:center;gap:.25rem}.all-rounds-scores-table .group-name{font-size:1rem;font-weight:600}.all-rounds-scores-table .group-participants{display:flex;flex-direction:column;gap:.15rem;margin:.25rem 0}.all-rounds-scores-table .pair-names{font-size:.75rem;color:#555;font-weight:500;white-space:nowrap}.all-rounds-scores-table .group-record{font-size:.85rem;color:#666;font-weight:500}.all-rounds-scores-table .score-cell{padding:.5rem}.all-rounds-scores-table .score-cell.current-round{background-color:#fff3cd}.all-rounds-scores-table .score-cell.past-round{background-color:#fff}.all-rounds-scores-table .score-cell.future-round{background-color:#f8f9fa}.all-rounds-scores-table .score-content{display:flex;flex-direction:column;gap:.5rem;align-items:center}.all-rounds-scores-table .opponent{display:flex;flex-direction:column;gap:.25rem;align-items:center}.all-rounds-scores-table .opponent-group{font-size:.85rem;color:#666;font-weight:500}.all-rounds-scores-table .opponent-participants{display:flex;flex-direction:column;gap:.15rem}.all-rounds-scores-table .opponent-pair{font-size:.7rem;color:#777;font-weight:400}.all-rounds-scores-table .score-display{display:flex;gap:.5rem;align-items:center;justify-content:center}.all-rounds-scores-table .score-numbers{font-weight:600;font-size:1.1rem;color:#333}.all-rounds-scores-table .score-diff{font-size:.9rem;color:#666}.all-rounds-scores-table .score-diff.positive{color:#28a745;font-weight:600}.all-rounds-scores-table .score-diff.negative{color:#dc3545;font-weight:600}.all-rounds-scores-table .no-score{color:#999;font-style:italic}.all-rounds-scores-table .result-row{display:flex;justify-content:center}.all-rounds-scores-table .result-badge{display:inline-block;padding:.3rem .8rem;border-radius:4px;font-size:.85rem;font-weight:600;text-transform:uppercase}.all-rounds-scores-table .result-badge.win{background:#28a745;color:#fff}.all-rounds-scores-table .result-badge.draw{background:#ffc107;color:#333}.all-rounds-scores-table .result-badge.loss{background:#dc3545;color:#fff}.all-rounds-scores-table .result-badge.pending{background:#667eea;color:#fff}.all-rounds-scores-table .result-badge.upcoming{background:#6c757d;color:#fff}.all-rounds-scores-table .result-badge.no-data{background:#e9ecef;color:#999}.all-rounds-scores-page .legend{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 8px #0000001a}.all-rounds-scores-page .legend h3{margin:0 0 1rem;font-size:1.2rem;color:#333}.all-rounds-scores-page .legend-items{display:flex;gap:2rem;flex-wrap:wrap}.all-rounds-scores-page .legend-item{display:flex;align-items:center;gap:.5rem}.all-rounds-scores-page .legend-item span:last-child{color:#666}.all-rounds-scores-page .loading-spinner{text-align:center;padding:3rem;font-size:1.2rem;color:#fff}.all-rounds-scores-page .alert{padding:1rem;border-radius:8px;margin-bottom:1rem}.all-rounds-scores-page .alert-danger{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}@media(max-width:768px){.all-rounds-scores-page .page-header{flex-direction:column;gap:1rem}.all-rounds-scores-page .page-header h1{font-size:1.5rem}.all-rounds-scores-page .info-row{flex-direction:column;gap:.5rem;align-items:flex-start}.all-rounds-scores-table th.group-col{min-width:140px}.all-rounds-scores-page .legend-items{flex-direction:column;gap:.5rem}}.qrcode-management{padding:2rem 0}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.page-header h1{margin:0}.qrcode-list .content-cell{max-width:300px;word-break:break-all}.qrcode-list code{background:#f4f4f4;padding:2px 6px;border-radius:3px;font-size:.9em}.qrcode-list .text-center{text-align:center}.logo-preview{margin:1rem 0;display:flex;align-items:center;gap:1rem}.logo-preview img{max-width:150px;max-height:150px;border:1px solid #ddd;border-radius:4px;padding:4px}.form-actions{display:flex;gap:1rem;margin-top:2rem}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:#fff;border-radius:8px;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 4px 6px #0000001a}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #ddd}.modal-header h2{margin:0}.close-btn{background:none;border:none;font-size:2rem;line-height:1;color:#666;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center}.close-btn:hover{color:#000}.modal-body{padding:1.5rem}.qrcode-viewer{display:flex;flex-direction:column;gap:2rem}.qrcode-image{text-align:center;padding:1rem;background:#f9f9f9;border-radius:8px}.qrcode-image img{max-width:100%;height:auto}.qrcode-info{display:flex;flex-direction:column;gap:1rem}.info-row{display:flex;flex-direction:column;gap:.5rem}.info-row label{font-weight:600;color:#555}.info-row .content-display,.info-row .url-text{word-break:break-all;padding:.5rem;background:#f9f9f9;border-radius:4px}.url-display{display:flex;flex-direction:column;gap:.5rem}.url-display .btn{align-self:flex-start}.viewer-actions{display:flex;gap:1rem;justify-content:center;padding-top:1rem;border-top:1px solid #ddd}@media(max-width:768px){.page-header{flex-direction:column;align-items:flex-start;gap:1rem}.form-actions,.viewer-actions{flex-direction:column}.form-actions button,.viewer-actions button{width:100%}}.table-assignment-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-md)}.table-assignment-modal{background:var(--surface-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:700px;width:100%;max-height:90vh;display:flex;flex-direction:column}.table-assignment-header{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--spacing-lg);border-bottom:1px solid var(--border-color)}.table-assignment-header h2{margin:0 0 var(--spacing-xs) 0}.assignment-subtitle{margin:0;font-size:var(--font-size-sm);color:var(--text-secondary)}.table-assignment-content{flex:1;overflow-y:auto;padding:var(--spacing-lg)}.table-number-card{text-align:center;padding:var(--spacing-xl);background:linear-gradient(135deg,var(--primary-color),#1d4ed8);color:#fff;border-radius:var(--radius-lg);margin-bottom:var(--spacing-lg)}.table-label{font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:1px;opacity:.9;margin-bottom:var(--spacing-xs)}.table-number{font-size:2.5rem;font-weight:700;margin-bottom:var(--spacing-xs)}.match-info{font-size:var(--font-size-base);opacity:.9}.assignment-details{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--spacing-lg);align-items:center;margin-bottom:var(--spacing-lg)}.seat-orientation-card{margin-bottom:var(--spacing-lg);padding:var(--spacing-lg);background:var(--background-color);border-radius:var(--radius-lg);border:1px solid var(--border-color)}.seat-orientation-card h3{margin-top:0;color:var(--text-primary)}.seat-orientation-row{display:flex;justify-content:space-between;gap:var(--spacing-sm);flex-wrap:wrap;margin-top:var(--spacing-sm)}.seat-orientation-label{font-weight:600;color:var(--text-secondary)}.seat-orientation-values{color:var(--text-primary);text-align:right;flex:1}.team-section h3{text-align:center;margin-bottom:var(--spacing-md);font-size:var(--font-size-base);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.team-card{padding:var(--spacing-lg);border-radius:var(--radius-lg);border:2px solid var(--border-color);text-align:center}.my-team{background-color:#dbeafe;border-color:var(--primary-color)}.opponent-team{background-color:#fee2e2;border-color:var(--error-color)}.group-badge{font-size:var(--font-size-sm);font-weight:600;color:var(--text-secondary);margin-bottom:var(--spacing-md)}.pair-display{display:flex;flex-direction:column;gap:var(--spacing-xs);margin-bottom:var(--spacing-md)}.player-name{font-size:var(--font-size-lg);font-weight:600;color:var(--text-primary)}.pair-separator{font-size:var(--font-size-sm);color:var(--text-secondary);display:inline-block}.team-score{font-size:var(--font-size-sm);color:var(--text-secondary)}.team-score strong{font-size:var(--font-size-base);color:var(--text-primary)}.other-tables{margin-top:var(--spacing-lg);background-color:var(--background-color);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.other-tables-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--spacing-md)}.other-table-item{padding:var(--spacing-md);border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:var(--surface-color);display:flex;flex-direction:column;gap:var(--spacing-xs)}.table-pairs{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;font-weight:500;color:var(--text-primary)}.my-pair,.opponent-pair{max-width:100%}.vs-separator{color:var(--text-secondary);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px}.table-scores{display:flex;align-items:center;gap:var(--spacing-xs);color:var(--text-secondary);font-size:var(--font-size-sm)}.table-scores .score-label{font-weight:600}.table-scores .score-value{font-weight:700;color:var(--text-primary)}.vs-section{display:flex;align-items:center;justify-content:center}.vs-badge{width:60px;height:60px;border-radius:50%;background-color:var(--background-color);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xl);font-weight:700;color:var(--text-secondary);border:2px solid var(--border-color)}.mode-info{background-color:#fef3c7;border:1px solid var(--warning-color)}.mode-info h3{font-size:var(--font-size-base);margin-bottom:var(--spacing-sm)}.mode-info p{margin-bottom:var(--spacing-sm);font-size:var(--font-size-sm)}.mode-info p:last-child{margin-bottom:0}.round-info{background-color:var(--background-color)}.round-info h3{margin-bottom:var(--spacing-md)}.table-assignment-footer{padding:var(--spacing-lg);border-top:1px solid var(--border-color)}@media(max-width:767px){.table-assignment-modal{max-height:95vh}.table-assignment-content{padding:var(--spacing-md)}.table-number{font-size:2rem}.assignment-details{grid-template-columns:1fr;gap:var(--spacing-md)}.vs-section{order:1}.vs-badge{width:100%;height:40px;border-radius:var(--radius-md)}}.layout-map-modal{max-width:95vw;max-height:95vh}.layout-map-content{flex:1;overflow:auto;padding:var(--spacing-lg);display:flex;align-items:center;justify-content:center;background-color:#f5f5f5}.layout-map-content img{display:block;cursor:zoom-in}.layout-map-section{margin-top:0;padding:var(--spacing-md)}.layout-map-section .btn{background-color:var(--primary-color);color:#fff;border:none;padding:var(--spacing-md);font-size:var(--font-size-md);font-weight:600;transition:background-color .2s}.layout-map-section .btn:hover{background-color:var(--primary-dark)}.score-submission-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-md)}.score-submission-modal{background:var(--surface-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:640px;width:100%;max-height:90vh;display:flex;flex-direction:column}.score-submission-header{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--spacing-lg);border-bottom:1px solid var(--border-color)}.score-submission-header h2{margin:0 0 var(--spacing-xs) 0}.score-submission-content{flex:1;overflow-y:auto;padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-lg)}.opponent-card{padding:var(--spacing-md);border-radius:var(--radius-md);border:1px solid var(--border-color);background-color:var(--background-color)}.scores-table-wrapper{overflow-x:auto}.scores-table{width:100%;border-collapse:collapse}.scores-table thead th{background-color:var(--background-color);font-weight:600;color:var(--text-secondary)}.scores-table th,.scores-table td{padding:var(--spacing-sm);text-align:center;border-bottom:1px solid var(--border-color)}.scores-table td:first-child{text-align:left}.score-input{width:70px;height:44px;text-align:center;font-size:var(--font-size-xl);font-weight:600;border:2px solid var(--border-color);border-radius:var(--radius-md);transition:all .2s}.score-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1f}.totals-row{display:grid;grid-template-columns:100px 1fr;gap:var(--spacing-md);align-items:center;padding:var(--spacing-md);background:var(--background-color);border-radius:var(--radius-md)}.total-label{font-weight:700;font-size:var(--font-size-lg);color:var(--text-primary)}.total-scores{display:flex;align-items:center;justify-content:center;gap:var(--spacing-md)}.total-score{width:80px;height:60px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-2xl);font-weight:700;border-radius:var(--radius-md)}.score-separator{font-size:var(--font-size-2xl);font-weight:700;color:var(--text-secondary)}.auto-save-note{font-size:var(--font-size-sm)}.saving-indicator{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--text-secondary);font-size:var(--font-size-sm)}.spinner-inline{width:16px;height:16px;border:2px solid var(--primary-color);border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.form-actions{display:flex;justify-content:flex-end}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.mismatch-list{margin:var(--spacing-md) 0 0 0;padding:0;list-style:none}.mismatch-list li{margin-bottom:var(--spacing-sm);padding:var(--spacing-sm);background-color:#ffffff1a;border-radius:var(--radius-sm)}.mismatch-details{display:flex;flex-direction:column;gap:var(--spacing-xs);margin-top:var(--spacing-xs);font-size:.9em}.mismatch-details .vs-text{font-weight:700;color:var(--error-color);text-align:center}@media(max-width:640px){.score-submission-modal{max-width:100%;max-height:100vh;border-radius:0}.score-submission-content{padding:var(--spacing-md)}.totals-row{grid-template-columns:1fr;text-align:center}}.round-scores-history{padding:1rem 0}.scores-summary{margin-bottom:2rem}.scores-summary h3{margin-bottom:1rem;color:#2c3e50;font-size:1.25rem}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}.summary-card{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 4px 6px #0000001a;text-align:center;transition:transform .2s}.summary-card:hover{transform:translateY(-4px);box-shadow:0 6px 12px #00000026}.summary-label{font-size:.875rem;opacity:.9;margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.5px}.summary-value{font-size:2rem;font-weight:700}.summary-value.rank-value{color:gold}.summary-value.positive{color:#4ade80}.summary-value.negative{color:#f87171}.rounds-timeline{margin-bottom:2rem}.rounds-timeline h3{margin-bottom:1.5rem;color:#2c3e50;font-size:1.25rem}.timeline{position:relative;padding-left:2rem}.timeline:before{content:"";position:absolute;left:9px;top:0;bottom:0;width:2px;background:linear-gradient(to bottom,#667eea,#764ba2)}.timeline-item{position:relative;margin-bottom:2rem;padding-left:2rem}.timeline-marker{position:absolute;left:0;top:0}.timeline-dot{width:20px;height:20px;border-radius:50%;background:#fff;border:3px solid #cbd5e0;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}.timeline-item.completed .timeline-dot{background:#4ade80;border-color:#4ade80;color:#fff}.timeline-item.current .timeline-dot{background:#3b82f6;border-color:#3b82f6;color:#fff;animation:pulse 2s infinite}.timeline-item.future .timeline-dot{background:#f3f4f6;border-color:#cbd5e0;color:#9ca3af}@keyframes pulse{0%,to{box-shadow:0 0 #3b82f6b3}50%{box-shadow:0 0 0 10px #3b82f600}}.timeline-content{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:1rem;box-shadow:0 2px 4px #0000000d}.timeline-item.current .timeline-content{border-color:#3b82f6;border-width:2px;box-shadow:0 4px 8px #3b82f61a}.timeline-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.timeline-header h4{margin:0;font-size:1rem;color:#1f2937;display:flex;align-items:center;gap:.5rem}.badge{font-size:.75rem;padding:.25rem .5rem;border-radius:4px;font-weight:600}.badge-info{background-color:#3b82f6;color:#fff}.badge-secondary{background-color:#9ca3af;color:#fff}.timeline-body{color:#4b5563}.matchup-header{text-align:center;font-size:1.125rem;font-weight:700;color:#1f2937;margin-bottom:1rem;padding:.75rem;background:linear-gradient(135deg,#f3f4f6,#e5e7eb);border-radius:8px;border:2px solid #d1d5db}.vs-text{display:inline-block;margin:0 .75rem;padding:.25rem .75rem;background-color:#6366f1;color:#fff;border-radius:6px;font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:1px}.round-team-info{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #e5e7eb}.team-section{padding:.75rem;border-radius:8px;background-color:#f9fafb}.team-section.your-team{background:linear-gradient(135deg,#e0f2fe,#dbeafe);border:2px solid #3b82f6}.team-section.opponent-team{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:2px solid #ef4444}.team-label{font-weight:600;font-size:.875rem;margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.5px}.team-section.your-team .team-label{color:#1e40af}.team-section.opponent-team .team-label{color:#991b1b}.team-members{display:flex;flex-direction:column;gap:.25rem}.pair-info{font-size:.875rem;padding:.25rem 0;display:flex;justify-content:space-between;align-items:center}.pair-info .highlight-pair{font-weight:700;color:#1e40af}.pair-score{font-weight:700;font-size:1rem;padding:.125rem .5rem;background-color:#ffffffb3;border-radius:4px;margin-left:.5rem}.team-total-score{margin-top:.75rem;padding-top:.75rem;border-top:2px solid rgba(0,0,0,.1);font-size:1rem;text-align:center}.team-section.your-team .team-total-score{border-top-color:#3b82f6;color:#1e40af}.team-section.opponent-team .team-total-score{border-top-color:#ef4444;color:#991b1b}.team-total-score strong{font-size:1.25rem;margin-left:.5rem}.round-score-display{display:flex;align-items:center;gap:.75rem;margin-top:.75rem;padding:.75rem;background-color:#f9fafb;border-radius:8px;justify-content:center}.score-label{font-weight:600;color:#4b5563;font-size:1rem}.score-value{font-size:1.25rem;font-weight:700;padding:.375rem .875rem;border-radius:6px}.score-detail{font-size:1.125rem;font-weight:600;color:#6b7280;margin-left:.5rem}.score-value.win{color:#16a34a;background-color:#dcfce7}.score-value.draw{color:#ca8a04;background-color:#fef9c3}.score-value.loss{color:#dc2626;background-color:#fee2e2}.score-value.pending{color:#6366f1;background-color:#e0e7ff}.no-score{color:#9ca3af;font-style:italic}.match-record{margin-top:2rem}.match-record h3{margin-bottom:1rem;color:#2c3e50;font-size:1.25rem}.record-display{display:flex;justify-content:center;align-items:center;gap:2rem;padding:2rem;background:linear-gradient(135deg,#f3f4f6,#e5e7eb);border-radius:12px}.record-item{display:flex;flex-direction:column;align-items:center;gap:.5rem}.record-count{font-size:3rem;font-weight:700;line-height:1}.record-item.wins .record-count{color:#16a34a}.record-item.draws .record-count{color:#ca8a04}.record-item.losses .record-count{color:#dc2626}.record-label{font-size:.875rem;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;font-weight:600}.record-separator{font-size:2rem;color:#9ca3af;font-weight:700}@media(max-width:768px){.summary-cards{grid-template-columns:repeat(2,1fr)}.timeline,.timeline-item{padding-left:1.5rem}.round-team-info{grid-template-columns:1fr;gap:.75rem}.record-display{gap:1rem;padding:1.5rem}.record-count{font-size:2rem}.record-separator{font-size:1.5rem}}@media(max-width:480px){.summary-cards,.round-team-info{grid-template-columns:1fr}.record-display{flex-direction:column;gap:1.5rem}.record-separator{display:none}}.participant-dashboard{padding:var(--spacing-xl) 0;min-height:100vh}.participant-dashboard .dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-xl);flex-wrap:wrap;gap:var(--spacing-md);position:sticky;top:0;background-color:#fff;z-index:100;padding:var(--spacing-md) 0;box-shadow:0 2px 4px #0000001a;margin-left:calc(var(--spacing-xl) * -1);margin-right:calc(var(--spacing-xl) * -1);padding-left:var(--spacing-xl);padding-right:var(--spacing-xl);margin-top:calc(var(--spacing-xl) * -1)}.participant-dashboard .dashboard-header h1{margin-bottom:0}.info-grid{display:grid;gap:var(--spacing-md)}.info-item{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-color)}.info-label{font-weight:500;color:var(--text-secondary)}.info-value{font-weight:600;color:var(--text-primary)}.action-buttons{display:flex;gap:var(--spacing-md);margin-top:var(--spacing-lg)}.participant-dashboard .card h2[style*="cursor: pointer"]{transition:background-color .2s ease;padding:var(--spacing-md);margin:calc(var(--spacing-md) * -1);margin-bottom:var(--spacing-md);border-radius:var(--radius-md) var(--radius-md) 0 0}.participant-dashboard .card h2[style*="cursor: pointer"]:hover{background-color:var(--background-color)}.participant-dashboard .card h2[style*="cursor: pointer"] span{display:inline-block;transition:transform .2s ease}.participant-dashboard .leaderboard-table{margin-bottom:0}.participant-dashboard .rank-col{width:80px;text-align:center}.participant-dashboard .group-col{width:100px;text-align:left}.participant-dashboard .pairs-col{min-width:200px;text-align:left}.participant-dashboard .record-col{width:130px;text-align:center}.participant-dashboard .score-col{width:80px;text-align:center}.participant-dashboard .tb-col{width:70px}.participant-dashboard .diff-col{width:90px;text-align:center}.participant-dashboard .round-col{width:70px}.participant-dashboard .total-col{width:90px;font-weight:700}.participant-dashboard .rank-badge{font-size:var(--font-size-xl);font-weight:700}.participant-dashboard .top-1{background-color:#fef3c7}.participant-dashboard .top-2{background-color:#e5e7eb}.participant-dashboard .top-3{background-color:#fed7aa}.participant-dashboard .participant-summary{background-color:#fef3c7;border-left:4px solid #f59e0b;padding:var(--spacing-md);margin-bottom:var(--spacing-lg);border-radius:var(--radius-md);font-size:var(--font-size-md);color:var(--text-primary)}.participant-dashboard .participant-summary .rank-highlight{color:#dc2626;font-size:var(--font-size-lg)}.participant-dashboard .summary-metrics{display:flex;flex-wrap:wrap;gap:var(--spacing-md);margin-top:var(--spacing-sm)}.participant-dashboard .summary-metric{display:flex;align-items:baseline;gap:var(--spacing-xs);font-size:var(--font-size-sm);color:var(--text-secondary)}.participant-dashboard .participant-metric{color:var(--primary-color);font-weight:700}.participant-dashboard .participant-group{background-color:#3b82f626;border-left:4px solid var(--primary-color);font-weight:600}.participant-dashboard .participant-group.top-1,.participant-dashboard .participant-group.top-2,.participant-dashboard .participant-group.top-3{border-left:4px solid var(--primary-color)}.participant-dashboard .participant-group-name{color:#dc2626!important;font-weight:700}.participant-dashboard .participant-pair-name{color:#dc2626!important;font-weight:600}.participant-dashboard .pairs-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.participant-dashboard .pair-item{display:flex;align-items:center;gap:var(--spacing-xs);font-size:var(--font-size-sm)}.participant-dashboard .participant-metric-cell{background-color:#3b82f61a;font-weight:700}.participant-dashboard .participant-score-text{color:var(--primary-color);font-weight:700}.participant-dashboard .pair-separator{color:var(--text-secondary)}.participant-dashboard .score-highlight{color:var(--success-color);font-weight:600}.participant-dashboard .total-score{font-size:var(--font-size-lg);color:var(--primary-color)}.participant-dashboard .diff-positive{color:var(--success-color);font-weight:600}.participant-dashboard .diff-negative{color:var(--error-color);font-weight:600}.participant-dashboard .rank-medal{font-weight:700;font-size:1.1rem;display:inline-flex;align-items:center;gap:.25rem}.participant-dashboard .rank-gold{color:#d4af37;text-shadow:0 1px 2px rgba(212,175,55,.3)}.participant-dashboard .rank-silver{color:silver;text-shadow:0 1px 2px rgba(192,192,192,.3)}.participant-dashboard .rank-bronze{color:#cd7f32;text-shadow:0 1px 2px rgba(205,127,50,.3)}.participant-dashboard .rank-1-row{background:linear-gradient(90deg,#d4af3726,#d4af370d);border-left:3px solid #d4af37}.participant-dashboard .rank-1-row:hover{background:linear-gradient(90deg,#d4af3740,#d4af371a)}.participant-dashboard .rank-2-row{background:linear-gradient(90deg,#c0c0c026,#c0c0c00d);border-left:3px solid #c0c0c0}.participant-dashboard .rank-2-row:hover{background:linear-gradient(90deg,#c0c0c040,#c0c0c01a)}.participant-dashboard .rank-3-row{background:linear-gradient(90deg,#cd7f3226,#cd7f320d);border-left:3px solid #cd7f32}.participant-dashboard .rank-3-row:hover{background:linear-gradient(90deg,#cd7f3240,#cd7f321a)}.participant-dashboard .current-round{background-color:#3b82f61a;font-weight:600}.participant-dashboard thead .current-round{background-color:var(--primary-color);color:#fff}.participant-dashboard .not-played{color:var(--text-secondary);opacity:.5}@media(max-width:767px){.participant-dashboard .dashboard-header{flex-direction:column;align-items:stretch}.participant-dashboard .dashboard-header .btn{width:100%}.participant-dashboard .grid-2{grid-template-columns:1fr}.action-buttons{flex-direction:column}.action-buttons .btn{width:100%}.participant-dashboard .leaderboard-table{font-size:var(--font-size-sm)}.participant-dashboard .rank-col{width:60px}.participant-dashboard .score-col{width:80px}.participant-dashboard .rank-badge{font-size:var(--font-size-lg)}}.hamburger-menu-btn{background:none;border:none;cursor:pointer;padding:var(--spacing-sm);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);transition:background-color .2s ease}.hamburger-menu-btn:hover{background-color:#0000000d}.hamburger-icon{font-size:1.5rem;color:var(--text-primary)}.menu-overlay{position:fixed;inset:0;background-color:#00000080;z-index:999;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.hamburger-menu-panel{position:fixed;top:0;right:0;width:320px;max-width:85vw;height:100vh;background-color:#fff;box-shadow:-2px 0 8px #00000026;z-index:1000;overflow-y:auto;animation:slideIn .3s ease}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}.menu-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);border-bottom:1px solid var(--border-color);background-color:var(--primary-color);color:#fff}.menu-header h3{margin:0;font-size:var(--font-size-lg);font-weight:600}.menu-close-btn{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:var(--spacing-xs);line-height:1;border-radius:var(--radius-sm);transition:background-color .2s ease}.menu-close-btn:hover{background-color:#fff3}.menu-actions{display:flex;gap:var(--spacing-sm);padding:var(--spacing-md);border-bottom:1px solid var(--border-color)}.menu-action-btn{flex:1;padding:var(--spacing-sm) var(--spacing-md);background-color:var(--background-color);border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm);font-weight:500;transition:all .2s ease}.menu-action-btn:hover{background-color:var(--primary-color);color:#fff;border-color:var(--primary-color)}.menu-nav{display:flex;flex-direction:column;padding:var(--spacing-sm) 0}.menu-item{background:none;border:none;text-align:left;padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-md);color:var(--text-primary);cursor:pointer;border-bottom:1px solid var(--border-color);transition:all .2s ease}.menu-item:hover{background-color:var(--background-color);color:var(--primary-color);padding-left:calc(var(--spacing-lg) + var(--spacing-xs))}.menu-item:active{background-color:#3b82f61a}@media(max-width:767px){.hamburger-menu-panel{width:280px}}.wechat-login-button{display:flex;align-items:center;justify-content:center;gap:.75rem;width:100%;padding:.875rem 1.5rem;background-color:#09bb07;color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s ease;box-shadow:0 2px 4px #09bb0733}.wechat-login-button:hover:not(:disabled){background-color:#08a006;box-shadow:0 4px 8px #09bb074d;transform:translateY(-1px)}.wechat-login-button:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 4px #09bb0733}.wechat-login-button:disabled{background-color:#a8e6a3;cursor:not-allowed;box-shadow:none}.wechat-icon{width:24px;height:24px;fill:#fff}.wechat-divider{display:flex;align-items:center;text-align:center;margin:1.5rem 0;color:#94a3b8}.wechat-divider:before,.wechat-divider:after{content:"";flex:1;border-bottom:1px solid #e2e8f0}.wechat-divider span{padding:0 1rem;font-size:.875rem}.participant-portal{padding:var(--spacing-xl) 0;min-height:100vh;display:flex;align-items:center}.login-container{max-width:500px;margin:0 auto}.login-card{text-align:center}.login-subtitle{color:var(--text-secondary);margin-bottom:var(--spacing-xl)}.login-card form{text-align:left}@media(max-width:767px){.participant-portal{padding:var(--spacing-md) 0}}.tournament-portal-layout{display:flex;min-height:100vh;background-color:#f5f7fa}.tournament-sidebar{width:280px;background:linear-gradient(180deg,#1a365d,#2c5282);color:#fff;padding:2rem 0;box-shadow:2px 0 8px #0000001a;position:fixed;height:100vh;overflow-y:auto;transition:width .3s ease,padding .3s ease}.sidebar-collapsed .tournament-sidebar{width:60px;padding:2rem .5rem}.tournament-sidebar-header{padding:0 1.5rem 2rem;border-bottom:1px solid rgba(255,255,255,.2);position:relative}.sidebar-collapsed .tournament-sidebar-header{padding:0 .5rem 1rem}.tournament-sidebar-title{font-size:1.25rem;font-weight:600;margin:0 0 .5rem;color:#fff;transition:opacity .3s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-collapsed .tournament-sidebar-title{opacity:0;height:0;margin:0}.sidebar-toggle-btn{position:absolute;top:.5rem;right:.5rem;background:#ffffff1a;border:none;color:#fff;width:32px;height:32px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.2rem;transition:background .2s;padding:0}.sidebar-toggle-btn:hover{background:#fff3}.sidebar-collapsed .sidebar-toggle-btn{right:50%;transform:translate(50%)}.tournament-sidebar-date{font-size:.875rem;color:#fffc;margin:0 0 .5rem}.tournament-sidebar-participant{font-size:.95rem;color:#90cdf4;font-weight:500;margin:.5rem 0 0;padding-top:.75rem;border-top:1px solid rgba(255,255,255,.1)}.tournament-sidebar-nav{padding:1.5rem 0}.tournament-sidebar-nav ul{list-style:none;padding:0;margin:0}.tournament-sidebar-nav li{margin:0}.tournament-sidebar-nav a,.tournament-sidebar-nav button{display:flex;align-items:center;padding:.875rem 1.5rem;color:#ffffffe6;text-decoration:none;transition:all .2s;border:none;background:none;width:100%;text-align:left;cursor:pointer;font-size:.95rem}.sidebar-collapsed .tournament-sidebar-nav a,.sidebar-collapsed .tournament-sidebar-nav button{padding:.875rem .5rem;justify-content:center}.nav-text{transition:opacity .3s ease}.sidebar-collapsed .nav-text{opacity:0;width:0;overflow:hidden}.tournament-sidebar-nav a:hover,.tournament-sidebar-nav button:hover{background-color:#ffffff1a;color:#fff}.tournament-sidebar-nav a.active,.tournament-sidebar-nav button.active{background-color:#ffffff26;color:#fff;font-weight:600}.tournament-sidebar-nav .nav-icon{margin-right:.75rem;font-size:1.125rem;min-width:24px;display:flex;align-items:center;justify-content:center;line-height:1}.sidebar-collapsed .tournament-sidebar-nav .nav-icon{margin-right:0;font-size:1.25rem}.tournament-main-content{flex:1;margin-left:280px;padding:2rem;transition:margin-left .3s ease}.sidebar-collapsed .tournament-main-content{margin-left:60px}.tournament-content-header{background:#fff;padding:1.5rem 2rem;border-radius:8px;box-shadow:0 1px 3px #0000001a;margin-bottom:2rem;display:flex;justify-content:space-between;align-items:center}.tournament-content-header h1{margin:0;font-size:1.75rem;color:#1a202c}.tournament-login-card{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 1px 3px #0000001a;max-width:500px}.tournament-info-box{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1.5rem;border-radius:8px;margin-bottom:2rem}.tournament-info-box h2{margin:0 0 .5rem;font-size:1.5rem;font-weight:600}.tournament-info-box p{margin:0;opacity:.9}.language-switcher-container{padding:1rem 1.5rem;border-top:1px solid rgba(255,255,255,.2)}.tournament-section-content{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 1px 3px #0000001a}.tournament-section-content h2{margin:0 0 1.5rem;font-size:1.75rem;color:#1a202c}.tournament-section-content .dashboard-compact-info{background:linear-gradient(135deg,#f5f7fa,#e2e8f0);border-radius:8px;padding:1rem;margin-bottom:1rem;border:1px solid #cbd5e0}.tournament-section-content .compact-info-row{display:flex;flex-wrap:wrap;gap:1rem 2rem;padding:.75rem 0;border-bottom:1px solid rgba(203,213,224,.5)}.tournament-section-content .compact-info-row:last-child{border-bottom:none}.tournament-section-content .compact-info-item{display:flex;align-items:center;gap:.5rem;min-width:200px}.tournament-section-content .compact-label{font-weight:600;color:#4a5568;font-size:.9rem}.tournament-section-content .compact-value{color:#1a202c;font-weight:500;font-size:.95rem}.tournament-section-content .ranking-row{background:linear-gradient(135deg,#667eea1a,#764ba21a);border-radius:6px;padding:1rem .75rem!important;margin-top:.5rem;border:1px solid rgba(102,126,234,.3)!important}.tournament-section-content .rank-highlight{color:#dc2626;font-weight:700;font-size:1.1rem}.tournament-section-content .score-highlight{color:#2563eb;font-weight:700;font-size:1.05rem}.tournament-section-content .diff-positive{color:#059669;font-weight:700}.tournament-section-content .diff-negative{color:#dc2626;font-weight:700}.tournament-section-content .rank-medal{font-weight:700;font-size:1.1rem;display:inline-flex;align-items:center;gap:.25rem}.tournament-section-content .rank-gold{color:#d4af37;text-shadow:0 1px 2px rgba(212,175,55,.3)}.tournament-section-content .rank-silver{color:silver;text-shadow:0 1px 2px rgba(192,192,192,.3)}.tournament-section-content .rank-bronze{color:#cd7f32;text-shadow:0 1px 2px rgba(205,127,50,.3)}.tournament-section-content .rank-1-row{background:linear-gradient(90deg,#d4af3726,#d4af370d);border-left:3px solid #d4af37}.tournament-section-content .rank-1-row:hover{background:linear-gradient(90deg,#d4af3740,#d4af371a)}.tournament-section-content .rank-2-row{background:linear-gradient(90deg,#c0c0c026,#c0c0c00d);border-left:3px solid #c0c0c0}.tournament-section-content .rank-2-row:hover{background:linear-gradient(90deg,#c0c0c040,#c0c0c01a)}.tournament-section-content .rank-3-row{background:linear-gradient(90deg,#cd7f3226,#cd7f320d);border-left:3px solid #cd7f32}.tournament-section-content .rank-3-row:hover{background:linear-gradient(90deg,#cd7f3240,#cd7f321a)}.tournament-section-content .card h2{font-size:1.25rem;margin-bottom:1rem;color:#2d3748;border-bottom:2px solid #e2e8f0;padding-bottom:.5rem}.tournament-section-content .badge{padding:.25rem .75rem;border-radius:4px;font-size:.875rem;font-weight:600}.tournament-section-content .badge-warning{background-color:#fef3c7;color:#92400e}.tournament-section-content .badge-info{background-color:#dbeafe;color:#1e40af}.tournament-section-content .badge-success{background-color:#d1fae5;color:#065f46}.tournament-section-content .card{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 1px 3px #0000001a}.tournament-section-content .rank-highlight{color:#dc2626;font-size:1.125rem;font-weight:700}.tournament-section-content .diff-positive{color:#059669;font-weight:600}.tournament-section-content .diff-negative{color:#dc2626;font-weight:600}.tournament-section-content .participant-row{background-color:#fef3c7;font-weight:500}.tournament-section-content .participant-row:hover{background-color:#fde68a}.tournament-section-content .current-round{background-color:#3b82f61a;font-weight:600}.tournament-section-content thead .current-round{background-color:#3b82f6;color:#fff}.tournament-section-content .participant-summary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1.5rem;border-radius:8px;margin-bottom:1.5rem;font-size:1.125rem}.tournament-section-content .participant-summary .summary-metrics{display:flex;gap:2rem;margin-top:1rem;flex-wrap:wrap}.tournament-section-content .participant-summary .summary-metric{display:flex;align-items:center;gap:.5rem}.tournament-section-content .participant-summary .participant-metric{font-weight:700;font-size:1.25rem}.leaderboard-table{overflow-x:auto}.leaderboard-table table{width:100%;border-collapse:collapse;background:#fff}.leaderboard-table th{background:#f7fafc;padding:.75rem 1rem;text-align:left;font-weight:600;color:#2d3748;border-bottom:2px solid #e2e8f0}.leaderboard-table td{padding:.75rem 1rem;border-bottom:1px solid #e2e8f0}.leaderboard-table tr.highlight{background-color:#fefcbf}.leaderboard-table tr:hover{background-color:#f7fafc}.mobile-menu-toggle{display:none;position:fixed;top:1rem;left:1rem;z-index:1001;background:linear-gradient(180deg,#1a365d,#2c5282);border:none;border-radius:8px;width:48px;height:48px;cursor:pointer;box-shadow:0 4px 6px #0000001a;transition:all .3s ease}.mobile-menu-toggle:hover{transform:scale(1.05);box-shadow:0 6px 12px #00000026}.mobile-menu-toggle:active{transform:scale(.95)}.mobile-menu-toggle .hamburger-icon{display:flex;flex-direction:column;justify-content:space-between;width:24px;height:18px;margin:0 auto}.mobile-menu-toggle .hamburger-icon span{display:block;height:3px;background-color:#fff;border-radius:2px;transition:all .3s ease}.mobile-overlay{display:none;position:fixed;inset:0;background-color:#00000080;z-index:999}@media(max-width:1024px){.mobile-menu-toggle{display:flex;align-items:center;justify-content:center}.mobile-overlay{display:block}.tournament-sidebar{position:fixed;left:-280px;top:0;height:100vh;z-index:1000;transition:left .3s ease;box-shadow:2px 0 12px #0003}.mobile-menu-open .tournament-sidebar{left:0}.sidebar-collapsed .tournament-sidebar{left:-60px}.mobile-menu-open.sidebar-collapsed .tournament-sidebar{left:0;width:60px}.tournament-main-content{margin-left:0;padding:5rem 1rem 1rem}.tournament-section-content{padding:1rem}.tournament-section-content .compact-info-item{min-width:150px;flex:1 1 45%}.tournament-section-content .dashboard-compact-info{padding:.75rem}.tournament-section-content .compact-info-row{gap:.75rem 1rem}.dashboard-header h1{font-size:1.25rem}.leaderboard-table{font-size:.875rem}.leaderboard-table th,.leaderboard-table td{padding:.5rem}}@media(max-width:480px){.mobile-menu-toggle{width:44px;height:44px;top:.75rem;left:.75rem}.tournament-main-content{padding:4.5rem .75rem .75rem}.tournament-section-content{padding:.75rem}.tournament-section-content .compact-info-item{min-width:100%;flex:1 1 100%}.tournament-section-content .compact-label,.tournament-section-content .compact-value{font-size:.85rem}.dashboard-header{flex-direction:column;align-items:flex-start;gap:.75rem;margin-bottom:1rem!important}.dashboard-header h1{font-size:1.1rem}.leaderboard-table{font-size:.75rem}.leaderboard-table th,.leaderboard-table td{padding:.35rem}}.play-home{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:24px;background:linear-gradient(135deg,#667eea,#764ba2)}@media(min-width:769px){.play-home{padding:40px}.play-home>*{max-width:600px;width:100%}.game-modes{max-width:500px}}.play-home-header{text-align:center;color:#fff;margin-bottom:32px}.header-top{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:8px}.play-home-header h1{font-size:32px;font-weight:700;margin:0}.play-home-header .lang-btn{background:#fff3;color:#fff;border:2px solid white;padding:8px 16px;border-radius:20px;font-size:14px;font-weight:700;cursor:pointer;transition:all .2s}.play-home-header .lang-btn:hover{background:#ffffff4d}.play-home-header p{font-size:16px;opacity:.9}.game-modes{display:flex;flex-direction:column;gap:16px;width:100%;max-width:400px;margin-bottom:32px}.game-mode-card{background:#fff;border-radius:16px;padding:24px;cursor:pointer;transition:all .2s;box-shadow:0 4px 6px #0000001a;text-align:center}.game-mode-card:hover{transform:translateY(-4px);box-shadow:0 8px 12px #00000026}.game-mode-card:active{transform:translateY(-2px)}.mode-icon{font-size:48px;margin-bottom:16px}.game-mode-card h2{font-size:24px;font-weight:700;color:#333;margin-bottom:8px}.game-mode-card p{font-size:14px;color:#666}.play-home-footer{margin-top:auto;text-align:center}.back-button{background:#fff3;color:#fff;border:2px solid white;padding:12px 32px;border-radius:24px;font-size:16px;cursor:pointer;transition:all .2s}.back-button:hover{background:#ffffff4d}@media(max-width:768px){.play-home{padding:16px}.play-home-header h1{font-size:28px}.game-mode-card{padding:20px}.mode-icon{font-size:40px}.game-mode-card h2{font-size:20px}}.normal-game{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:16px}@media(min-width:769px){.normal-game{padding:32px}.normal-game .game-header,.normal-game .setup-form,.normal-game .scoring-section,.normal-game .result-display{max-width:800px;margin-left:auto;margin-right:auto;width:100%}.setup-form{max-width:600px}.result-display{max-width:500px}}.back-btn,.end-btn,.lang-btn{background:#fff;color:#667eea;border:2px solid white;padding:8px 16px;border-radius:20px;font-size:14px;font-weight:700;cursor:pointer;transition:all .2s;min-height:40px;white-space:nowrap}.lang-btn{min-width:50px}.back-btn:active,.end-btn:active,.lang-btn:active{transform:translateY(0)}.setup-form{max-width:400px;margin:0 auto}.scoring-mode-section{background:#fff;border-radius:16px;padding:20px;margin-bottom:16px}.scoring-mode-section h3{font-size:16px;font-weight:700;margin-bottom:12px;color:#333}.mode-options{display:flex;flex-direction:column;gap:12px}.mode-option{display:flex;align-items:center;gap:8px;cursor:pointer;padding:8px;border-radius:8px;transition:background .2s}.mode-option:hover{background:#f5f5f5}.mode-option input[type=radio]{width:18px;height:18px;cursor:pointer}.mode-option span{font-size:15px;color:#333}.team-section{background:#fff;border-radius:16px;padding:24px;margin-bottom:16px}.team-section h2{font-size:18px;font-weight:700;margin-bottom:16px;color:#333}.team-section .player-inputs{display:flex;gap:8px}.team-section input{flex:1;min-width:0;padding:12px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;box-sizing:border-box}.team-section input:focus{outline:none;border-color:#667eea}.start-btn{width:100%;background:#667eea;color:#fff;border:none;padding:16px;border-radius:12px;font-size:18px;font-weight:700;cursor:pointer;transition:all .2s}.start-btn:hover{background:#5568d3;transform:translateY(-2px)}.scoring-section{max-width:600px;margin:0 auto}.score-input-section{background:#fff;border-radius:16px;padding:24px;margin-bottom:16px}.score-input-section h3{font-size:18px;font-weight:700;margin-bottom:16px;color:#333;text-align:center}.score-form{display:flex;flex-direction:column;gap:16px}.score-inputs{display:grid;grid-template-columns:1fr 1fr;gap:16px}.input-group{display:flex;flex-direction:column;gap:8px}.input-group-horizontal{flex-direction:row;align-items:center;gap:12px;justify-content:space-between}.input-group-horizontal label{flex:1;white-space:nowrap;text-align:left!important}.input-group-horizontal input{width:120px;flex-shrink:0}.input-group label{font-size:14px;font-weight:700;color:#333;text-align:center}.input-group input{padding:12px;border:2px solid #e0e0e0;border-radius:8px;font-size:18px;text-align:center;font-weight:700}.input-group input:focus{outline:none;border-color:#667eea}.submit-btn{background:#667eea;color:#fff;border:none;padding:14px;border-radius:8px;font-size:16px;font-weight:700;cursor:pointer;transition:all .2s;min-height:48px}.submit-btn:hover{background:#5568d3;transform:translateY(-2px)}.level-display{background:#fff;border-radius:16px;padding:20px;margin-bottom:16px;text-align:center}.level-display h3{font-size:16px;font-weight:700;margin-bottom:16px;color:#333}.current-levels{display:flex;justify-content:space-around;gap:16px;margin-bottom:20px}.level-info{flex:1;padding:16px;border-radius:12px;background:#f5f5f5}.level-info.teamA{background:linear-gradient(135deg,#fff5f7,#ffe5ea)}.level-info.teamB{background:linear-gradient(135deg,#f0f9ff,#e0f2fe)}.level-label{font-size:14px;color:#666;margin-bottom:8px}.level-value{font-size:32px;font-weight:700}.level-value.teamA{color:#f5576c}.level-value.teamB{color:#00f2fe}.level-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.level-btn{min-height:70px;border:none;border-radius:12px;font-size:14px;font-weight:700;cursor:pointer;transition:all .2s;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.level-btn.teamA{background:linear-gradient(135deg,#f093fb,#f5576c)}.level-btn.teamB{background:linear-gradient(135deg,#4facfe,#00f2fe)}.level-btn:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0003}.level-btn:active{transform:translateY(0)}.level-btn-label{font-size:16px}.level-btn-sublabel{font-size:12px;opacity:.9}.game-over-notification{background:linear-gradient(135deg,gold,#ff6b00);color:#fff;padding:20px;border-radius:16px;text-align:center;font-size:20px;font-weight:700;margin-bottom:20px;box-shadow:0 4px 16px #ff6b0066;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1);box-shadow:0 4px 16px #ff6b0066}50%{transform:scale(1.02);box-shadow:0 6px 20px #ff6b0099}}.level-btn.pass-a{background:linear-gradient(135deg,gold,#ff6b00);box-shadow:0 4px 12px #ff6b004d;font-size:16px;min-height:80px}.level-btn.pass-a:hover{box-shadow:0 6px 16px #ff6b0080;transform:translateY(-3px)}.level-btn.stay-a{opacity:.8;background:linear-gradient(135deg,#bbb,#888)}.level-btn.stay-a:hover{opacity:1}.score-table-section{background:#fff;border-radius:16px;padding:16px;overflow-x:auto}.score-table{width:100%;border-collapse:collapse;font-size:14px}.score-table thead th{background:#f5f5f5;padding:12px 8px;text-align:center;font-weight:700;color:#333;border-bottom:2px solid #e0e0e0;line-height:1.4;vertical-align:middle}.team-header{display:flex;flex-direction:column;gap:4px;align-items:center}.team-name{font-size:16px;font-weight:700;color:#333}.team-players{font-size:12px;color:#666;font-weight:400}.team-total{font-size:18px;font-weight:700;margin-top:4px;padding:4px 12px;border-radius:12px;background:#fffc}.team-total.teamA{color:#f5576c}.team-total.teamB{color:#00f2fe}.score-table tbody td{padding:10px 8px;text-align:center;border-bottom:1px solid #f0f0f0}.score-table tbody tr:hover{background:#f9f9f9}.score-cell{font-weight:700;font-size:16px}.score-cell.teamA{color:#f5576c}.score-cell.teamB{color:#00f2fe}.no-data{padding:20px!important;color:#999;font-style:italic}.result-display{max-width:400px;margin:0 auto;text-align:center;color:#fff}.winner,.loser,.tie{background:#fff3;border-radius:16px;padding:24px;margin-bottom:16px;font-size:24px;font-weight:700}.winner{font-size:28px;background:#ffffff4d}.team-players-result{font-size:16px;font-weight:400;margin-top:8px;opacity:.9}.result-actions{display:flex;flex-direction:column;gap:12px}.action-btn{width:100%;background:#fff;color:#667eea;border:none;padding:16px;border-radius:12px;font-size:18px;font-weight:700;cursor:pointer;transition:all .2s;min-height:48px}.action-btn:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0003}@media(max-width:768px){.normal-game{padding:12px}.game-header{gap:6px;flex-wrap:nowrap}.game-header h1{font-size:16px;min-width:100px;flex:1}.header-buttons{gap:4px;flex-wrap:nowrap}.back-btn,.end-btn,.lang-btn{padding:6px 10px;font-size:12px;min-height:36px}.scoring-section{max-width:100%}.score-input-section{padding:16px}.score-input-section h3{font-size:16px}.score-inputs{gap:12px}.input-group label{font-size:12px}.input-group input{font-size:16px;padding:10px}.score-table-section{padding:12px;overflow-x:auto;-webkit-overflow-scrolling:touch}.score-table{font-size:12px;min-width:100%}.score-table thead th{padding:8px 4px;font-size:11px;line-height:1.3}.team-name{font-size:14px}.team-players{font-size:10px}.team-total{font-size:15px;padding:3px 8px}.score-table tbody td{padding:6px 4px}.score-cell{font-size:14px}.setup-form{max-width:100%}.team-section{padding:16px}.team-section h2{font-size:16px}.team-section .player-inputs{gap:6px}.team-section input{font-size:14px;padding:10px}.result-display{max-width:100%;padding:0 16px}.winner,.loser,.tie{font-size:20px;padding:20px}.winner{font-size:24px}.team-players-result{font-size:14px;margin-top:6px}}@media(max-width:480px){.game-header{flex-direction:row;align-items:center;gap:4px;flex-wrap:nowrap}.game-header h1{font-size:14px;min-width:80px;flex:1}.header-buttons{gap:3px;flex-wrap:nowrap}.back-btn,.end-btn,.lang-btn{padding:4px 8px;font-size:11px;min-height:32px}.team-section{padding:12px}.team-section h2{font-size:14px}.team-section .player-inputs{gap:4px}.team-section input{font-size:13px;padding:8px}.scoring-section{max-width:100%}.score-inputs{grid-template-columns:1fr;gap:12px}.input-group-horizontal{flex-direction:row;gap:8px}.input-group-horizontal label{font-size:12px}.input-group-horizontal input{font-size:15px;width:100px;padding:10px 8px}.score-table{font-size:11px}.score-table thead th{font-size:10px;padding:6px 2px}.team-name{font-size:12px}.team-players{font-size:9px}.team-total{font-size:13px;padding:2px 6px}.score-table tbody td{padding:6px 2px}.input-group label{font-size:14px}}@media(hover:none)and (pointer:coarse){.back-btn,.end-btn,.lang-btn{min-height:44px;min-width:44px}.submit-btn,.action-btn{min-height:48px}.start-btn{min-height:52px}}.fushi-game{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:16px;color:#fff}@media(min-width:769px){.fushi-game{padding:32px}.fushi-game .game-header,.fushi-game .setup-form,.fushi-game .round-info,.fushi-game .tables-section,.fushi-game .history-section,.fushi-game .result-display{max-width:900px;margin-left:auto;margin-right:auto;width:100%}.setup-form{max-width:700px}.result-display{max-width:600px}}.game-header h1{font-size:24px;font-weight:700;flex:1;min-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.back-btn,.end-btn,.lang-btn{background:#fff;color:#667eea;border:2px solid white;padding:8px 16px;border-radius:20px;font-size:14px;font-weight:700;cursor:pointer;transition:all .2s;min-height:40px}.back-btn:hover,.end-btn:hover,.lang-btn:hover{background:#ffffffe6;transform:translateY(-1px)}.setup-form{max-width:600px;margin:0 auto;display:flex;flex-direction:column;gap:24px}.group-section{background:#fff;border-radius:16px;padding:20px}.group-section h2{margin:0 0 16px;font-size:20px;font-weight:700}.group-section.red h2{color:#f5576c}.group-section.blue h2{color:#00a8e8}.table-group{margin-bottom:16px}.table-group:last-child{margin-bottom:0}.table-group h3{font-size:16px;color:#666;margin:0 0 8px}.table-group .player-inputs{display:flex;gap:8px}.table-group input{flex:1;min-width:0;padding:12px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;box-sizing:border-box}.table-group input:focus{outline:none;border-color:#667eea}.total-rounds-section{background:#fff;border-radius:16px;padding:20px}.total-rounds-section label{display:block;font-size:18px;font-weight:700;color:#333;margin-bottom:12px}.total-rounds-section input{width:100%;padding:12px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;box-sizing:border-box}.total-rounds-section input:focus{outline:none;border-color:#667eea}.start-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:16px;border-radius:24px;font-size:18px;font-weight:700;cursor:pointer;transition:all .2s;box-shadow:0 4px 8px #0003}.start-btn:hover{transform:translateY(-2px);box-shadow:0 6px 12px #0000004d}.round-info{background:#fff3;border-radius:16px;padding:16px;margin-bottom:20px;text-align:center}.round-info h3{margin:0 0 12px;font-size:20px;font-weight:700}.group-scores{display:flex;justify-content:center;align-items:center;gap:12px}.group-score{font-size:20px;font-weight:700;padding:8px 16px;border-radius:8px;background:#ffffffe6;white-space:nowrap}.group-score.red{color:#f5576c}.group-score.blue{color:#00a8e8}.tables-section{display:flex;flex-direction:column;gap:20px}.table-scoring{background:#fff;border-radius:16px;padding:20px}.table-scoring h3{margin:0 0 8px;font-size:18px;font-weight:700;color:#333;text-align:center}.table-players{display:flex;justify-content:center;align-items:center;gap:8px;margin-bottom:12px;padding:8px;background:#f5f5f5;border-radius:8px;font-size:14px}.table-players .team-players{font-weight:700;padding:4px 8px;border-radius:4px;background:#fff}.table-players .team-players.red{color:#f5576c;border:1px solid #f5576c}.table-players .team-players.blue{color:#00a8e8;border:1px solid #00a8e8}.table-players .vs{font-size:12px;color:#666;font-weight:700}.table-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.score-btn{min-height:48px;border:2px solid;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;text-align:center;padding:6px 4px;line-height:1.2}.score-btn.red{border-color:#f5576c;color:#f5576c;background:#fff}.score-btn.red:hover{background:#fff5f7}.score-btn.red.selected{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff;border-color:#f5576c}.score-btn.blue{border-color:#00a8e8;color:#00a8e8;background:#fff}.score-btn.blue:hover{background:#f0f9ff}.score-btn.blue.selected{background:linear-gradient(135deg,#4facfe,#00a8e8);color:#fff;border-color:#00a8e8}.table-current-score{margin-top:12px;padding:12px;background:#f5f5f5;border-radius:8px;text-align:center;font-weight:700;color:#333}.submit-round-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:16px;border-radius:12px;font-size:18px;font-weight:700;cursor:pointer;transition:all .2s;width:100%;margin-top:8px}.submit-round-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 8px #0003}.submit-round-btn:disabled{opacity:.5;cursor:not-allowed}.history-section{background:#fff;border-radius:16px;padding:16px;margin-top:20px;overflow-x:auto}.history-table{width:100%;border-collapse:collapse}.history-table th{background:#f5f5f5;padding:12px 8px;text-align:center;font-weight:700;color:#333;font-size:14px;border-bottom:2px solid #e0e0e0}.history-table td{padding:12px 8px;text-align:center;border-bottom:1px solid #e0e0e0;color:#333;font-size:14px}.history-table tbody tr:last-child td{border-bottom:none}.history-table tbody tr:hover{background:#f9f9f9}.score-red{color:#f5576c;font-weight:700}.score-blue{color:#00a8e8;font-weight:700}.no-data{color:#999!important;font-style:italic}.result-display{max-width:500px;margin:40px auto;text-align:center}.winner{font-size:28px;font-weight:700;margin-bottom:24px;padding:24px;background:#fff3;border-radius:16px}.loser{font-size:20px;margin-bottom:32px;opacity:.9}.tie{font-size:24px;font-weight:700;margin-bottom:32px;padding:24px;background:#fff3;border-radius:16px}.result-actions{display:flex;flex-direction:column;gap:12px;max-width:300px;margin:0 auto}.action-btn{background:#fff;color:#667eea;border:none;padding:16px;border-radius:24px;font-size:16px;font-weight:700;cursor:pointer;transition:all .2s;box-shadow:0 4px 8px #0003}.action-btn:hover{transform:translateY(-2px);box-shadow:0 6px 12px #0000004d}.action-btn.secondary{background:#fff3;color:#fff;border:2px solid white}.action-btn.secondary:hover{background:#ffffff4d}@media(max-width:768px){.fushi-game{padding:12px}.game-header h1{font-size:18px;min-width:100px}.back-btn,.end-btn,.lang-btn{padding:6px 12px;font-size:12px;min-height:36px}.group-section{padding:16px}.table-group input{padding:10px;font-size:14px;min-width:0}.table-group .player-inputs{gap:6px}.start-btn{padding:14px;font-size:16px}.round-info h3{font-size:18px}.group-score{font-size:18px;padding:8px 12px}.table-scoring{padding:16px}.table-scoring h3{font-size:16px}.table-players{font-size:12px;padding:6px;gap:6px}.table-players .team-players{padding:3px 6px}.table-players .vs{font-size:11px}.score-btn{min-height:44px;font-size:12px;padding:4px}.submit-round-btn{padding:14px;font-size:16px}.history-table th,.history-table td{padding:8px 4px;font-size:12px}.winner{font-size:24px;padding:20px}.loser{font-size:18px}}@media(max-width:480px){.game-header h1{font-size:14px;min-width:80px}.back-btn,.end-btn,.lang-btn{padding:4px 8px;font-size:11px;min-height:32px}.group-section{padding:12px}.table-group h3{font-size:14px}.table-group input{padding:8px;font-size:13px}.table-group .player-inputs{gap:4px}.total-rounds-section{padding:16px}.total-rounds-section label{font-size:16px}.total-rounds-section input{padding:10px;font-size:14px}.group-score{font-size:16px;padding:6px 12px}.table-players{font-size:11px;padding:4px;gap:4px;flex-wrap:wrap}.table-players .team-players{padding:2px 4px;font-size:10px}.table-players .vs{font-size:10px}.score-btn{min-height:40px;font-size:11px}}.zhuandan-game{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}@media(min-width:769px){.zhuandan-game{padding:32px}.zhuandan-game .game-header,.zhuandan-game .setup-form,.zhuandan-game .round-info,.zhuandan-game .scoring-section,.zhuandan-game .leaderboard,.zhuandan-game .history-section,.zhuandan-game .result-display{max-width:800px;margin-left:auto;margin-right:auto;width:100%}.setup-form,.result-actions{max-width:600px}}.game-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;color:#fff;flex-wrap:nowrap;gap:12px}.game-header h1{margin:0;font-size:28px;color:#fff;font-weight:700;flex:1;min-width:150px}.header-buttons{display:flex;gap:8px;flex-shrink:0;flex-wrap:nowrap}.lang-btn,.back-btn,.end-btn{padding:8px 16px;border:2px solid white;border-radius:20px;background:#fff;color:#11998e;cursor:pointer;font-size:14px;font-weight:700;transition:all .2s;min-height:40px}.lang-btn:hover,.back-btn:hover,.end-btn:hover{background:#ffffffe6;transform:translateY(-1px)}.setup-form{display:flex;flex-direction:column;gap:24px}.total-rounds-section{display:flex;flex-direction:column;gap:8px}.total-rounds-section label{font-size:16px;font-weight:600;color:#333}.total-rounds-section input{padding:12px;border:2px solid #ddd;border-radius:8px;font-size:16px;transition:border-color .2s}.total-rounds-section input:focus{outline:none;border-color:#4caf50}.players-section{display:flex;flex-direction:column;gap:12px}.players-section h2{margin:0 0 8px;font-size:18px;color:#555}.players-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.players-section input{padding:12px;border:2px solid #ddd;border-radius:8px;font-size:16px;transition:border-color .2s}.players-section input:focus{outline:none;border-color:#11998e}.start-btn{padding:16px;background:#4caf50;color:#fff;border:none;border-radius:8px;font-size:18px;font-weight:600;cursor:pointer;transition:background .2s;margin-top:16px}.start-btn:hover{background:#45a049}.round-info{text-align:center;margin-bottom:20px;padding:16px;background:#f8f9fa;border-radius:8px}.round-info h3{margin:0 0 12px;font-size:20px;color:#333}.current-partners{display:flex;justify-content:center;align-items:center;gap:12px;font-size:16px;flex-wrap:wrap}.current-partners .team{font-weight:600;padding:6px 12px;border-radius:6px;white-space:nowrap}.current-partners .team.team1{background:#ffebee;color:#c62828}.current-partners .team.team2{background:#e3f2fd;color:#1565c0}.current-partners .vs{font-weight:700;color:#666}.leaderboard{margin-bottom:20px;padding:16px;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.leaderboard h4{margin:0 0 12px;font-size:16px;color:#555}.leaderboard-list{display:flex;flex-direction:column;gap:8px}.leaderboard-item{display:flex;align-items:center;gap:12px;padding:10px;background:#f8f9fa;border-radius:6px}.leaderboard-item .rank{font-size:24px;flex-shrink:0}.leaderboard-item .name{flex:1;font-size:16px;font-weight:500;color:#333}.leaderboard-item .score{font-size:18px;font-weight:600;color:#4caf50}.scoring-section{margin-bottom:24px;background:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 8px #0000001a}.score-inputs-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:20px}.score-input-item{display:flex;flex-direction:column;gap:8px}.score-input-item label{font-size:14px;font-weight:600;color:#333}.score-input-item input{padding:12px;border:2px solid #ddd;border-radius:8px;font-size:18px;font-weight:700;text-align:center;transition:border-color .2s}.score-input-item input:focus{outline:none;border-color:#11998e}.score-input-item input::placeholder{color:#ccc}.submit-round-btn{width:100%;padding:14px;background:#4caf50;color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:background .2s}.submit-round-btn:hover:not(:disabled){background:#45a049}.submit-round-btn:disabled{background:#ccc;cursor:not-allowed}.history-section{margin-top:24px}.history-table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 4px #0000001a}.history-table thead{background:#f5f5f5}.history-table th{padding:12px;text-align:center;font-weight:600;color:#555;border-bottom:2px solid #ddd;font-size:14px}.history-table td{padding:10px;text-align:center;border-bottom:1px solid #eee;font-size:14px;color:#333}.history-table tr:last-child td{border-bottom:none}.history-table .no-data{color:#999;font-style:italic}.zhuandan-game.result .game-header{justify-content:center;position:relative}.zhuandan-game.result .lang-btn{position:absolute;right:0}.result-display{text-align:center}.final-leaderboard{display:flex;flex-direction:column;gap:16px;margin-bottom:32px}.final-rank{display:flex;align-items:center;gap:16px;padding:20px;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a}.final-rank.rank-1{background:linear-gradient(135deg,gold,#ffed4e);box-shadow:0 4px 12px #ffd70066}.final-rank.rank-2{background:linear-gradient(135deg,silver,#e8e8e8)}.final-rank.rank-3{background:linear-gradient(135deg,#cd7f32,#daa06d)}.final-rank .rank-icon{font-size:36px;flex-shrink:0}.final-rank .player-name{flex:1;font-size:24px;font-weight:600;color:#333;text-align:left}.final-rank .player-score{font-size:28px;font-weight:700;color:#4caf50}.rounds-played{font-size:16px;color:#ececec;font-weight:700;margin-bottom:32px}.result-actions{display:flex;flex-direction:column;gap:12px;max-width:400px;margin:0 auto}.action-btn{padding:14px 24px;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s;background:#4caf50;color:#fff}.action-btn:hover{background:#45a049;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.action-btn.secondary{background:#fff;color:#333;border:2px solid #ddd}.action-btn.secondary:hover{background:#f5f5f5;border-color:#999}@media(max-width:768px){.zhuandan-game{padding:16px}.game-header h1{font-size:20px;min-width:100px}.header-buttons{gap:6px}.lang-btn,.back-btn,.end-btn{padding:6px 12px;font-size:12px;min-height:36px}.total-rounds-section{padding:16px}.total-rounds-section label{font-size:15px}.total-rounds-section input{padding:10px;font-size:14px}.players-section h2{font-size:16px}.players-section input{padding:10px;font-size:14px}.start-btn{padding:14px;font-size:16px}.scoring-section{padding:16px}.score-inputs-grid{gap:12px}.score-input-item label{font-size:13px}.score-input-item input{padding:10px;font-size:16px}.leaderboard{padding:12px}.leaderboard-item{padding:8px}.leaderboard-item .rank{font-size:20px}.leaderboard-item .name{font-size:14px}.leaderboard-item .score{font-size:16px}.final-rank{padding:16px;gap:12px}.final-rank .rank-icon{font-size:28px}.final-rank .player-name{font-size:20px}.final-rank .player-score{font-size:24px}.current-partners{font-size:14px;gap:8px}.round-info{padding:12px}.round-info h3{font-size:18px}.history-section{margin-top:20px}.history-table th,.history-table td{padding:8px 4px;font-size:12px}}@media(max-width:480px){.zhuandan-game{padding:12px}.game-header h1{font-size:16px;min-width:80px}.header-buttons{gap:4px}.lang-btn,.back-btn,.end-btn{padding:4px 8px;font-size:11px;min-height:32px}.total-rounds-section{padding:12px}.total-rounds-section label{font-size:14px}.total-rounds-section input{padding:8px;font-size:13px}.players-section h2{font-size:14px}.players-grid{gap:8px}.players-section input{padding:8px;font-size:13px}.start-btn{padding:12px;font-size:15px}.scoring-section{padding:12px}.score-inputs-grid{gap:8px}.score-input-item label{font-size:12px}.score-input-item input{padding:8px;font-size:15px}.history-table th,.history-table td{padding:6px 2px;font-size:11px}.final-rank{padding:12px;gap:8px}.final-rank .rank-icon{font-size:24px}.final-rank .player-name{font-size:16px}.final-rank .player-score{font-size:20px}.current-partners{font-size:12px;gap:6px}.current-partners .team{padding:4px 8px;font-size:12px}.round-info h3{font-size:16px}.leaderboard h4{font-size:14px}}.wechat-callback{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:2rem}.callback-container{background:#fff;border-radius:12px;padding:3rem;max-width:500px;width:100%;text-align:center;box-shadow:0 10px 40px #0000001a}.callback-container .spinner{margin:0 auto 1.5rem;width:48px;height:48px;border:4px solid #e2e8f0;border-top-color:#09bb07;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.callback-container h2{font-size:1.75rem;color:#2c3e50;margin-bottom:1rem}.callback-container p{color:#64748b;font-size:1rem;margin-bottom:2rem}.error-icon{font-size:4rem;margin-bottom:1rem}.error-message{color:#ef4444;font-weight:500}#root{min-height:100vh}
