/* =====================================================================
   B2B Gator - Design Theme (Black + Dark-Green)
   Loaded AFTER stylesheet.css to override the legacy look.
   Removal of this <link> tag in layouts = instant rollback.
   ===================================================================== */


/* ---------------------------------------------------------------
   1. Design Tokens
   --------------------------------------------------------------- */
:root {
	--bg-page: #000000;
	/* Card-Surface-Finetuning: dunkles Anthrazit mit minimalem Gruenstich
	   + leichte Transparenz, damit der gruene Body-Glow leicht durchscheint.
	   Wirkt zusammen mit dem Top-Highlight-Verlauf (--bg-card-image) und
	   dem leicht staerkeren Drop-Shadow (--shadow-card) als ruhige, matte
	   dunkle Oberflaeche - kein Glow, kein Glassmorphism, kein Cyber-Look. */
	--bg-card-color: rgba(13, 22, 20, 0.94);
	--bg-card-image: linear-gradient(
		180deg,
		rgba(255, 255, 255, 0.028) 0%,
		rgba(255, 255, 255, 0.010) 35%,
		rgba(255, 255, 255, 0)     75%
	);
	--bg-card: var(--bg-card-color); /* Legacy-Alias: alle bestehenden Regeln bleiben unveraendert */
	--bg-inset: #06100f;
	--bg-elev: #0f1c1a;
	--bg-hover: rgba(31, 176, 154, 0.06);

	--border-card: #14322f;
	--border-strong: #1d4944;
	--border-soft: rgba(41, 157, 140, 0.22);
	--border-divider: rgba(41, 157, 140, 0.14);

	--accent: #1fb09a;
	--accent-hover: #2dc6ad;
	--accent-strong: #29c79b;
	--accent-soft-bg: rgba(31, 176, 154, 0.12);
	--accent-soft-bg-strong: rgba(31, 176, 154, 0.2);
	--accent-soft-text: #7ad7c5;

	/* Buttons & Badges - tuerkiser Akzent (synchron zu --accent).
	   War vorher in einem dunkelgruenen Ton (#0e5448 / #146a5a) -
	   jetzt einheitlich tuerkis. */
	--btn-bg: #1fb09a;
	--btn-bg-hover: #2dc6ad;
	--btn-text: #ffffff;
	--badge-bg: #1fb09a;
	--badge-bg-strong: #2dc6ad;

	--text: #ffffff;
	/* Patch 2026-07-03: --text-muted ist jetzt weiss (vorher #8da3a0).
	   Damit sind alle Beschreibungs-/Sekundaertexte, die var(--text-muted)
	   nutzen, in weiss statt grau. Auf Wunsch (bessere Lesbarkeit auf dem
	   dunklen Hintergrund - keine Abstufung mehr zwischen Titel/Body). */
	--text-muted: #ffffff;
	--text-dim: #5d6f6d;

	--status-success: #15a038;
	--status-success-bg: rgba(21, 160, 56, 0.16);
	--status-danger: #e23131;
	--status-danger-bg: rgba(226, 49, 49, 0.14);
	--status-warn: #f08c2e;
	--status-warn-bg: rgba(240, 140, 46, 0.14);
	--status-info: #2da6d7;
	--status-info-bg: rgba(45, 166, 215, 0.14);

	--radius-card: 10px;
	--radius-card-sm: 10px;
	--radius-chip: 10px;
	--radius-btn: 10px;

	--shadow-card:
		0 1px 0 rgba(255, 255, 255, 0.025) inset,
		0 10px 26px -16px rgba(0, 0, 0, 0.55);
}


/* ---------------------------------------------------------------
   2. Base / Page Background
   Dunkelgruener Glow analog b2bgator-v1 (bg.svg) - aber deutlich
   dezenter: nur ein kleiner, dunkler Spot im Zentrum, ringsum
   schnell zu reinem Schwarz.

   Tuning-Hinweise:
   * Glow-Farbe in der Mitte:  erste stop-Farbe (#062520)
   * Glow-Groesse:             ellipse-Werte (60%/45%)
   * Wie schnell schwarz wird: mittlere stop-Position (25%)
   Rollback: beide body-Bloecke wieder auf var(--bg-page) zuruecksetzen.
   --------------------------------------------------------------- */
html,
body {
	background-color: #000 !important;
	background-image: radial-gradient(
		ellipse 70% 55% at 50% 31%,
		#093530 0%,
		#06231f 28%,
		#010c0a 55%,
		#000 75%
	) !important;
	background-repeat: no-repeat !important;
	background-attachment: fixed !important;
	background-size: 100% 100% !important;
	color: var(--text);
}

.bg-fixed {
	display: none !important;
}

body, body.customer, body.admin {
	background-color: #000 !important;
	background-image: radial-gradient(
		ellipse 70% 55% at 50% 31%,
		#093530 0%,
		#06231f 28%,
		#010c0a 55%,
		#000 75%
	) !important;
	background-repeat: no-repeat !important;
	background-attachment: fixed !important;
	background-size: 100% 100% !important;
}

* { color: inherit; }

a { color: var(--accent); }
a:hover { color: var(--accent-hover); }

/* Globale Container-Breite: 98% statt 90% */
.inner {
	width: 98% !important;
	max-width: 1580px;
	margin: auto !important;
}


/* ---------------------------------------------------------------
   3. Card system - collapse the .outer-box > .box-inner nesting
   into a single visual card.
   --------------------------------------------------------------- */
.outer-box {
	margin: 0 0 16px;
	background: none !important;
	border: 0 !important;
	padding: 0 !important;
}

/* Dashboard-Sektionen: ausgewogene Abstaende zwischen den Bloecken */
.module.dashboard .dashboard-campaigns-headline { margin-top: 8px; }

/* Default: .outer-box-inner wird die Karte (z.B. Form-Seiten). */
.outer-box-inner {
	background: var(--bg-card);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	padding: 28px;
	box-shadow: var(--shadow-card);
}

/* Wenn .outer-box-inner Sub-Karten enthaelt (.box, .button-box, .brand-card,
   .order-card, .product-card, .stat-tile, .alert-callout, .flex-wrapper.flex-teaser,
   Slider): wird der aeussere Wrapper UNSICHTBAR (keine doppelten Boxen). */
.outer-box-inner:has(> .box),
.outer-box-inner:has(> .button-box),
.outer-box-inner:has(.brand-slider),
.outer-box-inner:has(.highlights-slider),
.outer-box-inner:has(.modal-campaigns-slider),
.outer-box-inner:has(.flex-wrapper.flex-teaser),
.outer-box-inner:has(.dashboard-campaigns-headline) {
	background: none !important;
	border: 0 !important;
	padding: 0 !important;
	box-shadow: none !important;
}

/* .box-inner: in Sub-Cards bleibt es die Karte (Produkte/Highlights/etc.).
   In flachen Formular-Seiten (kein .outer-box-inner Wrapper) auch direkt nutzbar. */
.box-inner {
	background: var(--bg-card);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	padding: 24px;
}
.box.box-blank .box-inner { background: none; border: 0; padding: 0; }

/* Innere Boxen im Flex-Teaser-Akkordeon (Customer-Support, 5 Spalten) bekommen
   eine eigene, leichte Karten-Optik mit gleichmaessiger Hoehe. */
.flex-wrapper.flex-teaser .box { display: flex; }
.flex-wrapper.flex-teaser .box .box-inner {
	background: var(--bg-card);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	padding: 18px 16px;
	width: 100%;
	height: 100%;
}
.flex-wrapper.flex-teaser .box .box-inner .box-content {
	background: none;
	padding: 14px 16px 16px;
	border: 0;
}
/* Produktkacheln im Kampagnen-Formular: Inhalt unter dem Bild bekommt Padding */
.flex-wrapper.flex-teaser.reorder-teaser .box .box-inner .box-content {
	padding: 16px 16px 18px !important;
}
.flex-wrapper.flex-teaser.reorder-teaser .box .box-inner .box-content h5 {
	margin: 0 0 4px;
}
.flex-wrapper.flex-teaser.reorder-teaser .box .box-inner .box-content p {
	margin: 0 0 8px;
}
.flex-wrapper.flex-teaser.reorder-teaser .box .box-inner .box-content .form-group {
	margin-top: 14px;
}

/* ---------------------------------------------------------------
   Card-Surface-Finetuning:
   Top-Level-Karten bekommen einen sehr dezenten Top-Highlight-Verlauf
   auf dem Anthrazit (Layered-Background) + leicht staerkeren Shadow.
   Wirkt zusammen mit der ~6% Transparenz von --bg-card-color als
   ruhige, hochwertige dunkle Oberflaeche mit Tiefe.

   Inputs/Selects/Textareas bleiben bewusst aussen vor (flach).
   --------------------------------------------------------------- */
.outer-box-inner,
.box-inner,
.flex-wrapper.flex-teaser .box .box-inner,
.brand-card,
.brand-card-new,
.campaign-card,
.dashboard-actions-3 .dashboard-buttons a.button-box,
.dashboard-appointment-promo,
.dashboard-actions a.button-box,
.button-box,
.headline-box,
.icon-box,
.icon-box.kpi-tile,
.order-card,
.order-tile,
.product-card,
.module .box.orders-list-box .box-inner,
.module form .outer-box-inner .box,
#id_checkout > .box-inner {
	background: var(--bg-card-image), var(--bg-card-color);
	box-shadow: var(--shadow-card);
}

/* Bei .outer-box-inner mit Sub-Karten-Inhalt soll der aeussere Wrapper
   weiterhin "unsichtbar" bleiben (vgl. Block 3) - das gilt auch fuer den
   neuen Layered-Background + Shadow. */
.outer-box-inner:has(> .box),
.outer-box-inner:has(> .button-box),
.outer-box-inner:has(.brand-slider),
.outer-box-inner:has(.highlights-slider),
.outer-box-inner:has(.modal-campaigns-slider),
.outer-box-inner:has(.flex-wrapper.flex-teaser),
.outer-box-inner:has(.dashboard-campaigns-headline) {
	background: none !important;
	box-shadow: none !important;
}

.box.box-blank .box-inner {
	background: none;
	border: 0;
	padding: 0;
}

.box.box-right .box-inner {
	background: var(--accent-soft-bg);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
}

/* Login/Check-Email-Layout: zwei Spalten-Karten bilden eine optische Einheit.
   Aussen-Ecken abgerundet (gleicher Radius links + rechts),
   Innen-Ecken (Mitte) NICHT abgerundet. */
.box.box-left .box-inner {
	border-radius: var(--radius-card) 0 0 var(--radius-card) !important;
}
.box.box-right .box-inner {
	border-radius: 0 var(--radius-card) var(--radius-card) 0 !important;
}
/* Falls die zwei Karten unter einander rutschen (mobile/schmaler Viewport),
   beide voll abgerundet, damit nicht eine Seite "aufgeschnitten" wirkt. */
@media (max-width: 900px) {
	.box.box-left .box-inner,
	.box.box-right .box-inner {
		border-radius: var(--radius-card) !important;
	}
}


/* ---------------------------------------------------------------
   4. Topbar
   --------------------------------------------------------------- */
#id_topbar {
	padding: 14px 32px;
	/* Kein Hintergrund, keine Trennlinie - Topbar schwebt ueber dem
	   Body-Glow ohne harte Kante. */
	background: transparent !important;
	border-bottom: 0 !important;
}

/* Flex-Layout: Logo nimmt natuerliche Breite (linksbuendig), Menue bekommt
   den Rest und richtet seine Items rechts aus. Loest das 50/50-Korsett, das
   die Menue-Eintraege bei vielen Items in zwei Zeilen brach.
   Nur Desktop - Mobile bleibt block-Layout (Drawer-Verhalten). */
@media (min-width: 769px) {
	#id_topbar #id_ci {
		width: auto !important;
		flex: 0 0 auto !important;
	}
	#id_topbar #id_menu {
		width: auto !important;
		flex: 1 1 auto !important;
	}
	/* Logo: -10 % ggue. vorher (44 -> 40 px) und aspect-ratio-preserving.
	   Vorher war `width: 230px !important; max-height: 44px` -> SVG wurde
	   horizontal auf 230x44 gestreckt (viewBox ist 457x152, also 3:1).
	   Jetzt Ratio-erhaltend: height 40 -> width auto = ~120 px. Zusaetzlich
	   `margin-left: 0` (frueher -12 in stylesheet.css) - damit steht das
	   Logo am gleichen linken Abstand wie das Store-Dropdown rechts vom
	   rechten Rand (siehe li:last-child padding-right unten).
	   Gilt fuer Customer (img.not-mobile) UND Admin (body.admin img) -
	   letzteres damit das b2bgator-Logo im Admin-Layout die gleiche Groesse
	   hat wie im Kunden-/Login-Bereich. */
	#id_topbar #id_ci img.not-mobile,
	body.admin #id_topbar #id_ci img {
		width: auto !important;
		height: 40px !important;
		max-height: 40px !important;
		margin-left: 0 !important;
	}
	/* Rechte Symmetrie NUR im Kunden-Layout: letztes Menue-Item
	   (Store-Dropdown) laeuft an den 32-px-Padding-Rand der Topbar heran.
	   Im Admin ist das letzte <li> ein Logout-Icon - dort brauchen wir den
	   normalen Padding, sonst klebt das Icon direkt an der Viewport-Kante. */
	body.customer #id_topbar #id_menu ul > li:last-child {
		padding-right: 0 !important;
	}

	/* === Desktop 3-Zonen-Layout NUR fuer Customer =====================
	   Logo links / Nav BILDSCHIRMmittig / Store rechts.

	   Umbau 2026-07-05d: Der reine Flex-Spacer-Ansatz zentrierte die
	   Nav-Items nur INNERHALB der Menue-Zone (nach Logo, vor Store) -
	   nicht bildschirmmittig, weil #id_menu nach dem Logo-Element im
	   Flex-Fluss startet. Loesung: #id_menu wird per position: absolute
	   ueber die volle Topbar-Breite gespannt (left: 32px, right: 32px -
	   das sind die Topbar-Padding-Werte). Das UL innen ist dann volle
	   Bildschirmbreite abzueglich der 2x 32px Rand. Die ::before/::after-
	   Spacer (flex: 1) verteilen sich gleichmaessig -> Nav-Items sind
	   WIRKLICH bildschirmmittig.

	   Kollision mit Logo (links) wird durch pointer-events: none auf
	   #id_menu und dessen Spacer geloest - Logo bleibt klickbar. Die
	   Nav-Items und der Store bekommen pointer-events: auto zurueck.

	   #id_topbar hat bereits position: relative (aus stylesheet.css
	   Zeile 4301). Also ist es der Positioning-Anchor fuer #id_menu.

	   Vertikale Zentrierung: top: 50% + transform: translateY(-50%)
	   direkt am #id_menu - alle Kinder erben das (nicht mehr am UL noetig).

	   Admin bleibt beim Standard-Flex-Layout (Menue rechtsbuendig) - dort
	   gibt es kein Store-Dropdown und das Layout ist ok wie es ist. */
	/* #id_menu spannt sich absolut ueber die volle Topbar-Breite. Das UL
	   innen hat dadurch = Screen-Breite - 2x32px (Padding). */
	body.customer #id_topbar #id_menu {
		position: absolute !important;
		left: 32px !important;
		right: 32px !important;
		top: 50% !important;
		transform: translateY(-50%) !important;
		flex: none !important;
		width: auto !important;
		min-width: 0 !important;
		pointer-events: none !important;
	}
	/* UL: Flex mit justify-content: center - Nav-Items bildschirmzentriert.
	   KEINE Spacer mehr, KEIN order-Trick fuer den Store. Der Store wird
	   stattdessen per position: absolute aus dem Flex-Fluss rausgenommen
	   und rechts geparkt (siehe unten). Dadurch beeinflusst der Store die
	   Zentrierung der Nav-Items NICHT mehr - sie sind echt bildschirmmittig. */
	body.customer #id_topbar #id_menu ul {
		display: flex !important;
		align-items: center !important;
		justify-content: center !important;
		width: 100% !important;
		padding: 0 !important;
		margin: 0 !important;
		list-style: none;
		gap: 0;
		pointer-events: none !important;
		position: relative;
	}
	/* Nav-Items: pointer-events wieder aktivieren. Der Bereich am linken
	   UL-Rand (0-Nav-Anfang) hat pointer-events: none - Klicks aufs Logo
	   gehen durch. */
	body.customer #id_topbar #id_menu ul > li {
		pointer-events: auto !important;
	}
	/* Store-<li> aus dem Flex-Fluss RAUSnehmen -> nimmt keinen Platz mehr
	   in der Nav-Zentrierung ein. position: absolute; right: 0 (= rechter
	   UL-Rand = 32px vom Bildschirmrand). top: 50% + translateY(-50%) fuer
	   vertikale Zentrierung im UL (dessen Hoehe = Nav-Item-Hoehe). */
	body.customer #id_topbar #id_menu ul > li.account-dropdown,
	body.customer #id_topbar #id_menu ul > li:has(> span.store.not-mobile) {
		position: absolute !important;
		right: 0 !important;
		top: 50% !important;
		transform: translateY(-50%) !important;
		padding-right: 0 !important;
		margin: 0 !important;
	}
}

#id_topbar #id_menu ul {
	display: flex;
	align-items: center;
	gap: 0;
	margin: 0;
	padding: 0;
	list-style: none;
	justify-content: flex-end;
	flex-wrap: nowrap;
}

#id_topbar #id_menu ul li {
	margin: 0;
	padding: 0 14px;
	position: relative;
	white-space: nowrap;
}

#id_topbar #id_menu ul li a {
	color: var(--text);
	text-decoration: none !important;
	text-transform: uppercase;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	padding: 18px 0;
	display: inline-block;
	border-bottom: 1px solid transparent;
	transition: color .15s, border-color .15s;
	white-space: nowrap;
}
#id_topbar #id_menu ul li a:hover {
	color: var(--accent);
	text-decoration: none !important;
}
#id_topbar #id_menu ul li a.active {
	color: var(--accent);
	border-bottom-color: var(--accent);
	text-decoration: none !important;
}

/* Haupt-Navigation: animierte Unterstreichung (laeuft beim Hover von links
   nach rechts auf) statt statischer Border. Die Linie sitzt naeher am Text
   (bottom: 8px statt am unteren Rand der 18px-Padding-Box). */
#id_topbar #id_menu ul li.nav-main a {
	position: relative;
	border-bottom: none;
}
#id_topbar #id_menu ul li.nav-main a::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 8px;
	height: 2px;
	background: var(--accent);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform .28s ease;
}
#id_topbar #id_menu ul li.nav-main a:hover::after,
#id_topbar #id_menu ul li.nav-main a.active::after {
	transform: scaleX(1);
}

/* "Handlung erforderlich" (> 0): Menuepunkt orange + Badge mit Anzahl. */
#id_topbar #id_menu ul li.nav-main a.has-action {
	color: var(--status-warn);
}
#id_topbar #id_menu ul li.nav-main a.has-action::after {
	background: var(--status-warn);
}
#id_topbar #id_menu ul li.nav-main a.has-action:hover {
	color: var(--status-warn);
}
#id_topbar #id_menu ul li.nav-main a .nav-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 18px;
	height: 18px;
	margin-left: 7px;
	padding: 0;
	border-radius: 50%;
	background: var(--status-warn);
	color: #fff;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0;
	line-height: 1;
	vertical-align: middle;
	box-sizing: border-box;
	flex: none;
}

/* User-Pill rechts */
#id_topbar .topbar-user,
#id_topbar .account-trigger {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 6px 10px;
	border-radius: 10px;
	border: 1px solid var(--border-card);
	background: var(--bg-card);
	color: var(--text);
}
#id_topbar .topbar-bell {
	width: 36px;
	height: 36px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	border: 1px solid var(--border-card);
	color: var(--text);
	position: relative;
}
#id_topbar .topbar-bell .badge {
	position: absolute;
	top: -4px; right: -4px;
	min-width: 16px; height: 16px;
	border-radius: 50%;
	background: var(--badge-bg);
	color: #fff;
	font-size: 10px;
	font-weight: 700;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0 4px;
}


/* ---------------------------------------------------------------
   5. Section / Module / Inner
   --------------------------------------------------------------- */
.section {
	padding-top: 32px;
	background: transparent;
}
.module { padding-top: 8px; }


/* ---------------------------------------------------------------
   6. Headings
   --------------------------------------------------------------- */
h1, h2, h3, h4, h5, h6 { color: var(--text); }
h1 {
	font-size: 2rem;
	font-weight: 700;
	letter-spacing: 0.02em;
}


/* ---------------------------------------------------------------
   7. Form elements - dark variant
   --------------------------------------------------------------- */
input[type="text"],
input[type="email"],
input[type="number"],
input[type="password"],
input[type="search"],
input[type="tel"],
input[type="url"],
input[type="date"],
input[type="time"],
select,
textarea {
	background: var(--bg-card) !important;
	color: var(--text) !important;
	border: 1px solid var(--border-card) !important;
	border-radius: var(--radius-card-sm) !important;
	padding: 14px 16px !important;
	box-shadow: none !important;
	font-size: 0.95rem;
	width: 100%;
	box-sizing: border-box;
}
/* Natives Kalender-Icon des Date-/Time-Inputs weiss faerben (Default ist
   schwarz -> auf dunklem Grund unsichtbar). invert(1) macht schwarz -> weiss. */
input[type="date"]::-webkit-calendar-picker-indicator,
input[type="time"]::-webkit-calendar-picker-indicator {
	filter: invert(1);
	opacity: 0.8;
	cursor: pointer;
}

input::placeholder,
textarea::placeholder {
	color: var(--text-dim) !important;
	opacity: 1;
}

input:focus,
select:focus,
textarea:focus {
	border-color: var(--accent) !important;
	box-shadow: 0 0 0 3px var(--accent-soft-bg) !important;
	outline: none !important;
}

select {
	-webkit-appearance: none;
	appearance: none;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'><path d='M1 1.5L6 6.5L11 1.5' stroke='%237ad7c5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") !important;
	background-repeat: no-repeat !important;
	background-position: right 14px center !important;
	padding-right: 38px !important;
}

select option {
	background: var(--bg-elev);
	color: var(--text);
}

.form-group {
	position: relative;
	margin-bottom: 16px;
}
.form-label {
	color: var(--text-muted) !important;
	font-weight: 400;
}
.focused .form-label,
.has-value .form-label {
	color: var(--accent) !important;
}

/* checkboxes / radios visible on dark bg */
input[type="checkbox"],
input[type="radio"] {
	accent-color: var(--accent);
	width: auto !important;
	padding: 0 !important;
}


/* ---------------------------------------------------------------
   8. Buttons - vereinheitlicht auf Layout-Stile
   Es existieren NUR diese drei Varianten:
     - Primary  (default .btn)     : Teal Pill, weisser Text
     - Outline  (.btn-outline)     : Transparent + Teal-Border, Teal-Text
     - Danger   (.btn-red, etc.)   : Roter Pill, weisser Text
   Alle Sonder-Varianten (orange, lila, pink, grau, weiss-flip)
   werden auf Primary normalisiert.
   --------------------------------------------------------------- */
.btn,
input[type="submit"],
button.btn {
	background-color: var(--btn-bg) !important;
	background-image: none !important;
	background-repeat: no-repeat !important;
	color: var(--btn-text) !important;
	border: 0 !important;
	border-radius: var(--radius-btn) !important;
	padding: 13px 26px !important;
	font-weight: 700 !important;
	letter-spacing: 0.04em !important;
	text-transform: uppercase !important;
	font-size: 0.8rem !important;
	cursor: pointer;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 8px;
	transition: background-color .15s, border-color .15s, color .15s;
	text-decoration: none !important;
	text-shadow: none !important;
	box-shadow: none !important;
}
.btn:hover,
input[type="submit"]:hover,
button.btn:hover {
	background-color: var(--btn-bg-hover) !important;
	color: var(--btn-text) !important;
	border-color: transparent !important;
}

/* Groessen-Modifier */
.btn.btn-small { padding: 9px 16px !important; font-size: 0.72rem !important; }
.btn.btn-big   { padding: 16px 30px !important; font-size: 0.9rem !important; }

/* --- Outline (sekundaer) --- */
.btn.btn-outline {
	background-color: transparent !important;
	border: 1px solid var(--accent) !important;
	color: var(--accent) !important;
}
.btn.btn-outline:hover {
	background-color: var(--btn-bg) !important;
	color: #fff !important;
	border-color: var(--btn-bg) !important;
}

/* --- Danger (rot) - fuer Loeschen/Ablehnen/Reset --- */
.btn.btn-red,
.btn.btn-delete-order,
.btn.btn-complete.customerlogout,
.btn.rejected,
.btn.btn-reset {
	background-color: var(--status-danger) !important;
	color: #fff !important;
}
.btn.btn-red:hover,
.btn.btn-delete-order:hover,
.btn.btn-complete.customerlogout:hover,
.btn.rejected:hover,
.btn.btn-reset:hover {
	background-color: #c91f1f !important;
	color: #fff !important;
}

/* --- Aktiv-Zustand (z.B. Filter-Pills) --- */
.btn.active,
.btn.active:hover {
	background-color: var(--bg-elev) !important;
	color: var(--accent) !important;
	cursor: default;
	border: 1px solid var(--border-strong) !important;
	text-decoration: none !important;
}

/* --- Approved (Erfolg) bleibt im Layout-Look (dunkelgruen) --- */
.btn.approved {
	background-color: var(--btn-bg) !important;
	color: #fff !important;
}

/* Confirm/Reject-Buttons (Agentur-Auftrag-Liste): beim Hover soll NUR der
   Button-Hintergrund abdunkeln - das Icon bleibt weiss (vorher faerbte sich
   das Icon gruen/rot, weil das SVG auf die farbige Variante wechselte). */
.btn.approved:hover {
	background-color: #17998a !important;
	color: #fff !important;
}
.btn.approved:hover .icon.approved {
	background-image: url('../images/icons/approved-invert.svg') !important;
}
.btn.rejected:hover .icon.rejected {
	background-image: url('../images/icons/rejected-invert.svg') !important;
}

/* --- Alle Icon-Buttons: KEIN Hintergrundbild mehr (Layout-Look pur) ---
   Das eigentliche Icon wird ggf. ueber Markup gerendert. */
.btn.btn-add,
.btn.btn-plus,
.btn.btn-confirm,
.btn.btn-qty,
.btn.btn-download,
.btn.btn-send,
.btn.btn-email,
.btn.btn-print,
.btn.btn-save,
.btn.btn-question,
.btn.btn-view-edit,
.btn-phone {
	background-image: none !important;
	background-color: var(--btn-bg) !important;
	color: #fff !important;
	padding: 13px 26px !important;
}
.btn.btn-add:hover,
.btn.btn-plus:hover,
.btn.btn-confirm:hover,
.btn.btn-qty:hover,
.btn.btn-download:hover,
.btn.btn-send:hover,
.btn.btn-email:hover,
.btn.btn-print:hover,
.btn.btn-save:hover,
.btn.btn-question:hover,
.btn.btn-view-edit:hover,
.btn-phone:hover {
	background-color: var(--btn-bg-hover) !important;
	color: #fff !important;
}

/* --- Onboarding-Status-Buttons (Admin): farbliche Bedeutung beibehalten ---
   Pill-Form, kein Hintergrundbild-Pattern, Farbe je Status. */
.btn.btn-onboarding-status {
	background-image: none !important;
	color: #fff !important;
	padding: 10px 18px !important;
	text-align: left !important;
}
.btn.btn-onboarding-status.onboarding-red    { background-color: var(--status-danger)  !important; }
.btn.btn-onboarding-status.onboarding-yellow { background-color: var(--status-warn)    !important; }
.btn.btn-onboarding-status.onboarding-blue   { background-color: var(--status-info)    !important; }
.btn.btn-onboarding-status.onboarding-green  { background-color: var(--status-success) !important; }
.btn.btn-onboarding-status:hover {
	opacity: 0.85;
	color: #fff !important;
}

/* btn-view-edit braucht trotzdem die kompakte Quadrat-Form (Tabellen-Aktion) */
.btn.btn-view-edit {
	width: 40px !important;
	height: 40px !important;
	padding: 0 !important;
	border-radius: 50% !important;
}

/* Icon-Only-Button: quadratisch, kompakt, nur ein SVG drin (kein Text). */
.btn.btn-icon-only {
	width: 34px !important;
	height: 34px !important;
	padding: 0 !important;
	gap: 0 !important;
	border-radius: var(--radius-btn) !important;
}
.btn.btn-icon-only svg {
	width: 16px !important;
	height: 16px !important;
	display: block;
}
.btn.btn-icon-only.btn-small {
	width: 30px !important;
	height: 30px !important;
}
.btn.btn-icon-only.btn-small svg { width: 14px !important; height: 14px !important; }
/* Stellt sicher, dass <nobr>/Text-Knoten innerhalb des Icon-Buttons nicht rendern */
.btn.btn-icon-only nobr { display: none !important; }

