/* Touch devices: neutralize hover-driven animations and ensure button text/spacing */
@media (hover: none), (pointer: coarse) {
    /* Ensure button text areas are expanded and visible on touch */
    .ui-btn .btn-wrap,
    .ui-btn .btn-txt {
        width: auto !important;
        max-width: none !important;
        overflow: visible !important;
        opacity: 1 !important;
        transform: none !important;
    }

    /* Match desktop hover spacing between text and icon on touch */
    .ui-btn.has-icon .btn-wrap::before {
        width: 10px !important;
    }

	/* Disable transitions for common animation utility classes */
	[class*="icAnim-"],
	[class*="txAnim-"],
	[class*="bxAnim-"],
	[class*="bgAnim-"],
	[class*="imgAnim-"],
	[class*="brAnim-"],
	[class*="lnAnim-"] {
		transition: none !important;
	}

	/* When JS adds .ui-animate on tap, keep elements steady on touch */
	.ui-animate .icn-primary,
	.ui-animate .icn-secondary,
	.ui-animate .btn-txt,
	.ui-animate .txt-primary,
	.ui-animate .txt-secondary,
	.ui-animate .ui-border,
	.ui-animate .ui-background,
	.ui-animate .ui-shadow {
		transform: none !important;
		opacity: 1 !important;
	}

	/* Icon hover shifts (e.g., .icAnim-shiftX/Alt) should not move on touch */
	.icAnim-shiftX .icn-primary,
	.icAnim-shiftX .icn-secondary,
	.icAnim-shiftXAlt .icn-primary,
	.icAnim-shiftXAlt .icn-secondary {
		transform: none !important;
	}

	/* Prevent width/clip tricks used during hovers */
	[class*="txAnim-"] .btn-txt,
	[class*="txAnim-"] .txt-primary {
		width: auto !important;
		max-width: none !important;
		opacity: 1 !important;
		clip-path: none !important;
	}

	/* Calm down generic :hover effects for buttons/icons on touch */
	.ui-btn:hover,
	.ui-icn:hover {
		transform: none !important;
	}
}