/* ================================================== */
/* CONTRIBUTION MODAL STYLES */
/* ================================================== */
/* Contribution Modal Styles - Two Column Layout */
#contributionModal.figma-modal-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(2px);
    z-index: 1000;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

#contributionModal.figma-modal-overlay.active,
#contributionModal.figma-modal-overlay[style*="display: block"] {
    display: flex;
}

#contributionModal .figma-modal-container.contribution-modal-two-column {
    background: #f2efec;
    border-top: 2px solid #b2b2b2;
    border-radius: 22px;
    max-width: 1000px;
    width: 100%;
    max-height: 90vh;
    overflow: auto;
    position: relative;
    padding: 35px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
}

#contributionModal .figma-modal-close {
    position: absolute;
    top: 24px;
    right: 24px;
    width: 32px;
    height: 32px;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #262e2e;
    font-size: 28px;
    z-index: 10;
}

#contributionModal .contribution-modal-content {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

/* Left Column */
#contributionModal .contribution-left-column {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

#contributionModal .contribution-product-image-wrapper {
    position: relative;
    width: 100%;
    max-height: 400px;
    /* min-height: 200px; */
    flex-shrink: 0;
    border-radius: 12px;
    overflow: hidden;
    background: #e3dcd6;
    margin-top: 20px;
}

#contributionModal .contribution-product-image {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
}

#contributionModal .contribution-textarea-wrapper {
    position: relative;
}

#contributionModal .contribution-textarea-decoration {
    position: absolute;
    background: #e1b672;
    border-radius: 8px;
    width: calc(100% + 10px);
    height: 100%;
    left: -5px;
    top: -5px;
    transform: rotate(357.974deg) skewX(1.479deg);
    z-index: 0;
}

#contributionModal .contribution-textarea {
    width: 100%;
    min-height: 200px;
    padding: 16px;
    background: #e3dcd6;
    border: none;
    border-radius: 8px;
    font-family: 'Work Sans', sans-serif;
    font-size: 15px;
    color: #262e2e;
    letter-spacing: -0.44px;
    resize: none;
    box-sizing: border-box;
    position: relative;
    z-index: 1;
    box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.15);
}

#contributionModal .contribution-textarea-counter {
    position: absolute;
    bottom: 12px;
    right: 20px;
    font-family: 'Work Sans', sans-serif;
    font-size: 16px;
    color: #5a5a5a;
    letter-spacing: -0.36px;
    z-index: 2;
    pointer-events: none;
}

#contributionModal .contribution-textarea::placeholder {
    color: #5a5a5a;
}

#contributionModal .contribution-textarea:focus {
    outline: none;
}

/* Validation error styles */
#contributionModal .contribution-textarea.error,
#contributionModal #contributionAmount.error {
    border-color: #e74c3c;
    animation: shake 0.5s ease-in-out;
}

#contributionModal .contribution-note-error {
    position: absolute;
    bottom: -20px;
    left: 0;
    color: #e74c3c;
    font-size: 13px;
    font-style: italic;
}

#contributionModal .contribution-amount-error {
    position: absolute;
    bottom: -20px;
    left: 0;
    color: #e74c3c;
    font-size: 13px;
    font-style: italic;
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
    20%, 40%, 60%, 80% { transform: translateX(5px); }
}

/* Right Column */
#contributionModal .contribution-right-column {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

#contributionModal .contribution-product-info {
    margin-bottom: 10px;
    text-align: left;
    padding: 0;
}

#contributionModal .contribution-product-name {
    font-family: 'Work Sans', sans-serif;
    font-weight: 500;
    font-size: 28px;
    color: #262e2e;
    letter-spacing: -0.48px;
    margin: 0 0 8px 0;
    padding: 0;
    text-align: left;
}

#contributionModal .contribution-product-price {
    font-family: 'Work Sans', sans-serif;
    font-weight: 600;
    font-size: 22px;
    color: #5a5a5a;
    letter-spacing: -0.44px;
    padding: 0;
    text-align: left;
}

#contributionModal .contribution-explanation-text {
    display: block;
    font-family: 'Work Sans', sans-serif;
    font-size: 14px;
    line-height: 1.5;
    color: #5a5a5a;
    text-align: left;
}

#contributionModal .contribution-progress-container {
    margin: 10px 0;
    display: flex;
    flex-direction: column;
}

#contributionModal .contribution-progress-info {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 8px;
    font-family: 'Work Sans', sans-serif;
    font-size: 14px;
    color: #262e2e;
    font-weight: 500;
    letter-spacing: -0.48px;
}

#contributionModal .contribution-progress-left {
    font-family: 'Work Sans', sans-serif;
    font-size: 24px;
    color: #262e2e;
    font-weight: 500;
    letter-spacing: -0.48px;
}

#contributionModal .contribution-progress-right {
    font-family: 'Work Sans', sans-serif;
    font-size: 20px;
    color: #262e2e;
    font-weight: 500;
    letter-spacing: -0.48px;
}

#contributionModal .contribution-progress-info #amount-left,
#contributionModal .contribution-progress-info #goal-amount {
    font-weight: 600;
    margin: 0 3px;
}

#contributionModal .contribution-progress-bar-wrapper {
    display: flex;
    align-items: center;
    width: 100%;
    gap: 8px;
}

#contributionModal .contribution-progress-bar-outer {
    flex-grow: 1;
    height: 16px;
    background: #e3dcd6;
    border-radius: 4px;
    overflow: visible;
    position: relative;
}

