/* WooCommerce-Styling auf Basis der --ct-* Variablen. Ersetzt woocommerce-general/-layout/-smallscreen.
   Deckt Shortcode-Checkout (inkl. Germanized / German Market Markup) und grundlegend die Block-Variante ab. */

/* ---------- Buttons ---------- */
.ct-main .button, .ct-main button.button, .ct-main a.button, .ct-main input.button, .ct-main #respond input#submit,
.wc-block-components-button:not(.is-link) {
	display: inline-flex; align-items: center; justify-content: center; gap: .75rem;
	min-height: var(--ct-btn-height); padding: .75rem 1.25rem; margin: 0;
	font: var(--ct-fw-ui) var(--ct-fs-body)/1 var(--ct-font-body); letter-spacing: -.005em; text-decoration: none; white-space: normal; text-align: center;
	color: var(--ct-text); background: transparent; border: 1px solid var(--ct-border-strong); border-radius: var(--ct-radius-sm); cursor: pointer;
	transition: transform .24s var(--ct-ease), background-color .24s, filter .24s, box-shadow .24s;
}
.ct-main .button:hover, .ct-main a.button:hover { background: color-mix(in srgb, var(--ct-text) 5%, transparent); text-decoration: none; color: var(--ct-text); }
/* Primär (Kaufen, Zur Kasse) */
.ct-main .button.alt, .ct-main button.button.alt, .ct-main a.button.alt, .ct-main #place_order,
.wc-block-components-button.contained, .wc-block-components-checkout-place-order-button {
	color: var(--ct-cta-fg); border-color: var(--ct-cta-edge);
	background: linear-gradient(180deg, var(--ct-cta-light), var(--ct-cta) 55%, var(--ct-cta-dark));
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 1px 2px color-mix(in srgb, var(--ct-cta) 40%, transparent), 0 8px 18px -8px color-mix(in srgb, var(--ct-cta) 65%, transparent);
}
.ct-main .button.alt:hover, .ct-main #place_order:hover { color: var(--ct-cta-fg); background: linear-gradient(180deg, var(--ct-cta-light), var(--ct-cta) 55%, var(--ct-cta-dark)); filter: brightness(1.06) saturate(1.04); transform: translateY(-1px); }
.ct-main .button.alt:active, .ct-main #place_order:active { transform: translateY(1px); filter: none; }
.ct-main .button[disabled], .ct-main .button.disabled, .ct-main .button:disabled { opacity: .45; pointer-events: none; }
.ct-main #place_order, .ct-main .checkout-button { width: 100%; min-height: calc(var(--ct-btn-height) + .5rem); font-size: 1.0625rem; }

