/**
 * Form Payment CSS - Payment form component styling
 * Comprehensive styling for payment forms and Stripe integration
 * 
 * @author Gli Amici di Colombo
 * @version 2.0.0
 */

/* =================================
   PAYMENT CONTAINER
================================= */

/* Enhanced Payment Form Styling */
.payment-field-group {
    margin-bottom: 2rem;
}

.payment-field-group .form-label {
    display: block;
    margin-bottom: 0.75rem;
    font-weight: 600;
    color: var(--color-gray-700);
}

.card-element {
    padding: 1rem;
    border: 2px solid var(--color-gray-200);
    border-radius: 8px;
    background: white;
    transition: border-color 0.2s ease;
    min-height: 50px;
    display: flex;
    align-items: center;
}

.card-element:hover {
    border-color: var(--color-primary-light);
}

.card-element.StripeElement--focus {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}

.card-element.StripeElement--invalid {
    border-color: var(--color-error);
}

/* Stripe Payment Element Custom Styling */
.card-element .StripeElement {
    min-height: 50px;
}

/* Payment method tab styling */
.card-element [data-testid="payment-method-tab"] {
    font-size: 14px !important;
    padding: 8px 12px !important;
}

.card-element [data-testid="payment-method-tab"] img,
.card-element [data-testid="payment-method-tab"] svg {
    width: 18px !important;
    height: 18px !important;
    max-width: 18px !important;
    max-height: 18px !important;
}

/* Control tab styling */
.card-element [role="tab"] {
    padding: 8px 12px !important;
    font-size: 14px !important;
}

.card-element [role="tab"] img,
.card-element [role="tab"] svg {
    width: 18px !important;
    height: 18px !important;
    max-width: 18px !important;
    max-height: 18px !important;
}

/* Payment method icons in tabs */
.card-element [data-testid="payment-method-icon"] {
    width: 18px !important;
    height: 18px !important;
    max-width: 18px !important;
    max-height: 18px !important;
}

/* Remove large payment method icons completely */
.card-element [data-testid="payment-method-tab"] img,
.card-element [data-testid="payment-method-tab"] svg,
.card-element [role="tab"] img,
.card-element [role="tab"] svg,
.card-element [data-testid="payment-method-icon"] {
    display: none !important;
}

/* Hide any large background images or icons */
.card-element *[style*="background-image"] {
    background-image: none !important;
}

/* Ensure payment method tabs show only text */
.card-element [data-testid="payment-method-tab"],
.card-element [role="tab"] {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 8px 16px !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    color: #374151 !important;
    background: #f9fafb !important;
    border: 1px solid #d1d5db !important;
    border-radius: 6px !important;
    text-decoration: none !important;
}

.card-element [data-testid="payment-method-tab"][aria-selected="true"],
.card-element [role="tab"][aria-selected="true"] {
    background: #3b82f6 !important;
    color: white !important;
    border-color: #3b82f6 !important;
}

/* Card input styling */
.card-element input {
    font-size: 16px !important;
    padding: 12px !important;
}

/* Remove any large background images */
.card-element * {
    background-image: none !important;
}

/* Additional icon hiding for Stripe Elements */
.card-element img,
.card-element svg,
.card-element [class*="icon"],
.card-element [class*="Icon"],
.card-element [data-testid*="icon"],
.card-element [data-testid*="Icon"],
.card-element [class*="brand"],
.card-element [class*="Brand"],
.card-element [data-testid*="brand"],
.card-element [data-testid*="Brand"] {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
    opacity: 0 !important;
    visibility: hidden !important;
}

/* Ensure payment tabs are clean and text-only */
.card-element [role="tablist"] {
    display: flex !important;
    gap: 8px !important;
    margin-bottom: 16px !important;
}

.card-element [role="tab"] {
    flex: 1 !important;
    text-align: center !important;
    min-height: 40px !important;
}

/* Hide any remaining visual elements that might be large */
.card-element [data-testid*="icon"],
.card-element [data-testid*="Icon"],
.card-element [class*="stripe"],
.card-element [class*="Stripe"] {
    display: none !important;
}