#contributionModal .contribution-amount-slider {
    position: absolute;
    width: 100%;
    height: 21px;
    top: -6px;
    left: 0;
    margin: 0;
    padding: 0;
    background: transparent;
    outline: none;
    cursor: pointer;
    z-index: 10;
    -webkit-appearance: none;
    appearance: none;
}

#contributionModal .contribution-amount-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 9px;
    background: transparent;
    border: none;
}

#contributionModal .contribution-amount-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    background: #9b607c;
    border-radius: 50%;
    cursor: grab;
    border: 2px solid #f2efec;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    margin-top: -5px;
    transition: background 0.2s ease;
}

#contributionModal .contribution-amount-slider::-webkit-slider-thumb:active {
    cursor: grabbing;
    background: #7a4d63;
}

#contributionModal .contribution-amount-slider::-moz-range-track {
    width: 100%;
    height: 16px;
    background: transparent;
    border: none;
}

#contributionModal .contribution-amount-slider::-moz-range-thumb {
    width: 28px;
    height: 28px;
    background: #9b607c;
    border-radius: 50%;
    cursor: grab;
    border: 2px solid #f2efec;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    transition: background 0.2s ease;
}

#contributionModal .contribution-amount-slider::-moz-range-thumb:active {
    cursor: grabbing;
    background: #7a4d63;
}

#contributionModal .contribution-progress-bar-inner {
    height: 100%;
    background: #9b607c;
    /* transition: width 0.1s ease; Removed for smoother slider tracking */
    pointer-events: none;
    position: absolute;
    top: 0;
    left: 0;
    border-radius: 4px;
}

#contributionModal .contribution-progress-bar-value-text {
    font-family: 'Work Sans', sans-serif;
    font-size: 13px;
    color: #5a5a5a;
    font-weight: 500;
    white-space: nowrap;
}

#contributionModal .contribution-price-input-wrapper {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: #e3dcd6;
    border-radius: 8px;
    width: 100%;
    box-sizing: border-box;
    position: relative;
    margin-bottom: 24px;
}

#contributionModal .contribution-currency-selector {
    display: flex;
    align-items: center;
    gap: 0;
    position: relative;
    cursor: pointer;
    min-width: 50px;
}

#contributionModal .contribution-currency-select {
    background: transparent;
    border: none;
    font-family: 'Work Sans', sans-serif;
    font-size: 17px;
    color: #262e2e;
    letter-spacing: -0.31px;
    cursor: pointer;
    padding: 0;
    padding-right: 26px;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    outline: none;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 2;
    opacity: 0;
}

#contributionModal .contribution-currency-select option {
    background: #e3dcd6;
    color: #262e2e;
}

#contributionModal .contribution-currency-display {
    font-family: 'Work Sans', sans-serif;
    font-size: 17px;
    color: #262e2e;
    letter-spacing: -0.44px;
    pointer-events: none;
    z-index: 1;
}

#contributionModal .contribution-currency-chevron {
    width: 13px;
    height: 13px;
    flex-shrink: 0;
    pointer-events: none;
    position: relative;
    z-index: 1;
    margin-left: 4px;
}

#contributionModal .contribution-price-divider {
    width: 1px;
    height: 20px;
    background: #5a5a5a;
    flex-shrink: 0;
}

#contributionModal .contribution-price-input-wrapper input {
    flex: 1;
    background: transparent;
    border: none;
    font-family: 'Work Sans', sans-serif;
    font-size: 17px;
    color: #262e2e;
    letter-spacing: -0.44px;
}

#contributionModal .contribution-price-input-wrapper input::placeholder {
    color: #5a5a5a;
    font-size: 17px;
}

#contributionModal .contribution-price-input-wrapper input:focus {
    outline: none;
}

#contributionModal .contribution-shopping-bag-btn {
    width: 46.4px;
    height: 46.4px;
    background: #9b607c;
    border: none;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
    padding: 0;
}

#contributionModal .contribution-shopping-bag-btn:hover {
    background: #7a4d63;
}

#contributionModal .contribution-shopping-bag-btn svg {
    width: 26px;
    height: 26px;
    fill: white;
}

/* ================================================== */
/* CONTRIBUTION MODAL BUTTON STYLES */
/* ================================================== */

/* Base Button Styles - Standardized shape, size, and fonts */
/* All buttons share these common properties */
#contributionModal .contribution-submit-btn,
#contributionModal .contribution-action-contribute-btn,
#contributionModal .contribution-action-reserve-btn,
#contributionModal .contribution-cancel-btn,
.contribution-action-contribute-btn,
.contribution-action-reserve-btn {
    padding: 14px 16px;
    border-radius: 8px;
    font-family: 'Work Sans', sans-serif;
    font-size: 18px;
    letter-spacing: -0.34px;
    cursor: pointer;
    transition: all 0.2s ease;
}

/* Proceed to Pay Button */
#contributionModal .contribution-submit-btn {
    width: 100%;
    background: #324848;
    border: none;
    color: white;
    margin-top: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

#contributionModal .contribution-submit-btn:hover:not(:disabled) {
    background: #2a3a3a;
}

#contributionModal .contribution-submit-btn:disabled {
    background: #cccccc;
    color: #666666;
    cursor: not-allowed;
}

/* Contribution Modal - Action Buttons Container */
.contribution-action-buttons {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 12px;
    margin-top: 24px;
    width: 100%;
}