/* Rote Variante: Logout-Icon-Button */
.btn.btn-icon-only.btn-logout-icon {
	background: var(--status-danger, #be1622) !important;
	border-color: var(--status-danger, #be1622) !important;
	color: #fff !important;
}
.btn.btn-icon-only.btn-logout-icon svg { stroke: #fff !important; }
.btn.btn-icon-only.btn-logout-icon:hover {
	background: #9c121c !important;
	border-color: #9c121c !important;
}

/* Inner span / icon Farben in den Buttons immer weiss */
.btn span,
.btn .icon,
input[type="submit"] span {
	color: #fff !important;
}
.btn.btn-outline span,
.btn.btn-outline .icon { color: var(--accent) !important; }
.btn.btn-outline:hover span,
.btn.btn-outline:hover .icon { color: #fff !important; }

/* btn-circle: kompakter Run-/Icon-Button - Layout-Pill in klein */
.btn.btn-circle {
	background-color: var(--btn-bg) !important;
	color: #fff !important;
	padding: 10px 18px !important;
}

/* btn-resend (Wiederholversand): wie Primary */
.btn-resend {
	background-color: var(--btn-bg) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: var(--radius-btn) !important;
}
.btn-resend:hover { background-color: var(--btn-bg-hover) !important; color: #fff !important; }

/* Disabled */
.btn[disabled],
.btn.disabled,
input[type="submit"][disabled] {
	opacity: 0.5 !important;
	cursor: not-allowed !important;
}


/* ---------------------------------------------------------------
   9. Tables
   --------------------------------------------------------------- */
table { width: 100%; border-collapse: collapse; }

table th {
	color: var(--text-muted);
	text-transform: uppercase;
	font-size: 0.72rem;
	letter-spacing: 0.08em;
	font-weight: 700;
	text-align: left;
	padding: 14px 12px;
	border-bottom: 1px solid var(--border-divider) !important;
}
table td {
	padding: 14px 12px;
	border-bottom: 1px solid var(--border-divider) !important;
	vertical-align: middle;
	color: var(--text);
	font-size: 0.9rem;
}
table tbody tr:hover { background: var(--bg-hover); }
table tbody tr:last-child td { border-bottom: 0 !important; }

table.responsive-table { width: 100%; }

/* ---------------------------------------------------------------
   9b. Breite Tabellen in Karten horizontal scrollbar
   ---------------------------------------------------------------
   Gilt jetzt auf ALLEN Viewports (nicht nur <= 1280px), weil
   uebersichtsseiten wie /order auch bei 1400-1600px breiteren
   Viewports noch Spalten abschneiden. Ohne Media-Query bleibt die
   Tabelle ihre natuerliche Breite, der Container scrollt horizontal.
   iPad (Landscape 1024px, Portrait 768px) und kleinere Tablet/Phone
   Viewports: Tabellen wie /admin/customers (17 Spalten) ueberlaufen
   die Karte rechts und sind ohne Scroll nicht erreichbar.
   Pure-CSS-Loesung via :has() - kein Markup-Wrapper noetig. Greift
   nur dort, wo ein <table> DIREKT in der Card-Surface sitzt. Tabellen
   mit Klasse "responsive-table" sind ausgenommen (eigenes Card-Layout
   unter 1024px, siehe stylesheet.css). */
.box-inner:has(> table:not(.responsive-table)),
.box-inner:has(> form > table:not(.responsive-table)),
.outer-box-inner:has(> table:not(.responsive-table)) {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}
.box-inner > table:not(.responsive-table),
.box-inner > form > table:not(.responsive-table),
.outer-box-inner > table:not(.responsive-table) {
	width: max-content;
	min-width: 100%;
}
/* Duenne, sichtbare Scrollbar (WebKit/Blink). */
.box-inner:has(> table:not(.responsive-table))::-webkit-scrollbar,
.box-inner:has(> form > table:not(.responsive-table))::-webkit-scrollbar,
.outer-box-inner:has(> table:not(.responsive-table))::-webkit-scrollbar {
	height: 8px;
}
.box-inner:has(> table:not(.responsive-table))::-webkit-scrollbar-thumb,
.box-inner:has(> form > table:not(.responsive-table))::-webkit-scrollbar-thumb,
.outer-box-inner:has(> table:not(.responsive-table))::-webkit-scrollbar-thumb {
	background: rgba(255, 255, 255, 0.18);
	border-radius: 4px;
}
.box-inner:has(> table:not(.responsive-table))::-webkit-scrollbar-track,
.box-inner:has(> form > table:not(.responsive-table))::-webkit-scrollbar-track,
.outer-box-inner:has(> table:not(.responsive-table))::-webkit-scrollbar-track {
	background: transparent;
}

/* Auch "responsive-table"-Tabellen (Auftrags-Uebersicht, etc.) horizontal
   scrollbar machen - aber NUR oberhalb des Card-Layout-Breakpoints
   (>1024px). Unterhalb wandelt sich die Tabelle in das Card-Layout
   (stylesheet.css @media max-width:1024px), dort ist kein horizontal-
   Scroll noetig. Symptom: /order hat Statusspalte ab ca. 1477px
   Viewport-Breite abgeschnitten, weil die Status-Pille mit white-space:
   nowrap aus der Zellenbreite ausreisst. */
@media (min-width: 1025px) {
	.box-inner:has(> table.responsive-table),
	.box-inner:has(> form > table.responsive-table),
	.outer-box-inner:has(> table.responsive-table) {
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}
	.box-inner > table.responsive-table,
	.box-inner > form > table.responsive-table,
	.outer-box-inner > table.responsive-table {
		width: max-content;
		min-width: 100%;
	}
	/* Tabellen in einem Toggle-Zwischen-Div (#id_orders_content_temp,
	   z.B. Anfragen "Weitere Anfragen", Haendler-Auftragsliste): die
	   :has(>table)-Regeln oben greifen dort nicht (Tabelle ist kein
	   direktes box-inner-Kind) -> Inhalt lief rechts aus der Karte,
	   Buttons am Zeilenende unerreichbar. Das Div scrollt selbst. */
	#id_orders_content_temp {
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}
	#id_orders_content_temp > table.responsive-table {
		width: max-content;
		min-width: 100%;
	}
	#id_orders_content_temp::-webkit-scrollbar { height: 8px; }
	#id_orders_content_temp::-webkit-scrollbar-thumb {
		background: rgba(255, 255, 255, 0.18);
		border-radius: 4px;
	}
	#id_orders_content_temp::-webkit-scrollbar-track { background: transparent; }
	.box-inner:has(> table.responsive-table)::-webkit-scrollbar,
	.box-inner:has(> form > table.responsive-table)::-webkit-scrollbar,
	.outer-box-inner:has(> table.responsive-table)::-webkit-scrollbar {
		height: 8px;
	}
	.box-inner:has(> table.responsive-table)::-webkit-scrollbar-thumb,
	.box-inner:has(> form > table.responsive-table)::-webkit-scrollbar-thumb,
	.outer-box-inner:has(> table.responsive-table)::-webkit-scrollbar-thumb {
		background: rgba(255, 255, 255, 0.18);
		border-radius: 4px;
	}
	.box-inner:has(> table.responsive-table)::-webkit-scrollbar-track,
	.box-inner:has(> form > table.responsive-table)::-webkit-scrollbar-track,
	.outer-box-inner:has(> table.responsive-table)::-webkit-scrollbar-track {
		background: transparent;
	}
}


/* ---------------------------------------------------------------
   10. Section Header with Icon-Pin
   --------------------------------------------------------------- */
.card-header,
.section-header {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-bottom: 20px;
}
.card-header-icon {
	width: 42px;
	height: 42px;
	border-radius: 10px;
	background: var(--accent-soft-bg);
	color: var(--accent);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 42px;
}
.card-header-icon svg { width: 20px; height: 20px; }

.card-header-text { flex: 1; min-width: 0; }
.card-header-title {
	font-size: 1rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin: 0;
	color: var(--text);
}
.card-header-sub {
	color: var(--text-muted);
	font-size: 0.85rem;
	margin-top: 3px;
}
.card-header-right {
	margin-left: auto;
}
.card-header-right a {
	color: var(--accent);
	text-decoration: none;
	font-size: 0.78rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
}


/* ---------------------------------------------------------------
   11. Hero Banner (Brand / Welcome / Campaign)
   --------------------------------------------------------------- */
.hero-banner {
	position: relative;
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	overflow: hidden;
	min-height: 280px;
	background: var(--bg-card);
}
.hero-banner-media {
	position: absolute;
	inset: 0;
	z-index: 0;
}
.hero-banner-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.hero-banner-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.45) 60%, transparent 100%);
	z-index: 1;
}
.hero-banner-content {
	position: relative;
	padding: 40px;
	z-index: 2;
}
.hero-banner-eyebrow {
	color: var(--accent);
	text-transform: uppercase;
	letter-spacing: 0.12em;
	font-size: 0.78rem;
	font-weight: 700;
}
.hero-banner-title {
	font-size: 2.2rem;
	font-weight: 700;
	margin: 12px 0 12px;
	line-height: 1.15;
}
.hero-banner-text {
	color: var(--text-muted);
	max-width: 460px;
	margin-bottom: 22px;
}

.hero-info-strip {
	display: flex;
	gap: 36px;
	flex-wrap: wrap;
	padding: 18px 40px;
	border-top: 1px solid var(--border-divider);
	background: rgba(0,0,0,0.55);
	position: relative;
	z-index: 2;
}
.hero-info-strip .info-item dt,
.hero-info-strip .info-item-label {
	color: var(--text-muted);
	text-transform: uppercase;
	font-size: 0.72em;
	letter-spacing: 0.08em;
}
.hero-info-strip .info-item dd,
.hero-info-strip .info-item-value {
	color: var(--text);
	font-weight: 600;
	margin: 4px 0 0;
}


/* ---------------------------------------------------------------
   12. Filter-Bar (pills + search)
   --------------------------------------------------------------- */
.filter-bar {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
	align-items: center;
	margin-bottom: 18px;
}
.filter-pill,
.filter-bar select {
	/* background-color statt background-shorthand, damit das globale
	   background-image (Dropdown-Pfeil) von select{...} (Z. 382) erhalten
	   bleibt - sonst kein Pfeil bei .filter-bar select. */
	background-color: var(--bg-card) !important;
	border: 1px solid var(--border-card) !important;
	color: var(--text) !important;
	padding: 11px 18px !important;
	border-radius: var(--radius-chip) !important;
	font-size: 0.85rem !important;
	cursor: pointer;
	min-width: 160px;
	width: auto !important;
}
.filter-pill[data-active="true"] {
	border-color: var(--accent) !important;
	color: var(--accent) !important;
}
.filter-bar select {
	padding-right: 38px !important;
}

.filter-checkbox {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 14px;
	color: var(--text);
	font-size: 0.85rem;
	border: 1px solid var(--border-card);
	border-radius: var(--radius-chip);
	background: var(--bg-card);
	cursor: pointer;
}
.filter-checkbox input[type="checkbox"] { margin: 0; }

.filter-search {
	flex: 1;
	min-width: 220px;
	position: relative;
}
.filter-search input[type="text"],
.filter-search input[type="search"] {
	padding-left: 40px !important;
	border-radius: var(--radius-chip) !important;
}
.filter-search::before {
	content: "";
	position: absolute;
	left: 14px;
	top: 50%;
	transform: translateY(-50%);
	width: 16px; height: 16px;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'><circle cx='7' cy='7' r='5' stroke='%238da3a0' stroke-width='1.4'/><path d='M11 11L14 14' stroke='%238da3a0' stroke-width='1.4' stroke-linecap='round'/></svg>");
	background-repeat: no-repeat;
	z-index: 1;
	pointer-events: none;
}


/* ---------------------------------------------------------------
   13. Stat-Tile (action boxes / KPIs)
   --------------------------------------------------------------- */
.stat-tile {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px 20px;
	background: var(--bg-card);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	position: relative;
	transition: border-color .15s, transform .15s;
	text-decoration: none;
	color: var(--text);
}
.stat-tile:hover {
	border-color: var(--accent);
	color: var(--text);
}
.stat-tile-icon {
	width: 42px;
	height: 42px;
	border-radius: 10px;
	background: var(--accent-soft-bg);
	color: var(--accent);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 42px;
}
.stat-tile-icon svg { width: 20px; height: 20px; }
.stat-tile-body { flex: 1; min-width: 0; }
.stat-tile-label {
	color: var(--text-muted);
	text-transform: uppercase;
	font-size: 0.72rem;
	letter-spacing: 0.08em;
	font-weight: 700;
}
.stat-tile-value {
	font-size: 1rem;
	font-weight: 600;
	margin-top: 4px;
	color: var(--text);
}
.stat-tile-cta {
	color: var(--accent);
	font-size: 0.8rem;
	margin-top: 6px;
	display: inline-block;
}
.stat-tile-arrow {
	margin-left: auto;
	color: var(--text-muted);
	font-size: 1.1rem;
	flex: 0 0 16px;
}


/* ---------------------------------------------------------------
   14. Order-Card (Auftraege Grid)
   --------------------------------------------------------------- */
.order-card {
	background: var(--bg-card);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	padding: 18px 20px;
	display: flex;
	flex-direction: column;
	min-height: 100%;
}
.order-card-head {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	margin-bottom: 4px;
}
.order-card-title {
	font-weight: 700;
	font-size: 0.95rem;
	color: var(--text);
}
.order-card-brand {
	color: var(--text-muted);
	font-size: 0.85rem;
	margin-bottom: 12px;
}
.order-card-meta {
	display: flex;
	gap: 14px;
	color: var(--text-muted);
	font-size: 0.78rem;
	flex-wrap: wrap;
	margin-bottom: 14px;
}
.order-card-meta-item {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.order-card-stats {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
	padding: 12px 0;
	border-top: 1px solid var(--border-divider);
	border-bottom: 1px solid var(--border-divider);
}
.order-card-stat-label {
	color: var(--text-muted);
	font-size: 0.7rem;
	text-transform: uppercase;
	letter-spacing: 0.06em;
}
.order-card-stat-value {
	font-weight: 700;
	margin-top: 2px;
	color: var(--text);
}
.order-card-actions {
	display: flex;
	gap: 8px;
	align-items: center;
	margin-top: 12px;
	flex-wrap: wrap;
}
.order-card-actions .btn-small { padding: 9px 14px; }
.order-card-kebab {
	margin-left: auto;
	width: 32px;
	height: 32px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 6px;
	color: var(--text-muted);
	background: transparent;
	border: 0;
	cursor: pointer;
}
.order-card-kebab:hover {
	background: var(--bg-hover);
	color: var(--text);
}


/* ---------------------------------------------------------------
   15. Request-Row (Anfragen-Tabelle)
   --------------------------------------------------------------- */
.request-table th,
.request-table td {
	padding: 16px 12px;
}
.request-thema {
	display: flex;
	align-items: center;
	gap: 12px;
}
.request-thema-icon {
	width: 36px;
	height: 36px;
	border-radius: 8px;
	background: var(--accent-soft-bg);
	color: var(--accent);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 36px;
}
.request-thema-icon svg { width: 18px; height: 18px; }
.request-thema-title { font-weight: 600; color: var(--text); }
.request-thema-sub { color: var(--text-muted); font-size: 0.8rem; margin-top: 2px; }


/* ---------------------------------------------------------------
   16. Pill-Chips (status, filter, tag)
   --------------------------------------------------------------- */
.pill-chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 12px;
	border-radius: var(--radius-chip);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	white-space: nowrap;
}
.pill-chip.is-success { background: var(--status-success-bg); color: #5ed688; }
.pill-chip.is-danger  { background: var(--status-danger-bg);  color: #ff6c6c; }
.pill-chip.is-warn    { background: var(--status-warn-bg);    color: #ffac68; }
.pill-chip.is-info    { background: var(--status-info-bg);    color: #75c8e8; }
.pill-chip.is-accent  { background: var(--accent-soft-bg);    color: var(--accent-soft-text); }
.pill-chip.is-neutral { background: var(--bg-elev); color: var(--text); }
.pill-chip.is-outline { border: 1px solid var(--border-strong); color: var(--text-muted); background: transparent; }

.dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	display: inline-block;
}
.dot.dot-success { background: var(--status-success); }
.dot.dot-danger  { background: var(--status-danger); }
.dot.dot-warn    { background: var(--status-warn); }


/* ---------------------------------------------------------------
   17. Alert-Callout (Offene Aktionen)
   --------------------------------------------------------------- */
.alert-callout {
	border: 1px solid var(--status-warn);
	background: rgba(240,140,46,0.06);
	border-radius: var(--radius-card);
	padding: 20px 24px;
	margin-bottom: 20px;
}
.alert-callout .card-header-icon {
	background: var(--status-warn-bg);
	color: var(--status-warn);
}
.alert-callout .alert-callout-count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 22px;
	height: 22px;
	border-radius: 50%;
	background: var(--status-warn);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 700;
	margin-left: 4px;
	padding: 0 6px;
}


/* ---------------------------------------------------------------
   18. Misc helpers
   --------------------------------------------------------------- */
.text-muted { color: var(--text-muted) !important; }
.text-dim { color: var(--text-dim) !important; }
.text-accent { color: var(--accent) !important; }

.section-divider {
	border: 0;
	border-top: 1px solid var(--border-divider);
	margin: 24px 0;
}

/* legacy color classes seen in stylesheet -> map to tokens */
.statustext { color: var(--text-muted); }

/* Avatar / Initials */
.avatar-initials {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: var(--bg-elev);
	border: 1px solid var(--border-card);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--text);
	font-weight: 700;
	font-size: 0.78rem;
	letter-spacing: 0.04em;
}


/* ---------------------------------------------------------------
   19. Daterangepicker / Fancybox / Slick - dark adjustments
   --------------------------------------------------------------- */
.daterangepicker {
	background: var(--bg-elev) !important;
	border: 1px solid var(--border-card) !important;
	color: var(--text) !important;
}
.daterangepicker td.in-range { background: var(--accent-soft-bg) !important; color: var(--text) !important; }
.daterangepicker td.active,
.daterangepicker td.active:hover { background: var(--accent) !important; color: #fff !important; }
.daterangepicker .calendar-table th,
.daterangepicker .calendar-table td { color: var(--text); }
.daterangepicker .calendar-table { background: var(--bg-elev); border: 0; }

.fancybox-content {
	background: var(--bg-card) !important;
	border: 1px solid var(--border-card) !important;
	border-radius: var(--radius-card) !important;
	color: var(--text) !important;
}

.slick-dots li button:before { color: var(--text-muted) !important; opacity: .4; }
.slick-dots li.slick-active button:before { color: var(--accent) !important; opacity: 1; }


/* ---------------------------------------------------------------
   20. Mobile menu drawer (Customer + Admin) - black + green
   --------------------------------------------------------------- */
@media (max-width: 768px) {
	#id_topbar { padding: 10px 16px; }
	body.customer #id_menu,
	body.admin #id_menu {
		background: var(--bg-elev) !important;
		border-left: 1px solid var(--border-card);
	}
	body.customer #id_menu ul li a,
	body.admin #id_menu ul li a {
		border-bottom-color: var(--border-divider) !important;
	}
	#id_topbar .mobile-menu-toggle span {
		background: var(--text) !important;
	}
	/* Admin-Drawer scrollbar machen: iOS Safari braucht
	   -webkit-overflow-scrolling: touch und ein zuverlaessiges
	   Hoehen-Modell. `height: 100vh` in stylesheet.css bricht auf
	   iOS mit sich einklappender URL-Leiste - wir clampen den Drawer
	   stattdessen zwischen top: 0 und bottom: 0 und lassen den Browser
	   die Hoehe berechnen (funktioniert auf allen mobilen Browsern).
	   overscroll-behavior: contain verhindert das Zurueckscrollen des
	   Bodies, wenn der User im Drawer bis zum Anschlag scrollt. */
	body.admin #id_menu {
		top: 0 !important;
		bottom: 0 !important;
		height: auto !important;
		max-height: 100vh !important;
		overflow-y: auto !important;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;
	}
	/* Analog fuer den Customer-Drawer - selbes Problem, selbe Loesung. */
	body.customer #id_menu {
		top: 0 !important;
		bottom: 0 !important;
		height: auto !important;
		max-height: 100vh !important;
		overflow-y: auto !important;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;
	}
}


/* ---------------------------------------------------------------
   21. Footer / box-footer
   --------------------------------------------------------------- */
.box-footer {
	border-top: 0 !important;
	padding-top: 24px;
	margin-top: 32px;
	color: var(--text-muted);
}
#id_footer {
	/* Footer-Layout analog zur Topbar: links Copyright, rechts Website,
	   gleiches horizontales Padding wie #id_topbar (32px). Kein .inner-
	   Squeeze mehr (vorher 98% / max 1580px -> Footer "schwebte" in der
	   Mitte, waehrend die Topbar von 0..100% reichte). */
	border-top: 0 !important;
	padding: 28px 32px !important;
	margin-top: 32px;
	color: var(--text-muted);
}
#id_footer .inner {
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
}
@media (min-width: 769px) {
	#id_footer .inner {
		display: flex;
		align-items: center;
	}
	#id_footer .footer-section { width: 33.33%; }
	#id_footer .footer-section.footer-left { text-align: left; }
	#id_footer .footer-section.footer-left ul li { margin: 0; padding: 0; }
}
#id_footer a { color: var(--text-muted); }
#id_footer a:hover { color: var(--accent); }


/* ---------------------------------------------------------------
   22. Back-button "ZUR STARTSEITE" pill
   --------------------------------------------------------------- */
.back-pill {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 9px 16px;
	border: 1px solid var(--border-strong);
	color: var(--text) !important;
	background: var(--bg-card);
	border-radius: var(--radius-chip);
	text-decoration: none;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	margin-bottom: 18px;
}
.back-pill:hover {
	border-color: var(--accent);
	color: var(--accent) !important;
}


/* ---------------------------------------------------------------
   23. Grid utility (responsive)
   --------------------------------------------------------------- */
.theme-grid { display: grid; gap: 16px; }
.theme-grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
.theme-grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.theme-grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
.theme-grid.cols-5 { grid-template-columns: repeat(5, 1fr); }

@media (max-width: 1024px) {
	.theme-grid.cols-5,
	.theme-grid.cols-4 { grid-template-columns: repeat(2, 1fr); }
	.theme-grid.cols-3 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.theme-grid.cols-2,
	.theme-grid.cols-3,
	.theme-grid.cols-4,
	.theme-grid.cols-5 { grid-template-columns: 1fr; }
}


/* ---------------------------------------------------------------
   24. Button-box / Icon-box overrides (flat black + thin green)
   --------------------------------------------------------------- */
.button-box,
.headline-box {
	background: var(--bg-card) !important;
	border: 1px solid var(--border-card) !important;
	border-radius: var(--radius-card) !important;
}
.button-box:hover,
.icon-box:hover {
	border-color: var(--accent) !important;
}
.icon-box {
	background: var(--bg-card) !important;
	border: 1px solid var(--border-card) !important;
	border-radius: var(--radius-card) !important;
}

/* 3-Action-Boxen auf dem Dashboard: Icon-Tile links statt Hintergrundbild */
.dashboard-actions-3 .button-box {
	padding: 16px 44px 16px 20px !important;
	position: relative;
}
/* Icon-Tile als button-box::before (damit das h3-Icon DARUEBER liegt).
   BG = box-eigene --tile-Farbe (Indigo/Mauve/Blau bzw. Orange bei
   .has-action), Fallback auf --badge-bg (Tuerkis). */
.dashboard-actions-3 .dashboard-buttons a.button-box::before {
	content: '';
	position: absolute;
	left: 20px;
	top: 16px;
	width: 42px;
	height: 42px;
	border-radius: 50%; /* Styleguide: Icon-Tiles rund */
	background: var(--tile, var(--badge-bg));
	z-index: 0;
	pointer-events: none;
}
/* H3 mit Icon liegt UEBER dem Tile (z-index: 1) - damit das weisse Icon
   (SVG mit stroke=#fff) im dunkelgruenen Tile sichtbar wird.
   Typografie: gemischte Schreibweise, weiss, Lesegroesse - analog zu
   .dashboard-campaigns-headline h4 ("Meine aktiven Marken" etc.). */
.dashboard-actions-3 .dashboard-buttons a.button-box h3 {
	display: flex !important;
	align-items: center;
	gap: 10px;
	padding-left: 56px !important;
	position: relative;
	z-index: 1;
	background-color: transparent !important;
	background-size: 24px 24px !important;
	background-position: 9px center !important;
	background-repeat: no-repeat !important;
	min-height: 42px;
	text-transform: none !important;
	font-size: 1rem !important;
	letter-spacing: normal !important;
	color: #fff !important;
	font-weight: 700 !important;
	margin-bottom: 0 !important;
}
.dashboard-actions-3 .dashboard-buttons a.button-box h3 span.circle {
	background: var(--badge-bg);
	color: #fff;
	width: 24px;
	height: 24px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	font-size: 0.75rem;
	font-weight: 700;
}
/* Sub-Text unter der Headline: weiss, normale Schriftstaerke, identische
   Groesse wie die p-Unterzeilen der Section-Headlines (.dashboard-campaigns-
   headline p -> 14px / opacity .85). */
.dashboard-actions-3 .dashboard-buttons a.button-box > span {
	display: block !important;
	color: #fff !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	line-height: 1.4 !important;
	opacity: .85;
	margin-bottom: 0;
}
/* "ansehen"-Suffix im H3 - selbe Optik wie die Headline (gemischt, weiss),
   nur etwas kleiner / leichter und mit kleinem Abstand zur Circle-Zahl. */
.dashboard-actions-3 .dashboard-buttons a.button-box h3 span.not-mobile {
	color: #fff !important;
	margin-left: 6px;
	font-size: 0.9rem !important;
	font-weight: 400 !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	opacity: .85;
}

/* Customer-Support-Akkordeon: 5 Spalten mit Icon-Tile + Liste */
.flex-wrapper.flex-teaser.flex-teaser-small .box .box-inner {
	padding: 16px !important;
}
/* Card-Title-Stil der 5 Customer-Support-Boxen-Headlines (Reklamation,
   Bestellung, Ware, Buchhaltung, Sonstiges).
   Icon = kreis-outline wie .hd-icon (klein, --sm-Variante).
   Icon + Headline = WEISS (Styleguide-Regel 6: gleiche Farbe). */
.flex-wrapper.flex-teaser .icon-headline {
	display: flex !important;
	align-items: center;
	gap: 12px;
	margin: 0 0 14px;
	padding: 0 !important;
	background-image: none !important;
	font-size: 1rem !important;
	letter-spacing: normal;
	text-transform: none;
	color: #fff;
	font-weight: 600;
	line-height: 1.25;
}
.flex-wrapper.flex-teaser .icon-headline .dashboard-headline-icon {
	width: 36px;
	height: 36px;
	flex: 0 0 36px;
	border-radius: 50%;
	border: 1px solid currentColor;
	background: rgba(0, 0, 0, .35);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: #fff;
}
.flex-wrapper.flex-teaser .icon-headline .dashboard-headline-icon svg {
	width: 18px;
	height: 18px;
	stroke-width: 1.5;
}
/* generelles Entfernen des background-arrow icons auf .link-list (legacy) */
ul.link-list li a {
	background-image: none !important;
	padding-left: 0 !important;
}
ul.link-list li a:hover { background-image: none !important; }

.flex-wrapper.flex-teaser .link-list,
.flex-wrapper.flex-teaser ul.link-list { list-style: none; padding: 0; margin: 0; }
.flex-wrapper.flex-teaser .link-list li,
.flex-wrapper.flex-teaser ul.link-list li { padding: 0; margin: 0; }
.flex-wrapper.flex-teaser .link-list li a,
.flex-wrapper.flex-teaser ul.link-list li a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 10px 0 !important;
	color: var(--text);
	font-size: 0.85rem;
	text-decoration: none;
	border-bottom: 1px solid var(--border-divider);
	background-image: none !important;
	background-color: transparent !important;
	margin: 0 !important;
}
.flex-wrapper.flex-teaser .link-list li:last-child a,
.flex-wrapper.flex-teaser ul.link-list li:last-child a { border-bottom: 0; }
.flex-wrapper.flex-teaser .link-list li a:hover,
.flex-wrapper.flex-teaser ul.link-list li a:hover {
	color: var(--accent);
	background-image: none !important;
}
.flex-wrapper.flex-teaser .link-list li a::after,
.flex-wrapper.flex-teaser ul.link-list li a::after {
	content: '\203A';
	color: var(--text-dim);
	font-size: 1.1rem;
	line-height: 1;
	flex-shrink: 0;
}
.flex-wrapper.flex-teaser .link-list li a::before,
.flex-wrapper.flex-teaser ul.link-list li a::before { content: none !important; }


/* ---------------------------------------------------------------
   24a. "Nicht das Richtige gefunden?" - Hilfe-Karte am Ende des
        Customer-Support-Akkordeons (Mascot links, Text mittig,
        Outline-Button rechts).
   --------------------------------------------------------------- */
.cs-help-card {
	display: flex;
	align-items: center;
	gap: 22px;
	padding: 18px 24px;
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	background: var(--bg-card);
	margin-top: 24px;
}
.cs-help-card-media {
	flex: 0 0 auto;
	width: 132px;
	height: 84px;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
.cs-help-card-media img {
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
}
.cs-help-card-body { flex: 1 1 auto; min-width: 0; }
.cs-help-card-title {
	font-size: 1rem;
	font-weight: 700;
	color: var(--accent);
	margin: 0 0 4px;
	text-transform: none;
	letter-spacing: 0;
}
.cs-help-card-text {
	margin: 0;
	color: var(--text);
	font-size: 0.85rem;
	line-height: 1.5;
	opacity: 0.92;
}
.cs-help-card-cta {
	flex: 0 0 auto;
	white-space: nowrap;
}

.cs-help-secondary {
	margin-top: 12px;
	text-align: center;
}

@media (max-width: 768px) {
	.cs-help-card {
		flex-direction: column;
		text-align: center;
		gap: 14px;
		padding: 20px 18px;
	}
	.cs-help-card-media { width: 110px; height: 70px; }
	.cs-help-card-cta { width: 100%; }
}


/* ---------------------------------------------------------------
   24b. Kampagne Hero (.dashboard-image)
   --------------------------------------------------------------- */
.dashboard-image {
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	overflow: hidden;
	margin-bottom: 24px;
	background: var(--bg-card);
	background-size: cover;
	background-repeat: no-repeat;
}
.dashboard-image .dashboard-image-inner {
	padding: 40px 48px;
	/* Einheitliches Hero-Format im Haendlerbereich: 1200x320 (3.75:1) -
	   identisch zu Dashboard-Top-Hero und Marken-Modals. Waechst bei mehr
	   Inhalt (Logo + Titel + KPI-Boxen) automatisch ueber das Format hinaus. */
	aspect-ratio: 1200 / 320;
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-start;
	background-position: right center;
	background-size: cover;
	background-repeat: no-repeat;
}
.dashboard-image .dashboard-image-inner::before {
	content: '';
	position: absolute;
	inset: 0;
	/* Verlauf links dunkel fuer Text-Lesbarkeit, rechts klar fuer Markenbild. */
	background:
		linear-gradient(90deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.65) 35%, rgba(0,0,0,0.10) 70%, rgba(0,0,0,0) 100%),
		linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.30) 100%);
	pointer-events: none;
	z-index: 0;
}
.dashboard-image .dashboard-image-inner > * { position: relative; z-index: 1; }