.payment-summary-box {
    background: var(--color-gray-50);
    border: 1px solid var(--color-gray-200);
    border-radius: 8px;
    padding: 1.5rem;
    margin-top: 1.5rem;
}

.payment-summary-box h4 {
    margin: 0 0 1rem 0;
    color: var(--color-gray-800);
    font-size: 1.1rem;
    font-weight: 600;
}

.summary-line {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.5rem;
    padding: 0.5rem 0;
}

.summary-line.total {
    border-top: 1px solid var(--color-gray-300);
    margin-top: 1rem;
    padding-top: 1rem;
    font-size: 1.1rem;
}

.summary-line .amount {
    color: var(--color-primary);
    font-weight: 600;
}

.form-payment {
    background: var(--color-white);
    border: 1px solid var(--form-border);
    border-radius: var(--radius-lg);
    padding: var(--space-6);
    margin: var(--space-6) 0;
    box-shadow: var(--shadow-md);
}

.form-payment__header {
    text-align: center;
    margin-bottom: var(--space-6);
}

.form-payment__title {
    font-size: var(--font-size-2xl);
    font-weight: var(--font-weight-bold);
    color: var(--text-primary);
    margin-bottom: var(--space-2);
}

.form-payment__subtitle {
    font-size: var(--font-size-base);
    color: var(--text-secondary);
    line-height: var(--line-height-relaxed);
}

/* =================================
   PAYMENT METHODS
================================= */

.form-payment__methods {
    display: flex;
    gap: var(--space-4);
    margin-bottom: var(--space-6);
}

.form-payment__method {
    flex: 1;
    padding: var(--space-4);
    border: 2px solid var(--form-border);
    border-radius: var(--radius-md);
    text-align: center;
    cursor: pointer;
    transition: all var(--transition-base);
}

.form-payment__method:hover {
    border-color: var(--color-primary);
    background-color: var(--color-primary-50);
}

.form-payment__method.active {
    border-color: var(--color-primary);
    background-color: var(--color-primary-50);
}

.form-payment__method-icon {
    font-size: var(--font-size-2xl);
    margin-bottom: var(--space-2);
    color: var(--text-primary);
}

.form-payment__method-label {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--text-primary);
}

/* =================================
   STRIPE ELEMENTS
================================= */

.form-payment__stripe {
    margin-bottom: var(--space-6);
}

.form-payment__card {
    padding: var(--space-4);
    border: 1px solid var(--form-border);
    border-radius: var(--radius-md);
    background: var(--color-gray-50);
    transition: all var(--transition-base);
}

.form-payment__card:hover {
    border-color: var(--color-primary);
}

.form-payment__card.StripeElement--focus {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 2px var(--color-primary-alpha);
}

.form-payment__card.StripeElement--invalid {
    border-color: var(--color-error);
}

.form-payment__card.StripeElement--complete {
    border-color: var(--color-success);
}

/* =================================
   PAYMENT DETAILS
================================= */

.form-payment__details {
    margin-bottom: var(--space-6);
}

.form-payment__row {
    display: flex;
    gap: var(--space-4);
    margin-bottom: var(--space-4);
}

.form-payment__field {
    flex: 1;
}

.form-payment__label {
    display: block;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--text-primary);
    margin-bottom: var(--space-2);
}

.form-payment__input {
    width: 100%;
    padding: var(--space-3);
    border: 1px solid var(--form-border);
    border-radius: var(--radius-md);
    font-size: var(--font-size-base);
    color: var(--text-primary);
    transition: all var(--transition-base);
}

.form-payment__input:focus {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 2px var(--color-primary-alpha);
    outline: none;
}

.form-payment__input.error {
    border-color: var(--color-error);
}

/* =================================
   PAYMENT SUMMARY
================================= */

.form-payment__summary {
    background: var(--color-gray-50);
    border-radius: var(--radius-md);
    padding: var(--space-4);
    margin-bottom: var(--space-6);
}

.form-payment__summary-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--space-2) 0;
    border-bottom: 1px solid var(--form-border);
}

.form-payment__summary-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.form-payment__summary-label {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}