/* Contribute Button */
.contribution-action-contribute-btn {
    flex: 1;
    background: #324848;
    border: none;
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.contribution-action-contribute-btn:hover:not(:disabled) {
    background: #2a3a3a;
}

.contribution-action-contribute-btn:disabled {
    background: #cccccc;
    color: #666666;
    cursor: not-allowed;
}

/* Icon styling for action buttons */
.contribution-action-contribute-btn i,
.contribution-action-reserve-btn i {
    font-size: 16px;
}

/* Reserve & Buy Button */
.contribution-action-reserve-btn {
    flex: 1;
    background: #324848;
    border: none;
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.contribution-action-reserve-btn:hover:not(:disabled) {
    background: #2a3a3a;
}

.contribution-action-reserve-btn:disabled {
    background: #cccccc;
    color: #666666;
    cursor: not-allowed;
}

.contribution-action-separator {
    text-align: center;
    color: #5A5A5A;
    font-size: 15px;
    font-weight: 500;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    align-self: center; /* Center vertically within the flex container */
    justify-content: center;
}

/* Cancel Button - Hidden on desktop, visible on mobile */
.contribution-cancel-btn {
    display: none;
    width: 100%;
    margin-top: 16px;
    background: transparent;
    border: 1px solid #9b607c;
    color: #9b607c;
    font-weight: 500;
}

.contribution-cancel-btn:hover {
    background: #9b607c;
    color: white;
    border-color: #9b607c;
}

/* Reserved Banner Overlay - Ribbon Style */
#contributionModal .contribution-reserved-banner {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 12px;
    z-index: 10;
    pointer-events: none;
}

#contributionModal .contribution-reserved-banner .ribbon-wrapper {
    position: absolute;
    top: -5px;
    left: -5px;
    width: 150px;
    height: 150px;
    overflow: hidden;
    z-index: 15;
}

#contributionModal .contribution-reserved-banner .contribution-reserved-ribbon {
    position: absolute;
    display: block;
    width: 220px;
    padding: 10px 0;
    background: #E1B672; /* Hazlnut yellow */
    color: #40220F; /* Dark brown text for contrast */
    font-size: 14px;
    font-weight: bold;
    font-family: 'Work Sans', sans-serif;
    text-align: center;
    transform: rotate(-45deg);
    left: -50px;
    top: 45px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.3);
    letter-spacing: -0.34px;
}

/* Reserve Actions Container */
#contributionModal .contribution-reserve-actions {
    display: flex;
    flex-direction: row;
    gap: 12px;
    margin-top: 20px;
    width: 100%;
}

/* Buy Online Button */
#contributionModal .contribution-buy-online-btn {
    flex: 1;
    padding: 14px 16px;
    background: #E1B672;
    border: none;
    border-radius: 8px;
    color: white;
    font-family: 'Work Sans', sans-serif;
    font-size: 18px;
    letter-spacing: -0.34px;
    cursor: pointer;
    transition: background 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

#contributionModal .contribution-buy-online-btn i,
#contributionModal .contribution-unreserve-btn i,
#contributionModal .contribution-submit-btn i {
    font-size: 16px;
}

#contributionModal .contribution-buy-online-btn:hover:not(:disabled) {
    background: #D4A85F;
}

#contributionModal .contribution-buy-online-btn:disabled {
    background: #cccccc;
    color: #666666;
    cursor: not-allowed;
}

/* Unreserve Button */
#contributionModal .contribution-unreserve-btn {
    flex: 1;
    padding: 14px 16px;
    background: transparent;
    border: 2px solid #324848;
    border-radius: 8px;
    color: #324848;
    font-family: 'Work Sans', sans-serif;
    font-size: 18px;
    letter-spacing: -0.34px;
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

#contributionModal .contribution-unreserve-btn:hover:not(:disabled) {
    background: #324848;
    color: white;
}

#contributionModal .contribution-unreserve-btn:disabled {
    border-color: #cccccc;
    color: #cccccc;
    cursor: not-allowed;
}

/* Disabled/Readonly Textarea State */
#contributionModal .contribution-textarea:disabled,
#contributionModal .contribution-textarea[readonly] {
    background: #f5f5f5;
    color: #999999;
    cursor: not-allowed;
}

/* Host warning in modal */
.host-contribution-warning {
    color: #d32f2f;
    background-color: #ffebee;
    padding: 10px;
    border-radius: 8px;
    margin-top: 15px;
    font-size: 13px;
    text-align: center;
    display: none; /* Hidden by default */
    border: 1px solid #ffcdd2;
}

/* Couple Note Card - Desktop & Mobile Base Styles */
.couple-note-card,
.couple-note-card-mobile {
    background: #E1B672;
    border: 1px solid rgba(155, 96, 124, 0.15);
    border-radius: 12px;
    padding: 16px;
    margin: 16px 0 0 0;
    font-family: 'Work Sans', sans-serif;
    text-align: left;
}

/* Desktop: Flex layout for scrollable note body */
.couple-note-card {
    display: flex;
    flex-direction: column;
    min-height: 0;
    max-height: 300px;
    overflow: hidden;
    margin: 0;
}

.couple-note-header {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
    flex-shrink: 0;
}

.couple-note-emoji {
    font-size: 18px;
    line-height: 1;
}

.couple-note-heading {
    font-size: 16px;
    font-weight: 600;
    color: #262e2e;
    margin: 0;
    letter-spacing: -0.32px;
}

.couple-note-body {
    margin-bottom: 0;
    flex: 1 1 auto;
    overflow-y: auto;
    overflow-x: hidden;
    min-height: 0;
    padding-right: 8px;
}

.couple-note-text {
    font-size: 15px;
    line-height: 1.6;
    color: #262e2e;
    margin: 0;
    white-space: pre-wrap;
    word-break: break-word;
    text-align: left;
}

