*{margin:0;padding:0;box-sizing:border-box}:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh;background-color:#f5f5f5;color:#333}#root{min-height:100vh}a{color:#007bff;text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}.form-group{margin-bottom:15px}.form-group label{display:block;margin-bottom:5px;font-weight:500}.empty-message{text-align:center;color:#999;padding:40px;font-size:16px}.tournaments-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px;margin-top:20px}.tournament-card{background:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 8px #0000001a;transition:transform .2s,box-shadow .2s}.tournament-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #00000026}.tournament-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #eee}.tournament-header h3{margin:0;font-size:1.2rem;color:#333}.tournament-info{margin-bottom:15px}.info-row{display:flex;justify-content:space-between;padding:8px 0;font-size:.95rem}.info-row .label{color:#666;font-weight:500}.tournament-actions{display:flex;gap:8px;margin-top:15px}.tournament-actions button{flex:1;padding:8px 12px;font-size:.9rem}.empty-state{grid-column:1 / -1;text-align:center;padding:60px 20px;color:#999}.empty-state p{margin-bottom:20px;font-size:1.1rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:15px}.page-container{max-width:1400px;margin:0 auto;padding:20px}.page-title{font-size:2rem;font-weight:700;color:#333;margin:0}.subtitle{font-size:1rem;color:#666;margin:5px 0 0}.header-actions{display:flex;gap:10px;flex-wrap:wrap}.primary-button{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:10px 20px;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 2px 8px #667eea4d}.primary-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.primary-button:disabled{background:#ccc;cursor:not-allowed;transform:none}.secondary-button{background:#fff;color:#667eea;border:2px solid #667eea;padding:8px 16px;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .3s ease}.secondary-button:hover{background:#667eea;color:#fff}.secondary-button:disabled{border-color:#ccc;color:#ccc;cursor:not-allowed;background:#fff}.danger-button{background:#fff;color:#f44336;border:2px solid #f44336;padding:8px 16px;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .3s ease}.danger-button:hover{background:#f44336;color:#fff}.danger-button:disabled{border-color:#ccc;color:#ccc;cursor:not-allowed}.back-button{background:transparent;color:#667eea;border:none;padding:8px 0;font-size:.95rem;cursor:pointer;margin-bottom:10px;font-weight:600}.back-button:hover{color:#764ba2;text-decoration:underline}.tabs{display:flex;gap:5px;border-bottom:2px solid #e0e0e0;margin-bottom:20px}.tab{padding:12px 24px;background:transparent;border:none;border-bottom:3px solid transparent;font-size:1rem;font-weight:600;color:#666;cursor:pointer;transition:all .3s ease}.tab:hover{color:#667eea;background:#667eea0d}.tab.active{color:#667eea;border-bottom-color:#667eea;background:#667eea1a}.tab-content{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.info-card{background:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 8px #0000001a}.info-card.full-width{grid-column:1 / -1}.info-card h3{margin:0 0 15px;font-size:1.2rem;color:#333;padding-bottom:10px;border-bottom:2px solid #667eea}.info-list{display:flex;flex-direction:column;gap:10px}.info-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid #f0f0f0}.info-item:last-child{border-bottom:none}.info-item .label{font-weight:600;color:#666}.rules-text,.prizes-text{color:#555;line-height:1.6;white-space:pre-wrap}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:20px}.modal-content{background:#fff;border-radius:16px;padding:0;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 10px 40px #0003;animation:modalSlideIn .3s ease}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 25px;border-bottom:2px solid #e0e0e0;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:16px 16px 0 0}.modal-header h2{margin:0;font-size:1.5rem;color:#fff}.close-button{background:#fff3;color:#fff;border:none;font-size:2rem;width:40px;height:40px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .3s ease}.close-button:hover{background:#ffffff4d}.modal-content form{padding:25px}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:25px;padding-top:20px;border-top:1px solid #e0e0e0}.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px 12px;border:2px solid #e0e0e0;border-radius:8px;font-size:.95rem;transition:border-color .3s ease}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#667eea}.form-group textarea{resize:vertical;min-height:80px}.data-table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.data-table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.data-table th{padding:15px;text-align:left;font-weight:600;font-size:.95rem}.data-table td{padding:12px 15px;border-bottom:1px solid #f0f0f0}.data-table tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:#667eea0d}.table-actions{display:flex;gap:6px;flex-wrap:wrap}.action-btn{padding:5px 10px;border:none;border-radius:4px;cursor:pointer;font-size:.8rem;font-weight:500;transition:all .2s}.action-btn:disabled{opacity:.5;cursor:not-allowed}.action-btn.view-btn{background:#e3f2fd;color:#1976d2}.action-btn.view-btn:hover:not(:disabled){background:#bbdefb}.action-btn.bracket-btn{background:#e8f5e9;color:#388e3c}.action-btn.bracket-btn:hover:not(:disabled){background:#c8e6c9}.action-btn.delete-btn{background:#ffebee;color:#d32f2f}.action-btn.delete-btn:hover:not(:disabled){background:#ffcdd2}.action-btn.time-btn{background:#fff3e0;color:#e65100}.action-btn.time-btn:hover:not(:disabled){background:#ffe0b2}.tournaments-list{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;overflow:hidden}.tournaments-list .data-table{margin:0}.status-badge{padding:4px 12px;border-radius:12px;font-size:.85rem;font-weight:600;display:inline-block}.status-badge.registered{background:#e3f2fd;color:#1976d2}.status-badge.confirmed{background:#e8f5e9;color:#388e3c}.status-badge.withdrawn{background:#ffebee;color:#d32f2f}.member-tag{display:inline-block;padding:4px 10px;margin:2px;background:#f5f5f5;border-radius:8px;font-size:.85rem;color:#555}.text-muted{color:#999;font-style:italic}.matches-list{background:#fff;border-radius:12px;padding:20px}.round-section{margin-bottom:30px}.round-section h3{font-size:1.3rem;color:#667eea;margin-bottom:15px;padding-bottom:10px;border-bottom:2px solid #667eea}.match-card{background:#fff;border:2px solid #e0e0e0;border-radius:12px;padding:15px;margin-bottom:15px;transition:all .3s ease}.match-card:hover{border-color:#667eea;box-shadow:0 4px 12px #667eea33}.match-participants{display:flex;justify-content:space-around;align-items:center;gap:20px}.participant{flex:1;text-align:center;padding:15px;border-radius:8px;background:#fafafa}.participant.winner{background:linear-gradient(135deg,#84fab0,#8fd3f4);font-weight:700;color:#1b5e20;border:2px solid #4CAF50}.participant .name{font-size:1.1rem;font-weight:600}.participant .score{display:block;margin-top:8px;font-size:1.3rem;color:#667eea;font-weight:700}.participant.winner .score{color:#2e7d32}.vs{font-weight:700;color:#999;font-size:1.2rem}.match-winner{margin-top:15px;padding-top:15px;border-top:1px solid #e0e0e0;text-align:center;color:#4caf50;font-weight:600}.score-input-section{display:flex;gap:20px;align-items:center;margin-bottom:20px}.participant-score-input{flex:1}.participant-score-input label{display:block;margin-bottom:8px;font-weight:600;color:#333;font-size:1rem}.score-group input{width:100%;padding:12px;border:2px solid #e0e0e0;border-radius:8px;font-size:1rem}.vs-divider{font-weight:700;color:#999;font-size:1.5rem}.loading{text-align:center;padding:60px 20px;font-size:1.2rem;color:#667eea}.error{text-align:center;padding:60px 20px;color:#f44336;font-size:1.1rem}.members-list{display:flex;flex-direction:column;gap:10px}.member-row{display:grid;grid-template-columns:2fr 1fr 1fr 40px;gap:10px;align-items:center}.add-button{background:#4caf50;color:#fff;border:none;padding:6px 12px;border-radius:6px;font-size:.85rem;cursor:pointer;transition:background .3s ease}.add-button:hover{background:#388e3c}.remove-button{background:#f44336;color:#fff;border:none;width:32px;height:32px;border-radius:50%;font-size:1.3rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .3s ease}.remove-button:hover{background:#d32f2f}.rankings-list,.participants-list{background:#fff;border-radius:12px;padding:20px}@media(max-width:768px){body{font-size:14px}h1{font-size:24px}h2{font-size:20px}h3{font-size:18px}.page-title{font-size:1.5rem}.page-header{flex-direction:column;align-items:flex-start}.header-actions{width:100%}.tournaments-grid,.form-row{grid-template-columns:1fr}.tournament-actions{flex-direction:column}.tabs{overflow-x:auto;flex-wrap:nowrap}.tab{padding:10px 16px;font-size:.9rem;white-space:nowrap}.info-grid{grid-template-columns:1fr}.match-participants{flex-direction:column;gap:10px}.score-input-section{flex-direction:column}.member-row{grid-template-columns:1fr;gap:8px}.modal-content{margin:20px;max-height:calc(100vh - 40px)}.data-table{font-size:.85rem}.data-table th,.data-table td{padding:10px 8px}}.app{min-height:100vh;background-color:#f8fafb}.navbar{color:#fff;padding:0;box-shadow:0 1px 3px #00000014}.nav-container{max-width:100%;margin:0;padding:10px 20px;display:flex;justify-content:space-between;align-items:center}.nav-title{margin:0;font-size:20px;font-weight:600}.nav-menu{list-style:none;padding:0;margin:0;display:flex;gap:10px}.nav-menu li a{color:#fff;text-decoration:none;padding:8px 16px;border-radius:4px;transition:background-color .2s;display:block;font-weight:500;font-size:14px}.nav-menu li a:hover{background-color:#fff3}.admin-link{background:#ffffff40!important;border:1px solid rgba(255,255,255,.4)}.admin-link:hover{background:#ffffff59!important}.nav-menu .user-info span{color:#fff;padding:8px 16px;display:block;font-weight:400;font-size:12px}.admin-badge{background:#ffffff40;padding:2px 8px;border-radius:3px;font-size:12px;margin-left:5px;border:1px solid rgba(255,255,255,.4)}.logout-btn{background:#fff3;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;transition:background-color .2s;font-weight:500;font-size:14px}.logout-btn:hover{background:#ffffff4d}.dropdown-container{position:relative}.dropdown-toggle{background:transparent;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;transition:background-color .2s;font-weight:500;font-size:14px;display:flex;align-items:center;gap:6px}.dropdown-toggle:hover{background-color:#fff3}.dropdown-arrow{font-size:10px;transition:transform .2s}.dropdown-arrow.open{transform:rotate(180deg)}.dropdown-menu{position:absolute;top:100%;right:0;background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;min-width:160px;z-index:1001;list-style:none;padding:8px 0;margin:4px 0 0}.dropdown-menu li{border-bottom:none!important}.dropdown-menu li a{color:#333!important;padding:10px 16px!important;display:block;text-decoration:none;font-size:14px;transition:background-color .2s}.dropdown-menu li a:hover{background-color:#f5f5f5!important}.main-content{padding:0;min-height:calc(100vh - 60px)}.mobile-menu-toggle{display:none;flex-direction:column;justify-content:space-around;width:30px;height:25px;background:transparent;border:none;cursor:pointer;padding:0;z-index:1002}.mobile-menu-toggle span{width:30px;height:3px;background-color:#fff;border-radius:2px;transition:all .3s ease;transform-origin:center}.mobile-menu-toggle.open span:nth-child(1){transform:rotate(45deg) translate(7px,7px)}.mobile-menu-toggle.open span:nth-child(2){opacity:0;transform:translate(-20px)}.mobile-menu-toggle.open span:nth-child(3){transform:rotate(-45deg) translate(7px,-7px)}.mobile-menu-backdrop{display:none;position:fixed;inset:0;background:#00000080;z-index:999}@media(max-width:768px){.nav-container{flex-direction:row;justify-content:space-between;align-items:center;padding:12px 15px}.nav-title{font-size:18px;text-align:left}.mobile-menu-toggle{display:flex}.nav-menu{position:fixed;top:0;right:0;bottom:0;width:280px;max-width:80%;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);flex-direction:column;gap:0;padding:60px 0 20px;transform:translate(100%);transition:transform .3s ease-in-out;z-index:1000;overflow-y:auto;box-shadow:-2px 0 8px #00000026}.nav-menu.mobile-open{transform:translate(0)}.mobile-menu-backdrop{display:block}.nav-menu li{width:100%;border-bottom:1px solid rgba(255,255,255,.1)}.nav-menu li a,.nav-menu li .logout-btn{width:100%;text-align:left;padding:15px 20px;font-size:15px;border-radius:0}.nav-menu .user-info span{padding:15px 20px;font-size:14px;border-bottom:1px solid rgba(255,255,255,.2);display:block}.logout-btn{width:100%;text-align:left;border-radius:0!important}.dropdown-container{width:100%}.dropdown-toggle{width:100%;text-align:left;padding:15px 20px;font-size:15px;border-radius:0;justify-content:space-between}.dropdown-menu{position:static;box-shadow:none;border-radius:0;background:#0000001a;margin:0;padding:0}.dropdown-menu li a{color:#fff!important;padding:12px 20px 12px 35px!important;font-size:14px}.dropdown-menu li a:hover{background-color:#ffffff1a!important}.main-content{padding:0}}@media(max-width:480px){.nav-container{padding:10px 12px}.nav-title{font-size:16px}.nav-menu{width:260px;max-width:85%}.nav-menu li a,.nav-menu li .logout-btn{padding:14px 18px;font-size:14px}.nav-menu .user-info span{padding:14px 18px;font-size:13px}}.athletes-page{padding:20px;max-width:1200px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;flex-wrap:wrap;gap:15px}.page-header h2{margin:0;color:#333}.athlete-form{background:#fff;padding:25px;border-radius:12px;margin-bottom:30px;box-shadow:0 2px 12px #5b9bd514;border:1px solid #E3F2FD}.athlete-form h3{margin-top:0;color:#333}.form-group label{display:block;margin-bottom:8px;font-weight:500;color:#555}.form-group input[type=text],.form-group input[type=date]{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:16px;box-sizing:border-box}.form-group input[type=file]{width:100%;padding:8px}.photo-preview{margin-top:15px}.photo-preview img{max-width:200px;max-height:200px;border-radius:8px;object-fit:cover;box-shadow:0 2px 4px #0000001a}.form-actions{display:flex;gap:10px;margin-top:25px}.btn-primary,.btn-secondary,.btn-edit,.btn-delete{padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:16px;transition:background-color .2s}.btn-primary{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;box-shadow:0 3px 8px #5b9bd540}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 5px 12px #5b9bd559}.btn-primary:disabled{background-color:#ccc;cursor:not-allowed}.btn-secondary{background-color:#6c757d;color:#fff}.btn-secondary:hover{background-color:#545b62}.athletes-list h3{margin-bottom:20px;color:#333}.empty-message{text-align:center;color:#999;padding:40px;font-size:18px}.athletes-table-wrapper{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 12px #5b9bd51a;border:1px solid #E3F2FD}.athletes-table{width:100%;border-collapse:collapse}.athletes-table thead{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff}.athletes-table th{padding:15px;text-align:left;font-weight:500;font-size:16px}.athletes-table td{padding:15px;border-bottom:1px solid #eee;vertical-align:middle}.athletes-table tbody tr:hover{background-color:#f8f9fa}.athletes-table tbody tr:last-child td{border-bottom:none}.photo-cell{width:80px;text-align:center}.athlete-photo-thumb{width:60px;height:60px;border-radius:50%;object-fit:cover;box-shadow:0 2px 4px #0000001a}.no-photo-thumb{width:60px;height:60px;border-radius:50%;background-color:#f0f0f0;display:flex;align-items:center;justify-content:center;font-size:12px;color:#999;margin:0 auto}.name-cell{font-weight:600;color:#333;font-size:16px}.actions-cell{width:180px;text-align:center}.actions-cell button{padding:8px 16px;font-size:14px;margin:0 4px}.btn-edit{flex:1;background:linear-gradient(135deg,#66bb6a,#4caf50);color:#fff;box-shadow:0 2px 6px #66bb6a4d}.btn-edit:hover{transform:translateY(-1px);box-shadow:0 4px 10px #66bb6a66}.btn-delete{flex:1;background:linear-gradient(135deg,#ef5350,#e53935);color:#fff;box-shadow:0 2px 6px #ef53504d}.btn-delete:hover{transform:translateY(-1px);box-shadow:0 4px 10px #ef535066}@media(max-width:768px){.athletes-page{padding:15px}.page-header{flex-direction:column;align-items:stretch}.page-header h2{text-align:center}.athlete-form{padding:15px}.athletes-table-wrapper{overflow-x:auto}.athletes-table{min-width:600px}.athletes-table th,.athletes-table td{padding:10px 8px;font-size:14px}.athlete-photo-thumb,.no-photo-thumb{width:50px;height:50px}.actions-cell button{padding:6px 12px;font-size:13px;margin:0 2px}.form-actions{flex-direction:column}.btn-primary,.btn-secondary{width:100%}}.achievement-badge{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 12px;border-radius:12px;text-align:center;transition:all .3s ease;cursor:pointer;box-shadow:0 2px 8px #0000001a}.achievement-badge:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.badge-emoji{font-size:2em;line-height:1;margin-bottom:4px}.badge-name{font-size:.85em;font-weight:600;white-space:nowrap}.badge-small{padding:4px 8px;border-radius:8px}.badge-small .badge-emoji{font-size:1.5em;margin-bottom:2px}.badge-small .badge-name{font-size:.7em}.badge-medium{padding:8px 12px;border-radius:12px}.badge-large{padding:12px 16px;border-radius:16px}.badge-large .badge-emoji{font-size:3em;margin-bottom:6px}.badge-large .badge-name{font-size:1em}.badge-bronze{background:linear-gradient(135deg,#cd7f32,#b87333);color:#fff}.badge-silver{background:linear-gradient(135deg,silver,#a8a8a8);color:#333}.badge-gold{background:linear-gradient(135deg,gold,orange);color:#333}.badge-diamond{background:linear-gradient(135deg,#b9f2ff,#00bfff);color:#036;box-shadow:0 2px 12px #00bfff4d}.badge-master{background:linear-gradient(135deg,#96c,#6a0dad);color:#fff;box-shadow:0 2px 12px #96c6}.badge-custom{background:linear-gradient(135deg,#fef9e7,#f9e79f);color:#333;border:2px solid #f39c12}@keyframes badgeUnlock{0%{transform:scale(0) rotate(-180deg);opacity:0}50%{transform:scale(1.2) rotate(10deg)}to{transform:scale(1) rotate(0);opacity:1}}.badge-unlocked{animation:badgeUnlock .6s ease-out}@media(max-width:480px){.achievement-badge{padding:6px 10px}.badge-emoji{font-size:1.5em}.badge-name{font-size:.75em}}.achievements-display{margin:20px 0;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.achievements-loading{padding:20px;text-align:center;color:#666}.achievements-summary{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;padding:16px 20px}.summary-header{display:flex;justify-content:space-between;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.summary-title{display:flex;align-items:center;gap:10px;flex:1}.trophy-icon{font-size:1.5em}.summary-title h3{margin:0;font-size:1.1em;font-weight:600}.achievement-count{background:#fff3;padding:4px 12px;border-radius:12px;font-size:.85em;font-weight:500}.expand-btn{background:#fff3;border:none;color:#fff;width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:.9em;transition:all .3s ease}.expand-btn:hover{background:#ffffff4d;transform:scale(1.1)}.next-goal-card{margin-top:16px;background:#fffffff2;color:#333;border-radius:12px;padding:16px;box-shadow:0 4px 12px #0000001a}.next-goal-header{display:flex;align-items:center;gap:8px;margin-bottom:12px}.target-icon{font-size:1.3em}.next-goal-label{font-size:.95em;font-weight:600;color:#5b9bd5}.next-goal-content{display:flex;flex-direction:column;gap:12px}.goal-info{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.goal-badge{display:flex;align-items:center;gap:8px;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);padding:8px 16px;border-radius:20px}.goal-emoji{font-size:1.5em}.goal-name{font-weight:600;font-size:1.05em}.goal-time{font-size:.95em;color:#555}.goal-time strong{color:#5b9bd5;font-size:1.1em}.progress-info{display:flex;flex-direction:column;gap:8px}.current-best,.time-diff{font-size:.9em;color:#666}.current-best strong,.time-diff strong{color:#333;font-size:1.05em}.diff-value{color:#4a7ba7}.progress-bar-container{width:100%;height:8px;background:#e0e0e0;border-radius:4px;overflow:hidden;margin-top:4px}.progress-bar-fill{height:100%;background:linear-gradient(90deg,#5b9bd5,#4a7ba7);transition:width .5s ease;border-radius:4px}.achievements-list{padding:20px;background:#f8f9fa}.achievements-list h4{margin:0 0 16px;color:#333;font-size:1.05em;font-weight:600}.badges-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px}.achievement-item{display:flex;flex-direction:column;align-items:center;gap:8px}.achievement-details{text-align:center;font-size:.85em}.achievement-time{font-weight:600;color:#333}.achievement-date{color:#999;font-size:.9em}@media(max-width:768px){.achievements-display{margin:16px 0}.achievements-summary{padding:12px 16px}.summary-title h3{font-size:1em}.achievement-count{font-size:.75em;padding:3px 10px}.next-goal-card{padding:12px}.badges-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px}}@media(max-width:480px){.achievements-summary{padding:10px 12px}.trophy-icon{font-size:1.3em}.summary-title h3{font-size:.95em}.next-goal-card{padding:10px}.goal-badge{padding:6px 12px}.goal-emoji{font-size:1.3em}.badges-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px}}.practice-page{padding:0;max-width:100%;margin:0}.practice-page>h2{padding:15px 20px 0;margin-bottom:10px;color:#333;font-size:22px}.top-bar{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:8px;padding:0 20px;margin-bottom:10px}.top-bar.athlete-layout{grid-template-columns:1fr 1fr 1fr}.athlete-selector{background:#f8f9fa;padding:6px 10px;border-radius:6px;box-shadow:0 2px 4px #0000001a}.athlete-selector label{display:block;margin-bottom:3px;font-weight:500;color:#555;font-size:11px}.athlete-selector select{width:100%;padding:5px 8px;border:1px solid #ddd;border-radius:4px;font-size:12px;background-color:#fff;cursor:pointer}.selected-athlete-info{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;padding:8px 12px;border-radius:8px;box-shadow:0 3px 10px #5b9bd54d;display:flex;flex-direction:column;justify-content:center}.selected-athlete-info h3{margin:0 0 2px;font-size:13px}.mode-selector{background:#f8f9fa;padding:6px;border-radius:6px;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center}.mode-selector label{display:block;margin-bottom:3px;font-weight:500;color:#555;font-size:11px}.mode-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;flex:1}.mode-btn{padding:4px 8px;border:1px solid #dee2e6;background:#fff;border-radius:4px;cursor:pointer;font-size:12px;font-weight:500;color:#495057;transition:all .2s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mode-btn:hover{border-color:#5b9bd5;color:#5b9bd5;background:#e3f2fd}.selected-athlete-info p{margin:0;opacity:.9;font-size:11px}.goal-display{background:#f8f9fa;color:#555;padding:8px 12px;border-radius:6px;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center;gap:8px}.goal-icon{font-size:20px;line-height:1}.goal-info{flex:1;display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.goal-label{font-size:11px;color:#666}.goal-value{font-size:13px;font-weight:700;color:#333}.goal-time{font-size:13px;font-weight:600;color:#666}.content-layout{display:grid;grid-template-columns:1fr 2.5fr;gap:0;margin-top:10px;padding:0;align-items:start}.practice-form{background:#fff;padding:25px;border-radius:0;box-shadow:0 0 20px #5b9bd514;height:fit-content;max-height:calc(100vh - 40px);overflow-y:auto;position:sticky;top:20px;border-right:1px solid #E3F2FD}.practice-form h3{margin-top:0;color:#333;margin-bottom:20px}.form-mode-selector{margin-bottom:20px;padding:16px;background:#f8f9fa;border-radius:8px;border:1px solid #e0e0e0}.form-mode-selector label{display:block;font-weight:600;color:#555;font-size:14px;margin-bottom:10px}.form-mode-buttons{display:flex;gap:10px;flex-wrap:wrap}.form-mode-btn{padding:6px 12px;border:2px solid #e0e0e0;background:#fff;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;transition:all .3s ease;flex:1;min-width:80px}.form-mode-btn:hover{border-color:#5b9bd5;background:#f5f7ff}.form-mode-btn.active{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border-color:#5b9bd5}.auto-filled{color:#66bb6a;font-size:14px;font-weight:400;margin-left:5px}.records-list{background:#fff;padding:25px;border-radius:0;box-shadow:none}.records-list h3{margin-bottom:20px;color:#333}.records-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:12px}.records-list-header h3{margin-bottom:0}.achievement-summary-inline{display:flex;align-items:center;gap:8px;font-size:14px;color:#666;padding:6px 12px;background:linear-gradient(135deg,#f5f7ff,#e8ecff);border-radius:8px;border:1px solid #d0d7ff;transition:all .3s ease}.achievement-summary-inline.clickable{cursor:pointer}.achievement-summary-inline.clickable:hover{background:linear-gradient(135deg,#e8ecff,#d6ddff);border-color:#b8c5ff;transform:translateY(-1px);box-shadow:0 2px 8px #5b9bd533}.achievement-summary-inline .achievement-icon,.achievement-summary-inline .next-goal-icon{font-size:16px}.achievement-summary-inline .achievement-text{font-weight:600;color:#5b9bd5}.achievement-summary-inline .separator{color:#ccc;margin:0 4px}.achievement-summary-inline .next-goal-text{color:#555;font-size:13px}.achievement-details-modal{background:#fff;border-radius:16px;max-width:600px;width:90%;max-height:80vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 10px 40px #0000004d}.achievement-details-body{overflow-y:auto;padding:20px;max-height:calc(80vh - 80px)}.achievements-list{display:flex;flex-direction:column;gap:16px}.achievement-detail-card{background:linear-gradient(135deg,#f8f9fa,#e9ecef);border:2px solid #28a745;border-radius:12px;padding:20px;display:flex;align-items:center;gap:16px;position:relative;transition:all .3s ease}.achievement-detail-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #28a74533}.achievement-badge-large{font-size:48px;line-height:1;flex-shrink:0}.achievement-detail-info{flex:1}.achievement-detail-name{font-size:18px;font-weight:700;color:#333;margin-bottom:12px}.achievement-detail-stats{display:flex;flex-direction:column;gap:8px}.achievement-detail-stats .stat-item{display:flex;align-items:center;gap:8px;font-size:14px}.achievement-detail-stats .stat-label{color:#666;font-weight:500;min-width:80px}.achievement-detail-stats .stat-value{font-weight:600;padding:2px 8px;border-radius:4px}.achievement-detail-stats .stat-value.target{color:#5b9bd5;background:#f5f7ff}.achievement-detail-stats .stat-value.achieved{color:#28a745;background:#d4edda}.achievement-detail-stats .stat-value.date{color:#555;background:#f8f9fa}.achievement-check-icon{position:absolute;top:12px;right:12px;width:32px;height:32px;background:linear-gradient(135deg,#28a745,#20c997);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;box-shadow:0 2px 8px #28a7454d}.empty-achievements{text-align:center;padding:60px 20px;color:#999}.empty-achievements p{margin:8px 0;font-size:16px}.empty-achievements .empty-hint{font-size:14px;color:#bbb}.month-pagination{display:flex;align-items:center;justify-content:center;gap:12px;padding:16px;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-radius:12px;margin-bottom:20px;border:1px solid #E3F2FD}.month-nav-btn{width:40px;height:40px;border:none;border-radius:50%;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;font-size:14px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #5b9bd54d}.month-nav-btn:hover:not(:disabled){transform:scale(1.1);box-shadow:0 4px 12px #5b9bd566}.month-nav-btn:disabled{background:#ccc;cursor:not-allowed;box-shadow:none}.month-selector{position:relative;min-width:140px}.month-select{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:16px}.month-display{display:block;padding:10px 20px;background:#fff;border-radius:8px;font-size:16px;font-weight:600;color:#333;text-align:center;border:2px solid #5B9BD5;box-shadow:0 2px 6px #5b9bd526;pointer-events:none}.month-record-count{padding:8px 14px;background:#5b9bd5;color:#fff;border-radius:20px;font-size:13px;font-weight:600;white-space:nowrap}.records-grouped{display:flex;flex-direction:column;gap:20px}.date-group{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 12px #5b9bd51a;border:1px solid #E3F2FD}.date-header{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);padding:14px 20px;display:flex;justify-content:space-between;align-items:center}.date-header h4{margin:0;color:#fff;font-size:16px;font-weight:600}.record-count{color:#ffffffe6;font-size:14px;font-weight:500}.records-table{background:#fff;overflow:hidden}.records-table table{width:100%;border-collapse:collapse}.records-cards{display:none}.floating-add-btn{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;box-shadow:0 4px 16px #5b9bd566;font-size:26px;font-weight:700;cursor:pointer;z-index:100;display:flex;align-items:center;justify-content:center;transition:all .3s}.floating-add-btn:hover{transform:scale(1.1);box-shadow:0 6px 20px #5b9bd580}.form-backdrop,.form-close-btn{display:none}.records-table thead{background-color:#f8f9fa;color:#495057;border-bottom:2px solid #dee2e6}.records-table th{padding:12px 15px;text-align:left;font-weight:600;font-size:14px}.records-table td{padding:12px 15px;border-bottom:1px solid #eee}.records-table tbody tr:hover{background-color:#f8f9fa}.records-table tbody tr:last-child td{border-bottom:none}.time-cell{font-weight:700;color:#ffa726;font-size:17px}.notes-cell{color:#666;font-size:14px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-edit-small{padding:6px 14px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s;margin-right:6px;box-shadow:0 2px 6px #5b9bd540}.btn-edit-small:hover{transform:translateY(-1px);box-shadow:0 4px 10px #5b9bd559}.btn-delete-small{padding:6px 14px;background:linear-gradient(135deg,#ef5350,#e53935);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s;box-shadow:0 2px 6px #ef535040}.btn-delete-small:hover{transform:translateY(-1px);box-shadow:0 4px 10px #ef535059}.form-actions{display:flex;gap:10px;margin-top:10px}.venue-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.venue-tag{display:inline-flex;align-items:center;background:#e3f2fd;border-radius:16px;overflow:hidden;transition:all .2s}.venue-tag:hover{background:#bbdefb}.venue-tag-btn{padding:6px 12px;border:none;background:transparent;color:#1976d2;font-size:14px;cursor:pointer;transition:all .2s;white-space:nowrap}.venue-tag-btn:hover{color:#0d47a1;font-weight:600}.venue-tag-delete{padding:6px 10px;border:none;background:transparent;color:#e53935;font-size:16px;cursor:pointer;transition:all .2s;font-weight:700;line-height:1}.venue-tag-delete:hover{background:#ffcdd2;color:#c62828}.venue-tag-add{padding:6px 14px;border:2px dashed #5B9BD5;background:#fff;color:#5b9bd5;font-size:14px;border-radius:16px;cursor:pointer;transition:all .2s;white-space:nowrap}.venue-tag-add:hover{background:#e3f2fd;border-color:#1976d2;color:#1976d2;font-weight:600}.venue-add-form{display:flex;align-items:center;gap:6px;background:#fff;border:2px solid #5B9BD5;border-radius:16px;padding:4px 4px 4px 12px}.venue-add-input{border:none;outline:none;padding:4px 8px;font-size:14px;min-width:120px;background:transparent}.venue-add-confirm,.venue-add-cancel{width:28px;height:28px;border:none;border-radius:50%;font-size:16px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;font-weight:700;line-height:1}.venue-add-confirm{background:#66bb6a;color:#fff}.venue-add-confirm:hover{background:#4caf50;transform:scale(1.1)}.venue-add-cancel{background:#ef5350;color:#fff}.venue-add-cancel:hover{background:#e53935;transform:scale(1.1)}.venue-tag-btn,.venue-tag-delete,.venue-tag-add,.venue-add-confirm,.venue-add-cancel{-webkit-user-select:none;user-select:none}.venue-tag-btn:active{transform:scale(.95)}.venue-tag-delete:active{transform:scale(.9)}.venue-tag-add:active{transform:scale(.95)}.notes-quick-buttons{display:flex;gap:8px;margin-top:10px}.notes-quick-btn{padding:8px 14px;border:2px solid #E3F2FD;background:#f8f9fa;border-radius:20px;cursor:pointer;font-size:14px;font-weight:500;color:#5b9bd5;transition:all .2s;display:flex;align-items:center;gap:4px}.notes-quick-btn:hover{background:#e3f2fd;border-color:#5b9bd5;transform:translateY(-1px)}.notes-quick-btn:active{transform:scale(.95)}.notes-quick-btn-warning{color:#ffa726;border-color:#ffe0b2}.notes-quick-btn-warning:hover{background:#fff3e0;border-color:#ffa726}.btn-secondary{padding:10px 20px;background-color:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:16px;transition:background-color .2s}.btn-secondary:hover{background-color:#5a6268}.time-input-wrapper input{width:100%;padding:10px;border:2px solid #ddd;border-radius:4px;font-size:18px;font-weight:600;letter-spacing:1px;transition:border-color .2s}.time-input-wrapper input:focus{outline:none;border-color:#5b9bd5;box-shadow:0 0 0 3px #5b9bd526}.time-preview{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);padding:14px 18px;border-radius:8px;margin-top:12px;display:flex;align-items:center;gap:10px;box-shadow:0 3px 10px #5b9bd54d}.preview-label{color:#ffffffe6;font-size:13px;font-weight:500}.preview-value{color:#fff;font-size:20px;font-weight:700;letter-spacing:1px}.time-hint{display:block;margin-top:8px;font-size:12px;color:#8a8a8a;font-weight:500}@media(max-width:768px){*{-webkit-tap-highlight-color:transparent}button,select,input[type=date]{touch-action:manipulation}.practice-page{padding:15px}.practice-page>h2{padding:0;font-size:22px;margin-bottom:10px}.top-bar{grid-template-columns:1fr;gap:8px;padding:0}.goal-display{padding:8px 10px}.goal-icon{font-size:18px}.goal-label{font-size:10px}.goal-value,.goal-time{font-size:11px}.athlete-selector{padding:8px 12px}.athlete-selector label{font-size:12px;margin-bottom:4px}.athlete-selector select{padding:10px;font-size:15px;min-height:38px;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.selected-athlete-info{padding:10px 12px}.selected-athlete-info h3{font-size:16px;margin-bottom:2px}.selected-athlete-info p{font-size:12px}.mode-selector{padding:8px 10px;overflow:visible}.mode-buttons{display:grid!important;grid-template-columns:repeat(2,1fr)!important;gap:6px;flex:none}.mode-btn{padding:10px 8px;font-size:13px;min-height:42px;height:auto;display:flex;align-items:center;justify-content:center;white-space:normal;text-align:center;word-break:break-word;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none;line-height:1.2}.content-layout{grid-template-columns:1fr;gap:20px}.practice-form{position:fixed;left:0;top:0;width:100%;height:100vh;max-width:none;padding:60px 20px 150px;border-radius:0;border-right:none;box-shadow:none;background:#fff;z-index:1002;transform:translate(-100%);transition:transform .3s ease-in-out;overflow-y:scroll;overflow-x:hidden;-webkit-overflow-scrolling:touch;box-sizing:border-box}.practice-form.open{transform:translate(0)}.form-backdrop{display:none;position:fixed;inset:0;background:#00000080;z-index:999;opacity:0;transition:opacity .3s ease-in-out;pointer-events:none}.form-backdrop.open{display:block;opacity:1;pointer-events:auto}.floating-add-btn{position:fixed;bottom:24px;right:20px;width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;box-shadow:0 4px 16px #5b9bd566;font-size:28px;font-weight:700;cursor:pointer;z-index:1003;display:flex;align-items:center;justify-content:center;transition:all .3s;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.floating-add-btn:active{transform:scale(.95)}.form-backdrop.open~.floating-add-btn{display:none;opacity:0;pointer-events:none}.form-close-btn{position:fixed;top:20px;right:20px;width:44px;height:44px;border-radius:50%;background:#f0f0f0;border:none;font-size:24px;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none;z-index:1003}.form-close-btn:active{background:#e0e0e0;transform:scale(.95)}.practice-form h3{font-size:20px;margin-bottom:20px;margin-top:0}.practice-form form{display:block;width:100%;padding-bottom:50px}.form-mode-selector{padding:12px;margin-bottom:16px}.form-mode-selector label{font-size:15px;margin-bottom:8px}.form-mode-buttons{gap:8px}.form-mode-btn{padding:12px 14px;font-size:15px;min-width:70px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:600;font-size:15px;color:#333}.form-group input[type=date],.form-group input[type=text]{width:100%;padding:14px 12px;font-size:16px;border:2px solid #ddd;border-radius:8px;min-height:48px;box-sizing:border-box;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.form-group input:focus{outline:none;border-color:#5b9bd5;box-shadow:0 0 0 3px #5b9bd526}.form-group input[type=date],.form-group input[type=text],.form-group select{font-size:16px!important}.notes-quick-buttons{gap:10px;margin-top:12px}.notes-quick-btn{padding:10px 16px;font-size:15px;flex:1;justify-content:center;min-height:44px;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.venue-tags{gap:6px;margin-top:12px}.venue-tag-btn{padding:8px 14px;font-size:15px;min-height:36px}.venue-tag-delete{padding:8px 12px;font-size:18px;min-width:36px}.venue-tag-add{padding:8px 14px;font-size:15px;min-height:36px}.venue-add-input{font-size:15px;min-width:140px;padding:6px 10px}.venue-add-confirm,.venue-add-cancel{width:32px;height:32px;font-size:18px}.venue-tag-btn,.venue-tag-delete,.venue-tag-add,.venue-add-confirm,.venue-add-cancel{-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none}.time-input-wrapper input{padding:14px 12px;font-size:20px;min-height:52px;border-radius:8px}.time-preview{padding:16px 20px;margin-top:15px;border-radius:10px}.preview-label{font-size:14px}.preview-value{font-size:22px}.time-hint{margin-top:10px;font-size:13px}.form-actions{flex-direction:column;gap:12px;margin-top:20px;margin-bottom:80px;padding-bottom:20px}.form-actions button{width:100%;padding:16px 20px;font-size:17px;font-weight:600;border-radius:10px;min-height:52px;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none}.btn-primary{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);box-shadow:0 4px 12px #5b9bd54d;border:none;color:#fff}.btn-primary:active{transform:scale(.98);box-shadow:0 2px 8px #5b9bd54d}.btn-secondary{font-size:17px;padding:16px 20px;min-height:52px}.btn-secondary:active{transform:scale(.98)}.month-pagination{flex-wrap:wrap;gap:10px;padding:12px}.month-nav-btn{width:44px;height:44px;font-size:16px;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.month-selector{min-width:130px;order:-1;flex-basis:100%;margin-bottom:6px}.month-display{padding:12px 16px;font-size:17px}.month-select{font-size:17px!important}.month-record-count{font-size:14px;padding:8px 16px}.records-list{padding:20px;border-radius:12px;position:relative;z-index:1}.records-list h3{font-size:20px;margin-bottom:15px}.records-table{overflow:visible}.records-table table{display:none}.date-group{border-radius:10px}.date-header{padding:16px 18px;flex-direction:column;align-items:flex-start;gap:6px}.date-header h4{font-size:17px}.record-count{font-size:13px}.records-cards{display:flex!important;flex-direction:column;gap:12px;padding:15px}.record-card{background:#fff;border:2px solid #E3F2FD;border-radius:12px;padding:16px;box-shadow:0 2px 8px #5b9bd51a;transition:all .2s;position:relative}.record-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:12px;border-bottom:2px solid #f0f0f0}.record-time{font-size:24px;font-weight:700;color:#ffa726;letter-spacing:.5px}.record-card-body{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.record-field{display:flex;align-items:flex-start;gap:8px}.field-label{font-weight:600;color:#666;font-size:14px;min-width:50px}.field-value{color:#333;font-size:15px;flex:1;word-break:break-word}.record-card-actions{display:flex;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid #f0f0f0}.btn-edit-card,.btn-delete-card{flex:1;padding:14px 16px;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s;min-height:50px;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none}.btn-edit-card{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;box-shadow:0 2px 8px #5b9bd54d}.btn-edit-card:active{transform:scale(.96);box-shadow:0 1px 4px #5b9bd566}.btn-delete-card{background:linear-gradient(135deg,#ef5350,#e53935);color:#fff;box-shadow:0 2px 8px #ef53504d}.btn-delete-card:active{transform:scale(.96);box-shadow:0 1px 4px #ef535066}.empty-message{text-align:center;padding:40px 20px;color:#666;font-size:16px}.records-list-header{flex-direction:column;align-items:flex-start}.achievement-summary-inline{font-size:13px;padding:4px 10px;gap:6px;width:100%}.achievement-summary-inline .achievement-icon,.achievement-summary-inline .next-goal-icon{font-size:14px}.achievement-summary-inline .next-goal-text{font-size:12px}.floating-add-btn,.form-backdrop,.form-close-btn{display:flex}}@media(max-width:480px){.practice-page{padding:12px}.practice-page>h2{font-size:20px;margin-bottom:8px}.practice-form{padding:70px 16px 150px}.practice-form h3{font-size:18px}.form-close-btn{top:16px;right:16px}.records-list{padding:16px}.mode-btn{font-size:12px;padding:8px 6px;min-height:38px;height:auto}.top-bar{gap:6px}.athlete-selector{padding:6px 10px}.selected-athlete-info{padding:8px 10px}.selected-athlete-info h3{font-size:15px}.selected-athlete-info p{font-size:11px}.mode-selector{padding:6px 8px}.floating-add-btn{width:56px;height:56px;font-size:26px;bottom:20px;right:16px}}.achievement-modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;justify-content:center;align-items:center;z-index:10000;animation:fadeIn .3s ease}.achievement-modal{background:#fff;border-radius:20px;padding:0;max-width:500px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 10px 40px #0000004d;animation:slideUp .4s ease}.achievement-modal-header{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;padding:20px 24px;border-radius:20px 20px 0 0;display:flex;align-items:center;justify-content:space-between;position:relative}.celebration-icon{font-size:2em;animation:bounce .6s ease infinite}.achievement-modal-header h3{margin:0;flex:1;text-align:center;font-size:1.4em;font-weight:700}.modal-close-btn{background:#fff3;border:none;color:#fff;width:36px;height:36px;border-radius:50%;cursor:pointer;font-size:1.2em;display:flex;align-items:center;justify-content:center;transition:all .3s ease}.modal-close-btn:hover{background:#ffffff4d;transform:scale(1.1)}.achievement-modal-body{padding:24px;display:flex;flex-direction:column;gap:20px}.unlocked-achievement{display:flex;align-items:center;gap:20px;padding:16px;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);border-radius:16px;box-shadow:0 4px 12px #0000001a;animation:badgeUnlock .6s ease-out}.achievement-info{flex:1;display:flex;flex-direction:column;gap:6px}.achievement-name{font-size:1.3em;font-weight:700;color:#333}.achievement-target,.achievement-achieved{font-size:.95em;color:#666}.achievement-achieved{font-weight:600;color:#5b9bd5}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@media(max-width:480px){.achievement-modal{width:95%;max-height:70vh}.achievement-modal-header{padding:16px 20px}.achievement-modal-header h3{font-size:1.2em}.celebration-icon{font-size:1.5em}.achievement-modal-body{padding:16px;gap:16px}.unlocked-achievement{flex-direction:column;text-align:center;gap:12px;padding:12px}.achievement-name{font-size:1.1em}.achievement-details-modal{max-width:95%;max-height:90vh}.achievement-details-body{padding:16px}.achievement-detail-card{flex-direction:column;align-items:flex-start;padding:40px 16px 16px}.achievement-badge-large{font-size:40px;align-self:center}.achievement-detail-name{font-size:16px;text-align:center;width:100%}.achievement-detail-stats .stat-item{flex-direction:column;align-items:flex-start;gap:4px}.achievement-detail-stats .stat-label{min-width:auto;font-size:12px}.achievement-detail-stats .stat-value{font-size:14px}.achievement-check-icon{width:28px;height:28px;font-size:18px}}.goal-management-page{padding:20px;max-width:1400px;margin:0 auto}.goal-management-page>h2{margin-bottom:20px;color:#333;font-size:24px}.goal-top-bar{display:grid;grid-template-columns:1fr 2fr 1.5fr;gap:20px;margin-bottom:24px;background:#fff;padding:20px;border-radius:12px;box-shadow:0 2px 8px #0000001a}.goal-top-bar .athlete-selector{display:flex;flex-direction:column;gap:8px}.goal-top-bar .athlete-selector label{font-weight:600;color:#555;font-size:14px}.goal-top-bar .athlete-selector select{padding:10px 12px;border:2px solid #e0e0e0;border-radius:8px;font-size:14px;background-color:#fff;cursor:pointer;transition:all .3s ease}.goal-top-bar .athlete-selector select:focus{outline:none;border-color:#5b9bd5;box-shadow:0 0 0 3px #5b9bd51a}.goal-top-bar .mode-selector{display:flex;flex-direction:column;gap:8px}.goal-top-bar .mode-selector label{font-weight:600;color:#555;font-size:14px}.mode-btn{padding:10px 20px;border:2px solid #e0e0e0;background:#fff;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;transition:all .3s ease}.mode-btn:hover{border-color:#5b9bd5;background:#f5f7ff}.mode-btn.active{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border-color:#5b9bd5}.athlete-info-inline{display:flex;flex-direction:column;gap:8px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);padding:12px 16px;border-radius:8px;color:#fff}.info-item{display:flex;align-items:center;gap:8px;font-size:14px}.info-label{font-weight:600;opacity:.9}.info-value{font-weight:500}.goal-content{display:flex;flex-direction:column;gap:24px}.athlete-card{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;padding:24px;border-radius:12px;box-shadow:0 4px 12px #5b9bd54d}.athlete-info h3{margin:0 0 8px;font-size:24px;font-weight:700}.athlete-info p{margin:4px 0;font-size:14px;opacity:.95}.goals-section{background:#fff;padding:24px;border-radius:12px;box-shadow:0 2px 8px #0000001a}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:16px;border-bottom:2px solid #f0f0f0}.section-header h3{margin:0;font-size:20px;color:#333;display:flex;align-items:center;gap:8px}.section-desc{font-size:13px;color:#999;font-weight:400;margin-left:8px}.add-goal-btn{padding:10px 20px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;transition:all .3s ease}.add-goal-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #5b9bd566}.goals-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.goal-card{padding:20px;border-radius:12px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;transition:all .3s ease;position:relative;border:2px solid transparent}.goal-card:hover{transform:translateY(-4px);box-shadow:0 8px 16px #00000026}.system-goal{background:linear-gradient(135deg,#f5f7fa,#c3cfe2);border-color:#c3cfe2}.system-goal.badge-bronze{background:linear-gradient(135deg,#f5dcc8,#e0c3a8)}.system-goal.badge-silver{background:linear-gradient(135deg,#e8e8e8,#d0d0d0)}.system-goal.badge-gold{background:linear-gradient(135deg,#fff4d6,#ffe8a8)}.system-goal.badge-diamond{background:linear-gradient(135deg,#d6f5ff,#b3e5ff)}.system-goal.badge-master{background:linear-gradient(135deg,#d6e9ff,#b3d1ff)}.custom-goal{background:linear-gradient(135deg,#fef9e7,#f9e79f);border-color:#f9e79f}.goal-card.achieved{background:linear-gradient(135deg,#d4edda,#a3d9a5);border-color:#28a745}.achievement-badge{position:absolute;top:8px;left:8px;background:linear-gradient(135deg,#28a745,#20c997);color:#fff;padding:6px 12px;border-radius:20px;font-size:11px;font-weight:600;display:flex;align-items:center;gap:4px;box-shadow:0 2px 8px #28a7454d;z-index:1}.achievement-icon{font-size:14px;font-weight:700}.achievement-text{text-transform:uppercase;letter-spacing:.5px}.achievement-time{background:#fff3;padding:2px 6px;border-radius:10px;font-size:10px;margin-left:2px}.goal-emoji{font-size:2.5em;line-height:1}.goal-name{font-size:16px;font-weight:700;color:#333}.goal-time{font-size:18px;font-weight:600;color:#5b9bd5}.goal-type{font-size:11px;color:#999;text-transform:uppercase;letter-spacing:.5px;margin-top:4px}.custom-badge{background:#f39c12;color:#fff;padding:3px 10px;border-radius:12px;font-weight:600}.goal-actions{position:absolute;top:8px;right:8px;display:flex;gap:6px;opacity:0;transition:all .3s ease}.goal-card:hover .goal-actions{opacity:1}.edit-goal-btn,.delete-goal-btn{width:28px;height:28px;border-radius:50%;border:none;color:#fff;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .3s ease}.edit-goal-btn{background:#5b9bd5e6}.edit-goal-btn:hover{background:#5b9bd5;transform:scale(1.1)}.delete-goal-btn{background:#dc2626e6}.delete-goal-btn:hover{background:#dc2626;transform:scale(1.1)}.add-goal-form{background:#f8f9fa;padding:24px;border-radius:12px;margin-bottom:24px;border:2px dashed #d0d0d0}.form-row{display:flex;flex-direction:column;gap:16px;margin-bottom:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{font-weight:600;color:#555;font-size:14px}.form-group input[type=text],.form-group input[type=number]{padding:12px;border:2px solid #e0e0e0;border-radius:8px;font-size:14px;transition:all .3s ease}.emoji-selector{display:flex;gap:8px;flex-wrap:wrap}.emoji-option{width:48px;height:48px;border:2px solid #e0e0e0;background:#fff;border-radius:8px;cursor:pointer;font-size:24px;display:flex;align-items:center;justify-content:center;transition:all .3s ease}.emoji-option:hover{border-color:#5b9bd5;transform:scale(1.1)}.emoji-option.active{border-color:#5b9bd5;background:#f5f7ff;box-shadow:0 0 0 3px #5b9bd533}.submit-btn{padding:12px 32px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:16px;font-weight:600;transition:all .3s ease}.submit-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #5b9bd566}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.empty-message{text-align:center;padding:40px 20px;color:#999}.empty-message p{margin:8px 0;font-size:16px}.empty-hint{font-size:14px;color:#bbb}.empty-state{text-align:center;padding:60px 20px;background:#fff;border-radius:12px;color:#999;font-size:18px}@media(max-width:768px){.goal-management-page{padding:16px}.goal-top-bar{grid-template-columns:1fr;gap:16px;padding:16px}.goals-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.athlete-card{padding:20px}.goals-section{padding:16px}.section-header{flex-direction:column;align-items:flex-start;gap:12px}.add-goal-form{padding:16px}.goal-actions{opacity:1}}@media(max-width:480px){.goal-management-page>h2{font-size:20px}.goals-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.goal-card{padding:16px}.goal-emoji{font-size:2em}.goal-name{font-size:14px}.goal-time{font-size:16px}.mode-buttons{gap:8px}.mode-btn{padding:8px 16px;font-size:13px}.emoji-selector{gap:6px}.emoji-option{width:42px;height:42px;font-size:20px}}.charts-page{padding:0;max-width:100%;margin:0}.charts-page h2{padding:15px 20px 0;margin-bottom:10px;color:#333;font-size:22px}.charts-layout{display:grid;grid-template-columns:280px 1fr;gap:0;height:calc(100vh - 80px)}.charts-sidebar{background:#f8f9fa;padding:20px;border-right:1px solid #dee2e6;overflow-y:auto}.charts-content{background:#fff;padding:20px;overflow-y:auto}.charts-sidebar .athlete-selector{margin-bottom:15px;background:#fff;padding:12px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.charts-sidebar .athlete-selector label{display:block;margin-bottom:8px;font-weight:500;color:#555;font-size:13px}.charts-sidebar .athlete-selector select{width:100%;padding:8px;border:1px solid #ddd;border-radius:4px;font-size:14px;background-color:#fff;cursor:pointer}.charts-sidebar .selected-athlete-info{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;padding:16px;border-radius:10px;margin-bottom:15px;box-shadow:0 3px 12px #5b9bd54d}.charts-sidebar .selected-athlete-info h3{margin:0 0 8px;font-size:18px}.charts-sidebar .selected-athlete-info p{margin:0;opacity:.9;font-size:14px}.charts-sidebar .mode-selector{background:#fff;padding:12px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.charts-sidebar .mode-buttons{display:flex;flex-direction:column;gap:8px}.charts-sidebar .mode-btn{padding:6px 12px;border:1px solid #dee2e6;background:#fff;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;color:#495057;transition:all .2s;text-align:center}.charts-sidebar .mode-btn:hover{border-color:#4a4a4a;color:#2d2d2d}.charts-sidebar .mode-btn.active{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);border-color:#5b9bd5;color:#fff;box-shadow:0 3px 8px #5b9bd559}.loading-message{text-align:center;padding:40px;color:#666;font-size:18px}.stats-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:25px;margin-bottom:30px}.stat-card{background:#fff!important;padding:30px 25px!important;border-radius:16px!important;box-shadow:0 4px 20px #00000014!important;border:none!important;text-align:center!important;transition:all .3s ease!important;position:relative!important;overflow:hidden!important}.stat-card:before{content:"";position:absolute;top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,#e0e0e0,#f5f5f5)}.stat-card:hover{transform:translateY(-6px);box-shadow:0 8px 30px #0000001f}.stat-card.best:before{background:linear-gradient(135deg,#66bb6a,#4caf50)}.stat-card.average:before{background:linear-gradient(135deg,#5b9bd5,#4a7ba7)}.stat-card.total:before{background:linear-gradient(135deg,#ffa726,#fb8c00)}.stat-label{font-size:13px;color:#9e9e9e;margin-bottom:12px;text-transform:uppercase;letter-spacing:1.5px;font-weight:500}.stat-value{font-size:42px;font-weight:700;color:#333;line-height:1.2}.stat-card.best .stat-value{color:#66bb6a}.stat-card.average .stat-value{color:#5b9bd5}.stat-card.total .stat-value{color:#ffa726}.chart-container{background:#fff;padding:25px;border-radius:12px;box-shadow:0 2px 12px #5b9bd51a;border:1px solid #E3F2FD;margin-bottom:30px}.chart-container h3{margin-top:0;margin-bottom:20px;color:#333}.practice-details{background:#fff;padding:25px;border-radius:8px;box-shadow:0 2px 8px #0000001a}.practice-details h3{margin-top:0;margin-bottom:20px;color:#333}.details-table{overflow-x:auto}.details-table table{width:100%;border-collapse:collapse}.details-table thead{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff}.details-table th{padding:12px;text-align:left;font-weight:500}.details-table td{padding:10px 12px;border-bottom:1px solid #eee}.details-table tbody tr:hover{background-color:#f8f9fa}.details-table tbody tr:last-child td{border-bottom:none}.details-table .time-cell{font-weight:700;color:#ffa726}.details-table .notes-cell{color:#666;font-size:14px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mode-selector{background:#f8f9fa;padding:20px;border-radius:8px;margin-bottom:20px;box-shadow:0 2px 4px #0000001a}.mode-selector label{display:block;margin-bottom:15px;font-weight:500;color:#555;font-size:16px}.mode-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.mode-btn{padding:6px 16px;border:2px solid #dee2e6;background:#fff;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;color:#495057;transition:all .2s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mode-btn:hover{border-color:#4a4a4a;color:#2d2d2d}.mode-btn.active{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);border-color:#5b9bd5;color:#fff;box-shadow:0 3px 8px #5b9bd559}.mode-badge{display:inline-block;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600;text-transform:uppercase}.mode-badge.mode-333{background:#e3f2fd;color:#5b9bd5}.mode-badge.mode-363{background:#e8f5e9;color:#66bb6a}.mode-badge.mode-cycle{background:#fff3e0;color:#ffa726}.mode-badge.mode-doubles{background:#fce4ec;color:#ec407a}@media(max-width:768px){.charts-page{padding:15px}.charts-page h2{padding:0}.charts-layout{grid-template-columns:1fr;height:auto}.charts-sidebar{border-right:none;border-bottom:1px solid #dee2e6;padding:15px}.charts-content{padding:15px}.stats-cards{grid-template-columns:1fr}.chart-container,.practice-details{padding:15px}.stat-value{font-size:28px}.details-table{overflow-x:auto}.details-table table{min-width:600px}}@media(max-width:480px){.stat-value{font-size:24px}.details-table th,.details-table td{padding:8px;font-size:14px}}.athlete-comparison-advanced-page{padding:20px;max-width:1600px;margin:0 auto}.athlete-comparison-advanced-page h2{margin-bottom:20px;color:#1f2937}.comparison-layout{display:grid;grid-template-columns:320px 1fr;gap:20px;min-height:calc(100vh - 200px)}.comparison-sidebar{display:flex;flex-direction:column;gap:20px;position:relative;transition:all .3s ease}.comparison-sidebar.collapsed{width:80px;min-width:80px}.sidebar-toggle-btn{position:sticky;top:0;z-index:10;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;border-radius:12px;padding:12px 16px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:.95rem;box-shadow:0 2px 4px #0000001a;transition:all .2s;margin-bottom:10px}.sidebar-toggle-btn:hover{background:linear-gradient(135deg,#4a7ba7,#5b9bd5);box-shadow:0 4px 8px #00000026;transform:translateY(-1px)}.sidebar-toggle-btn:active{transform:translateY(0)}.toggle-icon{font-size:1rem;transition:transform .3s}.comparison-sidebar.collapsed .toggle-icon{transform:rotate(0)}.collapsed-summary{background:#fff;border-radius:12px;padding:15px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;gap:10px;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.summary-title{font-weight:600;font-size:.9rem;color:#1f2937;text-align:center}.summary-athletes{display:flex;flex-direction:column;gap:6px}.summary-athlete-badge{background:#eff6ff;border:1px solid #5B9BD5;border-radius:6px;padding:6px 10px;font-size:.85rem;color:#1f2937;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary-athlete-badge.more{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;font-weight:600}.summary-mode{font-size:.85rem;color:#6b7280;text-align:center;padding-top:6px;border-top:1px solid #e5e7eb}.athlete-selector-panel.hidden,.mode-selector-panel.hidden{display:none}.athlete-selector-panel,.mode-selector-panel{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 3px #0000001a}.selector-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.selector-header h3{margin:0;font-size:1.1rem;color:#1f2937}.selector-count{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;padding:4px 12px;border-radius:20px;font-size:.85rem;font-weight:600}.selector-actions{display:flex;gap:8px;margin-bottom:15px}.btn-secondary-small{flex:1;padding:6px 12px;background:#fff;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem;cursor:pointer;transition:all .2s}.btn-secondary-small:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.btn-secondary-small:disabled{opacity:.5;cursor:not-allowed}.athletes-grid{display:flex;flex-direction:column;gap:10px;max-height:400px;overflow-y:auto;padding-right:5px}.athletes-grid::-webkit-scrollbar{width:6px}.athletes-grid::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px}.athletes-grid::-webkit-scrollbar-thumb{background:#888;border-radius:10px}.athlete-card{display:flex;align-items:center;gap:10px;padding:12px;border:2px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:all .2s;background:#fff}.athlete-card:hover{border-color:#5b9bd5;background:#f8fafc}.athlete-card.selected{border-color:#5b9bd5;background:#eff6ff;box-shadow:0 2px 4px #5b9bd533}.athlete-card input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:#5B9BD5}.athlete-card-content{display:flex;align-items:center;gap:12px;flex:1}.athlete-thumb{width:50px;height:50px;border-radius:50%;object-fit:cover}.no-photo-thumb{width:50px;height:50px;border-radius:50%;background:#e5e7eb;display:flex;align-items:center;justify-content:center;font-size:.7rem;color:#6b7280}.athlete-info{flex:1}.athlete-name{font-weight:600;color:#1f2937;margin-bottom:2px}.athlete-age{font-size:.875rem;color:#6b7280}.mode-selector-panel h3{margin:0 0 15px;font-size:1.1rem;color:#1f2937}.mode-buttons{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.mode-btn{padding:10px 16px;background:#fff;border:2px solid #e5e7eb;border-radius:8px;cursor:pointer;font-size:.9rem;font-weight:500;transition:all .2s;color:#4b5563}.mode-btn:hover{border-color:#5b9bd5;background:#f8fafc}.mode-btn.active{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);border-color:#4a7ba7;color:#fff}.comparison-content{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;overflow:hidden;display:flex;flex-direction:column}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:400px;color:#6b7280;padding:40px}.empty-state p{margin:10px 0;font-size:1.1rem;text-align:center}.empty-state .hint{font-size:.95rem;color:#9ca3af}.chart-tabs{display:flex;gap:8px;padding:15px 20px;background:#f9fafb;border-bottom:2px solid #e5e7eb;overflow-x:auto;-webkit-overflow-scrolling:touch}.chart-tabs::-webkit-scrollbar{height:6px}.chart-tabs::-webkit-scrollbar-track{background:#f1f1f1}.chart-tabs::-webkit-scrollbar-thumb{background:#888;border-radius:10px}.chart-tab{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 16px;background:#fff;border:2px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:all .2s;white-space:nowrap;min-width:80px}.chart-tab:hover{border-color:#5b9bd5;background:#f8fafc}.chart-tab.active{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);border-color:#4a7ba7;color:#fff}.chart-tab .tab-icon{font-size:1.2rem}.chart-tab .tab-label{font-size:.85rem;font-weight:500}.chart-content{padding:30px;overflow-y:auto;flex:1}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:15px;margin-bottom:30px}.athlete-stat-card{background:#f9fafb;border-left:4px solid #5B9BD5;border-radius:8px;padding:16px}.athlete-stat-card h4{margin:0 0 12px;font-size:1.1rem}.stat-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding:4px 0}.stat-row .stat-label{font-size:.875rem;color:#6b7280}.stat-row .stat-value{font-size:.95rem;font-weight:600;color:#1f2937}.chart-section{margin-bottom:40px}.chart-section h3{margin:0 0 10px;font-size:1.3rem;color:#1f2937;padding-bottom:10px;border-bottom:2px solid #e5e7eb}.chart-desc{color:#6b7280;font-size:.95rem;margin-bottom:20px}.chart-subsection{margin-top:30px}.chart-subsection h4{margin:0 0 15px;font-size:1.1rem;color:#374151}.chart-legend-info{background:#f9fafb;border-left:4px solid #5B9BD5;border-radius:8px;padding:15px 20px;margin-top:20px}.chart-legend-info h4{margin:0 0 10px;font-size:1rem;color:#1f2937}.chart-legend-info ul{margin:0;padding-left:20px}.chart-legend-info li{margin-bottom:8px;color:#4b5563;line-height:1.5}.chart-legend-info p{margin:8px 0;color:#4b5563}.box-plot-container{margin:20px 0}.box-plot-item{margin-bottom:30px}.box-plot-item .athlete-name{font-weight:600;font-size:1rem;margin-bottom:10px;color:#1f2937}.box-visual{position:relative;height:60px;margin-bottom:10px}.box-range{position:relative;height:100%;border-radius:8px;border:1px solid #e5e7eb}.box-marker{position:absolute;top:50%;transform:translate(-50%,-50%);width:2px;height:80%;background:#4b5563}.box-marker.median{width:3px;height:100%;background:currentColor;border:2px solid;z-index:2}.box-marker span{position:absolute;top:-25px;left:50%;transform:translate(-50%);font-size:.75rem;color:#4b5563;white-space:nowrap;font-weight:500}.box-stats{display:flex;gap:20px;font-size:.875rem;color:#6b7280}.progress-details{margin-top:30px}.progress-details h4{margin:0 0 15px;font-size:1.1rem;color:#1f2937}.progress-details table{width:100%;border-collapse:collapse;font-size:.95rem}.progress-details thead{background:#f9fafb}.progress-details th{padding:12px;text-align:left;font-weight:600;color:#374151;border-bottom:2px solid #e5e7eb}.progress-details td{padding:12px;border-bottom:1px solid #e5e7eb}.progress-details td.positive{color:#059669;font-weight:600}.progress-details td.negative{color:#dc2626;font-weight:600}.custom-tooltip{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:12px;box-shadow:0 4px 6px #0000001a}.custom-tooltip .label{font-weight:600;margin-bottom:8px;color:#1f2937}.custom-tooltip p{margin:4px 0;font-size:.875rem;color:#4b5563}.heatmap-container{overflow-x:auto;margin:20px 0;-webkit-overflow-scrolling:touch}.heatmap-grid{min-width:600px}.heatmap-row{display:grid;grid-template-columns:120px repeat(7,1fr);gap:4px;margin-bottom:4px}.heatmap-row.header{font-weight:600;color:#374151}.heatmap-cell{padding:12px;text-align:center;border-radius:4px;font-size:.875rem}.heatmap-cell.athlete-label{font-weight:600;text-align:right;padding-right:15px}.heatmap-cell.data-cell{border:1px solid #e5e7eb;display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:70px}.time-value{font-weight:600;font-size:.95rem;color:#1f2937}.count-value{font-size:.75rem;color:#6b7280;margin-top:2px}.no-data{color:#9ca3af}.distribution-summary{margin-top:30px}.distribution-summary h4{margin:0 0 15px;font-size:1.1rem;color:#1f2937}.distribution-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px}.athlete-distribution{background:#f9fafb;border:2px solid #e5e7eb;border-radius:8px;padding:15px}.athlete-distribution h5{margin:0 0 12px;font-size:1rem}.grade-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding:6px 0;border-bottom:1px solid #e5e7eb}.grade-row:last-child{border-bottom:none}.grade-name{font-weight:500;color:#4b5563}.grade-count{font-weight:600;color:#1f2937}.grade-percentage{color:#6b7280;font-size:.875rem}.multimode-notice{background:#eff6ff;border:2px solid #5B9BD5;border-radius:8px;padding:20px;margin-bottom:30px;text-align:center}.multimode-notice p{margin:8px 0;color:#1f2937}.loading-message,.empty-message{text-align:center;padding:60px 20px;color:#6b7280;font-size:1.1rem}@media(max-width:1024px){.comparison-layout{grid-template-columns:1fr}.comparison-sidebar{flex-direction:row;overflow-x:auto;-webkit-overflow-scrolling:touch}.athlete-selector-panel,.mode-selector-panel{min-width:300px}.stats-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.chart-tabs{padding:10px 15px}}@media(max-width:768px){.athlete-comparison-advanced-page{padding:15px}.athlete-comparison-advanced-page h2{font-size:1.3rem;margin-bottom:15px}.comparison-layout{gap:15px;grid-template-columns:1fr}.comparison-sidebar{flex-direction:column}.comparison-sidebar.collapsed{width:100%;min-width:100%}.sidebar-toggle-btn{width:100%;padding:14px 16px;font-size:1rem}.toggle-text{font-size:1rem}.collapsed-summary{padding:12px}.summary-athletes{flex-direction:row;flex-wrap:wrap;gap:6px}.summary-athlete-badge{flex:0 0 auto;max-width:calc(50% - 3px)}.athlete-selector-panel,.mode-selector-panel{padding:15px;min-width:auto}.selector-header h3,.mode-selector-panel h3{font-size:1rem}.athletes-grid{max-height:250px}.athlete-card{padding:10px}.athlete-thumb,.no-photo-thumb{width:40px;height:40px}.mode-buttons{grid-template-columns:repeat(2,1fr);gap:6px}.mode-btn{padding:8px 12px;font-size:.85rem}.chart-tabs{padding:10px;gap:6px}.chart-tab{min-width:70px;padding:8px 12px}.chart-tab .tab-icon{font-size:1rem}.chart-tab .tab-label{font-size:.75rem}.chart-content{padding:20px 15px}.chart-section h3{font-size:1.1rem}.chart-desc{font-size:.875rem}.stats-grid{grid-template-columns:1fr;gap:12px}.athlete-stat-card{padding:12px}.athlete-stat-card h4{font-size:1rem}.chart-section .recharts-responsive-container{min-height:300px!important}.box-plot-item{margin-bottom:25px}.box-marker span{font-size:.7rem}.progress-details table{font-size:.85rem}.progress-details th,.progress-details td{padding:8px}.heatmap-row{grid-template-columns:80px repeat(7,1fr);gap:2px}.heatmap-cell{padding:8px 4px;font-size:.75rem}.heatmap-cell.data-cell{min-height:60px}.time-value{font-size:.8rem}.count-value{font-size:.7rem}.distribution-grid{grid-template-columns:1fr}}@media(max-width:480px){.athlete-comparison-advanced-page{padding:10px}.athlete-comparison-advanced-page h2{font-size:1.2rem}.sidebar-toggle-btn{padding:12px 14px;font-size:.95rem}.collapsed-summary{padding:10px}.summary-title{font-size:.85rem}.summary-athlete-badge{font-size:.8rem;padding:5px 8px}.summary-mode{font-size:.8rem}.selector-count{font-size:.75rem;padding:3px 10px}.btn-secondary-small{font-size:.8rem;padding:5px 10px}.chart-tab{min-width:60px;padding:6px 8px;flex-direction:row;gap:4px}.chart-tab .tab-icon{font-size:.9rem}.chart-tab .tab-label{display:none}.chart-content{padding:15px 10px}.athlete-stat-card{padding:10px}.stat-row{font-size:.875rem}.chart-legend-info{padding:12px 15px;font-size:.875rem}.chart-legend-info li{font-size:.85rem}.heatmap-row{grid-template-columns:60px repeat(7,1fr)}.heatmap-cell.athlete-label{font-size:.75rem;padding-right:5px}.progress-details{overflow-x:auto;-webkit-overflow-scrolling:touch}.progress-details table{min-width:500px}}@media(max-width:768px)and (orientation:landscape){.comparison-sidebar{flex-direction:row;overflow-x:auto}.athlete-selector-panel,.mode-selector-panel{min-width:250px}.athletes-grid{max-height:200px}}@media(hover:none)and (pointer:coarse){.chart-tab,.mode-btn,.btn-secondary-small{min-height:44px}.athlete-card{min-height:60px}.chart-tabs::-webkit-scrollbar,.athletes-grid::-webkit-scrollbar,.heatmap-container::-webkit-scrollbar{display:none}}@media print{.comparison-sidebar,.chart-tabs{display:none}.comparison-layout{grid-template-columns:1fr}.chart-content{padding:0}.chart-section{page-break-inside:avoid}}.competitors-page{padding:20px;max-width:1400px;margin:0 auto}.competitors-page>h2{margin-top:0;margin-bottom:20px;color:#333}.mode-selector{margin-bottom:20px;background:#f8f9fa;padding:15px;border-radius:8px}.mode-selector label{display:block;margin-bottom:10px;font-weight:600;color:#495057}.filter-section{margin-bottom:20px;background:#f8f9fa;padding:20px;border-radius:8px;display:flex;gap:30px;align-items:flex-start}.filter-group{flex:1}.filter-group label{display:block;margin-bottom:10px;font-weight:600;color:#495057;font-size:14px}.competition-select{width:100%;padding:10px;border:1px solid #ced4da;border-radius:4px;font-size:14px;background:#fff;cursor:pointer}.competition-select:focus{outline:none;border-color:#5b9bd5;box-shadow:0 0 0 3px #5b9bd51a}.mode-btn:hover{border-color:#5b9bd5;background:#e3f2fd}.competitor-form{background:#fff;padding:15px;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px}.competitor-form h3{margin-top:0;margin-bottom:12px;color:#333;font-size:16px}.form-row{display:grid;grid-template-columns:1fr;gap:12px;margin-bottom:10px}.form-row-compact{grid-template-columns:2fr 2fr 1fr}.form-row-tight{grid-template-columns:1fr 1fr 1fr;margin-bottom:10px}.form-group{display:flex;flex-direction:column}.form-group label{margin-bottom:4px;font-weight:500;color:#495057;font-size:13px}.form-group input,.form-group select{padding:8px;border:1px solid #ced4da;border-radius:4px;font-size:14px}.form-group input:focus,.form-group select:focus{outline:none;border-color:#5b9bd5;box-shadow:0 0 0 3px #007bff1a}.form-group select{background:#fff;cursor:pointer}.time-input-wrapper{position:relative}.time-preview{margin-top:5px;padding:6px 8px;background:#e7f1ff;border-radius:4px;display:flex;align-items:center;gap:6px}.preview-label{font-size:11px;color:#495057}.preview-value{font-size:13px;font-weight:600;color:#5b9bd5}.time-hint{display:block;margin-top:4px;font-size:11px;color:#6c757d}.btn-primary{padding:8px 18px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;margin-top:8px;transition:background .2s}.btn-primary:hover{background:#0056b3}.btn-primary:disabled{background:#6c757d;cursor:not-allowed}.competitors-list{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.competitors-list h3{margin-top:0;margin-bottom:20px;color:#333}.empty-message{text-align:center;color:#6c757d;padding:40px;font-size:14px}.competitors-table{overflow-x:auto}.competitors-table table{width:100%;border-collapse:collapse}.competitors-table th,.competitors-table td{padding:12px;text-align:left;border-bottom:1px solid #dee2e6}.competitors-table th{background:#f8f9fa;font-weight:600;color:#495057;font-size:13px}.competitors-table td{font-size:14px;color:#212529}.competitors-table tbody tr:hover{background:#f8f9fa}.name-cell{font-weight:500}.mode-cell{text-align:center}.mode-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500}.mode-badge.mode-333{background:#d1ecf1;color:#0c5460}.mode-badge.mode-363{background:#d4edda;color:#155724}.mode-badge.mode-cycle{background:#fff3cd;color:#856404}.mode-badge.mode-doubles{background:#f8d7da;color:#721c24}.time-cell{font-weight:600;color:#5b9bd5}.btn-delete-small{padding:6px 12px;background:linear-gradient(135deg,#ef5350,#e53935);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:background .2s}.btn-delete-small:hover{background:#c82333}.excel-import-section{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:30px}.excel-import-section h3{margin-top:0;margin-bottom:15px;color:#333}.import-actions{display:flex;gap:15px;margin-bottom:10px}.btn-download-template{padding:10px 20px;background:linear-gradient(135deg,#66bb6a,#4caf50);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;transition:background .2s}.btn-download-template:hover{background:#218838}.btn-upload-excel{padding:10px 20px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;transition:background .2s;display:inline-block}.btn-upload-excel:hover{background:#0056b3}.import-hint{margin:0;font-size:13px;color:#6c757d}.excel-preview{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:30px;border:2px solid #5B9BD5}.excel-preview h3{margin-top:0;margin-bottom:15px;color:#5b9bd5}.preview-table-wrapper{overflow-x:auto;max-height:400px;overflow-y:auto;margin-bottom:20px;border:1px solid #dee2e6;border-radius:4px}.preview-table{width:100%;border-collapse:collapse;background:#fff}.preview-table th,.preview-table td{padding:10px;text-align:left;border-bottom:1px solid #dee2e6}.preview-table th{background:#f8f9fa;font-weight:600;color:#495057;font-size:13px;position:sticky;top:0;z-index:10}.preview-table td{font-size:14px;color:#212529}.preview-table tbody tr:hover{background:#f8f9fa}.preview-actions{display:flex;gap:15px;justify-content:flex-end}.btn-confirm-import{padding:12px 24px;background:linear-gradient(135deg,#66bb6a,#4caf50);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:600;transition:background .2s}.btn-confirm-import:hover:not(:disabled){background:#218838}.btn-confirm-import:disabled{background:#6c757d;cursor:not-allowed}.btn-cancel-import{padding:12px 24px;background:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;transition:background .2s}.btn-cancel-import:hover:not(:disabled){background:#5a6268}.btn-cancel-import:disabled{opacity:.5;cursor:not-allowed}@media(max-width:1024px){.filter-section{flex-direction:column;gap:15px}}@media(max-width:768px){.competitors-page{padding:10px}.filter-section{padding:15px}.form-row{grid-template-columns:1fr}.mode-buttons{flex-direction:column}.mode-btn{width:100%}.competitors-table{font-size:12px}.competitors-table th,.competitors-table td{padding:8px}.import-actions,.preview-actions{flex-direction:column}.btn-confirm-import,.btn-cancel-import{width:100%}}.ranking-page{padding:20px;max-width:1600px;margin:0 auto}.ranking-page>h2{margin-top:0;margin-bottom:20px;color:#333}.ranking-controls{background:#f8f9fa;padding:20px;border-radius:8px;margin-bottom:30px;display:flex;flex-direction:column;gap:20px}.control-row{display:flex;gap:30px;align-items:flex-start}.control-group{flex:1}.control-group label{display:block;margin-bottom:10px;font-weight:600;color:#495057;font-size:14px}.control-group select{width:100%;padding:10px;border:1px solid #ced4da;border-radius:4px;font-size:14px;background:#fff}.control-group select:focus{outline:none;border-color:#4a4a4a;box-shadow:0 0 0 3px #4a4a4a1a}.mode-buttons{display:flex;gap:10px;flex-wrap:wrap}.mode-btn{padding:4px 12px;border:2px solid #dee2e6;background:#fff;border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s}.mode-btn:hover{border-color:#4a4a4a;background:#f0f0f0}.mode-btn.active{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border-color:#5b9bd5;box-shadow:0 3px 8px #5b9bd54d}.loading-message{text-align:center;padding:40px;color:#6c757d;font-size:16px}.ranking-content{background:#fff;border-radius:16px;box-shadow:0 4px 20px #00000014;border:none;overflow:hidden}.ranking-header{padding:30px;background:linear-gradient(135deg,#f8fafb,#e3f2fd);border-bottom:3px solid #5B9BD5}.ranking-header h3{margin:0 0 20px;font-size:24px;color:#333;font-weight:600}.ranking-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:20px}.stat-item{background:#fff;padding:20px;border-radius:12px;box-shadow:0 2px 12px #5b9bd51a;border:1px solid #E3F2FD;display:flex;flex-direction:column;gap:8px;transition:all .3s ease}.stat-item:hover{transform:translateY(-3px);box-shadow:0 4px 16px #5b9bd526}.stat-label{font-size:12px;color:#9e9e9e;text-transform:uppercase;letter-spacing:1px;font-weight:500}.stat-value{font-size:28px;font-weight:700;color:#5b9bd5}.rank-highlight{color:#ffa726}.time-highlight{color:#66bb6a}.ranking-table-wrapper{overflow-x:auto;padding:20px}.ranking-table{width:100%;border-collapse:collapse}.ranking-table th,.ranking-table td{padding:14px 12px;text-align:left;border-bottom:1px solid #dee2e6}.ranking-table th{background:#f8f9fa;font-weight:600;color:#495057;font-size:13px;position:sticky;top:0}.ranking-table td{font-size:14px;color:#212529}.ranking-table tbody tr{transition:background .2s}.ranking-table tbody tr:hover{background:#f8f9fa}.ranking-table tbody tr.current-athlete{background:#e5e5e5;font-weight:500}.ranking-table tbody tr.current-athlete:hover{background:#d0d0d0}.rank-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:13px;font-weight:600;background:#e9ecef;color:#495057;min-width:35px;text-align:center}.rank-badge.rank-gold{background:linear-gradient(135deg,gold,orange);color:#fff;box-shadow:0 3px 8px #ffd70066}.rank-badge.rank-silver{background:linear-gradient(135deg,silver,#a8a8a8);color:#fff;box-shadow:0 3px 8px #c0c0c066}.rank-badge.rank-bronze{background:linear-gradient(135deg,#cd7f32,#b8733e);color:#fff;box-shadow:0 3px 8px #cd7f3266}.name-cell{font-weight:500;display:flex;align-items:center;gap:8px}.athlete-tag{display:inline-block;padding:4px 10px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border-radius:6px;font-size:11px;font-weight:600;box-shadow:0 2px 4px #5b9bd54d}.time-cell{font-weight:700;color:#ffa726;font-size:16px}.diff-cell{color:#6c757d;font-size:13px}.grade-cell{text-align:center}.grade-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500;background:#e9ecef;color:#495057}.empty-message{text-align:center;color:#6c757d;padding:60px 20px;font-size:15px}@media(max-width:1024px){.control-row{flex-direction:column}}@media(max-width:768px){.ranking-page{padding:10px}.ranking-controls{padding:15px;gap:15px}.control-row{gap:15px}.ranking-stats{flex-direction:column;gap:15px}.mode-buttons{flex-direction:column}.mode-btn{width:100%}.ranking-table-wrapper{padding:10px}.ranking-table{font-size:12px}.ranking-table th,.ranking-table td{padding:10px 8px}.name-cell{flex-direction:column;align-items:flex-start}}.schedule-page{padding:20px;max-width:1400px;margin:0 auto}.schedule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.schedule-header h1{font-size:28px;color:#333;margin:0}.deadline-alerts{background:linear-gradient(135deg,#fff5e6,#ffe0b2);border-left:4px solid #ff9800;padding:20px;margin-bottom:30px;border-radius:8px;box-shadow:0 2px 8px #ff980026}.deadline-alerts h3{margin-top:0;color:#e65100;font-size:18px;margin-bottom:15px}.alert-item{display:flex;align-items:center;gap:12px;padding:12px;background:#fff;border-radius:6px;margin-bottom:10px;transition:all .2s}.alert-item:last-child{margin-bottom:0}.alert-item:hover{box-shadow:0 2px 6px #0000001a}.alert-icon{font-size:24px}.alert-text{flex:1;color:#333;line-height:1.5}.alert-text strong{color:#e65100}.schedule-content{display:grid;grid-template-columns:2fr 1fr;gap:30px}.right-section{display:flex;flex-direction:column;gap:20px}@media(max-width:1024px){.schedule-content{grid-template-columns:1fr}}.calendar-section{background:#fff;border-radius:12px;padding:24px;box-shadow:0 2px 12px #00000014}.calendar-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:12px}.calendar-controls h2{margin:0;font-size:22px;color:#333;flex:1;text-align:center}.calendar-controls button{padding:8px 16px;background:#2196f3;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s}.calendar-controls button:hover{background:#1976d2;transform:translateY(-1px)}.btn-today{background:#4caf50!important}.btn-today:hover{background:#45a049!important}.calendar{border:1px solid #e0e0e0;border-radius:8px;overflow:hidden}.calendar-header{display:grid;grid-template-columns:repeat(7,1fr);background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff}.day-name{padding:12px;text-align:center;font-weight:600;font-size:14px}.calendar-body{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:#e0e0e0}.calendar-day{background:#fff;min-height:100px;padding:8px;position:relative;cursor:pointer;transition:background-color .2s}.calendar-day:hover{background-color:#f5f5f5}.calendar-day.empty{background:#fafafa;cursor:default}.calendar-day.today{background:#e3f2fd;border:2px solid #2196F3}.day-number{font-size:14px;font-weight:600;color:#333;margin-bottom:4px}.day-events{display:flex;flex-direction:column;gap:4px}.event-dot{font-size:11px;padding:4px 6px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .2s}.event-dot:hover{transform:scale(1.05);box-shadow:0 2px 6px #5b9bd566}.upcoming-section{background:#fff;border-radius:12px;padding:24px;box-shadow:0 2px 12px #00000014}.upcoming-section h3{margin-top:0;margin-bottom:20px;color:#333;font-size:20px;border-bottom:2px solid #2196F3;padding-bottom:10px}.no-data{text-align:center;color:#999;padding:40px 20px}.schedule-list{display:flex;flex-direction:column;gap:16px}.schedule-item{padding:16px;border:1px solid #e0e0e0;border-radius:8px;transition:all .2s}.schedule-item:hover{box-shadow:0 4px 12px #0000001a;border-color:#2196f3}.schedule-item h4{margin:0 0 12px;color:#333;font-size:16px}.schedule-item p{margin:6px 0;color:#666;font-size:14px;line-height:1.6}.schedule-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.btn-add,.btn-submit{padding:10px 20px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;transition:all .3s}.btn-add:hover,.btn-submit:hover{transform:translateY(-2px);box-shadow:0 4px 12px #5b9bd566}.btn-view,.btn-link{padding:6px 14px;background:#2196f3;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:all .2s}.btn-view:hover,.btn-link:hover{background:#1976d2}.btn-edit{padding:6px 14px;background:#4caf50;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:all .2s}.btn-edit:hover{background:#45a049}.btn-delete{padding:6px 14px;background:#f44336;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:all .2s}.btn-delete:hover{background:#d32f2f}.btn-cancel{padding:10px 20px;background:#9e9e9e;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s}.btn-cancel:hover{background:#757575}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;justify-content:center;align-items:center;z-index:1000;padding:20px}.modal-content{background:#fff;border-radius:12px;padding:30px;max-width:800px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #0003;position:relative}.modal-content.modal-news{max-width:1000px}.modal-content h2{margin-top:0;margin-bottom:24px;color:#333;font-size:24px;border-bottom:2px solid #2196F3;padding-bottom:12px}.close-btn{position:absolute;top:15px;right:15px;background:none;border:none;font-size:32px;color:#999;cursor:pointer;line-height:1;transition:color .2s}.close-btn:hover{color:#333}.form-row{display:grid;grid-template-columns:1fr;gap:16px;margin-bottom:20px}.form-row-two-cols,.form-row-full{grid-template-columns:1fr}.form-row-four-cols{grid-template-columns:repeat(4,1fr)}@media(max-width:768px){.form-row-four-cols{grid-template-columns:1fr}}.form-row>label{display:flex;flex-direction:column;font-size:14px;font-weight:600;color:#555;width:100%}.form-row input,.form-row textarea,.form-row select{margin-top:6px;padding:10px;border:1px solid #ddd;border-radius:6px;font-size:14px;transition:all .2s;width:100%;box-sizing:border-box}.form-row input:focus,.form-row textarea:focus,.form-row select:focus{outline:none;border-color:#2196f3;box-shadow:0 0 0 3px #2196f31a}.form-row textarea{resize:vertical;font-family:inherit;min-height:150px;line-height:1.6}.required{color:#f44336}.checkbox-group{display:flex!important;flex-direction:row!important;flex-wrap:wrap;gap:16px;margin-top:8px;align-items:center}.checkbox-label{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:6px;font-weight:400;cursor:pointer;white-space:nowrap;margin-right:16px}.checkbox-label input[type=checkbox]{margin:0 6px 0 0;cursor:pointer;width:16px;height:16px}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:30px;padding-top:20px;border-top:1px solid #e0e0e0}.detail-modal{max-width:700px}.detail-section{margin-bottom:24px}.detail-section h3{margin-top:0;margin-bottom:12px;color:#2196f3;font-size:18px;border-bottom:1px solid #e0e0e0;padding-bottom:8px}.detail-section p{margin:8px 0;color:#666;line-height:1.8}.detail-section a{color:#2196f3;text-decoration:none;transition:color .2s}.detail-section a:hover{color:#1976d2;text-decoration:underline}.detail-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px;padding-top:20px;border-top:1px solid #e0e0e0}.news-section{background:#fff;border-radius:12px;padding:24px;box-shadow:0 2px 12px #00000014}.news-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;border-bottom:2px solid #2196F3;padding-bottom:10px}.news-header h3{margin:0;color:#333;font-size:20px}.btn-add-small{padding:6px 12px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:12px;font-weight:600;transition:all .2s}.btn-add-small:hover{transform:translateY(-1px);box-shadow:0 2px 8px #5b9bd566}.news-list{display:flex;flex-direction:column;gap:12px}.news-item{padding:14px;border:1px solid #e0e0e0;border-radius:8px;transition:all .2s;background:#fafafa}.news-item:hover{box-shadow:0 3px 10px #0000001a;border-color:#2196f3;background:#fff}.news-header-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.news-type-badge{display:inline-block;padding:3px 10px;border-radius:12px;color:#fff;font-size:11px;font-weight:600}.news-type-badge-large{display:inline-block;padding:6px 16px;border-radius:16px;color:#fff;font-size:13px;font-weight:600;margin-bottom:12px}.news-date{font-size:12px;color:#999}.news-title{margin:8px 0;font-size:15px;color:#333;cursor:pointer;transition:color .2s}.news-title:hover{color:#2196f3}.news-content-preview{font-size:13px;color:#666;line-height:1.5;margin:8px 0}.news-actions{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}.btn-view-small,.btn-edit-small,.btn-delete-small{padding:4px 10px;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:all .2s;color:#fff}.btn-view-small{background:#2196f3}.btn-view-small:hover{background:#1976d2}.btn-edit-small{background:#4caf50}.btn-edit-small:hover{background:#45a049}.btn-delete-small{background:#f44336}.btn-delete-small:hover{background:#d32f2f}.news-detail-header{text-align:center;margin-bottom:24px}.news-detail-header h2{margin:12px 0}.news-detail-date{color:#999;font-size:14px;margin:8px 0}.news-detail-content{line-height:1.8;white-space:pre-wrap;word-wrap:break-word}.news-count{font-size:14px;color:#999;font-weight:400;margin-left:6px}.pagination{display:flex;justify-content:center;align-items:center;gap:6px;margin-top:16px;padding-top:12px;border-top:1px solid #e0e0e0}.pagination-btn{padding:4px 10px;background:#fff;color:#2196f3;border:1px solid #2196F3;border-radius:3px;cursor:pointer;font-size:12px;transition:all .2s}.pagination-btn:hover:not(:disabled){background:#2196f3;color:#fff}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-pages{display:flex;gap:3px}.pagination-page{min-width:26px;height:26px;padding:4px 6px;background:#fff;color:#666;border:1px solid #ddd;border-radius:3px;cursor:pointer;font-size:12px;transition:all .2s;display:flex;align-items:center;justify-content:center}.pagination-page:hover{background:#f0f0f0;border-color:#2196f3;color:#2196f3}.pagination-page.active{background:#2196f3;color:#fff;border-color:#2196f3;font-weight:600}.pagination-page.active:hover{background:#1976d2;border-color:#1976d2}.news-content-textarea{min-height:350px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;line-height:1.8;padding:14px;border:1px solid #ddd;border-radius:6px;transition:all .2s;resize:vertical;width:100%;box-sizing:border-box}.news-content-textarea:focus{outline:none;border-color:#2196f3;box-shadow:0 0 0 3px #2196f31a}.news-content-textarea::placeholder{color:#999;font-size:13px;line-height:1.6}.news-detail-content h1,.news-detail-content h2,.news-detail-content h3{margin-top:16px;margin-bottom:12px;color:#333}.news-detail-content h1{font-size:24px}.news-detail-content h2{font-size:20px}.news-detail-content h3{font-size:18px}.news-detail-content p{margin:8px 0;line-height:1.8}.news-detail-content ul,.news-detail-content ol{margin:12px 0;padding-left:24px}.news-detail-content li{margin:4px 0;line-height:1.6}.news-detail-content a{color:#2196f3;text-decoration:none}.news-detail-content a:hover{text-decoration:underline}.news-detail-content strong{font-weight:600}.news-detail-content em{font-style:italic}.news-detail-content u{text-decoration:underline}.news-detail-content s{text-decoration:line-through}@media(max-width:768px){.schedule-page{padding:10px}.schedule-header{flex-direction:column;align-items:flex-start;gap:12px}.calendar-controls{flex-wrap:wrap}.calendar-controls h2{width:100%;order:-1}.calendar-day{min-height:80px;padding:4px}.day-number{font-size:12px}.event-dot{font-size:10px;padding:2px 4px}.modal-content{padding:20px;max-width:100%}.form-row,.form-row-two-cols{grid-template-columns:1fr}.schedule-actions,.detail-actions{flex-direction:column}.schedule-actions button,.detail-actions button{width:100%}.news-actions{flex-direction:column}.news-actions button{width:100%}.pagination{flex-wrap:wrap}.pagination-pages{order:3;width:100%;justify-content:center;margin-top:8px}}.login-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#e3f2fd,#f8fafb);padding:20px}.login-box{background:#fff;padding:40px;border-radius:12px;box-shadow:0 4px 20px #5b9bd526;border:none;width:100%;max-width:400px}.login-box h1{color:#5b9bd5;font-size:28px;margin-bottom:10px;text-align:center;font-weight:600}.login-box h2{color:#333;font-size:20px;margin-bottom:30px;text-align:center}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;color:#333;font-weight:500}.form-group input{width:100%;padding:12px;border:1px solid #ddd;border-radius:5px;font-size:16px;transition:border-color .3s;box-sizing:border-box}.form-group input:focus{outline:none;border-color:#5b9bd5;box-shadow:0 0 0 3px #5b9bd51a}.form-group input:disabled{background-color:#f8fafb;cursor:not-allowed}.btn-primary{width:100%;padding:14px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 12px #5b9bd54d}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px #5b9bd566}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.error-message{background-color:#fee;border:1px solid #fcc;color:#c33;padding:12px;border-radius:5px;margin-bottom:20px;text-align:center}.login-footer{margin-top:20px;text-align:center;color:#666}.login-footer a{color:#5b9bd5;text-decoration:none;font-weight:600;margin-left:5px}.login-footer a:hover{text-decoration:underline}.system-admin-container{padding:20px;max-width:1400px;margin:0 auto}.admin-header{margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #E5E5E5;display:flex;justify-content:space-between;align-items:center}.admin-header h1{color:#333;margin:0 0 10px;font-size:28px}.admin-header p{color:#666;margin:0;font-size:16px}.btn-add-user{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;padding:12px 24px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s;box-shadow:0 3px 10px #5b9bd54d}.btn-add-user:hover{transform:translateY(-2px);box-shadow:0 5px 14px #5b9bd566}.error-message{background-color:#fee;border:1px solid #fcc;color:#c33;padding:12px;border-radius:5px;margin-bottom:20px}.users-table-container{overflow-x:auto;background:#fff;border-radius:12px;box-shadow:0 2px 12px #5b9bd51a;border:1px solid #E3F2FD}.users-table{width:100%;border-collapse:collapse;min-width:1200px}.users-table thead{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff}.users-table th{padding:15px 10px;text-align:left;font-weight:600;font-size:14px;white-space:nowrap}.users-table td{padding:12px 10px;border-bottom:1px solid #eee;font-size:14px}.users-table tbody tr:hover{background-color:#f8f9fa}.users-table tbody tr:last-child td{border-bottom:none}.role-admin{background-color:#f0f0f0;color:#333;font-weight:600;padding:5px 10px;border:1px solid #ccc;border-radius:4px;cursor:pointer}.role-user{background-color:#f0f0f0;color:#333;padding:5px 10px;border:1px solid #ccc;border-radius:4px;cursor:pointer}.role-athlete{background-color:#f0f0f0;color:#333;font-weight:600;padding:5px 10px;border:1px solid #ccc;border-radius:4px;cursor:pointer}.action-buttons{display:flex;gap:8px;flex-wrap:wrap}.action-buttons button{padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}.btn-reset{background:linear-gradient(135deg,#ffa726,#fb8c00);color:#fff;box-shadow:0 2px 6px #ffa7264d}.btn-reset:hover{transform:translateY(-1px);box-shadow:0 4px 10px #ffa72666}.btn-delete{background-color:#6c757d;color:#fff}.btn-delete:hover{background-color:#5a6268}.password-reset-form{display:flex;gap:5px;align-items:center}.password-reset-form input{padding:6px 10px;border:1px solid #ccc;border-radius:4px;font-size:13px;width:150px}.btn-confirm{background:linear-gradient(135deg,#66bb6a,#4caf50);color:#fff;box-shadow:0 2px 6px #66bb6a4d}.btn-confirm:hover{transform:translateY(-1px);box-shadow:0 4px 10px #66bb6a66}.btn-cancel{background-color:#6c757d;color:#fff}.btn-cancel:hover{background-color:#5a6268}.add-user-form-container{background:#fff;border-radius:8px;padding:30px;margin-bottom:30px;box-shadow:0 2px 8px #0000001a}.add-user-form-container h2{color:#333;margin:0 0 25px;font-size:22px}.add-user-form{display:flex;flex-direction:column;gap:20px}.form-row{display:grid;grid-template-columns:1fr;gap:20px}.form-field{display:flex;flex-direction:column;gap:8px}.form-field label{color:#333;font-weight:500;font-size:14px}.form-field input,.form-field select{padding:10px 12px;border:1px solid #ddd;border-radius:5px;font-size:14px;transition:border-color .3s}.form-field input:focus,.form-field select:focus{outline:none;border-color:#4a4a4a}.form-actions{display:flex;gap:10px;justify-content:flex-start;margin-top:10px}.btn-submit{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;padding:12px 24px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s;box-shadow:0 3px 10px #5b9bd54d}.btn-submit:hover{transform:translateY(-2px);box-shadow:0 5px 14px #5b9bd566}.btn-cancel-form{background:#6c757d;color:#fff;border:none;padding:12px 24px;border-radius:5px;font-size:16px;font-weight:600;cursor:pointer;transition:background .2s}.btn-cancel-form:hover{background:#5a6268}@media(max-width:768px){.system-admin-container{padding:15px}.admin-header{flex-direction:column;align-items:flex-start;gap:15px}.admin-header h1{font-size:22px}.btn-add-user{width:100%}.form-row{grid-template-columns:1fr;gap:15px}.add-user-form-container{padding:20px}.users-table-container{border-radius:0}.users-table{font-size:12px}.users-table th,.users-table td{padding:8px 5px}.action-buttons button{font-size:11px;padding:4px 8px}.password-reset-form input{width:100px;font-size:11px}}.login-logs-container{padding:20px;max-width:1400px;margin:0 auto}.login-logs-container h1{color:#333;margin-bottom:20px;font-size:28px}.loading{text-align:center;padding:40px;font-size:18px;color:#666}.error-message{background-color:#fee;color:#c33;padding:12px 20px;border-radius:8px;margin-bottom:20px;border:1px solid #fcc}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:30px}.stat-card{background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;padding:24px;border-radius:12px;box-shadow:0 4px 6px #0000001a;transition:transform .3s ease}.stat-card:hover{transform:translateY(-4px);box-shadow:0 6px 12px #00000026}.stat-card.success{background:linear-gradient(135deg,#10b981,#059669)}.stat-card.failed{background:linear-gradient(135deg,#ef4444,#dc2626)}.stat-card.recent{background:linear-gradient(135deg,#f59e0b,#d97706)}.stat-value{font-size:36px;font-weight:700;margin-bottom:8px}.stat-label{font-size:14px;opacity:.9}.detail-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-bottom:30px}.detail-stat-card{background:#fff;padding:20px;border-radius:12px;box-shadow:0 2px 4px #0000001a}.detail-stat-card h3{color:#333;margin-bottom:16px;font-size:18px;border-bottom:2px solid #5B9BD5;padding-bottom:8px}.stat-list{display:flex;flex-direction:column;gap:12px}.stat-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#f9fafb;border-radius:6px}.stat-item .count{font-weight:600;color:#5b9bd5}.filters{background:#fff;padding:20px;border-radius:12px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.filter-group{display:flex;flex-direction:column}.filter-group label{margin-bottom:8px;font-weight:500;color:#555;font-size:14px}.filter-group select,.filter-group input{padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;transition:border-color .3s ease}.filter-group select:focus,.filter-group input:focus{outline:none;border-color:#5b9bd5;box-shadow:0 0 0 3px #667eea1a}.table-container{background:#fff;border-radius:12px;box-shadow:0 2px 4px #0000001a;overflow:hidden;margin-bottom:20px}.logs-table{width:100%;border-collapse:collapse}.logs-table thead{background:#f3f4f6;border-bottom:2px solid #5B9BD5}.logs-table th{padding:16px;text-align:left;font-weight:600;font-size:14px;text-transform:uppercase;letter-spacing:.5px;color:#374151}.logs-table tbody tr{border-bottom:1px solid #e5e7eb;transition:background-color .2s ease}.logs-table tbody tr:hover{background-color:#f9fafb}.logs-table td{padding:14px 16px;color:#374151;font-size:14px}.username{font-weight:600;color:#5b9bd5}.full-name{font-size:12px;color:#6b7280}.ip-address{font-family:Courier New,monospace;color:#6366f1}.badge{padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600;display:inline-block}.badge-success{background-color:#d1fae5;color:#065f46}.badge-failed{background-color:#fee2e2;color:#991b1b}.pagination{display:flex;justify-content:center;align-items:center;gap:16px;padding:20px;background:#fff;border-radius:12px;box-shadow:0 2px 4px #0000001a}.pagination button{padding:10px 20px;background:linear-gradient(135deg,#5b9bd5,#4a7ba7);color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:500;transition:opacity .3s ease,transform .2s ease}.pagination button:hover:not(:disabled){opacity:.9;transform:translateY(-2px)}.pagination button:disabled{opacity:.5;cursor:not-allowed}.page-info{font-weight:500;color:#374151}@media(max-width:768px){.login-logs-container{padding:10px}.stats-grid{grid-template-columns:repeat(2,1fr);gap:12px}.detail-stats,.filters{grid-template-columns:1fr}.table-container{overflow-x:auto}.logs-table{min-width:800px}.stat-value{font-size:28px}}.bracket-tree-container{width:100%;overflow-x:auto;padding:20px;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);border-radius:12px}.bracket-tree{display:flex;gap:60px;min-width:min-content;padding:20px}.bracket-round{display:flex;flex-direction:column;min-width:280px}.round-header{text-align:center;margin-bottom:20px;padding:15px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;box-shadow:0 4px 15px #667eea4d}.round-header h3{margin:0;color:#fff;font-size:1.3rem;font-weight:700;text-shadow:0 2px 4px rgba(0,0,0,.2)}.round-subtitle{color:#ffffffe6;font-size:.85rem;font-weight:500}.matches-wrapper{display:flex;flex-direction:column;justify-content:space-around;flex:1}.match-container{position:relative;display:flex;align-items:center}.match-container.final-match{margin-top:auto;margin-bottom:auto}.match-card{position:relative;background:#fff;border:3px solid #e0e0e0;border-radius:12px;padding:4px;box-shadow:0 4px 12px #0000001a;transition:all .3s ease;width:100%;overflow:hidden}.match-card.clickable{cursor:pointer}.match-card.clickable:hover{border-color:#667eea;box-shadow:0 6px 20px #667eea4d;transform:translateY(-2px)}.match-card.completed{border-color:#4caf50;background:linear-gradient(to right,#fff,#f1f8f4)}.match-card.pending{border-color:#ffc107;background:linear-gradient(to right,#fff,#fffef7)}.participant{display:flex;justify-content:space-between;align-items:center;padding:12px 15px;border-radius:8px;transition:all .3s ease;position:relative;background:#fafafa}.participant.winner{background:linear-gradient(135deg,#84fab0,#8fd3f4);box-shadow:0 2px 8px #84fab066;font-weight:700;border:2px solid #4CAF50}.participant.tbd{opacity:.5;background:#f5f5f5}.participant-info{display:flex;align-items:center;gap:10px;flex:1}.seed{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:50%;font-size:.8rem;font-weight:700;box-shadow:0 2px 6px #667eea4d}.participant.winner .seed{background:linear-gradient(135deg,#11998e,#38ef7d)}.name{font-size:1rem;color:#333;font-weight:500}.participant.winner .name{color:#1b5e20}.score{font-size:1.1rem;font-weight:700;color:#667eea;background:#fff;padding:6px 12px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.participant.winner .score{color:#2e7d32;background:#e8f5e9}.winner-badge{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:1.5rem;color:#4caf50;animation:winnerPulse 1.5s ease-in-out infinite}@keyframes winnerPulse{0%,to{transform:translateY(-50%) scale(1)}50%{transform:translateY(-50%) scale(1.1)}}.match-divider{height:2px;background:linear-gradient(to right,transparent,#e0e0e0,transparent);margin:4px 0}.match-status{position:absolute;top:-12px;right:15px;padding:4px 12px;border-radius:12px;font-size:.75rem;font-weight:600;box-shadow:0 2px 6px #00000026}.match-status.completed{background:linear-gradient(135deg,#4caf50,#66bb6a);color:#fff}.match-status.pending{background:linear-gradient(135deg,#ffc107,#ffd54f);color:#333}.match-status.bye{background:linear-gradient(135deg,#9e9e9e,#bdbdbd);color:#fff}.connector-line{position:absolute;right:-60px;top:50%;width:60px;height:3px;background:linear-gradient(to right,#667eea,#764ba2);transform:translateY(-50%);z-index:-1}.connector-line:before,.connector-line:after{content:"";position:absolute;width:3px;background:linear-gradient(to bottom,#667eea,#764ba2)}.connector-line:before{height:var(--connector-height-before, 0px);right:0;top:0}.connector-line:after{height:var(--connector-height-after, 0px);right:0;bottom:0}.bracket-legend{display:flex;justify-content:center;gap:30px;margin-top:30px;padding:20px;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a}.legend-item{display:flex;align-items:center;gap:8px}.legend-box{width:40px;height:30px;border-radius:6px;border:2px solid #e0e0e0}.legend-box.winner{background:linear-gradient(135deg,#84fab0,#8fd3f4);border-color:#4caf50}.legend-box.completed{background:#f1f8f4;border-color:#4caf50}.legend-box.pending{background:#fffef7;border-color:#ffc107}.legend-box.tbd{background:#f5f5f5;opacity:.5}@media(max-width:768px){.bracket-tree{gap:40px}.bracket-round{min-width:240px}.round-header h3{font-size:1.1rem}.participant{padding:10px 12px}.name{font-size:.9rem}.seed{min-width:28px;height:28px;font-size:.75rem}.bracket-legend{flex-wrap:wrap;gap:15px}}.bracket-tree-container::-webkit-scrollbar{height:12px}.bracket-tree-container::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px}.bracket-tree-container::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:10px}.bracket-tree-container::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#764ba2,#667eea)}.bracket-d3-container{width:100%;background:linear-gradient(135deg,#fff,#f8f9fa);border-radius:12px;padding:20px;overflow:hidden;box-shadow:0 4px 12px #00000014;border:1px solid #e9ecef}.bracket-d3-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.bracket-d3-header h3{margin:0;color:#333;font-size:1.5rem;font-weight:600}.bracket-d3-legend{display:flex;gap:20px;background:#fff;padding:10px 20px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.legend-item{display:flex;align-items:center;gap:8px;font-size:.9rem;color:#666}.legend-color{width:20px;height:20px;border-radius:4px;border:2px solid transparent}.legend-color.completed{background:#e8f5e9;border-color:#4caf50}.legend-color.pending{background:#fff3e0;border-color:#ff9800}.legend-color.waiting{background:#fafafa;border-color:#bdbdbd}svg{width:100%;background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000000d;border:1px solid #dee2e6;cursor:grab}svg:active{cursor:grabbing}.node-rect{fill:#fff;stroke-width:2;transition:all .3s ease;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.node-rect.completed{fill:#e8f5e9;stroke:#4caf50}.node-rect.pending{fill:#fff3e0;stroke:#ff9800}.node-rect.pending.clickable{transition:all .3s ease;cursor:pointer}.node-rect.pending.clickable:hover{fill:#ffe0b2;stroke:#ff6f00;stroke-width:3;filter:drop-shadow(0 4px 8px rgba(255,152,0,.3))}.node-rect.waiting{fill:#fafafa;stroke:#bdbdbd}.node-rect.placeholder{fill:#f5f5f5;stroke:#e0e0e0;stroke-dasharray:5,5;opacity:.7}.node-rect:hover{filter:brightness(1.05);stroke-width:3}.participant-name{font-size:14px;fill:#212529;font-weight:500}.participant-name.winner{fill:#2e7d32;font-weight:700}.score{font-size:12px;fill:#5e72e4;font-weight:600}.round-label{font-size:16px;fill:#495057;font-weight:700;text-transform:uppercase;background:#fff;padding:2px 6px;border-radius:4px}.reset-button{fill:#5e72e4;font-size:14px;font-weight:600;text-decoration:underline}.reset-button:hover{fill:#4c63d2}.bracket-d3-tips{margin-top:10px;text-align:center;color:#666;font-size:.85rem}.link{stroke:#cbd5e0;stroke-width:2;opacity:.8;fill:none}@keyframes gradient-shift{0%{stop-color:#84fab0}50%{stop-color:#8fd3f4}to{stop-color:#84fab0}}@media(max-width:768px){.bracket-d3-header{flex-direction:column;gap:15px}.bracket-d3-header h3{font-size:1.2rem}.bracket-d3-legend{width:100%;justify-content:center}.legend-item{font-size:.8rem}.participant-name{font-size:12px}.score{font-size:10px}}.bracket-container{padding:20px;width:100%;overflow-x:auto;overflow-y:auto;background:linear-gradient(135deg,#f5f7fa,#e9ecef);min-height:100vh}.bracket-container h1{text-align:center;color:#2c3e50;margin-bottom:30px;font-size:2rem;text-shadow:2px 2px 4px rgba(0,0,0,.1)}.tournament-bracket{display:flex;gap:60px;padding:40px;min-width:max-content;align-items:flex-start;justify-content:flex-start;overflow-x:auto}.bracket-round{display:flex;flex-direction:column;gap:20px;position:relative;flex:0 0 auto}.round-title{text-align:center;color:#667eea;font-size:1.2rem;margin-bottom:20px;font-weight:700;text-transform:uppercase;letter-spacing:1px}.round-matches{display:flex;flex-direction:column;justify-content:space-around;gap:20px;min-height:100%}.match-wrapper{position:relative;display:flex;align-items:center}.match-box{width:280px;background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a;overflow:hidden;position:relative;z-index:2;transition:transform .3s ease,box-shadow .3s ease}.match-box:hover{transform:translateY(-2px);box-shadow:0 6px 12px #00000026}.match-player{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #e0e0e0;transition:background-color .3s ease;position:relative;gap:10px}.match-player.top{border-bottom:1px solid #ddd}.match-player.bottom{border-bottom:none}.match-player:hover{background-color:#f8f9fa}.match-player.winner{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-weight:700}.match-player.winner .player-name{color:#fff}.match-player.winner:before{content:"👑";position:absolute;left:-5px;top:50%;transform:translateY(-50%);font-size:1.2rem}.player-name{flex:0 1 auto;min-width:90px;font-size:.95rem;color:#2c3e50;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:8px}.score-input-wrapper{position:relative;display:flex;align-items:center;gap:8px}.score-input{width:130px;padding:8px 6px;border:2px solid #e0e0e0;border-radius:8px;text-align:center;font-size:1.3rem;font-weight:700;transition:all .3s ease;background:#fff;cursor:text;letter-spacing:.5px}.score-input:focus{outline:none;border-color:#667eea;background-color:#f0f4ff;transform:scale(1.05)}.score-input:disabled{background:#f5f5f5;cursor:not-allowed;opacity:.6}.score-input:hover:not(:disabled){border-color:#667eea;transform:scale(1.02)}.match-player.winner .score-input{border-color:#fff;background:#fffffff2;color:#667eea;font-size:1.3rem}.score-preview{position:absolute;bottom:-22px;left:50%;transform:translate(-50%);font-size:.75rem;color:#667eea;background:#fff;padding:2px 6px;border-radius:4px;border:1px solid #e0e0e0;white-space:nowrap;z-index:10;box-shadow:0 2px 4px #0000001a}.connector{position:absolute;left:280px;top:50%;width:60px;height:100%;pointer-events:none}.connector-line.horizontal{position:absolute;top:50%;left:0;width:30px;height:2px;background:#667eea;transform:translateY(-50%)}.connector-line.vertical{position:absolute;left:30px;top:-50%;width:2px;height:100%;background:#667eea}.connector-line.horizontal-short{position:absolute;top:50%;left:30px;width:30px;height:2px;background:#667eea;transform:translateY(-50%)}.bracket-info{margin:40px auto;max-width:800px;padding:24px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;text-align:center;box-shadow:0 6px 20px #667eea4d}.bracket-info p{margin:12px 0;color:#fff;font-size:1rem;font-weight:500;letter-spacing:.5px;text-shadow:0 1px 2px rgba(0,0,0,.1)}.loading{display:flex;justify-content:center;align-items:center;min-height:400px;font-size:1.2rem;color:#6c757d}@media(max-width:1200px){.tournament-bracket{padding:20px;gap:40px}.match-box{width:240px}.connector{left:240px}}.bracket-round:first-child .match-box{transform:scale(.95)}.bracket-round{min-height:calc(100vh - 200px);display:flex;justify-content:center}@media(max-width:768px){.tournament-bracket{flex-direction:column;align-items:flex-start;padding:20px}.bracket-round{width:100%}.connector{display:none}.match-box{width:100%;max-width:300px}}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.match-box{animation:fadeIn .5s ease-out}.bracket-round:nth-child(1) .match-box{animation-delay:.1s}.bracket-round:nth-child(2) .match-box{animation-delay:.2s}.bracket-round:nth-child(3) .match-box{animation-delay:.3s}.bracket-round:nth-child(4) .match-box{animation-delay:.4s}.bracket-round:nth-child(5) .match-box{animation-delay:.5s}.bracket-round:nth-child(n+6) .match-box{animation-delay:.6s}.notification-management-container{padding:20px;max-width:1400px;margin:0 auto}.nm-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:15px;border-bottom:2px solid #e0e0e0}.nm-header h1{margin:0 0 5px;color:#333;font-size:28px}.nm-header p{margin:0;color:#666;font-size:14px}.btn-send-notification{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:12px 24px;border-radius:8px;cursor:pointer;font-size:16px;font-weight:500;transition:all .3s ease;box-shadow:0 4px 6px #667eea40}.btn-send-notification:hover{transform:translateY(-2px);box-shadow:0 6px 12px #667eea59}.error-message{background:#ffebee;color:#c62828;padding:12px 16px;border-radius:6px;margin-bottom:20px;border-left:4px solid #c62828}.send-notification-form-container{background:#fff;border:1px solid #e0e0e0;border-radius:12px;padding:24px;margin-bottom:24px;box-shadow:0 2px 8px #00000014}.send-notification-form-container h2{margin:0 0 20px;color:#333;font-size:20px}.send-notification-form{display:flex;flex-direction:column;gap:16px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-row .form-field:only-child{grid-column:1 / -1}.form-field{display:flex;flex-direction:column;gap:6px}.form-field label{font-weight:500;color:#444;font-size:14px}.form-field input,.form-field select,.form-field textarea{padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;transition:all .2s}.form-field textarea{resize:vertical;font-family:inherit}.form-field small{color:#999;font-size:12px}.form-actions{display:flex;gap:12px;margin-top:8px}.btn-submit{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:12px 32px;border-radius:8px;cursor:pointer;font-size:15px;font-weight:500;transition:all .3s ease}.btn-submit:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 8px #667eea4d}.btn-submit:disabled{opacity:.6;cursor:not-allowed}.btn-cancel-form{background:#f5f5f5;color:#666;border:1px solid #ddd;padding:12px 32px;border-radius:8px;cursor:pointer;font-size:15px;transition:all .2s}.btn-cancel-form:hover:not(:disabled){background:#e0e0e0}.btn-cancel-form:disabled{opacity:.6;cursor:not-allowed}.notifications-table-container{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #00000014}.notifications-table{width:100%;border-collapse:collapse}.notifications-table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.notifications-table th{padding:14px 12px;text-align:left;font-weight:500;font-size:13px;text-transform:uppercase;letter-spacing:.5px}.notifications-table tbody tr{border-bottom:1px solid #f0f0f0;transition:background .2s}.notifications-table tbody tr:hover{background:#f8f9ff}.notifications-table td{padding:14px 12px;font-size:14px;color:#333;vertical-align:top}.notification-title{font-weight:500;color:#333;margin-bottom:4px}.notification-url{font-size:12px;color:#667eea;margin-top:4px}.notification-body{color:#666;line-height:1.5;max-width:300px}.target-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500}.target-all{background:#e8f5e9;color:#2e7d32}.target-specific{background:#e3f2fd;color:#1565c0}.stats-cell{display:flex;flex-direction:column;gap:4px}.stat-row{display:flex;justify-content:space-between;gap:8px;font-size:13px}.stat-label{color:#666}.stat-value{font-weight:500;color:#333}.stat-label.success,.stat-value.success{color:#2e7d32}.stat-label.failure,.stat-value.failure{color:#c62828}.datetime-cell{font-size:13px;color:#666;white-space:nowrap}.creator-cell{font-size:13px;color:#666}.btn-delete{background:#fff;color:#d32f2f;border:1px solid #d32f2f;padding:6px 14px;border-radius:6px;cursor:pointer;font-size:13px;transition:all .2s}.btn-delete:hover{background:#d32f2f;color:#fff}@media(max-width:768px){.notification-management-container{padding:15px}.nm-header{flex-direction:column;align-items:flex-start;gap:15px}.btn-send-notification{width:100%}.form-row{grid-template-columns:1fr}.notifications-table-container{overflow-x:auto}.notifications-table{min-width:1000px}.form-actions{flex-direction:column}.btn-submit,.btn-cancel-form{width:100%}}.notification-senders-container{padding:20px;max-width:1400px;margin:0 auto}.ns-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #e0e0e0}.ns-header h1{margin:0 0 5px;color:#333;font-size:28px}.ns-header p{margin:0;color:#666;font-size:14px}.btn-add-sender{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:12px 24px;border-radius:8px;cursor:pointer;font-size:16px;font-weight:600;transition:all .3s ease;box-shadow:0 4px 6px #667eea4d}.btn-add-sender:hover{transform:translateY(-2px);box-shadow:0 6px 12px #667eea66}.error-message{background-color:#fee;border-left:4px solid #f44336;padding:15px;margin-bottom:20px;border-radius:4px;color:#c62828}.add-sender-form-container{background:#fff;border-radius:12px;padding:25px;margin-bottom:30px;box-shadow:0 2px 8px #0000001a;border:1px solid #e0e0e0}.add-sender-form-container h2{margin:0 0 20px;color:#333;font-size:20px}.add-sender-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.add-sender-form .form-row:has(.form-field:only-child){grid-template-columns:1fr}.form-field{display:flex;flex-direction:column}.form-field label{margin-bottom:8px;font-weight:500;color:#555;font-size:14px}.form-field input[type=text],.form-field select,.form-field textarea{padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;transition:border-color .3s}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.checkbox-field{flex-direction:row;align-items:center}.checkbox-field label{display:flex;align-items:center;margin-bottom:0;cursor:pointer}.checkbox-field input[type=checkbox]{margin-right:8px;width:18px;height:18px;cursor:pointer}.form-actions{display:flex;gap:10px;margin-top:20px}.btn-submit{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:12px 30px;border-radius:8px;cursor:pointer;font-size:16px;font-weight:600;transition:all .3s ease}.btn-submit:hover{transform:translateY(-1px);box-shadow:0 4px 8px #667eea4d}.btn-cancel{background:#fff;color:#666;border:1px solid #ddd;padding:12px 30px;border-radius:8px;cursor:pointer;font-size:16px;transition:all .3s ease}.btn-cancel:hover{background:#f5f5f5;border-color:#999}.senders-table-container{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.senders-table{width:100%;border-collapse:collapse}.senders-table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.senders-table th{padding:15px 12px;text-align:left;font-weight:600;font-size:14px;white-space:nowrap}.senders-table td{padding:15px 12px;border-bottom:1px solid #f0f0f0;font-size:14px}.senders-table tbody tr:hover{background-color:#f8f9ff}.inactive-row{opacity:.6;background-color:#fafafa}.user-info{display:flex;flex-direction:column;gap:4px}.user-name{font-weight:600;color:#333}.user-meta{font-size:12px;color:#666}.status-badge{padding:6px 12px;border-radius:20px;font-size:12px;font-weight:600;border:none;cursor:pointer;transition:all .3s ease;white-space:nowrap}.status-badge.active{background-color:#4caf50;color:#fff}.status-badge.inactive{background-color:#9e9e9e;color:#fff}.status-badge:hover{transform:scale(1.05);box-shadow:0 2px 4px #0003}.permissions{display:flex;flex-wrap:wrap;gap:6px}.perm-badge{padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;white-space:nowrap}.perm-badge.perm-all{background-color:#ff9800;color:#fff}.perm-badge.perm-specific{background-color:#2196f3;color:#fff}.stats{display:flex;flex-direction:column;gap:4px;font-size:13px}.last-send{color:#666;font-size:11px}.granter-info{color:#666}.datetime-cell{color:#666;font-size:12px}.note-cell{color:#666;font-size:12px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-buttons{display:flex;gap:8px}.btn-delete-small{background-color:#f44336;color:#fff;border:none;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:12px;transition:all .3s ease}.btn-delete-small:hover{background-color:#d32f2f;transform:translateY(-1px);box-shadow:0 2px 4px #f443364d}@media(max-width:1200px){.senders-table{font-size:13px}.senders-table th,.senders-table td{padding:12px 8px}}@media(max-width:768px){.ns-header{flex-direction:column;align-items:flex-start;gap:15px}.add-sender-form .form-row{grid-template-columns:1fr}.senders-table-container{overflow-x:auto}.senders-table{min-width:900px}}.notification-prompt{position:fixed;bottom:20px;right:20px;z-index:9999;animation:slideIn .3s ease-out}@keyframes slideIn{0%{transform:translateY(100px);opacity:0}to{transform:translateY(0);opacity:1}}.notification-prompt-content{background:#fff;border-radius:12px;box-shadow:0 4px 20px #00000026;padding:20px;max-width:400px;display:flex;flex-direction:column;gap:15px}.notification-prompt-icon{font-size:48px;text-align:center}.notification-prompt-text h3{margin:0 0 8px;font-size:18px;font-weight:600;color:#333}.notification-prompt-text p{margin:0;font-size:14px;color:#666;line-height:1.5}.notification-prompt-actions{display:flex;gap:10px;margin-top:5px}.notification-prompt-btn{flex:1;padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.notification-prompt-btn-primary{background:#4caf50;color:#fff}.notification-prompt-btn-primary:hover{background:#45a049;transform:translateY(-1px);box-shadow:0 2px 8px #4caf504d}.notification-prompt-btn-secondary{background:#f5f5f5;color:#666}.notification-prompt-btn-secondary:hover{background:#e0e0e0}@media(max-width:768px){.notification-prompt{bottom:10px;left:10px;right:10px}.notification-prompt-content{max-width:none;padding:16px}.notification-prompt-icon{font-size:36px}.notification-prompt-text h3{font-size:16px}.notification-prompt-text p{font-size:13px}.notification-prompt-actions{flex-direction:column}.notification-prompt-btn{width:100%}}