/* Text-Stack im Hero links: Logo, Eyebrow, Headline, Subline */
.dashboard-image .dashboard-image-inner .campaign-hero-text {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	width: 100%;
	max-width: 55%;
	margin: 0 0 28px 0;
	text-align: left;
}
.dashboard-image .dashboard-image-inner .campaign-hero-text * { text-align: left; }
.dashboard-image .dashboard-image-inner .campaign-hero-logo {
	max-width: 250px !important;
	height: 100px !important;
	width: auto !important;
	margin: 0 0 22px 0 !important;
	display: block;
	filter: drop-shadow(0 2px 8px rgba(0,0,0,0.55));
}
.dashboard-image .dashboard-image-inner .campaign-hero-eyebrow {
	display: inline-block;
	color: var(--accent);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	line-height: 1.2;
	margin: 0 0 14px 0;
}
.dashboard-image .dashboard-image-inner h1,
.dashboard-image .dashboard-image-inner .campaign-hero-title {
	color: #fff;
	font-size: clamp(28px, 4vw, 44px);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -0.01em;
	text-transform: uppercase;
	text-align: left;
	margin: 0 0 12px 0;
	text-shadow: 0 2px 12px rgba(0,0,0,0.45);
}
.dashboard-image .dashboard-image-inner .campaign-hero-subline {
	margin: 0;
	color: rgba(255, 255, 255, 0.85);
	font-size: 16px;
	line-height: 1.45;
	text-align: left;
	text-shadow: 0 1px 8px rgba(0,0,0,0.55);
}
@media (max-width: 900px) {
	/* Einheitlicher Seitenabstand ("innerer Bereich"): .inner steht global
	   auf width:98% -> mobil nur ~4px Rand, Inhalt klebte am Browserrand.
	   Ueberall 16px links/rechts (Referenz: Kampagnen-Seite/Chat). */
	.inner {
		width: calc(100% - 32px) !important;
	}

	/* Zurueck-Navigation mobil: Seiten mit eigenem "Zur Startseite"-Submenu
	   zeigen NUR dieses - der generische Layout-Back ("Zurueck", history.back)
	   wird dann versteckt. Auf Seiten ohne Submenu bleibt der Layout-Back.
	   (Wunsch Mobile-Review: "Zur Startseite" statt doppeltem Zurueck.) */
	.module .flex-wrapper.submenu.not-mobile {
		display: flex !important;
	}
	body:has(.module .flex-wrapper.submenu.not-mobile) .cs-back-wrap {
		display: none !important;
	}

	/* Content-Karten (box-mobile) bekommen mobil Innenabstand - .box-inner
	   steht global auf padding:0, dadurch klebte der Inhalt am Kartenrand
	   (z.B. Passwort aendern, Mitarbeiter einladen). Checkout-Sektionen
	   behalten ihr eigenes Padding. */
	.module .box.box-mobile:not(.checkout-section) > .box-inner {
		padding: 18px 16px !important;
	}

	/* Upload-Dragzones mobil kompakt (gilt ueberall): Icon links, Text
	   rechts daneben, alles linksbuendig - statt 100px-Icon + Zentrierung. */
	.drop_zone {
		text-align: left;
		padding: 14px 16px;
	}
	.upload_link,
	.multiupload #dropzone .upload_link {
		display: flex !important;
		align-items: center;
		min-height: 40px;
		padding: 0 0 0 54px !important;
		margin-bottom: 4px;
		text-align: left !important;
		background-position: left center !important;
		background-size: auto 40px !important;
	}
	span.upload-box-text {
		text-align: left !important;
		padding-left: 54px;
	}
	.dashboard-image .dashboard-image-inner {
		padding: 28px 24px;
		/* Keine fixe Mobile-Hoehe: Hoehe ergibt sich aus dem Inhalt
		   (Logo + Titel + KPI-Boxen), Format-Ratio gilt nur als Minimum. */
	}
	.dashboard-image .dashboard-image-inner .campaign-hero-text {
		max-width: 100%;
		margin-bottom: 20px;
	}
	.dashboard-image .dashboard-image-inner::before {
		background: linear-gradient(180deg, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0.55) 100%);
	}
	.dashboard-image .dashboard-image-inner .campaign-hero-logo {
		max-width: 175px !important;
		height: 70px !important;
		margin: 0 0 14px 0 !important;
	}
}
.dashboard-image .box,
.dashboard-image .box .box-inner {
	background: rgba(0,0,0,0.6) !important;
	border: 0 !important;
	border-radius: 0 !important;
	padding: 18px 40px !important;
}
.dashboard-image .box-not-mobile { width: 100%; }
.dashboard-image .flex-wrapper.facts {
	display: flex !important;
	flex-wrap: nowrap !important;
	justify-content: space-between !important;
	align-items: stretch !important;
	gap: 0 !important;
	width: 100% !important;
}
.dashboard-image .flex-wrapper.facts > div {
	flex: 1 1 0 !important;
	min-width: 0 !important;
	border-right: 1px solid var(--accent) !important;
	padding: 4px 22px !important;
	box-sizing: border-box !important;
}
.dashboard-image .flex-wrapper.facts > div:first-child { padding-left: 0 !important; }
.dashboard-image .flex-wrapper.facts > div:last-child { border-right: 0 !important; padding-right: 0 !important; }
.dashboard-image .flex-wrapper.facts h6 {
	color: var(--text-muted);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-size: 0.7rem;
	margin: 0 0 4px;
	font-weight: 700;
}
.dashboard-image .flex-wrapper.facts h4 {
	color: #fff;
	font-size: 0.9rem;
	margin: 0;
	font-weight: 600;
}

/* Zurueck-Link "Zur Startseite" */
a.back {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 9px 16px;
	border: 1px solid var(--border-strong);
	color: var(--text) !important;
	background: var(--bg-card);
	border-radius: var(--radius-chip);
	text-decoration: none;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	margin-bottom: 18px;
}
a.back:hover { border-color: var(--accent); color: var(--accent) !important; }
a.back::before {
	content: '\2190';
	font-size: 1rem;
	line-height: 1;
}

/* Produkt-Karten im Kampagnen-Formular.
   Hinweis zu overflow: Die .box selbst KEIN overflow:hidden, weil der
   ".box-qty"-Badge (top:-15px right:-15px, siehe stylesheet.css Z. 987)
   sonst abgeschnitten wird. Die abgerundeten Bildecken stellen wir
   ueber overflow:hidden + Eck-Radius an .box-image her. */
.module form .outer-box-inner .box {
	background: var(--bg-card);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	overflow: visible;
	margin: 0;
	transition: border-color .15s ease;
	position: relative;
}
.module form .outer-box-inner .box:hover { border-color: var(--accent); }
/* Bild-Bereich rundet die obere Kante korrekt mit der Box-Border zusammen. */
.module form .outer-box-inner .box .box-image {
	overflow: hidden;
	border-top-left-radius: var(--radius-card);
	border-top-right-radius: var(--radius-card);
}
/* Qty-Badge: sicherstellen, dass er ueber Bild + Karten-Border liegt
   und nicht von der Sticky-Summary verdeckt wird. */
.module form .outer-box-inner .box > .box-qty {
	z-index: 12;
}
.module form .outer-box-inner .box .box-inner {
	background: none;
	border: 0;
	border-radius: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
}
.module form .outer-box-inner .box .box-image {
	background: #fff !important;
	position: relative;
}
/* Slider fuellt die Bildbox randlos (frueher 14px-Inset als weisses
   Passepartout - stoerte bei echten Produktfotos, s. Kampagnen-Order).
   WICHTIG: padding der .box-image NICHT anfassen, da das Legacy-CSS
   "padding-top: 100%" fuer das quadratische Seitenverhaeltnis nutzt. */
.module form .outer-box-inner .box .box-image .product-slider {
	top: 0 !important;
	left: 0 !important;
	right: 0 !important;
	bottom: 0 !important;
	width: auto !important;
	height: auto !important;
}
.module form .outer-box-inner .box .box-image .product-slider-slide {
	background-size: contain !important;
	background-color: #fff;
}
.module form .outer-box-inner .box .box-content {
	padding: 14px 16px 16px;
	background: none;
	border: 0;
}
.module form .outer-box-inner .box .box-content h5 {
	font-size: 0.85rem;
	margin: 0 0 4px;
	color: var(--text);
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.module form .outer-box-inner .box .box-content p {
	color: var(--text-muted);
	font-size: 0.78rem;
	margin: 0 0 8px;
}
.module form .outer-box-inner .box.deactivate { opacity: 0.5; }

/* Platz fuer die fixe Sticky-Leiste (#id_summary, 80px) gehoert ans Ende
   der Seite - nicht unter die Kachelliste: darunter folgt der komplette
   Checkout, das Polster riss dort ein rund 200px hohes Loch zwischen
   letzter Kachel und der Ueberschrift "Checkout". */
.module form .outer-box-inner .flex-wrapper.flex-teaser.reorder-teaser {
	margin-bottom: 32px;
}
#user-reorder-form {
	padding-bottom: 104px; /* 80px Summary-Bar + 24px Luft */
}
/* Vertikaler Abstand zwischen Kachelreihen erhoehen */
.flex-wrapper.flex-teaser.reorder-teaser .box {
	margin-bottom: 30px !important;
}

/* ---------------------------------------------------------------
   Checkout-Bereich (5 nummerierte Boxen, im Kampagnen-Formular am
   Ende der Mengen-Eingabe). Markup siehe user-reorder-qty.blade.php
   ab Block "CHECKOUT-BEREICH". Look & Feel folgt der Plattform -
   .box.box-mobile > .box-inner liefert bereits die Karten-Optik.
   Hier wird nur das innere Layout (Grids, Listen, Total-Block)
   strukturiert.
   --------------------------------------------------------------- */
.checkout-wrapper {
	margin-top: 32px;
}
.checkout-intro {
	margin: 0 0 18px;
}
.checkout-title {
	margin: 0 0 6px;
	color: var(--text);
	font-size: 1.6rem;
	letter-spacing: 0.02em;
}
.checkout-subline {
	margin: 0;
	color: var(--text-muted);
	font-size: 0.85rem;
}
/* 60/40-Grid fuer Reihe 1.
   Wichtig: align-items:stretch auf .checkout-row sorgt dafuer, dass
   linke und rechte Spalte gleich hoch werden (= Hoehe der laengeren
   Spalte). Innerhalb der Spalten werden die Sections via
   flex-direction:column gestapelt.
   !important + #id_checkout-Praefix erzwingen die Layout-Regeln, falls
   nachgeladene Stylesheets/Inline-Styles dazwischenfunken. */
#id_checkout.checkout-wrapper .checkout-row,
.checkout-row {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	gap: 20px !important;
	align-items: stretch !important;
	margin-bottom: 20px !important;
	width: 100% !important;
}
#id_checkout.checkout-wrapper .checkout-col-left,
#id_checkout.checkout-wrapper .checkout-col-right,
.checkout-col-left,
.checkout-col-right {
	display: flex !important;
	flex-direction: column !important;
	gap: 20px !important;
	min-width: 0 !important;
	float: none !important;
}
/* Feste 60/40-Aufteilung (basis statt grow, damit Inhalte keinen
   Mehrbedarf erzeugen koennen). gap wird vom flex container abgezogen. */
#id_checkout.checkout-wrapper .checkout-col-left,
.checkout-col-left  { flex: 0 0 calc(60% - 10px) !important; max-width: calc(60% - 10px) !important; }
#id_checkout.checkout-wrapper .checkout-col-right,
.checkout-col-right { flex: 0 0 calc(40% - 10px) !important; max-width: calc(40% - 10px) !important; }
/* Sections (= einzelne .box.box-mobile-Karten) untereinander */
.checkout-section { margin-bottom: 20px !important; }
/* Linke Spalte: beide Sections in ihrer natuerlichen Hoehe stapeln
   (NICHT gleichverteilt). */
.checkout-col-left .checkout-section {
	margin-bottom: 0 !important;
	flex: 0 0 auto !important;
	width: 100% !important;
	max-width: 100% !important;
	float: none !important;
}
/* Rechte Spalte: die einzelne Section dehnt sich auf die volle
   Spaltenhoehe (= Hoehe der beiden gestapelten Sections links). */
.checkout-col-right .checkout-section {
	margin-bottom: 0 !important;
	flex: 1 1 auto !important;
	display: flex !important;
	flex-direction: column !important;
	width: 100% !important;
	max-width: 100% !important;
	float: none !important;
}
.checkout-col-right .checkout-section > .box-inner {
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
}
/* Im rechten Box: Total-Block ans Ende (visuelle Verankerung unten,
   wenn die Spalte die Hoehe der linken erreicht). */
.checkout-col-right .checkout-section .checkout-total {
	margin-top: auto;
}
/* Section-Title mit Step-Badge (rund). Icons wurden entfernt -
   Badge ersetzt das Icon als visuellen Anker. */
.checkout-section-title {
	display: flex !important;
	align-items: center;
	gap: 10px;
	margin: 0 0 16px !important;
	font-size: 1.05rem !important;
	text-transform: none;
	font-weight: 700;
	color: var(--accent) !important;
}
/* Schrittnummer als runder Badge - aspect-ratio koppelt Hoehe an
   Breite: immer perfekter KREIS, nie Oval (auch bei 2 Stellen). */
.checkout-section-title .checkout-step {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 26px;
	min-height: 26px;
	aspect-ratio: 1 / 1;
	padding: 0 4px;
	border-radius: 50%;
	box-sizing: border-box;
	background: var(--accent);
	color: #fff;
	font-size: 0.8rem;
	font-weight: 700;
	line-height: 1;
	flex: none;
	font-family: 'Inter', 'Lato', sans-serif;
}
/* Adress-Grid in Section 1 */
.checkout-address-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 18px;
	margin: 0;
}
.checkout-address-card {
	min-width: 0;
	padding: 14px 16px;
	border: 1px solid var(--border-card);
	border-radius: 10px;
	background: rgba(255, 255, 255, 0.02);
}
.checkout-address-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	margin-bottom: 8px;
}
.checkout-address-head h5 {
	margin: 0;
	font-size: 0.7rem;
	letter-spacing: 0.06em;
	font-weight: 700;
	color: var(--text-muted);
	text-transform: uppercase;
}
.checkout-address-head .btn-edit-trigger {
	display: inline-flex !important;
	align-items: center;
	gap: 5px;
	padding: 4px 10px !important;
	font-size: 0.65rem !important;
	background: transparent !important;
	border: 1px solid var(--border-strong) !important;
	color: var(--accent) !important;
	border-radius: var(--radius-chip);
	text-transform: uppercase;
	letter-spacing: 0.04em;
	font-weight: 700;
}
.checkout-address-head .btn-edit-trigger:hover {
	border-color: var(--accent) !important;
	color: var(--accent) !important;
	background: var(--accent-soft-bg) !important;
}
.checkout-address-head .btn-edit-trigger svg {
	width: 12px;
	height: 12px;
}
.checkout-address-text {
	font-style: normal;
	color: var(--text);
	font-size: 0.85rem;
	line-height: 1.55;
	margin: 0;
}
/* Konditionen-Liste in Section 2 */
.checkout-conditions {
	list-style: none;
	margin: 0;
	padding: 0;
}
.checkout-conditions li {
	display: grid;
	grid-template-columns: 22px 1fr auto;
	align-items: center;
	gap: 12px;
	padding: 10px 0;
	border-bottom: 1px solid var(--border-divider);
}
.checkout-conditions li:last-child {
	border-bottom: 0;
}
.checkout-conditions .checkout-cond-icon {
	color: var(--text-muted);
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.checkout-conditions .checkout-cond-label {
	color: var(--text-muted);
	font-size: 0.8rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.checkout-conditions .checkout-cond-value {
	color: var(--text);
	font-size: 0.85rem;
	font-weight: 600;
	text-align: right;
}
/* Bestelluebersicht in Section 3 */
.checkout-summary-list {
	list-style: none;
	margin: 0 0 16px;
	padding: 0;
}
.checkout-summary-list li {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 10px 0;
	border-bottom: 1px solid var(--border-divider);
}
.checkout-summary-list li:last-child {
	border-bottom: 0;
}
.checkout-summary-list li span {
	color: var(--text-muted);
	font-size: 0.85rem;
}
.checkout-summary-list li strong {
	color: var(--text);
	font-size: 0.95rem;
	font-weight: 600;
}
/* Spezialfall Lieferkosten: kann Fliesstext sein (z.B. "Die finalen
   Lieferkosten werden ..."). Dann nicht fett/rechtsbuendig anzeigen,
   sondern als Fliesstext (analog zu Adressen) unter dem Label
   stapeln. */
.checkout-summary-list li:has(#id_ship_totall_td) {
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
}
#id_ship_totall_td {
	color: var(--text);
	font-size: 0.85rem;
	font-weight: 400;
	line-height: 1.55;
	text-align: left;
}
/* Gesamt-Netto-Highlight */
.checkout-total {
	margin-top: 14px;
	padding-top: 14px;
	border-top: 1px solid var(--border-divider);
}
.checkout-total-label {
	color: var(--accent);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 700;
	margin-bottom: 6px;
}
.checkout-total-value {
	color: var(--accent);
	font-size: 2.1rem;
	font-weight: 700;
	line-height: 1.1;
	margin-bottom: 4px;
}
.checkout-total-note {
	color: var(--text-muted);
	font-size: 0.75rem;
}
/* Section 5: AGB-Info-Zeile + Submit */
.checkout-agb-info {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 14px;
	margin: 14px 0;
	background: var(--bg-elev);
	border: 1px solid var(--border-divider);
	border-radius: var(--radius-card-sm);
	color: var(--text-muted);
	font-size: 0.8rem;
	line-height: 1.5;
}
.checkout-agb-info svg {
	flex-shrink: 0;
	color: var(--text-muted);
}
.checkout-agb-info a {
	color: var(--accent);
	text-decoration: none;
}
.checkout-agb-info a:hover {
	text-decoration: underline;
}
.checkout-submit-wrap {
	text-align: right;
	margin-top: 8px;
}
.checkout-submit-wrap input[type="submit"] {
	font-size: 0.85rem;
	letter-spacing: 0.06em;
	padding: 14px 28px;
}
/* Mobile: Stacking */
@media (max-width: 980px) {
	#id_checkout.checkout-wrapper .checkout-row,
	.checkout-row {
		flex-direction: column !important;
	}
	#id_checkout.checkout-wrapper .checkout-col-left,
	#id_checkout.checkout-wrapper .checkout-col-right,
	.checkout-col-left,
	.checkout-col-right {
		flex: 1 1 100% !important;
		max-width: 100% !important;
	}
	.checkout-address-grid {
		grid-template-columns: 1fr;
	}
	.checkout-total-value {
		font-size: 1.6rem;
	}
	.checkout-submit-wrap {
		text-align: center;
	}
	.checkout-submit-wrap input[type="submit"] {
		width: 100%;
	}
}

/* ---------------------------------------------------------------
   Mengen-Eingabe-Modal (Kampagne) - Inputs in neutralem Anthrazit
   (statt grünlichem --bg-elev/--border-card), damit das Modal
   farblich vom Brand-Akzent entkoppelt ist.
   --------------------------------------------------------------- */
.modal#id_modal_new input[type="number"],
.modal#id_modal_new .qty-value,
.modal#id_modal_new .qty-value-wrapper .qty-value {
	background: #1d1d1d !important;
	color: #fff !important;
	border: 1px solid #303030 !important;
	border-radius: var(--radius-card-sm) !important;
	min-width: 110px !important;
	height: 44px;
	padding: 6px 38px !important;
	text-align: center !important;
	-webkit-text-fill-color: #fff !important; /* iOS Safari */
}
.modal#id_modal_new .qty-value-wrapper .btn-dec,
.modal#id_modal_new .qty-value-wrapper .btn-inc,
.modal#id_modal_new .qty-value-wrapper .btn-minus,
.modal#id_modal_new .qty-value-wrapper .btn-plus {
	top: 50% !important;
	transform: translateY(-50%);
	filter: brightness(0) invert(1);
}
/* Readonly-Inputs (predefined Pakete) ebenfalls neutral anthrazit */
.modal#id_modal_new .qty-value[type="number"]:read-only {
	background: #1d1d1d !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}
/* Default-Browser-Spinner (Hoch-/Runter-Pfeile) bei den Mengen-Inputs
   ausblenden - wir haben eigene Plus/Minus-Buttons links und rechts vom
   Feld, die nativen Pfeile waeren redundant und stoeren das Layout
   (siehe Bug-Screenshot: kleine ▲▼ erschienen rechts neben dem "+"). */
.modal#id_modal_new input[type="number"]::-webkit-outer-spin-button,
.modal#id_modal_new input[type="number"]::-webkit-inner-spin-button,
.modal#id_modal_new .qty-value::-webkit-outer-spin-button,
.modal#id_modal_new .qty-value::-webkit-inner-spin-button {
	-webkit-appearance: none !important;
	appearance: none !important;
	margin: 0 !important;
}
.modal#id_modal_new input[type="number"],
.modal#id_modal_new .qty-value {
	-moz-appearance: textfield !important;
	appearance: textfield !important;
}

/* Mobil: Paket-Menge ("Menge eingeben (Pakete)") ueber die volle Breite.
   Label und Stepper liegen in einem Flex-Wrapper, der auf schmalen Schirmen
   umbricht - der Stepper landete dann linksbuendig in Zeile zwei und behielt
   seine Feldbreite, rechts blieben rund 80px leer. Jetzt: Label als eigene
   Zeile, Eingabe volle Breite, Minus/Plus symmetrisch an den Raendern. */
@media (max-width: 768px) {
	.modal#id_modal_new .qty-row[data-size="margepacket"] > .flex-wrapper {
		display: block;
		width: 100%;
	}
	.modal#id_modal_new .qty-row[data-size="margepacket"] h5 {
		margin: 0 0 8px !important;
	}
	.modal#id_modal_new .qty-row[data-size="margepacket"] .qty-value-wrapper {
		display: block;
		width: 100%;
	}
	.modal#id_modal_new .qty-row[data-size="margepacket"] .qty-value {
		width: 100% !important;
	}
	.modal#id_modal_new .qty-row[data-size="margepacket"] .btn-dec {
		left: 12px;
	}
	.modal#id_modal_new .qty-row[data-size="margepacket"] .btn-inc {
		right: 12px;
	}

	/* Paket-Menge steht FEST unter der Groessenliste: die Zeile wird per JS
	   in den Slot #packet_row_slot ausserhalb des Scrollbereichs verschoben
	   (vorher sticky in der Liste - beim Hochscrollen wanderte sie mit dem
	   Inhalt mit). Die Mengenrechnung liest Container UND Slot. */
	.modal#id_modal_new .qty-row[data-size="margepacket"] {
		margin-top: 6px;
		padding: 6px 0 2px;
		background: var(--bg-card, #0d1614);
		box-shadow: 0 -10px 14px -8px rgba(0, 0, 0, 0.85);
	}
	/* Label rechts - schliesst mit Stueckzahl/Wert darunter auf einer Kante ab */
	.modal#id_modal_new .qty-row[data-size="margepacket"] h5 {
		text-align: right;
	}
	/* Pflichtangabe: dieselbe Signalfarbe wie die uebrigen Pflichtfelder */
	.modal#id_modal_new .qty-row[data-size="margepacket"] .qty-value {
		border-color: rgba(200, 111, 22, 0.55) !important;
		background: rgba(217, 122, 30, 0.07) !important;
	}
}

/* "Hilfe & Videos"-Button: ruhige, hochwertige Outline-Pille mit
   Play-Chip (statt lautem, vollflaechig tuerkisem Button). Integriert
   sich dezent in die dunkle Plattform-Optik.
   Hinweis: Das Label wird zentral via ::after gesetzt ("Hilfe & Videos"),
   der urspruengliche Textknoten "Hilfe/Video" im Markup wird per
   font-size:0 ausgeblendet -> kein Anfassen der ~20 Blade-Views noetig.
   Das alte Hintergrund-Icon (help.svg) wird durch den ::before-Chip
   ersetzt. */
.help-video,
.help-video2 {
	display: inline-flex !important;
	align-items: center;
	box-sizing: border-box;
	padding: 8px 18px 8px 8px !important;
	font-size: 0 !important;
	font-weight: 600;
	letter-spacing: 0;
	text-decoration: none;
	color: #fff !important;
	background-color: rgba(13, 22, 20, 0.82) !important;
	background-image: none !important;
	border: 1px solid rgba(31, 176, 154, 0.55) !important;
	border-radius: 999px !important;
	box-shadow:
		0 10px 30px rgba(0, 0, 0, 0.45),
		0 0 0 1px rgba(31, 176, 154, 0.08),
		0 0 22px rgba(31, 176, 154, 0.20) !important;
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	transition: border-color .2s ease, box-shadow .2s ease,
		transform .2s ease, opacity .25s ease !important;
}

/* Floating-Variante: sticky unten RECHTS
   Ausgeblendet auf Wunsch (2026-07-02). Die Inline-Variante .help-video2
   bleibt erhalten, kann also weiterhin innerhalb von Boxen verwendet werden. */
.help-video {
	display: none !important;
	position: fixed;
	right: 22px !important;
	left: auto !important;
	bottom: 22px !important;
	z-index: 50;
}
/* Inline-Variante (z.B. innerhalb von Boxen) bleibt im Textfluss */
.help-video2 {
	position: relative;
	left: auto !important;
	right: auto !important;
	bottom: auto !important;
}

/* Icon-Chip: abgerundetes Quadrat mit tuerkisem Play-Dreieck */
.help-video::before,
.help-video2::before {
	content: "";
	flex: 0 0 28px;
	width: 28px;
	height: 28px;
	margin-right: 11px;
	border-radius: 8px;
	border: 1px solid rgba(31, 176, 154, 0.65);
	background-color: rgba(31, 176, 154, 0.10);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%231fb09a'%3E%3Cpath d='M9 7.5v9l7.5-4.5z'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: 54% center;
	background-size: 13px;
}

/* Label */
.help-video::after,
.help-video2::after {
	content: "Hilfe & Videos";
	font-size: 14px;
	font-weight: 600;
	letter-spacing: .01em;
	line-height: 1;
	color: #fff;
	white-space: nowrap;
}

.help-video:hover,
.help-video2:hover {
	color: #fff !important;
	background-color: rgba(13, 22, 20, 0.9) !important;
	border-color: rgba(45, 198, 173, 0.85) !important;
	box-shadow:
		0 12px 34px rgba(0, 0, 0, 0.5),
		0 0 0 1px rgba(31, 176, 154, 0.14),
		0 0 28px rgba(31, 176, 154, 0.32) !important;
}
.help-video:hover { transform: translateY(-1px); }
.help-video:hover::before,
.help-video2:hover::before {
	border-color: rgba(45, 198, 173, 0.9);
	background-color: rgba(31, 176, 154, 0.16);
}

/* Geoeffneter Layer: Chip wird zum Schliessen-Kreuz, Label "Schliessen" */
.help-video.active::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231fb09a' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E") !important;
	background-position: center !important;
	background-size: 13px !important;
}
.help-video.active::after {
	content: "Schließen";
}


/* ---------------------------------------------------------------
   24c. Checkout (#id_checkout)
   --------------------------------------------------------------- */
#id_checkout {
	margin-top: 32px;
}
#id_checkout > .box-inner {
	background: var(--bg-card);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	padding: 32px;
}
#id_checkout h4 {
	font-size: 1.2rem;
	margin: 0 0 18px;
	color: var(--text);
	text-transform: none;
	letter-spacing: 0;
	font-weight: 700;
}
#id_checkout h3 {
	font-size: 0.85rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--text);
	margin: 12px 0 14px;
}

#id_checkout table.summary {
	width: 100%;
	border-collapse: collapse;
	margin: 0 0 14px;
}
#id_checkout table.summary td {
	padding: 10px 0;
	border-bottom: 1px solid var(--border-divider);
	color: var(--text);
	vertical-align: top;
	font-size: 0.9rem;
}
#id_checkout table.summary tr:last-child td { border-bottom: 0; }
#id_checkout table.summary td:first-child {
	color: var(--text-muted);
	text-transform: uppercase;
	font-size: 0.72rem;
	letter-spacing: 0.06em;
	width: 38%;
	font-weight: 700;
}

#id_checkout .form-submit {
	margin-top: 24px;
	text-align: right;
}
#id_checkout .form-submit input[type="submit"] {
	background: var(--btn-bg);
	color: #fff !important;
	border: 0;
	border-radius: var(--radius-btn);
	padding: 14px 28px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	font-size: 0.85rem;
	cursor: pointer;
	width: auto;
}
#id_checkout .form-submit input[type="submit"]:hover { background: var(--btn-bg-hover); }

/* Sticky-Leiste unten (#id_summary)
   Bleibt fix am unteren Bildschirmrand, ohne Abstand, ohne Rundung. */
#id_summary {
	background: var(--bg-card) !important;
	border: 0 !important;
	border-top: 1px solid var(--border-card) !important;
	border-radius: 0 !important;
	padding: 14px 24px !important;
	margin: 0 !important;
	color: var(--text);
	box-shadow: 0 -6px 18px rgba(0,0,0,0.45);
	/* Muss ueber #id_sell_locations_box (z-index 1000) liegen, sonst ragen
	   die Standort-Feature-Icons beim Scrollen in die fixe Bar hinein. */
	z-index: 1001;
}
#id_summary .summary-left { color: var(--text-muted); }
#id_summary .summary-left span { color: var(--text); font-weight: 700; }
#id_summary .summary-right .btn {
	padding: 12px 24px !important;
	font-size: 0.85rem !important;
}


/* ---------------------------------------------------------------
   24d. Auftraege Seite (orders.blade.php)
   --------------------------------------------------------------- */

/* Filter-Form als Pill-Bar */
.module .content-header-actions {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
	align-items: center;
	margin-bottom: 20px;
}
.module .content-header-actions .filter-group {
	margin: 0;
}
.module .content-header-actions .filter-group select,
.module .content-header-actions .filter-group input[type="text"] {
	background-color: var(--bg-card) !important;
	border: 1px solid var(--border-card) !important;
	color: var(--text) !important;
	padding: 10px 16px !important;
	border-radius: var(--radius-chip) !important;
	min-width: 160px;
	min-height: 42px;
	box-sizing: border-box;
}
/* Dropdown-Pfeil fuer Filter-Selects.
   Hintergrund: das globale select{ background-image: <chevron> } (Z. 382)
   wird durch das oben gesetzte `background-color` korrekt erhalten - wir
   setzen den Pfeil dennoch explizit, weil frueher das `background:`-
   Shorthand das Pfeil-SVG ueberschrieb. Plus: padding-right verbreitert
   den Klick-/Anzeige-Bereich rechts, damit der Pfeil nicht hinter dem
   Auswahl-Text liegt. */