.couple-note-text.truncated {
    display: -webkit-box;
    -webkit-line-clamp: 6;
    line-clamp: 6;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.couple-note-expand-btn {
    background: none;
    border: none;
    color: #9b607c;
    font-size: 14px;
    font-weight: 500;
    padding: 4px 0;
    margin-top: 8px;
    cursor: pointer;
    font-family: 'Work Sans', sans-serif;
    text-decoration: underline;
    transition: opacity 0.2s;
}

.couple-note-expand-btn:hover {
    opacity: 0.7;
}

.couple-note-signature {
    display: none; /* Hide signature entirely */
}

/* Desktop: Show in left column, hide mobile version */
@media screen and (min-width: 769px) {
    #contributionModal .figma-modal-container.contribution-modal-two-column {
        overflow: auto;
    }
    
    .couple-note-card {
        max-height: 300px;
    }
    
    .couple-note-card-mobile {
        display: none !important;
    }
    
    /* Remove truncation on desktop - use scroll instead */
    .couple-note-text.truncated {
        display: block !important;
        -webkit-line-clamp: unset !important;
        line-clamp: unset !important;
        -webkit-box-orient: unset !important;
        overflow: visible !important;
    }
    
    /* Hide expand button on desktop */
    .couple-note-expand-btn {
        display: none !important;
    }
}

/* Mobile: Hide desktop, show mobile version with adjustments */
@media screen and (max-width: 768px) {
    .couple-note-card {
        display: none !important;
    }
    
    .couple-note-card-mobile {
        padding: 14px;
        margin: 12px 0 0 0;
    }
    
    .couple-note-heading {
        font-size: 14px;
    }
    
    .couple-note-emoji {
        font-size: 16px;
    }
    
    .couple-note-text {
        font-size: 14px;
        line-height: 1.55;
    }
    
    .couple-note-expand-btn {
        font-size: 13px;
    }
    
    .couple-note-signature {
        display: none; /* Hide signature entirely */
    }
}

/* Mobile Responsive */
@media screen and (max-width: 768px) {
    body.modal-open {
        overflow: hidden;
        position: fixed;
        width: 100%;
    }
    
    #contributionModal.figma-modal-overlay {
        padding: 0;
        align-items: flex-start;
    }
    
    #contributionModal .figma-modal-container.contribution-modal-two-column {
        width: 100vw;
        height: 100vh;
        max-width: 100%;
        max-height: 100vh;
        border-radius: 0;
        padding: 16px;
        padding-bottom: max(120px, env(safe-area-inset-bottom, 120px));
        overflow-y: auto;
        overflow-x: hidden;
        box-sizing: border-box;
    }
    
    #contributionModal .contribution-modal-content {
        grid-template-columns: 1fr;
        gap: 16px;
        width: 100%;
        box-sizing: border-box;
        height: auto;
        max-height: none;
        overflow: visible;
    }
    
    #contributionModal .contribution-left-column {
        height: auto;
        overflow: visible;
    }
    
    #contributionModal .contribution-right-column {
        height: auto;
        overflow: visible;
        padding-right: 0;
    }
    
    #contributionModal .contribution-product-image-wrapper {
        max-height: 40vh;
        width: 100%;
        box-sizing: border-box;
        aspect-ratio: unset;
        min-height: 200px;
    }
    
    #contributionModal .contribution-product-image {
        width: 100%;
        height: auto;
        max-height: 40vh;
        object-fit: contain;
        object-position: center;
    }
    
    #contributionModal .contribution-textarea-wrapper {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }
    
    #contributionModal .contribution-textarea {
        min-height: 200px;
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }
    
    #contributionModal .contribution-price-input-wrapper {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }
    
    #contributionModal .contribution-right-column {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }
    
    #contributionModal .contribution-left-column {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
        padding-top: 32px; /* Add gap below close button on mobile */
    }
    
    #contributionModal .contribution-product-name {
        font-size: 22px;
    }
    
    /* Mobile: Button Styles - Maintain standardized sizing */
    #contributionModal .contribution-submit-btn {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }
    
    /* Mobile: Action buttons side by side */
    #contributionModal .contribution-action-buttons {
        gap: 8px;
        align-items: stretch; /* Ensure equal heights for both buttons */
    }
    
    /* Mobile: Ensure consistent button heights to accommodate text */
    #contributionModal .contribution-action-contribute-btn,
    #contributionModal .contribution-action-reserve-btn,
    .contribution-action-contribute-btn,
    .contribution-action-reserve-btn {
        min-height: 52px; /* Lock height to accommodate 18px font size and prevent size changes */
    }
    
    /* Mobile: Increase separator font size and ensure proper alignment */
    #contributionModal .contribution-action-separator {
        font-size: 15px; /* Match desktop size for better visibility */
    }
    
    /* Mobile: Show cancel button */
    #contributionModal .contribution-cancel-btn {
        display: block;
    }
    
    #contributionModal .figma-modal-close {
        top: 16px;
        right: 16px;
        width: 28px;
        height: 28px;
        font-size: 24px;
    }
    
    /* Mobile: Reserved Banner */
    #contributionModal .contribution-reserved-banner {
        border-radius: 12px;
    }
    
    #contributionModal .contribution-reserved-banner .ribbon-wrapper {
        width: 120px;
        height: 120px;
    }
    
    #contributionModal .contribution-reserved-banner .contribution-reserved-ribbon {
        width: 180px;
        font-size: 12px;
        padding: 8px 0;
        left: -40px;
        top: 35px;
    }
    
    /* Mobile: Reserve Actions */
    #contributionModal .contribution-reserve-actions {
        margin-top: 16px;
        gap: 10px;
    }
    
    /* Mobile: Reserve action buttons maintain base styles */
    #contributionModal .contribution-buy-online-btn,
    #contributionModal .contribution-unreserve-btn {
        flex: 1; /* Ensure equal width on mobile */
        /* Base styles (padding: 14px 16px, font-size: 18px) apply on mobile too */
    }
    
    /* Mobile: Icon sizing for all buttons */
    #contributionModal .contribution-buy-online-btn i,
    #contributionModal .contribution-unreserve-btn i,
    #contributionModal .contribution-submit-btn i,
    .contribution-action-contribute-btn i,
    .contribution-action-reserve-btn i {
        font-size: 16px; /* Maintain icon size relative to button */
    }
}