/* ---------- Formulare ---------- */
.ct-main form .form-row { display: flex; flex-direction: column; gap: .375rem; margin: 0 0 var(--ct-gutter); padding: 0; }
.ct-main form .form-row label, .woocommerce-checkout label { font-size: var(--ct-fs-small); font-weight: 500; color: var(--ct-text); line-height: 1.4; }
.ct-main form .form-row label.checkbox, .ct-main form .form-row label.woocommerce-form__label-for-checkbox { display: flex; align-items: flex-start; gap: .625rem; font-weight: var(--ct-fw-body); }
.ct-main form .form-row .required, .ct-main abbr.required { color: var(--ct-danger); text-decoration: none; border: 0; }
.ct-main form .form-row .optional { color: var(--ct-muted); font-weight: var(--ct-fw-body); }
.ct-main .input-text, .ct-main select, .ct-main textarea, .ct-main .select2-container .select2-selection--single,
.wc-block-components-text-input input, .wc-block-components-select-control select {
	width: 100%; min-height: var(--ct-input-height); padding: .75rem .875rem;
	font: inherit; font-size: var(--ct-fs-body); line-height: 1.4; color: var(--ct-text);
	background: var(--ct-surface); border: 1px solid var(--ct-border-strong); border-radius: var(--ct-radius-sm);
	transition: border-color .24s, box-shadow .24s; -webkit-appearance: none; appearance: none;
}
.ct-main textarea { min-height: 6rem; resize: vertical; }
.ct-main select { padding-right: 2.5rem; cursor: pointer;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23707070' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right .875rem center; }
.ct-main .input-text::placeholder, .ct-main textarea::placeholder { color: color-mix(in srgb, var(--ct-muted) 70%, white); opacity: 1; }
.ct-main .input-text:hover, .ct-main select:hover, .ct-main textarea:hover { border-color: color-mix(in srgb, var(--ct-text) 55%, white); }
.ct-main .input-text:focus, .ct-main select:focus, .ct-main textarea:focus { outline: none; border-color: var(--ct-accent); box-shadow: var(--ct-ring); }
.ct-main .input-text[aria-invalid="true"], .ct-main .woocommerce-invalid .input-text, .ct-main .woocommerce-invalid select { border-color: var(--ct-danger); }
.ct-field-msg { font-size: var(--ct-fs-xs); color: var(--ct-danger); }
.ct-main input[type="checkbox"], .ct-main input[type="radio"] { width: 1.125rem; height: 1.125rem; margin: .15rem 0 0; accent-color: var(--ct-accent); flex: none; }
.ct-main .select2-container--default .select2-selection--single { display: flex; align-items: center; }
.ct-main .select2-container--default .select2-selection--single .select2-selection__rendered { padding: 0; line-height: 1.4; color: var(--ct-text); }
.ct-main .select2-container--default .select2-selection--single .select2-selection__arrow { height: 100%; right: .5rem; }
.select2-dropdown { border-color: var(--ct-border-strong); border-radius: var(--ct-radius-sm); font-family: var(--ct-font-body); }

/* ---------- Checkout-Layout ---------- */
.woocommerce-checkout h3, .woocommerce-cart h2, .woocommerce-checkout #order_review_heading { font-size: var(--ct-fs-h4); font-weight: var(--ct-fw-heading); margin: 0 0 1.25rem; }
form.woocommerce-checkout {
	display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); grid-template-rows: auto auto auto auto 1fr;
	column-gap: calc(var(--ct-gutter) * 2); row-gap: 0; align-items: start;
}
form.woocommerce-checkout > .woocommerce-NoticeGroup { grid-column: 1 / -1; grid-row: 1; margin-bottom: var(--ct-gutter); }
form.woocommerce-checkout > #customer_details { grid-column: 1; grid-row: 2 / span 4; }
form.woocommerce-checkout > #wc-stripe-payment-request-wrapper { grid-column: 2; grid-row: 2; margin: 0 !important; }
form.woocommerce-checkout > #wc-stripe-payment-request-button-separator { grid-column: 2; grid-row: 3; margin: 1rem 0 !important; font-size: var(--ct-fs-xs); letter-spacing: .08em; color: var(--ct-muted); }
form.woocommerce-checkout > #order_review_heading { grid-column: 2; grid-row: 4; margin: 0 0 1rem; }
form.woocommerce-checkout > #order_review { grid-column: 2; grid-row: 5; position: sticky; top: var(--ct-gutter); }
.ct-main .col2-set { display: block; }
.ct-main .col2-set .col-1, .ct-main .col2-set .col-2 { width: auto; float: none; }
/* Adressfelder: 2-Spalten-Raster statt Floats (Vorname/Nachname, PLZ/Ort nebeneinander, Rest volle Breite) */
.ct-main .woocommerce-billing-fields__field-wrapper, .ct-main .woocommerce-shipping-fields__field-wrapper, .ct-main .woocommerce-additional-fields__field-wrapper {
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--ct-gutter);
}
.ct-main .woocommerce-billing-fields__field-wrapper > .form-row, .ct-main .woocommerce-shipping-fields__field-wrapper > .form-row, .ct-main .woocommerce-additional-fields__field-wrapper > .form-row { grid-column: 1 / -1; width: auto; margin-right: 0; float: none; }
.ct-main .woocommerce-billing-fields__field-wrapper > .form-row-first, .ct-main .woocommerce-shipping-fields__field-wrapper > .form-row-first { grid-column: 1; }
.ct-main .woocommerce-billing-fields__field-wrapper > .form-row-last, .ct-main .woocommerce-shipping-fields__field-wrapper > .form-row-last { grid-column: 2; }
.ct-main .woocommerce-input-wrapper { display: block; width: 100%; }
@media (max-width: 860px) {
	form.woocommerce-checkout { grid-template-columns: 1fr; grid-template-rows: none; }
	form.woocommerce-checkout > * { grid-column: 1 !important; grid-row: auto !important; position: static !important; }
	form.woocommerce-checkout > #order_review { margin-top: var(--ct-gutter); }
}
@media (max-width: 520px) {
	.ct-main .woocommerce-billing-fields__field-wrapper > .form-row-first, .ct-main .woocommerce-billing-fields__field-wrapper > .form-row-last { grid-column: 1 / -1; }
}

/* ---------- Karten-Flächen: Bestellübersicht, Zahlung, Summen ---------- */
#order_review, .woocommerce-checkout-payment, .cart_totals, .woocommerce-order-overview, .woocommerce-form-coupon, .woocommerce-form-login {
	background: var(--ct-surface); border-radius: var(--ct-radius-md); box-shadow: 0 0 0 1px var(--ct-border), var(--ct-shadow-sm);
}
#order_review { padding: var(--ct-card-padding); }
.cart_totals { padding: var(--ct-card-padding); }