.module .content-header-actions .filter-group select {
	-webkit-appearance: none !important;
	appearance: none !important;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'><path d='M1 1.5L6 6.5L11 1.5' stroke='%237ad7c5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") !important;
	background-repeat: no-repeat !important;
	background-position: right 14px center !important;
	padding-right: 38px !important;
}
.module .content-header-actions .filter-group input.search {
	min-width: 220px;
	padding-left: 38px !important;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'><circle cx='7' cy='7' r='5' stroke='%238da3a0' stroke-width='1.4'/><path d='M11 11L14 14' stroke='%238da3a0' stroke-width='1.4' stroke-linecap='round'/></svg>") !important;
	background-repeat: no-repeat !important;
	background-position: 14px center !important;
}
/* "Neue Anfrage"-Button auf /customersupport - sitzt direkt rechts
   neben der Suche im selben Filter-Flex-Wrapper. flex-shrink: 0
   verhindert, dass der Button bei knappem Platz zusammengequetscht
   wird. */
.module .content-header-actions .filter-group-cs-new-request {
	flex: 0 0 auto;
}
.btn.btn-cs-new-request {
	min-height: 42px;
	padding: 10px 18px !important;
	font-size: 0.8rem !important;
	letter-spacing: 0.06em !important;
	gap: 8px;
	white-space: nowrap;
}
.btn.btn-cs-new-request svg {
	width: 14px;
	height: 14px;
	flex-shrink: 0;
}
@media (max-width: 768px) {
	.module .content-header-actions .filter-group-cs-new-request { width: 100%; flex: 1 1 100%; }
	.btn.btn-cs-new-request { width: 100%; justify-content: center; }
}
.module .radio-checkbox-wrapper { margin: 0; }
.module .radio-checkbox-wrapper label {
	display: inline-flex;
	align-items: center;
	gap: 0;
	/* Padding so gewaehlt, dass das Label im Filter-Kontext exakt die selbe
	   Hoehe (42px) wie die <select>-Felder ("Marken", "Saisons", "Status")
	   bekommt. min-height fixiert die Hoehe zusaetzlich. */
	padding: 10px 16px 10px 38px !important;
	min-height: 42px;
	box-sizing: border-box;
	color: var(--text);
	font-size: 0.85rem;
	border: 1px solid var(--border-card);
	border-radius: var(--radius-chip);
	background: var(--bg-card);
	cursor: pointer;
	position: relative;
	margin: 0 8px 0 0 !important;
	float: none !important;
}
.module .radio-checkbox-wrapper .checkmark {
	position: absolute !important;
	left: 10px !important;
	top: 50% !important;
	transform: translateY(-50%) !important;
	width: 18px !important;
	height: 18px !important;
	background-color: transparent !important;
	border: 1px solid var(--border-strong) !important;
	border-radius: 4px !important;
	transition: background-color .15s, border-color .15s;
}
.module .radio-checkbox-wrapper .checkmark.checkmark-checkbox { border-radius: 4px !important; }
.module .radio-checkbox-wrapper label:hover .checkmark,
.module .radio-checkbox-wrapper :hover input ~ .checkmark { border-color: var(--accent) !important; }
.module .radio-checkbox-wrapper input:checked ~ .checkmark {
	background: var(--accent) !important;
	border-color: var(--accent) !important;
}
.module .radio-checkbox-wrapper .checkmark:after { display: none !important; }
.module .radio-checkbox-wrapper input:checked ~ .checkmark:after {
	display: block !important;
	content: '' !important;
	position: absolute !important;
	top: 2px !important;
	left: 6px !important;
	width: 5px !important;
	height: 10px !important;
	border: solid #fff !important;
	border-width: 0 2px 2px 0 !important;
	transform: rotate(45deg) !important;
	background: transparent !important;
	border-radius: 0 !important;
}

/* "Handlung erforderlich" -> Offene Aktionen Warn-Callout */
.module .box.orders-list-box {
	background: none;
	margin-bottom: 24px;
}
.module .box.orders-list-box .box-inner {
	background: var(--bg-card);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	padding: 24px;
}
/* Erste Box (action required): Warn-Akzent.
   Wir koppeln den Akzent an die yellow-Variante der Headline statt an
   :first-of-type, damit die Optik nicht versehentlich auf "Weitere..."-
   Boxen wandert, falls die Reihenfolge mal aendert oder die Action-Box
   leer entfernt wuerde. */
.module .box.orders-list-box:has(h4.status-headline.yellow) .box-inner,
body.brand-portal .box.orders-list-box:has(h4.status-headline.yellow) .box-inner {
	border-color: var(--status-warn);
	background: linear-gradient(180deg, rgba(240,140,46,0.04) 0%, var(--bg-card) 50%);
}
/* "Alles erledigt"-Variante: gruener Rahmen + dezenter gruener Tint. */
.module .box.orders-list-box:has(h4.status-headline.ok) .box-inner,
body.brand-portal .box.orders-list-box:has(h4.status-headline.ok) .box-inner {
	border-color: var(--accent-strong);
	background: linear-gradient(180deg, rgba(31,176,154,0.05) 0%, var(--bg-card) 50%);
}
/* Fallback fuer Browser ohne :has() Support (rare): erste Box ist
   weiterhin die Action-Box (so wie wir es in den Blade-Files anordnen). */
@supports not (selector(:has(*))) {
	.module .box.orders-list-box:first-of-type .box-inner {
		border-color: var(--status-warn);
		background: linear-gradient(180deg, rgba(240,140,46,0.04) 0%, var(--bg-card) 50%);
	}
}

/* Empty-State innerhalb der "Handlung erforderlich"-Box (Auftraege und
   Anfragen). Identische Optik auf beiden Seiten - nur Text, kein Rahmen,
   keine Hintergrundflaeche. */
.module .box.orders-list-box .action-required-empty {
	margin: 4px 0 0;
	padding: 8px 0 0;
	color: var(--text-muted);
	font-size: 0.9rem;
	font-style: italic;
	background: transparent;
	border: 0;
	border-radius: 0;
}

/* Status-Headlines (h5-Skala): kleiner als Dashboard-h4 (22px) -> 17px.
   - 17px / 600 / kein uppercase / kein letter-spacing
   - rundes (50%) Tile-Icon links davor, Tile-Groesse 30px
   - Farbe semantisch: yellow=orange, ok=gruen, default=weiss
   Zahlen-Badge (.circle) steht ggf. dahinter. */
.module .box.orders-list-box h4.status-headline {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 16px;
	font-size: 17px;
	font-weight: 600;
	letter-spacing: -0.005em;
	text-transform: none;
	color: #fff;
	line-height: 1.3;
}
.module .box.orders-list-box h4.status-headline.yellow { color: var(--status-warn); }
.module .box.orders-list-box h4.status-headline.yellow::before {
	content: '!';
	width: 30px; height: 30px;
	border-radius: 50%;
	background: var(--status-warn-bg);
	color: var(--status-warn);
	display: inline-flex; align-items: center; justify-content: center;
	font-weight: 800; font-size: 0.95rem;
	margin-right: 2px;
	flex: 0 0 30px;
}
/* "Alles erledigt"-Variante (kein Handlungsbedarf): gruener Akzent,
   Checkmark-Tile statt orangenem !-Tile. Wird gerendert, wenn die
   "Handlung erforderlich"-Box leer ist. */
.module .box.orders-list-box h4.status-headline.ok { color: var(--accent-strong); }
.module .box.orders-list-box h4.status-headline.ok::before {
	content: '';
	width: 30px; height: 30px;
	border-radius: 50%;
	background: var(--accent-soft-bg);
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2329c79b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 15px 15px;
	margin-right: 2px;
	flex: 0 0 30px;
}
/* Counter-Badge in Section-Headlines ("Handlung erforderlich (n)" und
   "Weitere Bestellungen (n)"). 
   width == height + padding: 0 -> garantiert RUND (vorher liess min-width
   den Badge bei mehrstelligen Zahlen oval werden). */
/* Counter-Badge: weisser Text auf saftem Akzentgrund (gute Lesbarkeit).
   yellow-Variante = orange (Warning), default = accent-gruen, jeweils weiss.
   Groesse passt zur h5-Headline (24px). */
.module .box.orders-list-box h4.status-headline .circle,
body.brand-portal .box.orders-list-box h4.status-headline .circle {
	background: var(--accent);
	color: #fff;
	border-radius: 50%;
	width: 24px !important;
	min-width: 24px !important;
	height: 24px !important;
	padding: 0 !important;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 0.72rem;
	font-weight: 700;
	box-sizing: border-box;
}
.module .box.orders-list-box h4.status-headline.yellow .circle,
body.brand-portal .box.orders-list-box h4.status-headline.yellow .circle {
	background: var(--status-warn);
	color: #fff;
}

/* Status-Pills (im Layout sind die Status-Texte als Pills dargestellt) */
.module .statustext.status {
	display: inline-flex !important;
	align-items: center;
	gap: 6px;
	padding: 6px 12px !important;
	border-radius: var(--radius-chip);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	background-position: 10px center !important;
	background-size: 12px !important;
	padding-left: 28px !important;
}
.module .statustext.status.manual-confirmed,
.module .statustext.status.auto-confirmed {
	background-color: var(--status-success-bg);
	color: #5ed688 !important;
}
/* "Zum Lieferanten gesendet" (classname=approved): GRUEN (Erfolgs-Status).
   Die Unterscheidung zum Abschluss-Status ("Bestätigt & abgeschlossen")
   leistet das Icon: Papierflieger vs. Haekchen. */
.module .statustext.status.approved {
	background-color: var(--status-success-bg);
	color: #5ed688 !important;
}
.module .statustext.status.open,
.module .statustext.status.customer-open,
.module .statustext.status.customer-approve {
	background-color: var(--status-warn-bg);
	color: #ffac68 !important;
}
.module .statustext.status.open-order {
	background-color: var(--status-warn-bg);
	color: var(--status-warn) !important;
}
.module .statustext.status.rejected,
.module .statustext.status.deleted-admin,
.module .statustext.status.deleted-customer {
	background-color: var(--status-danger-bg);
	color: #ff6c6c !important;
}
.module .statustext.status.confirmed-by-customer {
	background-color: var(--status-info-bg);
	color: #75c8e8 !important;
}
.module .statustext.status.onhold {
	background-color: rgba(176, 176, 176, 0.14);
	color: #d0d0d0 !important;
}

/* Status-Legende im Status-Info-Modal (#id_modal_status_info liegt
   AUSSERHALB von .module): gleiche Pill-Optik + Farben wie die Chips
   in den Tabellen, sonst bleiben dort dunkle stylesheet-Basisfarben
   (kaum lesbar auf dunklem Modal). */
.modal .statustext.status {
	display: inline-flex !important;
	align-items: center;
	gap: 6px;
	padding: 6px 12px 6px 28px !important;
	border-radius: var(--radius-chip);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	background-position: 10px center !important;
	background-size: 12px !important;
}
.modal .statustext.status.manual-confirmed,
.modal .statustext.status.auto-confirmed,
.modal .statustext.status.approved {
	background-color: var(--status-success-bg);
	color: #5ed688 !important;
}
.modal .statustext.status.open,
.modal .statustext.status.customer-open,
.modal .statustext.status.customer-approve,
.modal .statustext.status.open-order {
	background-color: var(--status-warn-bg);
	color: #ffac68 !important;
}
.modal .statustext.status.rejected,
.modal .statustext.status.deleted-admin,
.modal .statustext.status.deleted-customer {
	background-color: var(--status-danger-bg);
	color: #ff6c6c !important;
}
.modal .statustext.status.confirmed-by-customer {
	background-color: var(--status-info-bg);
	color: #75c8e8 !important;
}
.modal .statustext.status.onhold {
	background-color: rgba(176, 176, 176, 0.14);
	color: #d0d0d0 !important;
}

/* "Weitere Bestellungen" Section-Header.
   :not(.yellow) statt :nth-of-type(2) -> robust gegen conditional rendering:
   wenn die "Handlung erforderlich"-Box wegfaellt (count == 0), wird die
   "Weitere Bestellungen"-Box ploetzlich zur ersten - der :nth-of-type(2)-
   Selektor wuerde dann nicht mehr matchen. */
/* Default-Variante: alle Headlines, die WEDER .yellow noch .ok sind
   (z.B. "Weitere Anfragen" / "Weitere Bestellungen"). Weiss, rundes Tile. */