/* ================================================== */
/* DEMO CONTRIBUTION MODAL STYLES */
/* ================================================== */
/* Contribution Modal Styles - Two Column Layout */
#demoContributionModal.figma-modal-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(2px);
    z-index: 1000;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

#demoContributionModal.figma-modal-overlay.active,
#demoContributionModal.figma-modal-overlay[style*="display: block"] {
    display: flex;
}

#demoContributionModal .figma-modal-container.contribution-modal-two-column {
    background: #f2efec;
    border-top: 2px solid #b2b2b2;
    border-radius: 22px;
    max-width: 1000px;
    width: 100%;
    max-height: 90vh;
    overflow: auto;
    position: relative;
    padding: 35px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
}

#demoContributionModal .figma-modal-close {
    position: absolute;
    top: 24px;
    right: 24px;
    width: 32px;
    height: 32px;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #262e2e;
    font-size: 28px;
    z-index: 10;
}

#demoContributionModal .contribution-modal-content {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

/* Left Column */
#demoContributionModal .contribution-left-column {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

#demoContributionModal .contribution-product-image-wrapper {
    position: relative;
    width: 100%;
    max-height: 400px;
    /* min-height: 200px; */
    flex-shrink: 0;
    border-radius: 12px;
    overflow: hidden;
    background: #e3dcd6;
    margin-top: 20px;
}

#demoContributionModal .contribution-product-image {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
}

#demoContributionModal .contribution-textarea-wrapper {
    position: relative;
}

#demoContributionModal .contribution-textarea-decoration {
    position: absolute;
    background: #e1b672;
    border-radius: 8px;
    width: calc(100% + 10px);
    height: 100%;
    left: -5px;
    top: -5px;
    transform: rotate(357.974deg) skewX(1.479deg);
    z-index: 0;
}

#demoContributionModal .contribution-textarea {
    width: 100%;
    min-height: 200px;
    padding: 16px;
    background: #e3dcd6;
    border: none;
    border-radius: 8px;
    font-family: 'Work Sans', sans-serif;
    font-size: 15px;
    color: #262e2e;
    letter-spacing: -0.44px;
    resize: none;
    box-sizing: border-box;
    position: relative;
    z-index: 1;
    box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.15);
}

#demoContributionModal .contribution-textarea-counter {
    position: absolute;
    bottom: 12px;
    right: 20px;
    font-family: 'Work Sans', sans-serif;
    font-size: 16px;
    color: #5a5a5a;
    letter-spacing: -0.36px;
    z-index: 2;
    pointer-events: none;
}

#demoContributionModal .contribution-textarea::placeholder {
    color: #5a5a5a;
}

#demoContributionModal .contribution-textarea:focus {
    outline: none;
}

/* Validation error styles */
#demoContributionModal .contribution-textarea.error,
#demoContributionModal #contributionAmount.error {
    border-color: #e74c3c;
    animation: shake 0.5s ease-in-out;
}

#demoContributionModal .contribution-note-error {
    position: absolute;
    bottom: -20px;
    left: 0;
    color: #e74c3c;
    font-size: 13px;
    font-style: italic;
}

#demoContributionModal .contribution-amount-error {
    position: absolute;
    bottom: -20px;
    left: 0;
    color: #e74c3c;
    font-size: 13px;
    font-style: italic;
}

/* Right Column */
#demoContributionModal .contribution-right-column {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

#demoContributionModal .contribution-product-info {
    margin-bottom: 10px;
    text-align: left;
    padding: 0;
}

#demoContributionModal .contribution-product-name {
    font-family: 'Work Sans', sans-serif;
    font-weight: 500;
    font-size: 28px;
    color: #262e2e;
    letter-spacing: -0.48px;
    margin: 0 0 8px 0;
    padding: 0;
    text-align: left;
}

#demoContributionModal .contribution-product-price {
    font-family: 'Work Sans', sans-serif;
    font-weight: 600;
    font-size: 22px;
    color: #5a5a5a;
    letter-spacing: -0.44px;
    padding: 0;
    text-align: left;
}

#demoContributionModal .contribution-explanation-text {
    display: block;
    font-family: 'Work Sans', sans-serif;
    font-size: 14px;
    line-height: 1.5;
    color: #5a5a5a;
    text-align: left;
}

#demoContributionModal .contribution-progress-container {
    margin: 10px 0;
    display: flex;
    flex-direction: column;
}

#demoContributionModal .contribution-progress-info {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 8px;
    font-family: 'Work Sans', sans-serif;
    font-size: 14px;
    color: #262e2e;
    font-weight: 500;
    letter-spacing: -0.48px;
}

#demoContributionModal .contribution-progress-left {
    font-family: 'Work Sans', sans-serif;
    font-size: 24px;
    color: #262e2e;
    font-weight: 500;
    letter-spacing: -0.48px;
}