/* ---------- Tabellen ---------- */
.ct-main table.shop_table { width: 100%; border-collapse: collapse; margin: 0 0 1.5rem; font-size: var(--ct-fs-small); border: 0; }
.ct-main table.shop_table th, .ct-main table.shop_table td { padding: .875rem .5rem; text-align: left; vertical-align: top; border: 0; border-bottom: 1px solid var(--ct-border); }
.ct-main table.shop_table thead th { font-size: var(--ct-fs-xs); font-weight: var(--ct-fw-ui); letter-spacing: .06em; text-transform: uppercase; color: var(--ct-muted); }
.ct-main table.shop_table td:last-child, .ct-main table.shop_table tfoot th + td { text-align: right; }
.ct-main table.shop_table tfoot th { font-weight: 500; }
.ct-main table.shop_table .order-total th, .ct-main table.shop_table .order-total td { font-size: var(--ct-fs-body); border-bottom: 0; padding-top: 1.125rem; }
.ct-main table.shop_table .order-total .amount { font-family: var(--ct-font-heading); font-size: var(--ct-fs-h4); font-weight: var(--ct-fw-heading); }
.ct-main table.shop_table .includes_tax, .ct-main table.shop_table small { color: var(--ct-muted); font-size: var(--ct-fs-xs); font-weight: var(--ct-fw-body); }
.ct-main table.cart td.product-thumbnail img { width: 4rem; border-radius: var(--ct-radius-sm); }
.ct-main table.cart .product-remove a { color: var(--ct-muted); font-size: 1.25rem; text-decoration: none; }
.ct-main table.cart .product-remove a:hover { color: var(--ct-danger); }
.ct-main .quantity .qty { width: 5rem; min-height: 2.5rem; padding: .5rem; text-align: center; }
.ct-main .cart-collaterals { display: flex; justify-content: flex-end; margin-top: 1.5rem; }
.ct-main .cart_totals { width: min(100%, 26rem); }
.ct-main .actions .coupon { display: inline-flex; gap: .5rem; }
.ct-main .actions .coupon .input-text { width: 12rem; min-height: 2.5rem; }
@media (max-width: 767px) { .ct-main .cart-collaterals .cart_totals { width: 100%; } }

/* ---------- Zahlungsarten ---------- */
#payment { background: transparent; border-radius: 0; }
.woocommerce-checkout-payment { margin-top: 1.5rem; padding: 0; overflow: hidden; }
#payment ul.payment_methods, .payment_methods { margin: 0; padding: 0; list-style: none; }
#payment .wc_payment_method { padding: 1rem 1.25rem; border-bottom: 1px solid var(--ct-border); }
#payment .wc_payment_method > label { display: inline-flex; align-items: center; gap: .5rem; font-weight: var(--ct-fw-ui); cursor: pointer; }
#payment .wc_payment_method > input { margin-right: .5rem; vertical-align: middle; }
#payment div.payment_box { margin: .75rem 0 0; padding: .875rem 1rem; font-size: var(--ct-fs-small); color: var(--ct-muted); background: var(--ct-bg-muted); border-radius: var(--ct-radius-sm); }
#payment div.payment_box p:last-child { margin-bottom: 0; }
#payment div.place-order { padding: 1.25rem; margin: 0; }
#payment .place-order { display: grid; gap: 1rem; }
.woocommerce-terms-and-conditions-wrapper, .woocommerce-privacy-policy-text { font-size: var(--ct-fs-small); color: var(--ct-muted); }
.woocommerce-terms-and-conditions-wrapper .form-row { margin-bottom: .5rem; }

/* ---------- Hinweise ---------- */
.woocommerce-message, .woocommerce-info, .woocommerce-error {
	display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin: 0 0 1.5rem; padding: .875rem 1.125rem; list-style: none;
	font-size: var(--ct-fs-small); border-radius: var(--ct-radius-sm); border: 1px solid; border-left-width: 4px;
	color: var(--ct-text); background: color-mix(in srgb, var(--ct-accent) 7%, var(--ct-bg)); border-color: color-mix(in srgb, var(--ct-accent) 35%, var(--ct-bg));
}
.woocommerce-message { background: color-mix(in srgb, var(--ct-success) 8%, var(--ct-bg)); border-color: var(--ct-success); }
.woocommerce-info    { border-color: var(--ct-accent); }
.woocommerce-error   { background: color-mix(in srgb, var(--ct-danger) 7%, var(--ct-bg)); border-color: var(--ct-danger); flex-direction: column; align-items: flex-start; }
.woocommerce-error li { margin: 0; }
.woocommerce-message .button, .woocommerce-info .button { margin-left: auto; min-height: 2.25rem; padding: .5rem .875rem; font-size: var(--ct-fs-small); order: 2; }

/* ---------- Coupon / Login-Toggles ---------- */
.woocommerce-form-coupon-toggle .woocommerce-info { margin-bottom: 1rem; }
.woocommerce-form-coupon, .woocommerce-form-login { padding: var(--ct-card-padding); margin: 0 0 1.5rem; }

