/**
 * Andmar Appointments - Frontend Widget Styles
 * Premium SaaS Design - v2.3.0
 */

/* ========================================
   MAIN WIDGET CONTAINER
   ======================================== */
.andmar-booking-widget,
.andmar-booking-widget * {
    box-sizing: border-box !important;
}

.andmar-booking-widget {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    background: var(--aa-bg, #ffffff) !important;
    color: var(--aa-text, #1a1a1a) !important;
    border-radius: var(--aa-radius, 12px) !important;
    max-width: var(--aa-width, 900px) !important;
    min-height: 500px !important;
    margin: 20px auto !important;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.08) !important;
    overflow: hidden !important;
    line-height: 1.5 !important;
    border: 1px solid rgba(0, 0, 0, 0.05) !important;
    font-family: var(--aa-font, 'Inter', -apple-system, BlinkMacSystemFont, sans-serif) !important;
}

/* ========================================
   LAYOUT MODES
   ======================================== */
/* No Sidebar - Calendar Only */
.andmar-booking-widget.no-sidebar .booking-info-panel {
    display: none !important;
}

.andmar-booking-widget.no-sidebar .booking-main-panel {
    flex: 1 1 100% !important;
    max-width: 100% !important;
}

/* Sidebar Right - Swap Positions */
.andmar-booking-widget.sidebar-right {
    flex-direction: row-reverse !important;
}

.andmar-booking-widget.sidebar-right .booking-info-panel {
    border-right: none !important;
    border-left: 1px solid #F1F4F9 !important;
}

/* ========================================
   LEFT SIDEBAR - INFO PANEL
   ======================================== */
.booking-info-panel {
    flex: 0 0 45% !important;
    min-width: 300px !important;
    max-width: 400px !important;
    padding: 40px 30px !important;
    background: #F9FAFB !important;
    border-right: 1px solid #F1F4F9 !important;
    position: relative !important;
    overflow: hidden !important;
}

.booking-info-panel.image-only {
    padding: 0 !important;
}

.booking-info-panel:has(.sidebar-full-image) {
    padding: 0 !important;
}

.sidebar-full-image {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    background-size: cover !important;
    background-position: center !important;
    background-repeat: no-repeat !important;
    z-index: 1 !important;
}

/* Image-only mode - no padding needed */
.booking-info-panel.image-only {
    padding: 0 !important;
    min-height: 400px !important;
}

/* ========================================
   BOOKING HEADER CARD (for Full Image Mode)
   ======================================== */
.booking-header-card {
    padding: 0 0 25px !important;
    margin-bottom: 25px !important;
    border-bottom: 1px solid #e2e8f0 !important;
}

.booking-header-card .header-label {
    font-size: 14px !important;
    font-weight: 400 !important;
    color: #333 !important;
    margin: 0 0 5px !important;
}

.booking-header-card .header-title {
    font-size: 36px !important;
    font-weight: 400 !important;
    color: #1a1a1a !important;
    margin: 0 0 20px !important;
    line-height: 1.1 !important;
}

.booking-header-card .header-divider {
    height: 1px !important;
    background: #1a1a1a !important;
    width: 100% !important;
    margin-bottom: 15px !important;
}

.booking-header-card .header-info {
    font-size: 14px !important;
    color: #333 !important;
    line-height: 1.6 !important;
    margin-bottom: 10px !important;
}

.booking-header-card .header-contact {
    font-size: 14px !important;
    color: #333 !important;
    line-height: 1.6 !important;
}

/* Hide old overlay styles */
.sidebar-image-overlay {
    display: none !important;
}

.sidebar-image-overlay .overlay-title {
    font-size: 28px !important;
    font-weight: 700 !important;
    color: #1e293b !important;
    margin: 0 0 15px !important;
    line-height: 1.2 !important;
}

.sidebar-image-overlay .overlay-info {
    font-size: 13px !important;
    color: #475569 !important;
    line-height: 1.6 !important;
}

.sidebar-image-overlay .overlay-info p {
    margin: 0 0 5px !important;
}

/* ========================================
   SIDEBAR INFO PANEL - PREMIUM DESIGN
   ======================================== */
.booking-logo-wrap {
    margin-bottom: 30px !important;
}

.booking-logo {
    max-height: 60px !important;
    max-width: 200px !important;
    object-fit: contain !important;
}

.booking-provider {
    margin-bottom: 8px !important;
}

.provider-name {
    font-size: 12px !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    letter-spacing: 1.5px !important;
    color: #6366f1 !important;
    margin: 0 !important;
}

.booking-title {
    font-size: 28px !important;
    font-weight: 700 !important;
    margin: 0 0 30px !important;
    color: #1E293B !important;
    line-height: 1.2 !important;
    letter-spacing: -0.5px !important;
}

.booking-details {
    display: flex !important;
    flex-direction: column !important;
    gap: 16px !important;
    margin-bottom: 30px !important;
    padding: 20px !important;
    background: white !important;
    border-radius: 12px !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04) !important;
}