#demoContributionModal .contribution-progress-right {
    font-family: 'Work Sans', sans-serif;
    font-size: 20px;
    color: #262e2e;
    font-weight: 500;
    letter-spacing: -0.48px;
}

#demoContributionModal .contribution-progress-info #amount-left,
#demoContributionModal .contribution-progress-info #goal-amount {
    font-weight: 600;
    margin: 0 3px;
}

#demoContributionModal .contribution-progress-bar-wrapper {
    display: flex;
    align-items: center;
    width: 100%;
    gap: 8px;
}

#demoContributionModal .contribution-progress-bar-outer {
    flex-grow: 1;
    height: 16px;
    background: #e3dcd6;
    border-radius: 4px;
    overflow: visible;
    position: relative;
}

#demoContributionModal .contribution-amount-slider {
    position: absolute;
    width: 100%;
    height: 21px;
    top: -6px;
    left: 0;
    margin: 0;
    padding: 0;
    background: transparent;
    outline: none;
    cursor: pointer;
    z-index: 10;
    -webkit-appearance: none;
    appearance: none;
}

#demoContributionModal .contribution-amount-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 9px;
    background: transparent;
    border: none;
}

#demoContributionModal .contribution-amount-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    background: #9b607c;
    border-radius: 50%;
    cursor: grab;
    border: 2px solid #f2efec;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    margin-top: -5px;
    transition: background 0.2s ease;
}

#demoContributionModal .contribution-amount-slider::-webkit-slider-thumb:active {
    cursor: grabbing;
    background: #7a4d63;
}

#demoContributionModal .contribution-amount-slider::-moz-range-track {
    width: 100%;
    height: 16px;
    background: transparent;
    border: none;
}

#demoContributionModal .contribution-amount-slider::-moz-range-thumb {
    width: 28px;
    height: 28px;
    background: #9b607c;
    border-radius: 50%;
    cursor: grab;
    border: 2px solid #f2efec;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    transition: background 0.2s ease;
}

#demoContributionModal .contribution-amount-slider::-moz-range-thumb:active {
    cursor: grabbing;
    background: #7a4d63;
}

#demoContributionModal .contribution-progress-bar-inner {
    height: 100%;
    background: #9b607c;
    /* transition: width 0.1s ease; Removed for smoother slider tracking */
    pointer-events: none;
    position: absolute;
    top: 0;
    left: 0;
    border-radius: 4px;
}

#demoContributionModal .contribution-progress-bar-value-text {
    font-family: 'Work Sans', sans-serif;
    font-size: 13px;
    color: #5a5a5a;
    font-weight: 500;
    white-space: nowrap;
}

#demoContributionModal .contribution-price-input-wrapper {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: #e3dcd6;
    border-radius: 8px;
    width: 100%;
    box-sizing: border-box;
    position: relative;
    margin-bottom: 24px;
}

#demoContributionModal .contribution-currency-selector {
    display: flex;
    align-items: center;
    gap: 0;
    position: relative;
    cursor: pointer;
    min-width: 50px;
}

#demoContributionModal .contribution-currency-select {
    background: transparent;
    border: none;
    font-family: 'Work Sans', sans-serif;
    font-size: 17px;
    color: #262e2e;
    letter-spacing: -0.31px;
    cursor: pointer;
    padding: 0;
    padding-right: 26px;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    outline: none;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 2;
    opacity: 0;
}

#demoContributionModal .contribution-currency-select option {
    background: #e3dcd6;
    color: #262e2e;
}

#demoContributionModal .contribution-currency-display {
    font-family: 'Work Sans', sans-serif;
    font-size: 17px;
    color: #262e2e;
    letter-spacing: -0.44px;
    pointer-events: none;
    z-index: 1;
}

#demoContributionModal .contribution-currency-chevron {
    width: 13px;
    height: 13px;
    flex-shrink: 0;
    pointer-events: none;
    position: relative;
    z-index: 1;
    margin-left: 4px;
}

#demoContributionModal .contribution-price-divider {
    width: 1px;
    height: 20px;
    background: #5a5a5a;
    flex-shrink: 0;
}

#demoContributionModal .contribution-price-input-wrapper input {
    flex: 1;
    background: transparent;
    border: none;
    font-family: 'Work Sans', sans-serif;
    font-size: 17px;
    color: #262e2e;
    letter-spacing: -0.44px;
}

#demoContributionModal .contribution-price-input-wrapper input::placeholder {
    color: #5a5a5a;
    font-size: 17px;
}

#demoContributionModal .contribution-price-input-wrapper input:focus {
    outline: none;
}

#demoContributionModal .contribution-shopping-bag-btn {
    width: 46.4px;
    height: 46.4px;
    background: #9b607c;
    border: none;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
    padding: 0;
}

#demoContributionModal .contribution-shopping-bag-btn:hover {
    background: #7a4d63;
}

#demoContributionModal .contribution-shopping-bag-btn svg {
    width: 26px;
    height: 26px;
    fill: white;
}

/* ================================================== */
/* DEMO CONTRIBUTION MODAL BUTTON STYLES */
/* ================================================== */

/* Base Button Styles - Standardized shape, size, and fonts */
/* All buttons share these common properties */
#demoContributionModal .contribution-submit-btn,
#demoContributionModal .contribution-action-contribute-btn,
#demoContributionModal .contribution-action-reserve-btn,
#demoContributionModal .contribution-cancel-btn {
    padding: 14px 16px;
    border-radius: 8px;
    font-family: 'Work Sans', sans-serif;
    font-size: 18px;
    letter-spacing: -0.34px;
    cursor: pointer;
    transition: all 0.2s ease;
}

