/**
 * Q Ticketing — Frontend-Styles (eigenständig, theme-neutral).
 * Eigene --qt-fe-* Tokens, damit kein Theme-Konflikt entsteht.
 */
.qt-fe-widget, .qt-fe-lookup {
	--qt-fe-accent: #2563eb;
	--qt-fe-text: #1f2937;
	--qt-fe-muted: #6b7280;
	--qt-fe-border: #e5e7eb;
	--qt-fe-bg: #ffffff;
	--qt-fe-radius: 12px;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	color: var(--qt-fe-text);
	max-width: 520px;
	border: 1px solid var(--qt-fe-border);
	border-radius: var(--qt-fe-radius);
	padding: 24px;
	background: var(--qt-fe-bg);
	box-sizing: border-box;
}
.qt-fe-widget *, .qt-fe-lookup * { box-sizing: border-box; }

.qt-fe-event-head { margin-bottom: 18px; }
.qt-fe-event-title { margin: 0 0 4px; font-size: 20px; font-weight: 700; }
.qt-fe-event-meta { color: var(--qt-fe-muted); font-size: 14px; }

.qt-fe-product {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 14px 0;
	border-bottom: 1px solid var(--qt-fe-border);
	gap: 12px;
}
.qt-fe-product-info { display: flex; flex-direction: column; gap: 2px; }
.qt-fe-product-name { font-weight: 600; font-size: 15px; }
.qt-fe-product-price { color: var(--qt-fe-muted); font-size: 14px; }
.qt-fe-product-soldout { opacity: .55; }
.qt-fe-product-soldlabel { color: #dc2626; font-size: 13px; font-weight: 600; }
/* AUS-05/D-139: gleiche Zeile, gleiche Daempfung, anderes Wort und
   ausdruecklich kein Rot. Die Farbe darueber heisst "ausverkauft", und das ist
   dieser Zustand nicht. Diese Phase fuegt kein neues Rot hinzu und nimmt an
   genau dieser Stelle Rot weg. */
.qt-fe-product-lockedlabel { color: var(--qt-fe-muted, #6b7280); font-size: 13px; font-weight: 600; }

.qt-fe-qty { display: flex; align-items: center; gap: 8px; }
.qt-fe-qty-btn {
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
	display: inline-flex !important;
	align-items: center; justify-content: center;
	width: 32px; height: 32px;
	padding: 0;
	border: 1px solid var(--qt-fe-accent) !important;
	background: var(--qt-fe-accent) !important;
	border-radius: 8px;
	font-size: 18px !important; line-height: 1;
	font-weight: 400;
	text-indent: 0;
	cursor: pointer;
	color: #fff !important;
	-webkit-text-fill-color: #fff;
}
.qt-fe-qty-btn:hover { filter: brightness(0.92); }
.qt-fe-qty-btn svg { display: block; width: 14px; height: 14px; pointer-events: none; }
.qt-fe-qty-btn svg line { stroke: #fff !important; }
.qt-fe-qty-input {
	width: 40px; text-align: center;
	border: 1px solid var(--qt-fe-border);
	border-radius: 8px; height: 32px;
	font-size: 15px;
	-moz-appearance: textfield;
}
.qt-fe-qty-input::-webkit-outer-spin-button,
.qt-fe-qty-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.qt-fe-summary { margin: 18px 0; padding-top: 14px; }
.qt-fe-summary-row {
	display: flex; justify-content: space-between;
	font-size: 14px; color: var(--qt-fe-muted);
	padding: 4px 0;
}
.qt-fe-summary-total {
	font-size: 17px; font-weight: 700; color: var(--qt-fe-text);
	border-top: 2px solid var(--qt-fe-border);
	margin-top: 6px; padding-top: 10px;
}

.qt-fe-form { margin: 8px 0 16px; }
.qt-fe-field-row { display: flex; gap: 12px; }
.qt-fe-field-row .qt-fe-field { flex: 1; }
.qt-fe-field { margin-bottom: 12px; }
.qt-fe-field label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 4px; }
.qt-fe-field input, .qt-fe-field select {
	width: 100%; padding: 10px 12px;
	border: 1px solid var(--qt-fe-border);
	border-radius: 8px; font-size: 15px;
	background: #fff; color: var(--qt-fe-text);
}
.qt-fe-field input:focus, .qt-fe-field select:focus {
	outline: none; border-color: var(--qt-fe-accent);
	box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);
}

.qt-fe-submit {
	width: 100%; padding: 14px;
	background: var(--qt-fe-accent); color: #fff;
	border: none; border-radius: 10px;
	font-size: 16px; font-weight: 600;
	cursor: pointer; transition: opacity .2s, background .2s;
}
.qt-fe-submit:hover:not(:disabled) { background: #1d4ed8; }
.qt-fe-submit:disabled { opacity: .5; cursor: not-allowed; }

.qt-fe-message { margin-top: 14px; padding: 14px 16px; border-radius: 10px; font-size: 14px; }
.qt-fe-message-success { background: #ecfdf5; color: #065f46; border: 1px solid #a7f3d0; }
.qt-fe-message-error { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }
/* SEC-08/D-167: die neutrale Meldungsflaeche. Die zwei Varianten darueber
   treffen eine Aussage ueber Erfolg oder Misserfolg, und genau diese Aussage
   darf die Antwort der Gastmaske nicht mehr treffen: Treffer, unbekannte
   Kombination und Versandbremse sehen gleich aus. Alle drei Farbwerte sind
   Bestand und keine neue Palette: Flaeche und Rahmen aus .qt-scan-summary
   (qt-admin.css), die Schriftfarbe aus .qe-badge-type (qe-design-system.css).
   Kontrast #1e40af auf #eff4ff rund 9.4:1, also ueber der AA-Schwelle. */
.qt-fe-message-info { background: #eff4ff; color: #1e40af; border: 1px solid #c7d8fb; }
.qt-fe-soldout, .qt-fe-error { padding: 16px; color: var(--qt-fe-muted); text-align: center; }

/* Lookup */
.qt-fe-lookup-btn {
	padding: 10px 18px; background: var(--qt-fe-accent); color: #fff;
	border: none; border-radius: 8px; font-size: 15px; cursor: pointer;
}
.qt-fe-lookup-result { margin-top: 14px; padding: 12px 14px; border-radius: 8px; font-weight: 600; }
.qt-fe-status-valid { background: #ecfdf5; color: #065f46; }
.qt-fe-status-used { background: #fffbeb; color: #92400e; }
.qt-fe-status-cancelled, .qt-fe-status-invalid { background: #fef2f2; color: #991b1b; }

/* ============================================================
   Warenkorb, Checkout, Meine Tickets/Bestellungen, Bestätigung
   ============================================================ */
.qt-fe-cart-row {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 0;
	border-bottom: 1px solid var(--qt-fe-border);
}
.qt-fe-cart-info { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.qt-fe-cart-name { font-weight: 600; font-size: 15px; }
.qt-fe-cart-event { font-size: 13px; color: var(--qt-fe-muted); }
.qt-fe-cart-qty { font-weight: 600; min-width: 24px; text-align: center; }
.qt-fe-cart-qty-ro { color: var(--qt-fe-muted); font-size: 14px; }
.qt-fe-cart-line { font-weight: 600; min-width: 70px; text-align: right; }
.qt-fe-cart-dec, .qt-fe-cart-inc {
	width: 28px; height: 28px; border: 1px solid var(--qt-fe-border);
	background: #f9fafb; border-radius: 6px; cursor: pointer; font-size: 16px; line-height: 1;
}
.qt-fe-cart-remove {
	width: 26px; height: 26px; border: none; background: transparent;
	color: #dc2626; font-size: 20px; cursor: pointer; line-height: 1;
}
.qt-fe-empty, .qt-fe-loading, .qt-fe-hint { color: var(--qt-fe-muted); padding: 8px 0; }
.qt-fe-to-checkout, .qt-fe-checkout-submit { margin-top: 16px; }

/* Bestätigung */
.qt-fe-confirmation { text-align: center; margin: 48px auto 64px !important; max-width: 520px; }
/* Divi u. a. lassen den Footer direkt an #left-area anschließen; ein
   margin-bottom kollabiert dort. Ein zusätzliches padding-bottom kollabiert
   nicht und erzwingt den Abstand nach unten zuverlässig. */
.entry-content .qt-fe-confirmation,
.qt-fe-confirmation { padding-bottom: 8px; }
.qt-fe-confirmation::after { content: ""; display: block; height: 40px; }
.qt-fe-confirm-icon {
	width: 64px; height: 64px; line-height: 64px; margin: 0 auto 16px;
	border-radius: 50%; background: #dcfce7; color: #166534; font-size: 32px;
}
/* KAP-08/D-87: Klaerungsfall. Ohne diesen Modifier erbte der Kreis den
   gruenen Erfolgshintergrund und behauptete optisch das Gegenteil der
   Aussage: alles in Ordnung, Ticket kommt. */
.qt-fe-confirm-icon-review { background: #fef3c7; color: #92400e; }
.qt-fe-confirm-title { margin: 0 0 8px; font-size: 20px; }
.qt-fe-confirm-onr { font-size: 15px; margin: 4px 0; }
.qt-fe-confirm-hint { color: var(--qt-fe-muted); font-size: 14px; max-width: 420px; margin: 12px auto 0; }

/* Meine Tickets / Bestellungen */
.qt-fe-myorders-result { margin-top: 16px; }
.qt-fe-ticket-card {
	display: flex; gap: 14px; align-items: center;
	border: 1px solid var(--qt-fe-border); border-radius: 10px;
	padding: 14px; margin-bottom: 12px;
}
.qt-fe-ticket-qr { width: 90px; height: 90px; flex-shrink: 0; }
.qt-fe-ticket-event { font-weight: 600; font-size: 15px; }
.qt-fe-ticket-code { font-family: monospace; font-size: 16px; letter-spacing: 2px; margin: 4px 0; }
.qt-fe-ticket-status { font-size: 13px; font-weight: 600; }
.qt-fe-order-card { border: 1px solid var(--qt-fe-border); border-radius: 10px; padding: 16px; }
.qt-fe-order-head { display: flex; justify-content: space-between; font-size: 15px; margin-bottom: 8px; }
.qt-fe-order-total { font-size: 20px; font-weight: 700; }
.qt-fe-order-count { color: var(--qt-fe-muted); font-size: 14px; margin-top: 4px; }

/* ============================================================
   Zentrale Shop-Seite (Event → Tickets → Daten → Zahlung)
   ============================================================ */
.qt-shop { max-width: 920px; margin: 0 auto; }
.qt-shop * { box-sizing: border-box; }

/* Fortschrittsleiste */
.qt-shop-steps {
	display: flex; gap: 8px; list-style: none; padding: 0; margin: 0 0 24px;
	counter-reset: step;
}
.qt-shop-step {
	flex: 1; display: flex; align-items: center; gap: 8px;
	font-size: 14px; color: #9ca3af; padding: 8px 0;
	border-top: 3px solid #e5e7eb;
}
.qt-shop-step span {
	display: inline-flex; align-items: center; justify-content: center;
	width: 24px; height: 24px; border-radius: 50%;
	background: #e5e7eb; color: #6b7280; font-size: 13px; font-weight: 600;
}
.qt-shop-step.active { color: #111827; border-top-color: #2563eb; }
.qt-shop-step.active span { background: #2563eb; color: #fff; }
.qt-shop-step.done { border-top-color: #10b981; }
.qt-shop-step.done span { background: #10b981; color: #fff; }

.qt-shop-pane { animation: qt-fade 0.2s ease; }
/* Erzwingt echtes Ausblenden — manche Themes setzen section{display:block}
   und übersteuern damit das native [hidden]-Attribut. */
.qt-shop-pane[hidden] { display: none !important; }
@keyframes qt-fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* Schritt 1: Toolbar + Event-Grid */
.qt-shop-toolbar { display: flex; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.qt-shop-search { flex: 1; min-width: 200px; padding: 10px 14px; border: 1px solid #d1d5db; border-radius: 8px; font-size: 15px; }
.qt-shop-city-filter { padding: 10px 14px; border: 1px solid #d1d5db; border-radius: 8px; font-size: 15px; }
.qt-shop-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
.qt-shop-card {
	display: flex; flex-direction: column; text-align: left; cursor: pointer;
	border: 1px solid #e5e7eb; border-radius: 12px; overflow: hidden; background: #fff;
	padding: 0; transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.qt-shop-card:hover { box-shadow: 0 6px 20px rgba(0,0,0,0.1); transform: translateY(-2px); }
.qt-shop-card-img {
	height: 130px; background: #f3f4f6; display: flex; align-items: center; justify-content: center;
	color: #cbd5e1;
}
.qt-shop-card-img img { width: 100%; height: 100%; object-fit: cover; }
.qt-shop-card-img .dashicons { font-size: 40px; width: 40px; height: 40px; }
.qt-shop-card-body { padding: 14px; display: flex; flex-direction: column; gap: 3px; }
.qt-shop-card-title { font-weight: 700; font-size: 16px; color: #111827; }
.qt-shop-card-program { font-size: 13px; color: #2563eb; font-weight: 600; }
.qt-shop-card-loc, .qt-shop-card-date { font-size: 13px; color: #6b7280; }
.qt-shop-card-price { margin-top: 6px; font-weight: 600; color: #2563eb; }
.qt-shop-noresult, .qt-shop-empty { text-align: center; color: #6b7280; padding: 32px; }

/* Schritt 2: Tickets */
.qt-shop-back { background: none; border: none; color: #2563eb; cursor: pointer; font-size: 14px; padding: 4px 0; margin-bottom: 12px; margin-left: auto; display: block; width: fit-content; }
.qt-shop-ev-title { font-size: 20px; margin: 0 0 16px; }
.qt-shop-ticket {
	display: flex; align-items: center; justify-content: space-between;
	padding: 14px 0; border-bottom: 1px solid #f1f5f9;
}
.qt-shop-ticket-info { display: flex; flex-direction: column; gap: 2px; }
.qt-shop-ticket-name { font-weight: 600; }
.qt-shop-ticket-price { color: #6b7280; font-size: 14px; }
.qt-shop-qty { display: flex; align-items: center; gap: 12px; }
.qt-shop-qty button {
	width: 44px; height: 44px; border: none; background: #60a5fa;
	color: #fff; border-radius: 8px; font-size: 22px; font-weight: 600;
	cursor: pointer; line-height: 1; transition: background 0.15s;
	display: inline-flex; align-items: center; justify-content: center; padding: 0;
}
.qt-shop-qty button svg { width: 18px; height: 18px; }
.qt-shop-qty button svg line { stroke: #fff; }
.qt-shop-qty button:hover { background: #3b82f6; }
.qt-shop-qty-val { min-width: 24px; text-align: center; font-weight: 600; }
.qt-shop-sum {
	display: flex; justify-content: space-between; align-items: center;
	padding: 16px 0; font-size: 18px;
}
.qt-shop-total { color: #2563eb; }

/* Buttons */
.qt-shop-next, .qt-shop-submit {
	width: 100%; padding: 14px; border: none; border-radius: 10px;
	background: #2563eb; color: #fff; font-size: 16px; font-weight: 600; cursor: pointer;
}
.qt-shop-next:disabled { background: #cbd5e1; cursor: not-allowed; }
.qt-shop-next:not(:disabled):hover, .qt-shop-submit:hover { background: #1d4ed8; }
.qt-shop-submit.loading { opacity: 0.7; cursor: wait; }

/* Schritt 3: Formular */
.qt-shop-form { display: flex; flex-direction: column; gap: 14px; }
.qt-shop-form label.qt-shop-account-toggle {
	flex-direction: row; align-items: center; justify-content: flex-start;
	width: 100%; text-align: left; gap: 12px;
}
.qt-shop-form label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; font-weight: 500; color: #374151; }
.qt-shop-form input { padding: 10px 12px; border: 1px solid #d1d5db; border-radius: 8px; font-size: 15px; box-shadow: none !important; }
/* Theme-Schlagschatten aus allen Shop-Eingabefeldern entfernen (Divi u. a.
   setzen einen inset-Schatten, der die Felder "eingedrückt" wirken lässt). */
.qt-shop-form input,
.qt-shop-form select,
.qt-shop-form textarea,
.qt-account-form input,
.qt-shop-login-box input,
.qt-shop-coupon-input,
.qt-shop-search { box-shadow: none !important; }
.qt-shop-form input:focus,
.qt-shop-form select:focus,
.qt-shop-form textarea:focus { box-shadow: none !important; }
.qt-shop-fieldrow { display: flex; gap: 12px; }
.qt-shop-fieldrow > label { flex: 1; }
.qt-shop-zip { max-width: 120px; }
.qt-shop-pay { border: 1px solid #e5e7eb; border-radius: 10px; padding: 14px; }
.qt-shop-pay legend { font-weight: 600; padding: 0 6px; }
.qt-shop-pay-opt { display: flex; flex-direction: row; align-items: center; gap: 8px; padding: 6px 0; font-weight: 400; }
.qt-shop-pay-opt input { width: auto; }
.qt-shop-error { color: #dc2626; background: #fef2f2; padding: 10px 14px; border-radius: 8px; font-size: 14px; }
/* AUS-05/D-139: ein gesperrter Verkauf ist weder ein Fehler des Kaeufers noch
   etwas, das er korrigieren koennte. Rot heisst hier "deine Eingabe hat nicht
   funktioniert". Gleiche Position, gleiche Groesse, neutrale Flaeche statt Rot.
   Kein neuer Farbton: die drei Werte stehen bereits als --qe-gray-50,
   --qe-gray-200 und --qt-fe-text in den beiden Stylesheets.
   Keine eigene [hidden]-Regel noetig, und das ist geprueft: der Modifikator ist
   eine zweite Klasse am selben Element, .qt-shop-error[hidden] weiter unten
   greift also unveraendert, und dieser Regelsatz setzt kein display.
   QT-STANDARDS 8b ist damit erfuellt, ohne eine Zeile hinzuzufuegen. */
.qt-shop-error.qt-shop-error-neutral {
	color: var(--qt-fe-text, #1f2937);
	background: #f9fafb;
	border: 1px solid #e5e7eb;
}

/* Schritt 4: Bestätigung */
.qt-shop-pane-done { text-align: center; padding: 24px; }
.qt-shop-done-icon {
	width: 72px; height: 72px; margin: 0 auto 16px; border-radius: 50%;
	background: #dcfce7;
	display: flex; align-items: center; justify-content: center;
}
.qt-check-circle { stroke: #16a34a; stroke-width: 2.5; opacity: 0.35; }
.qt-check-mark {
	stroke: #16a34a; stroke-width: 4; stroke-linecap: round; stroke-linejoin: round;
	stroke-dasharray: 48; stroke-dashoffset: 48;
	animation: qt-check-draw 0.5s ease-out 0.15s forwards;
}
@keyframes qt-check-draw { to { stroke-dashoffset: 0; } }
.qt-shop-done-title { font-size: 22px; margin: 0 0 8px; }
.qt-shop-done-msg { color: #6b7280; }
.qt-shop-done-codes { margin: 16px 0; }
.qt-shop-code {
	display: inline-block; margin: 4px; padding: 6px 12px; border-radius: 8px;
	background: #eff6ff; color: #1d4ed8; font-family: monospace; font-weight: 600; letter-spacing: 1px;
}
.qt-shop-done-hint { color: #6b7280; font-size: 14px; }

@media (max-width: 600px) {
	.qt-shop-steps { gap: 4px; }
	.qt-shop-step { font-size: 12px; }
	.qt-shop-fieldrow { flex-direction: column; }
	.qt-shop-zip { max-width: none; }
}

/* ============================================================
   Kundenkonto-Bereich
   ============================================================ */
.qt-account { max-width: 480px; margin: 0 auto; }
.qt-account, .qt-account * { box-sizing: border-box; }
.qt-account-tabs { display: flex; gap: 4px; margin-bottom: 20px; border-bottom: 1px solid #e5e7eb; }
.qt-account-tab {
	flex: 1; padding: 12px; border: none; background: none; cursor: pointer;
	font-size: 15px; color: #6b7280; border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.qt-account-tab.active { color: #2563eb; border-bottom-color: #2563eb; font-weight: 500; }
.qt-account-form { display: none; flex-direction: column; gap: 14px; }
/* Sichtbarkeit über eigene Klasse — unabhängig vom [hidden]-Attribut, das
   manche Themes/Cache-Setups aushebeln. Nur das aktive Formular zeigt sich. */
.qt-account-form.qt-form-visible { display: flex; }
.qt-account-form[hidden] { display: none !important; }
/* Gleiche Absicherung gegen Theme-CSS (section{display:block}) für die
   Umschaltung zwischen Login-Bereich und eingeloggtem Dashboard. */
.qt-account-dashboard[hidden],
.qt-account-auth[hidden],
.qt-account-guest[hidden],
.qt-account-orders-empty[hidden],
.qt-account-msg[hidden] { display: none !important; }
.qt-account-form label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; color: #374151; }
.qt-account-form input { padding: 10px 12px; border: 1px solid #d1d5db; border-radius: 8px; font-size: 15px; }
.qt-account-row { display: flex; gap: 12px; }
.qt-account-row label { flex: 1; }
.qt-account-hint { font-size: 14px; color: #6b7280; margin: 0; }
.qt-account-msg { font-size: 14px; margin: 0; }
.qt-account-submit {
	padding: 13px; border: none; border-radius: 10px; background: #2563eb; color: #fff;
	font-size: 16px; font-weight: 500; cursor: pointer;
}
.qt-account-submit:hover { background: #1d4ed8; }
.qt-account-link { background: none; border: none; color: #2563eb; cursor: pointer; font-size: 14px; padding: 4px 0; }

/* Dashboard */
.qt-account-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.qt-account-greeting { font-size: 20px; margin: 0; }
.qt-account-logout { background: none; border: 1px solid #d1d5db; border-radius: 8px; padding: 8px 14px; cursor: pointer; font-size: 14px; }
.qt-account-logout:hover { background: #f3f4f6; }

/* Gastzugang aus der Token-Mail (SEC-08, D-165, UI-SPEC Abschnitt F).
   Der Abschnitt traegt alle drei Zustaende. Umgeschaltet wird ueber
   Zustandsklassen am Abschnitt selbst und nicht ueber el.hidden: nach
   QT-STANDARDS 8b braucht jedes per el.hidden geschaltete Element eine eigene
   [hidden]-Regel, und diese Phase fuehrt genau eine ein (oben in der Gruppe
   mit Dashboard und Auth-Bereich). Die drei Klassen unten sind reine
   Zustandsklassen, kein zweiter Sichtbarkeitsmechanismus. */
.qt-account-guest .qt-account-guest-empty,
.qt-account-guest .qt-account-guest-retry { display: none; }
.qt-account-guest .qt-account-guest-empty { font-size: 14px; color: #6b7280; margin: 0; }
.qt-account-guest.qt-account-guest-none .qt-account-guest-empty { display: block; }
.qt-account-guest.qt-account-guest-invalid .qt-account-head,
.qt-account-guest.qt-account-guest-invalid .qt-account-hint,
.qt-account-guest.qt-account-guest-invalid .qt-account-guest-tickets,
.qt-account-guest.qt-account-guest-invalid .qt-account-guest-empty { display: none; }
.qt-account-guest.qt-account-guest-invalid .qt-account-guest-retry { display: block; }
.qt-account-order {
	display: flex; align-items: center; justify-content: space-between;
	padding: 14px 16px; border: 1px solid #e5e7eb; border-radius: 10px; margin-bottom: 10px;
}
.qt-account-order-info { display: flex; flex-direction: column; gap: 2px; }
.qt-account-order-meta { font-size: 13px; color: #6b7280; }
.qt-account-order-right { display: flex; align-items: center; gap: 14px; }
.qt-account-order-total { font-weight: 500; }
.qt-account-dl { color: #2563eb; text-decoration: none; font-size: 14px; font-weight: 500; }
.qt-account-dl:hover { text-decoration: underline; }
.qt-account-dl-disabled { color: #9ca3af; font-size: 13px; }
.qt-account-orders-empty { text-align: center; color: #6b7280; padding: 24px; }

/* Kombinierter Bestellschritt: Event-Zusammenfassung */
.qt-shop-ev-summary { display: flex; gap: 16px; align-items: center; padding: 16px; background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 12px; margin-bottom: 20px; }
.qt-shop-ev-summary-img { flex-shrink: 0; width: 88px; height: 88px; border-radius: 8px; overflow: hidden; background: #eef2ff; }
.qt-shop-ev-summary-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.qt-shop-ev-summary-info { flex: 1; min-width: 0; }
.qt-shop-ev-summary-info .qt-shop-ev-title { margin: 0 0 8px; font-size: 20px; }
.qt-shop-ev-meta { display: flex; flex-wrap: wrap; gap: 12px; color: #6b7280; font-size: 14px; }
.qt-shop-ev-meta > span { display: inline-flex; align-items: center; gap: 4px; }
.qt-shop-ev-meta .dashicons { font-size: 16px; width: 16px; height: 16px; }
.qt-shop-section-title { margin: 24px 0 12px; font-size: 16px; font-weight: 600; padding-bottom: 6px; border-bottom: 1px solid #e5e7eb; }
.qt-shop-section-title:first-child { margin-top: 0; }
@media (max-width: 600px) {
	.qt-shop-ev-summary { flex-direction: column; text-align: center; }
}

/* Datum-Box im Q-Events-Stil */
.qt-shop-ev-row { display: flex; align-items: center; gap: 14px; margin-top: 4px; }
.qt-shop-date-box {
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	width: 54px; height: 54px; background: #2563eb; border-radius: 10px; flex-shrink: 0;
}
.qt-shop-date-box-day { font-size: 20px; font-weight: 700; color: #fff; line-height: 1; }
.qt-shop-date-box-month { font-size: 11px; font-weight: 500; color: rgba(255,255,255,0.9); text-transform: uppercase; line-height: 1; margin-top: 2px; }
.qt-shop-ev-organizer { margin: 10px 0 0; font-size: 13px; color: #6b7280; line-height: 1.4; }

/* Zwischensumme unter den Tickets */
.qt-shop-ticket-sum {
	display: flex; justify-content: space-between; align-items: center;
	margin-top: 12px; padding: 12px 16px; background: #f8fafc;
	border-radius: 8px; border: 1px solid #e5e7eb;
}
.qt-shop-ticket-sum-label { color: #6b7280; font-size: 14px; }
.qt-shop-ticket-sum .qt-shop-total { font-size: 18px; color: #111827; }

/* Prominente Checkout-Leiste (Gesamt + Button) */
.qt-shop-checkout-bar {
	margin-top: 24px; padding: 20px; background: #f8fafc;
	border: 1px solid #e5e7eb; border-radius: 12px;
}
.qt-shop-checkout-bar .qt-shop-sum {
	display: flex; justify-content: space-between; align-items: baseline;
	margin: 0 0 16px; padding: 0; border: none; background: none;
}
.qt-shop-checkout-bar .qt-shop-sum > span { font-size: 16px; color: #374151; }
.qt-shop-checkout-bar .qt-shop-total { font-size: 26px; font-weight: 700; color: #111827; }
.qt-shop-checkout-bar .qt-shop-submit { width: 100%; }

/* Optionale Konto-Anlage im Checkout */
.qt-shop-account-toggle { display: flex; align-items: flex-start; gap: 8px; margin: 8px 0; cursor: pointer; font-size: 14px; }
.qt-shop-account-toggle input { margin-top: 2px; flex-shrink: 0; }
.qt-shop-account-pw { margin: 8px 0 4px; padding: 12px; background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 8px; }
.qt-shop-account-hint { color: #6b7280; font-size: 13px; margin-top: 4px; }
/* Zugangs-Hinweise auf der Bestätigungsseite */
.qt-shop-done-access { margin-top: 16px; padding-top: 16px; border-top: 1px solid #e5e7eb; }
.qt-shop-done-account { color: #047857; font-size: 14px; margin: 0 0 8px; }
.qt-shop-done-guest { color: #6b7280; font-size: 14px; margin: 0; }

/* Preis-Aufschlüsselung in der Checkout-Leiste */
.qt-shop-breakdown { margin-bottom: 12px; padding-bottom: 12px; border-bottom: 1px solid #e5e7eb; }
.qt-shop-bd-row { display: flex; justify-content: space-between; align-items: baseline; font-size: 14px; color: #6b7280; padding: 3px 0; }
.qt-shop-bd-row span:last-child { color: #374151; }
.qt-shop-bd-tax { font-size: 13px; color: #9ca3af; }

/* ============================================================
   Mobile-Optimierung (Smartphone-First-Feinschliff)
   Konsolidierte Anpassungen für kleine Viewports. Touch-Ziele,
   umbrechende Reihen, kompaktere Abstände.
   ============================================================ */

/* Größere Touch-Ziele generell (iOS/Android empfehlen min. 44px). */
.qt-shop-plus, .qt-shop-minus {
	min-width: 40px; min-height: 40px;
	display: inline-flex; align-items: center; justify-content: center;
	font-size: 20px;
}
.qt-shop-submit, .qt-shop-next {
	min-height: 48px;
}
.qt-account-submit { min-height: 48px; }

@media (max-width: 768px) {
	/* Container nutzen volle Breite mit etwas Rand. */
	.qt-shop, .qt-account { max-width: 100%; padding-left: 4px; padding-right: 4px; }

	/* Event-Grid: eine Spalte auf kleinen Screens. */
	.qt-shop-grid { grid-template-columns: 1fr; gap: 12px; }

	/* Toolbar (Suche + Filter) untereinander. */
	.qt-shop-toolbar { flex-direction: column; gap: 8px; }
	.qt-shop-search, .qt-shop-city-filter { width: 100%; min-width: 0; }
}

@media (max-width: 600px) {
	/* Fortschritts-Schritte kompakt, Text darf umbrechen. */
	.qt-shop-steps { flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }
	.qt-shop-step { font-size: 12px; }
	.qt-shop-step span { width: 22px; height: 22px; line-height: 22px; }

	/* Alle mehrspaltigen Feld-Reihen untereinander. */
	.qt-shop-fieldrow, .qt-account-row, .qt-fe-field-row { flex-direction: column; gap: 10px; }
	.qt-shop-zip { max-width: none; }

	/* Event-Zusammenfassung: Bild oben, Text darunter, linksbündig. */
	.qt-shop-ev-summary { flex-direction: row; align-items: flex-start; gap: 12px; padding: 12px; text-align: left; }
	.qt-shop-ev-summary-img { width: 64px; height: 64px; }
	.qt-shop-ev-summary-info .qt-shop-ev-title { font-size: 18px; }
	.qt-shop-ev-row { flex-wrap: wrap; gap: 10px; }
	.qt-shop-ev-meta { flex-direction: column; gap: 6px; }

	/* Tickets: Name/Preis links, Mengen-Stepper rechts, mehr Luft. */
	.qt-shop-ticket { padding: 12px 0; }
	.qt-shop-ticket-name { font-size: 15px; }

	/* Checkout-Leiste: großer Button, gut erreichbar. */
	.qt-shop-checkout-bar { padding: 16px; }
	.qt-shop-checkout-bar .qt-shop-total { font-size: 22px; }

	/* Konto: Kopf und Bestellzeilen umbrechen. */
	.qt-account-head { flex-direction: column; align-items: flex-start; gap: 12px; }
	.qt-account-order { flex-direction: column; align-items: flex-start; gap: 8px; }
	.qt-account-order-right { width: 100%; justify-content: space-between; }

	/* Bestätigungsseite: Datums-Box und Text zentriert, kompakter. */
	.qt-fe-order-head { flex-direction: column; gap: 4px; }

	/* Schrift minimal größer für Lesbarkeit, Inputs nicht zoomen (16px). */
	.qt-shop-form input, .qt-account-form input,
	.qt-shop-form select, .qt-shop-search { font-size: 16px; }
}

/* Sehr schmale Geräte (≤380px). */
@media (max-width: 380px) {
	.qt-shop-ev-summary { flex-direction: column; align-items: center; text-align: center; }
	.qt-shop-ev-meta { align-items: center; }
	.qt-shop-date-box { width: 48px; height: 48px; }
	.qt-shop-date-box-day { font-size: 18px; }
}

/* Aufschlüsselung direkt unter den Tickets (immer sichtbar) */
.qt-shop-breakdown-top {
	margin: 8px 0 20px; padding: 16px;
	background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 12px;
	display: block;
}
.qt-shop-breakdown-top .qt-shop-bd-row {
	display: flex; justify-content: space-between; align-items: baseline;
	font-size: 14px; color: #6b7280; padding: 4px 0;
}
.qt-shop-breakdown-top .qt-shop-bd-row span:last-child { color: #374151; }
.qt-shop-breakdown-top .qt-shop-bd-tax-top { font-size: 13px; color: #9ca3af; }
.qt-shop-breakdown-top .qt-shop-bd-total-top {
	margin-top: 6px; padding-top: 10px; border-top: 2px solid #e5e7eb;
	font-size: 18px; color: #111827;
}
.qt-shop-breakdown-top .qt-shop-bd-total-top strong { color: #111827; }

/* ============================================================
   Kundenkonto-Toggle (moderner Switch statt Checkbox)
   ============================================================ */
.qt-shop-account-toggle {
	display: flex; align-items: center; justify-content: flex-start; gap: 12px;
	width: 100%; text-align: left;
	cursor: pointer; margin: 8px 0 4px; user-select: none;
}
.qt-shop-account-toggle input { position: absolute; opacity: 0; width: 0; height: 0; }
.qt-toggle-track {
	position: relative; flex: 0 0 auto;
	width: 46px; height: 26px; border-radius: 999px;
	background: #cbd5e1; transition: background .25s ease;
}
.qt-toggle-thumb {
	position: absolute; top: 3px; left: 3px;
	width: 20px; height: 20px; border-radius: 50%;
	background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.25);
	transition: transform .25s ease;
}
.qt-shop-account-toggle input:checked + .qt-toggle-track {
	background: var(--qt-fe-accent);
}
.qt-shop-account-toggle input:checked + .qt-toggle-track .qt-toggle-thumb {
	transform: translateX(20px);
}
.qt-shop-account-toggle input:focus-visible + .qt-toggle-track {
	box-shadow: 0 0 0 3px rgba(37,99,235,.3);
}
.qt-toggle-text { font-size: 14px; color: var(--qt-fe-text); line-height: 1.4; }

/* ============================================================
   Zahlungsart als moderne, auswählbare Karten
   ============================================================ */
.qt-shop-pay-cards {
	border: 0; padding: 0; margin: 8px 0 0;
	display: flex; flex-direction: row; flex-wrap: wrap; gap: 12px;
}
/* Eine per JS ausgeblendete Zahlungskarte (card.hidden = true) muss wirklich
   verschwinden. Das eigene display:flex unten übersteuert sonst das native
   [hidden]-Attribut, sodass z. B. Barzahlung trotz Deaktivierung sichtbar
   bliebe. Diese Regel erzwingt das Ausblenden. */
.qt-shop-pay-card[hidden] { display: none !important; }
/* Gleiche Absicherung für Event-Karten (Filter/Suche blendet per JS aus)
   und für die Aufschlüsselungszeilen (starten mit [hidden] im Markup). */
.qt-shop-card[hidden] { display: none !important; }
.qt-shop-bd-row[hidden] { display: none !important; }
.qt-shop-login-box[hidden] { display: none !important; }
.qt-shop-breakdown-top[hidden] { display: none !important; }
/* Weitere per JS versteckte Elemente (Standard 8b): */
.qt-shop-date-box[hidden] { display: none !important; }
.qt-shop-done-msg[hidden] { display: none !important; }
.qt-shop-ev-summary-img[hidden] { display: none !important; }
.qt-shop-form[hidden] { display: none !important; }
.qt-shop-login-msg[hidden] { display: none !important; }
.qt-shop-pay-card {
	position: relative; display: flex; align-items: center; gap: 14px;
	flex: 1 1 240px; min-width: 0;
	padding: 16px 18px; cursor: pointer;
	background: #fff; border: 2px solid var(--qt-fe-border);
	border-radius: 14px; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
}
.qt-shop-pay-card input { position: absolute; opacity: 0; width: 0; height: 0; }
.qt-shop-pay-card:hover {
	border-color: #86efac;
	box-shadow: 0 4px 14px rgba(22,163,74,.08);
}
.qt-shop-pay-card.selected {
	border-color: #16a34a;
	background: linear-gradient(0deg, rgba(22,163,74,.06), rgba(22,163,74,.06)), #fff;
	box-shadow: 0 6px 20px rgba(22,163,74,.16);
}
.qt-shop-pay-card-icon {
	flex: 0 0 auto; width: 46px; height: 46px;
	display: flex; align-items: center; justify-content: center;
	border-radius: 12px; background: #fafbfc; color: #94a3b8;
	transition: background .2s ease, color .2s ease;
}
.qt-shop-pay-card.selected .qt-shop-pay-card-icon { background: #f0fdf4; color: #16a34a; }
.qt-shop-pay-card-icon svg { width: 24px; height: 24px; }
.qt-shop-pay-card-body { flex: 1; display: flex; flex-direction: column; gap: 3px; text-align: left; }
.qt-shop-pay-card-title { font-size: 16px; font-weight: 600; color: var(--qt-fe-text); }
.qt-shop-pay-card-desc { font-size: 13px; color: var(--qt-fe-muted); line-height: 1.4; }
.qt-shop-pay-card-check {
	flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	background: #16a34a; color: #fff;
	opacity: 0; transform: scale(.5); transition: opacity .2s ease, transform .2s ease;
}
.qt-shop-pay-card-check svg { width: 15px; height: 15px; }
.qt-shop-pay-card.selected .qt-shop-pay-card-check { opacity: 1; transform: scale(1); }

@media (max-width: 600px) {
	.qt-shop-pay-cards { flex-direction: column; }
	.qt-shop-pay-card { flex-basis: auto; padding: 14px; gap: 12px; }
	.qt-shop-pay-card-icon { width: 40px; height: 40px; }
	.qt-shop-pay-card-desc { font-size: 12px; }
}

/* Hinweis, wenn noch kein Ticket gewählt wurde */
.qt-shop-choose-hint {
	text-align: center; color: var(--qt-fe-muted); font-size: 14px;
	padding: 20px 12px; margin: 8px 0 0;
	background: #f8fafc; border: 1px dashed var(--qt-fe-border); border-radius: 12px;
}

/* Login-Status im Checkout */
.qt-shop-loggedin {
	display: flex; align-items: center; gap: 8px;
	padding: 12px 16px; margin-bottom: 16px;
	background: #ecfdf5; border: 1px solid #a7f3d0; border-radius: 12px;
	color: #065f46; font-size: 14px; font-weight: 600;
}
.qt-shop-loggedin .dashicons { color: #059669; }
.qt-shop-login-offer { margin-bottom: 16px; }
.qt-shop-login-toggle {
	display: inline-flex; align-items: center; gap: 6px;
	background: none; border: 0; padding: 6px 0; cursor: pointer;
	color: var(--qt-fe-accent); font-size: 14px; font-weight: 600;
}
.qt-shop-login-box {
	margin-top: 10px; padding: 16px;
	background: #f8fafc; border: 1px solid var(--qt-fe-border); border-radius: 12px;
	display: flex; flex-direction: column; gap: 10px;
}
.qt-shop-login-box label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; }
.qt-shop-login-box input { padding: 10px 12px; border: 1px solid #d1d5db; border-radius: 8px; font-size: 16px; }
.qt-shop-login-submit { align-self: flex-start; }
.qt-shop-login-msg { color: #dc2626; font-size: 13px; margin: 0; }

/* Konto: Event-Titel + Unterzeile in der Bestellzeile */
.qt-account-order-info { display: flex; flex-direction: column; gap: 3px; }
.qt-account-order-info strong { font-size: 16px; color: var(--qt-fe-text); }
.qt-account-order-sub { font-size: 13px; color: var(--qt-fe-muted); }
.qt-account-order-meta { font-size: 12px; color: #9ca3af; }

/* Konto: Bestelldetail-Popup */
.qt-account-modal { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; padding: 16px; }
.qt-account-modal[hidden] { display: none; }
.qt-account-modal-backdrop { position: absolute; inset: 0; background: rgba(17, 24, 39, .55); }
.qt-account-modal-box {
	position: relative; background: #fff; border-radius: 20px;
	max-width: 560px; width: 100%; max-height: 88vh; overflow-y: auto;
	padding: 0; box-shadow: 0 24px 70px rgba(15, 23, 42, .28);
}
.qt-account-modal-close {
	position: absolute; top: 16px; right: 18px; z-index: 2;
	width: 34px; height: 34px; border-radius: 50%;
	background: rgba(255, 255, 255, .85); border: 1px solid var(--qt-fe-border);
	font-size: 22px; line-height: 1; color: var(--qt-fe-muted); cursor: pointer;
	display: flex; align-items: center; justify-content: center;
	transition: background .15s ease, color .15s ease, transform .15s ease;
}
.qt-account-modal-close:hover { background: #fff; color: var(--qt-fe-text); transform: scale(1.06); }
.qt-account-modal-loading { color: var(--qt-fe-muted); text-align: center; padding: 48px 0; }

/* Innerer Inhalt des Bestelldetail-Popups */
.qt-od {
	padding: 26px 26px 28px;
	background:
		radial-gradient(120% 90% at 50% -10%, rgba(37, 99, 235, .07) 0%, rgba(37, 99, 235, 0) 60%),
		#fff;
	border-radius: 20px;
}
.qt-od-title {
	margin: 0 0 6px; font-size: 22px; font-weight: 800;
	letter-spacing: -.01em; color: var(--qt-fe-text);
}
.qt-od-status {
	display: inline-flex; align-items: center; gap: 6px;
	font-size: 12.5px; font-weight: 600; color: var(--qt-fe-muted);
	margin-bottom: 18px; padding: 4px 10px; border-radius: 999px;
	background: #f1f5f9; border: 1px solid var(--qt-fe-border);
}
.qt-od-status::before {
	content: ""; width: 7px; height: 7px; border-radius: 50%;
	background: var(--qt-fe-muted);
}
.qt-od-status-paid { color: #047857; background: #ecfdf5; border-color: #a7f3d0; }
.qt-od-status-paid::before { background: #10b981; }
.qt-od-status-pending { color: #b45309; background: #fffbeb; border-color: #fde68a; }
.qt-od-status-pending::before { background: #f59e0b; }
.qt-od-status-cancelled, .qt-od-status-failed { color: #b91c1c; background: #fef2f2; border-color: #fecaca; }
.qt-od-status-cancelled::before, .qt-od-status-failed::before { background: #ef4444; }
/* Zahlungsart-Box – kräftiger Akzent oben */
.qt-od-payment {
	display: flex; justify-content: space-between; align-items: center;
	padding: 14px 18px; margin: 0 0 14px;
	background: linear-gradient(135deg, rgba(37, 99, 235, .10), rgba(37, 99, 235, .04));
	border: 1px solid #c7d8fb; border-radius: 14px;
}
.qt-od-payment-label { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--qt-fe-muted); }
.qt-od-payment-value { font-size: 16px; font-weight: 800; color: var(--qt-fe-accent); }

/* Event-Box */
.qt-od-event {
	display: flex; flex-direction: column; gap: 3px;
	padding: 16px 18px; margin-bottom: 16px;
	background: #f8fafc; border: 1px solid var(--qt-fe-border);
	border-left: 4px solid var(--qt-fe-accent); border-radius: 14px;
}
.qt-od-event strong { font-size: 17px; font-weight: 700; color: var(--qt-fe-text); }
.qt-od-event span { font-size: 13px; color: var(--qt-fe-muted); }

/* Sektions-Karten */
.qt-od-section {
	padding: 18px; margin-bottom: 14px;
	background: #fff; border: 1px solid var(--qt-fe-border); border-radius: 14px;
	box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
}
.qt-od-section:last-child { margin-bottom: 0; }
.qt-od-sub {
	margin: 0 0 12px; font-size: 12px; font-weight: 700;
	text-transform: uppercase; letter-spacing: .05em; color: var(--qt-fe-accent);
}

/* Tickets-Tabelle */
.qt-od-table { width: 100%; border-collapse: collapse; }
.qt-od-table th {
	text-align: left; padding: 0 8px 8px; font-size: 11px; font-weight: 700;
	color: var(--qt-fe-muted); text-transform: uppercase; letter-spacing: .04em;
	border-bottom: 2px solid var(--qt-fe-border);
}
.qt-od-table td {
	text-align: left; padding: 11px 8px; font-size: 14.5px; color: var(--qt-fe-text);
	border-bottom: 1px solid #f1f5f9;
}
.qt-od-table tbody tr:last-child td { border-bottom: 0; }
.qt-od-table .qt-num { text-align: right; white-space: nowrap; }
.qt-od-table td.qt-num { font-variant-numeric: tabular-nums; }

/* Summen */
.qt-od-totals { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; }
.qt-od-totals > div { display: flex; justify-content: space-between; font-size: 14px; color: var(--qt-fe-text); font-variant-numeric: tabular-nums; }
.qt-od-tax { color: var(--qt-fe-muted); font-size: 13px; }
.qt-od-total {
	margin-top: 6px; padding: 14px 16px;
	background: linear-gradient(135deg, rgba(37, 99, 235, .10), rgba(37, 99, 235, .04));
	border: 1px solid #c7d8fb; border-radius: 12px;
	font-size: 18px !important;
}
.qt-od-total strong { color: var(--qt-fe-accent); font-weight: 800; }

/* Deine Daten */
.qt-od-customer { display: flex; flex-direction: column; gap: 4px; font-size: 14.5px; color: var(--qt-fe-text); }
.qt-od-customer div:first-child { font-weight: 700; }

/* Download-Bereich */
.qt-od-downloads { display: flex; flex-direction: column; gap: 9px; }
.qt-od-dl-btn {
	display: flex; align-items: center; justify-content: center; gap: 8px;
	padding: 13px 16px; border-radius: 12px;
	background: #f8fafc; border: 1px solid var(--qt-fe-border);
	color: var(--qt-fe-text); text-decoration: none; font-size: 14px; font-weight: 600;
	text-align: center; transition: background .15s ease, border-color .15s ease, transform .1s ease;
}
.qt-od-dl-btn:hover { background: #eef2f7; border-color: #c7d2df; transform: translateY(-1px); }
.qt-od-dl-primary {
	background: var(--qt-fe-accent); border-color: var(--qt-fe-accent); color: #fff;
	box-shadow: 0 4px 12px rgba(37, 99, 235, .25);
}
.qt-od-dl-primary:hover { background: var(--qt-fe-accent); filter: brightness(1.05); box-shadow: 0 6px 16px rgba(37, 99, 235, .32); }
.qt-od-dl-single-wrap { margin-top: 2px; }
.qt-od-dl-single-toggle {
	background: none; border: 0; padding: 8px 0; cursor: pointer;
	color: var(--qt-fe-accent); font-size: 13px; font-weight: 600;
}
.qt-od-dl-single-list { display: flex; flex-direction: column; gap: 7px; margin-top: 6px; }
.qt-od-dl-sm { padding: 9px 14px; font-size: 13px; font-weight: 500; }
.qt-od-dl-hint { font-size: 13px; color: var(--qt-fe-muted); margin: 2px 0 0; }


/* PayPal Smart Buttons im Checkout */
.qt-shop-paypal-buttons { margin-top: 8px; width: 100%; border: none !important; outline: none !important; }
.qt-paypal-btn-container { min-height: 46px; width: 100%; max-width: 400px; margin: 0 auto; display: block; border: none !important; outline: none !important; }
.qt-paypal-btn-container > div,
.qt-paypal-btn-container iframe { width: 100% !important; max-width: 400px !important; margin: 0 auto !important; border: none !important; outline: none !important; }
.qt-shop-paypal-buttons *:focus,
.qt-paypal-btn-container *:focus { outline: none !important; box-shadow: none !important; }
.qt-shop-paypal-hint {
	margin: 12px 0 0; font-size: 12.5px; line-height: 1.4;
	color: var(--qt-fe-muted); text-align: center;
}

/* Toggle-Schalter (Zustimmungen im Checkout) – ersetzt sichtbare Checkboxen */
.qt-shop-consents { margin: 10px 0 6px; }
.toggle-label {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	cursor: pointer;
	user-select: none;
}
.toggle-label input[type="checkbox"] {
	position: absolute;
	opacity: 0;
	width: 0;
	height: 0;
	margin: 0;
}
.toggle-switch {
	position: relative;
	display: inline-block;
	width: 44px;
	height: 24px;
	flex-shrink: 0;
	background-color: #cbd5e1;
	border-radius: 999px;
	transition: background-color 0.15s ease;
}
.toggle-switch::after {
	content: "";
	position: absolute;
	top: 3px;
	left: 3px;
	width: 18px;
	height: 18px;
	background: #fff;
	border-radius: 50%;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
	transition: transform 0.15s ease;
}
.toggle-label input[type="checkbox"]:checked + .toggle-switch {
	background-color: var(--qt-fe-accent, #2563eb);
}
.toggle-label input[type="checkbox"]:checked + .toggle-switch::after {
	transform: translateX(20px);
}
.toggle-label input[type="checkbox"]:focus-visible + .toggle-switch {
	outline: 2px solid var(--qt-fe-accent, #2563eb);
	outline-offset: 2px;
}
.qt-shop-consent .toggle-text a { color: var(--qt-fe-accent, #2563eb); }
/* Zustimmungen: Toggle links, Text linksbündig daneben – EINE Reihe.
   Mit erhöhter Spezifität + !important gegen Theme-Overrides (z. B. Divi,
   das labels/Formularelemente zentriert oder als Block rendert). */
.qt-shop-consents .qt-shop-consent.toggle-label {
	display: flex !important;
	flex-direction: row !important;
	align-items: center !important;
	justify-content: flex-start !important;
	text-align: left !important;
	gap: 12px !important;
	margin: 10px 0 !important;
	width: 100%;
}
.qt-shop-consents .qt-shop-consent .toggle-switch {
	flex: 0 0 44px !important;
	margin: 0 !important;
}
.qt-shop-consents .qt-shop-consent .toggle-text {
	flex: 1 1 auto !important;
	font-size: 13px;
	line-height: 1.35;
	white-space: normal;
	text-align: left !important;
}

/* Rechtsseiten (AGB/AVB/Datenschutz/Widerruf) */
.qt-legal-page { max-width: 760px; line-height: 1.6; }
.qt-legal-page h1 { font-size: 26px; margin: 0 0 20px; }
.qt-legal-page h2 { font-size: 19px; margin: 28px 0 10px; }
.qt-legal-page p { margin: 0 0 14px; }

/* Gutschein / Rabattcode im Checkout */
.qt-shop-coupon { margin: 4px 0 8px; }
.qt-shop-coupon-row { display: flex; gap: 8px; align-items: stretch; }
.qt-shop-coupon-input {
	flex: 1 1 auto; padding: 10px 12px; font-size: 14px;
	border: 1px solid var(--qt-fe-border); border-radius: 8px;
}
.qt-shop-coupon-apply {
	flex: 0 0 auto; padding: 10px 16px; cursor: pointer;
	background: var(--qt-fe-accent, #2563eb); color: #fff;
	border: 0; border-radius: 8px; font-size: 14px; font-weight: 600;
}
.qt-shop-coupon-apply:disabled { opacity: .6; cursor: default; }
.qt-shop-coupon-msg { margin: 8px 0 0; font-size: 13px; }
.qt-shop-coupon-msg.is-valid { color: #059669; }
.qt-shop-coupon-msg.is-invalid { color: #dc2626; }
/* GELD-07: Hinweis auf die Rabattbasis und Restwert-Hinweis. Bewusst gedaempft
   wie .qt-shop-account-hint, damit sie nicht wie eine Fehlermeldung wirken
   (kein Rot wie .qt-shop-coupon-msg.is-invalid, kein Icon). */
.qt-shop-coupon-hint { color: #6b7280; font-size: 13px; margin-top: 4px; }
.qt-shop-coupon-remainder { color: #6b7280; font-size: 13px; margin: 4px 0 0; }

/* "Erfahren über"-Dropdown (optional) */
.qt-shop-referral { margin: 4px 0 12px; }
.qt-shop-referral-select {
	padding: 10px 12px; font-size: 14px; font-weight: 400;
	border: 1px solid var(--qt-fe-border); border-radius: 8px;
	background: #fff; color: #374151; cursor: pointer;
}
.qt-shop-referral-select:focus {
	outline: none; border-color: var(--qt-fe-accent, #2563eb);
	box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}
.qt-shop-coupon-msg[hidden] { display: none !important; }
/* Themes setzen p { display: block } gern global und heben damit das
   hidden-Attribut auf. Dieselbe Haertung wie eine Zeile darueber. */
.qt-shop-coupon-remainder[hidden] { display: none !important; }
.qt-shop-bd-discount-top { color: #059669; }
.qt-shop-bd-discount-top[hidden] { display: none !important; }

/* Konto-Button auf der Danke-Seite */
.qt-shop-done-account-btn {
	display: inline-block; margin-top: 12px; text-decoration: none; text-align: center;
}

/* STD-01 (D-24, 07-RESEARCH.md): Nachtrag fehlender [hidden]-Regeln — Legacy
   .qt-fe-*-Widgets (Einzel-Shortcodes) UND .qt-shop-*/.qt-account-*-Lücken im
   vereinheitlichten Shop-/Konto-Widget. */
.qt-fe-message[hidden] { display: none !important; }
/* Von der Zeile darueber bereits gedeckt, weil die neutrale Variante immer
   zusammen mit .qt-fe-message steht. Sie steht trotzdem hier, damit die
   Pruefliste aus 07-UI-SPEC.md vollstaendig am Stylesheet nachweisbar ist. */
.qt-fe-message-info[hidden] { display: none !important; }
.qt-fe-form[hidden] { display: none !important; }
.qt-fe-submit[hidden],
.qt-fe-checkout-form[hidden],
.qt-fe-to-checkout[hidden],
.qt-fe-checkout-submit[hidden] { display: none !important; }
.qt-fe-summary[hidden] { display: none !important; }
.qt-fe-empty[hidden] { display: none !important; }
.qt-fe-lookup-result[hidden] { display: none !important; }
.qt-fe-myorders-result[hidden] { display: none !important; }

.qt-shop-purchase-area[hidden] { display: none !important; }
.qt-shop-choose-hint[hidden] { display: none !important; }
.qt-shop-noresult[hidden] { display: none !important; }
.qt-shop-ev-time[hidden],
.qt-shop-ev-loc[hidden],
.qt-shop-ev-organizer[hidden] { display: none !important; }
.qt-shop-account-pw[hidden] { display: none !important; }
.qt-shop-submit[hidden],
.qt-shop-paypal-buttons[hidden] { display: none !important; }
.qt-shop-error[hidden] { display: none !important; }
.qt-shop-done-account[hidden],
.qt-shop-done-guest[hidden] { display: none !important; }

.qt-account-order-sub[hidden] { display: none !important; }
.qt-od-dl-single-list[hidden] { display: none !important; }

/* Hinweis "Bitte wähle deine Zahlmethode" – grün, verschwindet bei Auswahl. */
.qt-shop-pay-hint {
	margin: 0 0 12px !important; padding: 12px 14px !important;
	background: #ecfdf5; border: 1px solid #a7f3d0; border-radius: 8px;
	color: #047857; font-size: 14px; font-weight: 600;
	display: flex; align-items: center; min-height: 0;
	line-height: 1.4 !important;
}
.qt-shop-pay-hint.qt-hidden { display: none; }