/* ---------- Bestellbestätigung ---------- */
.woocommerce-order .woocommerce-notice--success { font-family: var(--ct-font-heading); font-size: var(--ct-fs-h3); letter-spacing: var(--ct-tracking-heading); font-weight: var(--ct-fw-heading); margin-bottom: 1.5rem; }
.woocommerce-order-overview { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: 1rem 1.5rem; padding: var(--ct-card-padding); margin: 0 0 2rem; list-style: none; font-size: var(--ct-fs-small); color: var(--ct-muted); }
.woocommerce-order-overview li { margin: 0; }
.woocommerce-order-overview strong { display: block; margin-top: .125rem; font-size: var(--ct-fs-body); color: var(--ct-text); }
.woocommerce-order-details, .woocommerce-customer-details { margin-bottom: 2rem; }
.woocommerce-order-details__title, .woocommerce-column__title { font-size: var(--ct-fs-h4); }
.ct-main address { font-style: normal; line-height: 1.6; }

/* ---------- Rechtliches / Germanized / German Market (Struktur bleibt, nur Optik) ---------- */
.woocommerce-checkout .wc-gzd-checkbox-placeholder, .woocommerce-checkout .legal, .woocommerce-checkout .wc-gzd-checkbox,
.woocommerce-checkout .german-market-checkbox, .woocommerce-checkout .wgm-info { font-size: var(--ct-fs-small); }
.woocommerce-checkout .wc-gzd-order-submit, .woocommerce-checkout .wc-gzd-order-submit .place-order { margin-top: 0; }
.woocommerce-checkout .wc-gzd-cart-info, .woocommerce-checkout .product-name .wc-gzd-cart-info { display: block; color: var(--ct-muted); font-size: var(--ct-fs-xs); font-weight: var(--ct-fw-body); }
.woocommerce-checkout .wc-gzd-additional-info.tax-info, .woocommerce-checkout .wc-gzd-additional-info.shipping-costs-info { color: var(--ct-muted); font-size: var(--ct-fs-xs); }

/* ---------- WooCommerce Blocks (Fallback, falls Block-Checkout genutzt wird) ---------- */
.wc-block-components-text-input label, .wc-block-components-form .wc-block-components-text-input.is-active label { color: var(--ct-muted); font-family: var(--ct-font-body); }
.wc-block-components-sidebar-layout { gap: calc(var(--ct-gutter) * 2); }
.wc-block-components-title, .wc-block-checkout__main h2 { font-family: var(--ct-font-heading); font-weight: var(--ct-fw-heading); letter-spacing: var(--ct-tracking-heading); font-size: var(--ct-fs-h4); }
.wc-block-components-checkbox input[type="checkbox"]:checked { background: var(--ct-accent); border-color: var(--ct-accent); }
.wc-block-components-totals-item__value { font-variant-numeric: tabular-nums; }

/* ==========================================================================
   Robustheit gegenüber fremdem Checkout-Markup (Plugins/Templates ohne Standard-Klassen:
   kein .woocommerce-Wrapper, kein .form-row / .input-text) – Felder werden über ID/Typ erfasst.
   ========================================================================== */
.ct-main form :is([id$="_field"], .form-row) { display: flex; flex-direction: column; gap: .375rem; margin: 0 0 var(--ct-gutter); padding: 0; }
.ct-main form :is([id$="_field"]) > label { font-size: var(--ct-fs-small); font-weight: 500; color: var(--ct-text); line-height: 1.4; }
.ct-main form :is(input:not([type="checkbox"], [type="radio"], [type="hidden"], [type="submit"], [type="button"], [type="file"], [type="range"]), select, textarea) {
	width: 100%; min-height: var(--ct-input-height); padding: .75rem .875rem;
	font: inherit; font-size: var(--ct-fs-body); line-height: 1.4; color: var(--ct-text) !important;
	background-color: var(--ct-surface) !important; border: 1px solid var(--ct-border-strong); border-radius: var(--ct-radius-sm);
	transition: border-color .24s, box-shadow .24s; -webkit-appearance: none; appearance: none;
}
.ct-main form select { padding-right: 2.5rem; cursor: pointer;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23707070' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right .875rem center; }
.ct-main form textarea { min-height: 6rem; resize: vertical; }
.ct-main form :is(input, select, textarea)::placeholder { color: color-mix(in srgb, var(--ct-muted) 70%, white); opacity: 1; }
.ct-main form :is(input, select, textarea):focus { outline: none; border-color: var(--ct-accent); box-shadow: var(--ct-ring); }
.ct-main form input[type="checkbox"], .ct-main form input[type="radio"] { width: 1.125rem; height: 1.125rem; margin: .15rem .5rem 0 0; accent-color: var(--ct-accent); flex: none; }
.ct-main form label:has(> input[type="checkbox"]), .ct-main form label:has(> input[type="radio"]) { display: flex; align-items: flex-start; gap: .25rem; font-size: var(--ct-fs-small); line-height: 1.5; cursor: pointer; }
.ct-main form button[type="submit"], .ct-main form button[name="apply_coupon"] {
	display: inline-flex; align-items: center; justify-content: center; min-height: var(--ct-btn-height); padding: .75rem 1.25rem;
	font: var(--ct-fw-ui) var(--ct-fs-body)/1 var(--ct-font-body); color: var(--ct-text); background: transparent; border: 1px solid var(--ct-border-strong); border-radius: var(--ct-radius-sm); cursor: pointer;
}
.ct-main form button#place_order, .ct-main form button[name="woocommerce_checkout_place_order"] {
	width: 100%; min-height: calc(var(--ct-btn-height) + .5rem); font-size: 1.0625rem; color: var(--ct-cta-fg); border-color: var(--ct-cta-edge);
	background: linear-gradient(180deg, var(--ct-cta-light), var(--ct-cta) 55%, var(--ct-cta-dark));
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 8px 18px -8px color-mix(in srgb, var(--ct-cta) 65%, transparent);
}
.ct-main form fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.ct-main form table { width: 100%; border-collapse: collapse; font-size: var(--ct-fs-small); margin: 0 0 1.5rem; }
.ct-main form table :is(th, td) { padding: .875rem .5rem; text-align: left; vertical-align: top; border: 0; border-bottom: 1px solid var(--ct-border); }
.ct-main form table td:last-child { text-align: right; }
.ct-main ul:not([class]) { list-style: none; margin: 0 0 1rem; padding: 0; }
/* Einspalter ohne Standard-Checkout-Klassen: lesbare Breite */
.ct-main form[name="checkout"]:not(.woocommerce-checkout) { max-width: 40rem; }