.detail-item {
    display: flex !important;
    align-items: center !important;
    gap: 14px !important;
    color: #475569 !important;
    font-size: 14px !important;
    font-weight: 500 !important;
}

.detail-icon {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 36px !important;
    height: 36px !important;
    background: #f1f5f9 !important;
    border-radius: 10px !important;
    color: #6366f1 !important;
    flex-shrink: 0 !important;
}

.booking-description {
    padding: 20px !important;
    margin-top: 10px !important;
    background: white !important;
    border-radius: 12px !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04) !important;
    color: #64748B !important;
    font-size: 14px !important;
    line-height: 1.6 !important;
}

.booking-description p {
    margin: 0 0 15px !important;
    color: #64748b !important;
}

.booking-description strong,
.booking-description b {
    color: #1e293b !important;
    font-weight: 600 !important;
    display: block !important;
    margin-top: 10px !important;
}

.booking-description a {
    color: #6366f1 !important;
    text-decoration: none !important;
    font-weight: 500 !important;
}

.booking-description a:hover {
    text-decoration: underline !important;
}

/* Contact Details Section */
.contact-details {
    padding: 20px !important;
    margin-top: 10px !important;
    background: white !important;
    border-radius: 12px !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04) !important;
    font-size: 14px !important;
    line-height: 1.7 !important;
    color: #475569 !important;
}

.contact-details strong,
.contact-details b {
    color: #1e293b !important;
    font-weight: 600 !important;
    display: block !important;
    margin-top: 8px !important;
    font-size: 15px !important;
}

.contact-details a {
    color: #6366f1 !important;
    text-decoration: none !important;
}

.contact-details a:hover {
    text-decoration: underline !important;
}

/* ========================================
   RIGHT PANEL - MAIN CONTENT
   ======================================== */
.booking-main-panel {
    flex: 1 !important;
    min-width: 350px !important;
    padding: 40px !important;
    background: #fff !important;
}

/* ========================================
   STEP VISIBILITY - CRITICAL!
   ======================================== */
.booking-step {
    display: none !important;
}

.booking-step.active {
    display: block !important;
}

.step-title {
    font-size: 18px !important;
    font-weight: 600 !important;
    margin: 0 0 25px !important;
    color: #1E293B !important;
}

.step-header {
    display: flex !important;
    align-items: center !important;
    gap: 15px !important;
    margin-bottom: 25px !important;
}

.step-header .step-title {
    margin-bottom: 0 !important;
}

.back-btn {
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 8px 12px !important;
    background: #F1F5F9 !important;
    border: none !important;
    border-radius: 6px !important;
    cursor: pointer !important;
    font-size: 13px !important;
    color: #64748B !important;
}

.back-btn:hover {
    background: #E2E8F0 !important;
}

/* ========================================
   CALENDAR STYLES
   ======================================== */
.calendar-wrapper {
    margin-bottom: 30px !important;
}

.calendar-header {
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
    margin-bottom: 20px !important;
}

.cal-month-year {
    font-size: 16px !important;
    font-weight: 600 !important;
    color: #1E293B !important;
}

.cal-nav {
    width: 36px !important;
    height: 36px !important;
    border: 1px solid #E2E8F0 !important;
    background: white !important;
    border-radius: 8px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    cursor: pointer !important;
    transition: all 0.2s !important;
    color: #64748B !important;
}

