.login-page{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;align-items:center;padding:1rem}.login-container{width:100%;max-width:400px;background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;overflow:hidden}.login-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:2rem;text-align:center}.login-header h1{font-size:1.8rem;font-weight:600;margin-bottom:.5rem}.login-header p{font-size:.9rem;opacity:.9}.login-form{padding:2rem}.form-tabs{display:flex;margin-bottom:1.5rem;border-bottom:2px solid #f0f0f0}.tab-btn{flex:1;padding:.75rem 1rem;border:none;background:transparent;color:#666;font-size:1rem;font-weight:500;cursor:pointer;border-bottom:2px solid transparent;transition:all .3s ease}.tab-btn:hover{color:#667eea}.tab-btn.active{color:#667eea;border-bottom-color:#667eea}.form-content{animation:fadeIn .3s ease-in}.form-group label{display:block;margin-bottom:.5rem;color:#333;font-weight:500;font-size:.9rem}.form-group input{width:100%;padding:.75rem 1rem;border:2px solid #e0e0e0;border-radius:8px;font-size:1rem;transition:all .3s ease;background:#fafafa}.form-group input:focus{outline:none;border-color:#667eea;background:#fff;box-shadow:0 0 0 3px #667eea1a}.form-group input.error{border-color:#dc3545;background:#fff3f3}.form-group input.error:focus{border-color:#dc3545;box-shadow:0 0 0 3px #dc35451a}.verify-code-group{display:flex;gap:.5rem}.verify-code-group input{flex:1}.verify-code-btn{padding:.75rem 1rem;background:#f0f0f0;color:#666;border:none;border-radius:8px;font-size:.9rem;cursor:pointer;transition:all .3s ease;white-space:nowrap}.verify-code-btn:hover{background:#e0e0e0;color:#333}.error-message{display:block;color:#dc3545;font-size:.8rem;margin-top:.5rem;animation:shake .3s ease}.success-message{display:block;color:#28a745;font-size:.8rem;margin-top:.5rem}.submit-btn{width:100%;padding:1rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;margin-top:1rem}.submit-btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px #667eea66}.submit-btn:active{transform:translateY(0)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}@media (max-width: 480px){.login-container{max-width:100%;border-radius:0}.login-form,.login-header{padding:1.5rem}.login-header h1{font-size:1.5rem}.form-tabs{margin-bottom:1rem}.tab-btn{padding:.5rem .75rem;font-size:.9rem}.form-group input{padding:.625rem .875rem;font-size:.9rem}.submit-btn{padding:.875rem;font-size:.9rem}}.login-container{animation:slideInUp .5s ease-out}@keyframes slideInUp{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}.spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #667eea;border-radius:50%;animation:spin 1s linear infinite}.personal-info-page{min-height:100vh;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:18px}.info-card{background:#fff;border-radius:12px;padding:1.5rem;margin-bottom:1rem;box-shadow:0 2px 8px #00000014}.info-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.user-name{font-size:1.5rem;font-weight:700;color:#333;margin:0}.edit-btn{padding:.5rem 1.25rem;background:#ff6b6b;color:#fff;border:none;border-radius:20px;font-size:.9rem;cursor:pointer;transition:all .3s ease}.edit-btn:hover{background:#ff5252;transform:translateY(-1px)}.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.info-item{display:flex;flex-direction:column;gap:.25rem}.info-item .label{font-size:.85rem;color:#666;display:flex;align-items:center;gap:.25rem}.required{color:#ff6b6b;font-size:.8rem}.info-item .value{font-size:.95rem;color:#333;font-weight:500}.edit-form{display:flex;flex-direction:column;gap:1.5rem}.form-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.form-item{display:flex;flex-direction:column;gap:.25rem}.form-item label{font-size:.85rem;color:#666;display:flex;align-items:center;gap:.25rem}.form-item input{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;background:#f9f9f9;transition:all .3s ease}.form-item input:focus{outline:none;border-color:#4ecdc4;background:#fff;box-shadow:0 0 0 3px #4ecdc41a}.edit-actions{display:flex;gap:1rem;justify-content:flex-end;padding-top:1rem;border-top:1px solid #f0f0f0}.cancel-btn{padding:.5rem 1.5rem;background:#6c757d;color:#fff;border:none;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .3s ease}.cancel-btn:hover{background:#5a6268}.save-btn{padding:.5rem 1.5rem;background:#4ecdc4;color:#fff;border:none;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .3s ease}.save-btn:hover{background:#3db8b0;transform:translateY(-1px)}.training-banner{background:linear-gradient(135deg,#ff6b6b,#ff8e53);border-radius:12px;padding:1.25rem;margin-bottom:1rem;display:flex;align-items:center;gap:1rem;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 12px #ff6b6b4d}.training-banner:hover{transform:translateY(-2px);box-shadow:0 6px 16px #ff6b6b66}.banner-icon{font-size:2rem;background:#fff3;width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center}.banner-content{flex:1}.banner-content h3{margin:0 0 .25rem;font-size:1.1rem;font-weight:600;color:#fff}.banner-content p{margin:0;font-size:.85rem;color:#ffffffe6}.banner-arrow{font-size:1.5rem;color:#fff;transition:transform .3s ease}.training-banner:hover .banner-arrow{transform:translate(5px)}.section-card{background:#fff;border-radius:12px;padding:1.5rem;margin-bottom:1rem;box-shadow:0 2px 8px #00000014}.section-title{font-size:1.1rem;font-weight:600;color:#333;margin:0 0 1rem}.tabs{display:flex;gap:.5rem;margin-bottom:1rem;border-bottom:2px solid #f0f0f0;padding-bottom:.5rem;overflow-x:auto;-webkit-overflow-scrolling:touch}.tabs::-webkit-scrollbar{display:none}.tab-btn{padding:.5rem 1rem;background:none;border:none;font-size:.9rem;color:#666;cursor:pointer;border-radius:4px;transition:all .3s ease;white-space:nowrap;font-weight:500}.tab-btn:hover{background:#f0f0f0;color:#333}.tab-btn.active{background:#4ecdc4;color:#fff}.table-container{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:1rem}.table-container::-webkit-scrollbar{height:6px}.table-container::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.table-container::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.data-table{width:100%;border-collapse:collapse;font-size:.85rem}.data-table th,.data-table td{padding:.75rem .5rem;text-align:left;border-bottom:1px solid #f0f0f0}.data-table th{background:#f9f9f9;color:#666;font-weight:600;white-space:nowrap}.data-table td{color:#333}.data-table tbody tr:hover{background:#fafafa}.view-btn{padding:.375rem .75rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:4px;font-size:.8rem;cursor:pointer;transition:all .3s ease;white-space:nowrap}.view-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.view-all-btn{width:100%;padding:.75rem;background:none;border:none;color:#4ecdc4;font-size:.9rem;cursor:pointer;transition:all .3s ease;text-align:center;font-weight:500}.view-all-btn:hover{color:#3db8b0;background:#4ecdc40d;border-radius:6px}@media (max-width: 480px){.page-content{padding:.75rem .75rem 6rem}.info-card{padding:1.25rem;border-radius:10px}.info-grid,.form-row{grid-template-columns:repeat(2,1fr);gap:.75rem}.section-card{padding:1.25rem;border-radius:10px}.tabs{gap:.25rem}.tab-btn{padding:.375rem .75rem;font-size:.85rem}.data-table th,.data-table td{padding:.625rem .375rem;font-size:.8rem}.training-banner{padding:1rem}.banner-icon{width:40px;height:40px;font-size:1.5rem}.banner-content h3{font-size:1rem}.banner-content p{font-size:.8rem}.bottom-nav{padding:.5rem .25rem;padding-bottom:calc(.5rem + env(safe-area-inset-bottom))}.nav-icon{font-size:1.1rem}.nav-item span{font-size:.7rem}}.info-card,.section-card{animation:fadeInUp .5s ease-out}.info-item,.form-item,.data-table tbody tr{animation:slideInLeft .3s ease-out}.spinner{width:30px;height:30px;border:3px solid #f3f3f3;border-top:3px solid #4ecdc4;border-radius:50%;animation:spin .8s linear infinite}.empty-state{text-align:center;padding:2rem 1rem;color:#999}.empty-state .empty-icon{font-size:2.5rem;margin-bottom:.75rem;opacity:.5}.empty-state p{margin:0;font-size:.85rem;line-height:1.4}.training-menu-page{min-height:100vh;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:18px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:1rem}.section-tabs{display:flex;gap:.5rem;flex-wrap:wrap}.col-count{grid-column:2}.col-interval{grid-column:3}.col-sets{grid-column:4}.col-load{grid-column:2}.col-reps{grid-column:3}.col-recovery{grid-column:1}.col-timing{grid-column:2}.col-duration{grid-column:3}.data-table:has(.col-count) .table-header,.data-table:has(.col-count) .table-row{grid-template-columns:2fr 1fr 1fr 1fr}.data-table:has(.col-load) .table-header,.data-table:has(.col-load) .table-row{grid-template-columns:2fr 1fr 1fr 1fr 1fr}.data-table:has(.col-recovery) .table-header,.data-table:has(.col-recovery) .table-row{grid-template-columns:2fr 1.5fr 1.5fr 1fr}.description-box{margin-top:.75rem;padding:.75rem;background:#f9f9f9;border-radius:8px;font-size:.85rem;color:#666;line-height:1.6;border-left:3px solid #4ecdc4}@media (max-width: 480px){.page-content{padding:.75rem .75rem 6rem}.content-section{padding:1rem;border-radius:10px}.section-header{flex-direction:column;align-items:flex-start;gap:.5rem}.section-tabs{width:100%}.section-tabs .tab-btn{padding:.25rem .5rem;font-size:.75rem}.table-header,.table-row{gap:.25rem;padding:.5rem .25rem;font-size:.75rem}.bottom-nav{padding:.5rem .25rem;padding-bottom:calc(.5rem + env(safe-area-inset-bottom))}.nav-icon{font-size:1.1rem}.nav-item span{font-size:.7rem}}.content-section{animation:fadeInUp .5s ease-out}.table-row{animation:slideInLeft .3s ease-out}.training-cycle-page{min-height:100vh;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:18px}.page-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background:#fff;border-bottom:1px solid #e0e0e0;position:sticky;top:0;z-index:100}.back-btn,.more-btn{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#333;padding:.5rem;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.page-title{font-size:1.25rem;font-weight:600;color:#333;margin:0}.page-content{padding:1rem 1rem 5rem;max-width:480px;margin:0 auto}.cycle-title{font-size:1.25rem;font-weight:700;color:#333;margin:0 0 1.5rem}.week-plan{background:#fff;border-radius:12px;padding:1rem;margin-bottom:1.5rem;box-shadow:0 2px 8px #00000014}.week-header{display:flex;margin-bottom:.75rem;border-bottom:2px solid #f0f0f0}.day-header{flex:1;padding:.75rem .5rem;text-align:center;font-size:.85rem;color:#666;cursor:pointer;border:none;background:none;transition:all .3s ease;border-bottom:2px solid transparent}.day-header:hover{color:#ff6b6b}.day-header.active{color:#ff6b6b;border-bottom-color:#ff6b6b;font-weight:600}.week-body{display:flex}.day-body{flex:1;padding:.5rem}.training-bar,.rest-bar{height:80px;border-radius:4px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:.5rem;font-size:.75rem;color:#666;transition:all .3s ease}.training-bar{background:linear-gradient(180deg,#ff6b6b,#ff8e53);color:#fff;font-weight:500}.rest-bar{background:#f0f0f0}.day-body.active .training-bar,.day-body.active .rest-bar{transform:scaleY(1.1);transform-origin:bottom}.training-target{background:linear-gradient(135deg,#ff6b6b,#ff8e53);border-radius:12px;padding:1rem;margin-bottom:1.5rem;box-shadow:0 4px 12px #ff6b6b4d}.target-item{display:flex;align-items:flex-start;margin-bottom:.5rem}.target-item:last-child{margin-bottom:0}.target-label{font-size:.95rem;color:#fff;font-weight:600;white-space:nowrap}.target-value{font-size:.95rem;color:#fff;font-weight:500;flex:1}.section-title{font-size:1.1rem;font-weight:700;color:#333;margin:0 0 1rem}.content-section{background:#fff;border-radius:12px;padding:1.25rem;margin-bottom:1rem;box-shadow:0 2px 8px #00000014}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.section-name{font-size:1rem;font-weight:700;color:#333;margin:0}.section-tabs{display:flex;gap:.5rem}.section-tabs .tab-btn{padding:.375rem .75rem;background:none;border:none;font-size:.8rem;color:#666;cursor:pointer;border-radius:4px;transition:all .3s ease;border:1px solid #ddd}.section-tabs .tab-btn.active{background:#ff6b6b;color:#fff;border-color:#ff6b6b}.section-description{font-size:.85rem;color:#666;line-height:1.6;margin:0 0 1rem;padding:.75rem;background:#f9f9f9;border-radius:8px;border-left:3px solid #4ecdc4}.data-table{width:100%}.table-header{display:grid;gap:.5rem;padding:.75rem .5rem;background:#f9f9f9;border-radius:6px;margin-bottom:.5rem;font-size:.8rem;color:#666;font-weight:600}.table-row{display:grid;gap:.5rem;padding:.75rem .5rem;border-bottom:1px solid #f0f0f0;font-size:.85rem;color:#333;align-items:center}.table-row:last-child{border-bottom:none}.col-action{grid-column:1}.col-target{grid-column:2}.col-time,.col-distance,.col-count{grid-column:3}.col-interval{grid-column:4}.col-sets{grid-column:5}.data-table:has(.col-action) .table-header,.data-table:has(.col-action) .table-row{grid-template-columns:2fr 1fr 1fr 1fr 1fr}.items-grid{display:flex;flex-wrap:wrap;gap:.5rem}.item-tag{padding:.5rem 1rem;background:#667eea;color:#fff;border-radius:20px;font-size:.85rem;cursor:pointer;transition:all .3s ease}.item-tag.completed{background:#28a745}.item-tag:hover{transform:translateY(-1px)}.footer-slogan{text-align:center;padding:2rem 1rem;color:#999;font-size:.9rem;font-style:italic;letter-spacing:.5px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid #e0e0e0;display:flex;justify-content:space-around;align-items:center;padding:.75rem .5rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom));box-shadow:0 -2px 8px #00000014;z-index:1000}.nav-item{display:flex;flex-direction:column;align-items:center;gap:.25rem;cursor:pointer;transition:all .3s ease;padding:.5rem;border-radius:8px}.nav-item:hover{background:#f0f0f0;transform:translateY(-2px)}.nav-icon{font-size:1.25rem}.nav-item span{font-size:.75rem;color:#666}@media (max-width: 480px){.page-content{padding:.75rem .75rem 6rem}.week-plan,.content-section{padding:1rem;border-radius:10px}.day-header{padding:.5rem .25rem;font-size:.75rem}.training-bar,.rest-bar{height:60px}.table-header,.table-row{gap:.25rem;padding:.5rem .25rem;font-size:.75rem}.col-action{grid-column:1}.col-target{grid-column:2}.col-time,.col-distance,.col-count{grid-column:3}.col-interval{grid-column:4}.col-sets{grid-column:5}.bottom-nav{padding:.5rem .25rem;padding-bottom:calc(.5rem + env(safe-area-inset-bottom))}.nav-icon{font-size:1.1rem}.nav-item span{font-size:.7rem}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.week-plan,.content-section{animation:fadeInUp .5s ease-out}.item-tag,.table-row{animation:slideInLeft .3s ease-out}.spinner{width:30px;height:30px;border:3px solid #f3f3f3;border-top:3px solid #ff6b6b;border-radius:50%;animation:spin .8s linear infinite}.app-container{width:100%;min-height:100vh;background-color:#f5f5f5;display:flex;flex-direction:column;align-items:center;justify-content:center}.mobile-container{max-width:480px;width:100%;min-height:100vh;background-color:#fff;box-shadow:0 0 20px #0000001a;position:relative;overflow:hidden}.page-transition{animation:pageFadeIn .3s ease-in-out}@keyframes pageFadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.page-title{font-size:1.5rem;font-weight:600;color:#333;margin-bottom:1.5rem;text-align:center;padding:1rem 0;border-bottom:1px solid #eee}.page-content{padding:1.5rem;min-height:calc(100vh - 80px)}.loading{display:flex;justify-content:center;align-items:center;padding:2rem}.spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #007bff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-message{color:#dc3545;font-size:.875rem;margin-top:.5rem}.success-message{color:#28a745;font-size:.875rem;margin-top:.5rem}.btn-group{display:flex;gap:1rem;margin-top:1.5rem}.btn-block{width:100%}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}@media (max-width: 768px){.mobile-container{box-shadow:none}.page-content{padding:1rem}.card-grid{grid-template-columns:1fr}}@media (max-width: 480px){.page-title{font-size:1.25rem}.page-content{padding:.75rem}.btn{padding:.5rem 1rem;font-size:.875rem}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5}#root{width:100%;min-height:100vh}@media (max-width: 768px){html{font-size:14px}}@media (max-width: 480px){html{font-size:12px}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.container{max-width:480px;margin:0 auto;min-height:100vh;background-color:#fff;box-shadow:0 0 20px #0000001a}.btn{padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s ease;text-decoration:none;display:inline-block;text-align:center}.btn-primary{background-color:#007bff;color:#fff}.btn-primary:hover{background-color:#0056b3;transform:translateY(-2px);box-shadow:0 4px 12px #007bff4d}.btn-secondary{background-color:#6c757d;color:#fff}.btn-secondary:hover{background-color:#545b62}.btn-danger{background-color:#dc3545;color:#fff}.btn-danger:hover{background-color:#c82333}.btn-success{background-color:#28a745;color:#fff}.btn-success:hover{background-color:#218838}.form-group{margin-bottom:1.5rem}.form-label{display:block;margin-bottom:.5rem;font-weight:500;color:#333}.form-input{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:8px;font-size:1rem;transition:border-color .3s ease}.form-input:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.form-input::placeholder{color:#ccc}.card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #0000001a;margin-bottom:1rem}.card-header{font-size:1.25rem;font-weight:600;margin-bottom:1rem;color:#333}.card-body{color:#666}.list-group{list-style:none}.list-group-item{padding:1rem 1.5rem;border-bottom:1px solid #eee;transition:background-color .3s ease}.list-group-item:last-child{border-bottom:none}.list-group-item:hover{background-color:#f8f9fa}.navbar{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background-color:#007bff;color:#fff;box-shadow:0 2px 4px #0000001a}.navbar-brand{font-size:1.25rem;font-weight:600;text-decoration:none;color:#fff}.navbar-nav{display:flex;list-style:none;gap:1rem}.nav-link{color:#fff;text-decoration:none;padding:.5rem 1rem;border-radius:6px;transition:background-color .3s ease}.nav-link:hover{background-color:#fff3}.fade-in{animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.slide-in{animation:slideIn .3s ease-out}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}.grid{display:grid;gap:1rem}.grid-1{grid-template-columns:1fr}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}@media (max-width: 768px){.grid-2{grid-template-columns:1fr}.grid-3{grid-template-columns:repeat(2,1fr)}}@media (max-width: 480px){.grid-3{grid-template-columns:1fr}}
