/* Sticky top offset utility for booking card */
.sticky-offset-md {
    top: 2rem;
}

/* Background for tour wrapper */
.tour-wrapper-bg {
    background-color: #fff;
}

/* Shared heading spacing token */
.heading-spaced-lg {
    margin-top: var(--space-lg) !important;
    margin-bottom: var(--space-lg) !important;
}

/* Tom Select ≈ Bootstrap .form-select for booking widget */
.ts-wrapper.single .ts-control,
.ts-wrapper .ts-control {
    border: 1px solid #dee2e6;
    border-radius: .375rem;
    min-height: calc(1.5em + .75rem + 2px);
    padding: .375rem .75rem;
    box-shadow: none;
    background: #fff;
}
.ts-wrapper.focus .ts-control { border-color: #86b7fe; box-shadow: 0 0 0 .25rem rgba(13,110,253,.25); }
.ts-dropdown { border: 1px solid #dee2e6; border-radius: .375rem; }
.ts-wrapper .ts-control > input { height: 1.25rem; }
.ts-wrapper .ts-control .item { white-space: nowrap; text-overflow: ellipsis; overflow: hidden; }
.ts-wrapper.is-disabled .ts-control { background-color: #e9ecef; cursor: not-allowed; opacity: .65; }
/* When original select carried .form-select, hide it after TS wraps */
select.form-select.tom-select { display: none !important; }

/* Bootstrap 5-style visually hidden but focusable helper */
.visually-hidden-focusable:not(:focus):not(:focus-within) {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/**
 * Booking Widget Gamified Animations
 * Enhanced animations for step completion and button interactions
 * 
 * @package TravelerChildTheme
 * @since 3.1.0
 */

/* Step completion check mark fade-in animation */
.completion-check {
    opacity: 0;
    transform: scale(0.8);
    transition: all 0.3s ease-in-out;
}

.completion-check:not(.d-none) {
    opacity: 1;
    transform: scale(1);
    animation: fadeInScale 0.3s ease-out;
}

@keyframes fadeInScale {
    0% {
        opacity: 0;
        transform: scale(0.5);
    }
    50% {
        transform: scale(1.1);
    }
    100% {
        opacity: 1;
        transform: scale(1);
    }
}

/* Progress bar smooth transition */
.progress-fill {
    transition: all 0.7s ease-out;
}

.progress-bar {
    transition: all 0.7s ease-out;
}

/* Button pulse animation when form completes - subtle version */
@keyframes buttonPulse {
    0% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(50, 79, 190, 0.4);
    }
    50% {
        transform: scale(1.02);
        box-shadow: 0 0 0 6px rgba(50, 79, 190, 0.1);
    }
    100% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(50, 79, 190, 0);
    }
}

.btn-pulse-animation {
    animation: buttonPulse 0.6s ease-out;
}

/* Accessibility: Respect reduced motion preferences */
@media (prefers-reduced-motion: reduce) {
    .btn-pulse-animation {
        animation: none;
        /* Provide alternative feedback: enhanced ready state */
        transform: translateY(-2px);
        box-shadow: 0 6px 20px rgba(50, 79, 190, 0.4);
        border-color: #059669;
    }
    
    .completion-check {
        animation: none;
        transition: opacity 0.1s ease;
    }
    
    @keyframes fadeInScale {
        /* Simplified animation for reduced motion */
        0% { opacity: 0; }
        100% { opacity: 1; transform: scale(1); }
    }
    
    .progress-fill {
        transition: width 0.3s ease;
    }
}

/* Progress text color transition */
.progress-text {
    transition: color 0.3s ease-in-out;
}

/* Enhanced button ready state */
.btn-ready {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(50, 79, 190, 0.3);
    transition: all 0.2s ease-out;
}

.btn-ready:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(50, 79, 190, 0.4);
}