/* Proceed to Pay Button */
#demoContributionModal .contribution-submit-btn {
    width: 100%;
    background: #324848;
    border: none;
    color: white;
    margin-top: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

#demoContributionModal .contribution-submit-btn:hover:not(:disabled) {
    background: #2a3a3a;
}

#demoContributionModal .contribution-submit-btn:disabled {
    background: #cccccc;
    color: #666666;
    cursor: not-allowed;
}

/* Demo Contribution Modal - Action Buttons Container */
/* Action buttons inherit base styles from main contribution modal styles above */

/* Reserved Banner Overlay */
#demoContributionModal .contribution-reserved-banner {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    z-index: 10;
}

#demoContributionModal .contribution-reserved-text {
    background: #324848;
    color: white;
    padding: 12px 24px;
    border-radius: 8px;
    font-family: 'Work Sans', sans-serif;
    font-size: 18px;
    font-weight: 600;
    letter-spacing: -0.34px;
}

/* Reserve Actions Container */
#demoContributionModal .contribution-reserve-actions {
    display: flex;
    flex-direction: row;
    gap: 12px;
    margin-top: 20px;
    width: 100%;
}

/* Buy Online Button */
#demoContributionModal .contribution-buy-online-btn {
    flex: 1;
    padding: 14px 16px;
    background: #E1B672;
    border: none;
    border-radius: 8px;
    color: white;
    font-family: 'Work Sans', sans-serif;
    font-size: 18px;
    letter-spacing: -0.34px;
    cursor: pointer;
    transition: background 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

#demoContributionModal .contribution-buy-online-btn i,
#demoContributionModal .contribution-unreserve-btn i,
#demoContributionModal .contribution-submit-btn i {
    font-size: 16px;
}

#demoContributionModal .contribution-buy-online-btn:hover:not(:disabled) {
    background: #D4A85F;
}

#demoContributionModal .contribution-buy-online-btn:disabled {
    background: #cccccc;
    color: #666666;
    cursor: not-allowed;
}

/* Unreserve Button */
#demoContributionModal .contribution-unreserve-btn {
    flex: 1;
    padding: 14px 16px;
    background: transparent;
    border: 2px solid #324848;
    border-radius: 8px;
    color: #324848;
    font-family: 'Work Sans', sans-serif;
    font-size: 18px;
    letter-spacing: -0.34px;
    cursor: pointer;
    transition: all 0.2s ease;
}

#demoContributionModal .contribution-unreserve-btn:hover:not(:disabled) {
    background: #324848;
    color: white;
}

#demoContributionModal .contribution-unreserve-btn:disabled {
    border-color: #cccccc;
    color: #cccccc;
    cursor: not-allowed;
}

/* Disabled/Readonly Textarea State */
#demoContributionModal .contribution-textarea:disabled,
#demoContributionModal .contribution-textarea[readonly] {
    background: #f5f5f5;
    color: #999999;
    cursor: not-allowed;
}

/* Host warning in modal */
.host-contribution-warning {
    color: #d32f2f;
    background-color: #ffebee;
    padding: 10px;
    border-radius: 8px;
    margin-top: 15px;
    font-size: 13px;
    text-align: center;
    display: none; /* Hidden by default */
    border: 1px solid #ffcdd2;
}

/* Couple Note Card - Desktop & Mobile Base Styles */
.couple-note-card,
.couple-note-card-mobile {
    background: #E1B672;
    border: 1px solid rgba(155, 96, 124, 0.15);
    border-radius: 12px;
    padding: 16px;
    margin: 16px 0 0 0;
    font-family: 'Work Sans', sans-serif;
    text-align: left;
}

/* Desktop: Flex layout for scrollable note body */
.couple-note-card {
    display: flex;
    flex-direction: column;
    min-height: 0;
    max-height: 300px;
    overflow: hidden;
    margin: 0;
}

.couple-note-header {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
    flex-shrink: 0;
}

.couple-note-emoji {
    font-size: 18px;
    line-height: 1;
}

.couple-note-heading {
    font-size: 16px;
    font-weight: 600;
    color: #262e2e;
    margin: 0;
    letter-spacing: -0.32px;
}

.couple-note-body {
    margin-bottom: 0;
    flex: 1 1 auto;
    overflow-y: auto;
    overflow-x: hidden;
    min-height: 0;
    padding-right: 8px;
}

.couple-note-text {
    font-size: 15px;
    line-height: 1.6;
    color: #262e2e;
    margin: 0;
    white-space: pre-wrap;
    word-break: break-word;
    text-align: left;
}

.couple-note-text.truncated {
    display: -webkit-box;
    -webkit-line-clamp: 6;
    line-clamp: 6;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.couple-note-expand-btn {
    background: none;
    border: none;
    color: #9b607c;
    font-size: 14px;
    font-weight: 500;
    padding: 4px 0;
    margin-top: 8px;
    cursor: pointer;
    font-family: 'Work Sans', sans-serif;
    text-decoration: underline;
    transition: opacity 0.2s;
}

.couple-note-expand-btn:hover {
    opacity: 0.7;
}

.couple-note-signature {
    display: none; /* Hide signature entirely */
}

/* Desktop: Show in left column, hide mobile version */
@media screen and (min-width: 769px) {
    #demoContributionModal .figma-modal-container.contribution-modal-two-column {
        overflow: auto;
    }
    
    .couple-note-card {
        max-height: 300px;
    }
    
    .couple-note-card-mobile {
        display: none !important;
    }
    
    /* Remove truncation on desktop - use scroll instead */
    .couple-note-text.truncated {
        display: block !important;
        -webkit-line-clamp: unset !important;
        line-clamp: unset !important;
        -webkit-box-orient: unset !important;
        overflow: visible !important;
    }
    
    /* Hide expand button on desktop */
    .couple-note-expand-btn {
        display: none !important;
    }
}

