/* Explicit rules: these controls cannot depend on optional generated utilities. */
[data-paid-invoice] { margin-bottom: 1.5rem; }
#b2b-modal { margin-top: 1rem; padding-top: 1rem; }
#b2b-modal > * + * { margin-top: 1rem; }
#b2b-modal .grid { display: grid; gap: 1rem; }
#b2b-modal label { display: block; margin-bottom: .375rem; font-size: .875rem; }
#b2b-modal input, #b2b-modal select, #b2b-modal textarea {
  display: block; width: 100%; box-sizing: border-box; min-height: 44px;
  padding: .625rem .75rem; font: inherit; font-size: 16px; line-height: 1.5;
  border: 1px solid #93a8bc; border-radius: .5rem; background: #fff; color: #172f47;
}
#b2b-modal textarea { min-height: 96px; resize: vertical; }
#btn-open-b2b, #b2b-submit {
  min-width: 44px; min-height: 44px; padding: .625rem .875rem;
  background: #1d4ed8; color: #fff; border-radius: .5rem;
}
#b2b-submit { font-size: .875rem; line-height: 1.5; white-space: normal; }
#b2b-modal :is(input, select, textarea, button):focus-visible, #btn-open-b2b:focus-visible {
  outline: 3px solid #0f766e; outline-offset: 3px;
}
#b2b-status { line-height: 1.5; }
@media (min-width: 640px) { #b2b-modal .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Product picker on /kasse without a chosen product. */
.oc-product-picker { background: #fff; border: 1px solid #e5e7eb; border-radius: 1rem; padding: 1.25rem; color: #0B3444; }
.oc-product-picker h2 { font-size: 1.25rem; font-weight: 900; margin: 0 0 .25rem; }
.oc-product-picker > p { font-size: .875rem; color: #374151; margin: .5rem 0; }
.oc-product-picker a { color: #115E59; font-weight: 700; text-decoration: underline; }
.oc-product-picker ul { list-style: none; margin: 1rem 0; padding: 0; display: grid; gap: .5rem; }
.oc-product-picker .oc-product-choice {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 44px;
  padding: .875rem 1rem; border: 2px solid #e5e7eb; border-radius: .75rem; color: #0B3444; text-decoration: none;
}
.oc-product-picker li:first-child .oc-product-choice { border-color: #115E59; background: #f0fdfa; }
.oc-product-choice:hover, .oc-product-choice:focus-visible { border-color: #115E59; }
.oc-product-choice:focus-visible { outline: 3px solid #0f766e; outline-offset: 2px; }
.oc-product-choice__text { display: flex; flex-direction: column; gap: .125rem; }
.oc-product-choice__text span { font-size: .8125rem; font-weight: 500; color: #374151; }
.oc-product-choice__price { font-weight: 900; white-space: nowrap; }
.oc-product-picker__notice { background: #fef2f2; border: 1px solid #fecaca; color: #b91c1c; border-radius: .75rem; padding: .75rem 1rem; font-weight: 600; }

/* Payment area: fixed height while Stripe loads. */
.oc-payment-element { min-height: 560px; }
.oc-pay-skeleton[aria-busy="true"] { box-sizing: border-box; }

/* Mobile pay bar pinned to the bottom (same form, same handler). */
.oc-sticky-pay {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 70;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: .75rem 1rem calc(.75rem + env(safe-area-inset-bottom, 0px));
  background: #fff; border-top: 1px solid #e5e7eb; box-shadow: 0 -8px 20px -8px rgba(0, 0, 0, .15);
}
.oc-sticky-pay[hidden] { display: none; }
.oc-sticky-pay__price { display: flex; flex-direction: column; color: #0B3444; line-height: 1.2; }
.oc-sticky-pay__label { font-size: .75rem; font-weight: 700; color: #115E59; }
.oc-sticky-pay__price strong { font-size: 1.25rem; font-weight: 900; }
.oc-sticky-pay__button {
  min-height: 48px; min-width: 44px; padding: .75rem 2rem; border: 0; border-radius: .75rem;
  background: #115E59; color: #fff; font-weight: 800; font-size: 1rem;
}
.oc-sticky-pay__button:disabled { opacity: .6; }
.oc-sticky-pay__button:focus-visible { outline: 3px solid #0f766e; outline-offset: 3px; }
@media (max-width: 639px) { body.oc-has-sticky-pay { padding-bottom: 88px; } }
@media (min-width: 640px) { .oc-sticky-pay { display: none; } }
