/* Main styles for DualShock Calibration GUI */ /* Add padding to body to prevent content from being hidden behind fixed footer */ body { padding-bottom: 80px; } dl.row dt { font-weight: normal; } dl.row dd { font-family: monospace; } #left-stick-card, #right-stick-card { cursor: pointer; outline: none !important; } .stick-card-active { border: 1px solid #0d6efd !important; box-shadow: 0 0 10px rgba(13, 110, 253, 0.3) !important; } .stick-card-active .card-header { background-color: #0d6efd !important; color: white !important; } /* Quick Test Icon Animations */ @keyframes shake { 0%, 100% { transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { transform: translateX(-2px); } 20%, 40%, 60%, 80% { transform: translateX(2px); } } @keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.1); opacity: 0.8; } } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-3px); } 60% { transform: translateY(-2px); } } @keyframes glow { 0%, 100% { text-shadow: 0 0 5px rgba(13, 110, 253, 0.5); } 50% { text-shadow: 0 0 15px rgba(13, 110, 253, 0.8), 0 0 25px rgba(13, 110, 253, 0.6); } } /* Animation classes for different test types - only animate when accordion is expanded */ .accordion-item:has(.accordion-collapse.show) i.fas.test-icon-usb { animation: pulse 1s ease-in-out infinite !important; } .accordion-item:has(.accordion-collapse.show) i.fas.test-icon-buttons { animation: bounce 0.6s ease-in-out infinite !important; } .accordion-item:has(.accordion-collapse.show) i.fas.test-icon-haptic { animation: shake 0.5s ease-in-out infinite !important; } .accordion-item:has(.accordion-collapse.show) i.fas.test-icon-adaptive { animation: pulse 1s ease-in-out infinite !important; } .accordion-item:has(.accordion-collapse.show) i.fas.test-icon-speaker { animation: bounce 0.6s ease-in-out infinite !important; } .accordion-item:has(.accordion-collapse.show) i.fas.test-icon-microphone { animation: glow 1.5s ease-in-out infinite !important; } .accordion-item:has(.accordion-collapse.show) i.fas.test-icon-lights { animation: glow 1.2s ease-in-out infinite !important; } .accordion-item:has(.accordion-collapse.show) i.fas.test-icon-headphone { animation: pulse 1s ease-in-out infinite !important; } /* Quick Test accordion button height reduction */ #quickTestAccordion .accordion-button { padding: 0.5rem 1rem; } /* Quick Test accordion body tint */ #quickTestAccordion .accordion-collapse .accordion-body { background-color: rgba(13, 125, 253, 0.05); } /* Skip button hover behavior */ .skip-btn { opacity: 0; transition: opacity 0.2s ease-in-out; } .accordion-header:hover .skip-btn { opacity: 1; } /* Blinking animation for range calibration alert */ @keyframes blink { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0.3; } } .blink-text { animation: blink 1s infinite; } /* Pulsing animation for text */ @keyframes pulse-text { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .pulsing-text { animation: pulse-text 0.75s ease-in-out infinite; } /* Set text color to red for internationalized elements */ /* .ds-i18n { color: red; } */