/* ===================== freeagents.php ("fap-" prefix) =====================
   Moved out of freeagents.php's inline <style> block 2026-08-11 (continuing the page-by-page
   cleanup, see css/dyne.css's own header for the project). All static, no PHP-variable
   interpolation, so this is a clean 1:1 move.

   .gmform-msg-error/.gmform-msg-success stayed here (page-local) rather than merging into
   css/dyne.css's shared .gmform-login-box — these two have quietly diverged into different
   variants across the ~17 pages that define them (this page's margin is 0 0 6px, trade.php's own
   copy is 0 0 10px, older un-redesigned pages use a plain color+font-size version) — see
   css/trade.css's header for the same finding. freeagents.php doesn't define .gmform-login-box
   at all (doesn't need it), unlike trade.php.

   .fap-pill (+ color variants) is NOT the same rule as roster.php's .rh-pill or playerlist.php's
   .plp-pill even though the color VALUES match — those are separate class names by design (see
   docs/design-system.md's "per-page prefix, reused suffix names" pattern), not accidental
   duplication like rh-pill was, so left alone rather than force-merged into one shared class. */

#content .gmform-msg-error { color: #b00000 !important; text-shadow: none !important; font-size: 13px; background-color: #ffffff; padding: 6px 10px; border-radius: 4px; margin: 0 0 6px; width: fit-content; }
#content .gmform-msg-success { color: #1a7a1a !important; text-shadow: none !important; font-size: 13px; background-color: #ffffff; padding: 6px 10px; border-radius: 4px; margin: 0 0 6px; width: fit-content; }

