.cge-course-fields { margin: 1rem 0; }
.cge-participant-count-wrap { margin-bottom: 1rem; }
.cge-participant-count-wrap label { display:block; font-weight:600; margin-bottom:.35rem; }
.cge-participant-count-wrap select { width:100%; max-width:100%; }
.cge-fixed-count { display:inline-block; }
.cge-calculated-price { margin:.75rem 0 1rem; font-size:1.15em; }
.cge-price-suffix { font-size:.85em; font-weight:500; white-space:nowrap; }
.cge-select-options { font-size:.85em; font-weight:500; }
.cge-participants { margin: 1rem 0; }
.cge-participants-title { font-weight:600; margin-bottom:.5rem; }
.cge-participant-row { margin-bottom:.75rem; }
.cge-participant-row label { display:block; margin-bottom:.25rem; }
.cge-participant-row input { width:100%; }
.cge-left-short-description { clear:left; float:left; width:48%; margin-top:1rem; margin-bottom:1.5rem; }
@media (max-width:768px) {
  .cge-left-short-description { float:none; width:100%; clear:both; }
}


/* Keep WooCommerce quantity in the DOM for Stripe Express Checkout, but CGE controls it from the participant selector. */
form.cart .quantity { display:none !important; }
.single_add_to_cart_button.cge-waiting-participants { opacity:.55; cursor:not-allowed; }

/* v1.2.7: Stripe Express Checkout stays hidden until the variation, participant
   count, and all participant names are complete. !important prevents Stripe's inline display
   changes from exposing the element early. */
body.single-product.cge-course-active:not(.cge-express-ready) #wc-stripe-express-checkout-element,
body.single-product.cge-course-active:not(.cge-express-ready) #wc-stripe-express-checkout-button-separator {
    display: none !important;
}
