*{box-sizing:border-box;margin:0;padding:0}body{background-color:#f5f5f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-width:100vw;overflow-x:hidden}.app{display:flex;flex-direction:column;min-height:100vh;width:100vw}.app-header{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 2px 10px #0000001a;color:#fff;padding:1rem 2rem}.app-header h1{margin-bottom:1rem}.header-top{justify-content:space-between;margin-bottom:1rem}.btn-refresh,.header-top{align-items:center;display:flex}.btn-refresh{background:#fff3;border:1px solid #ffffff4d;border-radius:4px;color:#fff;cursor:pointer;gap:.5rem;padding:.5rem 1rem;transition:all .3s}.btn-refresh:hover:not(:disabled){background:#ffffff4d}.btn-refresh:disabled{cursor:not-allowed;opacity:.5}.nav{display:flex;gap:1rem}.nav button{background:#fff3;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:.5rem 1rem;transition:background .3s}.nav button:hover{background:#ffffff4d}.main-content{box-sizing:border-box;flex:1 1;margin:0 auto;max-width:1200px;padding:2rem;width:100%}.loading{align-items:center;color:#666;display:flex;font-size:1.2rem;height:100vh;justify-content:center}.dashboard{display:flex;flex-direction:column;gap:2rem}.stats{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-top:1rem}.stat-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:1.5rem;text-align:center}.stat-card h3{color:#666;font-size:.9rem;letter-spacing:1px;margin-bottom:.5rem;text-transform:uppercase}.stat-number{color:#667eea;font-size:2rem;font-weight:700}.quick-actions{display:flex;gap:1rem;margin-top:1rem}.quick-actions button{background:#667eea;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:1rem;padding:.75rem 1.5rem;transition:background .3s}.quick-actions button:hover{background:#5a67d8}.app-footer{background:#333;color:#fff;margin-top:auto;padding:1rem;text-align:center}.add-test-form,.athlete-form,.score-input{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem;padding:1.5rem}.form-container{margin-bottom:2rem}.form-group{margin-bottom:1.5rem}.form-group label{color:#555;display:block;font-weight:600;margin-bottom:.5rem}.form-group input,.form-group select{border:1px solid #ddd;border-radius:4px;font-size:1rem;padding:.75rem;width:100%}.form-group input:focus,.form-group select:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-row{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:1rem}.checkbox-group{margin:1.5rem 0}.checkbox-label{align-items:center;color:#555;cursor:pointer;display:flex;font-weight:600}.checkbox-label input[type=checkbox]{margin-right:.5rem;width:auto}.help-text{color:#666;display:block;font-size:.875rem;margin-top:.25rem}.btn-primary{background:#667eea;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:1rem;padding:.75rem 1.5rem;transition:background .3s}.btn-primary:hover:not(:disabled){background:#5a67d8}.btn-primary:disabled{background:#ccc;cursor:not-allowed}.btn-secondary{background:#6c757d;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:1rem;margin-left:.5rem;padding:.75rem 1.5rem;transition:background .3s}.btn-secondary:hover:not(:disabled){background:#545b62}.btn-small{background:#667eea;border:none;border-radius:3px;color:#fff;cursor:pointer;font-size:.875rem;margin-right:.5rem;padding:.25rem .75rem}.btn-danger{background:#dc3545}.btn-danger:hover:not(:disabled){background:#c82333}.form-actions{display:flex;gap:.5rem;margin-top:1.5rem}.error-message{background:#fee;border:1px solid #fcc;border-radius:4px;color:#c33}.error-message,.success-message{margin-bottom:1rem;padding:.75rem}.success-message{background:#d4edda;border:1px solid #c3e6cb;border-radius:4px;color:#155724}.warning-message{background:#fff3cd;border:1px solid #ffeaa7;border-radius:8px;color:#856404;margin-bottom:2rem;padding:1.5rem}.warning-message h3{color:#856404;margin-top:0}.warning-message ul{margin:.5rem 0;padding-left:1.5rem}.leaderboard-header,.list-header,.manager-header,.scores-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1.5rem}.table-container{overflow-x:auto}table{background:#fff;border-collapse:collapse;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden;width:100%}thead{background:#667eea;color:#fff}th{font-weight:600;text-align:left}td,th{padding:1rem}td{border-top:1px solid #eee}tr:hover{background:#f8f9fa}.empty-state{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;color:#666;padding:3rem;text-align:center}.role-badge{border-radius:12px;font-size:.875rem;font-weight:600;padding:.25rem .75rem}.role-badge.coach{background:#d1ecf1;color:#0c5460}.role-badge.viewer{background:#d4edda;color:#155724}.unit-display{color:#666;font-weight:400;margin-left:.5rem}.score-help{margin-top:.25rem}.score-help small{color:#e74c3c;font-style:italic}.scores-info{background:#f8f9fa;border-left:4px solid #667eea;border-radius:8px;margin-top:2rem;padding:1.5rem}.scores-info h3{color:#667eea;margin-top:0}.scores-info ul{margin:.5rem 0;padding-left:1.5rem}.scores-info li{margin-bottom:.25rem}.recent-scores{border-top:1px solid #eee;margin-top:2rem;padding-top:1.5rem}.recent-scores h4{color:#555;font-size:1rem;margin-top:0}.recent-scores ul{list-style:none;margin:.5rem 0;padding:0}.recent-scores li{align-items:center;background:#f8f9fa;border-radius:4px;display:flex;gap:1rem;margin-bottom:.5rem;padding:.5rem}.score-value{color:#667eea;font-weight:700;min-width:60px}.score-date{color:#666}.score-time{color:#999;font-size:.875rem;margin-left:auto}input[type=number]{font-family:monospace}select{cursor:pointer}.test-manager{display:flex;flex-direction:column;gap:2rem}.quick-setup{background:#f0f7ff;border:1px solid #d1e3ff;border-radius:8px;padding:1.5rem}.quick-setup h4{color:#2c5282;margin-top:0}.common-tests{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.common-test-btn{background:#fff;border:1px solid #cbd5e0;border-radius:6px;cursor:pointer;display:flex;flex-direction:column;min-width:150px;padding:.75rem 1rem;text-align:left;transition:all .2s}.common-test-btn:hover:not(:disabled){background:#667eea;border-color:#667eea;color:#fff}.common-test-btn:disabled{cursor:not-allowed;opacity:.5}.common-test-btn small{color:#718096;font-size:.75rem;margin-top:.25rem}.common-test-btn:hover:not(:disabled) small{color:#ffffffe6}.unit-badge{background:#e9ecef;color:#495057}.scoring-badge,.unit-badge{border-radius:12px;font-size:.875rem;font-weight:600;padding:.25rem .75rem}.scoring-badge.higher-better{background:#d4edda;color:#155724}.scoring-badge.lower-better{background:#d1ecf1;color:#0c5460}.test-examples{background:#f8f9fa;border-radius:8px;margin-top:1rem;padding:1.5rem}.test-examples h4{color:#667eea;margin-top:0}.examples-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-top:1rem}.example{background:#fff;border-left:3px solid #667eea;border-radius:6px;padding:1rem}.example h5{color:#2d3748;margin-top:0}.example ul{margin:.5rem 0;padding-left:1rem}.example li{font-size:.9rem;margin-bottom:.25rem}.example strong{color:#4a5568}.leaderboard,.tests-view{display:flex;flex-direction:column;gap:1.5rem}.leaderboard-actions{display:flex;flex-wrap:wrap;gap:.5rem}.empty-leaderboard,.error-state,.loading-state{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:3rem;text-align:center}.empty-leaderboard h3,.error-state h3{color:#e74c3c;margin-top:0}.spinner{animation:spin 1s linear infinite;border:3px solid #f3f3f3;border-radius:50%;border-top-color:#667eea;height:40px;margin:0 auto 1rem;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.filters-section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:1.5rem}.date-filters{grid-gap:1rem;align-items:end;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.filter-actions{align-items:flex-end;display:flex;gap:.5rem}.active-filter{background:#e8f4fd;border-left:4px solid #3498db;border-radius:4px;margin-top:1rem;padding:.75rem}.leaderboard-stats{grid-gap:1rem;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));padding:1.5rem}.stat-item{align-items:center;display:flex;flex-direction:column;text-align:center}.stat-label{color:#666;font-size:.875rem;margin-bottom:.5rem}.stat-value{color:#667eea;font-size:2rem;font-weight:700}.leaderboard-table{background:#fff;border-collapse:initial;border-radius:8px;border-spacing:0;box-shadow:0 2px 4px #0000001a;overflow:hidden;width:100%}.leaderboard-table th{background:#667eea;color:#fff;font-weight:600;padding:1rem;position:-webkit-sticky;position:sticky;text-align:left;top:0}.leaderboard-table td{border-bottom:1px solid #eee;padding:1rem}.leaderboard-table tr:last-child td{border-bottom:none}.leaderboard-table tr:hover{background:#f8f9fa}.rank-1{background:linear-gradient(135deg,#ffd7001a,#ffd7000d)}.rank-2{background:linear-gradient(135deg,#c0c0c01a,#c0c0c00d)}.rank-3{background:linear-gradient(135deg,#cd7f321a,#cd7f320d)}.rank-1:hover,.rank-2:hover,.rank-3:hover{background:#f8f9fa}.rank-cell{text-align:center;width:80px}.rank-number{background:#667eea;border-radius:50%;color:#fff;display:inline-block;font-size:1rem;font-weight:700;height:36px;line-height:36px;width:36px}.rank-1 .rank-number{background:linear-gradient(135deg,gold,orange)}.rank-2 .rank-number{background:linear-gradient(135deg,silver,#a9a9a9)}.rank-3 .rank-number{background:linear-gradient(135deg,#cd7f32,sienna)}.athlete-cell{min-width:200px}.athlete-name{color:#2d3748;font-size:1.1rem;font-weight:600}.athlete-id{color:#718096;font-size:.75rem;margin-top:.25rem}.points-cell{min-width:150px}.points-total{color:#2d3748;font-size:1.5rem;font-weight:700;margin-bottom:.5rem}.points-bar{background:#e2e8f0;border-radius:4px;height:8px;overflow:hidden}.points-fill{background:linear-gradient(90deg,#667eea,#764ba2);border-radius:4px;height:100%;transition:width .3s ease}.badge-cell{width:120px}.badge{border-radius:12px;display:inline-block;font-size:.875rem;font-weight:600;padding:.25rem .75rem;text-align:center}.badge.gold{background:linear-gradient(135deg,gold,orange);color:#744700}.badge.silver{background:linear-gradient(135deg,silver,#a9a9a9);color:#2d3748}.badge.bronze{background:linear-gradient(135deg,#cd7f32,sienna);color:#fff}.badge.elite{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.badge.star{background:linear-gradient(135deg,#4caf50,#2e7d32);color:#fff}.badge.athlete{background:#e2e8f0;color:#4a5568}.details-cell{min-width:300px}.test-details{display:flex;flex-direction:column;gap:.5rem}.test-detail{align-items:center;background:#f8f9fa;border-radius:4px;display:flex;font-size:.875rem;gap:.5rem;padding:.5rem}.test-name{color:#4a5568;font-weight:600;min-width:120px}.test-score{color:#2d3748;font-family:monospace}.test-points{border-radius:10px;font-size:.75rem;font-weight:600;margin-left:auto;padding:.125rem .5rem}.test-points.excellent{background:#d4edda;color:#155724}.test-points.good{background:#d1ecf1;color:#0c5460}.test-points.average{background:#fff3cd;color:#856404}.test-points.poor{background:#f8d7da;color:#721c24}.leaderboard-legend{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:1.5rem}.leaderboard-legend h4{color:#667eea;margin-bottom:1rem;margin-top:0}.legend-items{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:1rem}.legend-item{align-items:center;display:flex;gap:.5rem}.legend-color{border-radius:4px;height:16px;width:16px}.legend-color.excellent{background:#d4edda}.legend-color.good{background:#d1ecf1}.legend-color.average{background:#fff3cd}.legend-color.poor{background:#f8d7da}.legend-note{border-top:1px solid #eee;color:#666;font-style:italic;margin-top:.75rem;padding-top:.75rem}@media (max-width:768px){body{overflow-x:hidden}.app,body{min-width:100vw}.app{display:block;width:100vw}.app-header{padding:.75rem 1rem}.header-top{align-items:flex-start;flex-direction:column;gap:1rem}.app-header h1{font-size:1.5rem;margin-bottom:0}.nav{-webkit-overflow-scrolling:touch;flex-wrap:wrap;gap:.5rem;overflow-x:auto;padding-bottom:.5rem;width:100%}.nav button{font-size:.875rem;padding:.5rem .75rem;white-space:nowrap}.main-content{margin:0;min-width:100vw;padding:1rem;width:100vw}.athletes-view,.dashboard,.leaderboard-view,.scores-view,.tests-view{margin:0;padding:0;width:100%}h2,h3,h4{font-size:1.25rem}.stats{gap:.75rem;grid-template-columns:1fr}.stat-card{padding:1rem}.stat-number{font-size:1.5rem}.quick-actions{flex-direction:column}.quick-actions button{width:100%}.add-test-form,.athlete-form,.filters-section,.score-input{padding:1rem}.form-row{grid-template-columns:1fr}.filter-actions,.form-actions,.leaderboard-actions{flex-direction:column;gap:.5rem}.filter-actions button,.form-actions button,.leaderboard-actions button{margin-left:0!important;width:100%}.table-container{overflow-x:visible!important;width:100%}table{display:block;width:100%!important}thead{display:none}tbody,tr{display:block;width:100%}tr{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:1rem;padding:1rem}td{border:none;border-bottom:1px solid #eee;display:block;padding:.5rem 0;text-align:left;width:100%!important}td:last-child{border-bottom:none;padding-top:1rem}td:first-child:before{content:"Name: "}td:first-child:before,td:nth-child(2):before{color:#555;display:inline;font-weight:700;margin-right:.5rem}td:nth-child(2):before{content:"Role: "}td:nth-child(3):before{color:#555;content:"Joined: ";display:inline;font-weight:700;margin-right:.5rem}td:last-child{display:flex;flex-direction:column;gap:.5rem}td:last-child button{margin:0;width:100%}td:last-child:before{content:none}.leaderboard-header,.manager-header{align-items:flex-start;flex-direction:column;gap:1rem}.common-tests{flex-direction:column}.common-test-btn{min-width:auto;width:100%}.date-filters,.examples-grid,.leaderboard-stats{grid-template-columns:1fr}.leaderboard-table td,.leaderboard-table th{padding:.5rem}.athlete-cell,.badge-cell,.details-cell,.points-cell{min-width:auto}.test-detail{flex-wrap:wrap}.test-name{min-width:100%}.legend-items{grid-template-columns:1fr}.recent-scores li{align-items:flex-start;flex-direction:column;gap:.25rem}.score-time{margin-left:0}.btn-primary,.btn-secondary,.btn-small,.nav button,button{min-height:44px;min-width:44px}input,select{font-size:16px;min-height:44px}}@media (min-width:769px) and (max-width:1024px){.main-content{max-width:100%;padding:1.5rem}.common-tests,.examples-grid,.form-row,.stats{grid-template-columns:repeat(2,1fr)}.leaderboard-stats{grid-template-columns:repeat(3,1fr)}table{font-size:.9rem}td,th{padding:.75rem}}@media (max-width:768px){.leaderboard-table{display:none!important}.mobile-leaderboard{display:block;width:100%}.leaderboard-card{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;box-sizing:border-box;gap:.75rem;margin-bottom:1rem;padding:1rem;width:100%}.card-rank,.leaderboard-card{align-items:center;display:flex}.card-rank{flex-direction:column;flex-shrink:0;min-width:50px}.rank-circle{align-items:center;border-radius:50%;color:#fff;display:flex;font-size:1rem;font-weight:700;height:40px;justify-content:center;margin-bottom:.25rem;width:40px}.rank-circle.gold{background:linear-gradient(135deg,gold,orange)}.rank-circle.silver{background:linear-gradient(135deg,silver,#a9a9a9)}.rank-circle.bronze{background:linear-gradient(135deg,#cd7f32,sienna)}.rank-circle.other{background:linear-gradient(135deg,#667eea,#764ba2)}.card-athlete{flex:1 1;min-width:0;overflow:hidden}.card-name{color:#2d3748;display:block;font-size:1rem;font-weight:600;margin-bottom:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.card-tests{color:#718096;display:block;font-size:.75rem}.card-points{flex-shrink:0;min-width:80px;text-align:center}.card-score{color:#2d3748;font-size:1.25rem;font-weight:700;margin-bottom:.25rem}.card-label{color:#718096;display:block;font-size:.75rem}.card-badge{font-size:.7rem;font-weight:600}@media (max-width:480px){.leaderboard-card{gap:.5rem;padding:.75rem}.rank-circle{font-size:.875rem;height:32px;width:32px}.card-name{font-size:.9rem}.card-points{min-width:60px}.card-score{font-size:1.1rem}}.athlete-list table,.tests-list table{display:none!important}.athlete-list .mobile-only,.tests-list .mobile-only{display:block}}@media (min-width:769px){.mobile-leaderboard{display:none!important}.leaderboard-table{display:table!important}}@media (max-width:768px){.card-details{border-top:1px solid #eee;margin-top:1rem;padding-top:1rem;width:100%}.card-details-header{margin-bottom:.5rem}.card-details-header small{color:#667eea;font-weight:600}.card-tests-list{display:flex;flex-direction:column;gap:.5rem}.card-test-item{align-items:center;background:#f8f9fa;border-radius:6px;display:flex;font-size:.8rem;justify-content:space-between;padding:.5rem}.card-test-name{color:#4a5568;flex:2 1;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-test-value{color:#2d3748;flex:1 1;font-family:monospace;margin:0 .5rem;text-align:center}.card-test-points{border-radius:10px;flex-shrink:0;font-size:.7rem;font-weight:600;padding:.125rem .5rem}.card-test-points.excellent{background:#d4edda;color:#155724}.card-test-points.good{background:#d1ecf1;color:#0c5460}.card-test-points.average{background:#fff3cd;color:#856404}.card-test-points.poor{background:#f8d7da;color:#721c24}.leaderboard-card.has-details{align-items:stretch;flex-direction:column;padding:1rem}.leaderboard-card.has-details .card-athlete{margin-bottom:.5rem;width:100%}.leaderboard-card.has-details .card-points{margin-bottom:.5rem;text-align:left}}@media (max-width:480px){.card-test-item{align-items:flex-start;flex-direction:column;gap:.25rem}.card-test-name,.card-test-points,.card-test-value{text-align:left;width:100%}.card-test-value{margin:0}}@media (max-width:768px){.athletes-view table,.tests-view table{display:none!important}.mobile-athletes-list,.mobile-tests-list{display:block!important;width:100%}.athlete-card{align-items:center;background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;box-sizing:border-box;display:flex;gap:.75rem;justify-content:space-between;margin-bottom:1rem;padding:1rem;width:100%}.athlete-card-info{flex:1 1;min-width:0;overflow:hidden}.athlete-card-name{color:#2d3748;display:block;font-size:1rem;font-weight:600;margin-bottom:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.athlete-card-details{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem}.athlete-card-role{border-radius:12px;display:inline-block;font-size:.75rem;font-weight:600;padding:.125rem .5rem}.athlete-card-role.coach{background:#d1ecf1;color:#0c5460}.athlete-card-role.viewer{background:#d4edda;color:#155724}.athlete-card-role.athlete{background:#e2e8f0;color:#4a5568}.athlete-card-id{color:#718096;display:inline-block;font-size:.75rem}.athlete-card-date{color:#a0aec0;font-size:.75rem}.athlete-card-actions{display:flex;flex-shrink:0;gap:.5rem}.athlete-card-actions button{font-size:.75rem;min-height:36px;min-width:36px;padding:.5rem}.test-card{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;box-sizing:border-box;margin-bottom:1rem;padding:1rem;width:100%}.test-card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:.75rem}.test-card-name{color:#2d3748;font-size:1rem;font-weight:600;margin-bottom:.25rem}.test-card-unit{color:#718096;font-size:.75rem;margin-bottom:.25rem}.test-card-id{color:#a0aec0;font-size:.7rem}.test-card-badges{display:flex;gap:.5rem;margin-top:.5rem}.test-card-badge{border-radius:10px;font-size:.7rem;font-weight:600;padding:.125rem .5rem}.test-card-scoring{background:#e2e8f0;color:#4a5568}.test-card-status{background:#d4edda;color:#155724}.test-card-details{border-top:1px solid #e2e8f0;margin-top:.75rem;padding-top:.75rem}.test-card-detail{display:flex;font-size:.8rem;justify-content:space-between;margin-bottom:.25rem}.test-card-label{color:#718096}.test-card-value{color:#2d3748;font-weight:500}.test-card-actions{display:flex;gap:.5rem;margin-top:1rem}.test-card-actions button{flex:1 1;font-size:.75rem;min-height:36px;padding:.5rem}}@media (min-width:769px){.mobile-athletes-list,.mobile-leaderboard,.mobile-tests-list{display:none!important}.athletes-view table,.leaderboard-table,.tests-view table{display:table!important}}@media (max-width:480px){.athlete-card{align-items:stretch;flex-direction:column;gap:.5rem}.athlete-card-actions{justify-content:center;width:100%}.athlete-card-actions button{flex:1 1}.test-card-header{flex-direction:column;gap:.5rem}.test-card-badges{flex-wrap:wrap}}
/*# sourceMappingURL=main.6b707870.css.map*/