/* ===================== Redesign 2026-08-08 ===================== */
.fap-page { max-width: 1360px; margin: 0 auto; background: #ffffff; }
/* Free Agents/Upcoming Free Agents-Tabs (+ Auktionen-Button) sitzen seit 2026-08-08 direkt
   in der Hauptnav-Leiste, in derselben Zeile wie das Hamburger-Icon (User-Wunsch: "GENAU wie
   bei roster.php"), aber horizontal auf Hoehe des Seiteninhalts (.fap-content) statt direkt
   am Hamburger-Icon - anders als roster.php (das komplett ausserhalb von
   .layoutBoundary/#content liegt und darum ohnehin am Hamburger-Icon ausgerichtet ist), steckt
   .fap-page HIER in der gemeinsamen #content.content/.layoutBoundary-Huelle, deren
   Breite/Padding aus dem extern gehosteten Stylesheet kommt (siehe CSS-Architektur-Notiz) und
   sich nicht per fester CSS-Formel nachbilden laesst. .fap-navtabs (flex:1 1 auto, teilt sich
   die Zeile mit dem Hamburger-Icon statt sie ueber volle Breite zu belegen) bekommt daher per
   JS (siehe <script> weiter unten) links/rechts genau so viel Padding verpasst, dass die Tabs
   exakt ueber der linken/rechten Kante von .fap-content landen - identisches Prinzip wie
   syncMainNavHeaderHeight() in nav.php. */
.fap-navtabs { display: flex; align-items: center; flex: 1 1 auto; flex-wrap: wrap; box-sizing: border-box; }
.fap-navtab.active { background-color: #1a2733; font-weight: 700; }
/* Auktions-Button sitzt seit 2026-08-10 (User-Wunsch) direkt neben "Upcoming Free Agents"
   statt rechtsbuendig - die Uhrzeit-Anzeige (ebenfalls 2026-08-10) bleibt als einziges
   verbleibendes Element rechtsbuendig, daher reicht margin-left:auto direkt an ihr. */
.fap-navclock { margin-left: auto; font-weight: 700; font-variant-numeric: tabular-nums; color: #fff; white-space: nowrap; }
/* "Auktionen laufen gerade" (User-Wunsch 2026-08-10, $fa_auctions_running) - kraeftige
   Rot-Faerbung + dezenter Puls, damit ein GM den Button auch beim beilaeufigen Ueberfliegen
   der Nav-Leiste nicht uebersieht, waehrend gerade eine Auktion live laeuft. */
.fap-navtab-auctions-live { background-color: #b23b30 !important; animation: fapAuctionsLivePulse 1.6s ease-in-out infinite; }
.fap-navtab-auctions-live:hover { background-color: #96322a !important; }
.fap-live-badge { display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 8px; background: #fff; color: #b23b30; font-size: 9px; font-weight: 800; letter-spacing: .04em; vertical-align: middle; animation: fapLiveBlink 1.4s ease-in-out infinite; }
@keyframes fapAuctionsLivePulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(178, 59, 48, .6); } 50% { box-shadow: 0 0 0 5px rgba(178, 59, 48, 0); } }
@keyframes fapLiveBlink { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

.fap-content { padding: 16px 20px 26px; box-sizing: border-box; }

.fap-filters { background: #f4f6f8; border: 1px solid #dde1e6; border-radius: 6px; padding: 14px 16px; margin-bottom: 14px; display: flex; flex-direction: column; gap: 12px; }
.fap-filter-row1 { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.fap-search { flex: 1 1 200px; min-width: 160px; padding: 7px 10px; border-radius: 5px; border: 1px solid #ccd3da; font-size: 12.5px; color: #1b2733; font-family: inherit; }
.fap-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 16px; background: #eef1f4; border: 1px solid #ccd3da; color: #1b2733; font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap; user-select: none; }
.fap-chip input { margin: 0; }
.fap-chip:has(input:checked) { background: #2c3e50; color: #fff; border-color: #2c3e50; }
.fap-adv-toggle { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; background: transparent; border: 1px solid #ccd3da; color: #1b2733; font-size: 12px; font-weight: 600; padding: 6px 12px; border-radius: 16px; cursor: pointer; font-family: inherit; }
.fap-adv-toggle svg { transition: transform .15s ease; }
.fap-adv-toggle.open svg { transform: rotate(180deg); }

.fap-adv-panel { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px 16px; padding-top: 10px; border-top: 1px dashed #ccd3da; margin-top: 2px; }
@media (max-width: 980px) { .fap-adv-panel { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .fap-adv-panel { grid-template-columns: 1fr; } }
.fap-field label { display: block; font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: #66707c; font-weight: 700; margin-bottom: 4px; }
.fap-select { font-family: inherit; font-size: 12px; padding: 6px 8px; border-radius: 5px; border: 1px solid #ccd3da; background: #fff; color: #1b2733; width: 100%; box-sizing: border-box; }
.fap-range { display: flex; align-items: center; gap: 6px; }
.fap-range input { width: 100%; font-family: inherit; font-size: 12px; padding: 6px 8px; border-radius: 5px; border: 1px solid #ccd3da; color: #1b2733; font-variant-numeric: tabular-nums; box-sizing: border-box; }
.fap-range span { color: #66707c; font-size: 11px; }
.fap-pos-group { display: flex; gap: 4px; flex-wrap: wrap; }
.fap-pos-group .fap-chip { padding: 5px 10px; border-radius: 4px; }
.fap-adv-actions { grid-column: 1 / -1; display: flex; gap: 8px; padding-top: 2px; }
.fap-btn { font-family: inherit; font-size: 12px; font-weight: 600; padding: 7px 14px; border-radius: 5px; cursor: pointer; border: 1px solid #2c3e50; text-decoration: none; display: inline-block; }
.fap-btn.ghost { background: transparent; color: #2c3e50; }
.fap-btn.ghost:hover { background: #eef1f4; }

.fap-table-scroll { overflow-x: auto; }
table.fap-table { width: 100%; border-collapse: collapse; font-size: 12px; min-width: 1080px; }
.fap-table thead th { background: #2c3e50; color: #fff; font-weight: 700; text-align: center; padding: 8px 6px; white-space: nowrap; }
.fap-table thead th.left { text-align: left; padding-left: 12px; }
.fap-table thead th.sorted { background: #1a2733; }
.fap-table thead th a { color: inherit; text-decoration: none; display: inline-flex; align-items: center; gap: 3px; }
.fap-table tbody td { padding: 6px; text-align: center; border-bottom: 1px solid #e2e4e7; vertical-align: middle; }
.fap-table tbody td.left { text-align: left; padding-left: 12px; }
.fap-table tbody tr:nth-child(odd) { background: #fff; }
.fap-table tbody tr:nth-child(even) { background: #f5f6f8; }
.fap-table tbody tr:hover { background: #eaf1f8; }
.fap-table td.sticky-col, .fap-table th.sticky-col { position: sticky; left: 0; z-index: 1; background: inherit; box-shadow: 2px 0 4px rgba(0,0,0,0.06); }
.fap-table thead th.sticky-col { background: #2c3e50; z-index: 2; }
.fap-table thead th.sticky-col.sorted { background: #1a2733; }
.fap-player-cell { display: flex; align-items: center; gap: 8px; }
.fap-playerpic { width: 32px; height: 32px; border-radius: 4px; object-fit: cover; flex-shrink: 0; }
.fap-name-link { color: #2c3e50; font-weight: 600; text-decoration: underline; }
.fap-muted { color: #a9b0b8; }
.fap-empty { text-align: center; padding: 30px; color: #66707c; font-size: 14px; }

.fap-pill { display: inline-block; font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 9px; white-space: nowrap; border: 1px solid #c8ccd1; background: #f1eee8; color: #5f5e5a; }
.fap-pill.bird { background: #e7f2ff; color: #0c447c; border-color: #85b7eb; }
.fap-pill.bird-lost { background: #eef1f5; color: #4a5a6b; border-color: #b7c3d1; }
.fap-pill.bird-vorsaison { background: #e1f6f3; color: #0d6d61; border-color: #79cec1; }
.fap-pill.to { background: #f0e8fb; color: #5a2a92; border-color: #c6a3ec; }
.fap-pill.rs { background: #e6f6e9; color: #1d7a30; border-color: #9bd6a6; }
.fap-pill.rfa { background: #fde7ee; color: #8a1a3c; border-color: #e0a0bb; }
.fap-pill.getradet { background: #eceef1; color: #3d4952; border-color: #b7c0c8; }
.fap-pill.nomax { background: #fbe9dd; color: #96401a; border-color: #e8ab7c; }
.fap-pill.sperre { background: #fbe0df; color: #a41f19; border-color: #e79a95; }

.fap-bid-cell { min-width: 260px; white-space: nowrap; }
.fap-bid-row { display: flex; align-items: center; gap: 7px; }
.fap-bid-row + .fap-bid-row { margin-top: 3px; }
.fap-bid-lead { font-weight: 700; font-size: 11.5px; color: #1b2733; overflow: hidden; text-overflow: ellipsis; max-width: 150px; cursor: default; }
.fap-btn-bid { display: inline-block; background: #2c3e50; color: #fff; font-size: 10.5px; font-weight: 600; padding: 5px 11px; border-radius: 4px; text-decoration: none; border: none; font-family: inherit; cursor: pointer; white-space: nowrap; flex-shrink: 0; }
.fap-btn-bid.secondary { background: transparent; color: #2c3e50; border: 1px solid #2c3e50; }
.fap-claim-count { font-size: 10.5px; color: #66707c; }
/* Kompakte Fristzeile unter dem Gebots-/Claim-Button (User-Wunsch 2026-08-08) - bewusst
   winzig (9px, line-height 1) gehalten, damit sie in den bestehenden Freiraum der Zeile
   passt (die Zeilenhoehe wird durch das 32px-Spielerfoto in der ersten Spalte vorgegeben,
   das reguläre Gebots-/Claim-Zeile allein nicht ausfuellt) statt die Zeile sichtbar hoeher
   zu machen. */
.fap-bid-deadline { font-size: 9px; line-height: 1; color: #8b95a1; margin-top: 2px; white-space: nowrap; }

.fap-watch-btn { width: 26px; height: 26px; border-radius: 50%; border: 1px solid #ccd3da; background: #fff; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; color: #66707c; padding: 0; }
.fap-watch-btn.active { background: #fff6da; border-color: #e8c96b; color: #a8790a; }
.fap-watch-btn:hover { filter: brightness(0.97); }

/* Gebots-Zustand-Faerbung (User-Wunsch 2026-08-08): hellgruen/dunkelgruen wenn das
   eigene Team fuehrt, hellrot/dunkelrot wenn ein fremdes Team fuehrt ("dunkel" =
   Gebotsdecke erreicht, siehe fa_row_bid_class() weiter oben). Desktop faerbt NUR die
   Gebots-Zelle (@media min-width:721px, Gegenstueck zum 720px-Kartenlayout-Breakpoint),
   Mobile faerbt die gesamte Karte (siehe @media max-width:720px weiter unten). */
@media (min-width: 721px) {
	tr.fap-row-bidown td.fap-bid-cell { background: #e8f8ec; }
	tr.fap-row-bidforeign td.fap-bid-cell { background: #fdeceb; }
	/* "Max" (Gebotsdecke erreicht) ist bewusst kraeftiger dunkel statt nur mittelhell,
	   sonst kaum von der hellen Variante zu unterscheiden - braucht dafuer aber weisse
	   statt der sonst ueberall dunklen Standard-Textfarbe (User-Feedback 2026-08-08: rot
	   und dunkelgruen waren mit der urspruenglichen dunklen Schrift schlecht lesbar). */
	tr.fap-row-bidown-max td.fap-bid-cell { background: #2e7d46; color: #ffffff; }
	tr.fap-row-bidforeign-max td.fap-bid-cell { background: #b23b30; color: #ffffff; }
	tr.fap-row-bidown-max td.fap-bid-cell .fap-bid-lead,
	tr.fap-row-bidforeign-max td.fap-bid-cell .fap-bid-lead { color: #ffffff; }
	tr.fap-row-bidown-max td.fap-bid-cell .fap-bid-deadline,
	tr.fap-row-bidforeign-max td.fap-bid-cell .fap-bid-deadline,
	tr.fap-row-bidown-max td.fap-bid-cell .fap-claim-count,
	tr.fap-row-bidforeign-max td.fap-bid-cell .fap-claim-count { color: #e8ece9; }
	tr.fap-row-bidown-max td.fap-bid-cell .fap-btn-bid.secondary,
	tr.fap-row-bidforeign-max td.fap-bid-cell .fap-btn-bid.secondary { color: #ffffff; border-color: #ffffff; }
}

.fap-full-text { display: inline; }
.fap-mobile-text { display: none; }
@media (max-width: 479px) {
	.fap-full-text { display: none; }
	.fap-mobile-text { display: inline; }
}

/* ===================== Redesign 2026-08-08 (Nachtrag): Mobile Kartenlayout =====================
   Horizontales Scrollen einer 13+-spaltigen Tabelle ist auf schmalen Screens unbrauchbar
   (User-Feedback: nur Spielername + eine Spalte sichtbar, Gebot-Spalte praktisch nicht
   erreichbar) - unterhalb 720px wird die Tabelle stattdessen zu gestapelten, einklappbaren
   Karten umgebaut: kollabiert zeigt jede Karte nur Bild+Name+OVR in einer Zeile (User-
   Wunsch: "sehr sperrig", noch kompakter), ein Klick auf die Karte (ausserhalb von Links/
   Buttons) blendet die restlichen Felder inkl. Gebot/Watchlist ein (.fap-expanded-Klasse,
   siehe JS ganz unten). Sortier-Buttons in der (jetzt versteckten) Kopfzeile werden durch
   das Sortieren-Dropdown in der Filterleiste ersetzt (siehe .fap-sort-select weiter oben). */
.fap-sort-select { display: none; width: auto; flex: 0 0 auto; }
@media (max-width: 720px) {
	.fap-sort-select { display: inline-flex; }
	.fap-table-scroll { overflow-x: visible; }
	table.fap-table, table.fap-table tbody, table.fap-table tr { display: block; width: 100%; min-width: 0; }
	.fap-table thead { display: none; }
	/* !important noetig: die Desktop-Grundregeln (.fap-table tbody td, .fap-table tbody
	   td.left, .fap-table tbody tr:nth-child(...)) sind spezifischer als einfache
	   .fap-table td/tr-Selektoren und wuerden sonst padding/text-align/Streifenfarbe
	   der Tabellenansicht durchdruecken (Bug 2026-08-08: fuehrte zu einer zu hohen,
	   umgebrochenen Kartenzeile). */
	.fap-table tbody tr {
		display: flex !important; flex-wrap: wrap; align-items: center; gap: 5px 7px;
		background: #fff !important; border: 1px solid #e2e4e7; border-radius: 8px;
		padding: 10px 46px 10px 12px; margin-bottom: 8px; cursor: pointer; position: relative;
	}
	.fap-table tbody tr:hover { background: #fff !important; }
	/* Gebots-Zustand-Faerbung auf Mobile faerbt die GESAMTE Karte statt nur einer Zelle
	   (User-Wunsch 2026-08-08) - hoehere Spezifitaet+Reihenfolge noetig, um die generische
	   weisse tr-Hintergrundregel + deren :hover-Variante (oben) zu schlagen. "Max" braucht
	   weisse statt dunkler Standard-Textfarbe fuer alle Kartentexte (User-Feedback
	   2026-08-08: rot/dunkelgruen mit dunkler Schrift schlecht lesbar) - dunkler+kraeftiger
	   Hintergrundton als die helle Variante, nicht nur ein bisschen dunkler. */
	.fap-table tbody tr.fap-row-bidown, .fap-table tbody tr.fap-row-bidown:hover { background: #e8f8ec !important; }
	.fap-table tbody tr.fap-row-bidforeign, .fap-table tbody tr.fap-row-bidforeign:hover { background: #fdeceb !important; }
	.fap-table tbody tr.fap-row-bidown-max, .fap-table tbody tr.fap-row-bidown-max:hover { background: #2e7d46 !important; color: #ffffff; }
	.fap-table tbody tr.fap-row-bidforeign-max, .fap-table tbody tr.fap-row-bidforeign-max:hover { background: #b23b30 !important; color: #ffffff; }
	tr.fap-row-bidown-max .fap-name-link, tr.fap-row-bidforeign-max .fap-name-link,
	tr.fap-row-bidown-max .fap-player-cell span, tr.fap-row-bidforeign-max .fap-player-cell span,
	tr.fap-row-bidown-max td[data-label="OVR"], tr.fap-row-bidforeign-max td[data-label="OVR"] { color: #ffffff !important; }
	/* .fap-muted (leerer "–"-Platzhalter) bewusst NICHT auf Weiss gezwungen - sonst
	   wuerde er auf dem dunklen Kartenhintergrund staerker auffallen als der eigentliche
	   Inhalt drumherum; die farbigen Pills (.fap-pill) behalten ihre eigenen, davon
	   unabhaengigen Text-/Randfarben. */
	tr.fap-row-bidown-max td[data-label]::before, tr.fap-row-bidforeign-max td[data-label]::before,
	tr.fap-row-bidown-max .fap-bid-deadline, tr.fap-row-bidforeign-max .fap-bid-deadline,
	tr.fap-row-bidown-max .fap-claim-count, tr.fap-row-bidforeign-max .fap-claim-count { color: #e8ece9; }
	tr.fap-row-bidown-max::after, tr.fap-row-bidforeign-max::after { color: #e8ece9; }
	tr.fap-row-bidown-max .fap-btn-bid.secondary, tr.fap-row-bidforeign-max .fap-btn-bid.secondary { color: #ffffff; border-color: #ffffff; }
	.fap-table td {
		display: none; align-items: center; padding: 0 !important; border: none !important;
		text-align: left !important; position: static !important; box-shadow: none; background: transparent;
		font-size: 12.5px; vertical-align: middle;
	}
	/* Kollabiert IMMER sichtbar: Spieler-Zelle + OVR, sonst nichts. Spieler-Zelle nimmt
	   IMMER die volle Zeile ein (flex-basis:100%) statt mit spaeter erscheinenden
	   Feldern um Platz zu konkurrieren - sonst wuerde sie beim Ausklappen (viele neue
	   Flex-Geschwister auf derselben Zeile) auf ~0 Breite zusammengedrueckt und der Name
	   verschwand (Bug 2026-08-08). OVR + Auf-/Zuklapp-Pfeil sind deshalb absolut oben
	   rechts positioniert, komplett ausserhalb des Flex-Umbruchs - neue (ausgeklappte)
	   Felder landen dadurch automatisch auf einer neuen Zeile darunter. */
	.fap-table td.sticky-col { display: inline-flex; min-width: 0; flex: 1 1 100%; }
	.fap-table td.sticky-col .fap-playerpic { width: 40px; height: 40px; flex: 0 0 auto; }
	.fap-table td.sticky-col .fap-player-cell { gap: 10px; min-width: 0; flex: 1 1 0%; }
	.fap-table td.sticky-col .fap-name-link, .fap-table td.sticky-col span { font-size: 12.5px !important; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; flex: 1 1 0%; display: inline-block; }
	/* top+height statt "top:10px" allein: zentriert OVR vertikal auf Hoehe der 40px
	   hohen Spielerzeile (Bild), egal ob die Karte kollabiert oder ausgeklappt (und damit
	   insgesamt viel hoeher) ist - vorher sass OVR oben an der Kante der Namensbox statt
	   mittig (User-Feedback 2026-08-08). */
	.fap-table td[data-label="OVR"] {
		display: inline-flex !important; align-items: center; justify-content: center;
		position: absolute !important; top: 10px; right: 26px; height: 40px;
		font-size: 12.5px !important; font-weight: 700; color: #2c3e50;
	}
	.fap-table td[data-label="OVR"]::before { content: none !important; }
	/* Auf-/Zuklapp-Pfeil, absolut positioniert (siehe Kommentar oben). */
	.fap-table tbody tr::after { content: "\25BE"; position: absolute; top: 13px; right: 10px; font-size: 13px; color: #a9b0b8; }
	.fap-table tbody tr.fap-expanded::after { content: "\25B4"; }
	/* Ausgeklappt: alle Felder inkl. Gebot/Watchlist sichtbar. */
	.fap-table tbody tr.fap-expanded td { display: inline-flex; }
	.fap-table td[data-label]::before { content: attr(data-label) ": "; font-size: 9.5px; text-transform: uppercase; letter-spacing: .03em; color: #a9b0b8; font-weight: 700; margin-right: 3px; }

	/* Feste Zeilenaufteilung der ausgeklappten Felder (User-Wunsch 2026-08-08):
	   Zeile 1 Pos/Gehalt/Team/J.i.T., Zeile 2 Alter/Größe/Gewicht, Zeile 3 (nur wenn
	   vorhanden) Birds/Optionen/Trade, Zeile 4 Gebot/Watchlist. "order" bestimmt die
	   visuelle Reihenfolge unabhaengig von der DOM-/Spaltenreihenfolge; die drei
	   unsichtbaren .fap-row-break-Zellen (siehe PHP) erzwingen per flex-basis:100% einen
	   Zeilenumbruch an fester Stelle, unabhaengig von der tatsaechlichen Inhaltsbreite -
	   "order" allein erzwingt KEINEN Umbruch, nur die Reihenfolge (Bug 2026-08-08: Gebot
	   rutschte ohne eigenen Break-Marker in Zeile 3, wenn dort noch Platz frei war). */
	.fap-table td[data-label="Pos"] { order: 1; }
	.fap-table td[data-label="Gehalt"] { order: 2; }
	.fap-table td[data-label="Team"] { order: 3; }
	.fap-table td[data-label="J.i.T."] { order: 4; }
	.fap-table td.fap-row-break[data-break="a"] { order: 5; }
	.fap-table td[data-label="Alter"] { order: 6; }
	.fap-table td[data-label="Größe"] { order: 7; }
	.fap-table td[data-label="Gewicht"] { order: 8; }
	.fap-table td.fap-row-break[data-break="b"] { order: 9; }
	/* Kompaktere Schrift fuer diese 7 Detailfelder, damit je 4 bzw. 3 pro Zeile passen
	   (User-Wunsch: feste 3-Zeilen-Aufteilung, kein Umbruch innerhalb einer Gruppe). */
	.fap-table td[data-label="Pos"], .fap-table td[data-label="Gehalt"],
	.fap-table td[data-label="Team"], .fap-table td[data-label="J.i.T."],
	.fap-table td[data-label="Alter"], .fap-table td[data-label="Größe"], .fap-table td[data-label="Gewicht"] {
		font-size: 11px !important;
	}
	.fap-table td[data-label="Pos"]::before, .fap-table td[data-label="Gehalt"]::before,
	.fap-table td[data-label="Team"]::before, .fap-table td[data-label="J.i.T."]::before,
	.fap-table td[data-label="Alter"]::before, .fap-table td[data-label="Größe"]::before, .fap-table td[data-label="Gewicht"]::before {
		font-size: 8.5px; margin-right: 2px;
	}
	.fap-table td[data-label="Birds"] { order: 10; }
	.fap-table td[data-label="Optionen"] { order: 11; }
	.fap-table td[data-label="Trade"] { order: 12; }
	.fap-table td.fap-row-break[data-break="c"] { order: 15; }
	.fap-table tbody tr.fap-expanded td.fap-bid-cell { order: 20; }
	.fap-table tbody tr.fap-expanded td:has(.fap-watch-btn) { order: 21; }

	.fap-table td.fap-row-break { display: none; }
	.fap-table tbody tr.fap-expanded td.fap-row-break {
		display: block !important; flex-basis: 100%; width: 0; height: 0;
		padding: 0 !important; margin: 0; border: none !important;
	}

	/* Birds/Optionen/Trade: keine "Label: "-Vorsilbe (nur die farbige Box), und die
	   ganze Zelle komplett ausgeblendet, wenn der Spieler dort nichts hat (erkennbar am
	   fap-muted-Platzhalter aus fa_pill_label()) - Zeile 3 verschwindet dadurch von
	   selbst vollstaendig, wenn alle drei leer sind. */
	.fap-table td[data-label="Birds"]::before,
	.fap-table td[data-label="Optionen"]::before,
	.fap-table td[data-label="Trade"]::before { content: none !important; }
	.fap-table tbody tr.fap-expanded td[data-label="Birds"]:has(.fap-muted),
	.fap-table tbody tr.fap-expanded td[data-label="Optionen"]:has(.fap-muted),
	.fap-table tbody tr.fap-expanded td[data-label="Trade"]:has(.fap-muted) { display: none !important; }

	/* Value entfaellt auf Mobile komplett (User-Wunsch 2026-08-08, nicht Teil der
	   gewuenschten 3 Zeilen). */
	.fap-table td[data-label="Value"] { display: none !important; }
	/* Gebot-Zelle und Watchlist-Auge auf DERSELBEN Zeile (User-Wunsch 2026-08-08) statt
	   Watchlist als eigene volle Zeile darunter - beide bekommen denselben oberen
	   Rand/Abstand (border-top/margin-top/padding-top) UND align-self:flex-start, damit
	   die Trennlinie durchgehend wirkt, auch wenn die Gebot-Zelle durch mehrzeiligen
	   Inhalt (Claim + Gebot) hoeher wird als der Watchlist-Button. */
	.fap-table tbody tr.fap-expanded td.fap-bid-cell { display: flex; flex-direction: column; align-items: flex-start; align-self: flex-start; flex: 1 1 auto; margin-top: 6px; padding: 8px 0 0 !important; border-top: 1px dashed #e2e4e7; white-space: normal; min-width: 0; }
	.fap-table td.fap-bid-cell .fap-bid-row { flex-wrap: wrap; }
	.fap-table td.fap-bid-cell .fap-bid-lead { max-width: none; white-space: normal; }
	.fap-table tbody tr.fap-expanded td:has(.fap-watch-btn) { display: inline-flex !important; flex: 0 0 auto; align-self: flex-start; margin-top: 6px; margin-left: auto; padding-top: 8px !important; border-top: 1px dashed #e2e4e7; }
}