/* Bestellübersicht: Plugins/Standard setzen graue Tabellenflächen – hier transparent auf der Karte */
.ct-main table.shop_table, .ct-main table.shop_table :is(thead, tbody, tfoot, tr, th, td) { background: transparent !important; }
.ct-main table.shop_table { border: 0 !important; }
.ct-main table.shop_table img { border-radius: var(--ct-radius-sm); }
.ct-main .wc-stripe-elements-field { background: var(--ct-surface); border: 1px solid var(--ct-border-strong); border-radius: var(--ct-radius-sm); padding: .875rem; }

/* ---------- Checkboxen/Radios: feste Größe (Plugins setzen inline width:auto) und Zeilenlayout ---------- */
.ct-main form input[type="checkbox"], .ct-main form input[type="radio"] { width: 1.125rem !important; min-width: 1.125rem; height: 1.125rem !important; min-height: 0 !important; padding: 0 !important; }
.ct-main form :is([id$="_field"], .form-row):has(> input[type="checkbox"]) { flex-direction: row; align-items: flex-start; gap: .625rem; }
.ct-main form :is([id$="_field"], .form-row):has(> input[type="checkbox"]) > label { display: block !important; font-weight: var(--ct-fw-body); }
.ct-main form fieldset:has(> .woocommerce-SavedPaymentMethods-saveNew) { margin-top: 1rem; }
/* AGB-/Widerrufs-Checkboxen stehen (per checkout.js) direkt über dem Kaufen-Button */
.ct-legal { display: grid; gap: .75rem; margin: 0 0 1.25rem; }
.ct-legal :is(p, .wc-gzd-checkbox-placeholder) { margin: 0; }

/* ---------- Bestellübersicht: keine Produktbilder, ruhige Namenszeile ---------- */
.ct-main .wc-gzd-cart-item-thumbnail, .ct-main .product-thumbnail, .ct-main img.woocommerce-placeholder { display: none !important; }
.ct-main .wc-gzd-cart-item-name-wrapper { display: block; }
.ct-main .wc-gzd-cart-item-name-wrapper .product-quantity { margin-left: .25rem; color: var(--ct-muted); font-weight: var(--ct-fw-ui); white-space: nowrap; }
.ct-main tr.chained_item td { color: var(--ct-muted); font-size: var(--ct-fs-xs); padding-top: .5rem; padding-bottom: .5rem; }

/* ---------- Bestellübersicht: Summen & Mengen ---------- */
/* Zwischensumme nur ausblenden, solange sie nichts Eigenes sagt (kein Rabatt, keine Gebühr, kein Versand) */
.ct-main table.shop_table:not(:has(.cart-discount, .fee, .shipping, .woocommerce-shipping-totals)) tr.cart-subtotal { display: none; }
.ct-main table.shop_table tr.order-tax :is(th, td) { color: var(--ct-subtle); font-size: var(--ct-fs-small); font-weight: var(--ct-fw-body); }
/* Menge: eigene rechte Spalte in der Namenszelle, bei mehrzeiligen Titeln in der ersten Zeile; nur bei Hauptprodukten */
.ct-main .wc-gzd-cart-item-name-wrapper { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: .75rem; align-items: start; }
.ct-main .wc-gzd-cart-item-name-wrapper .product-quantity { grid-column: 2; grid-row: 1; margin: 0; text-align: right; white-space: nowrap; }
.ct-main tr.chained_item .product-quantity { display: none; }