/* Mobile: Hide desktop, show mobile version with adjustments */
@media screen and (max-width: 768px) {
    .couple-note-card {
        display: none !important;
    }
    
    .couple-note-card-mobile {
        padding: 14px;
        margin: 12px 0 0 0;
    }
    
    .couple-note-heading {
        font-size: 14px;
    }
    
    .couple-note-emoji {
        font-size: 16px;
    }
    
    .couple-note-text {
        font-size: 14px;
        line-height: 1.55;
    }
    
    .couple-note-expand-btn {
        font-size: 13px;
    }
    
    .couple-note-signature {
        display: none; /* Hide signature entirely */
    }
}

/* Mobile Responsive */
@media screen and (max-width: 768px) {
    body.modal-open {
        overflow: hidden;
        position: fixed;
        width: 100%;
    }
    
    #demoContributionModal.figma-modal-overlay {
        padding: 0;
        align-items: flex-start;
    }
    
    #demoContributionModal .figma-modal-container.contribution-modal-two-column {
        width: 100vw;
        height: 100vh;
        max-width: 100%;
        max-height: 100vh;
        border-radius: 0;
        padding: 16px;
        padding-bottom: max(120px, env(safe-area-inset-bottom, 120px));
        overflow-y: auto;
        overflow-x: hidden;
        box-sizing: border-box;
    }
    
    #demoContributionModal .contribution-modal-content {
        grid-template-columns: 1fr;
        gap: 16px;
        width: 100%;
        box-sizing: border-box;
        height: auto;
        max-height: none;
        overflow: visible;
    }
    
    #demoContributionModal .contribution-left-column {
        height: auto;
        overflow: visible;
    }
    
    #demoContributionModal .contribution-right-column {
        height: auto;
        overflow: visible;
        padding-right: 0;
    }
    
    #demoContributionModal .contribution-product-image-wrapper {
        max-height: 40vh;
        width: 100%;
        box-sizing: border-box;
        aspect-ratio: unset;
        min-height: 200px;
    }
    
    #demoContributionModal .contribution-product-image {
        width: 100%;
        height: auto;
        max-height: 40vh;
        object-fit: contain;
        object-position: center;
    }
    
    #demoContributionModal .contribution-textarea-wrapper {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }
    
    #demoContributionModal .contribution-textarea {
        min-height: 200px;
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }
    
    #demoContributionModal .contribution-price-input-wrapper {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }
    
    #demoContributionModal .contribution-right-column {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }
    
    #demoContributionModal .contribution-left-column {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
        padding-top: 32px; /* Add gap below close button on mobile */
    }
    
    #demoContributionModal .contribution-product-name {
        font-size: 22px;
    }
    
    #demoContributionModal .contribution-submit-btn {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }
    
    /* Mobile: Action buttons side by side */
    #demoContributionModal .contribution-action-buttons {
        gap: 8px;
        align-items: stretch; /* Ensure equal heights for both buttons */
    }
    
    /* Ensure separator is vertically centered */
    #demoContributionModal .contribution-action-separator {
        align-self: center; /* Override stretch to center vertically */
    }
    
    /* Mobile: Ensure consistent button heights to accommodate text */
    #demoContributionModal .contribution-action-contribute-btn,
    #demoContributionModal .contribution-action-reserve-btn {
        min-height: 52px; /* Lock height to accommodate 18px font size and prevent size changes */
    }
    
    /* Mobile: Increase separator font size and ensure proper alignment */
    #demoContributionModal .contribution-action-separator {
        font-size: 15px; /* Match desktop size for better visibility */
    }
    
    /* Mobile: Show cancel button */
    #demoContributionModal .contribution-cancel-btn {
        display: block;
    }
    
    #demoContributionModal .figma-modal-close {
        top: 16px;
        right: 16px;
        width: 28px;
        height: 28px;
        font-size: 24px;
    }
    
    /* Mobile: Reserved Banner */
    #demoContributionModal .contribution-reserved-banner {
        border-radius: 12px;
    }
    
    #demoContributionModal .contribution-reserved-banner .ribbon-wrapper {
        width: 120px;
        height: 120px;
    }
    
    #demoContributionModal .contribution-reserved-banner .contribution-reserved-ribbon {
        width: 180px;
        font-size: 12px;
        padding: 8px 0;
        left: -40px;
        top: 35px;
    }
    
    /* Mobile: Reserve Actions */
    #demoContributionModal .contribution-reserve-actions {
        margin-top: 16px;
        gap: 10px;
        flex-direction: row; /* Keep side-by-side on mobile */
    }
    
    /* Mobile: Demo modal reserve action buttons maintain base styles */
    #demoContributionModal .contribution-buy-online-btn,
    #demoContributionModal .contribution-unreserve-btn {
        flex: 1; /* Ensure equal width on mobile */
        /* Base styles (padding: 14px 16px, font-size: 18px) apply on mobile too */
    }
    
    /* Mobile: Icon sizing for all demo modal buttons */
    #demoContributionModal .contribution-buy-online-btn i,
    #demoContributionModal .contribution-unreserve-btn i,
    #demoContributionModal .contribution-submit-btn i,
    #demoContributionModal .contribution-action-contribute-btn i,
    #demoContributionModal .contribution-action-reserve-btn i {
        font-size: 16px; /* Maintain icon size relative to button */
    }
}