.cal-nav:hover {
    border-color: var(--aa-primary, #0d5c63) !important;
    color: var(--aa-primary, #0d5c63) !important;
}

.cal-weekdays {
    display: grid !important;
    grid-template-columns: repeat(7, 1fr) !important;
    margin-bottom: 8px !important;
}

.cal-weekdays span {
    text-align: center !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    color: #94A3B8 !important;
    text-transform: uppercase !important;
    padding: 8px 0 !important;
}

.cal-days {
    display: grid !important;
    grid-template-columns: repeat(7, 1fr) !important;
    gap: 4px !important;
}

.cal-day {
    height: 44px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 14px !important;
    cursor: pointer !important;
    transition: all 0.15s !important;
    border-radius: 8px !important;
    border: 1px solid transparent !important;
    color: #475569 !important;
}

.cal-day:hover:not(.disabled):not(.out-of-month) {
    background: #F1F5F9 !important;
    color: var(--aa-primary, #0d5c63) !important;
}

.cal-day.disabled {
    color: #E2E8F0 !important;
    cursor: not-allowed !important;
}

.cal-day.out-of-month {
    color: #CBD5E1 !important;
    cursor: default !important;
}

.cal-day.today {
    color: var(--aa-primary, #0d5c63) !important;
    font-weight: 700 !important;
}

.cal-day.selected {
    background: var(--aa-primary, #0d5c63) !important;
    color: white !important;
    font-weight: 700 !important;
}

/* ========================================
   TIMEZONE DROPDOWN - CUSTOM STYLED
   ======================================== */
.timezone-selector {
    margin-top: 30px !important;
    padding-top: 25px !important;
    border-top: 1px solid #F1F5F9 !important;
}

.timezone-selector label {
    font-size: 11px !important;
    font-weight: 700 !important;
    color: #94A3B8 !important;
    display: block !important;
    margin-bottom: 10px !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
}

/* Consolidating listbox logic into modern dropdown engine */
.timezone-selector {
    margin-top: 25px !important;
}

.timezone-selector label {
    display: block !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    color: #94A3B8 !important;
    letter-spacing: 1.5px !important;
    text-transform: uppercase !important;
    margin-bottom: 8px !important;
}

.andmar-select-container {
    position: relative !important;
    width: 100% !important;
}

.timezone-select {
    width: 100% !important;
    height: auto !important;
    /* Forces normal dropdown height */
    padding: 14px 45px 14px 18px !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    color: #475569 !important;
    background: #fff !important;
    border: 1px solid #E2E8F0 !important;
    border-radius: 12px !important;
    appearance: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    cursor: pointer !important;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 18px center !important;
    background-size: 18px !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05) !important;
}

.timezone-select:hover {
    border-color: #cbd5e1 !important;
    background-color: #f8fafc !important;
}

.timezone-select:focus {
    outline: none !important;
    border-color: var(--aa-primary, #0d5c63) !important;
    box-shadow: 0 0 0 4px rgba(13, 92, 99, 0.1) !important;
}

.timezone-select option {
    font-weight: 500 !important;
    padding: 12px !important;
    background: white !important;
    color: #475569 !important;
}

.time-slots-loading {
    text-align: center !important;
    padding: 40px 20px !important;
    color: #64748B !important;
}

.time-slots-grid {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)) !important;
    gap: 10px !important;
}

.time-slot {
    padding: 14px 12px !important;
    text-align: center !important;
    border: 1px solid #E2E8F0 !important;
    border-radius: 8px !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    cursor: pointer !important;
    transition: all 0.2s !important;
    background: #fff !important;
    color: #475569 !important;
}

.time-slot:hover {
    border-color: var(--aa-primary, #0d5c63) !important;
    color: var(--aa-primary, #0d5c63) !important;
}

.time-slot.selected {
    background: var(--aa-primary, #0d5c63) !important;
    border-color: var(--aa-primary, #0d5c63) !important;
    color: white !important;
    font-weight: 600 !important;
}

.time-slots-empty {
    text-align: center !important;
    padding: 40px 20px !important;
    color: #94A3B8 !important;
}

/* ========================================
   BOOKING FORM
   ======================================== */
.booking-form {
    margin-top: 10px !important;
}

.form-row {
    display: flex !important;
    gap: 20px !important;
    flex-wrap: wrap !important;
}

.form-group {
    flex: 1 !important;
    min-width: 200px !important;
    margin-bottom: 20px !important;
}

.form-group label {
    display: block !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    color: #475569 !important;
    margin-bottom: 8px !important;
}

.form-group input,
.form-group textarea {
    width: 100% !important;
    padding: 12px 14px !important;
    border: 1px solid #E2E8F0 !important;
    border-radius: 8px !important;
    font-size: 14px !important;
    color: #1E293B !important;
    background: #fff !important;
    transition: all 0.2s !important;
}

.form-group input:focus,
.form-group textarea:focus {
    outline: none !important;
    border-color: var(--aa-primary, #0d5c63) !important;
    box-shadow: 0 0 0 4px rgba(13, 92, 99, 0.1) !important;
}

.form-group textarea {
    resize: vertical !important;
    min-height: 80px !important;
}

.booking-summary-box {
    background: #F8FAFC !important;
    padding: 20px !important;
    border-radius: 10px !important;
    margin-bottom: 25px !important;
    border: 1px solid #E2E8F0 !important;
}

.booking-summary-box h6 {
    font-size: 12px !important;
    font-weight: 700 !important;
    color: #94A3B8 !important;
    text-transform: uppercase !important;
    margin: 0 0 12px !important;
}

.sum-row {
    display: flex !important;
    justify-content: space-between !important;
    font-size: 14px !important;
    padding: 6px 0 !important;
}

.sum-row span {
    color: #64748B !important;
}

.sum-row strong {
    color: #1E293B !important;
}

.booking-submit-btn {
    width: 100% !important;
    padding: 16px !important;
    background: var(--aa-accent, #c41e3a) !important;
    color: white !important;
    border: none !important;
    border-radius: 10px !important;
    font-weight: 700 !important;
    font-size: 14px !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    cursor: pointer !important;
    transition: all 0.3s !important;
}

.booking-submit-btn:hover {
    filter: brightness(0.9) !important;
    transform: translateY(-1px) !important;
}

.booking-submit-btn:disabled {
    opacity: 0.7 !important;
    cursor: not-allowed !important;
}

/* ========================================
   SUCCESS STATE
   ======================================== */
.success-content {
    text-align: center !important;
    padding: 40px 20px !important;
}

.success-icon {
    color: #10B981 !important;
    margin-bottom: 20px !important;
}

.success-content h3 {
    font-size: 24px !important;
    font-weight: 700 !important;
    color: #1E293B !important;
    margin: 0 0 10px !important;
}

.success-content p {
    color: #64748B !important;
    margin: 0 0 30px !important;
}

.confirmed-card {
    display: flex !important;
    gap: 30px !important;
    justify-content: center !important;
    margin: 30px 0 !important;
    padding: 25px !important;
    background: #F8FAFC !important;
    border-radius: 12px !important;
}

.conf-item {
    text-align: center !important;
}

.conf-item small {
    display: block !important;
    font-size: 10px !important;
    color: #94A3B8 !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    margin-bottom: 5px !important;
}

.conf-item span {
    font-size: 16px !important;
    font-weight: 600 !important;
    color: #1E293B !important;
}

.book-another-btn {
    padding: 12px 30px !important;
    background: #F1F5F9 !important;
    border: none !important;
    border-radius: 8px !important;
    color: #475569 !important;
    font-weight: 600 !important;
    cursor: pointer !important;
    transition: all 0.2s !important;
}

.book-another-btn:hover {
    background: #E2E8F0 !important;
}

/* ========================================
   LOADING SPINNER
   ======================================== */
.aa-spinner {
    width: 32px !important;
    height: 32px !important;
    border: 3px solid #E2E8F0 !important;
    border-top-color: var(--aa-primary, #0d5c63) !important;
    border-radius: 50% !important;
    animation: aa-spin 1s linear infinite !important;
    margin: 0 auto 15px !important;
}

@keyframes aa-spin {
    to {
        transform: rotate(360deg);
    }
}

/* ========================================
   RESPONSIVE - PREMIUM SCALING
   ======================================== */

/* Tablets & Small Desktops */
@media (max-width: 1024px) {
    .andmar-booking-widget {
        max-width: 95% !important;
    }

    .booking-info-panel {
        flex: 0 0 250px !important;
        padding: 30px 20px !important;
    }

    .booking-main-panel {
        padding: 30px !important;
    }
}

/* Mobile & Small Tablets */
@media (max-width: 768px) {
    .andmar-booking-widget {
        flex-direction: column !important;
        max-width: calc(100% - 30px) !important;
        margin: 15px auto !important;
    }

    .booking-info-panel {
        flex: none !important;
        width: 100% !important;
        border-right: none !important;
        border-bottom: 1px solid rgba(0, 0, 0, 0.05) !important;
        padding: 35px 25px !important;
        text-align: center !important;
    }

    .booking-logo-wrap {
        display: flex !important;
        justify-content: center !important;
    }

    .booking-details {
        align-items: center !important;
        background: rgba(0, 0, 0, 0.02) !important;
        padding: 15px !important;
        border-radius: 12px !important;
    }

    .booking-main-panel {
        min-width: unset !important;
        padding: 30px 20px !important;
    }

    .step-title {
        text-align: center !important;
        font-size: 16px !important;
    }

    .step-header {
        flex-direction: column !important;
        gap: 15px !important;
        align-items: center !important;
    }

    .back-btn {
        width: 100% !important;
        justify-content: center !important;
    }

    /* Grid Adjustments */
    .time-slots-grid {
        grid-template-columns: repeat(2, 1fr) !important;
    }

    .form-row {
        flex-direction: column !important;
        gap: 0 !important;
    }

    .form-group {
        min-width: 100% !important;
    }

    .confirmed-card {
        flex-direction: column !important;
        gap: 15px !important;
    }
}

/* Very Small Devices */
@media (max-width: 480px) {
    .andmar-booking-widget {
        margin: 10px !important;
        width: calc(100% - 20px) !important;
    }

    .booking-title {
        font-size: 18px !important;
    }

    .time-slots-grid {
        grid-template-columns: 1fr !important;
    }

    .cal-day {
        height: 40px !important;
        font-size: 13px !important;
    }
}

/* ========================================
   Button Animation Arsenal (20 Types)
   ======================================== */
.booking-submit-btn {
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
    position: relative;
    overflow: hidden;
}

/* 1. Pulse Internal */
.anim-pulse:hover {
    animation: aa-pulse 1s infinite !important;
}

@keyframes aa-pulse {
    0% {
        box-shadow: 0 0 0 0 rgba(var(--aa-primary-rgb, 13, 92, 99), 0.7);
    }

    70% {
        box-shadow: 0 0 0 15px rgba(var(--aa-primary-rgb, 13, 92, 99), 0);
    }

    100% {
        box-shadow: 0 0 0 0 rgba(var(--aa-primary-rgb, 13, 92, 99), 0);
    }
}

/* 2. Neon Glow */
.anim-glow:hover {
    box-shadow: 0 0 20px var(--aa-primary), 0 0 40px var(--aa-primary) !important;
}

/* 3. Crystal Shimmer */
.anim-shimmer::after {
    content: '';
    position: absolute;
    top: -50%;
    left: -100%;
    width: 50%;
    height: 200%;
    background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.3), transparent);
    transform: rotate(45deg);
    transition: none;
}

.anim-shimmer:hover::after {
    left: 150%;
    transition: all 0.8s ease;
}

/* 4. Attention Shake */
.anim-shake:hover {
    animation: aa-shake 0.5s ease-in-out !important;
}

@keyframes aa-shake {

    0%,
    100% {
        transform: translateX(0);
    }

    25% {
        transform: translateX(-5px);
    }

    50% {
        transform: translateX(5px);
    }

    75% {
        transform: translateX(-5px);
    }
}

/* 5. Playful Bounce */
.anim-bounce:hover {
    animation: aa-bounce 0.6s ease !important;
}

@keyframes aa-bounce {

    0%,
    20%,
    50%,
    80%,
    100% {
        transform: translateY(0);
    }

    40% {
        transform: translateY(-10px);
    }

    60% {
        transform: translateY(-5px);
    }
}

/* 6. Slide Right */
.anim-slide-right:hover {
    transform: translateX(10px) !important;
}

/* 7. Slide Left */
.anim-slide-left:hover {
    transform: translateX(-10px) !important;
}

/* 8. Slide Up */
.anim-slide-up:hover {
    transform: translateY(-10px) !important;
}

/* 9. Slide Down */
.anim-slide-down:hover {
    transform: translateY(10px) !important;
}

/* 10. Jello Wobble */
.anim-jello:hover {
    animation: aa-jello 0.8s both !important;
}

@keyframes aa-jello {
    11.1% {
        transform: none;
    }

    22.2% {
        transform: skewX(-12.5deg) skewY(-12.5deg);
    }

    33.3% {
        transform: skewX(6.25deg) skewY(6.25deg);
    }

    44.4% {
        transform: skewX(-3.125deg) skewY(-3.125deg);
    }

    55.5% {
        transform: skewX(1.5625deg) skewY(1.5625deg);
    }

    66.6% {
        transform: skewX(-0.78125deg) skewY(-0.78125deg);
    }

    77.7% {
        transform: skewX(0.390625deg) skewY(0.390625deg);
    }

    88.8% {
        transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
    }
}

/* 11. Tada Reveal */
.anim-tada:hover {
    animation: aa-tada 1s !important;
}

@keyframes aa-tada {
    0% {
        transform: scale3d(1, 1, 1);
    }

    10%,
    20% {
        transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
    }

    30%,
    50%,
    70%,
    90% {
        transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
    }

    40%,
    60%,
    80% {
        transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
    }

    100% {
        transform: scale3d(1, 1, 1);
    }
}

/* 12. Rubber Band */
.anim-rubber-band:hover {
    animation: aa-rubber-band 1s !important;
}

@keyframes aa-rubber-band {
    0% {
        transform: scale3d(1, 1, 1);
    }

    30% {
        transform: scale3d(1.25, 0.75, 1);
    }

    40% {
        transform: scale3d(0.75, 1.25, 1);
    }

    50% {
        transform: scale3d(1.15, 0.85, 1);
    }

    65% {
        transform: scale3d(0.95, 1.05, 1);
    }

    75% {
        transform: scale3d(1.05, 0.95, 1);
    }

    100% {
        transform: scale3d(1, 1, 1);
    }
}

/* 13. Hanging Swing */
.anim-swing:hover {
    transform-origin: top center;
    animation: aa-swing 1s ease-in-out !important;
}

@keyframes aa-swing {
    20% {
        transform: rotate3d(0, 0, 1, 15deg);
    }

    40% {
        transform: rotate3d(0, 0, 1, -10deg);
    }

    60% {
        transform: rotate3d(0, 0, 1, 5deg);
    }

    80% {
        transform: rotate3d(0, 0, 1, -5deg);
    }

    100% {
        transform: rotate3d(0, 0, 1, 0deg);
    }
}

/* 14. Wobble Bottom */
.anim-wobble:hover {
    animation: aa-wobble 0.8s !important;
}

@keyframes aa-wobble {
    0% {
        transform: translateX(0%);
    }

    15% {
        transform: translateX(-25%) rotate(-5deg);
    }

    30% {
        transform: translateX(20%) rotate(3deg);
    }

    45% {
        transform: translateX(-15%) rotate(-3deg);
    }

    60% {
        transform: translateX(10%) rotate(2deg);
    }

    75% {
        transform: translateX(-5%) rotate(-1deg);
    }

    100% {
        transform: translateX(0%);
    }
}

/* 15. Heartbeat Pulse */
.anim-heartbeat:hover {
    animation: aa-heartbeat 1.3s ease-in-out infinite !important;
}

@keyframes aa-heartbeat {
    0% {
        transform: scale(1);
    }

    14% {
        transform: scale(1.1);
    }

    28% {
        transform: scale(1);
    }

    42% {
        transform: scale(1.1);
    }

    70% {
        transform: scale(1);
    }
}

/* 16. Flip Horizontal */
.anim-flip-x:hover {
    transform: rotateX(180deg) !important;
}

/* 17. Flip Vertical */
.anim-flip-y:hover {
    transform: rotateY(180deg) !important;
}

/* 18. Background Expand */
.anim-bg-grow::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0;
    height: 0;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    transition: all 0.6s ease;
}

.anim-bg-grow:hover::before {
    width: 300%;
    height: 300%;
}

/* 19. Border Draw */
.anim-border-grow:hover {
    box-shadow: inset 0 0 0 4px rgba(255, 255, 255, 0.3) !important;
}

/* 20. Smooth Fade */
.anim-fade:hover {
    opacity: 0.9;
    transform: translateY(-2px) !important;
}

/* Support for global primary RGB */
:root {
    --aa-primary-rgb: 13, 92, 99;
}