/* ---------- Zahlungsart-Boxen (Stripe etc.): gleiche Feldabstände wie im Rest des Formulars ---------- */
.ct-main #payment .payment_box :is(div.form-row, p.form-row) { padding: 0; margin: 0 0 var(--ct-gutter); width: auto; float: none; }
.ct-main #payment .payment_box fieldset:last-of-type :is(div.form-row, p.form-row):last-child { margin-bottom: 0; }
.ct-main #payment .payment_box fieldset + fieldset { margin-top: 0; }
.ct-main #payment .payment_box .clear, .ct-main #payment .payment_box .stripe-source-errors:empty { display: none; }
.ct-main #payment .payment_box .stripe-card-group { position: relative; }

/* Menge als eigene Spalte direkt vor dem Preis, bei mehrzeiligen Titeln in der ersten Zeile.
   Höhere Spezifität + !important, weil Germanized/Plugins dieselben Elemente per Flex zentrieren. */
.ct-main table.shop_table td.product-name .wc-gzd-cart-item-name-wrapper {
	display: grid !important; grid-template-columns: minmax(0, 1fr) 2.5rem; column-gap: .5rem; align-items: start !important; justify-items: start;
}
.ct-main table.shop_table td.product-name .wc-gzd-cart-item-name-wrapper > .product-quantity,
.ct-main table.shop_table td.product-name > .product-quantity {
	grid-column: 2; grid-row: 1; justify-self: end; align-self: start; margin: 0 !important; white-space: nowrap; text-align: right;
}
.ct-main table.shop_table tr.chained_item td.product-name .product-quantity { display: none !important; }

/* ---------- Warenkorb-Tabelle ---------- */
/* Alle Zellen einer Zeile mittig auf einer Linie (Name, Preis, Menge, Summe) */
.ct-main table.cart :is(th, td) { vertical-align: middle !important; }
/* Zwischensumme-Spalte rechtsbündig, Kopf und Beträge in einer Flucht */
.ct-main table.cart :is(th.product-subtotal, td.product-subtotal) { text-align: right !important; }
/* Linien pro Zeile statt pro Zelle: verkettete Zeilen (weniger Zellen) laufen über die volle Breite */
.ct-main table.cart { border-collapse: collapse; }
.ct-main table.cart tr { border-bottom: 1px solid var(--ct-border); }
.ct-main table.cart :is(th, td) { border-bottom: 0 !important; }
.ct-main table.cart tr.chained_item td { padding-top: .5rem; padding-bottom: .5rem; }

/* ==========================================================================
   Checkout-Karte rechts: ein gleichmäßiger Rhythmus (--ct-stack) zwischen Zahlung, Produkten, Zustimmungen und Button
   ========================================================================== */
#order_review { --ct-stack: 1.5rem; display: flex; flex-direction: column; gap: var(--ct-stack); }
#order_review > :is(#payment, .woocommerce-checkout-payment, table.shop_table, .wc-gzd-order-submit) { margin: 0 !important; }
#order_review > #order_payment_heading { margin: 0 0 calc(var(--ct-stack) * -.5); }  /* Überschrift sitzt eng an der Zahlungsauswahl */
#order_review > .ppc-button-wrapper { display: contents; }
.ct-main form .wc-gzd-order-submit .place-order { display: flex; flex-direction: column; gap: var(--ct-stack); margin: 0; padding: 0; }
.ct-main form .wc-gzd-order-submit .place-order > :empty { display: none; }
.ct-main form .wc-gzd-order-submit #ppcp-recaptcha-v2-container { margin: 0 !important; }
/* Zustimmungen: leere bzw. ausgeblendete Platzhalter erzeugen keinen Abstand */
.ct-legal { display: flex; flex-direction: column; gap: .75rem; margin: 0; }
.ct-legal > div:empty,
.ct-legal > div:has(> p[style*="display: none"]),
.ct-legal > div:has(> p[style*="display:none"]) { display: none; }
.ct-legal:not(:has(> div:not(:empty))) { display: none; }

/* Produktbereich als Karte – gleiche Flächensprache wie die Zahlungsart (Fläche, Haarlinie, leichter Schatten, Radius) */
.ct-main table.woocommerce-checkout-review-order-table {
	border-collapse: separate !important; border-spacing: 0; overflow: hidden;
	background: var(--ct-surface) !important; border-radius: var(--ct-radius-md);
	box-shadow: 0 0 0 1px var(--ct-border), var(--ct-shadow-sm);
}
.ct-main table.woocommerce-checkout-review-order-table thead { display: none; }   /* Spaltenköpfe „Produkt / Zwischensumme" sind selbsterklärend */
.ct-main table.woocommerce-checkout-review-order-table :is(th, td):first-child { padding-left: 1.25rem; }
.ct-main table.woocommerce-checkout-review-order-table :is(th, td):last-child { padding-right: 1.25rem; }
.ct-main table.woocommerce-checkout-review-order-table tfoot tr:last-child :is(th, td) { border-bottom: 0 !important; }
.ct-main table.woocommerce-checkout-review-order-table tbody tr:first-child :is(th, td) { padding-top: 1.125rem; }