.form-payment__summary-value {
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-medium);
    color: var(--text-primary);
}

.form-payment__summary-total {
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-bold);
    color: var(--text-primary);
}

/* =================================
   PAYMENT ACTIONS
================================= */

.form-payment__actions {
    text-align: center;
}

.form-payment__submit {
    width: 100%;
    max-width: 300px;
}

.form-payment__secure {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    margin-top: var(--space-4);
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
}

.form-payment__secure-icon {
    color: var(--color-success);
}

/* =================================
   PAYMENT STATUS
================================= */

.form-payment__status {
    text-align: center;
    padding: var(--space-6);
}

.form-payment__status-icon {
    font-size: var(--font-size-4xl);
    margin-bottom: var(--space-4);
}

.form-payment__status-icon.success {
    color: var(--color-success);
}

.form-payment__status-icon.error {
    color: var(--color-error);
}

.form-payment__status-title {
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-bold);
    margin-bottom: var(--space-2);
}

.form-payment__status-message {
    color: var(--text-secondary);
    margin-bottom: var(--space-4);
}

/* =================================
   RESPONSIVE DESIGN
================================= */

@media (max-width: 768px) {
    .form-payment {
        padding: var(--space-4);
        margin: var(--space-4) 0;
    }

    .form-payment__methods {
        flex-direction: column;
    }

    .form-payment__row {
        flex-direction: column;
        gap: var(--space-3);
    }

    .form-payment__submit {
        max-width: none;
    }
}

/* =================================
   ACCESSIBILITY
================================= */

@media (prefers-reduced-motion: reduce) {
    .form-payment__method,
    .form-payment__card,
    .form-payment__input {
        transition: none;
    }
}

@media (prefers-contrast: high) {
    .form-payment {
        border-width: 2px;
    }

    .form-payment__method {
        border-width: 3px;
    }

    .form-payment__card,
    .form-payment__input {
        border-width: 2px;
    }
}

/* =================================
   PAYMENT PLACEHOLDER STYLING
================================= */

.payment-placeholder {
    padding: 1rem;
    border: 2px solid var(--color-gray-200);
    border-radius: 8px;
    background: white;
    transition: border-color 0.2s ease;
}

.payment-placeholder .placeholder-header {
    margin-bottom: 1rem;
}

.payment-placeholder .placeholder-tabs {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.payment-placeholder .placeholder-tab {
    flex: 1;
    padding: 0.5rem 1rem;
    border: 1px solid var(--color-gray-300);
    border-radius: 6px;
    background: var(--color-gray-50);
    color: var(--color-gray-500);
    font-size: 0.875rem;
    font-weight: 500;
    cursor: not-allowed;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
}

.payment-placeholder .placeholder-tab.active {
    background: var(--color-primary);
    color: white;
    border-color: var(--color-primary);
}

.payment-placeholder .placeholder-content {
    padding: 1rem 0;
}

.payment-placeholder .placeholder-row {
    display: flex;
    gap: 0.5rem;
}

.payment-placeholder .placeholder-message {
    margin-top: 1rem;
    padding: 0.75rem;
    background: var(--color-gray-50);
    border-radius: 6px;
    text-align: center;
}

/* Comprehensive Stripe element cleaning */
.card-element [data-testid="payment-method-icon"],
.card-element [data-testid="payment-method-logo"],
.card-element [aria-label*="icon"],
.card-element [aria-label*="logo"],
.card-element .p-Icon,
.card-element .p-Logo,
.card-element .Icon,
.card-element .Logo {
    display: none !important;
    position: absolute !important;
    left: -9999px !important;
    width: 0 !important;
    height: 0 !important;
    overflow: hidden !important;
}

/* Force text-only payment method tabs */
.card-element [role="tab"] span:only-child {
    font-weight: 500 !important;
    color: #374151 !important;
}

.card-element [role="tab"][aria-selected="true"] span:only-child {
    color: white !important;
}

/* Clean payment element appearance */
.card-element .StripeElement {
    padding: 16px 12px !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
}

/* Remove any remaining visual clutter */
.card-element *[style*="background-image"],
.card-element *[style*="background"] {
    background: none !important;
    background-image: none !important;
}

/* =================================
   PAYPAL PAYMENT INTEGRATION
================================= */

/* PayPal Payment Elements Container */
#paypal-element {
    margin-top: 1rem;
}

