/* Bootstrap 5 checkout alerts. The OPC IDs are retained for its alert API. */
#opc_alert.ndcc-opc-alert {
  --bs-modal-width: 34rem;
  --bs-modal-border-width: 0;
  --bs-modal-border-radius: 0.75rem;
  --bs-modal-inner-border-radius: 0.75rem;
  --bs-modal-box-shadow: 0 1.25rem 3rem rgba(48, 50, 57, 0.22);
  z-index: 999999;
}

#opc_alert.ndcc-opc-alert .modal-content {
  overflow: hidden;
  color: #303239;
}

#opc_alert.ndcc-opc-alert .modal-header {
  padding: 1.25rem 1.5rem;
  border-bottom-color: #ece8e4;
  box-shadow: inset 0 0.25rem 0 #e98315;
}

#opc_alert.ndcc-opc-alert .modal-title {
  font-weight: 700;
}

#opc_alert.ndcc-opc-alert .modal-body {
  padding: 1.5rem;
}

#opc_alert.ndcc-opc-alert #alert_msg_here {
  margin: 0;
  line-height: 1.75;
}

#opc_alert.ndcc-opc-alert .modal-footer {
  padding: 1rem 1.5rem;
  background: #f8f7f5;
  border-top-color: #ece8e4;
}

#opc_alert.ndcc-opc-alert #alert_ok {
  min-width: 6rem;
}

@media (max-width: 575.98px) {
  #opc_alert.ndcc-opc-alert .modal-dialog {
    margin: 1rem;
  }
}

/* Keep tall Stripe Elements and their actions in one scrollable panel.
   The plugin's column-wrap / max-height combination otherwise splits them. */
#payment_response .payment_wrap_after_checkout.ndcc-stripe-panel {
  box-sizing: border-box;
  display: block;
  width: calc(100% - 2rem);
  max-width: 560px;
  max-height: calc(100vh - 2rem) !important;
  max-height: calc(100dvh - 2rem) !important;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 24px;
  margin: auto;
  background: #fff;
  color: #1d1d1b;
  border-radius: 12px;
  box-shadow: 0 16px 64px rgba(0, 0, 0, 0.25);
}

#payment_response .payment_wrap_after_checkout.ndcc-stripe-panel > .cardInput {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  max-height: none;
  overflow: visible;
}

#payment_response .ndcc-stripe-panel .wait_on_ready button {
  width: 100%;
}

#payment_response .ndcc-stripe-panel > .cancel {
  display: block;
  text-align: center;
  color: #4b5563;
}

#payment_response .ndcc-stripe-panel > .spinner {
  text-align: center;
  padding: 12px 0;
}

/* OPC inserts validation feedback dynamically, including after floating fields. */
#vmMainPageOPC .ndcc-field-feedback {
  margin: -0.25rem 0 0.75rem;
  font-size: 0.8125rem;
}

#vmMainPageOPC .form-control.is-invalid,
#vmMainPageOPC .form-select.is-invalid {
  border-color: var(--bs-form-invalid-border-color, #dc3545) !important;
  background-position: right calc(0.375em + 0.1875rem) center;
}

#vmMainPageOPC .form-control.is-invalid:focus,
#vmMainPageOPC .form-select.is-invalid:focus {
  border-color: var(--bs-form-invalid-border-color, #dc3545) !important;
  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.2) !important;
}

/* Style the hosts only: Stripe controls the secure iframe and Link button sizes. */
#vmMainPageOPC .ndcc-stripe-fields {
  background: #f6f7f5;
}

#vmMainPageOPC .ndcc-stripe-fields .cardInput {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  min-height: 50px;
  padding: 12px 14px !important;
  background: #fff;
  border: 1px solid #c9cec5;
  border-radius: 8px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

#vmMainPageOPC .ndcc-stripe-fields .StripeElement--complete {
  border-color: #74ac2a;
}

#vmMainPageOPC .ndcc-stripe-fields .StripeElement--focus {
  border-color: #527d1c;
  box-shadow: 0 0 0 3px rgba(116, 172, 42, 0.18);
}

#vmMainPageOPC .ndcc-stripe-fields .StripeElement--invalid {
  border-color: #b42318;
}

#vmMainPageOPC .ndcc-stripe-fields .StripeElement--invalid.StripeElement--focus {
  box-shadow: 0 0 0 3px rgba(180, 35, 24, 0.15);
}

@media (max-width: 575.98px) {
  #vmMainPageOPC .ndcc-stripe-fields {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
}