/* ==========================================================================
   Feinschliff Checkout-Karte
   ========================================================================== */
/* Radien gestaffelt: äußere Karte groß, innere Karten mittel, Hinweisfläche klein */
#order_review { border-radius: var(--ct-radius-lg); }
#payment.woocommerce-checkout-payment, .ct-main table.woocommerce-checkout-review-order-table { border-radius: var(--ct-radius-md); }
#payment .payment_box { border-radius: var(--ct-radius-sm); }

/* Steuerzeile rückt an die Gesamtsumme */
.ct-main table.woocommerce-checkout-review-order-table tr.order-total :is(th, td) { padding-bottom: .125rem; }
.ct-main table.woocommerce-checkout-review-order-table tr.order-tax :is(th, td) { padding-top: 0; padding-bottom: 1.125rem; }

/* Checkboxen: Kästchen links, Text daneben – auch mehrzeilig bleibt der Text in seiner Spalte (hängender Einzug) */
.ct-main form label:has(> input[type="checkbox"]) { display: block !important; position: relative; padding-left: 1.75rem; }
.ct-main form label > input[type="checkbox"] { position: absolute; left: 0; top: .1875rem; margin: 0 !important; }

/* Zustimmungen fluchten mit dem Karteninhalt (Zahlungsart, Produkttabelle: 1,25 rem Innenabstand); Button bleibt bündig mit den Karten */
.ct-legal { padding-inline: 1.25rem; }

/* ==========================================================================
   Fehlermeldungen: klar in Rot (Feldhinweise, Zustimmungen, Sammel-Hinweis oben)
   ========================================================================== */
/* Inline-Hinweis unter dem Feld (WooCommerce: .checkout-inline-error-message) – ohne Kasten, in Fehlerfarbe */
.ct-main .checkout-inline-error-message,
.ct-main form :is(.form-row, [id$="_field"]) > .woocommerce-error {
	display: block !important; position: static; margin: .25rem 0 0 !important; padding: 0 !important;
	border: 0 !important; background: transparent !important; box-shadow: none;
	color: var(--ct-danger) !important; font-size: var(--ct-fs-small); font-weight: var(--ct-fw-ui); line-height: 1.4;
}
.ct-main .checkout-inline-error-message::before {
	content: ""; display: inline-block; width: .9em; height: .9em; margin-right: .4em; vertical-align: -.1em; background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 7v6M12 17h.01'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 7v6M12 17h.01'/%3E%3C/svg%3E") center / contain no-repeat;
}
.ct-legal .checkout-inline-error-message { margin-left: 1.75rem !important; }
/* Betroffene Felder: roter Rahmen (besteht), rote Beschriftung, Checkbox mit rotem Rahmen */
.ct-main .woocommerce-invalid:not(:has(> label > input[type="checkbox"])) > label { color: var(--ct-danger); }
.ct-main .woocommerce-invalid input[type="checkbox"] { outline: 2px solid var(--ct-danger); outline-offset: 1px; }
.ct-main .woocommerce-invalid :is(input:not([type="checkbox"], [type="radio"], [type="hidden"]), select, textarea) { border-color: var(--ct-danger); }
/* Sammel-Hinweis oben: Text und Links in dunklem Rot */
.ct-main .woocommerce-error, .ct-main .woocommerce-error a { color: color-mix(in srgb, var(--ct-danger) 85%, black); }
.ct-main .woocommerce-error a { font-weight: var(--ct-fw-ui); }

/* ---------- Gutschein-Formular: Fehler in Rot, gleichmäßiger Abstand ---------- */
.ct-main .coupon-error-notice {
	display: block; margin: .375rem 0 0; color: var(--ct-danger) !important; font-size: var(--ct-fs-small); font-weight: var(--ct-fw-ui); line-height: 1.4;
}
.ct-main .coupon-error-notice::before {
	content: ""; display: inline-block; width: .9em; height: .9em; margin-right: .4em; vertical-align: -.1em; background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 7v6M12 17h.01'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 7v6M12 17h.01'/%3E%3C/svg%3E") center / contain no-repeat;
}
.ct-main .input-text.has-error, .ct-main .input-text[aria-invalid="true"] { border-color: var(--ct-danger); }
.ct-main form.checkout_coupon { display: grid; gap: 1rem; }
.ct-main form.checkout_coupon .form-row { margin: 0; padding: 0; width: auto; float: none; }
.ct-main form.checkout_coupon .clear { display: none; }
.ct-main form.checkout_coupon .button { width: 100%; }

