/* Base styles for common elements and animations */

/* General container styles */
.pcs-pay-now-container {
    text-align: center;
    margin: 10px 0;
    /* display: none; Removed - visibility now controlled by JavaScript */
}

.payment-form.preloaded {
    position: absolute;
    left: -9999px;
    top: -9999px;
    opacity: 0;
}

.payment-form.preloaded.visible {
    position: static;
    left: auto;
    top: auto;
    opacity: 1;
    transition: opacity 0.5s ease-in-out;
}

/* Common button styles - scoped to cart checkout so site header Bootstrap .btn is untouched */
body.ff-cart-page .pcs-container .btn,
body.ff-cart-page #payment-form-container .btn,
body.ff-cart-page #authorize-net-form-container .btn {
    display: inline-block;
    padding: 10px 20px;
    border: none;
    border-radius: 8px;
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
    text-decoration: none;
    box-sizing: border-box;
}

body.ff-cart-page .pcs-container .btn-success,
body.ff-cart-page #payment-form-container .btn-success,
body.ff-cart-page #authorize-net-form-container .btn-success {
    background-color: #28a745; /* Green */
    color: white;
}

body.ff-cart-page .pcs-container .btn-success:hover,
body.ff-cart-page #payment-form-container .btn-success:hover,
body.ff-cart-page #authorize-net-form-container .btn-success:hover {
    background-color: #218838;
    transform: translateY(-2px);
    box-shadow: 0 4px 10px rgba(40, 167, 69, 0.3);
}

body.ff-cart-page .pcs-container .btn-danger,
body.ff-cart-page #payment-form-container .btn-danger,
body.ff-cart-page #authorize-net-form-container .btn-danger {
    background-color: #dc3545; /* Red */
    color: white;
}

body.ff-cart-page .pcs-container .btn-danger:hover,
body.ff-cart-page #payment-form-container .btn-danger:hover,
body.ff-cart-page #authorize-net-form-container .btn-danger:hover {
    background-color: #c82333;
    transform: translateY(-2px);
    box-shadow: 0 4px 10px rgba(220, 53, 69, 0.3);
}

/* Loader spinner - payment forms only; cart overlay keeps its own loader styles */
body.ff-cart-page #payment-form-container .loader,
body.ff-cart-page .payment-form-container .loader,
body.ff-cart-page #stripe-loading-container .loader {
    border: 4px solid #f3f3f3;
    border-top: 4px solid #3498db;
    border-radius: 50%;
    width: 24px;
    height: 24px;
    animation: spin 1s linear infinite;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Animation for communication log items */
@keyframes slideInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
.log-item {
    animation: slideInUp 0.5s ease-out forwards;
}

/* Reusable class for animated form titles */
.payment-form-title {
    color: #007bff; /* Bootstrap primary color */
    font-weight: 600;
    font-size: 1.2rem; /* Made smaller to fit on one line */
    text-align: center;
    margin-bottom: 1.5rem;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1);
    min-height: 2.1rem; /* Reserve space for text to avoid layout shift */
    white-space: nowrap; /* Ensure text stays on one line */
    display: flex; /* Use flexbox for alignment */
    justify-content: center; /* Center content horizontally */
    align-items: center; /* Center content vertically */
    
    /* Flow-in effect */
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.payment-form-title.visible {
    opacity: 1;
    transform: translateY(0);
}


.payment-form-title .payment-title-icon {
    display: inline-block;
    vertical-align: middle;
    margin-right: 8px;
    transition: transform 0.3s ease-out;
}

.payment-form-title.visible .payment-title-icon {
    animation: spin-slow 10s linear infinite; /* Slow spin animation */
}

.payment-form-title .globe-icon {
    width: 24px; /* Adjust size as needed */
    height: 24px;
    color: #007bff; /* Icon color, matching title color */
}

@keyframes spin-slow {
    from { transform: rotateZ(0deg); }
    to { transform: rotateZ(360deg); }
}

.gradient-divider {
    height: 2px;
    background: linear-gradient(to right, #007bff, #6c757d, #007bff); /* Blue-gray-blue gradient */
    border: none;
    margin: 15px auto 25px auto; /* Center and provide spacing */
    width: 80%; /* Adjust width as needed */
    opacity: 0;
    transform: scaleX(0);
    transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}

.authorize-net-form-container.visible .gradient-divider {
    opacity: 1;
    transform: scaleX(1);
}
