:root{--primary-color:#4361ee;--secondary-color:#3a0ca3;--accent-color:#7209b7;--light-color:#f8f9fa;--dark-color:#212529;--gray-color:#6c757d;--success-color:#4cc9f0;--warning-color:#f72585;--keyboard-test-color:#ff9e00;--keyboard-color:#6a994e;--border-radius:12px;--box-shadow:0 8px 24px rgba(0,0,0,0.1);--transition:all 0.3s ease}*{margin:0;padding:0;box-sizing:border-box;font-family:'Segoe UI','Microsoft YaHei',sans-serif}body{background-color:#f0f2f5;color:var(--dark-color);line-height:1.6}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 20px}header{background:linear-gradient(135deg,var(--primary-color),var(--secondary-color));color:white;padding:20px 0;box-shadow:0 4px 12px rgba(0,0,0,0.1);position:sticky;top:0;z-index:100}.header-content{display:flex;justify-content:space-between;align-items:center}.logo{display:flex;align-items:center;gap:15px}.logo i{font-size:2.5rem}.logo h1{font-size:1.8rem;font-weight:700}.logo span{color:var(--success-color)}nav ul{display:flex;list-style:none;gap:25px}nav a{color:white;text-decoration:none;font-weight:600;font-size:1.1rem;padding:8px 12px;border-radius:6px;transition:var(--transition)}nav a:hover,nav a.active{background-color:rgba(255,255,255,0.2)}.mobile-menu-btn{display:none;font-size:1.5rem;background:none;border:none;color:white;cursor:pointer}main{padding:40px 0}.tool-section{display:none;animation:fadeIn 0.5s ease}.tool-section.active{display:block}@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.section-title{font-size:1.8rem;margin-bottom:25px;color:var(--secondary-color);display:flex;align-items:center;gap:10px}.section-title i{color:var(--accent-color)}.tools-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:25px;margin-bottom:40px}.tool-card{background:white;border-radius:var(--border-radius);padding:25px;box-shadow:var(--box-shadow);transition:var(--transition);cursor:pointer;border:2px solid transparent}.tool-card:hover{transform:translateY(-5px);border-color:var(--primary-color)}.tool-card i{font-size:2.5rem;color:var(--primary-color);margin-bottom:15px}.tool-card h3{font-size:1.4rem;margin-bottom:10px;color:var(--dark-color)}.tool-card p{color:var(--gray-color);margin-bottom:20px}.use-tool-btn{background-color:var(--primary-color);color:white;border:none;padding:10px 20px;border-radius:6px;font-weight:600;cursor:pointer;transition:var(--transition);width:100%}.use-tool-btn:hover{background-color:var(--secondary-color)}.tool-detail{background:white;border-radius:var(--border-radius);padding:30px;box-shadow:var(--box-shadow);margin-top:30px}.tool-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;padding-bottom:15px;border-bottom:2px solid #f0f2f5}.tool-header h2{font-size:1.6rem;color:var(--secondary-color)}.close-tool{background:none;border:none;font-size:1.5rem;color:var(--gray-color);cursor:pointer;transition:var(--transition)}.close-tool:hover{color:var(--warning-color)}.keyboard-test-container{display:flex;flex-direction:column;gap:20px}.test-controls{display:flex;flex-wrap:wrap;gap:15px;margin-bottom:20px}.control-btn{padding:12px 24px;border-radius:6px;border:none;font-weight:600;cursor:pointer;transition:var(--transition);display:flex;align-items:center;gap:8px}.btn-success{background-color:var(--success-color);color:white}.btn-success:hover{background-color:#3ab8d9}.btn-warning{background-color:var(--warning-color);color:white}.btn-warning:hover{background-color:#d1146a}.btn-secondary{background-color:#e9ecef;color:var(--dark-color)}.btn-secondary:hover{background-color:#dee2e6}.test-status{display:flex;gap:15px;flex-wrap:wrap;margin-bottom:20px}.status-card{flex:1;min-width:200px;background:#f8f9fa;border-radius:var(--border-radius);padding:20px;display:flex;align-items:center;gap:15px}.status-icon{width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;color:white}.status-icon.active{background-color:var(--success-color)}.status-icon.inactive{background-color:var(--gray-color)}.status-info h4{font-size:1.1rem;margin-bottom:5px}.status-info p{color:var(--gray-color);font-size:0.9rem}.keyboard-visualization{margin-top:20px;padding:20px;background:#f8f9fa;border-radius:var(--border-radius)}.keyboard-title{font-size:1.2rem;margin-bottom:15px;color:var(--secondary-color);display:flex;align-items:center;justify-content:space-between}.keyboard{display:flex;flex-direction:column;gap:8px;margin-top:15px}.keyboard-row{display:flex;justify-content:center;gap:6px}.key{background:white;border:2px solid #dee2e6;border-radius:8px;padding:12px 8px;min-width:50px;text-align:center;font-weight:600;box-shadow:0 4px 6px rgba(0,0,0,0.05);transition:var(--transition);cursor:pointer;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center}.key.wide{min-width:80px}.key.extra-wide{min-width:120px}.key.space{min-width:300px}.key:hover{background-color:#e7f5ff;border-color:var(--primary-color)}.key.pressed{background-color:var(--success-color);color:white;border-color:var(--success-color);transform:translateY(-2px);box-shadow:0 6px 12px rgba(76,201,240,0.2)}.key.failed{background-color:var(--warning-color);color:white;border-color:var(--warning-color);transform:translateY(-2px);box-shadow:0 6px 12px rgba(247,37,133,0.2)}.key-label{font-size:0.9rem;font-weight:600}.key-code-label{font-size:0.7rem;color:var(--gray-color);margin-top:4px}.key-test-area{background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-radius:var(--border-radius);padding:30px;text-align:center;border:3px dashed #ced4da;transition:var(--transition);cursor:pointer;margin-top:20px}.key-test-area.active{border-color:var(--primary-color);background:linear-gradient(135deg,#eef2ff,#dbe4ff)}.test-instruction{font-size:1.1rem;color:var(--gray-color);margin-bottom:20px}.key-display{display:flex;justify-content:center;align-items:center;gap:20px;margin-bottom:25px;flex-wrap:wrap}.key-info-box{background:white;border-radius:var(--border-radius);padding:20px;min-width:200px;box-shadow:var(--box-shadow)}.key-info-title{font-size:0.9rem;color:var(--gray-color);margin-bottom:5px}.key-info-value{font-size:2.5rem;font-weight:700;color:var(--primary-color);font-family:'Consolas',monospace}.test-progress{margin-top:30px}.progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.progress-bar{height:10px;background-color:#e9ecef;border-radius:5px;overflow:hidden;margin-bottom:15px}.progress-fill{height:100%;background-color:var(--success-color);border-radius:5px;transition:width 0.5s ease}.progress-stats{display:flex;gap:15px;flex-wrap:wrap}.progress-stat{background:#f8f9fa;padding:15px;border-radius:8px;flex:1;min-width:150px;text-align:center}.progress-value{font-size:1.8rem;font-weight:700;color:var(--primary-color)}.progress-label{color:var(--gray-color);font-size:0.9rem;margin-top:5px}.test-report{margin-top:30px;border-radius:var(--border-radius);overflow:hidden;border:1px solid #e0e0e0;background:white}.report-header{background:#f8f9fa;padding:15px 20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e0e0e0}.report-title{font-weight:600;color:var(--dark-color);display:flex;align-items:center;gap:8px}.report-content{padding:20px;max-height:300px;overflow-y:auto}.report-table{width:100%;border-collapse:collapse;font-size:0.9rem}.report-table th,.report-table td{padding:12px 15px;text-align:left;border-bottom:1px solid #eee}.report-table th{background-color:#f8f9fa;font-weight:600;color:var(--dark-color);white-space:nowrap}.report-table tr:hover{background-color:#f9f9f9}.test-result{display:inline-block;padding:4px 8px;border-radius:4px;font-size:0.8rem;font-weight:600}.result-pass{background-color:#d4edda;color:#155724}.result-fail{background-color:#f8d7da;color:#721c24}.result-warning{background-color:#fff3cd;color:#856404}.test-modes{display:flex;gap:15px;flex-wrap:wrap;margin-bottom:20px}.mode-card{flex:1;min-width:200px;background:white;border-radius:var(--border-radius);padding:20px;box-shadow:var(--box-shadow);cursor:pointer;transition:var(--transition);border:2px solid transparent;text-align:center}.mode-card:hover{transform:translateY(-5px);border-color:var(--primary-color)}.mode-card.active{border-color:var(--primary-color);background-color:#eef2ff}.mode-icon{font-size:2.5rem;color:var(--primary-color);margin-bottom:15px}.mode-title{font-size:1.2rem;margin-bottom:10px;color:var(--dark-color)}.mode-description{color:var(--gray-color);font-size:0.9rem}.config-options{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:15px;margin-top:15px}.option-group{background:#f8f9fa;padding:15px;border-radius:8px}.option-group h4{margin-bottom:10px;color:var(--secondary-color);font-size:1rem;display:flex;align-items:center;gap:8px}.checkbox-label{display:flex;align-items:center;gap:8px;margin-bottom:8px;cursor:pointer;font-size:0.95rem}.checkbox-label input[type="checkbox"]{width:16px;height:16px;cursor:pointer}.select-input{width:100%;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:0.95rem;margin-top:5px;background:white}footer{background-color:var(--dark-color);color:white;padding:40px 0;margin-top:60px}.footer-content{display:flex;flex-wrap:wrap;justify-content:space-between;gap:40px}.footer-section{flex:1;min-width:250px}.footer-section h3{font-size:1.3rem;margin-bottom:20px;color:var(--success-color)}.footer-links{list-style:none}.footer-links li{margin-bottom:10px}.footer-links a{color:#ddd;text-decoration:none;transition:var(--transition)}.footer-links a:hover{color:var(--success-color)}.copyright{text-align:center;margin-top:40px;padding-top:20px;border-top:1px solid #444;color:#aaa;font-size:0.9rem}@media (max-width:768px){.header-content{flex-direction:column;gap:20px}nav ul{flex-direction:column;gap:10px;text-align:center}.mobile-menu-btn{display:block;position:absolute;top:25px;right:20px}.mobile-menu{display:none;width:100%;margin-top:15px}.mobile-menu.show{display:block}.key-display{flex-direction:column}.keyboard-row{flex-wrap:wrap}.key.space{min-width:200px}.config-options{grid-template-columns:1fr}.test-modes{flex-direction:column}.status-card,.progress-stat{min-width:100%}}