/* ---------- „ändern" in der Zeile der Überschrift „Deine Bestellung" (Link per checkout.js) ---------- */
/* !important: Germanized setzt am Heading inline display:block */
#order_review_heading { display: flex !important; align-items: baseline; justify-content: space-between; gap: 1rem; }
#order_review > #order_review_heading { margin: 0 0 calc(var(--ct-stack) * -.5); }  /* gleiche Nähe zur Tabelle wie „Zahlungsart" zur Auswahl */
.ct-edit-link { font: var(--ct-fw-ui) var(--ct-fs-small)/1.2 var(--ct-font-body); letter-spacing: var(--ct-tracking-body); color: var(--ct-accent); }

/* ==========================================================================
   Warenkorb mobil: Tabelle wird zu gestapelten Positionen (Beschriftung aus data-title), nichts ragt über den Rand
   ========================================================================== */
@media (max-width: 767px) {
	.ct-main table.cart, .ct-main table.cart tbody, .ct-main table.cart tr, .ct-main table.cart td { display: block; width: 100%; max-width: 100%; }
	.ct-main table.cart thead { display: none; }
	.ct-main table.cart tr.cart_item { position: relative; padding: 1rem 0; }
	.ct-main table.cart tr.cart_item td { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .375rem 0 !important; text-align: right !important; }
	.ct-main table.cart tr.cart_item td::before { content: attr(data-title); color: var(--ct-muted); font-size: var(--ct-fs-small); font-weight: var(--ct-fw-ui); text-align: left; }
	.ct-main table.cart td.product-name { display: block !important; padding-right: 2rem !important; text-align: left !important; font-weight: var(--ct-fw-ui); }
	.ct-main table.cart td.product-name::before { content: none; }
	.ct-main table.cart td.product-remove { position: absolute; top: .75rem; right: 0; display: block; width: auto; padding: 0 !important; }
	.ct-main table.cart td.product-remove::before { content: none; }
	.ct-main table.cart td.product-thumbnail { display: none; }
	/* verkettete Zusatzprodukte: nur der Name, eingerückt */
	.ct-main table.cart tr.chained_item { padding: 0 0 .75rem; }
	.ct-main table.cart tr.chained_item td:not(.product-name) { display: none; }
	.ct-main table.cart tr.chained_item td.product-name { padding-left: 1rem !important; font-weight: var(--ct-fw-body); color: var(--ct-muted); font-size: var(--ct-fs-small); }
	/* Aktionszeile: Gutschein und Buttons untereinander über die volle Breite */
	.ct-main table.cart td.actions { display: grid; gap: .75rem; padding: 1rem 0 0 !important; text-align: left !important; }
	.ct-main table.cart td.actions .coupon { display: grid; gap: .5rem; }
	.ct-main table.cart td.actions .input-text, .ct-main table.cart td.actions .button { width: 100%; }
	.ct-main .actions .coupon .input-text { width: 100%; }
	.ct-main .cart-collaterals { display: block; }
	.ct-main .cart_totals { width: 100%; }
}

/* Warenkorb mobil – Korrekturen (höhere Spezifität: die allgemeine Zeilenregel überstimmte Name/Entfernen-Link) */
@media (max-width: 767px) {
	.ct-main table.cart tr.cart_item td.product-name::before,
	.ct-main table.cart tr.cart_item td.product-remove::before { content: none !important; }
	.ct-main table.cart tr.cart_item td.product-name { display: block !important; text-align: left !important; padding-right: 3rem !important; font-size: var(--ct-fs-body); font-weight: var(--ct-fw-ui); }
	.ct-main table.cart tr.cart_item td.product-remove { position: absolute; top: .5rem; right: 0; display: grid !important; place-items: center; width: 2.25rem; height: 2.25rem; padding: 0 !important; }
	.ct-main table.cart td.product-remove a.remove {
		display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%;
		font-size: 1.25rem; line-height: 1; text-decoration: none; color: var(--ct-muted); background: var(--ct-bg-muted);
	}
	.ct-main table.cart tr.chained_item td.product-name { padding: 0 0 0 1rem !important; font-size: var(--ct-fs-small); font-weight: var(--ct-fw-body); color: var(--ct-muted); }
}

/* ==========================================================================
   Ladeanzeige beim Absenden der Bestellung (checkout.js): zentrierter Spinner über der ganzen Seite
   ========================================================================== */
.ct-busy {
	position: fixed; inset: 0; z-index: 99999; display: grid; place-items: center;
	background: color-mix(in srgb, var(--ct-bg) 72%, transparent);
	-webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
	animation: ct-busy-in .2s var(--ct-ease) both;
}
.ct-busy[hidden] { display: none; }
.ct-busy__ring {
	width: 3.5rem; height: 3.5rem; border-radius: 50%;
	border: .3125rem solid var(--ct-border); border-top-color: var(--ct-accent);
	animation: ct-spin .8s linear infinite;
	box-shadow: 0 0 0 .5rem color-mix(in srgb, var(--ct-bg) 85%, transparent);
}
@keyframes ct-spin { to { transform: rotate(360deg); } }
@keyframes ct-busy-in { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .ct-busy__ring { animation-duration: 2.4s !important; } }
