body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.welcome-text{color:#333;font-size:1.5rem;font-weight:500;line-height:1.3;margin:0 0 16px}.description-text{color:#666;font-size:.9rem;line-height:1.4;margin:0 auto 24px;max-width:320px;text-align:center}.waiting-notice{animation:pulse-waiting 2s ease-in-out infinite;background:linear-gradient(135deg,#fff3e0,#ffe0b2);border:2px solid #ff9800;border-radius:12px;margin:0 0 24px;padding:20px}@keyframes pulse-waiting{0%,to{border-color:#ff9800;box-shadow:0 0 0 0 #ff980066}50%{border-color:#ff6b35;box-shadow:0 0 0 10px #ff980000}}@media (max-width:768px){.welcome-container{max-width:90%;padding:24px}.welcome-text{font-size:1.3rem}.welcome-image{width:210px}.description-text{font-size:.85rem}.footer{padding:20px}.footer-links{gap:16px}.logo{height:25px}.logo-container{left:15px;top:15px}}@media (max-width:480px){.welcome-text{font-size:1.2rem}.welcome-image{width:180px}.description-text{font-size:.8rem}.continue-button{font-size:1rem;padding:10px 24px}.footer-link{font-size:.8rem}}.landing-page{background-image:url(/static/media/mainbackground.fb6a35f139122fe1af8e.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh;position:relative}.logo-container{left:20px;position:absolute;top:20px;z-index:1000}.logo{height:30px;width:auto}.main-content{align-items:center;display:flex;flex:1 1;justify-content:center;padding:20px}.welcome-container{background-color:#fff;border:1px solid #e0e0e0;border-radius:12px;box-shadow:0 4px 6px #0000001a;max-width:400px;padding:32px;text-align:center;width:100%}.config-container{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;margin:0 auto;max-width:500px;padding:24px;text-align:left;width:100%}.config-section{margin-bottom:24px}.config-section:last-child{margin-bottom:0}.welcome-image-container{margin-bottom:8px;text-align:center}.config-container .welcome-image{height:auto;margin-bottom:12px;object-fit:contain;width:180px}.setting-row{margin-bottom:12px}.setting-label{font-size:1rem;font-weight:600}.config-select{-webkit-appearance:none;appearance:none;background-color:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;font-size:.95rem;min-width:180px;outline:none;padding:10px 36px 10px 14px;transition:border-color .2s ease}.config-select:focus{border-color:#2196f3;box-shadow:0 0 0 2px #2196f333}.config-select:hover{border-color:#bbb}.mode-description{background-color:#f8f9fa;border-left:4px solid #2196f3;border-radius:8px;color:#555;font-size:.9rem;font-style:italic;line-height:1.4;margin-top:8px;padding:12px 16px}.config-button{background:linear-gradient(45deg,#2196f3 30%,#21cbf3 90%);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:500;padding:12px 24px;transition:all .3s ease;width:100%}.config-button:hover:not(:disabled){background:linear-gradient(45deg,#1976d2 30%,#0288d1 90%);box-shadow:0 4px 12px #2196f34d;transform:translateY(-1px)}.config-button.test-vibration{background:linear-gradient(45deg,#ff6b35 30%,#ff9f68 90%);font-weight:600}.config-button.test-vibration:hover{background:linear-gradient(45deg,#e55a2b 30%,#ff8a50 90%);box-shadow:0 4px 12px #ff6b3566;transform:translateY(-1px)}.config-button.disabled{background:#ccc;cursor:not-allowed;opacity:.6}.config-button.disabled:hover{box-shadow:none;transform:none}.save-config-button{background:linear-gradient(45deg,#4caf50 30%,#66bb6a 90%);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;letter-spacing:.5px;padding:14px 24px;text-transform:uppercase;transition:all .3s ease;width:100%}.save-config-button:hover{background:linear-gradient(45deg,#388e3c 30%,#4caf50 90%);box-shadow:0 6px 16px #4caf5066;transform:translateY(-2px)}.config-button:disabled{background:#ccc;box-shadow:none!important;cursor:not-allowed;opacity:.5;transform:none!important}.welcome-image{height:auto;margin-bottom:20px;object-fit:contain;width:240px}.continue-button{background:linear-gradient(45deg,#2196f3 30%,#21cbf3 90%);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:500;min-width:120px;padding:12px 32px;text-transform:none;transition:all .3s ease}.continue-button:hover{background:linear-gradient(45deg,#1976d2 30%,#0288d1 90%);box-shadow:0 4px 12px #2196f34d;transform:translateY(-1px)}.continue-button:active{transform:translateY(0)}.footer{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:#0000001a;justify-content:space-between;padding:24px 32px}.footer,.settings-button{align-items:center;display:flex}.settings-button{background:none;border:none;border-radius:50%;color:#666;cursor:pointer;font-size:32px;justify-content:center;min-height:48px;min-width:48px;padding:12px;transition:all .3s ease}.settings-button:hover{background-color:#2196f30a;color:#2196f3}.footer-links{display:flex;gap:24px}.footer-link{border-radius:4px;color:#fff;font-size:1.1rem;font-weight:500;padding:8px 12px;text-decoration:none;transition:color .3s ease}.footer-link:hover{color:#2196f3;text-decoration:underline}@media (max-width:768px){.welcome-container{max-width:90%;padding:24px}.config-container{margin:10px auto;padding:20px;width:95%}.setting-row{align-items:stretch;flex-direction:column;gap:8px;min-height:auto}.setting-label{margin-bottom:4px;margin-right:0;text-align:left}.setting-control{align-self:stretch;width:100%}.config-select{min-width:auto;width:100%}.mode-description{font-size:.85rem;padding:10px 12px}.config-container .welcome-image{width:150px}.welcome-image{width:210px}.footer{padding:20px}.footer-links{gap:16px}.logo{height:25px}.logo-container{left:15px;top:15px}}@media (max-width:480px){.welcome-image{width:180px}.continue-button{font-size:1rem;padding:10px 24px}.footer-link{font-size:.8rem}}.modal-overlay{animation:fadeIn .3s ease;background-color:#000000b3;z-index:9999}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{animation:slideUp .3s ease;border-radius:16px;min-width:300px;padding:40px;text-align:center}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-content h2{color:#333;font-size:1.5rem;font-weight:600;margin:20px 0 10px}.modal-content p{color:#666;font-size:.95rem;margin:0}.spinner{animation:spin 1s linear infinite;border:4px solid #f3f3f3;border-radius:50%;border-top-color:#4caf50;height:50px;margin:0 auto;width:50px}.test-trigger-container{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;margin:0 auto;max-width:700px;padding:32px;width:100%}.section-title{color:#666;font-size:1.1rem}.button-grid-2{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr}.button-grid-3{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr 1fr}.test-button{border:none;border-radius:8px;color:#fff;font-weight:500;padding:14px 20px}.test-button.test-vibration{background:linear-gradient(45deg,#ff6b35 30%,#ff9f68 90%)}.test-button.test-vibration:hover:not(:disabled){background:linear-gradient(45deg,#e55a2b 30%,#ff8a50 90%);box-shadow:0 4px 12px #ff6b3566;transform:translateY(-2px)}.test-button.test-trigger{background:linear-gradient(45deg,#9c27b0 30%,#ba68c8 90%)}.test-button.test-trigger:hover:not(:disabled){background:linear-gradient(45deg,#7b1fa2 30%,#9c27b0 90%);box-shadow:0 4px 12px #9c27b066;transform:translateY(-2px)}.test-button:disabled{background:#ccc;box-shadow:none!important;transform:none!important}.warning-text{color:#999;font-size:.85em;font-style:italic;margin-top:12px;text-align:center}.custom-params{background:linear-gradient(135deg,#f3e5f5,#e1bee7);border:2px solid #9c27b0;border-radius:12px;margin-top:24px;padding:20px}.custom-title{color:#6a1b9a;font-size:1rem;font-weight:600;margin:0 0 16px;text-align:center}.param-row{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.param-label{align-items:center;color:#4a148c;display:flex;font-size:.9rem;font-weight:500;gap:12px;justify-content:space-between}.param-input{background:#fff;border:2px solid #9c27b0;border-radius:6px;color:#333;font-size:.9rem;font-weight:600;padding:8px 12px;text-align:center;width:120px}.param-input:focus{border-color:#6a1b9a;box-shadow:0 0 0 3px #9c27b033;outline:none}.param-slider{-webkit-appearance:none;background:linear-gradient(90deg,#e1bee7 0,#9c27b0);border-radius:4px;height:8px;outline:none;width:100%}.param-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#9c27b0;border-radius:50%;box-shadow:0 2px 4px #0003;cursor:pointer;height:20px;-webkit-transition:all .2s ease;transition:all .2s ease;width:20px}.param-slider::-webkit-slider-thumb:hover{background:#6a1b9a;transform:scale(1.1)}.param-slider::-moz-range-thumb{background:#9c27b0;border:none;border-radius:50%;box-shadow:0 2px 4px #0003;cursor:pointer;height:20px;-moz-transition:all .2s ease;transition:all .2s ease;width:20px}.param-slider::-moz-range-thumb:hover{background:#6a1b9a;transform:scale(1.1)}.test-custom{background:linear-gradient(45deg,#6a1b9a 30%,#9c27b0 90%);font-size:1.05rem;margin-top:12px;padding:16px;width:100%}.test-custom:hover:not(:disabled){background:linear-gradient(45deg,#4a148c 30%,#7b1fa2 90%)}.gamepad-notice{animation:pulse 2s ease-in-out infinite;background:linear-gradient(135deg,#fff8e1,#ffecb3);border:2px solid #ffb74d;border-radius:8px;margin-bottom:24px;padding:16px;text-align:center}.gamepad-notice p{color:#e65100;font-weight:600;margin:0}@keyframes pulse{0%,to{border-color:#ffb74d;box-shadow:0 0 0 0 #ffb74d66}50%{border-color:#ff9800;box-shadow:0 0 0 8px #ffb74d00}}@media (max-width:768px){.test-trigger-container{padding:24px;width:95%}.page-title{font-size:1.5rem}.button-grid-2,.button-grid-3{grid-template-columns:1fr}.test-button{font-size:.95rem;padding:12px 16px}}@media (max-width:480px){.page-title{font-size:1.3rem}.device-info{padding:12px}.device-info p{font-size:.85rem}}.test-sound-container{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;margin:0 auto;max-width:700px;padding:32px;width:100%}.device-info{margin-bottom:20px}.device-info.warning{background:linear-gradient(135deg,#fff3e0,#ffe0b2);border-color:#ff9800}.device-info.warning p{color:#e65100}.warning-text{color:#f57c00!important;font-weight:500}.status-info{align-items:center;background:linear-gradient(135deg,#f3e5f5,#e1bee7);border:2px solid #9c27b0;border-radius:8px;display:flex;gap:12px;margin-bottom:20px;padding:16px}.status-info p{color:#6a1b9a;font-size:.95rem;font-weight:500;margin:0}.test-section{margin-bottom:32px}.section-title{border-bottom:2px solid #e0e0e0;color:#444;font-size:1.2rem;margin:0 0 16px;padding-bottom:8px}.button-grid{grid-template-columns:repeat(2,1fr);margin-bottom:16px}@media (max-width:600px){.button-grid{grid-template-columns:1fr}}.test-button{border:2px solid;border-radius:10px;box-shadow:0 2px 8px #0000001a;cursor:pointer;font-size:1rem;font-weight:600;padding:16px 24px;text-align:center;transition:all .3s ease}.test-button:hover:not(:disabled){box-shadow:0 4px 12px #0003;transform:translateY(-2px)}.test-button:active:not(:disabled){box-shadow:0 2px 4px #0000001a;transform:translateY(0)}.test-button:disabled{cursor:not-allowed;opacity:.5}.test-button.low-tone{background:linear-gradient(135deg,#c8e6c9,#a5d6a7);border-color:#4caf50;color:#2e7d32}.test-button.low-tone:hover:not(:disabled){background:linear-gradient(135deg,#a5d6a7,#81c784)}.test-button.mid-tone{background:linear-gradient(135deg,#bbdefb,#90caf9);border-color:#2196f3;color:#1565c0}.test-button.mid-tone:hover:not(:disabled){background:linear-gradient(135deg,#90caf9,#64b5f6)}.test-button.high-tone{background:linear-gradient(135deg,#f8bbd0,#f48fb1);border-color:#e91e63;color:#ad1457}.test-button.high-tone:hover:not(:disabled){background:linear-gradient(135deg,#f48fb1,#f06292)}.test-button.beep{background:linear-gradient(135deg,#fff9c4,#fff59d);border-color:#fbc02d;color:#f57f17}.test-button.beep:hover:not(:disabled){background:linear-gradient(135deg,#fff59d,#fff176)}.test-button.sequence{background:linear-gradient(135deg,#d1c4e9,#b39ddb);border-color:#673ab7;color:#4527a0;font-size:1.1rem;padding:20px 24px;width:100%}.test-button.sequence:hover:not(:disabled){background:linear-gradient(135deg,#b39ddb,#9575cd)}.info-section{background:#f5f5f5;border-left:4px solid #2196f3;border-radius:8px;margin-top:32px;padding:20px}.info-section h3{color:#333;font-size:1.1rem;margin:0 0 12px}.info-section p{color:#666;line-height:1.6;margin:0 0 12px}.info-section ul{color:#666;margin:0;padding-left:24px}.info-section li{line-height:1.6;margin-bottom:8px}.spinner-small{animation:spin 1s linear infinite;border:3px solid #f3f3f3;border-radius:50%;border-top-color:#9c27b0;height:20px;width:20px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.custom-timing-container{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;margin:0 auto;max-width:700px;padding:32px;width:100%}.instruction-notice{animation:pulse-instruction 2s ease-in-out infinite;background:linear-gradient(135deg,#fff8e1,#ffecb3);border:3px solid #ffa726;border-radius:12px;margin-bottom:24px;padding:32px;text-align:center}.instruction-icon{animation:bounce 1s ease-in-out infinite;font-size:4rem;margin:0 0 16px}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.instruction-title{color:#e65100;font-size:1.4rem;font-weight:600;margin:0 0 12px}.instruction-text{color:#f57c00;font-size:1rem;line-height:1.5;margin:0}@keyframes pulse-instruction{0%,to{border-color:#ffa726;box-shadow:0 0 0 0 #ffa72666}50%{border-color:#ff9800;box-shadow:0 0 0 10px #ffa72600}}.timing-config-section{background:linear-gradient(135deg,#f3e5f5,#e1bee7);border:2px solid #9c27b0;border-radius:12px;padding:24px}.selected-button-info{border-bottom:2px solid #9c27b0;margin-bottom:32px;padding-bottom:20px;text-align:center}.selected-button-info h2{color:#6a1b9a;font-size:1.8rem;font-weight:700;margin:0 0 8px}.button-hint{color:#8e24aa;font-size:.9rem;font-style:italic;margin:0}.timing-control{margin-bottom:32px}.timing-label{align-items:center;color:#4a148c;display:flex;font-size:1.1rem;font-weight:600;justify-content:space-between;margin-bottom:12px}.label-text{flex:1 1}.timing-value{background:#fff;border:2px solid #9c27b0;border-radius:6px;color:#6a1b9a;font-weight:700;min-width:80px;padding:6px 16px;text-align:center}.timing-slider{-webkit-appearance:none;background:linear-gradient(90deg,#e1bee7 0,#9c27b0);border-radius:6px;height:12px;margin-bottom:8px;outline:none;width:100%}.timing-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#9c27b0;border-radius:50%;box-shadow:0 2px 6px #0000004d;cursor:pointer;height:24px;-webkit-transition:all .2s ease;transition:all .2s ease;width:24px}.timing-slider::-webkit-slider-thumb:hover{background:#6a1b9a;box-shadow:0 4px 8px #0006;transform:scale(1.2)}.timing-slider::-moz-range-thumb{background:#9c27b0;border:none;border-radius:50%;box-shadow:0 2px 6px #0000004d;cursor:pointer;height:24px;-moz-transition:all .2s ease;transition:all .2s ease;width:24px}.timing-slider::-moz-range-thumb:hover{background:#6a1b9a;box-shadow:0 4px 8px #0006;transform:scale(1.2)}.timing-range-labels{color:#7b1fa2;display:flex;font-size:.85rem;font-weight:500;justify-content:space-between}.save-timing-button{background:linear-gradient(45deg,#6a1b9a 30%,#9c27b0 90%);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;margin-top:8px;padding:16px;transition:all .3s ease;width:100%}.save-timing-button:hover{background:linear-gradient(45deg,#4a148c 30%,#7b1fa2 90%);box-shadow:0 6px 16px #9c27b066;transform:translateY(-2px)}.save-timing-button:active{transform:translateY(0)}@media (max-width:768px){.custom-timing-container{padding:24px;width:95%}.page-title{font-size:1.5rem}.instruction-icon{font-size:3rem}.instruction-title{font-size:1.2rem}.selected-button-info h2{font-size:1.5rem}}@media (max-width:480px){.page-title{font-size:1.3rem}.device-info{padding:12px}.device-info p{font-size:.85rem}.timing-label{font-size:1rem}.save-timing-button{font-size:1rem;padding:14px}}.custom-mapping-container{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;margin:0 auto;max-width:1100px;padding:32px;width:100%}.back-button{background:#f5f5f5;border:1px solid #ddd;border-radius:8px;color:#666;cursor:pointer;font-size:.9rem;font-weight:500;margin-bottom:20px;padding:8px 16px;transition:all .2s ease}.back-button:hover{background:#e0e0e0;color:#333}.page-title{color:#333;font-size:1.8rem;font-weight:600;margin:0 0 24px;text-align:center}.device-info{background:linear-gradient(135deg,#e3f2fd,#bbdefb);border:2px solid #2196f3;margin-bottom:24px}.device-info p{color:#1565c0;font-size:.95rem;margin:4px 0}.device-info strong{font-weight:600}.instruction-box{background:linear-gradient(135deg,#fff8e1,#ffecb3);border:2px solid #ffa726;border-radius:8px;margin-bottom:32px;padding:16px;text-align:center}.instruction-box p{color:#e65100;font-size:.95rem;font-weight:500;margin:0}.hitbox-layout-container{background-image:url(/static/media/hitbox-layout.52b99c414ef1d5789234.png);background-position:50%;background-repeat:no-repeat;background-size:cover;border:3px solid #333;border-radius:12px;height:600px;margin:0 auto 32px;overflow:hidden;position:relative;width:1000px}.button-mapping-input{align-items:center;display:flex;flex-direction:column;position:absolute;transform:translate(-50%,-50%);z-index:10}.button-label{background:#ffffffe6;border-radius:4px;color:#333;font-size:.75rem;font-weight:600;letter-spacing:.5px;margin-bottom:4px;padding:2px 8px;text-transform:uppercase}.mapping-button{background:#fffffff2;border:3px solid #2196f3;border-radius:50%;color:#1565c0;cursor:pointer;font-size:1rem;font-weight:700;height:60px;text-align:center;text-transform:uppercase;transition:all .2s ease;width:60px}.mapping-button:hover{background:#e3f2fdf2;border-color:#1976d2;box-shadow:0 4px 12px #2196f366;transform:scale(1.1)}.mapping-button:active{transform:scale(.95)}.popup-overlay{align-items:center;animation:fadeIn .3s ease;background-color:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10000}.popup-content{animation:slideUp .3s ease;background:#fff;border-radius:16px;box-shadow:0 8px 32px #0000004d;max-width:500px;padding:0;width:90%}.popup-header{align-items:center;border-bottom:2px solid #f0f0f0;display:flex;justify-content:space-between;padding:20px 24px}.popup-header h3{color:#333;font-size:1.5rem;font-weight:600;margin:0}.popup-close{align-items:center;background:none;border:none;border-radius:50%;color:#999;cursor:pointer;display:flex;font-size:1.5rem;height:32px;justify-content:center;padding:0;transition:all .2s ease;width:32px}.popup-close:hover{background:#f5f5f5;color:#333}.popup-body{padding:24px}.popup-label{color:#666;font-size:1.1rem;margin:0 0 20px}.popup-label strong{color:#2196f3;font-weight:700}.key-selection-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(4,1fr)}.key-option{background:linear-gradient(135deg,#f5f5f5,#e8e8e8);border:2px solid #ddd;border-radius:8px;color:#333;cursor:pointer;font-size:1rem;font-weight:600;padding:16px;text-transform:uppercase;transition:all .2s ease}.key-option:hover{background:linear-gradient(135deg,#e3f2fd,#bbdefb);border-color:#2196f3;box-shadow:0 4px 8px #2196f34d;color:#1565c0;transform:translateY(-2px)}.key-option.selected{background:linear-gradient(135deg,#4caf50,#45a049);border-color:#4caf50;box-shadow:0 4px 12px #4caf5066;color:#fff}.key-option:active{transform:translateY(0)}.button-actions{display:flex;gap:16px;justify-content:center}.reset-button{background:linear-gradient(45deg,#ff6b6b 30%,#ff8e53 90%);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:12px 32px;transition:all .3s ease}.reset-button:hover{background:linear-gradient(45deg,#ee5a52 30%,#ff7043 90%);box-shadow:0 6px 16px #ff6b6b66;transform:translateY(-2px)}.reset-button:active{transform:translateY(0)}@media (max-width:1200px){.custom-mapping-container{padding:24px;width:95%}.hitbox-layout-container{height:540px;width:900px}.mapping-button{font-size:.9rem;height:50px;width:50px}}@media (max-width:992px){.hitbox-layout-container{height:450px;width:750px}.mapping-button{font-size:.85rem;height:45px;width:45px}.key-selection-grid{grid-template-columns:repeat(3,1fr)}.button-label{font-size:.65rem}}@media (max-width:768px){.page-title{font-size:1.5rem}.hitbox-layout-container{height:400px;width:100%}.mapping-button{font-size:.8rem;height:40px;width:40px}.popup-content{width:95%}.key-selection-grid{gap:8px;grid-template-columns:repeat(3,1fr)}.key-option{font-size:.9rem;padding:12px}.button-label{font-size:.6rem;padding:1px 6px}}@media (max-width:480px){.custom-mapping-container{padding:16px}.page-title{font-size:1.3rem}.hitbox-layout-container{height:350px}.mapping-button{border-width:2px;font-size:.7rem;height:35px;width:35px}.key-selection-grid{grid-template-columns:repeat(2,1fr)}.popup-header h3{font-size:1.2rem}.button-label{font-size:.55rem}.reset-button{font-size:.9rem;padding:10px 24px}}.combination-threshold-container{margin:0 auto;max-width:900px;padding:20px;width:100%}.section-title{color:#333;font-size:1.5rem;font-weight:600;margin-bottom:20px;text-align:left}.current-combination-section{background:#fff;border:2px solid #e0e0e0;border-radius:12px;box-shadow:0 2px 8px #0000001a;margin-bottom:40px;padding:30px}.combination-display{align-items:center;display:flex;justify-content:center;min-height:150px}.combination-empty{color:#666;text-align:center}.empty-icon{font-size:3rem;margin-bottom:10px}.empty-text{color:#333;font-size:1.2rem;font-weight:600;margin-bottom:8px}.empty-hint{color:#888;font-size:.9rem}.combination-active{text-align:center;width:100%}.pressed-buttons{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:25px;min-height:50px}.button-chip{animation:chipPulse .3s ease-out;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:25px;box-shadow:0 4px 15px #667eea66;color:#fff;font-size:1rem;font-weight:600;padding:12px 24px}@keyframes chipPulse{0%{opacity:0;transform:scale(.8)}50%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.button-separator{color:#666;font-size:1.5rem;font-weight:700;margin:0 5px}.mode-toggle-section{background:#f5f5f5;border:1px solid #e0e0e0;border-radius:12px;display:flex;gap:10px;margin-bottom:30px;padding:8px}.mode-button{background:#0000;border:none;border-radius:8px;color:#666;cursor:pointer;flex:1 1;font-size:1rem;font-weight:600;padding:12px 20px;transition:all .3s ease}.mode-button:hover:not(:disabled){background:#0000000d;color:#333}.mode-button.active{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 2px 10px #667eea4d;color:#fff}.mode-button:disabled{cursor:not-allowed;opacity:.3}.button-grid{grid-gap:12px;background:#f9f9f9;border:2px dashed #d0d0d0;border-radius:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));margin-bottom:30px;padding:20px}.grid-button{align-items:center;background:#fff;border:2px solid #e0e0e0;border-radius:12px;color:#333;cursor:pointer;display:flex;flex-direction:column;font-size:.9rem;font-weight:600;gap:8px;justify-content:center;min-height:80px;padding:20px 15px;position:relative;transition:all .3s ease}.grid-button:hover{background:#f5f5f5;border-color:#999;box-shadow:0 2px 8px #0000001a;color:#000;transform:translateY(-2px)}.grid-button.selected{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#667eeacc;box-shadow:0 4px 15px #667eea66;color:#fff;transform:scale(1.05)}.grid-button.selected:hover{transform:scale(1.05) translateY(-2px)}.button-label{font-size:.85rem;text-align:center;word-break:break-word}.check-icon{background:#4caf50e6;border-radius:50%;box-shadow:0 2px 8px #4caf5066;color:#fff;font-size:.8rem;font-weight:700;height:24px;position:absolute;right:8px;top:8px;width:24px}.action-buttons,.check-icon{align-items:center;display:flex;justify-content:center}.action-buttons{gap:15px}.clear-button{background:#f4433633;border:1px solid #f4433666;border-radius:25px;color:#ff6b6b;cursor:pointer;font-size:1rem;font-weight:600;padding:12px 30px;transition:all .3s ease}.clear-button:hover{background:#f443364d;box-shadow:0 4px 15px #f443364d;transform:translateY(-2px)}.clear-button:active{transform:translateY(0)}.save-combination-button{background:linear-gradient(135deg,#f093fb,#f5576c);border:none;border-radius:30px;box-shadow:0 4px 20px #f5576c66;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;padding:15px 40px;transition:all .3s ease}.save-combination-button:hover{box-shadow:0 6px 25px #f5576c99;transform:translateY(-2px)}.save-combination-button:active{transform:translateY(0)}.saved-combinations-section{background:#fff;border:2px solid #e0e0e0;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:30px}.no-combinations{color:#666;font-size:1rem;padding:40px;text-align:center}.combinations-list{grid-gap:15px;display:grid;gap:15px}.combination-card{background:#fff;border:1px solid #e0e0e0;border-radius:10px;box-shadow:0 1px 4px #00000014;padding:20px;transition:all .3s ease}.combination-card:hover{background:#f9f9f9;border-color:#999;box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.combination-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:15px}.combination-name{color:#333;font-size:1.2rem;font-weight:600;margin:0}.combination-actions{display:flex;gap:8px}.apply-button,.delete-button{align-items:center;border:none;border-radius:50%;cursor:pointer;display:flex;font-size:1rem;height:36px;justify-content:center;transition:all .2s ease;width:36px}.apply-button{background:#4caf5033;border:1px solid #4caf5066;color:#4caf50}.apply-button:hover{background:#4caf504d;transform:scale(1.1)}.delete-button{background:#f4433633;border:1px solid #f4433666;color:#f44336}.delete-button:hover{background:#f443364d;transform:scale(1.1)}.combination-buttons{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.button-tag{background:#667eea4d;border:1px solid #667eea66;border-radius:15px;color:#a8b8ff;font-size:.85rem;font-weight:500;padding:6px 14px}.tag-separator{color:#666;font-size:.9rem;margin:0 2px}.combination-meta{color:#888;gap:15px;justify-content:space-between}.combination-meta,.threshold-input-group{align-items:center;display:flex;font-size:.85rem}.threshold-input-group{color:#666;gap:8px}.threshold-input-group label{color:#666;font-weight:500}.threshold-input{background:#fff;border:1px solid #d0d0d0;border-radius:6px;color:#333;font-size:.9rem;padding:6px 10px;text-align:center;transition:all .2s ease;width:60px}.threshold-input:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea1a;outline:none}.threshold-input:hover{border-color:#999}.threshold-unit{color:#666;font-weight:500}.meta-text{align-items:center;display:flex;gap:5px}.save-dialog{max-width:500px;width:90%}.dialog-description{color:#ffffffb3;font-size:.95rem;margin-bottom:20px}.selected-buttons-preview{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;margin-bottom:20px;padding:15px}.selected-buttons-preview strong{color:#fffc;display:block;font-size:.9rem;margin-bottom:10px}.preview-buttons{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.preview-chip{background:#667eea66;border-radius:12px;color:#fff;font-size:.85rem;font-weight:500;padding:6px 12px}.preview-separator{color:#ffffff80;font-size:.9rem;margin:0 2px}.dialog-input-group{margin-bottom:25px}.dialog-input-group label{color:#ffffffe6;display:block;font-size:.95rem;font-weight:500;margin-bottom:8px}.dialog-input{background:#ffffff1a;border:1px solid #fff3;border-radius:8px;color:#fff;font-size:1rem;padding:12px 15px;transition:all .3s ease;width:100%}.dialog-input:focus{background:#ffffff26;border-color:#667eea99;box-shadow:0 0 0 3px #667eea1a;outline:none}.dialog-input::placeholder{color:#ffffff4d}.dialog-actions{display:flex;gap:12px;justify-content:flex-end}.dialog-button{border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;padding:12px 30px;transition:all .3s ease}.dialog-button.cancel{background:#ffffff1a;border:1px solid #fff3;color:#fffc}.dialog-button.cancel:hover{background:#ffffff26}.dialog-button.confirm{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 4px 15px #667eea66;color:#fff}.dialog-button.confirm:hover{box-shadow:0 6px 20px #667eea99;transform:translateY(-2px)}.dialog-button.confirm:active{transform:translateY(0)}@media (max-width:768px){.combination-threshold-container{padding:15px}.current-combination-section,.saved-combinations-section{padding:20px}.section-title{font-size:1.3rem}.button-chip{font-size:.9rem;padding:10px 18px}.save-combination-button{font-size:1rem;padding:12px 30px}.combination-name{font-size:1.1rem}.dialog-actions{flex-direction:column}.dialog-button{width:100%}.button-grid{gap:10px;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));padding:15px}.grid-button{font-size:.8rem;min-height:70px;padding:15px 10px}.mode-toggle-section{flex-direction:column}.mode-button{font-size:.9rem;padding:10px 15px}.action-buttons{flex-direction:column;width:100%}.clear-button,.save-combination-button{padding:12px 20px;width:100%}}.modal-overlay{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10000}.modal-content{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000004d;max-height:80vh;max-width:500px;overflow-y:auto;position:relative;width:90%}.modal-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:20px 24px}.modal-header h2{color:#333;font-size:1.5rem;font-weight:600;margin:0}.close-button{background:none;border:none;border-radius:4px;color:#666;cursor:pointer;font-size:24px;padding:4px 8px;transition:all .2s ease}.close-button:hover{background-color:#f5f5f5;color:#333}.modal-body{padding:24px}.settings-section{margin-bottom:24px}.settings-section h3{color:#2196f3;font-size:1.1rem;font-weight:500;margin:0 0 8px}.settings-section h4{color:#333;font-size:1rem;font-weight:500;margin:0 0 12px}.device-info{background-color:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:16px}.device-info p{color:#555;font-size:.9rem;margin:0 0 8px}.device-info p:last-child{margin-bottom:0}.device-info strong{color:#333;font-weight:500}.device-value{color:#555;font-size:.9rem;font-weight:400;text-align:right}.status-connected{color:#28a745!important;font-weight:500!important}.setting-row{align-items:center;display:flex;justify-content:space-between;min-height:40px;width:100%}.setting-label{color:#333;flex:1 1;font-size:.95rem;font-weight:500;margin-right:16px;text-align:left}.setting-control{align-items:center;display:flex;flex-shrink:0}.settings-select{-webkit-appearance:none;appearance:none;background-color:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;background-size:16px;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;font-size:.95rem;min-width:150px;outline:none;padding:8px 32px 8px 12px;transition:border-color .2s ease}.settings-select:focus{border-color:#2196f3;box-shadow:0 0 0 2px #2196f333}.settings-select:hover{border-color:#bbb}.settings-toggle-label{align-items:center;cursor:pointer;display:flex;margin-left:auto;position:relative}.settings-toggle{display:none}.toggle-slider{background-color:#ccc;border-radius:24px;flex-shrink:0;height:24px;position:relative;transition:background-color .3s ease;width:48px}.toggle-slider:before{background-color:#fff;border-radius:50%;box-shadow:0 2px 4px #0003;content:"";height:20px;left:2px;position:absolute;top:2px;transition:transform .3s ease;width:20px}.settings-toggle:checked+.toggle-slider{background-color:#2196f3}.settings-toggle:checked+.toggle-slider:before{transform:translateX(24px)}.modal-footer{border-top:1px solid #e0e0e0;display:flex;justify-content:flex-end;padding:16px 24px}.modal-button{background:linear-gradient(45deg,#2196f3 30%,#21cbf3 90%);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.95rem;font-weight:500;padding:10px 24px;transition:all .3s ease}.modal-button:hover{background:linear-gradient(45deg,#1976d2 30%,#0288d1 90%);box-shadow:0 4px 12px #2196f34d;transform:translateY(-1px)}@media (max-width:768px){.modal-content{margin:20px;width:95%}.modal-header{padding:16px 20px}.modal-body{padding:20px}.modal-footer{padding:12px 20px}.device-info{padding:12px}.device-info p{font-size:.85rem}.setting-row{align-items:stretch;flex-direction:column;gap:8px;min-height:auto}.setting-label{margin-bottom:4px;margin-right:0;text-align:left}.setting-control{align-self:stretch;width:100%}.settings-select{min-width:auto;width:100%}.settings-toggle-label{justify-content:flex-end;margin-left:0}.device-value{text-align:left}}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}.App-header{align-items:center;background-color:#282c34;color:#fff;display:flex;flex-direction:column;font-size:calc(10px + 2vmin);justify-content:center;min-height:100vh}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}
/*# sourceMappingURL=main.2dc88b69.css.map*/