.module .box.orders-list-box h4.status-headline:not(.yellow):not(.ok) { color: #fff; }
.module .box.orders-list-box h4.status-headline:not(.yellow):not(.ok)::before {
	content: '';
	width: 30px; height: 30px;
	border-radius: 50%;
	background: var(--accent-soft-bg);
	display: inline-flex; align-items: center; justify-content: center;
	flex: 0 0 30px;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231fb09a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='4' width='18' height='16' rx='2'/><path d='M3 10h18'/></svg>");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 15px 15px;
}
.module .box.orders-list-box h4.status-headline:not(.yellow):not(.ok) .circle,
body.brand-portal .box.orders-list-box h4.status-headline:not(.yellow):not(.ok) .circle {
	background: var(--badge-bg);
}

/* Aktion-Buttons in Tabellen-Zellen.
   Hinweis: Die globalen .btn.btn-xxx-Regeln (siehe Z. 570 ff.) setzen
   padding/background mit !important. Wir muessen in diesem Kontext also
   ebenfalls !important nutzen, um die Tabellen-Optik kompakt + farblich
   richtig zu kriegen. */
.module .box.orders-list-box table .btn {
	padding: 8px 14px !important;
	font-size: 0.7rem !important;
}
/* "Du bist am Zug"-Aktionen ("AUFTRAG ABSCHLIESSEN" / "BESTAETIGEN"):
   orange Signal-Farbe (Akzent), damit der Haendler eindeutig sieht,
   wo er aktiv werden soll. Setzt sich gegen die globale btn-bg-Default
   (Tuerkis/Teal) durch. */
.module .box.orders-list-box table .btn.btn-confirm,
.module .box.orders-list-box table .btn.btn-qty {
	background: var(--status-warn) !important;
	background-color: var(--status-warn) !important;
	border-color: var(--status-warn) !important;
	color: #fff !important;
}
.module .box.orders-list-box table .btn.btn-confirm:hover,
.module .box.orders-list-box table .btn.btn-qty:hover {
	background-color: #e08200 !important;
	border-color: #e08200 !important;
	color: #fff !important;
}
.module .box.orders-list-box table .btn.btn-download {
	background: var(--btn-bg);
}
/* "Frage zum Auftrag": Outline-Button (kein Fuell-Background).
   Gilt sowohl in "Handlung erforderlich" als auch "Weitere Bestellungen".
   Die globale Teal-Regel aus stylesheet.css/theme.css wird hier mit
   hoher Spezifitaet + !important neutralisiert. */
.module .box.orders-list-box table .btn.btn-question {
	background: transparent !important;
	background-color: transparent !important;
	background-image: none !important;
	border: 1px solid var(--border-strong) !important;
	color: var(--text) !important;
}
.module .box.orders-list-box table .btn.btn-question:hover {
	background: rgba(255, 255, 255, 0.06) !important;
	background-color: rgba(255, 255, 255, 0.06) !important;
	border-color: var(--text-muted) !important;
	color: var(--text) !important;
}
/* Loeschen als Icon-Button (rot, analog der Logout-Icon-Variante). */
.btn.btn-icon-only.btn-delete-icon {
	background: var(--status-danger, #be1622) !important;
	background-color: var(--status-danger, #be1622) !important;
	border-color: var(--status-danger, #be1622) !important;
	color: #fff !important;
}
.btn.btn-icon-only.btn-delete-icon svg {
	stroke: #fff !important;
}
.btn.btn-icon-only.btn-delete-icon:hover {
	background: #9c121c !important;
	background-color: #9c121c !important;
	border-color: #9c121c !important;
}
/* Icon-Buttons in /order-Tabelle: Button-Flaeche 40x40 (gleiche Hoehe
   wie die Text-Buttons in derselben Zeile - "AUFTRAG ABSCHLIESSEN",
   "AUFTRAG", "FRAGE ZUM AUFTRAG"). Das Icon SELBST bleibt kompakt
   (13px), damit Icon-Buttons nicht visuell dominieren. */
.module .box.orders-list-box table .btn.btn-icon-only {
	width: 40px !important;
	height: 40px !important;
	padding: 0 !important;
}
.module .box.orders-list-box table .btn.btn-icon-only svg {
	width: 13px !important;
	height: 13px !important;
}

/* === /order Aktions-Buttons: einheitliche Hoehe + kein Umbruch =========
   Mehrere Button-Varianten stehen pro Zeile direkt nebeneinander:
   - Filled: .btn-qty / .btn-confirm / .btn-download  (border 0)
   - Outline: .btn-question                           (border 1px)
   - Icon  : .btn-icon-only                           (fixe 40x40)
   Ohne Normalisierung waeren die Outline-Buttons 2px hoeher (Border
   addiert auf die Hoehe) und "AUFTRAG ABSCHLIESSEN" wuerde in der
   schmalen Spalte auf 2 Zeilen umbrechen.
   Fix: alle Buttons auf 40px Festhoehe, box-sizing border-box (damit
   die Outline-Border in die Hoehe einrechnet), vertikales Padding raus
   (Flex-Centering uebernimmt), white-space: nowrap. */
.module .box.orders-list-box table td.td-wrapper .btn {
	height: 40px !important;
	min-height: 40px !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	box-sizing: border-box !important;
	white-space: nowrap !important;
	line-height: 1 !important;
}
/* Statustext "Offene Einteilung" - Icon in Akzent-Orange (statt Green-SVG).
   Wir blenden das Original-SVG (background-image aus stylesheet.css)
   aus und rendern es via mask-image neu eingefaerbt. Damit bleibt das
   Icon visuell identisch, nur die Farbe zieht mit der Status-Farbe mit.
   + Eigene Pill-Anpassungen: kleinerer Font + reduziertes padding-left
   (8px statt globaler 28px), weil das Icon hier ueber ::before sitzt
   und das Pill-Background-Image gar nicht greift. */
.module .statustext.status.open-order {
	background-image: none !important;
	padding-left: 8px !important;
	font-size: 0.62rem !important;
}
.module .statustext.status.open-order::before {
	content: '';
	display: inline-block;
	width: 14px;
	height: 14px;
	background-color: var(--status-warn);
	-webkit-mask: url('../images/icons/open-order.svg') no-repeat center / contain;
	mask: url('../images/icons/open-order.svg') no-repeat center / contain;
	flex-shrink: 0;
}

/* "Bestätigt & abgeschlossen" (manual-confirmed/auto-confirmed): grünes
   Häkchen-Icon (approved.svg) via mask-image, damit die Farbe mit der
   Status-Farbe mitzieht und das Icon nicht im Original-Grün-SVG haengt. */
.module .statustext.status.manual-confirmed,
.module .statustext.status.auto-confirmed {
	background-image: none !important;
	padding-left: 8px !important;
}
.module .statustext.status.manual-confirmed::before,
.module .statustext.status.auto-confirmed::before {
	content: '';
	display: inline-block;
	width: 14px;
	height: 14px;
	background-color: var(--status-success);
	-webkit-mask: url('../images/icons/approved.svg') no-repeat center / contain;
	mask: url('../images/icons/approved.svg') no-repeat center / contain;
	flex-shrink: 0;
}

/* "Zum Lieferanten gesendet" (approved): gruenes Papierflieger-Icon
   (send.svg) via mask-image. Verdraengt das alte approved.svg
   aus der stylesheet.css-Regel. */
.module .statustext.status.approved {
	background-image: none !important;
	padding-left: 8px !important;
}
.module .statustext.status.approved::before {
	content: '';
	display: inline-block;
	width: 14px;
	height: 14px;
	background-color: var(--status-success);
	-webkit-mask: url('../images/icons/send.svg') no-repeat center / contain;
	mask: url('../images/icons/send.svg') no-repeat center / contain;
	flex-shrink: 0;
}

/* Order-Tile (Mobile + Desktop-Grid in Sektion 2) */
.order-tile {
	background: var(--bg-card) !important;
	border: 1px solid var(--border-card) !important;
	border-radius: var(--radius-card) !important;
	padding: 18px 20px !important;
	box-shadow: none !important;
	color: var(--text);
}
.order-tile-brand {
	color: var(--text) !important;
	font-size: 1rem !important;
}
.order-tile-meta div span,
.order-tile-numbers div span {
	color: var(--text-muted) !important;
}
.order-tile-meta div strong,
.order-tile-numbers div strong {
	color: var(--text) !important;
}
.order-tile-numbers {
	border-top: 1px solid var(--border-divider) !important;
	border-bottom: 1px solid var(--border-divider) !important;
	padding: 10px 0 !important;
	margin: 10px 0;
}
.order-tile-actions .btn { font-size: 0.72rem !important; padding: 9px 14px !important; }


/* ---------------------------------------------------------------
   24e. Anfragen Seite (customer-support.blade.php)
   --------------------------------------------------------------- */
.customer-support-table {
	width: 100%;
}
.customer-support-table th {
	color: var(--text-muted);
	text-transform: uppercase;
	font-size: 0.7rem;
	letter-spacing: 0.08em;
	padding: 14px 12px;
}
.customer-support-table td {
	padding: 14px 12px;
	vertical-align: middle;
	color: var(--text);
}
.customer-support-table tr {
	border-bottom: 1px solid var(--border-divider);
}
.customer-support-table tr.tr-customer-turn {
	background: rgba(31, 176, 154, 0.04);
}
.customer-support-table .mobile-bold {
	font-weight: 600;
	color: var(--text);
	position: relative;
	padding-left: 50px !important;
}
/* Generic Thema-Icon (links neben Titel) - Styleguide: rund, stroke 1.5. */
.customer-support-table .mobile-bold::before {
	content: '';
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: var(--accent-soft-bg);
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231fb09a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M9 11h6'/><path d='M9 15h6'/><rect x='3' y='4' width='18' height='16' rx='2'/></svg>");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 18px 18px;
}

/* Turn-Badges -> Pill-Chips */
.turn-badge {
	display: inline-flex !important;
	align-items: center;
	padding: 6px 12px !important;
	border-radius: var(--radius-chip) !important;
	font-size: 0.7rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
.turn-badge-customer {
	background: var(--accent-soft-bg) !important;
	color: var(--accent-soft-text) !important;
}
.turn-badge-brand {
	background: var(--bg-elev) !important;
	color: var(--text) !important;
	border: 1px solid var(--border-card);
}
.turn-badge-admin {
	background: var(--status-info-bg) !important;
	color: #75c8e8 !important;
}
.turn-badge-closed {
	background: var(--status-danger-bg) !important;
	color: #ff6c6c !important;
}

/* Chat-Button: einheitliche Groesse (egal ob mit oder ohne Badge) */
.btn.openChatModalBtn {
	background: transparent !important;
	border: 1px solid var(--border-strong) !important;
	color: var(--text) !important;
	padding: 9px 14px !important;
	font-size: 0.72rem !important;
	min-width: 92px !important;
	/* Text + Badge mittig (Wunsch 17.08.) */
	justify-content: center !important;
	/* Einheitliche Hoehe - der 18px-Zaehler-Badge macht Buttons sonst hoeher */
	height: 36px !important;
	align-items: center !important;
	box-sizing: border-box !important;
}
.btn.openChatModalBtn:hover {
	border-color: var(--accent) !important;
	color: var(--accent) !important;
}
.btn.openChatModalBtn .circle {
	background: var(--badge-bg) !important;
	color: #fff !important;
	margin-left: 6px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 18px;
	height: 18px;
	border-radius: 50%;
	font-size: 0.65rem;
}
.btn.btn-verlauf-customer-turn {
	background: var(--btn-bg) !important;
	color: #fff !important;
	border-color: var(--btn-bg) !important;
}

/* /orderdashboard - "Handlung erforderlich" Zeilen: kein orange Background.
   Konsistent zu /customersupport (Z. 2334 ff.). Status-Cue kommt aus der
   gelben Status-Headline der Box (status-headline yellow + Counter-Badge);
   die einzelnen Action-Buttons in der Zeile (MENGE HINZUFUEGEN, LOESCHEN,
   FRAGE ZUM AUFTRAG) tragen bereits eigene Signal-Farben. Die von
   support-chat.css gesetzte globale orange Hervorhebung wird hier auf
   transparent zurueckgesetzt, damit die Zeile wie eine normale Zeile
   aus der "Weitere Bestellungen"-Box darunter aussieht. */
.module .orders-list-table tr.tr-customer-turn,
.module .orders-list-table tr.tr-customer-turn td {
	background-color: transparent !important;
}

/* /customersupport - "Handlung erforderlich" Zeilen: kein orange Background
   mehr (war zwischenzeitlich global gesetzt -> zurueckgenommen). Das von
   support-chat.css gesetzte dezente gruene Tinting ueberschreiben wir hier
   auf transparent, damit die Zeile exakt wie eine normale Zeile aus der
   "Weitere Anfragen"-Box darunter aussieht. */
.module .customer-support-table tr.tr-customer-turn,
.module .customer-support-table tr.tr-customer-turn td {
	background-color: transparent !important;
}

/* /customersupport - Chat-Button in der "Handlung erforderlich"-Zeile:
   einziges orange Element der Zeile - signalisiert klar "Du bist am Zug,
   klick hier zum Chat". Inkl. Counter-Pill (.circle) in der Akzent-
   Umkehrung (weiss auf orange). */
.module .customer-support-table tr.tr-customer-turn .btn.openChatModalBtn,
.module .customer-support-table tr.tr-customer-turn .btn.btn-verlauf-customer-turn,
body.brand-portal .customer-support-table tr.tr-customer-turn .btn.btn-verlauf-customer-turn {
	background-color: #DC7E22 !important;
	background-image: none !important;
	color: #fff !important;
	border: 1px solid #DC7E22 !important;
}
.module .customer-support-table tr.tr-customer-turn .btn.openChatModalBtn:hover,
.module .customer-support-table tr.tr-customer-turn .btn.btn-verlauf-customer-turn:hover,
body.brand-portal .customer-support-table tr.tr-customer-turn .btn.btn-verlauf-customer-turn:hover {
	background-color: #c46d18 !important;
	color: #fff !important;
	border-color: #c46d18 !important;
}
.module .customer-support-table tr.tr-customer-turn .btn.openChatModalBtn .circle,
body.brand-portal .customer-support-table tr.tr-customer-turn .btn.btn-verlauf-customer-turn .circle {
	background-color: #fff !important;
	color: #DC7E22 !important;
}

/* /customersupport - Handlung-erforderlich-Zeile: das Thema-Icon (Tile
   am Zeilenanfang) und die Store-Name-Pille ("Naechste Aktion") werden
   ebenfalls orange. Konsistenz mit dem orangenen Chat-Button + der
   gelb/orange Section-Headline. */
.module .customer-support-table tr.tr-customer-turn .mobile-bold::before,
body.brand-portal .customer-support-table tr.tr-customer-turn .mobile-bold::before {
	background-color: var(--status-warn-bg);
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f08c2e' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M9 11h6'/><path d='M9 15h6'/><rect x='3' y='4' width='18' height='16' rx='2'/></svg>");
}
.module .customer-support-table tr.tr-customer-turn .turn-badge-customer,
body.brand-portal .customer-support-table tr.tr-customer-turn .turn-badge-customer {
	background: var(--status-warn-bg) !important;
	color: var(--status-warn) !important;
}

/* =====================================================================
   Termin-Vereinbaren: Terminart-Auswahl (3 Radio-Karten + Detail-Boxen)
   ===================================================================== */
.appt-type-section { margin: 8px 0 22px; }
.appt-section-title {
	font-size: 0.85rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--text);
	margin: 0 0 4px;
}
.appt-section-subtitle {
	font-size: 0.85rem;
	color: var(--text-muted);
	margin: 0 0 14px;
}
.appt-type-cards {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 14px;
}
.appt-type-card {
	position: relative;
	display: grid;
	grid-template-columns: 24px 48px 1fr;
	gap: 14px;
	align-items: center;
	padding: 22px 22px;
	border: 1px solid var(--border-card);
	border-radius: 10px;
	background: var(--bg-card);
	cursor: pointer;
	transition: border-color .15s ease, background .15s ease;
}
.appt-type-card:hover { border-color: var(--accent); }
.appt-type-card input[type="radio"] {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}
.appt-type-card-radio {
	width: 18px;
	height: 18px;
	border-radius: 50%;
	border: 1.5px solid var(--border-strong);
	background: transparent;
	display: inline-block;
	position: relative;
	flex: 0 0 18px;
}
/* Auswahlfarbe = Akzentfarbe der Anwendung (vorher Gelb). Die gewaehlte
   Karte und ihr Panel bilden damit optisch einen Block. */
.appt-type-card.is-active {
	border-color: var(--accent, #1fb09a);
	background: linear-gradient(180deg, rgba(31, 176, 154, 0.08) 0%, var(--bg-card) 70%);
}
.appt-type-card.is-active .appt-type-card-radio {
	border-color: var(--accent, #1fb09a);
	background: var(--accent, #1fb09a);
}
/* Haken statt Punkt: die Auswahl ist damit auch auf kleinen Schirmen
   eindeutig als "gewaehlt" lesbar. */
.appt-type-card.is-active .appt-type-card-radio::after {
	content: '';
	position: absolute;
	left: 5px;
	top: 2px;
	width: 5px;
	height: 9px;
	border: solid #08110f;
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
}
.appt-type-card-icon {
	width: 48px;
	height: 48px;
	border-radius: 10px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: rgba(255, 255, 255, 0.04);
	color: var(--text);
}
.appt-type-card.is-active .appt-type-card-icon {
	color: var(--accent, #1fb09a);
}
.appt-type-card-icon svg { width: 26px; height: 26px; }
.appt-type-card-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.appt-type-card-title {
	color: #fff;
	font-size: 1.05rem;
	font-weight: 700;
	line-height: 1.25;
}
.appt-type-card-desc {
	color: var(--text-muted);
	font-size: 0.88rem;
	line-height: 1.4;
	/* Platz fuer drei Zeilen freihalten: die drei Terminarten haben
	   unterschiedlich lange Beschreibungen und waren dadurch verschieden
	   hoch (129 / 129 / 109 px). So stehen sie gleich hoch nebeneinander,
	   ohne dass Text gekuerzt wird. */
	min-height: calc(3 * 1.4em);
}

/* Detail-Box pro Terminart */
/* ===== Mobile: Detail-Panel klappt direkt unter der gewaehlten Karte auf
   (Panel wird per JS hinter die Karte gehaengt, .appt-detail-inline).
   Ohne das stand es als eigene Box unter allen drei Karten - der
   Zusammenhang zur Auswahl war nicht erkennbar. ===== */
@media (max-width: 768px) {
	/* Bis 768px drei Karten nebeneinander mit Symbol OBEN und Auswahlpunkt
	   oben rechts - nebeneinander sieht man die drei Terminarten auf einen
	   Blick, statt fuer die dritte scrollen zu muessen. */
	.appt-type-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
	.appt-type-card {
		grid-template-columns: 1fr;
		gap: 8px;
		align-items: start;
		padding: 14px 12px;
	}
	.appt-type-card-radio { position: absolute; top: 12px; right: 12px; }
	.appt-type-card-icon { width: 40px; height: 40px; }
	.appt-type-card-icon svg { width: 22px; height: 22px; }
	.appt-type-card-title { font-size: 0.88rem; }
	.appt-type-card-desc { font-size: 0.76rem; min-height: 0; }

	/* Ablauf-Kacheln zweispaltig - vier nebeneinander ergaeben je rund 75px */
	.appt-feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.appt-feature { border-right: 0; padding: 10px 6px; }
	.appt-feature:nth-child(odd) { border-right: 1px solid var(--border-card); }
	.appt-feature:nth-child(-n+2) { border-bottom: 1px solid var(--border-card); }

	/* Absenden ueber die volle Breite */
	.appt-submit-btn { width: 100%; }

	.appt-detail.appt-detail-inline {
		/* keine zweite Box um das Panel: es gehoert optisch zur Karte und
		   traegt deshalb deren Auswahlfarbe */
		background: linear-gradient(180deg, rgba(31, 176, 154, 0.08) 0%, var(--bg-card) 70%);
		border: 1px solid var(--accent, #1fb09a);
		border-top: 0;
		border-radius: 0 0 var(--radius-card, 12px) var(--radius-card, 12px);
		margin: -8px 0 14px;
		padding: 4px 16px 16px;
	}
	/* Das Panel haengt im Kartenraster - es muss ueber alle Spalten laufen,
	   sonst quetscht es sich in die Spalte hinter der gewaehlten Karte. */
	.appt-type-cards > .appt-detail.appt-detail-inline {
		grid-column: 1 / -1;
		border-radius: var(--radius-card, 12px);
		border-top: 1px solid var(--accent, #1fb09a);
		margin: 6px 0 0;
		padding: 16px;
	}

	.appt-detail.appt-detail-inline .appt-detail-body { display: block; }
	.appt-detail.appt-detail-inline .left,
	.appt-detail.appt-detail-inline .right { width: 100%; margin: 0; }
	.appt-detail.appt-detail-inline .right {
		margin-top: 14px;
		padding-top: 14px;
		border-top: 1px solid var(--border-card);
	}
	/* Panel traegt die Akzentfarbe der gewaehlten Karte (siehe unten) */
	.appt-detail.appt-detail-inline .appt-note-box {
		margin-top: 14px;
		padding: 14px 0 0;
		border: 0;
		border-top: 1px solid var(--border-card);
		background: none;
	}
	.appt-detail.appt-detail-inline #appt_extras { margin-top: 0; }
	.appt-detail.appt-detail-inline .appt-hint { display: none; }

	/* Schmale Schirme: die drei Terminarten als Zeilen (Symbol links,
	   Beschriftung daneben, Auswahlpunkt rechts) - in drei Spalten blieben
	   je Karte nur rund 110px und die Beschreibungen brachen auf sechs
	   Zeilen um. */
	@media (max-width: 560px) {
		.appt-type-cards { grid-template-columns: 1fr; gap: 10px; }
		.appt-type-card {
			grid-template-columns: 44px minmax(0, 1fr);
			gap: 12px;
			align-items: center;
			padding: 12px 44px 12px 12px;
		}
		.appt-type-card-radio { top: 50%; right: 14px; margin-top: -9px; }
		.appt-type-card-icon { width: 44px; height: 44px; }
		.appt-type-card-desc { font-size: 0.8rem; }
		/* hier klebt das Panel wieder direkt unter seiner Karte */
		.appt-type-cards > .appt-detail.appt-detail-inline {
			margin: -8px 0 0;
			border-top: 0;
			border-radius: 0 0 var(--radius-card, 12px) var(--radius-card, 12px);
		}
		.appt-type-card.is-active { border-radius: var(--radius-card, 12px) var(--radius-card, 12px) 0 0; }
	}

	/* Karten drinnen ohne eigenen Rahmen - sonst Box in Box in Box */
	.appt-detail.appt-detail-inline .appt-address-card,
	.appt-detail.appt-detail-inline .appt-fairs-card,
	.appt-detail.appt-detail-inline .appt-info-card {
		background: none;
		border: 0;
		padding: 0;
	}
	/* Feld-Ueberschriften im Panel sind Labels, keine Seiten-Headlines */
	#mainform .appt-detail.appt-detail-inline h3,
	.appt-detail.appt-detail-inline h3 {
		font-family: inherit !important;
		font-size: 0.82rem !important;
		font-weight: 700 !important;
		letter-spacing: 0.04em;
		text-transform: uppercase;
		color: var(--text-muted, #8da3a0) !important;
		margin: 14px 0 6px !important;
	}
}

.appt-detail {
	margin: 0 0 18px;
	padding: 18px 20px;
	border: 1px solid var(--border-card);
	border-radius: 10px;
	background: var(--bg-card);
}

/* ===== Panel-Kopf ("Dein Videotermin") ===== */
.appt-panel-head {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0 0 14px;
}
.appt-panel-head strong {
	color: var(--accent, #1fb09a);
	font-size: 1rem;
	font-weight: 700;
}
.appt-panel-ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	flex: none;
	border-radius: 50%;
	border: 1px solid var(--accent, #1fb09a);
	color: var(--accent, #1fb09a);
}
.appt-panel-ico svg { width: 18px; height: 18px; }

/* ===== Abschnittskopf im Panel ("Wunschtermin wählen") ===== */
.appt-subhead {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 10px;
	color: var(--accent, #1fb09a);
}
.appt-subhead strong { font-size: 0.92rem; font-weight: 700; }
.appt-subhead-ico { display: inline-flex; flex: none; }
.appt-subhead-ico svg { width: 18px; height: 18px; }
.appt-subhead-soft strong { color: var(--accent, #1fb09a); font-weight: 600; }
.appt-optional { color: var(--text-muted, #8da3a0); font-weight: 400; }

/* ===== Ablauf-Kacheln im Videotermin-Panel ===== */
.appt-feature-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0;
}
.appt-feature {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	padding: 6px 10px;
	text-align: center;
	border-right: 1px solid var(--border-card);
}
.appt-feature:last-child { border-right: 0; }
.appt-feature-ico { color: var(--text, #fff); }
.appt-feature-ico svg { width: 26px; height: 26px; }
/* text-align explizit: der globale `* { text-align: left }`-Reset
   (stylesheet.css) unterbricht die Vererbung vom zentrierten Elternteil. */
.appt-feature strong { color: #fff; font-size: 0.82rem; font-weight: 700; text-align: center; }
.appt-feature small {
	color: var(--text-muted, #8da3a0);
	font-size: 0.75rem;
	line-height: 1.35;
	text-align: center;
}

/* ===== Absenden + Schlusshinweis ===== */
.appt-submit-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 52px;
	padding: 12px 26px;
	border: 0;
	border-radius: 8px;
	background: var(--btn-bg);
	color: #fff;
	font-size: 0.92rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background .15s ease;
}
.appt-submit-btn:hover { background: var(--btn-bg-hover); }
.appt-submit-ico { display: inline-flex; }
.appt-submit-ico svg { width: 18px; height: 18px; }
.appt-hint {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 14px 0 0;
	padding: 12px 14px;
	border: 1px solid var(--border-card);
	border-radius: 10px;
	color: var(--text-muted, #8da3a0);
	font-size: 0.82rem;
	line-height: 1.4;
}
.appt-hint-ico { display: inline-flex; flex: none; color: var(--accent, #1fb09a); }
.appt-hint-ico svg { width: 18px; height: 18px; }

/* Die mobilen Feinheiten stehen bewusst NACH den Basisregeln oben - die
   aeltere Media-Query weiter oben im Stylesheet wuerde sonst von ihnen
   ueberschrieben (gleiche Spezifitaet, spaeterer Treffer gewinnt). */
@media (max-width: 768px) {
	/* vier Kacheln nebeneinander ergaeben je rund 75px */
	.appt-feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.appt-feature { border-right: 0; padding: 10px 6px; }
	.appt-feature:nth-child(odd) { border-right: 1px solid var(--border-card); }
	.appt-feature:nth-child(-n+2) { border-bottom: 1px solid var(--border-card); }

	/* .appt-detail-body traegt die globalen .flex-wrapper-Masse
	   (width: calc(100% + 1%); margin-left: -.5%) - im Panel ragen die
	   Felder damit ueber das Innenpolster hinaus. */
	.appt-detail.appt-detail-inline .appt-detail-body {
		width: 100% !important;
		margin: 0 !important;
	}
	.appt-detail.appt-detail-inline .form-group,
	.appt-detail.appt-detail-inline input[type="text"],
	.appt-detail.appt-detail-inline textarea {
		width: 100% !important;
		margin-left: 0 !important;
		box-sizing: border-box;
	}

	.appt-submit-btn { width: 100%; }

	/* Das Panel traegt zusaetzlich .cs-section-box - deren Mobilregel nimmt
	   allen Sektionsboxen im Formular Rahmen und Polster (Patch #234). Fuer
	   das Panel holen wir das Innenpolster zurueck, sonst stehen Felder und
	   Kacheln auf der Rahmenkante. */
	#mainform .appt-detail.appt-detail-inline,
	.appt-detail.appt-detail-inline {
		padding: 14px !important;
	}
}
.appt-detail-header {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 16px;
}
.appt-detail-icon {
	width: 40px;
	height: 40px;
	border-radius: 10px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: rgba(31, 176, 154, 0.10);
	color: var(--accent);
	flex: 0 0 40px;
}
.appt-detail-icon svg { width: 22px; height: 22px; }
.appt-detail-title {
	display: block;
	color: #fff;
	font-size: 0.85rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	line-height: 1.2;
}
.appt-detail-subtitle {
	display: block;
	color: var(--text-muted);
	font-size: 0.85rem;
	margin-top: 2px;
}
.appt-hint {
	margin: 6px 0 0;
	font-size: 0.78rem;
	color: var(--text-muted);
}

/* Adress-Karte (Showroom) */
.appt-address-card {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	padding: 14px 16px;
	border: 1px solid var(--border-card);
	border-radius: 10px;
	background: rgba(255, 255, 255, 0.02);
}
.appt-address-icon {
	flex: 0 0 24px;
	color: var(--accent);
	display: inline-flex;
	align-items: flex-start;
	padding-top: 2px;
}
.appt-address-icon svg { width: 22px; height: 22px; }
.appt-address-title {
	display: block;
	color: var(--accent);
	font-weight: 700;
	font-size: 0.95rem;
	margin-bottom: 4px;
}
.appt-address-body {
	font-style: normal;
	color: var(--text);
	font-size: 0.88rem;
	line-height: 1.5;
}

/* Messen-Liste (rechte Spalte bei Messetermin) - statt Select */
.appt-fairs-card {
	padding: 14px 16px;
	border: 1px solid var(--border-card);
	border-radius: 10px;
	background: rgba(255, 255, 255, 0.02);
}
.appt-fairs-title {
	display: block;
	color: var(--accent);
	font-weight: 700;
	font-size: 0.95rem;
	margin: 0 0 10px;
}
.appt-fairs-empty {
	margin: 0;
	color: var(--text-muted);
	font-size: 0.85rem;
	font-style: italic;
}
.appt-fairs-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0;
}
.appt-fairs-list li { margin-bottom: 5px; }
.appt-fairs-list li:last-child { margin-bottom: 0; }
.appt-fair-option {
	display: flex;
	align-items: center;
	gap: 10px;
	width: 100%;
	padding: 6px 12px;
	background: transparent;
	border: 1px solid transparent;
	border-radius: 8px;
	color: var(--text);
	font-size: 0.88rem;
	text-align: left;
	cursor: pointer;
	transition: background .15s ease, border-color .15s ease, color .15s ease;
	font-family: inherit;
}
.appt-fair-option:hover {
	background: rgba(31, 176, 154, 0.06);
	border-color: rgba(31, 176, 154, 0.25);
}
.appt-fair-option.is-active {
	background: rgba(31, 176, 154, 0.10);
	border-color: var(--accent);
	color: #fff;
}
.appt-fair-check {
	flex: 0 0 18px;
	width: 18px;
	height: 18px;
	border-radius: 4px;
	border: 1.5px solid var(--border-strong);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: transparent;
	background: transparent;
	transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.appt-fair-check svg { width: 14px; height: 14px; }
.appt-fair-option.is-active .appt-fair-check {
	background: var(--accent);
	border-color: var(--accent);
	color: #fff;
}
.appt-fair-label { flex: 1 1 auto; min-width: 0; }

/* Info-Karte (Video) */
.appt-info-card {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	padding: 14px 16px;
	border: 1px solid var(--border-card);
	border-radius: 10px;
	background: rgba(255, 255, 255, 0.02);
}
.appt-info-icon {
	flex: 0 0 24px;
	color: var(--accent);
	display: inline-flex;
	align-items: flex-start;
	padding-top: 2px;
}
.appt-info-icon svg { width: 22px; height: 22px; }
.appt-info-title {
	display: block;
	color: var(--accent);
	font-weight: 700;
	font-size: 0.95rem;
	margin-bottom: 16px;
}
.appt-info-body {
	margin: 0;
	color: var(--text);
	font-size: 0.85rem;
	line-height: 1.5;
}
.appt-info-list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.appt-info-list li {
	position: relative;
	padding-left: 20px;
	color: #fff;
	font-size: 0.85rem;
	line-height: 1.4;
	margin-bottom: 5px;
}
.appt-info-list li::before {
	content: '';
	position: absolute;
	left: 4px;
	top: 0.5em;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: #fff;
}

/* Öffnungszeiten unter der Adresse in der Showroom-Infobox. */
.appt-address-hours {
	margin: 10px 0 0;
	font-size: 0.8rem;
	color: var(--text-muted);
}

@media (max-width: 900px) {
	/* 769-900px: eine Spalte. Darunter uebernehmen die Mobilregeln weiter
	   oben (bis 768px drei Spalten mit Symbol oben, unter 560px Zeilen). */
	.appt-type-cards { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
	.appt-type-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
	.appt-type-cards { grid-template-columns: 1fr; }
}

/* =====================================================================
   Customer-Support Formulare: abgesetzte Sektions-Boxen
   Schwarz-transparente Container pro Block, ersetzen die <hr>-Trennlinien.
   Wiederverwendbar fuer alle #mainform-Formulare.
   ===================================================================== */
.cs-section-box {
	background: rgba(0, 0, 0, 0.25);
	border: 1px solid rgba(255, 255, 255, 0.05);
	border-radius: var(--radius-card);
	padding: 22px 24px;
	margin: 0 0 16px;
	box-sizing: border-box;
}
@media (max-width: 700px) {
	.cs-section-box { padding: 16px; }
}

/* ===== Mobile-Aufraeumen der Support-Formulare ===================
   Beobachtung aus dem Mobile-Review: verschachtelte Boxen (die Seite
   liegt in .box > .box-inner, darin nochmal .cs-section-box, darin
   teils weitere Karten) und Felder in unterschiedlichen Groessen.
   Auf schmalen Screens kostet jede Rahmenebene Platz, ohne Information
   zu tragen - deshalb hier nur EINE Ebene und einheitliche Felder. */
@media (max-width: 768px) {
	/* aeusseren Rahmen weglassen: der Bildschirm ist der Container */
	#mainform .box,
	.module .box.box-mobile {
		background: none !important;
		border: 0 !important;
		box-shadow: none !important;
		padding: 0 !important;
	}
	.module .box.box-mobile > .box-inner { padding: 0 !important; }
	/* Der Rahmen der Seite sitzt auf .box-inner, nicht auf .box - enthaelt
	   die Seite eigene Karten (.data-card / .cs-section-box, z.B. Profil
	   "Geschaeft & Einkaeufer"), stand er als zweiter Rahmen um die Karten
	   herum. Dann traegt nur noch die Karte selbst den Rahmen. */
	.module .box.box-mobile > .box-inner:has(.data-card),
	.module .box.box-mobile > .box-inner:has(.cs-section-box),
	.module .box.box-mobile > .box-inner:has(.invite-block-form-card),
	.module .box.box-mobile > .box-inner:has(.invite-roles-card) {
		background: none !important;
		border: 0 !important;
		box-shadow: none !important;
		/* ... und ohne seitlichen Innenabstand: sonst stehen die Karten
		   32px schmaler als der Status-Banner darueber, der ausserhalb
		   dieser Box liegt. */
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	/* Sektionen behalten ihre Box, aber ohne doppelte Innenrahmen.
	   Ausnahme: das Terminart-Panel IST die Karte (Rahmen in der
	   Auswahlfarbe, eigenes Innenpolster) - siehe .appt-detail-inline. */
	#mainform .cs-section-box .cs-section-box:not(.appt-detail-inline),
	#mainform .cs-section-box .box,
	#mainform .cs-section-box .outer-box {
		background: none !important;
		border: 0 !important;
		padding: 0 !important;
		margin: 0 !important;
	}

	/* Einheitliche Feldgroessen: gleiche Hoehe, gleiche Breite, gleicher
	   Innenabstand - egal ob Input, Select oder Textarea. */
	#mainform input[type="text"],
	#mainform input[type="email"],
	#mainform input[type="tel"],
	#mainform input[type="number"],
	#mainform input[type="date"],
	#mainform input[type="time"],
	#mainform select,
	#mainform textarea {
		width: 100% !important;
		box-sizing: border-box !important;
		padding: 14px 16px !important;
		font-size: 16px !important;   /* verhindert den iOS-Zoom beim Fokus */
	}
	#mainform textarea { min-height: 140px; resize: vertical; }
	#mainform .form-group { margin-bottom: 14px; }

	/* zweispaltige Formularbloecke untereinander */
	#mainform .flex-wrapper.flex-top > .left,
	#mainform .flex-wrapper.flex-top > .right {
		width: 100% !important;
		max-width: 100% !important;
		margin: 0 !important;
	}
	#mainform .flex-wrapper.flex-top > .right { margin-top: 4px !important; }

	/* Absende-Button auf volle Breite */
	#mainform input[type="submit"],
	#mainform button[type="submit"],
	#mainform .btn-submit { width: 100%; }

	/* HANDSCHRIFT (2026-08-15, Mockup Kundenservice): jede Sektion ist
	   eine KARTE - Rahmen, Radius, einheitliches Polster; dazu Versal-
	   Kopfzeilen, Optional-Chip am Upload und der Absende-Knopf als
	   klarer Abschluss. Gleiche Sprache wie "Mitarbeiter einladen".
	   (Ersetzt die flache Variante aus #234 - die Einheitlichkeit kommt
	   jetzt aus den durchgaengigen Karten selbst.)
	   Ausnahme: das Terminart-Panel bleibt seine eigene Karte in der
	   Auswahlfarbe (.appt-detail-inline). */
	#mainform .cs-section-box:not(.appt-detail-inline) {
		background: var(--bg-card) !important;
		border: 1px solid var(--border-card) !important;
		border-radius: 12px;
		padding: 16px !important;
		margin: 0 0 14px !important;
		box-sizing: border-box;
	}
	/* Sektionstitel als Karten-Kopf: Versalien, fett, weiss. Die
	   Feldbeschriftungen im aufgeklappten Terminart-Panel behalten ihren
	   Label-Stil (deren Regel ist spezifischer). */
	#mainform .cs-section-box h3 {
		display: flex;
		align-items: center;
		gap: 10px;
		font-family: inherit !important;
		font-size: 15px !important;
		font-weight: 700 !important;
		letter-spacing: 0.06em;
		text-transform: uppercase !important;
		color: #fff !important;
		margin: 0 0 12px !important;
	}
	/* Upload-Kopf: Bueroklammer im Icon-Kreis davor + "OPTIONAL"-Chip
	   dahinter (Uploads sind in allen Formularen optional). Die Seite
	   "Fragen zum Auftrag" bringt ihren eigenen Kopf mit (.cs-fieldhead). */
	#mainform h3:not(.cs-fieldhead):has(+ .form-group.multiupload) {
		/* Icon | Titel (mehrzeilig erlaubt) | Chip - eine Zeile wie im
		   Mockup. Grid statt Flex: der nackte Textknoten wird zum
		   anonymen Grid-Item in der Mittelspalte. */
		display: grid;
		grid-template-columns: 34px minmax(0, 1fr) auto;
		align-items: center;
		column-gap: 10px;
	}
	#mainform h3:not(.cs-fieldhead):has(+ .form-group.multiupload)::before {
		content: '';
		flex: none;
		width: 34px;
		height: 34px;
		border: 1px solid rgba(31, 176, 154, 0.55);
		border-radius: 50%;
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231fb09a' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 12.5 12.5 21a5 5 0 0 1-7-7l8.5-8.5a3.4 3.4 0 0 1 4.8 4.8L10.2 18.9a1.8 1.8 0 0 1-2.5-2.5l7.8-7.8'/%3E%3C/svg%3E");
		background-repeat: no-repeat;
		background-position: center;
		background-size: 17px;
	}
	#mainform h3:not(.cs-fieldhead):has(+ .form-group.multiupload)::after {
		content: 'Optional';
		flex: none;
		padding: 3px 10px;
		border: 1px solid rgba(31, 176, 154, 0.55);
		border-radius: 999px;
		color: var(--accent, #1fb09a);
		font-size: 11px;
		font-weight: 700;
		letter-spacing: 0.08em;
		text-transform: uppercase;
	}
	/* Absenden = klarer Abschluss: volle Breite, kraeftig, Versalien. */
	#mainform .form-submit input[type="submit"],
	#mainform .form-submit button[type="submit"] {
		width: 100%;
		min-height: 52px;
		border-radius: 10px;
		font-weight: 700;
		letter-spacing: 0.05em;
		text-transform: uppercase;
		box-sizing: border-box;
	}
	/* Pflicht-Markierung wandert vom Kasten auf das Feld selbst -
	   konsistent mit dem Anmerkungsfeld, das schon so markiert ist. */
	#mainform .cs-section-box:has(select[name="id_customer_region"]) select[name="id_customer_region"],
	#mainform .cs-section-box:has(input[name="id_customer_region"]) input[name="id_customer_region"] {
		border-color: rgba(200, 111, 22, 0.55) !important;
		background: rgba(217, 122, 30, 0.07) !important;
	}
}

/* Vorausgefuellter Daten-Block (Store/Ansprechpartner/Telefon/E-Mail):
   minimal heller als die uebrigen Boxen, damit er sich von den
   Eingabe-/Themenbereichen optisch abhebt. */
#mainform .cs-section-box.details-content {
	background: rgba(255, 255, 255, 0.045);
	border-color: rgba(255, 255, 255, 0.085);
}

/* CS-Formulare kompakter: weniger Abstand zwischen den Feldern in den
   Sektions-Boxen ("Deine Daten" / "Abhol-/Lieferadresse" / Themenbloecke). */
#mainform .cs-section-box .form-group { margin-bottom: 10px; }
#mainform .cs-section-box h3 { margin-top: 0; margin-bottom: 12px; }

/* Abhol-/Lieferadress-Spalte als dunkel-orangene Box - aber NUR wenn sie
   wirklich die Adress-Auswahl enthaelt (einige Formulare haben dort nur
   Telefon/E-Mail, weil der Adressblock auskommentiert ist - die bleiben
   neutral). Zwei Pfade: .right direkt unter der Box ODER unter einem
   inneren .flex-wrapper (beide Markup-Varianten im Bestand). */
#mainform .cs-section-box.details-content > .right:has(select[name="adressen"]),
#mainform .cs-section-box.details-content > .flex-wrapper > .right:has(select[name="adressen"]) {
	border: 1px solid rgba(200, 111, 22, 0.55);
	background: rgba(217, 122, 30, 0.07);
	border-radius: 10px;
	padding: 16px 18px 8px 18px;
	box-sizing: border-box;
}

/* Formulare mit .details-content-BOX und innerem .flex-wrapper: der
   flex-wrapper ist Flex-Kind der Box und wuerde shrink-to-fit kollabieren
   (riesige Leerflaeche rechts) - auf volle Breite ziehen, damit .left/.right
   sauber 50/50 aufteilen. */
#mainform .cs-section-box.details-content > .flex-wrapper {
	width: 100%;
}

/* Weitere Pflicht-Bereiche in dunkel-orange: die komplette Marken-Box
   (bzw. "Anliegen" - dort ist id_customer_region ein Textfeld) und das
   Anmerkungsfeld ("Erlaeutere Dein Anliegen"). */
#mainform .cs-section-box:has(select[name="id_customer_region"]),
#mainform .cs-section-box:has(input[name="id_customer_region"]) {
	border-color: rgba(200, 111, 22, 0.55);
	background: rgba(217, 122, 30, 0.07);
}
#mainform textarea[name="note"] {
	border-color: rgba(200, 111, 22, 0.55) !important;
	background: rgba(217, 122, 30, 0.07) !important;
}
/* =====================================================================
   Auftrags-Karte im Formular "Fragen zu diesem Auftrag"
   Eine Karte statt sieben gleich gewichteter Kaertchen: Auftragsart und
   Betrag im Kopf, Datum / Status / Nummer in einer Zeile, PDF als Knopf.
   ===================================================================== */
.oref-card {
	margin: 0 0 18px;
	padding: 16px;
	border: 1px solid var(--border-card);
	border-radius: 12px;
	background: var(--bg-card);
}
.oref-head { display: flex; align-items: center; gap: 12px; }
.oref-ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	flex: none;
	border-radius: 50%;
	border: 1px solid var(--accent, #1fb09a);
	color: var(--accent, #1fb09a);
}
.oref-ico svg { width: 22px; height: 22px; }
.oref-head-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.oref-title { color: #fff; font-size: 1.05rem; font-weight: 700; }
.oref-total { color: var(--accent, #1fb09a); font-size: 1.05rem; font-weight: 700; }

.oref-facts {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
	margin: 14px 0 0;
	padding: 14px 0 0;
	border-top: 1px solid var(--border-card);
}
.oref-fact { display: flex; align-items: flex-start; gap: 8px; min-width: 0; }
.oref-fact + .oref-fact { border-left: 1px solid var(--border-card); padding-left: 10px; }
.oref-fact-ico { display: inline-flex; flex: none; color: var(--text-muted, #8da3a0); }
.oref-fact-ico svg { width: 18px; height: 18px; }
.oref-fact-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.oref-fact-label {
	color: var(--text-muted, #8da3a0);
	font-size: 0.72rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
.oref-fact-value { color: #fff; font-size: 0.86rem; line-height: 1.3; overflow-wrap: anywhere; }
.oref-dot {
	display: inline-block;
	width: 8px;
	height: 8px;
	margin-right: 6px;
	border-radius: 50%;
	border: 2px solid var(--accent, #1fb09a);
	vertical-align: middle;
}

.oref-actions { display: flex; gap: 10px; margin: 14px 0 0; }
.oref-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	flex: 1 1 auto;
	min-height: 46px;
	padding: 10px 14px;
	border: 1px solid var(--border-strong);
	border-radius: 10px;
	color: #fff;
	font-size: 0.86rem;
	text-decoration: none;
	transition: border-color .15s ease, color .15s ease;
}
.oref-btn:hover { border-color: var(--accent, #1fb09a); color: var(--accent, #1fb09a); }
/* Globale Regel `a span { display: none }` wuerde die Beschriftung schlucken. */
.oref-btn span { display: inline-flex !important; }
.oref-btn-ico svg { width: 18px; height: 18px; }

/* Feldkoepfe mit Symbol ("Worum geht es?", "Datei anhaengen").
   h3 traegt global eine grosse Serif-Schrift - hier ist es eine
   Feldbeschriftung, keine Seitenueberschrift. */
.cs-fieldhead {
	display: flex;
	align-items: center;
	gap: 8px;
	font-family: inherit !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	color: #fff;
}
.cs-fieldhead-ico { display: inline-flex; flex: none; color: var(--accent, #1fb09a); }
.cs-fieldhead-ico svg { width: 20px; height: 20px; }
.cs-fieldhead-opt { color: var(--text-muted, #8da3a0); font-weight: 400; }
/* Auftragsreferenz unter der Ueberschrift */
.cs-header-ref { letter-spacing: 0.04em; text-transform: uppercase; }

@media (max-width: 560px) {
	/* Drei Angaben nebeneinander waeren je rund 90px breit - untereinander
	   bleiben die Werte lesbar. */
	.oref-facts { grid-template-columns: 1fr; gap: 12px; }
	.oref-fact + .oref-fact { border-left: 0; padding-left: 0; }
	.oref-head { flex-wrap: wrap; }
}

/* Ausnahme Ordertermin: dort ist die Anmerkung ausdruecklich optional -
   die orange Pflichtmarkierung waere eine falsche Ansage. */
#mainform .appt-note-box textarea[name="note"] {
	border-color: var(--border-strong) !important;
	background: transparent !important;
	height: 96px;
}

/* Upload-Dropzone exakt so hoch wie die Textarea daneben (158px), damit die
   Info-Texte unter Textarea (links) und Dropzone (rechts) buendig liegen.
   Icon wird dafuer kompakter skaliert und der Inhalt vertikal zentriert. */
#mainform .multiupload #dropzone {
	height: 158px;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: 14px 20px;
}
#mainform .multiupload #dropzone .upload_link {
	padding-top: 60px;
	background-size: 44px auto;
	margin-bottom: 6px;
}
/* Leeres Fehler-Div nimmt sonst (margin-top) Hoehe weg und verschiebt die
   rechte Spalte gegen die linke - im Leerzustand ausblenden. */
#mainform .multiupload #fileErrors:empty { display: none; }

/* Textarea als Block (statt inline-block) - sonst entsteht unter ihr eine
   Baseline-Luecke, die den linken Info-Text gegen den rechten versetzt. */
#mainform .flex-wrapper:has(.multiupload) .left textarea { display: block; }

/* Trennlinien in allen Customer-Support-Formularen entfernt - die
   Themenbereiche werden jetzt durch .cs-section-box gruppiert. */
#mainform hr { display: none !important; }

/* Auftrag-Referenz-Link */
.order-ref-link {
	color: var(--text) !important;
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: 4px;
}
.order-ref-link:hover { color: var(--accent) !important; }


/* ---------------------------------------------------------------
   24f. Kundendaten (finalstepedit.blade.php)
   --------------------------------------------------------------- */

/* h3-Sektionen mit Section-Header-Look (Icon + uppercase) im Formular. */
.module .box.box-mobile > .box-inner form > h3 {
	margin: 32px 0 16px;
	font-size: 0.95rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--text);
	display: flex;
	align-items: center;
	gap: 12px;
	padding-top: 12px;
	border-top: 1px solid var(--border-divider);
}
.module .box.box-mobile > .box-inner form > h3:first-of-type {
	margin-top: 0;
	padding-top: 0;
	border-top: 0;
}
.module .box.box-mobile > .box-inner form > h3::before {
	content: '';
	width: 32px;
	height: 32px;
	border-radius: 8px;
	background: var(--accent-soft-bg);
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231fb09a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='8' r='4'/><path d='M4 21a8 8 0 0 1 16 0'/></svg>");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 18px 18px;
	flex: 0 0 32px;
}

/* hr im Form als feiner Trenner */
.module .box.box-mobile > .box-inner form > hr {
	border: 0;
	border-top: 1px solid var(--border-divider);
	margin: 24px 0;
}

/* form-50 / form-66 / form-33 fix */
.form-50, .form-66, .form-33 { width: auto; }

/* Status-Banner ueber dem Formular: zeigt an, ob alle Unternehmens-
   daten vollstaendig sind. Linke Icon-Kachel (gruener Haken / orange
   Hinweis), Mittel-Text (Headline + Beschreibung / Liste fehlender
   Angaben), rechts Status-Badge mit pulsierendem Dot. */
.customer-data-banner {
	display: flex;
	align-items: center;
	gap: 22px;
	padding: 22px 26px;
	margin: 0 0 22px 0;
	background: var(--bg-card);
	background-image: var(--bg-card-image, none);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	box-sizing: border-box;
}
.customer-data-banner.is-complete   { border-color: var(--accent); }
.customer-data-banner.is-incomplete { border-color: rgba(240, 140, 46, .55); }

.customer-data-banner-icon {
	flex: 0 0 56px;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1px solid currentColor;
	background: rgba(0, 0, 0, .35);
}
.customer-data-banner.is-complete   .customer-data-banner-icon { color: var(--accent); }
.customer-data-banner.is-incomplete .customer-data-banner-icon { color: #f08c2e; }
.customer-data-banner-icon svg {
	width: 28px;
	height: 28px;
	display: block;
}

.customer-data-banner-text {
	flex: 1 1 auto;
	min-width: 0;
}
.customer-data-banner-text h3 {
	margin: 0 0 4px 0;
	font-size: 1.05rem;
	font-weight: 700;
	color: #fff;
	text-transform: none;
	letter-spacing: 0;
	line-height: 1.3;
}
.customer-data-banner-text p {
	margin: 0;
	color: var(--text-muted);
	font-size: .9rem;
	line-height: 1.55;
	max-width: 65ch;
}
.customer-data-banner-text strong {
	color: #fff;
	font-weight: 600;
}

.customer-data-banner-status {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 10px 16px;
	border-radius: 10px;
	font-size: .82rem;
	font-weight: 600;
	letter-spacing: .02em;
	white-space: nowrap;
}
.customer-data-banner-status .status-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	flex: 0 0 8px;
}
.customer-data-banner.is-complete .customer-data-banner-status {
	color: var(--accent);
	background: var(--accent-soft-bg, rgba(31, 176, 154, .12));
	border: 1px solid rgba(31, 176, 154, .35);
}
.customer-data-banner.is-complete .customer-data-banner-status .status-dot {
	background: var(--accent);
	box-shadow: 0 0 0 4px rgba(31, 176, 154, .25);
}
.customer-data-banner.is-incomplete .customer-data-banner-status {
	color: #f08c2e;
	background: rgba(240, 140, 46, .12);
	border: 1px solid rgba(240, 140, 46, .35);
}
.customer-data-banner.is-incomplete .customer-data-banner-status .status-dot {
	background: #f08c2e;
	box-shadow: 0 0 0 4px rgba(240, 140, 46, .25);
}

@media (max-width: 820px) {
	.customer-data-banner {
		flex-wrap: wrap;
		padding: 18px 20px;
		gap: 16px;
	}
	.customer-data-banner-text  { flex: 1 1 100%; }
	.customer-data-banner-status {
		flex: 1 1 100%;
		justify-content: center;
	}
}


/* ---------------------------------------------------------------
   24g. Admin Dashboard
   --------------------------------------------------------------- */
ul.dashboard-links {
	border-top: 1px solid var(--border-divider) !important;
	margin: 0 0 24px 0 !important;
	padding: 0;
}
ul.dashboard-links li {
	border-bottom: 1px solid var(--border-divider) !important;
	padding: 12px 0 !important;
}
ul.dashboard-links li a {
	color: var(--text);
	font-size: 0.9rem !important;
	text-decoration: none;
}
ul.dashboard-links li a:hover { color: var(--accent); }
ul.dashboard-links .circle {
	width: 24px !important;
	height: 24px !important;
	min-width: 24px;
	border-radius: 50%;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	font-size: 0.7rem;
	font-weight: 700;
}
ul.dashboard-links.dashboard-links-list .circle {
	background: var(--badge-bg) !important;
	color: #fff !important;
	float: left;
	margin: 0 10px 0 0 !important;
}
ul.dashboard-links.dashboard-links-list .link-btn {
	background: transparent !important;
	border: 1px solid var(--border-strong) !important;
	color: var(--text) !important;
	padding: 6px 12px !important;
	border-radius: var(--radius-chip) !important;
	font-size: 0.7rem !important;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	float: right;
}
ul.dashboard-links.dashboard-links-list .link-btn:hover {
	border-color: var(--accent) !important;
	color: var(--accent) !important;
}
ul.dashboard-links.dashboard-links-onloarding li a {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

/* Admin Dashboard headlines */
.admin-dashboard h4 {
	font-size: 0.85rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--text);
	margin: 0 0 12px;
	display: flex;
	align-items: center;
	gap: 8px;
}
.admin-dashboard h4 .link {
	margin-left: auto;
	color: var(--accent);
	font-size: 0.72rem;
	text-decoration: none;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

/* Section headline */
.dashboard-section-headline {
	font-size: 0.85rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin: 0 0 16px;
	color: var(--text);
}

/* KPI tile look */
.icon-box.kpi-tile {
	background: var(--bg-card) !important;
	border: 1px solid var(--border-card) !important;
	text-align: left;
	padding: 18px 20px !important;
}
.icon-box.kpi-tile:hover { border-color: var(--accent) !important; }
.icon-box.kpi-tile .kpi-num {
	color: var(--accent) !important;
	font-size: 1.8rem !important;
	font-weight: 700;
}
.icon-box.kpi-tile h3 {
	color: var(--text-muted) !important;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	font-size: 0.7rem !important;
}
.icon-box.kpi-tile .kpi-cta {
	color: var(--accent) !important;
	font-size: 0.72rem !important;
}

/* Tasks-Bereich "Händler/Aufträge/Anfragen" : Akzentlinie links */
.tasks-box-accent-green {
	border-left: 3px solid var(--accent);
	padding-left: 18px;
}


/* ---------------------------------------------------------------
   25. Product Card (Kampagne)
   --------------------------------------------------------------- */
.product-card {
	background: var(--bg-card);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	overflow: hidden;
	display: flex;
	flex-direction: column;
}
.product-card-media {
	background: var(--bg-elev);
	aspect-ratio: 1/1;
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
}
.product-card-media img { max-width: 100%; max-height: 100%; }
.product-card-badge {
	position: absolute;
	top: 10px;
	left: 10px;
	background: var(--badge-bg);
	color: #fff;
	padding: 4px 10px;
	border-radius: 4px;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}
.product-card-body { padding: 14px 16px; }
.product-card-title {
	font-weight: 700;
	font-size: 0.85rem;
	color: var(--text);
	margin: 0 0 4px;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.product-card-variant {
	color: var(--text-muted);
	font-size: 0.8rem;
	margin-bottom: 8px;
}
.product-card-prices {
	font-size: 0.82rem;
	color: var(--text);
}
.product-card-prices .ek { color: var(--accent); font-weight: 700; }
.product-card-foot {
	padding: 0 16px 16px;
}
.product-card-foot .btn {
	width: 100%;
	background: transparent;
	border: 1px solid var(--border-strong);
	color: var(--text) !important;
}
.product-card-foot .btn:hover {
	border-color: var(--accent);
	color: var(--accent) !important;
	background: var(--accent-soft-bg);
}

/* ---------------------------------------------------------------
   Topbar: Store-Name als Dropdown (Kundendaten/Mitarbeiter/PW/Logout)
   --------------------------------------------------------------- */
#id_topbar #id_menu ul li.account-dropdown {
	position: relative !important;
	display: inline-flex !important;
	align-items: center;
	line-height: normal !important;
}

/* Dropdown-Trigger (Store-Name + Caret) */
#id_topbar #id_menu ul li.account-dropdown > a.account-dropdown-trigger {
	display: inline-flex !important;
	align-items: center;
	gap: 8px;
	cursor: pointer;
	color: #fff !important;
	text-decoration: none !important;
	white-space: nowrap;
	line-height: 1.2;
	padding-left: 20px; /* Platz fuer das Store-Icon (Background) */
}
#id_topbar #id_menu ul li.account-dropdown > a.account-dropdown-trigger:hover {
	color: var(--accent) !important;
	text-decoration: none !important;
}
#id_topbar #id_menu ul li.account-dropdown > a.account-dropdown-trigger > span:not(.account-dropdown-caret) {
	display: inline-block;
}
.account-dropdown-caret {
	display: inline-block;
	font-size: 10px;
	line-height: 1;
	transition: transform .2s ease;
	color: var(--text-muted);
}
.account-dropdown.is-open .account-dropdown-caret { transform: rotate(180deg); }

/* Dropdown-Menue: vertikal ausgerichtet, ueberschreibt globale "li display:inline" Regel */
#id_topbar #id_menu ul li.account-dropdown ul.account-dropdown-menu {
	position: absolute;
	top: calc(100% + 10px);
	right: 0;
	min-width: 220px;
	margin: 0 !important;
	padding: 8px 0 !important;
	list-style: none;
	background: var(--bg-card);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	box-shadow: 0 10px 28px rgba(0,0,0,0.45);
	opacity: 0;
	visibility: hidden;
	transform: translateY(-6px);
	transition: opacity .15s ease, transform .15s ease, visibility .15s ease;
	z-index: 1000;
	display: block !important;
	text-align: left !important;
}
#id_topbar #id_menu ul li.account-dropdown.is-open ul.account-dropdown-menu {
	opacity: 1 !important;
	visibility: visible !important;
	transform: translateY(0);
}
#id_topbar #id_menu ul li.account-dropdown ul.account-dropdown-menu li {
	display: block !important;
	width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	line-height: 1.4 !important;
}
#id_topbar #id_menu ul li.account-dropdown ul.account-dropdown-menu li a {
	display: block !important;
	padding: 10px 18px !important;
	color: var(--text) !important;
	text-decoration: none !important;
	font-size: 0.85rem !important;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	transition: background .15s ease, color .15s ease;
	border: 0 !important;
	white-space: nowrap;
}
#id_topbar #id_menu ul li.account-dropdown ul.account-dropdown-menu li a:hover {
	background: var(--accent-soft-bg);
	color: var(--accent) !important;
	text-decoration: none !important;
}

/* ============================================================
   FinalStep-Edit Dokumenten-Upload: 2-Spalten-Layout
   Links: Upload (Dropzone + neue Datei-Liste)
   Rechts: Tabelle "Dateien" (bestehende Dokumente)
   Wenn keine Dokumente vorhanden -> Modifier --solo,
   linke Spalte nimmt 100% Breite ein.
   ============================================================ */
.finalstep-uploads-row {
	display: flex;
	flex-wrap: wrap;
	gap: 24px;
	align-items: flex-start;
	margin-bottom: 14px;
}
.finalstep-uploads-col-left,
.finalstep-uploads-col-right {
	flex: 1 1 0;
	min-width: 0;
}
/* Wenn nur Upload (keine bestehenden Dokumente): rechte Spalte
   nimmt 100% Breite ein. */
.finalstep-uploads-row--solo .finalstep-uploads-col-right {
	flex: 1 1 100%;
	max-width: 100%;
}
.finalstep-uploads-existing-headline {
	margin: 0 0 10px 0;
	font-size: 0.85rem;
	font-weight: 600;
	letter-spacing: normal;
	text-transform: none;
	color: var(--text-muted);
}
/* Mobile: Spalten untereinander */
@media (max-width: 900px) {
	.finalstep-uploads-row {
		flex-direction: column;
		gap: 16px;
	}
	.finalstep-uploads-col-left,
	.finalstep-uploads-col-right {
		flex: 1 1 100%;
		max-width: 100%;
	}
}

/* ============================================================
   Upload-Listen als Tabelle (Optik analog .invite-table /
   "Eingeladene Mitarbeiter"). Wird ueberall verwendet, wo
   persistierte Dateien angezeigt werden:
   - customer/finalstepedit.blade.php  (Stammdaten - Dokumente)
   - admin/customers/edit.blade.php    (Kunden-Dokumente)
   - admin/orders/admin-order-thanks.blade.php (Auftrags-Anhang)
   - customer/multiindex.blade.php     (Dropzone-Liste, JS)
   Partial:   resources/views/customer/_uploaded-file-row.blade.php
   ============================================================ */
.upload-files-table {
	width: 100%;
	border-collapse: collapse;
	margin: 4px 0 0;
}
.upload-files-table thead th {
	text-align: left;
	font-size: .75rem;
	text-transform: uppercase;
	letter-spacing: .08em;
	color: var(--text-muted);
	padding: 8px 6px;
	border-bottom: 1px solid var(--border-divider);
	font-weight: 600;
}
.upload-files-table .upload-files-table__actions-head {
	text-align: right;
	width: 1%;
	white-space: nowrap;
}
.upload-files-table tbody tr {
	border-bottom: 1px solid var(--border-divider);
}
.upload-files-table tbody tr:last-child {
	border-bottom: 0;
}
.upload-files-table td {
	padding: 12px 6px;
	vertical-align: middle;
}

/* Spalte 1: Datei (Icon + Name, optional gestapelt mit Meta + Progress) */
.upload-files-row__name-cell {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	vertical-align: middle;
	max-width: 100%;
}
.upload-files-row__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: 8px;
	background: var(--accent-soft-bg);
	color: var(--accent-soft-text);
	flex: 0 0 32px;
}
.upload-files-row__icon svg {
	width: 16px;
	height: 16px;
}
.upload-files-row__name-stack {
	display: inline-flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}
.upload-files-row__name-label {
	color: var(--text);
	font-weight: 500;
	text-decoration: none;
	word-break: break-all;
}
.upload-files-row__name-label:hover {
	color: var(--accent);
	text-decoration: underline;
}
.upload-files-row__meta {
	font-size: .78rem;
	color: var(--text-muted);
}
.upload-files-row__progress {
	margin-top: 4px;
	width: 200px;
	max-width: 100%;
	height: 4px;
	background: var(--bg-elev);
	border-radius: 2px;
	overflow: hidden;
}
.upload-files-row__progress-bar {
	height: 100%;
	width: 0%;
	background: var(--accent-strong);
	transition: width .15s ease;
}
.upload-files-row[data-uploading="1"] {
	opacity: .85;
}

/* Spalte 2: Aktionen (Icon-Buttons, rechts ausgerichtet) */
.upload-files-row__actions {
	text-align: right;
	white-space: nowrap;
}
.upload-files-row__action {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: 8px;
	border: 1px solid var(--border-card);
	background: transparent;
	color: var(--text-muted);
	cursor: pointer;
	margin-left: 6px;
	padding: 0;
	transition: color .15s ease, border-color .15s ease, background .15s ease;
}
.upload-files-row__action svg {
	width: 16px;
	height: 16px;
}
.upload-files-row__action:hover {
	color: var(--accent);
	border-color: var(--accent);
	background: var(--accent-soft-bg);
	text-decoration: none;
}
.upload-files-row__action--delete:hover {
	color: var(--status-danger);
	border-color: var(--status-danger);
	background: rgba(231, 76, 60, .08);
}

/* Mobile: Actions-Spalte etwas kompakter, Name-Label darf umbrechen */
@media (max-width: 768px) {
	.upload-files-table td { padding: 10px 4px; }
	.upload-files-row__icon { width: 28px; height: 28px; flex: 0 0 28px; }
	.upload-files-row__action { width: 28px; height: 28px; margin-left: 4px; }
	.upload-files-row__action svg { width: 14px; height: 14px; }
}

/* =============================================================
   Campaign Hero - KPI-Boxen (Haendler /customer-userreorders/{id})
   ============================================================= */
.campaign-hero-facts-wrap {
	/* Hero ist flex-column: auto-Margin drueckt die KPI-Kacheln an den
	   unteren Rand des Hero-Bildes statt direkt unter die Headline. */
	margin-top: auto;
	padding-top: 14px;
	width: 100%;
	text-align: left;
}
.campaign-hero-facts-mobile-title {
	margin-bottom: 10px;
	text-align: left;
}
.campaign-hero-facts-mobile-title h6 {
	font-size: 11px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--text-muted);
	margin: 0 0 4px 0;
	text-align: left;
}
.campaign-hero-facts-mobile-title h4 {
	margin: 0;
	color: #fff;
	font-weight: 500;
	text-align: left;
}

.campaign-hero-facts {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 12px;
	width: 100%;
	text-align: left;
}
.campaign-hero-fact {
	display: grid;
	grid-template-columns: auto 1fr;
	column-gap: 10px;
	row-gap: 0;
	align-items: start;
	background: rgba(0, 0, 0, .45);
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	border: 1px solid rgba(255, 255, 255, .08);
	border-radius: 10px;
	padding: 10px 14px 11px;
	min-height: 0;
}
.campaign-hero-fact > svg {
	grid-column: 1;
	grid-row: 1;
	width: 20px;
	height: 20px;
	color: var(--accent);
	align-self: center;
	justify-self: start;
}
.campaign-hero-fact-label {
	grid-column: 2;
	grid-row: 1;
	align-self: center;
	justify-self: start;
	font-size: 11px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--accent);
	line-height: 1.2;
	text-align: left;
}
.campaign-hero-fact-value {
	grid-column: 2;
	grid-row: 2;
	justify-self: start;
	margin-top: 2px;
	font-size: 15px;
	line-height: 1.25;
	color: #fff;
	font-weight: 500;
	overflow-wrap: anywhere;
	text-align: left;
}

@media (max-width: 1100px) {
	.campaign-hero-facts {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
@media (max-width: 720px) {
	.campaign-hero-facts {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 8px;
	}
	.campaign-hero-fact {
		min-height: 0;
		padding: 12px 12px;
	}
	/* Mobil-Sonderfall: nur die ersten beiden KPIs (Deadline + Auslieferung)
	   als 2er-Reihe - Mindestmenge/Art/Ansprechpartner entfallen mobil. */
	.campaign-hero-fact:nth-child(n+3) {
		display: none;
	}
}

/* =============================================================
   Auth-Seiten (check-email + login)
   2-Spalten-Card mit Welcome links + Form rechts.
   ============================================================= */
.auth-page {
	max-width: 1080px;
	margin: 0 auto;
	padding: 32px 16px 24px;
	width: 100%;
	box-sizing: border-box;
}
.auth-topbar {
	display: flex;
	justify-content: center;
	align-items: center;
	margin-bottom: 22px;
}
.auth-topbar img {
	max-width: 200px;
	height: auto;
	display: block;
}

.auth-card {
	display: grid;
	grid-template-columns: 1.05fr 1fr;
	gap: 0;
	background: linear-gradient(180deg, rgba(20, 28, 32, .85), rgba(10, 16, 18, .85));
	border: 1px solid rgba(255, 255, 255, .08);
	border-radius: 10px;
	overflow: hidden;
	box-shadow: 0 30px 80px rgba(0, 0, 0, .35);
}
.auth-card-left,
.auth-card-right {
	padding: 48px 52px;
	display: flex;
	flex-direction: column;
}
.auth-card-left {
	border-right: 1px solid rgba(255, 255, 255, .06);
}

/* ---- Linke Spalte: Welcome ---- */
.auth-hello-eyebrow {
	display: block;
	color: var(--accent);
	font-size: 11px;
	letter-spacing: .12em;
	text-transform: uppercase;
	font-weight: 600;
	margin-bottom: 12px;
}
.auth-hello-title {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 0 0 12px 0;
	color: #fff;
	font-size: 32px;
	font-weight: 600;
	line-height: 1.15;
	letter-spacing: -.01em;
	text-transform: none;
}
.auth-hello-title span {
	color: var(--accent);
}
.auth-card--lobby .auth-hello-title {
	display: block;
	font-weight: 400;
}
.auth-card--lobby .auth-hello-title span {
	font-weight: 700;
}
.auth-hello-title .auth-hello-text {
	display: inline-block;
	color: #fff;
}
.auth-hello-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 44px;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	border: 1px solid var(--accent);
	background: rgba(0, 0, 0, .35);
	color: var(--accent);
}
.auth-hello-icon svg {
	width: 22px;
	height: 22px;
	stroke-width: 1.5;
	display: block;
}
.auth-hello-subtitle {
	margin: 0 0 28px 0;
	color: var(--text-muted);
	font-size: 15px;
	line-height: 1.55;
	max-width: 50ch;
}

.auth-section-divider {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 10px 0 24px;
}
.auth-section-divider span {
	color: var(--accent);
	font-size: 11px;
	letter-spacing: .12em;
	text-transform: uppercase;
	font-weight: 600;
	white-space: nowrap;
}
.auth-section-divider::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: rgba(255, 255, 255, .12);
}

/* ---- Kontaktkarten ---- */
.auth-contacts {
	list-style: none;
	margin: 0 0 22px 0;
	padding: 0;
	display: grid;
	gap: 14px;
}
.auth-contact {
	display: flex;
	align-items: center;
	gap: 16px;
}
.auth-contact-icon {
	flex: 0 0 52px;
	width: 52px;
	height: 52px;
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1px solid currentColor;
	background: rgba(0, 0, 0, .35);
}
.auth-contact-icon svg {
	stroke-width: 1.5;
	width: 22px;
	height: 22px;
}
.auth-contact-icon--accent { color: var(--accent); }
.auth-contact-icon--pink   { color: #cc4f7a; }

.auth-contact-body {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}
.auth-contact-name {
	max-height: 20px;
	width: auto;
	max-width: 220px;
	align-self: flex-start;
	margin: 0 0 2px 0;
}
.auth-contact-person {
	font-size: 13px;
	font-weight: 500;
	line-height: 1.2;
}
.auth-contact-person--accent { color: var(--accent); }
.auth-contact-person--pink   { color: #cc4f7a; }

.auth-contact-phone {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: #fff;
	font-size: 13px;
	text-decoration: none;
	margin-top: 2px;
	transition: color .15s ease;
}
.auth-contact-phone svg {
	width: 13px;
	height: 13px;
	color: var(--text-muted);
}
.auth-contact-phone:hover {
	color: var(--accent);
}
.auth-contact-phone:hover svg {
	color: var(--accent);
}

/* ---- Mini-Features unten links ---- */
.auth-features {
	list-style: none;
	margin: auto 0 0 0;
	padding: 18px 0 0 0;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
	border-top: 1px solid rgba(255, 255, 255, .08);
}
.auth-features li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
}
.auth-feature-icon {
	flex: 0 0 22px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--accent);
	margin-top: 1px;
}
.auth-feature-icon svg {
	width: 20px;
	height: 20px;
}
.auth-features strong {
	display: block;
	color: #fff;
	font-size: 12.5px;
	font-weight: 600;
	margin-bottom: 2px;
}
.auth-features p {
	margin: 0;
	color: var(--text-muted);
	font-size: 11.5px;
	line-height: 1.4;
}
/* Wenn .auth-features direktes Grid-Kind von .auth-card ist (Check-Email-
   Screen): volle Card-Breite als Footer-Reihe unter beiden Spalten. */
.auth-card > .auth-features {
	grid-column: 1 / -1;
	margin: 0;
	padding: 22px 40px;
	border-top: 1px solid rgba(255, 255, 255, .08);
}
/* Lobby/Check-Email: rechte Spalte hat nur ein kurzes E-Mail-Formular und ist
   damit deutlich niedriger als die linke (Welcome + Kontakte). Damit unter dem
   Formular kein grosser Leerraum bis zur Feature-Footer-Reihe klafft, wird der
   Formular-Inhalt vertikal zentriert und der ueberfluessige Abstand unter den
   Kontakten entfernt. Greift NICHT auf dem Login (kein .auth-card--lobby). */
.auth-card--lobby .auth-card-right {
	justify-content: center;
}
.auth-card--lobby .auth-card-left .auth-contacts {
	margin-bottom: 0;
}

/* ---- Rechte Spalte: Form ---- */
/* Icon links, Title+Subtitle rechts (Styleguide-Regel 3: nebeneinander, nie gestackt).
   Subtitle ist Zusatztext und steht unter der Headline (NICHT unter dem Icon). */
.auth-form-header {
	display: grid;
	grid-template-columns: auto 1fr;
	column-gap: 16px;
	align-items: start;
	margin-bottom: 28px;
}
.auth-form-icon {
	grid-row: span 2;
	width: 52px;
	height: 52px;
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--accent);
	color: var(--accent);
	background: rgba(0, 0, 0, .35);
	margin-bottom: 0;
	align-self: center;
}
.auth-form-icon svg {
	stroke-width: 1.5;
	width: 24px;
	height: 24px;
}
/* Auth-Icons & Feature-Icons: dieselbe duenne Linie wie das System (1.5).
   Ueberschreibt evtl. inline stroke-width="1.8" aus dem Markup. */
.auth-input-prefix svg,
.auth-input-toggle svg,
.auth-feature-icon svg,
.auth-contact-phone svg {
	stroke-width: 1.5;
}
.auth-form-title {
	margin: 0 0 4px;
	color: var(--accent); /* Styleguide-Regel 6: gleiche Farbe wie das Icon daneben */
	font-size: 24px;
	font-weight: 600;
	line-height: 1.2;
}
.auth-card--lobby .auth-form-title {
	font-size: 18px;
	white-space: nowrap;
}
.auth-card--lobby .auth-form-header {
	align-items: start;
}
.auth-card--lobby .auth-form-icon {
	align-self: start;
}
.auth-form-subtitle {
	margin: 0;
	color: var(--text-muted);
	font-size: 15px;
	line-height: 1.55;
	max-width: 50ch;
}

.auth-form {
	display: flex;
	flex-direction: column;
	gap: 14px;
	margin: 0;
}

.auth-input {
	position: relative;
	display: block;
	height: 52px;
	background: rgba(0, 0, 0, .4);
	border: 1px solid rgba(255, 255, 255, .12);
	border-radius: 10px;
	transition: border-color .15s ease, background .15s ease;
}
.auth-input:focus-within {
	border-color: var(--accent);
	background: rgba(0, 0, 0, .55);
}
.auth-input > input {
	width: 100%;
	height: 100%;
	padding: 0 16px 0 52px !important; /* genug Platz fuer das Prefix-Icon, !important schlaegt globale input-Rule */
	background: transparent !important;
	border: 0 !important;
	outline: 0;
	color: #fff !important;
	font-size: 14.5px;
	box-sizing: border-box;
	border-radius: 0 !important; /* globale 60px-radius unterdruecken; Rundung uebernimmt .auth-input */
}
.auth-input--password > input {
	padding-right: 48px !important;
}
.auth-input > input::placeholder {
	color: var(--text-muted);
	opacity: 1;
}
.auth-input-prefix {
	position: absolute;
	left: 16px;
	top: 50%;
	transform: translateY(-50%);
	display: inline-flex;
	color: var(--accent) !important;
	pointer-events: none;
	z-index: 1;
}
.auth-input-prefix svg {
	width: 20px;
	height: 20px;
	color: var(--accent);
	stroke: currentColor;
}
.auth-input-toggle {
	position: absolute;
	right: 10px;
	top: 50%;
	transform: translateY(-50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	background: transparent;
	border: 0;
	padding: 0;
	color: var(--text-muted);
	cursor: pointer;
	border-radius: 6px;
	transition: color .15s ease, background .15s ease;
}
.auth-input-toggle:hover,
.auth-input-toggle.is-visible {
	color: var(--accent);
	background: rgba(255, 255, 255, .04);
}
.auth-input-toggle svg {
	width: 18px;
	height: 18px;
}

.auth-form-forgot {
	display: flex;
	justify-content: flex-end;
	margin: -2px 0 4px;
}

/* Inline-Fehlerbox direkt ueber dem Login-Formular (z.B. "Falsches
   Passwort"). Rote Akzentlinie + dezenter Rot-Background, damit der
   Hinweis sofort sichtbar ist, ohne als blockierendes Modal aufzutreten. */
.auth-form-error {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 12px 14px;
	margin: 0 0 14px;
	border: 1px solid rgba(190, 22, 34, 0.55);
	border-left-width: 4px;
	border-radius: 8px;
	background: rgba(190, 22, 34, 0.12);
	color: #ffb1b8;
	font-size: 13.5px;
	line-height: 1.4;
}
.auth-form-error-icon {
	display: inline-flex;
	flex: none;
	color: #ff5a66;
	margin-top: 1px;
}
.auth-form-error-icon svg { width: 18px; height: 18px; }
.auth-form-error-text { display: block; }
.auth-form-forgot a {
	color: var(--accent);
	font-size: 13px;
	text-decoration: none;
}
.auth-form-forgot a:hover {
	text-decoration: underline;
}

.auth-form-submit {
	margin-top: 6px;
}

.btn--cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	width: 100%;
	height: 52px;
	padding: 0 18px;
	background: linear-gradient(180deg, #2dc6ad, #1fb09a);
	color: #fff !important;
	font-weight: 700;
	font-size: 14px;
	letter-spacing: .08em;
	text-transform: uppercase;
	border: 0;
	border-radius: 10px;
	cursor: pointer;
	transition: filter .15s ease, transform .15s ease;
	box-shadow: 0 6px 18px rgba(31, 176, 154, .25);
}
.btn--cta:hover {
	filter: brightness(1.08);
}
.btn--cta:active {
	transform: translateY(1px);
}
.btn--cta svg {
	width: 18px;
	height: 18px;
}

.auth-divider {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 22px 0 16px;
	color: var(--text-muted);
	font-size: 11px;
	letter-spacing: .12em;
	text-transform: uppercase;
}
.auth-divider::before,
.auth-divider::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: rgba(255, 255, 255, .12);
}

.btn--auth-outline {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	width: 100%;
	height: 52px;
	padding: 0 18px;
	background: transparent;
	color: #fff !important;
	font-weight: 700;
	font-size: 13px;
	letter-spacing: .08em;
	text-transform: uppercase;
	border: 1.5px solid var(--accent);
	border-radius: 10px;
	text-decoration: none;
	transition: background .15s ease, color .15s ease;
	box-sizing: border-box;
}
.btn--auth-outline:hover {
	background: rgba(31, 176, 154, .12);
	color: var(--accent) !important;
}
.btn--auth-outline svg {
	width: 18px;
	height: 18px;
	color: var(--accent);
}

/* ---- Responsive ---- */
@media (max-width: 900px) {
	.auth-card {
		grid-template-columns: 1fr;
	}
	.auth-card-left {
		border-right: 0;
		border-bottom: 1px solid rgba(255, 255, 255, .06);
	}

	/* =================================================================
	   Login mobil: Eingabefeld in den ersten sichtbaren Bereich.
	   Vorher standen Begruessung UND beide Ansprechpartner vor dem
	   Formular - das E-Mail-Feld lag rund einen Bildschirm tief.
	   Reihenfolge jetzt: Begruessung, Formular, Ansprechpartner,
	   Vertrauens-Punkte. Die Ansprechpartner liegen im Markup in
	   .auth-card-left; `display: contents` loest diesen Rahmen mobil
	   auf, damit seine Kinder einzeln einsortiert werden koennen.
	   ================================================================= */
	.auth-card {
		display: flex;
		flex-direction: column;
	}
	.auth-card .auth-card-left {
		display: contents;
	}
	.auth-card .auth-hello-eyebrow { order: 1; }
	.auth-card .auth-hello-title    { order: 2; }
	.auth-card .auth-hello-subtitle { order: 3; }
	.auth-card .auth-card-right     { order: 4; }
	.auth-card .auth-section-divider { order: 5; }
	.auth-card .auth-contacts       { order: 6; }
	/* Feature-Liste: im Login liegt sie IN .auth-card-left, auf der
	   Lobby-Seite daneben - beide Faelle abdecken. */
	.auth-card > .auth-features,
	.auth-card .auth-card-left > .auth-features { order: 7; }

	/* E-Mail-Check-Seite (Lobby): die Vertrauens-Punkte ("Sicher &
	   vertraulich" usw.) entfallen mobil komplett - sie standen ohnehin
	   unter dem Formular und verlaengerten die Startseite nur. Die
	   Passwort-Seite behaelt ihre Liste. */
	.auth-card--lobby > .auth-features,
	.auth-card--lobby .auth-features { display: none; }

	/* Die aufgeloeste linke Spalte bringt ihr Padding nicht mehr mit -
	   die einzelnen Bloecke holen es sich selbst. */
	.auth-card .auth-hello-eyebrow,
	.auth-card .auth-hello-title,
	.auth-card .auth-hello-subtitle,
	.auth-card .auth-section-divider,
	.auth-card .auth-contacts {
		padding-left: 28px;
		padding-right: 28px;
	}
	.auth-card .auth-hello-eyebrow { padding-top: 28px; }
	.auth-card .auth-contacts { padding-bottom: 28px; }
	/* Trennlinie sass an der linken Spalte - jetzt ueber dem Kontaktblock */
	.auth-card .auth-card-left { border-bottom: 0; }
	.auth-card .auth-section-divider {
		border-top: 1px solid rgba(255, 255, 255, .06);
		padding-top: 24px;
		margin-top: 4px;
	}
	.auth-card-left,
	.auth-card-right {
		padding: 28px 24px;
	}
	.auth-hello-title {
		font-size: 24px;
	}
	.auth-features {
		grid-template-columns: 1fr;
		gap: 12px;
	}
	.auth-card > .auth-features {
		padding: 24px;
	}

	/* =================================================================
	   Auth mobil zentriert (Mockup 15.08.): Kopf, Formular-Kopf und
	   Ansprechpartner mittig. Der globale `* { text-align: left }`-Reset
	   (stylesheet.css) unterbricht die Vererbung - center deshalb direkt
	   an jedem Text-Element, nicht nur am Container.
	   ================================================================= */
	.auth-card .auth-hello-eyebrow,
	.auth-card .auth-hello-title,
	.auth-card .auth-hello-subtitle,
	.auth-card .auth-hello-title .auth-hello-text { text-align: center; }
	/* Login: h2 ist Flex mit Icon+Text - mobil Icon UEBER dem Titel,
	   beides mittig (wie der Formular-Kopf im Mockup) */
	.auth-card .auth-hello-title {
		justify-content: center;
		flex-direction: column;
		align-items: center;
		gap: 10px;
	}
	.auth-card .auth-hello-subtitle { max-width: none; }
	/* Formular-Kopf: Icon ueber dem Titel, alles mittig (wie E-Mail-Check).
	   Der --lobby-Selektor muss mitgefuehrt werden, sonst gewinnt die
	   Desktop-Regel ".auth-card--lobby .auth-form-header { align-items:
	   start }" das Spezifitaets-Duell. */
	.auth-form-header,
	.auth-card--lobby .auth-form-header {
		display: flex;
		flex-direction: column;
		align-items: center;
		row-gap: 8px;
	}
	.auth-form-icon,
	.auth-card--lobby .auth-form-icon { align-self: center; }
	.auth-form-title,
	.auth-form-subtitle { text-align: center; }
	.auth-form-subtitle { max-width: none; }
	/* Ansprechpartner (E-Mail-Check): Logo/Name/Telefon mittig,
	   die grossen Kreis-Icons entfallen */
	.auth-contact { flex-direction: column; gap: 6px; }
	.auth-contact-icon { display: none; }
	.auth-contact-body { align-items: center; }
	.auth-contact-name { align-self: center; }
	.auth-contact-person,
	.auth-contact-phone { text-align: center; }
	.auth-contact-phone { justify-content: center; }
	.auth-contacts { gap: 20px; }
	/* Divider: Linie beidseitig statt border-top, Label bleibt mittig.
	   Label kompakter + Umbruch erlaubt - mit nowrap lief
	   "DEINE PERSOENLICHEN ANSPRECHPARTNER" rechts aus dem Viewport. */
	.auth-card .auth-section-divider { border-top: 0; gap: 10px; }
	.auth-card .auth-section-divider span {
		white-space: normal;
		font-size: 10px;
		letter-spacing: .08em;
	}
	.auth-section-divider::before {
		content: "";
		flex: 1 1 auto;
		height: 1px;
		background: rgba(255, 255, 255, .12);
	}
	.auth-section-divider span { text-align: center; }
	/* Passwort-Seite (Login, kein --lobby): unterer Bereich entfaellt
	   mobil komplett - beim Passwort geht es nur um den Einstieg.
	   Ansprechpartner-Logos gibt es in diesem Prozess nur auf der
	   E-Mail-Check-Seite. */
	.auth-card:not(.auth-card--lobby) .auth-section-divider,
	.auth-card:not(.auth-card--lobby) .auth-contacts,
	.auth-card:not(.auth-card--lobby) .auth-features { display: none; }
}
@media (max-width: 480px) {
	.auth-topbar img { max-width: 160px; }
	.auth-card-left,
	.auth-card-right { padding: 22px 18px; }
	.auth-contact { gap: 12px; }
	.auth-contact-icon { flex: 0 0 44px; width: 44px; height: 44px; }
	.auth-contact-icon svg { width: 18px; height: 18px; }
	.auth-form-title { font-size: 20px; }
	.auth-card--lobby .auth-form-title { font-size: 18px; white-space: normal; }
}

/* ============================================================
   Customer-Support Modals (Confirm + Success)
   ============================================================ */
.cs-modal {
	position: fixed;
	inset: 0;
	display: none;
	align-items: center;
	justify-content: center;
	background: rgba(0, 0, 0, 0.72);
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
	z-index: 10000;
	padding: 20px;
	overflow-y: auto;
}
.cs-modal.is-open { display: flex; }
body.cs-modal-locked { overflow: hidden; }

.cs-modal-dialog {
	position: relative;
	width: 100%;
	max-width: 540px;
	margin: auto;
	background: linear-gradient(180deg, #1b1f21 0%, #131618 100%);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 10px;
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.6);
	padding: 36px 32px 28px;
	color: #fff;
	animation: cs-modal-pop 180ms ease-out;
}
@keyframes cs-modal-pop {
	from { opacity: 0; transform: translateY(8px) scale(0.985); }
	to   { opacity: 1; transform: translateY(0) scale(1); }
}

.cs-modal-close {
	position: absolute;
	top: 14px;
	right: 14px;
	width: 32px;
	height: 32px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: transparent;
	border: 0;
	border-radius: 8px;
	color: rgba(255, 255, 255, 0.6);
	cursor: pointer;
	padding: 0;
	transition: color .15s ease, background .15s ease;
}
.cs-modal-close:hover { color: #fff; background: rgba(255, 255, 255, 0.08); }
.cs-modal-close svg { width: 20px; height: 20px; }

/* Kreis-Icon, mittig, tuerkis */
.cs-modal-icon {
	position: relative;
	width: 80px;
	height: 80px;
	margin: 4px auto 18px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 2px solid var(--accent);
	border-radius: 50%;
	color: var(--accent);
	background: rgba(31, 176, 154, 0.08);
}
.cs-modal-icon svg { width: 36px; height: 36px; }

/* Success-Variante: dekorative Strahlen kommen ueber das inline SVG -
   die Border am Container entfaellt, der Kreis ist Teil des SVG. */
.cs-modal-icon--success {
	border: 0 !important;
	background: transparent !important;
	width: 110px;
	height: 110px;
	overflow: visible;
}
.cs-modal-icon--success svg {
	width: 100%;
	height: 100%;
}

.cs-modal-title {
	font-size: 24px;
	font-weight: 600;
	line-height: 1.25;
	color: #fff;
	text-align: center;
	margin: 0 0 8px;
}
.cs-modal-title-rule {
	width: 44px;
	height: 2px;
	background: var(--accent);
	border-radius: 2px;
	margin: 0 auto 16px;
}
.cs-modal-subtitle {
	font-size: 14px;
	line-height: 1.55;
	color: #ffffff;
	text-align: center;
	margin: 0 0 22px;
}

/* Steps / Tip Boxen */
.cs-modal-steps,
.cs-modal-tip {
	border: 1px solid rgba(255, 255, 255, 0.08);
	background: rgba(0, 0, 0, 0.35);
	border-radius: 10px;
	padding: 14px 16px;
	margin: 0 0 22px;
}
.cs-modal-steps-header,
.cs-modal-tip-header {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--accent);
	font-weight: 600;
	font-size: 14px;
	margin-bottom: 8px;
}
.cs-modal-steps-header svg,
.cs-modal-tip-header svg { width: 18px; height: 18px; }

.cs-modal-steps-list {
	counter-reset: cs-step;
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.cs-modal-steps-list li {
	counter-increment: cs-step;
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 13.5px;
	line-height: 1.35;
	color: rgba(255, 255, 255, 0.9);
}
.cs-modal-steps-list li::before {
	content: counter(cs-step);
	flex: 0 0 24px;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	border: 1.5px solid var(--accent);
	color: var(--accent);
	font-size: 12px;
	font-weight: 600;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* Tip Box (Success) */
.cs-modal-tip {
	display: flex;
	gap: 12px;
	align-items: flex-start;
}
.cs-modal-tip-icon {
	flex: 0 0 32px;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	border: 1.5px solid var(--accent);
	color: var(--accent);
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.cs-modal-tip-icon svg { width: 16px; height: 16px; }
.cs-modal-tip-body { flex: 1 1 auto; }
.cs-modal-tip-title {
	display: block;
	color: var(--accent);
	font-weight: 600;
	font-size: 14px;
	margin-bottom: 4px;
}
.cs-modal-tip-body p {
	margin: 0;
	font-size: 13.5px;
	line-height: 1.55;
	color: rgba(255, 255, 255, 0.78);
}

/* Ticket-Pille */
.cs-modal-ticket {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	height: 44px;
	border: 1.5px solid var(--accent);
	border-radius: 10px;
	color: var(--accent);
	font-weight: 600;
	font-size: 13.5px;
	letter-spacing: 0.2px;
	margin: 0 0 16px;
	background: rgba(31, 176, 154, 0.06);
}
.cs-modal-ticket svg { width: 18px; height: 18px; }

/* Lead-Zeile (Pre-Submit-Modal): gruener Check-Kreis + Bold-Text */
.cs-modal-lead {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	margin: 0 0 10px;
	color: #fff;
	font-weight: 600;
	font-size: 15px;
	line-height: 1.4;
}
.cs-modal-lead-icon {
	flex: 0 0 28px;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	border: 1.5px solid var(--accent);
	color: var(--accent);
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.cs-modal-lead-icon svg { width: 14px; height: 14px; }

/* "Was passiert als naechstes?" / "Naechster Schritt" Box */
.cs-modal-next {
	border: 1px solid rgba(255, 255, 255, 0.08);
	background: rgba(0, 0, 0, 0.35);
	border-radius: 10px;
	padding: 14px 16px;
	margin: 0 0 22px;
}
.cs-modal-next-header {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--accent);
	font-weight: 600;
	font-size: 14px;
	text-transform: uppercase;
	letter-spacing: 0.4px;
	margin-bottom: 10px;
}
.cs-modal-next-header svg { width: 18px; height: 18px; }
.cs-modal-next-header--with-rule {
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	padding-bottom: 8px;
}
.cs-modal-next-intro {
	margin: 0 0 6px;
	font-size: 13.5px;
	line-height: 1.55;
	color: rgba(255, 255, 255, 0.9);
}
.cs-modal-next-intro a {
	color: var(--accent);
	text-decoration: none;
}
.cs-modal-next-intro a:hover { text-decoration: underline; }
.cs-modal-next-sub {
	/* etwas Luft vor der Checkliste (16.08.) */
	margin: 6px 0 16px;
	font-size: 13.5px;
	line-height: 1.55;
	color: rgba(255, 255, 255, 0.78);
}
.cs-modal-next-items {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.cs-modal-next-item {
	display: flex;
	align-items: flex-start;
	gap: 12px;
}
.cs-modal-next-item-icon {
	flex: 0 0 32px;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	border: 1.5px solid var(--accent);
	color: var(--accent);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-top: 1px;
}
.cs-modal-next-item-icon svg { width: 16px; height: 16px; }
.cs-modal-next-item-body { flex: 1 1 auto; min-width: 0; }
.cs-modal-next-item-title {
	display: block;
	color: #fff;
	font-weight: 600;
	font-size: 13.5px;
	line-height: 1.4;
	margin-bottom: 2px;
}
.cs-modal-next-item-desc {
	margin: 0;
	font-size: 13px;
	line-height: 1.5;
	color: rgba(255, 255, 255, 0.7);
}

/* Checkliste mit gruenen Haekchen (Success-Modal) */
.cs-modal-check-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.cs-modal-check-list li {
	display: flex;
	align-items: center;
	gap: 10px;
	/* globale li-Margins aus stylesheet.css neutralisieren - die rissen
	   die Checkliste auseinander (riesige Luecken zwischen den Punkten);
	   den Abstand liefert allein das flex-gap der Liste. */
	margin: 0 !important;
	padding: 0;
	font-size: 13.5px;
	line-height: 1.4;
	color: rgba(255, 255, 255, 0.9);
}
.cs-modal-check-list li::before {
	content: "";
	flex: 0 0 18px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	border: 1.5px solid var(--accent);
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231fb09a' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 12px 12px;
}

/* Actions */
.cs-modal-actions {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin-top: 4px;
}
.cs-modal-actions--row {
	flex-direction: row;
	flex-wrap: wrap;
}
.cs-modal-actions--row .btn {
	flex: 1 1 0;
	min-width: 0;
}
.cs-modal-actions .btn {
	width: 100%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 48px;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.4px;
	text-transform: uppercase;
	border-radius: 10px;
	cursor: pointer;
	padding: 0 18px;
	transition: transform .12s ease, box-shadow .15s ease, background .15s ease, color .15s ease, border-color .15s ease;
	border: 0;
}
.cs-modal-actions .btn svg { width: 18px; height: 18px; }
.cs-modal-actions .btn--cta {
	background: linear-gradient(135deg, #1fb09a 0%, #168d7c 100%);
	color: #fff;
	box-shadow: 0 8px 22px rgba(31, 176, 154, 0.28);
}
.cs-modal-actions .btn--cta:hover {
	transform: translateY(-1px);
	box-shadow: 0 12px 28px rgba(31, 176, 154, 0.36);
}
.cs-modal-actions .cs-btn-outline {
	background: transparent !important;
	background-color: transparent !important;
	background-image: none !important;
	color: var(--accent) !important;
	border: 1.5px solid var(--accent) !important;
}
.cs-modal-actions .cs-btn-outline:hover {
	background: rgba(31, 176, 154, 0.08) !important;
	background-color: rgba(31, 176, 154, 0.08) !important;
	color: var(--accent) !important;
	border-color: var(--accent) !important;
}

/* Welcome-Modal (Dashboard, Haendler ohne aktive Marken): nur Zusatz-Feinheiten,
   der Rest nutzt die bestehenden cs-modal-Bausteine. */
.welcome-modal .cs-modal-title { margin-bottom: 4px; }
.welcome-modal-accent {
	text-align: center;
	color: var(--accent);
	font-weight: 600;
	font-size: 15px;
	margin: 0 0 14px;
}
.welcome-modal-foot {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin: 14px 0 0;
	font-size: 12.5px;
	line-height: 1.4;
	color: rgba(255, 255, 255, 0.5);
}
.welcome-modal-foot svg { width: 14px; height: 14px; flex: none; }

/* Willkommens-Modal: Block "Deine persoenlichen Ansprechpartner" (2 Spalten,
   Logo + Name + Person, mittiger Trenner). */
.welcome-modal-partners {
	margin: 16px 0 0;
	padding: 16px 18px;
	border-radius: 14px;
	background: rgba(255, 255, 255, 0.02);
	border: 1px solid rgba(255, 255, 255, 0.08);
	text-align: left;
}
.welcome-modal-partners-head {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0 0 14px;
}
.welcome-modal-partners-icon {
	display: inline-flex;
	flex: 0 0 auto;
	color: var(--accent);
	margin-top: 1px;
}
.welcome-modal-partners-icon svg { width: 20px; height: 20px; }
.welcome-modal-partners-titles {
	display: flex;
	flex-direction: column;
	gap: 3px;
}
.welcome-modal-partners-title {
	color: var(--accent);
	font-weight: 700;
	font-size: 14px;
}
.welcome-modal-partners-sub {
	color: rgba(255, 255, 255, 0.7);
	font-size: 12.5px;
	line-height: 1.4;
}
.welcome-modal-partners-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	padding: 14px;
	border-radius: 12px;
	background: rgba(0, 0, 0, 0.25);
}
.welcome-modal-partner {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 0 14px;
	min-width: 0;
}
.welcome-modal-partner + .welcome-modal-partner {
	border-left: 1px solid rgba(255, 255, 255, 0.1);
}
.welcome-modal-partner-logo {
	height: 26px;
	width: auto;
	max-width: 120px;
	object-fit: contain;
	flex: 0 0 auto;
}
.welcome-modal-partner-info {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}
.welcome-modal-partner-info strong {
	color: #ffffff;
	font-weight: 700;
	font-size: 13.5px;
	line-height: 1.2;
}
.welcome-modal-partner-info span {
	color: rgba(255, 255, 255, 0.6);
	font-size: 12.5px;
}

@media (max-width: 540px) {
	.cs-modal { padding: 12px; }
	.cs-modal-dialog {
		max-width: 100%;
		width: 100%;
		padding: 28px 20px 22px;
		border-radius: 10px;
	}
	.cs-modal-title { font-size: 20px; }
	.cs-modal-icon { width: 68px; height: 68px; }
	.cs-modal-icon svg { width: 30px; height: 30px; }
	.cs-modal-icon--success { width: 96px; height: 96px; }
	.cs-modal-icon--success svg { width: 100%; height: 100%; }
	.cs-modal-steps,
	.cs-modal-tip,
	.cs-modal-next { padding: 14px; }
	.cs-modal-actions .btn { min-height: 46px; font-size: 13px; }
	.cs-modal-actions--row { flex-direction: column; }
	.welcome-modal-partners-grid { grid-template-columns: 1fr; }
	.welcome-modal-partner + .welcome-modal-partner {
		border-left: none;
		border-top: 1px solid rgba(255, 255, 255, 0.1);
		margin-top: 12px;
		padding-top: 12px;
	}
}

/* =====================================================================
   DESIGN SYSTEM: Typografie / Headlines / Icons / Linien
   ---------------------------------------------------------------------
   Verbindliches, wiederkehrendes System fuer den gesamten Haendlerbereich.
   Abgeleitet aus den saubersten bestehenden Mustern (.auth-* + .cs-modal-*).

   Grundregeln:
   - Headlines: weiss, font-weight 600, Satzschreibung. KEIN Uppercase.
   - Versalien (uppercase) NUR fuer .eyebrow, Badges und Buttons.
   - Texte: --text (primaer) / --text-muted (sekundaer), feste Groessen.
   - Icons: genau EINE Behandlung (runder Outline-Kreis, Akzentfarbe).
   - Linien: nur .hd-rule (Akzent) und .hd-divider (Label + Linie).

   Reine Ergaenzung - keine bestehende Regel wird veraendert. Die Klassen
   werden ab Freigabe Schritt fuer Schritt in den Views ausgerollt.
   ===================================================================== */
:root {
	--fs-eyebrow: 11px;
	--fs-title-xl: 30px;   /* Hero / Auth */
	--fs-title: 24px;      /* Seitentitel (H1) */
	--fs-section: 20px;    /* Sektion (H2) */
	--fs-subsection: 17px; /* Untersektion (H3) */
	--fs-card: 15px;       /* Kartentitel (H4) */
	--fs-minor: 13px;      /* Mini-Titel (H5) */
	--fs-lead: 15px;       /* Intro-/Lead-Text */
	--fs-copy: 14px;       /* Fliesstext */
	--fs-meta: 12.5px;     /* Meta / Klein */
	--lh-tight: 1.2;
	--lh-copy: 1.55;
}

/* ---- Eyebrow / Mini-Label (H6) - einzige Headline-Versalien ----
   Doppelrolle: (a) Kicker ueber einem Seitentitel, (b) Feld-/Mini-Label
   (z.B. "DEADLINE", "ANSPRECHPARTNER"). Mit oder ohne fuehrendes Icon. */
.eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	margin: 0 0 12px;
	color: var(--accent);
	font-size: var(--fs-eyebrow);
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	line-height: 1;
}
.eyebrow svg {
	width: 14px;
	height: 14px;
	flex: 0 0 14px;
	color: currentColor;
}
/* Als Feld-Label (Wert steht direkt darunter): engerer Abstand */
.eyebrow--tight { margin-bottom: 5px; }

/* ---- Seitenkopf ---- */
.page-head { margin: 0 0 28px; }
.page-title {
	margin: 0;
	color: var(--text);
	font-size: var(--fs-title);
	font-weight: 600;
	line-height: var(--lh-tight);
	letter-spacing: .01em;
}
.page-title--xl { font-size: var(--fs-title-xl); }
.page-title .accent,
.page-title span.accent { color: var(--accent); }
.page-subtitle {
	margin: 8px 0 0;
	max-width: 70ch;
	color: var(--text-muted);
	font-size: var(--fs-copy);
	line-height: var(--lh-copy);
}

/* ---- Sektions-/Karten-Titel ---- */
.section-title {
	margin: 0 0 14px;
	color: var(--text);
	font-size: var(--fs-section);
	font-weight: 600;
	line-height: var(--lh-tight);
}
.subsection-title {
	margin: 0 0 10px;
	color: var(--text);
	font-size: var(--fs-subsection);
	font-weight: 600;
	line-height: var(--lh-tight);
}
.card-title {
	margin: 0 0 6px;
	color: var(--text);
	font-size: var(--fs-card);
	font-weight: 600;
	line-height: 1.3;
}
/* Mini-Titel (H5): kleinste echte Ueberschrift, z.B. Gruppen in Karten */
.minor-title {
	margin: 0 0 6px;
	color: var(--text);
	font-size: var(--fs-minor);
	font-weight: 700;
	line-height: 1.3;
}

/* ---- Fliesstext ---- */
.lead {
	margin: 0 0 16px;
	color: var(--text-muted);
	font-size: var(--fs-lead);
	line-height: var(--lh-copy);
}
.body-copy {
	margin: 0 0 14px;
	color: var(--text);
	font-size: var(--fs-copy);
	line-height: var(--lh-copy);
}
.body-copy--muted { color: var(--text-muted); }
.body-copy:last-child { margin-bottom: 0; }
.text-meta {
	color: var(--text-muted);
	font-size: var(--fs-meta);
	line-height: 1.4;
}

/* ---- Akzentlinie unter Titeln ---- */
.hd-rule {
	width: 44px;
	height: 2px;
	margin: 14px 0 0;
	border: 0;
	border-radius: 2px;
	background: var(--accent);
}
.hd-rule--center { margin-left: auto; margin-right: auto; }

/* ---- Label-Trenner (Text + Linie) ---- */
.hd-divider {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 8px 0 18px;
}
.hd-divider > span {
	color: var(--accent);
	font-size: var(--fs-eyebrow);
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	white-space: nowrap;
}
.hd-divider::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: var(--border-divider);
}

/* ---- Icon-Badge (eine einzige Behandlung) ---- */
.hd-icon {
	flex: 0 0 48px;
	width: 48px;
	height: 48px;
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1px solid currentColor;
	color: var(--accent); /* Icons sind immer gruen */
	background: rgba(0, 0, 0, .35);
}
.hd-icon svg { width: 22px; height: 22px; }
.hd-icon--sm { flex-basis: 38px; width: 38px; height: 38px; }
.hd-icon--sm svg { width: 18px; height: 18px; }
.hd-icon--lg { flex-basis: 56px; width: 56px; height: 56px; }
.hd-icon--lg svg { width: 26px; height: 26px; }

/* ---- Schlichtes Inline-Icon fuer Headlines ("nur Icon", KEIN Kreis) ----
   Zweite, leichtere Icon-Behandlung neben .hd-icon (Outline-Kreis):
   klein, direkt neben der Headline, OHNE Hintergrund und OHNE Umrandung.
   REGEL: Farbe = currentColor, also dieselbe Farbe wie der Text daneben
   (Icon + Text nie mischen). Genutzt z.B. fuer Dashboard-Headlines. */
.head-icon {
	flex: 0 0 auto;
	width: 24px;
	height: 24px;
	color: var(--accent);
}
.head-icon--sm { width: 20px; height: 20px; }
.head-icon--lg { width: 28px; height: 28px; }

/* ---- Headline mit fuehrendem Icon (REGEL: immer nebeneinander) ----
   Icon + Headline stehen IMMER in einer Reihe - nie Icon allein in einer
   Zeile und Headline/Text in der naechsten. Optionaler Untertitel/Text
   gehoert in .section-head__text und steht UNTER der Headline (nicht unter
   dem Icon). */
.section-head,
.page-head--with-icon {
	display: flex;
	align-items: center;
	gap: 14px;
}
.section-head { margin: 0 0 14px; }
.section-head--top { align-items: flex-start; }
.section-head > .section-title,
.section-head > .subsection-title,
.section-head > .card-title,
.section-head > .minor-title,
.page-head--with-icon > .page-title { margin: 0; }
.section-head__text { min-width: 0; }
.section-head__text > :first-child { margin-top: 0; }
.section-head__text > :last-child { margin-bottom: 0; }
.page-head--with-icon { margin-bottom: 8px; }

/* REGEL: Headline direkt neben einem (gruenen) Icon ist ebenfalls gruen.
   Nur zusaetzlicher Text (Untertitel/Fliesstext) darf abweichen (weiss). */
.section-head > .section-title,
.section-head > .subsection-title,
.section-head > .card-title,
.section-head > .minor-title,
.section-head__text > .section-title,
.section-head__text > .subsection-title,
.section-head__text > .card-title,
.section-head__text > .minor-title,
.page-head--with-icon > .page-title {
	color: var(--accent);
}

/* ---- Zahlen-Badge (z.B. Checkout-Schritte) ----
   REGEL: entweder Zahl ODER Icon - nie beides. Die Schritt-Zahl wird zu
   einem dunkelgruenen Badge (statt Zahl + Icon nebeneinander). */
.num-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	box-sizing: border-box;
	min-width: 24px;
	height: 24px;
	padding: 0 6px;
	border-radius: 10px;
	background: var(--border-strong);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	line-height: 1;
	letter-spacing: 0;
}

/* ---- Icon-Vereinheitlichung: duenne Linie ueberall ----
   REGEL: alle Linien-Icons mit duenner Strichstaerke (1.7). CSS ueber-
   schreibt ein evtl. im SVG gesetztes stroke-width="2". Greift in allen
   Design-System-Icon-Kontexten automatisch; .icon-thin als Helfer fuer
   freistehende Icons (z.B. Menue-Home, Buttons). */
.hd-icon svg,
.head-icon,
.eyebrow svg,
.badge svg,
.section-head .head-icon,
.icon-thin {
	stroke-width: 1.5;
}

/* ====================================================================
   GLOBAL ICON-NORMALISIERUNG (Styleguide-Linienstaerke 1.5)
   --------------------------------------------------------------------
   Setzt fuer JEDES Inline-SVG mit `stroke`-Attribut im Haendlerbereich,
   in Auth-Layouts und in Modals/Overlays die Linienstaerke auf 1.5,
   unabhaengig vom inline `stroke-width="..."`-Wert im Markup.
   So entfaellt das einzelne Nachpflegen von ~90 historisch gewachsenen
   1.8 / 2.0 / 2.2 / 2.5 / 3.5-Strokes.

   Opt-out: `<svg data-keep-stroke ...>` bleibt unangetastet (z.B. fuer
   absichtlich dicke Logo- oder Decoration-Strokes).
   ==================================================================== */
.module svg[stroke]:not([data-keep-stroke]):not([stroke="none"]),
.outer-box svg[stroke]:not([data-keep-stroke]):not([stroke="none"]),
.auth-card svg[stroke]:not([data-keep-stroke]):not([stroke="none"]),
.cs-modal svg[stroke]:not([data-keep-stroke]):not([stroke="none"]),
.fancybox__content svg[stroke]:not([data-keep-stroke]):not([stroke="none"]) {
	stroke-width: 1.5 !important;
}

/* Pfad-Elemente in maskierten SVGs (z.B. Slider-Arrows, die via .slick-next
   ihre Stroke-Width vorgeben) werden NICHT ueberschrieben - .slick-* und
   .swiper-* haben ihren eigenen Pfeil-Stil. */
.slick-arrow svg[stroke],
.slick-prev svg[stroke],
.slick-next svg[stroke],
.swiper-button-prev svg[stroke],
.swiper-button-next svg[stroke] {
	stroke-width: revert !important;
}

/* ---- Icon-only Buttons ----
   Quadratischer Button mit nur einem Icon (kein Text). Kombinierbar mit
   .btn-outline / .btn-red. Optional rund (.btn-icon--round). */
.btn.btn-icon {
	width: 44px;
	height: 44px;
	padding: 0 !important;
	gap: 0 !important;
	border-radius: var(--radius-btn) !important;
}
.btn.btn-icon svg { width: 20px; height: 20px; stroke-width: 1.5; }
.btn.btn-icon.btn-icon--round { border-radius: 50% !important; }
.btn.btn-icon.btn-icon--sm { width: 36px; height: 36px; }
.btn.btn-icon.btn-icon--sm svg { width: 18px; height: 18px; }
.btn.btn-icon.btn-icon--lg { width: 52px; height: 52px; }
.btn.btn-icon.btn-icon--lg svg { width: 24px; height: 24px; }

/* ---- Form-Felder: einheitliche Bausteine ----
   Basis-Optik der Felder kommt bereits aus Abschnitt 7 (input/select/
   textarea). Hier nur ergaenzende, wiederkehrende Bausteine. */
.field { margin-bottom: 16px; }
.field-label {
	display: block;
	margin-bottom: 7px;
	color: var(--text-muted);
	font-size: var(--fs-meta);
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
}
.field-hint {
	margin: 6px 0 0;
	color: var(--text-dim);
	font-size: var(--fs-meta);
	line-height: 1.4;
}
.field-error {
	margin: 6px 0 0;
	color: #ff6c6c;
	font-size: var(--fs-meta);
	line-height: 1.4;
}
/* Inline-Option (Checkbox/Radio + Text in einer Zeile) */
.field-check {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--text);
	font-size: var(--fs-copy);
	cursor: pointer;
}
.field-check > input[type="checkbox"],
.field-check > input[type="radio"] {
	width: 18px !important;
	height: 18px;
	flex: 0 0 18px;
	margin: 0;
}

/* ---- Toggle-Switch ---- */
.switch {
	position: relative;
	display: inline-flex;
	align-items: center;
	flex: 0 0 auto;
}
.switch input {
	position: absolute;
	inset: 0;
	opacity: 0;
	margin: 0;
	cursor: pointer;
}
.switch-track {
	width: 42px;
	height: 24px;
	border-radius: 10px;
	background: var(--bg-elev);
	border: 1px solid var(--border-card);
	position: relative;
	transition: background .15s, border-color .15s;
}
.switch-thumb {
	position: absolute;
	top: 2px;
	left: 2px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--text-muted);
	transition: transform .15s, background .15s;
}
.switch input:checked + .switch-track {
	background: var(--accent-soft-bg-strong);
	border-color: var(--accent);
}
.switch input:checked + .switch-track .switch-thumb {
	transform: translateX(18px);
	background: var(--accent);
}

/* ---- Badges (Status- & Marketing-Labels) ----
   EINE Basis, semantische Farben ueber Modifier. Solide Variante = Default
   (weisser Text auf Vollfarbe, fuer Produkt-/Marketing-Flags). Weiche
   Variante (.badge--soft) = getoenter Hintergrund + farbiger Text, fuer
   ruhige Inline-Status.

   Farb-Bedeutung (verbindlich):
     accent  (Tuerkis) = Hervorhebung / "Bestseller" / "Neu"
     success (Gruen)   = positiv / "Verfuegbar" / "Bestaetigt"
     warn    (Orange)  = Achtung / "Nur noch wenige verfuegbar"
     danger  (Rot)     = negativ / "Vergriffen" / "Abgelehnt"
     info    (Blau)    = neutrale Info
     neutral (Grau)    = inaktiv / sonstiges */
.badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 5px 10px;
	border-radius: var(--radius-chip);
	font-size: var(--fs-eyebrow);
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	line-height: 1;
	white-space: nowrap;
	background: var(--accent);
	color: #fff;
}
.badge svg { width: 13px; height: 13px; flex: 0 0 13px; }
.badge--accent  { background: var(--accent);         color: #fff; }
.badge--success { background: var(--status-success); color: #fff; }
.badge--warn    { background: var(--status-warn);    color: #fff; }
.badge--danger  { background: var(--status-danger);  color: #fff; }
.badge--info    { background: var(--status-info);    color: #fff; }
.badge--neutral {
	background: var(--bg-elev);
	color: var(--text);
	border: 1px solid var(--border-strong);
}
/* Weiche Variante: getoenter Hintergrund + farbiger Text */
.badge--soft           { background: var(--accent-soft-bg);     color: var(--accent-soft-text); }
.badge--soft.badge--success { background: var(--status-success-bg); color: #5ed688; }
.badge--soft.badge--warn    { background: var(--status-warn-bg);    color: #ffac68; }
.badge--soft.badge--danger  { background: var(--status-danger-bg);  color: #ff6c6c; }
.badge--soft.badge--info    { background: var(--status-info-bg);    color: #75c8e8; }
.badge--soft.badge--neutral { background: var(--bg-elev);          color: var(--text-muted); border: 0; }

/* ---- Responsive: Titel auf kleineren Screens etwas kompakter ---- */
@media (max-width: 600px) {
	:root {
		--fs-title-xl: 24px;
		--fs-title: 21px;
		--fs-section: 18px;
		--fs-subsection: 16px;
	}
}


/* =====================================================================
   DESIGN SYSTEM: Experience & Atmosphere (Spacing, Karten, Policy)
   ---------------------------------------------------------------------
   Setzt das Kunden-Briefing "Premium-Lobby statt ERP" in System-Bausteine
   um. Rein additiv - bestehende Seiten nutzen weder die neuen Tokens
   noch die neue .card-Klasse und bleiben unveraendert. Beim Rollout
   wird jede View einmal angefasst und greift auf diese Bausteine zu.

   Leitprinzipien (kurz):
   - Ruhe: lieber 15% mehr Abstand als 5% zu wenig
   - Klarheit: 3-Sekunden-Regel (Wo bin ich? Was sehe ich? Was kann ich tun?)
   - Vertrauen: hochwertig, nicht verspielt
   - Relevanz: nicht alles darf hervorgehoben sein
   - Gastfreundschaft: Nutzer fuehlt sich gefuehrt, nicht verwaltet
   ===================================================================== */
:root {
	/* Spacing-Skala (8er-Raster) */
	--space-1: 4px;
	--space-2: 8px;
	--space-3: 12px;
	--space-4: 16px;
	--space-5: 20px;
	--space-6: 24px;
	--space-8: 32px;
	--space-10: 40px;
	--space-12: 48px;
	--space-16: 64px;
	--space-20: 80px;

	/* Premium-Defaults: bewusst grosszuegiger als die Alt-Werte (24-28px).
	   Werden NUR von neuen .card / .stack / .section-gap konsumiert,
	   nicht global auf .outer-box-inner / .box-inner ausgerollt. */
	--card-pad: 32px;
	--card-pad-sm: 22px;
	--section-gap: 48px;
	--page-head-gap: 36px;
}

/* ---- Kanonische Karte (Rollout-Basis) ----
   Eine einzige, ruhige Karten-Optik fuer den Rollout. Bestehende
   .outer-box-inner / .box-inner bleiben unangetastet. */
.card {
	background: var(--bg-card);
	background-image: var(--bg-card-image);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card);
	padding: var(--card-pad);
	box-shadow: var(--shadow-card);
}
.card--sm { padding: var(--card-pad-sm); }
.card--flat {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
}

/* ---- Whitespace-Helfer ----
   .stack erzeugt vertikalen Rhythmus per Flex-Gap (statt Margins),
   .section-gap setzt den ruhigen Abstand zwischen Sektionen. */
.stack {
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
}
.stack--sm  { gap: var(--space-2); }
.stack--md  { gap: var(--space-6); }
.stack--lg  { gap: var(--space-8); }
.stack--xl  { gap: var(--space-12); }
.stack > * { margin: 0; } /* Margins von Headlines/Paragraphen neutralisieren */

.section-gap     { margin-bottom: var(--section-gap); }
.section-gap-top { margin-top: var(--section-gap); }

/* ---- Responsive: Premium-Defaults auf Mobile ruhig zurueckskalieren ---- */
@media (max-width: 600px) {
	:root {
		--card-pad: 22px;
		--card-pad-sm: 16px;
		--section-gap: 32px;
		--page-head-gap: 24px;
	}
}

/* ============================================================
   Rechtliche Seiten: /impressum, /datenschutz, /agb
   Eingebettet in das Auth-Topbar-Pattern (B2Bgator-Logo oben),
   darunter eine dunkle Card mit gut lesbarem Lang-Text.
   ============================================================ */
.legal-page {
	background: var(--bg-card);
	border: 1px solid var(--border-card);
	border-radius: var(--radius-card, 10px);
	padding: 44px 48px;
	color: #fff;
	max-width: 880px;
	margin: 0 auto;
	background-image: var(--bg-card-image, none);
}
.legal-header {
	margin-bottom: 32px;
	padding-bottom: 28px;
	border-bottom: 1px solid var(--border-card);
}
.legal-eyebrow {
	display: block;
	color: var(--accent);
	font-size: 11px;
	letter-spacing: .12em;
	text-transform: uppercase;
	font-weight: 600;
	margin-bottom: 12px;
}
.legal-title {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 0 0 12px 0;
	color: #fff;
	font-size: 32px;
	font-weight: 600;
	line-height: 1.15;
	letter-spacing: -.01em;
}
.legal-title-text {
	display: inline-block;
	color: #fff;
}
.legal-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 44px;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	border: 1px solid var(--accent);
	background: rgba(0, 0, 0, .35);
	color: var(--accent);
}
.legal-icon svg {
	width: 22px;
	height: 22px;
	stroke-width: 1.5;
	display: block;
}
.legal-lead {
	margin: 0;
	color: var(--text-muted);
	font-size: 15px;
	line-height: 1.55;
	max-width: 65ch;
}
.legal-content {
	font-size: 15px;
	line-height: 1.65;
	color: #e6eceb;
}
.legal-section {
	margin: 0 0 28px 0;
}
.legal-section:last-child {
	margin-bottom: 0;
}
.legal-section h2 {
	margin: 0 0 12px 0;
	color: #fff;
	font-size: 18px;
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: 0;
	text-transform: none;
}
.legal-section h3 {
	margin: 22px 0 8px 0;
	color: #fff;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.3;
	text-transform: uppercase;
	letter-spacing: .08em;
}
.legal-section p {
	margin: 0 0 10px 0;
	color: #e6eceb;
}
.legal-section p:last-child {
	margin-bottom: 0;
}
.legal-section a {
	color: var(--accent);
	text-decoration: underline;
	text-underline-offset: 3px;
}
.legal-section a:hover {
	color: var(--accent-hover);
}
.legal-section strong {
	color: #fff;
	font-weight: 600;
}
.legal-list {
	list-style: none;
	margin: 8px 0 12px 0;
	padding: 0;
}
.legal-list li {
	position: relative;
	padding: 4px 0 4px 22px;
	color: #e6eceb;
}
.legal-list li::before {
	content: "";
	position: absolute;
	left: 4px;
	top: 14px;
	width: 6px;
	height: 6px;
	background: var(--accent);
	border-radius: 50%;
}
.legal-meta {
	list-style: none;
	margin: 8px 0 0 0;
	padding: 0;
	display: grid;
	gap: 6px;
}
.legal-meta li {
	display: grid;
	grid-template-columns: 110px 1fr;
	gap: 12px;
	align-items: baseline;
}
.legal-meta li > span {
	color: var(--text-muted);
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: .08em;
}
.legal-meta li > a {
	color: #fff;
	text-decoration: none;
}
.legal-meta li > a:hover {
	color: var(--accent);
}
.legal-summary {
	background: rgba(31, 176, 154, 0.06);
	border: 1px solid rgba(31, 176, 154, 0.25);
	border-radius: var(--radius-card-sm, 10px);
	padding: 22px 24px;
}
.legal-check-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 8px;
}
.legal-check-list li {
	position: relative;
	padding: 2px 0 2px 30px;
	color: #e6eceb;
}
.legal-check-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 7px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	border: 1.5px solid var(--accent);
	background:
		url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231fb09a' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>") center / 11px 11px no-repeat;
}
.legal-note {
	margin: 16px 0 0 0;
	color: var(--text-muted);
	font-size: 14px;
	font-style: italic;
}
.legal-divider {
	border: 0;
	border-top: 1px solid var(--border-card);
	margin: 36px 0;
}
.legal-back {
	margin-top: 40px;
	padding-top: 28px;
	border-top: 1px solid var(--border-card);
	text-align: center;
}
.legal-back .btn--auth-outline {
	display: inline-flex;
	align-items: center;
	gap: 10px;
}

@media (max-width: 700px) {
	.legal-page {
		padding: 28px 22px;
	}
	.legal-title {
		font-size: 24px;
	}
	.legal-meta li {
		grid-template-columns: 1fr;
		gap: 2px;
	}
}

/* =========================================================================
   GLOBAL HEADLINE FONT: Marcellus
   Alle Ueberschriften (h1-h6) im Admin- und Haendlerbereich nutzen die
   Google Font Marcellus. Marcellus hat nur ein Cut (400 regular).
   font-weight wird bewusst auf 400 !important gezwungen - sonst wuerde der
   Browser bei den vielen alten "font-weight: 600/700"-Regeln aus
   stylesheet.css (h1/h2/h3) synthetisch fett rendern, was uneinheitlich
   wirkt (manche Headlines fetter als andere) und den eleganten Serif-Look
   kaputt macht.
   Zusaetzlich: einzelne Nicht-h*-Elemente, die visuell Headlines sind
   (Dashboard-Kachel-Titel, Chat-Header, Action-Button-Titel).
   ========================================================================= */
h1, h2, h3, h4, h5, h6,
.dashboard-headline-text,
.dashboard-mobile-hero-name,
.dashboard-hero-headline,
.campaign-card-title,
.brand-card-name,
.cstv2-thema,
.chat-header-title,
.content-header h1,
.content-header h2,
.dashboard-campaigns-headline h4 {
	font-family: 'Marcellus', 'Inter', Georgia, serif !important;
	font-weight: 400 !important;
}

/* =========================================================================
   BUTTONS NIE IN MARCELLUS
   -------------------------------------------------------------------------
   Regel: Marcellus ist Serif fuer Headlines. Buttons (auch button-like
   Cards wie Dashboard-Kacheln oder Chat-CTAs) MUESSEN in Inter bleiben -
   sonst wirkt der Button-Text weich/verspielt statt klar-actionable.
   Diese Regel trumpft die Marcellus-h*-Vererbung (auch fuer h3 innerhalb
   `<a class="button-box">`). Specificity + `!important` gewinnen gegen
   die globale h1-h6-Marcellus-Regel oben. Font-weight wird bewusst NICHT
   gesetzt, damit die Buttons ihren eigenen weight behalten.
   ========================================================================= */
.btn, .btn *,
button, button *,
input[type="submit"],
input[type="button"],
a.button-box, a.button-box *,
.dashboard-appointment-promo, .dashboard-appointment-promo *,
.cstv2-chatcard, .cstv2-chatcard *,
.cstv2-chat-cta,
.filter-btn,
.btn-pw-submit,
.brand-campaigns-help-promo, .brand-campaigns-help-promo * {
	font-family: 'Inter', 'Lato', sans-serif !important;
}

/* Ausnahme: die 3 Aktions-Boxen auf dem Dashboard ("Meine Auftraege",
   "Meine Anfragen", "Customer Support") sind zwar strukturell button-
   box, aber ihr h3-Titel ist eine Card-Headline und wird deshalb -
   wie alle anderen Dashboard-Headlines - in Marcellus gerendert.
   Hoehere Specificity + !important gewinnen gegen die Buttons-Nie-
   Marcellus-Regel oben. */
.dashboard-actions-3 .dashboard-buttons a.button-box h3 {
	font-family: 'Marcellus', 'Inter', Georgia, serif !important;
}

/* =========================================================================
   BADGES NIE IN MARCELLUS
   -------------------------------------------------------------------------
   Badges/Chips/Status-Labels sind kompakte, uppercase Micro-Labels - dort
   wirkt Marcellus schwer/verspielt und ist schlecht lesbar. Alle Badge-
   Varianten bleiben in Inter (semi-bold 700). Deckt auch die Kreiszahlen
   (.status-headline .circle, .num-badge, .nav-badge, .turn-badge) sowie
   die Statustext-Chips in Order-/CS-Tiles ab.
   ========================================================================= */
.badge, .badge *,
.chip, .chip *,
.status-chip,
.turn-badge, .turn-badge *,
.cstv2-statusbadge, .cstv2-statusbadge *,
.otv2-status, .otv2-status *,
.num-badge,
.nav-badge,
.product-card-badge,
.status-headline .circle,
.brand-campaigns-count-pill,
.brand-campaigns-actions-count {
	font-family: 'Inter', 'Lato', sans-serif !important;
}

/* Alle Headline-Tags nie uppercase - Marcellus als Serif wirkt uppercase hart.
   Ausnahme: h4/h5 stehen in stylesheet.css sowieso ohne uppercase. h1/h2/h3/h6
   haben aber alte "text-transform: uppercase"-Regeln (stylesheet.css:236-308),
   die wir hier global entschaerfen. Betrifft z.B. /finalstep-edit (Section-h3
   wie "Geschaeft & Einkaeufer"), /mitarbeiter, /order-Headline etc. */
h1, h2, h3, h6 {
	text-transform: none !important;
}

/* .invite-card-headline hat inline in mitarbeiter.blade.php ein hartkodiertes
   text-transform: uppercase - hier global entschaerfen (Marcellus-Konsistenz). */
.invite-card-headline {
	text-transform: none !important;
	letter-spacing: normal !important;
}

/* Hero-Headline nie uppercase - egal was globale Regeln vorgeben. */
.dashboard-hero-headline {
	text-transform: none !important;
}

/* .campaign-card-brand behaelt bewusst Inter (kleine Eyebrow-Zeile
   ueber dem Kampagnen-Titel). Explizit zurueckholen, weil die
   Kaskade sie sonst mit den Marcellus-Regeln oben ueberschreibt. */
.campaign-card-brand {
	font-family: 'Inter', sans-serif !important;
}

/* Akzent-Wort ("fuer dich") innerhalb Headlines: liegt als <span> in <h4>.
   Font wird per Inheritance NICHT immer zuverlaessig uebernommen (andere
   span-Regeln koennen dazwischenkommen), deshalb explizit setzen. */
.cs-intro-accent,
#neue-anfrage-starten .cs-intro-accent {
	font-family: 'Marcellus', 'Inter', Georgia, serif !important;
}

/* Generelle Vergroesserung: h3/h4/h5 bekommen einen fixen rem-Wert, der
   ca. 20% ueber dem Browser-Default liegt. Deterministisch (nicht "em",
   weil sonst schmale Kontexte die Headlines effektiv verkleinern koennten). */
h3 {
	font-size: 1.5rem !important;   /* Browser-Default ~1.17rem */
}
h4 {
	font-size: 1.25rem !important;  /* Browser-Default 1rem */
}
h5 {
	font-size: 1.05rem !important;  /* Browser-Default ~0.83rem */
}

/* =========================================================================
   SECTION-HEADLINES MIT ICON (Dashboard-Style)
   Analog zu .dashboard-headline-icon / .dashboard-headline-text auf
   /user-dashboard - identische Optik (Kreis, Icon in Akzent-Gruen, Text
   in Marcellus) fuer Section-Headlines auf /finalstep-edit und /mitarbeiter.
   Nutzt Heroicons-Set aus customer/partials/dashboard-icon.blade.php.
   ========================================================================= */
.section-headline {
	display: flex !important;
	align-items: center;
	gap: 12px;
}

.section-headline-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	flex: 0 0 40px;
	border-radius: 50%;
	color: var(--accent);
	border: 1px solid rgba(255, 255, 255, .18);
	background: rgba(0, 0, 0, .28);
}

.section-headline-icon svg {
	width: 20px;
	height: 20px;
	display: block;
}

.section-headline-text {
	display: inline-block;
	line-height: 1.2;
}

/* Auf Sub-Karten (h4.invite-card-headline in /mitarbeiter) etwas kleiner. */
h4.section-headline .section-headline-icon {
	width: 34px;
	height: 34px;
	flex: 0 0 34px;
}
h4.section-headline .section-headline-icon svg {
	width: 17px;
	height: 17px;
}

/* Mobile: Icon-Kreis kleiner, damit die Headline nicht auf zwei Zeilen bricht. */
@media (max-width: 700px) {
	.section-headline-icon {
		width: 34px;
		height: 34px;
		flex: 0 0 34px;
	}
	.section-headline-icon svg {
		width: 17px;
		height: 17px;
	}
	h4.section-headline .section-headline-icon {
		width: 30px;
		height: 30px;
		flex: 0 0 30px;
	}
	h4.section-headline .section-headline-icon svg {
		width: 15px;
		height: 15px;
	}
}

/* =========================================================================
   Marcellus-Font-Vererbung auf Headline-Kinder erzwingen
   -------------------------------------------------------------------------
   PROBLEM: `stylesheet.css` Zeile 140 setzt `* { font-family: 'Inter', ... }`
   als Universal-Reset. Der Universal-Selector matched jedes Element DIREKT
   (inkl. Spans innerhalb von h1-h6), und Direct-Match schlaegt Vererbung
   (auch mit `!important` auf dem Parent). Ergebnis: Text in
   `<span class="section-headline-text">` innerhalb einer h3 rendert in
   Inter, obwohl h3 auf Marcellus steht.
   FIX: Font-family explizit auch auf ALLE Kinder von h1-h6 setzen.
   ========================================================================= */
h1 > *, h2 > *, h3 > *, h4 > *, h5 > *, h6 > *,
.section-headline-text {
	font-family: 'Marcellus', 'Inter', Georgia, serif !important;
	font-weight: 400 !important;
}

/* =========================================================================
   Doppel-Icon-Fix auf /finalstep-edit
   -------------------------------------------------------------------------
   Alte Regel `.module .box.box-mobile > .box-inner form > h3::before`
   (theme.css:3647) rendert automatisch einen User-Silhouette-Icon vor
   JEDER h3 die direkt unter <form> liegt (Einkaufsverband, Dokumenten-
   Upload, Geschaeft & Einkaeufer usw.). Zusammen mit unserem neuen
   <span class="section-headline-icon"> in der h3 sind das ZWEI Icons.
   FIX: den alten ::before fuer h3.section-headline komplett neutralisieren
   und das breite letter-spacing der alten Regel zuruecknehmen.
   ========================================================================= */
.module .box.box-mobile > .box-inner form > h3.section-headline::before {
	content: none !important;
}
.module .box.box-mobile > .box-inner form > h3.section-headline {
	letter-spacing: normal !important;
}

/* =========================================================================
   Admin-Formulare (Agentur-Auftrag neu/bearbeiten):
   Themen-Sektionen als Boxen statt <hr>-Trennlinien.
   Gleiche Optik wie .oe-vorgaben-box / .reorder-section-box.
   ========================================================================= */
.admin-section-box {
	margin: 0 0 18px;
	padding: 18px 18px 8px;
	border: 1px solid var(--border-card, #14322f);
	border-radius: var(--radius-card, 12px);
	background: rgba(255, 255, 255, 0.02);
}
.admin-section-box .admin-section-headline {
	margin: 0 0 14px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--text-muted, #8da3a0);
}
/* Verschachtelte hr-Reste / doppelte Raender vermeiden */
.admin-section-box hr { display: none; }

/* ================= Einheitliche Modal-Schliessen-Buttons (2026-07-08) =================
   Ueberall gleicher Schliessen-Button: runder weisser Kreis, schwarzes X, oben
   rechts, leicht ueber den Modal-Rand hinaus (nach oben/rechts). Scrollt nie mit
   (jeweils absolute am Modal-Rahmen, nicht am scrollenden Inhalt).
   Vereinheitlicht: generische .modal (.modal-close-icon via ini.js), cs-modal
   (.cs-modal-close) und Fancybox-Bildzoom (.fancybox-close-small). */
.modal-close-icon,
.cs-modal-close {
	position: absolute !important;
	top: -14px !important;
	right: -14px !important;
	width: 40px !important;
	height: 40px !important;
	background: #fff !important;
	border: 0 !important;
	border-radius: 50% !important;
	box-shadow: 0 4px 14px rgba(0, 0, 0, .35) !important;
	z-index: 100 !important;
}
/* .modal-close-icon hat sein schwarzes X bereits per ::before/::after. */
/* .cs-modal-close hatte ein graues SVG-X -> ausblenden, schwarzes CSS-X setzen. */
.cs-modal-close svg { display: none !important; }
.cs-modal-close::before,
.cs-modal-close::after {
	content: ''; position: absolute; top: 50%; left: 50%;
	width: 16px; height: 2px; background: #222; border-radius: 1px;
}
.cs-modal-close::before { transform: translate(-50%, -50%) rotate(45deg); }
.cs-modal-close::after  { transform: translate(-50%, -50%) rotate(-45deg); }
.cs-modal-close:hover { background: #f4f4f4 !important; }

/* Mobil: Modals sind Vollbild (stylesheet.css) - der ueberstehende
   -14px-Sitz wuerde am Viewportrand angeschnitten. Kreis-Button INNEN
   oben rechts, immer voll sichtbar. */
@media (max-width: 768px) {
	.modal-close-icon,
	.cs-modal-close {
		top: 10px !important;
		right: 10px !important;
	}

	/* Confirm-Overlays (.cs-modal) ebenfalls randlos ueber die ganze Flaeche.
	   stretch + margin 0 statt Flex-Zentrierung, border-box gegen die
	   1px-Rahmen-Ueberbreite (width 100% war content-box). */
	.cs-modal {
		padding: 0 !important;
		align-items: stretch;
	}
	.cs-modal-dialog {
		width: 100vw;
		max-width: 100vw;
		min-height: 100vh;
		min-height: 100dvh;
		margin: 0;
		box-sizing: border-box;
		border: 0;
		border-radius: 0;
		animation: none;
	}
}

/* Fancybox-Bildzoom: eigener Close als weisser Kreis mit schwarzem X, von der
   Ecke eingerueckt (nicht mehr am nackten Browserrand). */
.fancybox-close-small { top: 6px !important; right: 6px !important; width: 44px !important; height: 44px !important; opacity: 1 !important; }
.fancybox-close-small:after {
	top: 0 !important; right: 0 !important;
	width: 44px !important; height: 44px !important;
	font: 700 26px/44px Arial, sans-serif !important;
	color: #222 !important; background: #fff !important;
	box-shadow: 0 4px 14px rgba(0, 0, 0, .35);
}
.fancybox-close-small:hover:after { background: #f4f4f4 !important; color: #000 !important; }


/* =====================================================================
   Chat-Buttons in den Anfragen-Listen (Haendler "Meine Anfragen",
   Admin-Anfragen, Lieferanten-Portal): einheitliche Breite - mit und
   ohne Zaehler-Badge gleich gross, Inhalt zentriert.
   ===================================================================== */
.module .btn.btn-small.openChatModalBtn,
body.brand-portal .orders-list-box table a.btn-small {
	min-width: 112px;
	display: inline-flex !important;
	align-items: center;
	/* Text + Badge mittig (Wunsch 17.08.) */
	justify-content: center;
	/* Einheitliche Hoehe - der Zaehler-Badge macht Buttons sonst hoeher
	   (Portal-Buttons haben kein openChatModalBtn, brauchen die Hoehe hier) */
	height: 36px;
	gap: 6px;
	box-sizing: border-box;
}

/* ============================================================
   Teilnehmer-Chips in den Anfragen-Listen (Haendler-Uebersicht
   "Meine Anfragen" + Brand-Portal): kleine Outline-Pillen in den
   Partei-Farben der Chat-Teilnehmer (Customer gruenlich, Brand
   weiss, Agentur tuerkis).
   ============================================================ */
.cs-party-chips {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 6px;
	vertical-align: middle;
}
.cs-party-chip {
	display: inline-flex;
	align-items: center;
	padding: 3px 9px;
	border-radius: 999px;
	border: 1px solid rgba(255, 255, 255, 0.25);
	color: #d6d6d6;
	font-size: 11px;
	font-weight: 600;
	line-height: 1.3;
	white-space: nowrap;
}
.cs-party-chip nobr { display: inline; } /* globaler span/nobr-Reset */
.cs-party-chip-customer { border-color: rgba(182, 233, 140, 0.45); color: #b6e98c; background: rgba(182, 233, 140, 0.06); }
.cs-party-chip-brand    { border-color: rgba(255, 255, 255, 0.45); color: #ffffff;  background: rgba(255, 255, 255, 0.05); }
.cs-party-chip-admin    { border-color: rgba(31, 176, 154, 0.55);  color: #1fb09a;  background: rgba(31, 176, 154, 0.08); }
/* In den Mobile-Kacheln als eigene Zeile mit etwas Abstand */
.cs-party-chips-tile { display: flex; margin-top: 10px; }