/* PayPal Button Container */
#paypal-button-container {
    min-height: 50px;
    border-radius: 8px;
    overflow: hidden;
}

/* PayPal Card Fields Container */
#paypal-card-container {
    border: 2px solid var(--color-gray-200);
    border-radius: 8px;
    background: white;
    padding: 1rem;
    transition: border-color 0.2s ease;
}

#paypal-card-container:hover {
    border-color: var(--color-primary-light);
}

#paypal-card-container.paypal-card-fields-focused {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}

#paypal-card-container.paypal-card-fields-invalid {
    border-color: var(--color-error);
}

/* PayPal Button Styling Override */
#paypal-button-container .paypal-button {
    border-radius: 8px !important;
    height: 50px !important;
}

/* Payment Method Selection */
.payment-method-options {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.payment-method-options input[type="radio"] {
    margin-right: 0.75rem;
}

.payment-method-options label {
    display: flex;
    align-items: center;
    padding: 0.75rem 1rem;
    border: 2px solid var(--color-gray-200);
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.2s ease;
    background: white;
    font-weight: 500;
}

.payment-method-options label:hover {
    border-color: var(--color-primary-light);
    background: var(--color-primary-50);
}

.payment-method-options input[type="radio"]:checked + label {
    border-color: var(--color-primary);
    background: var(--color-primary-50);
    color: var(--color-primary);
}

/* Payment Elements Container */
#payment-elements-container {
    margin-top: 1rem;
}

.payment-element {
    border-radius: 8px;
    background: var(--color-gray-50);
    padding: 1rem;
    margin-bottom: 1rem;
}

/* Payment Info Display */
#payment-info-display {
    text-align: center;
    padding: 2rem;
}

.payment-info-badge {
    background: var(--color-blue-50);
    border: 1px solid var(--color-blue-200);
    border-radius: 8px;
    padding: 1.5rem;
}

.offline-payment-notice h4 {
    color: var(--color-blue-700);
    margin-bottom: 0.5rem;
    font-weight: 600;
}

.offline-payment-notice p {
    color: var(--color-blue-600);
    margin: 0;
}

/* Payment Loading State */
.payment-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    text-align: center;
}

.loading-spinner {
    width: 40px;
    height: 40px;
    border: 4px solid var(--color-gray-200);
    border-top: 4px solid var(--color-primary);
    border-radius: 50%;
    animation: spin 1s linear infinite;
    margin-bottom: 1rem;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Payment Error State */
.payment-error {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 1rem;
    background: var(--color-red-50);
    border: 1px solid var(--color-red-200);
    border-radius: 8px;
    color: var(--color-red-700);
    margin-top: 1rem;
}

.error-icon {
    font-size: 1.25rem;
    flex-shrink: 0;
}

.payment-error p {
    margin: 0;
    font-weight: 500;
}

/* Responsive Adjustments */
@media (max-width: 768px) {
    .payment-method-options {
        flex-direction: column;
    }
    
    .payment-method-options label {
        padding: 1rem;
        font-size: 0.9rem;
    }
    
    #paypal-button-container {
        min-height: 45px;
    }
    
    #paypal-button-container .paypal-button {
        height: 45px !important;
    }
}

/* Dark Mode Support */
@media (prefers-color-scheme: dark) {
    .payment-element {
        background: var(--color-gray-800);
        color: white;
    }
    
    #paypal-card-container {
        background: var(--color-gray-800);
        border-color: var(--color-gray-600);
        color: white;
    }
    
    .payment-method-options label {
        background: var(--color-gray-800);
        border-color: var(--color-gray-600);
        color: white;
    }
    
    .payment-info-badge {
        background: var(--color-blue-900);
        border-color: var(--color-blue-700);
    }
    
    .offline-payment-notice h4 {
        color: var(--color-blue-300);
    }
    
    .offline-payment-notice p {
        color: var(--color-blue-200);
    }
}