/* ── Turnierliste + Turnier-Detail (Block W1 · Teil A1) ──────────────────────────────────────────────────────────
   Figma YRUirscc0yHUgTS69n5bDU: W12 175:4734 (Upcoming-Zeile 165:3593) · M3 177:8550 · W1 135:1857 · W7 140:2586 ·
   W3 136:2099 · W9 140:3084 · W27 178:7194 · W11 145:3397 · M1 146:3369. Bausteine aus tw.css, Praefix `tw-l-`. */

.tw-l-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.tw-l-seite .leise { color: var(--w25); }
.tw-l-seite h2.tw-cap { margin: 0; }

/* ═════════ Liste (W12) ═════════ */
.tw-l-fmt select { min-width: 132px; max-width: 180px; text-overflow: ellipsis; }
.tw-l-gruppe { display: flex; flex-direction: column; }
.tw-rumpf.liste .tw-links { gap: 0; }

.tw-l-skel { padding-top: 26px; }

/* ═════════ Detail (W1/W7) ═════════ */
.tw-l-kchips { display: inline-flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.tw-l-serie { text-decoration: none; display: inline-flex; max-width: 280px; }
.tw-l-serie .tw-chip { overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.tw-l-serie:hover .tw-chip { color: var(--w100); }
.tw-l-serie:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 999px; }
.tw-l-stream { display: inline-flex; align-items: center; gap: 4px; color: var(--violett-text) !important; text-decoration: none; }
.tw-l-stream svg { width: 14px; height: 14px; }
.tw-l-warn { margin-top: 28px; }
.tw-l-warn > div { display: flex; flex-direction: column; gap: 2px; }
.tw-l-tab-overview > .tw-l-warn + .tw-rumpf { margin-top: 24px; }


.tw-l-plan { display: flex; flex-direction: column; }
.tw-l-plan-z { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 20px; padding: 12px 0; border-bottom: 1px solid var(--w08); }
.tw-l-plan-z .zeit { font: 600 15px/19px var(--font-brand); color: var(--w100); }
.tw-l-plan-z b { display: flex; align-items: center; gap: 8px; font: 500 15px/19px var(--font-brand); color: var(--w100); }
.tw-l-plan-z b .tw-punkt { background: var(--gruen); }
.tw-l-plan-z div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tw-l-plan-z div span { font: 400 12px/16px var(--font-brand); color: var(--w45); overflow-wrap: anywhere; }
.tw-l-plan-z.erledigt .zeit, .tw-l-plan-z.erledigt b { color: var(--w45); }

.tw-l-vo { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.tw-l-vo li { display: flex; gap: 10px; align-items: flex-start; font: 400 14px/19px var(--font-brand); color: var(--w70); }
.tw-l-vo li svg { margin-top: 2px; flex: 0 0 14px; }
.tw-l-vo li.ok svg { color: var(--gruen); }
.tw-l-vo li.nein svg { color: var(--gold2); }
.tw-l-vo li.nein b { color: var(--gold2); }
.tw-l-vo li.offen svg { color: var(--w45); }
.tw-l-vo li b { font-weight: 500; color: var(--w100); }
.tw-l-vo li small { display: block; font: 400 12px/16px var(--font-brand); color: var(--w45); }

.tw-l-punkte { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.tw-l-punkte li { position: relative; padding-left: 15px; font: 400 15px/19px var(--font-brand); color: var(--w70); overflow-wrap: anywhere; }
.tw-l-punkte li::before { content: ""; position: absolute; left: 0; top: 7px; width: 5px; height: 5px; border-radius: 50%; background: var(--violett-text); }
.tw-l-punkte.klein li { font-size: 14px; line-height: 19px; }
.tw-l-mehr { display: inline-flex; align-items: center; gap: 4px; align-self: flex-start; }
.tw-l-mehr svg { width: 14px; height: 14px; }

.tw-l-weiter { display: flex; align-items: center; gap: 16px; }
.tw-l-weiter > div { flex: 1 1 auto; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tw-l-weiter b { font: 600 15px/19px var(--font-brand); color: var(--w100); }
.tw-l-weiter span { font: 400 13px/18px var(--font-brand); color: var(--w70); }
.tw-l-weiter svg { color: var(--violett-text); }

/* Rechte Spalte */
.tw-l-anm { display: flex; flex-direction: column; gap: 14px; }
.tw-l-anm-zahl { display: flex; align-items: baseline; gap: 6px; }
.tw-l-anm-zahl b { font: 700 32px/40px var(--font-brand); color: var(--w100); }
.tw-l-anm-zahl span { font: 400 15px/19px var(--font-brand); color: var(--w45); }
.tw-l-host-z { display: flex; align-items: center; gap: 12px; min-width: 0; }
.tw-l-host-z > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tw-l-host-z b { font: 600 15px/19px var(--font-brand); color: var(--w100); overflow-wrap: anywhere; }
.tw-l-host-z span { font: 400 12px/16px var(--font-brand); color: var(--w45); }
.tw-l-host-links { display: flex; gap: 16px; flex-wrap: wrap; }
.tw-l-host-links .tw-link, .tw-l-orga { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; }
.tw-l-host-links svg, .tw-l-orga svg { width: 14px; height: 14px; }
.tw-l-dabei { display: flex; flex-direction: column; gap: 12px; align-items: flex-start; background: none; border: 0; padding: 0;
    cursor: pointer; text-align: left; color: inherit; border-radius: 8px; }
.tw-l-dabei:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.tw-l-dabei .logos { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.tw-l-dabei .logos > span { display: inline-flex; }
.tw-l-dabei .mehr { height: 32px; min-width: 32px; padding: 0 8px; border-radius: 8px; background: var(--w06); box-sizing: border-box;
    font: 600 12px/32px var(--font-brand); color: var(--w70); }
.tw-l-dabei .satz { font: 400 13px/16px var(--font-brand); color: var(--w45); }
.tw-l-dabei:hover .satz { color: var(--w70); }

/* ═════════ Teams-Reiter (W3) ═════════ */
.tw-l-tkopf { display: flex; align-items: baseline; justify-content: space-between; gap: 8px 24px; flex-wrap: wrap; margin: 32px 0 24px; }
.tw-l-tkopf.links { justify-content: flex-start; margin: 0 0 4px; }
.tw-l-tkopf .tw-h2 { font-size: 18px; }
.tw-l-teams { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.tw-l-team { display: flex; flex-direction: column; gap: 14px; padding: 18px; }
.tw-l-team.violett { padding: 17.5px; }
.tw-l-team.dq { opacity: .5; }
.tw-l-team-k { display: flex; align-items: center; gap: 12px; min-width: 0; }
.tw-l-team-k > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tw-l-team-k b { font: 600 15px/19px var(--font-brand); color: var(--w100); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tw-l-team-k b.du { color: var(--violett-text); }
.tw-l-team-k span { font: 400 12px/16px var(--font-brand); color: var(--w45); overflow-wrap: anywhere; }
.tw-l-kader { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.tw-l-kader li { display: flex; align-items: center; gap: 10px; min-width: 0; min-height: 20px; }
.tw-l-kader .n { flex: 1 1 auto; min-width: 0; font: 500 13px/18px var(--font-brand); color: var(--w100); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tw-l-kader li.du .n { color: var(--violett-text); }
.tw-l-kader .n em, .tw-l-dr-team em { font-style: normal; font-weight: 500; color: var(--violett-text); }
.tw-l-kader .l { font: 400 12px/16px var(--font-brand); color: var(--w45); white-space: nowrap; }
.tw-l-kader .tw-punkt { background: var(--w25); }
.tw-l-kader .tw-punkt.da { background: var(--gruen); }

/* ═════════ Players (W9) ═════════ */
.tw-l-tab-teams .tw-rumpf { margin-top: 32px; }
.tw-l-tab-teams .tw-links { gap: 16px; }
.tw-l-pool { display: flex; flex-direction: column; }
.tw-l-pool-z.kopf { min-height: 32px; font: 600 11px/14px var(--font-brand); letter-spacing: .66px; text-transform: uppercase;
    color: var(--w45); border-bottom-color: var(--w08); cursor: default; }
.tw-l-pool-z.wahl { background: rgba(124, 92, 255, .08); }
.tw-l-pool-z .nr { color: var(--w45); padding-left: 2px; }
.tw-l-pool-z .sp { display: flex; align-items: center; gap: 12px; min-width: 0; }
.tw-l-pool-z .sp b { font: 500 14px/18px var(--font-brand); color: var(--w100); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tw-l-pool-z .gdr { color: var(--w100); }

/* ═════════ Captain-Draft (W27) ═════════ */
.tw-l-tab-teams > .tw-l-dr-leiste { margin-top: 32px; }
.tw-l-dr-leiste { display: grid; grid-template-columns: minmax(150px, auto) minmax(0, 1fr) auto; gap: 24px; align-items: center; padding: 18px; }
.tw-l-dr-leiste .l { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.tw-l-dr-leiste .l b { font: 600 15px/19px var(--font-brand); color: var(--w100); }
.tw-l-dr-leiste .m { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.tw-l-dr-leiste .r { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.tw-l-dr-leiste .r > span { font: 400 12px/15px var(--font-brand); color: var(--w45); white-space: nowrap; }
.tw-l-dr-cd { font: 700 28px/34px var(--font-brand); color: var(--w100); }
.tw-l-dr-folge { display: flex; gap: 4px; flex-wrap: wrap; }
.tw-l-dr-z { width: 22px; height: 22px; border-radius: 5px; display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box;
    font: 600 11px/1 var(--font-brand); color: var(--w70); background: var(--w06); border: 1px solid transparent; }
.tw-l-dr-z.fertig { color: var(--w25); background: var(--w03); }
.tw-l-dr-z.mein { border-color: var(--violett-text); color: var(--violett-text); }
.tw-l-dr-z.jetzt { background: var(--violett-knopf); border-color: var(--violett-knopf); color: var(--w100); }
.tw-l-dr-teams { display: grid; grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)); gap: 16px; margin-top: 20px; }
.tw-l-dr-team { display: flex; flex-direction: column; gap: 12px; padding: 14px; }
.tw-l-dr-team .k { display: flex; align-items: flex-start; gap: 10px; min-width: 0; }
.tw-l-dr-team .k > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tw-l-dr-team .k b { font: 600 14px/18px var(--font-brand); color: var(--w100); overflow-wrap: anywhere; }
.tw-l-dr-team .k span { font: 400 12px/15px var(--font-brand); color: var(--w45); }
.tw-l-dr-team .bu { width: 22px; height: 22px; flex: 0 0 22px; border-radius: 6px; background: var(--w08); color: var(--w100);
    font: 600 11px/22px var(--font-brand); text-align: center; }
.tw-l-dr-team.violett .bu { background: var(--violett-knopf); }
.tw-l-dr-team ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.tw-l-dr-team li { display: flex; align-items: center; gap: 10px; min-height: 36px; border-radius: 8px; padding: 0 10px; box-sizing: border-box; min-width: 0; }
.tw-l-dr-team li.voll { background: var(--w04); padding: 8px 10px; }
.tw-l-dr-team li .n { flex: 1 1 auto; display: flex; flex-direction: column; min-width: 0; }
.tw-l-dr-team li .n b { font: 600 13px/17px var(--font-brand); color: var(--w100); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tw-l-dr-team li .n small { font: 400 11px/14px var(--font-brand); color: var(--w45); }
.tw-l-dr-team li .g { font: 500 13px/16px var(--font-brand); color: var(--w70); }
.tw-l-dr-team li.offen { border: 1px dashed var(--w08); font: 400 12px/16px var(--font-brand); color: var(--w25); }
.tw-l-dr-team li.offen.jetzt { border-color: var(--violett-text); color: var(--violett-text); background: rgba(124, 92, 255, .08); }
.tw-l-pool-z { display: grid; grid-template-columns: 32px minmax(0, 1fr) 120px 70px minmax(90px, auto); gap: 12px; align-items: center;
    min-height: 45px; border-bottom: 1px solid var(--w06); font: 400 13px/16px var(--font-brand); color: var(--w70); }
.tw-l-pool-z[data-tw-l-wahl] { cursor: pointer; }
.tw-l-pool-z .ak { display: flex; justify-content: flex-end; }
.tw-l-rolle { display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 7px; border: 1px solid var(--w12);
    font: 500 12px/1 var(--font-brand); color: var(--w70); box-sizing: border-box; white-space: nowrap; }
.tw-l-rolle.an { border-color: var(--violett-text); color: var(--violett-text); background: rgba(124, 92, 255, .12); }
.tw-l-rollen { display: flex; gap: 8px; flex-wrap: wrap; }

/* ═════════ Bracket-Rahmen + Leiste ═════════ */
.tw-l-baum { margin-top: 32px; }
.tw-l-leiste[hidden] { display: none !important; }
.tw-l-leiste .tw-btn { flex: 0 0 auto; max-width: 60%; overflow: hidden; text-overflow: ellipsis; }

/* ═════════ Brueche ═════════ */
@media (max-width: 1280px) {
    .tw-l-teams { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 1080px) {
    .tw-l-teams { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .tw-l-dr-teams { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 860px) {
    .tw-l-dr-leiste { grid-template-columns: minmax(0, 1fr) auto; }
    .tw-l-dr-leiste .m { grid-column: 1 / -1; grid-row: 2; }
}
@media (max-width: 600px) {
    .tw-l-seite .tw-kopf-steuer { gap: 10px; }
    .tw-l-seite .tw-kopf-steuer .tw-seg { width: auto; }
    .tw-l-fmt select { height: 40px; }
    .tw-l-kchips { width: 100%; }
    .tw-l-teams, .tw-l-dr-teams { grid-template-columns: minmax(0, 1fr); }
    .tw-l-tkopf { margin: 24px 0 16px; }
    .tw-l-tab-teams .tw-rumpf, .tw-l-baum { margin-top: 24px; }
    .tw-l-tab-teams > .tw-l-dr-leiste { margin-top: 24px; }
    /* Tabelle → Liste */
    .tw-l-pool-z.kopf { display: none; }
    /* Pool mobil: GDR bleibt (danach ist sortiert) — Zeile 2 = Rolle · GDR */
    .tw-l-pool-z { grid-template-columns: 24px auto minmax(0, 1fr) auto; grid-template-areas: "nr sp sp ak" "nr ro gdr ak";
        column-gap: 10px; row-gap: 4px; padding: 10px 0; }
    .tw-l-pool-z .nr { grid-area: nr; } .tw-l-pool-z .sp { grid-area: sp; } .tw-l-pool-z .ro { grid-area: ro; padding-left: 36px; }
    .tw-l-pool-z .gdr { grid-area: gdr; align-self: center; font-size: 12px; } .tw-l-pool-z .ak { grid-area: ak; }
    .tw-l-dr-leiste .r { align-items: flex-end; }
}

/* ═════════ Schaufenster SF3 (Figma 301:15188: T1 305:15204 · T1-1/T1-0 · D1–D6 · M-T1/M-D1/M-D3) ═════════
   Liste + Detail im Schaufenster-Stil: Hero ueber der Buehne (#tw-l-buehne, TW.sf.buehne), Bausteine aus tw.css (.tw-sf-*).
   SF5: die alten W12-Zeilen (.tw-l-zeile, .tw-l-host, .tw-l-von …) und die W12-Spalte „Your next tournament“ sind weg —
   ihr letzter Leser war partner-seite.html (seit W2-7b Ticket + Abflugtafel). */
body.page-turniere { position: relative; }
.tw-main.sf { padding-top: calc(72px + 132px); }
.tw-main.sf.liste::before { display: none; }
.tw-main.sf.liste { display: flex; flex-direction: column; gap: 40px; }
.tw-main.sf.liste > :empty { display: none; }
.tw-l-gruppe { display: flex; flex-direction: column; min-width: 0; }

/* Karten-Raster (SF3) — liest noch der Cup-Baukasten (bk-baukasten.js) */
.tw-l-karten { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
.tw-l-skel { padding-top: 0; }

/* Detail: Reiter unter dem Hero, Rumpf 40 darunter, Anmeldekarte getoent (Verlauf 12 % → Flaeche bei 60 %, Rand 45 %) */
.tw-l-reiter { margin-top: 40px; }
.tw-main.sf .tw-l-tab-overview > .tw-rumpf { margin-top: 40px; }
.tw-main.sf .tw-l-baum { margin-top: 40px; }
.tw-main.sf .tw-l-tab-teams > .tw-l-tkopf:first-child { margin-top: 40px; }
.tw-sf-tint .tw-a-karte.tw-panel, .tw-sf-tint .tw-l-anm.tw-panel {
    background: linear-gradient(180deg, rgba(var(--tf), .12) 0%, var(--flaeche) 60%); border-color: rgba(var(--tf), .45); }
.tw-main.sf .tw-l-serie { max-width: 320px; }

@media (max-width: 1080px) {
    .tw-l-karten { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
}
@media (max-width: 600px) {
    .tw-main.sf { padding-top: calc(72px + 32px); }
    .tw-main.sf.liste { gap: 32px; }
    .tw-l-karten { grid-template-columns: minmax(0, 1fr); gap: 16px; }
    .tw-l-reiter { margin-top: 28px; }
    .tw-main.sf .tw-l-tab-overview > .tw-rumpf, .tw-main.sf .tw-l-baum { margin-top: 24px; }
    .tw-main.sf .tw-l-tab-teams > .tw-l-tkopf:first-child { margin-top: 24px; }
}

/* ═══ Ticket-Seite (BAUPLAN-TICKET TK3 · Figma TK1 416:23437: S-1…S-7 · T-1/T-2 · M-S-* · M-T-* · R-1…R-4, 📘 431:30828) ═══
   Overview: Hero = Ticket (TW.sf.ticket, tw.css) ueber der unscharfen Buehne · Knoepfe + Unterzeile mittig · Reiter ·
   Abflugtafel (Klappziffern) · Kleingedrucktes (Creme) | Mitbringen (Coupons) + Ticket-Inhaber. Kippung −2° nur ueber 1112. */
.tw-main.sf.detail.ticket { padding-top: calc(72px + 38px); }
.tw-tkopf.tw-tk-kopf { display: flex; flex-direction: column; align-items: center; gap: 0; }
.tw-tk-oben { position: relative; display: flex; align-items: center; justify-content: center; width: 100%; min-height: 24px; margin-bottom: 30px; }
.tw-tk-zurueck { position: absolute; left: 40px; top: 50%; transform: translateY(-50%); display: inline-flex; align-items: center; gap: 6px;
    font: 700 12px/15px var(--font-brand); letter-spacing: .14em; text-transform: uppercase; color: var(--w55); text-decoration: none; }
.tw-tk-zurueck:hover { color: var(--w100); }
.tw-tk-zurueck svg { width: 12px; height: 12px; }
.tw-tk-kick { display: flex; align-items: center; justify-content: center; gap: 8px 10px; flex-wrap: wrap; min-width: 0; }
.tw-tk-host { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; min-width: 0; }
.tw-tk-host b { font: 700 13px/16px var(--font-brand); letter-spacing: .16em; text-transform: uppercase; color: var(--violett-text); overflow-wrap: anywhere; }
a.tw-tk-host:hover b { color: var(--w100); }
.tw-tk-host .tw-logo { --gr: 24px; border-radius: 6px; }
.tw-tk-marke { width: 24px; height: 24px; display: block; flex: 0 0 auto; }
.tw-tk-host.vf b { color: rgb(var(--vf)); }                 /* Design-QoL 46: Kicker-Text in Vereinsfarbe (TW.sf.ticketHost) */
a.tw-tk-host.vf:hover b { color: var(--w100); }
.tw-tk-kicklink { display: inline-flex; align-items: center; gap: 6px; font: 700 12px/15px var(--font-brand); letter-spacing: .12em; text-transform: uppercase;
    color: var(--violett-text); text-decoration: none; }
a.tw-tk-kicklink:hover { color: var(--w100); }
.tw-tk-kicklink.gold { color: var(--gold2); }
.tw-tk-kicklink svg { width: 12px; height: 12px; }
.tw-tk-kick .tw-chip { padding: 2px 8px; font-size: 11px; }
.tw-tk-orga { position: absolute; right: 40px; top: 50%; transform: translateY(-50%); }
.tw-tk-flaeche { width: 100%; display: flex; justify-content: center; }
@media (min-width: 1113px) { .tw-tk-flaeche .tk { transform: rotate(2deg); } }
/* Runde 2 (Figma TK4 L-1): Unterzeile + Aktionen rechts in der Reiterleiste; ≤ 760 unter dem Ticket (L-2) */
.tw-tk-reiterzeile { display: flex; align-items: center; gap: 12px 24px; border-bottom: 1px solid var(--w08); min-width: 0; }
.tw-tk-reiterzeile .tw-sf-reiter { border-bottom: 0; flex: 0 1 auto; min-width: 0; }
.tw-tk-reiterzeile .tw-sf-reiter button { height: 64px; }
.tw-tk-reiterzeile .tw-sf-reiter .n { margin-top: 23px; }
.tw-tk-reiterrechts { margin-left: auto; display: flex; align-items: center; gap: 16px; min-width: 0; }
.tw-tk-reiterrechts .tw-tk-unter { margin: 0; font-size: 13px; line-height: 17px; text-align: right; max-width: 380px; }
.tw-tk-reiterrechts .tw-tk-akt { margin: 0; flex-wrap: nowrap; gap: 10px; }
.tw-tk-akt-m { display: none; }
.tw-tk-akt { display: flex; align-items: center; justify-content: center; gap: 14px; flex-wrap: wrap; }
.tw-tk-akt .tw-btn { height: 44px; padding: 0 18px; font-size: 14px; }
.tw-tk-link { display: inline-flex; align-items: center; gap: 6px; height: 44px; padding: 0 4px; border: 0; background: none; cursor: pointer;
    font: 500 14px/18px var(--font-brand); color: var(--w55); text-decoration: none; }
.tw-tk-link:hover { color: var(--w100); }
.tw-tk-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 6px; }
.tw-tk-unter { margin: 20px 0 0; font: 400 15px/19px var(--font-brand); color: var(--w55); text-align: center; max-width: 760px; overflow-wrap: anywhere; }
.tw-tk-unter .tw-zahl { color: inherit; font: inherit; }
.tw-tk-fehler { margin: 12px 0 0; padding: 10px 14px; border-radius: 10px; background: rgba(237,87,97,.12); border: 1px solid rgba(237,87,97,.4);
    font: 500 14px/18px var(--font-brand); color: #ff8a92; text-align: center; max-width: 640px; }
.tw-tk-fehler[hidden] { display: none; }
.tw-main.sf.ticket .tw-l-reiter { margin-top: 48px; }
.tw-leiste.tw-tk-weg { display: none !important; }
/* Zusatz unter dem Ticket (A2: Einladungslink #324, nur Mitglieder, Aufgebot ablehnen, Rolle aendern) */
.tw-tk-zusatz { margin-top: 16px; width: 100%; max-width: 520px; }
.tw-tk-zusatz .tw-a-zusatz { display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; }
.tw-tk-zusatz .tw-a-zusatz:focus { outline: none; }
.tw-tk-zusatz .tw-hinweis { width: 100%; box-sizing: border-box; text-align: left; }
.tw-tk-zusatz .tw-a-rolle-z { display: inline-flex; align-items: center; gap: 8px; font: 500 14px/18px var(--font-brand); color: var(--w70); }

/* Inhalt der Overview */
.tw-tk-inhalt { display: flex; flex-direction: column; gap: 72px; margin-top: 72px; min-width: 0; }
.tw-tk-kap { margin: 0; font: 700 12px/15px var(--font-brand); letter-spacing: .16em; text-transform: uppercase; color: var(--violett-text); }
.tw-tk-h2 { margin: 16px 0 0; font: 900 40px/50px var(--font-brand); letter-spacing: -.01em; color: var(--w100); }
.tw-tk-abflug .tw-tk-tafel { margin-top: 16px; }
.tw-tk-tafel { border: 1px solid var(--w08); border-radius: 16px; background: #0e0f13; overflow: hidden; }
.tw-tk-abz { display: grid; grid-template-columns: 150px minmax(0, 380fr) minmax(0, 300fr) minmax(max-content, 280fr); align-items: center;
    min-height: 60px; padding: 0 28px; border-top: 1px solid var(--w06); box-sizing: border-box; }
.tw-tk-abz.kopf { min-height: 40px; padding-top: 14px; padding-bottom: 12px; border-top: 0; align-items: end; }
.tw-tk-abz.kopf span { font: 700 11px/14px var(--font-brand); letter-spacing: .14em; text-transform: uppercase; color: var(--w45); }
/* Tageskopf (Variante A): der Tag EINMAL ueber seinen Zeilen */
.tw-tk-abz.tageskopf { display: block; min-height: 0; padding: 14px 28px 10px; background: rgba(255,255,255,.025);
    font: 700 12px/15px var(--font-brand); letter-spacing: .16em; text-transform: uppercase; color: var(--violett-text); }
/* Abflugtafel v2 (Betreiber 20.10., Figma TK3-Nachzug 455:27850): Datum als Klappteile 18 × 26, Countdown 16 × 24 (tickt sekuendlich) */
.tw-tk-abz .st { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; }
.tw-tk-ziff.cd i { width: 16px; height: 24px; font-size: 14px; color: #b6e07a; }
.tw-tk-ziff.cd em { font-size: 14px; color: #b6e07a; padding: 0; }
.tw-tk-ziff em.lz { width: 4px; padding: 0; }
.tw-tk-ziff.cd i.neu { animation: tk-klapp1 280ms cubic-bezier(.3,.7,.4,1) both; }
@keyframes tk-klapp1 { 0% { transform: rotateX(-90deg); } 100% { transform: rotateX(0); } }
.tw-tk-abz .ev b { display: block; font: 700 18px/23px var(--font-brand); letter-spacing: .02em; text-transform: uppercase; color: var(--w100); overflow-wrap: anywhere; }
.tw-tk-abz .ev small { display: none; }
.tw-tk-abz.finale .ev b { color: #f3e3b5; }
.tw-tk-abz .ort { font: 400 15px/19px var(--font-brand); color: var(--w55); overflow-wrap: anywhere; padding-right: 16px; }
.tw-tk-abz.st-laeuft { background: rgba(140,198,63,.06); }
.tw-tk-abz.st-vorbei .ev b, .tw-tk-abz.st-abgesagt .ev b { color: rgba(255,255,255,.4); }
.tw-tk-abz.st-vorbei .ort, .tw-tk-abz.st-abgesagt .ort { color: rgba(255,255,255,.3); }
.tw-tk-abz.st-vorbei .tw-tk-ziff i, .tw-tk-abz.st-abgesagt .tw-tk-ziff i { color: rgba(255,255,255,.35); }
.tw-tk-ziff { display: inline-flex; align-items: center; gap: 3px; perspective: 200px; }
.tw-tk-ziff i { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 32px; box-sizing: border-box;
    border: 1px solid var(--w08); border-radius: 4px; background: #060709; font: 700 20px/1 var(--font-brand); font-style: normal; color: #f3e3b5;
    font-variant-numeric: tabular-nums; }
.tw-tk-ziff i::after { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 1px; background: rgba(0,0,0,.7); }
.tw-tk-ziff em { font: 700 20px/1 var(--font-brand); font-style: normal; color: #f3e3b5; padding: 0 1px; }
.tw-tk-abz.klapp .zeit .tw-tk-ziff i { animation: tk-klapp 420ms cubic-bezier(.3,.7,.4,1) both; animation-delay: calc(var(--n, 0) * 60ms); transform-origin: 50% 50%; }
.tw-tk-st { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap;
    font: 700 11px/14px var(--font-brand); letter-spacing: .08em; text-transform: uppercase; color: var(--w45); }
.tw-tk-st i { width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex: 0 0 auto; }
.tw-tk-st .tw-zahl { color: inherit; font: inherit; }
.tw-tk-st.cd, .st-bald .tw-tk-st { color: #b6e07a; }
.st-laeuft .tw-tk-st { color: var(--gruen); }
.st-vorbei .tw-tk-st { color: rgba(255,255,255,.35); }
.st-abgesagt .tw-tk-st { color: #ff8a92; }
.tw-tk-fuss { margin: 16px 0 0; font: 400 13px/16px var(--font-brand); color: var(--w45); }

/* Kleingedrucktes (Rueckseite, Creme) | Mitbringen */
.tw-tk-reihe { display: grid; grid-template-columns: minmax(0, 700fr) minmax(300px, 452fr); gap: 48px; align-items: start; }
.tw-tk-klein { background: #f1ece1; border-radius: 18px; padding: 28px 32px; display: flex; flex-direction: column; gap: 12px; color: #1a1b22; min-width: 0; }
.tw-tk-klein .kap { margin: 0 0 2px; font: 700 11px/14px var(--font-brand); letter-spacing: .14em; text-transform: uppercase; color: rgba(26,27,34,.6); }
.tw-tk-klein .z { margin: 0; font: 400 15px/24px var(--font-brand); color: #1a1b22; overflow-wrap: anywhere; }
.tw-tk-klein .z b { font-weight: 700; margin-right: 8px; }
.tw-tk-klein .fuss { display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap; margin-top: 4px; }
.tw-tk-klein .mehr { display: inline-flex; align-items: center; gap: 4px; border: 0; background: none; padding: 0; cursor: pointer; font: 600 14px/18px var(--font-brand); color: #5a3fd9; }
.tw-tk-klein .mehr:hover { color: #3f27b5; text-decoration: underline; }
.tw-tk-klein .mehr:focus-visible { outline: 2px solid #5a3fd9; outline-offset: 2px; border-radius: 4px; }
.tw-tk-klein .fuss span { font: 400 12px/15px var(--font-brand); color: rgba(26,27,34,.55); }
.tw-tk-mit { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.tw-tk-inh { display: flex; align-items: center; gap: 12px; padding: 6px 0 0; margin: 0; border: 0; background: none; color: inherit; text-align: left;
    font: inherit; min-width: 0; }
button.tw-tk-inh { cursor: pointer; border-radius: 8px; }
button.tw-tk-inh:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.tw-tk-inh .av { display: inline-flex; flex: 0 0 auto; }
.tw-tk-inh .av > * { margin-left: -8px; border: 2px solid #0c0d11; box-sizing: content-box; }
.tw-tk-inh .av > :first-child { margin-left: 0; }
.tw-tk-inh .tw-ava.tw-tk-ava { width: 30px; height: 30px; flex: 0 0 30px; border-radius: 50%; }
.tw-tk-inh .tw-logo.tw-tk-ava { --gr: 30px; border-radius: 50%; }
.tw-tk-inh .satz { font: 600 14px/18px var(--font-brand); color: var(--w70); overflow-wrap: anywhere; }
button.tw-tk-inh:hover .satz { color: var(--w100); }
.tw-tk-verw { align-self: flex-start; }

@media (max-width: 1112px) {
    .tw-tk-zurueck { left: 0; }
    .tw-tk-orga { right: 0; }
    .tw-tk-abz { grid-template-columns: 130px minmax(0, 1.3fr) minmax(0, 1fr) max-content; column-gap: 12px; padding: 10px 20px; }
    .tw-tk-abz.tageskopf { padding: 12px 20px 8px; }
    .tw-tk-reiterrechts .tw-tk-unter { display: none; }
    .tw-tk-reihe { grid-template-columns: minmax(0, 1fr) minmax(280px, 380px); gap: 32px; }
}
@media (max-width: 860px) {
    .tw-tk-reihe { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
    .tw-main.sf.detail.ticket { padding-top: calc(72px + 24px); }
    .tw-sf-buehne.unscharf { height: 980px; }
    .tw-tk-oben { justify-content: flex-start; flex-wrap: wrap; gap: 6px 8px; margin-bottom: 14px; }
    .tw-tk-zurueck, .tw-tk-orga { position: static; transform: none; }
    .tw-tk-zurueck::after { content: "·"; margin-left: 6px; color: var(--w45); letter-spacing: 0; }
    .tw-tk-kick { justify-content: flex-start; }
    .tw-tk-host .tw-logo { display: none; }
    .tw-tk-host b { font-size: 12px; letter-spacing: .12em; }
    .tw-tk-orga { width: 100%; order: 3; }
    .tw-tk-reiterrechts { display: none; }
    .tw-tk-reiterzeile .tw-sf-reiter button { height: 40px; }
    .tw-tk-reiterzeile .tw-sf-reiter .n { margin-top: 11px; }
    .tw-tk-akt-m { display: flex; flex-direction: column; align-items: center; width: 100%; }
    .tw-tk-akt-m .tw-tk-akt { margin-top: 4px; gap: 10px; }
    .tw-tk-akt-m .tw-tk-unter { order: 2; }
    .tw-tk-abz.tageskopf { padding: 12px 16px 8px; font-size: 11px; }
    .tw-tk-akt .tw-btn { flex: 1 1 auto; }
    .tw-tk-unter { margin-top: 16px; font-size: 13px; line-height: 17px; }
    .tw-main.sf.ticket .tw-l-reiter { margin-top: 32px; }
    .tw-tk-inhalt { gap: 48px; margin-top: 40px; }
    .tw-tk-h2 { font-size: 32px; line-height: 40px; margin-top: 12px; }
    .tw-tk-abz.kopf { display: none; }
    .tw-tk-abz { grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "zeit ev" "zeit st"; column-gap: 14px; row-gap: 8px;
        align-items: start; padding: 14px 16px; min-height: 104px; }
    .tw-tk-abz .tag, .tw-tk-abz .ort { display: none; }
    .tw-tk-abz .zeit { grid-area: zeit; }
    .tw-tk-abz .ev { grid-area: ev; }
    .tw-tk-abz .st { grid-area: st; }
    .tw-tk-abz .ev b { font-size: 15px; line-height: 19px; }
    .tw-tk-abz .ev small { display: block; margin-top: 4px; font: 400 13px/16px var(--font-brand); color: var(--w55); overflow-wrap: anywhere; }
    .tw-tk-abz.st-vorbei .ev small, .tw-tk-abz.st-abgesagt .ev small { color: rgba(255,255,255,.3); }
    .tw-tk-ziff i { width: 18px; height: 26px; font-size: 16px; }
    .tw-tk-ziff.cd i { width: 14px; height: 22px; font-size: 13px; }
    .tw-tk-ziff.cd em { font-size: 13px; }
    .tw-tk-ziff em { font-size: 16px; }
    .tw-tk-klein { padding: 22px 22px; }
    .tw-tk-klein .z { font-size: 14px; line-height: 21px; }
    .tw-tk-cp { padding: 14px 16px; }
}
@media (prefers-reduced-motion: reduce) {
    .tw-tk-abz.klapp .zeit .tw-tk-ziff i { animation: tk-blende 200ms ease-out both; }
    .tw-tk-ziff.cd i.neu { animation: none; }
}

/* ═════════ Abflugtafel als echte Klapptafel (Betreiber 20.10.2026 · Figma TK4 „ABFLUG · Klappblätter einheitlich, ohne Rahmen“) ═════════
   Zeit, Ereignis und Status: JEDES Zeichen ein Blatt gleicher Größe (TW.sf.klappschrift), Barlow Condensed (css/fonts.css, nur hier),
   leere Blätter füllen die Spalte (Ereignis 18, Status 22). Kein Kasten um die Tafel — nur Haarlinien. Farben wie bisher. */
.tw-tk-tafel.ks { --font-tafel: 'Barlow Condensed', 'Outfit', sans-serif; --ks-w: 16px; --ks-h: 27px; --ks-fs: 22px;
    border: 0; border-radius: 0; background: none; overflow: visible; }
/* Spalten seit 24.10. (Betreiber): Datum · Zeit · Ereignis · Status — kein Tageskopf, keine Ort-Spalte, jede Zeile gleich hoch */
.tw-tk-tafel.ks .tw-tk-abz { grid-template-columns: calc(6 * (var(--ks-w) + 2px)) calc(5 * (var(--ks-w) + 2px)) minmax(calc(18 * (var(--ks-w) + 2px)), 1fr) calc(22 * (var(--ks-w) + 2px) + 14px);
    column-gap: 24px; padding: 12px 0; min-height: 0; }
.tw-tk-tafel.ks .tw-tk-abz .tag { display: block; }
.tw-tk-tafel.ks .tw-tk-abz.kopf { padding: 0 0 12px; border-top: 0; }
.tw-tk-tafel.ks .tw-tk-abz.kopf span, .tw-tk-tafel.ks .tw-tk-abz.tageskopf { font: 600 15px/18px var(--font-tafel); letter-spacing: .12em; }
.tw-tk-tafel.ks .tw-tk-abz.tageskopf { background: none; padding: 14px 0 10px; }
.tw-tk-tafel.ks .tw-tk-abz .ev small { display: none; }
.tw-tk-tafel.ks .tw-tk-abz .st { display: flex; align-items: center; gap: 8px; flex-wrap: nowrap; }
.tw-tk-tafel.ks .pkt { width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex: 0 0 auto; color: #b6e07a; }
.tw-tk-tafel.ks .zeit .tw-tk-ks, .tw-tk-tafel.ks .tag .tw-tk-ks { color: #f3e3b5; }
.tw-tk-tafel.ks .ev .tw-tk-ks { color: var(--w100); }
.tw-tk-tafel.ks .finale .ev .tw-tk-ks { color: #f3e3b5; }
.tw-tk-tafel.ks .st .tw-tk-ks { color: rgba(255, 255, 255, .75); }
.tw-tk-tafel.ks .st-bald .st .tw-tk-ks, .tw-tk-tafel.ks .st-laeuft .st .tw-tk-ks { color: #b6e07a; }
.tw-tk-tafel.ks .st-vorbei .tw-tk-ks, .tw-tk-tafel.ks .st-abgesagt .zeit .tw-tk-ks, .tw-tk-tafel.ks .st-abgesagt .tag .tw-tk-ks, .tw-tk-tafel.ks .st-abgesagt .ev .tw-tk-ks { color: rgba(255, 255, 255, .35); }
.tw-tk-tafel.ks .st-abgesagt .st .tw-tk-ks { color: #ff8a92; }
.tw-tk-tafel.ks .tw-tk-ks i.neu { animation: tk-klapp1 280ms cubic-bezier(.3, .7, .4, 1) both; }
.tw-tk-tafel.ks .tw-tk-abz.klapp .tw-tk-ks i { animation: tk-klapp 420ms cubic-bezier(.3, .7, .4, 1) both; animation-delay: calc(var(--n, 0) * 40ms); }
@media (max-width: 1180px) {
    /* 51 Blaetter je Zeile — die Blattbreite schrumpft bis 961 px mit, ohne Ueberlauf */
    .tw-tk-tafel.ks { --ks-w: clamp(11px, calc((100vw - 290px) / 51), 14px); --ks-h: calc(var(--ks-w) * 1.72); --ks-fs: calc(var(--ks-w) * 1.43); }
    .tw-tk-tafel.ks .tw-tk-abz { column-gap: 16px; }
}
@media (max-width: 960px) {
    /* schmal: Zeile 1 Datum + Zeit, Zeile 2 Ereignis, Zeile 3 Status — Blattgroesse passt sich bis 360 px an */
    .tw-tk-tafel.ks { --ks-w: clamp(10px, calc((100vw - 32px - 10px) / 23 - 2px), 14px); --ks-h: calc(var(--ks-w) * 1.72); --ks-fs: calc(var(--ks-w) * 1.43); }
    .tw-tk-tafel.ks .tw-tk-abz.kopf { display: none; }
    .tw-tk-tafel.ks .tw-tk-abz { grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "tag zeit" "ev ev" "st st";
        column-gap: 10px; row-gap: 8px; align-items: center; padding: 12px 0; min-height: 0; }
    .tw-tk-tafel.ks .tw-tk-abz .zeit { grid-area: zeit; }
    .tw-tk-tafel.ks .tw-tk-abz .ev { grid-area: ev; }
    .tw-tk-tafel.ks .tw-tk-abz .st { grid-area: st; }
    .tw-tk-tafel.ks .tw-tk-abz .tag { grid-area: tag; display: block; }
    .tw-tk-tafel.ks .pkt { display: none; }
}
@media (prefers-reduced-motion: reduce) {
    .tw-tk-tafel.ks .tw-tk-ks i.neu, .tw-tk-tafel.ks .tw-tk-abz.klapp .tw-tk-ks i { animation: tk-blende 200ms ease-out both; }
}

/* ═════════ Players/Teams = Bordkarten (BAUPLAN-TICKET TK4 · Figma 461:31184 PC-1…PC-12) ═════════
   Kopf (Kicker · H2 · Satz) · Filter = Unterstrich-Reiter mit Zahl + Suche (ab 13 Paessen) · Raster (TW.sf.bordkarte, tw.css) ·
   „Show all“ · Abschnitte Standby/Warteliste/Ersatzbank · Kleingedrucktes „How teams are built“. Keine Pillen. */
.tw-l-bk-kopf { margin-top: 56px; }
.tw-l-bk-kopf .tw-tk-h2 { margin-top: 12px; }
.tw-l-bk-satz { margin: 8px 0 0; font: 400 15px/20px var(--font-brand); color: var(--w55); overflow-wrap: anywhere; }
.tw-l-bk [hidden] { display: none !important; }
.tw-l-bk-filter { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px 24px; flex-wrap: wrap; margin-top: 32px;
    padding-bottom: 24px; border-bottom: 1px solid var(--w08); }
.tw-l-bk-reiter { display: flex; gap: 28px; min-width: 0; }
.tw-l-bk-reiter button { display: inline-flex; align-items: baseline; gap: 6px; padding: 0 0 8px; border: 0; background: none; cursor: pointer;
    font: 500 14px/18px var(--font-brand); color: var(--w55); white-space: nowrap; }
.tw-l-bk-reiter button .n { font: 500 12px/15px var(--font-brand); color: var(--w45); }
.tw-l-bk-reiter button:hover { color: var(--w100); }
.tw-l-bk-reiter button[aria-pressed="true"] { font-weight: 600; color: var(--w100); box-shadow: inset 0 -2px 0 var(--violett-knopf); }
.tw-l-bk-reiter button:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 4px; }
.tw-l-bk-suche { display: flex; align-items: center; gap: 10px; width: 280px; height: 40px; padding: 0 12px 0 14px; box-sizing: border-box;
    border: 1px solid var(--w12); border-radius: 10px; background: var(--w03); color: var(--w45); cursor: text; }
.tw-l-bk-suche:focus-within { border-color: rgba(124, 92, 255, .6); }
.tw-l-bk-suche input { flex: 1 1 auto; min-width: 0; height: 100%; border: 0; outline: 0; background: none; padding: 0;
    font: 400 14px/18px var(--font-brand); color: var(--w100); }
.tw-l-bk-suche input::placeholder { color: var(--w45); }
.tw-l-bk-suche input::-webkit-search-cancel-button { display: none; }
.tw-l-bk-suche .weg { display: inline-flex; padding: 4px; border: 0; background: none; color: var(--w55); cursor: pointer; border-radius: 6px; }
.tw-l-bk-suche .weg:hover { color: var(--w100); }
.tw-l-bk-suche .weg:focus-visible { outline: 2px solid var(--accent); }
.tw-l-bk > .tw-sf-bk-raster, .tw-l-tab-teams > .tw-l-bk-frei { margin-top: 32px; }
.tw-l-bk-mehr { display: flex; justify-content: center; margin-top: 28px; }
.tw-l-bk-leer { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 32px 0 8px; text-align: center; }
.tw-l-bk-leer b { font: 700 18px/23px var(--font-brand); color: var(--w100); overflow-wrap: anywhere; }
.tw-l-bk-leer span { font: 400 14px/19px var(--font-brand); color: var(--w55); }
.tw-l-bk-ab { margin-top: 48px; }
.tw-l-bk-ab-t { margin: 0; font: 700 12px/15px var(--font-brand); letter-spacing: .16em; text-transform: uppercase; color: var(--w45); }
.tw-l-bk-ab > p { margin: 6px 0 0; font: 400 14px/19px var(--font-brand); color: var(--w55); }
.tw-l-bk-ab .tw-sf-bk-raster { margin-top: 24px; }
.tw-l-bk-wie { margin-top: 48px; max-width: 900px; }
.tw-l-bk-wie dl { margin: 12px 0 0; display: flex; flex-direction: column; gap: 10px; }
.tw-l-bk-wie dl > div { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 16px; }
.tw-l-bk-wie dt { font: 400 14px/20px var(--font-brand); color: var(--w45); }
.tw-l-bk-wie dd { margin: 0; font: 400 14px/20px var(--font-brand); color: var(--w100); overflow-wrap: anywhere; }
/* Captain-Draft (W27) im Bordkarten-Rahmen (Figma PC-11): Zugfolge + Frist als Klappteile, Team-Kopf mit Perforation, Rollen als Text */
.tw-l-tab-teams > .tw-l-bk-kopf + .tw-l-dr-leiste { margin-top: 32px; }
.tw-l-dr-z { width: 22px; height: 30px; border-radius: 4px; position: relative; font: 700 15px/1 var(--font-brand); color: var(--w100);
    background: #060709; border: 1px solid var(--w08); }
.tw-l-dr-z::after { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 1px; background: rgba(0, 0, 0, .7); }
.tw-l-dr-z.fertig { opacity: .35; color: var(--w100); background: #060709; }
.tw-l-dr-z.mein { border-color: var(--violett-text); color: var(--w100); }
.tw-l-dr-z.jetzt { background: var(--violett-knopf); border-color: var(--violett-knopf); }
.tw-l-dr-leiste .tw-l-dr-cd i { width: 28px; height: 40px; font-size: 24px; color: var(--w100); }
.tw-l-dr-leiste .tw-l-dr-cd em { font-size: 22px; color: var(--w70); }
.tw-l-dr-team .k { padding-bottom: 12px; border-bottom: 1.5px dashed rgba(255, 255, 255, .3); align-items: center; }
.tw-l-dr-team .bu { position: relative; width: 26px; height: 34px; flex: 0 0 26px; border-radius: 4px; background: #060709; border: 1px solid var(--w08);
    font: 700 16px/32px var(--font-brand); box-sizing: border-box; }
.tw-l-dr-team .bu::after { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 1px; background: rgba(0, 0, 0, .7); }
.tw-l-dr-team.violett .bu { background: var(--violett-knopf); border-color: var(--violett-knopf); }
.tw-l-rolle, .tw-l-rolle.an { height: auto; padding: 0; border: 0; border-radius: 0; background: none; font: 500 13px/17px var(--font-brand); }
.tw-l-rolle.an { font-weight: 600; color: var(--violett-text); }
.tw-l-rollen { gap: 0 8px; }
.tw-l-rollen .tw-l-rolle + .tw-l-rolle::before { content: "·"; margin-right: 8px; color: var(--w25); font-weight: 400; }
@media (max-width: 760px) {
    .tw-l-bk-kopf { margin-top: 32px; }
    .tw-l-bk-kopf .tw-tk-h2 { font-size: 28px; line-height: 35px; margin-top: 8px; }
    .tw-l-bk-satz { font-size: 14px; line-height: 19px; }
}
@media (max-width: 600px) {
    .tw-l-bk-filter { flex-direction: column; align-items: stretch; gap: 16px; padding-bottom: 20px; margin-top: 24px; }
    .tw-l-bk-reiter { gap: 20px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
    .tw-l-bk-reiter::-webkit-scrollbar { display: none; }
    .tw-l-bk-suche { width: 100%; }
    .tw-l-bk > .tw-sf-bk-raster, .tw-l-tab-teams > .tw-l-bk-frei { margin-top: 24px; }
    .tw-l-bk-ab { margin-top: 36px; }
    .tw-l-bk-wie dl > div { grid-template-columns: minmax(0, 1fr); gap: 2px; }
}

/* ═════════ /turniere = Abflughalle (BAUPLAN-TICKET TK10 · Figma 598:47451: H-1…H-9 · M-1…M-3 · 📘 602:50458 + Nachtrag 678:48673) ═════════
   Hero = Ticket des naechsten Abflugs ueber der unscharfen Buehne (wie die Ticket-Seite) · Klappblatt-Tafel „Departures“ (Blaetter =
   .tw-tk-ks aus der Detail-Tafel, Barlow Condensed = BRAND-Ausnahme Tafel) · Gelandet gedimmt · Inhouse- + Gate-Band. Inhalt 1200 breit. */
.tw-main.sf.liste.abflug { padding-top: calc(72px + 38px); display: flex; flex-direction: column; align-items: center; gap: 0; }
.tw-main.sf.liste.abflug > * { width: 100%; max-width: 1200px; }
.tw-main.sf.liste.abflug > .tw-l-hero { max-width: none; display: flex; flex-direction: column; align-items: center; }
.tw-l-hkick { position: absolute; left: 40px; top: 50%; transform: translateY(-50%); font: 700 12px/15px var(--font-brand); letter-spacing: .14em;
    text-transform: uppercase; color: var(--w55); }
.tw-l-hflaeche { cursor: pointer; }
.tw-l-hakt { display: flex; align-items: center; justify-content: center; gap: 12px 20px; flex-wrap: wrap; margin-top: 26px; }
.tw-l-hakt .tw-tk-unter { margin: 0; font-size: 14px; line-height: 18px; }
.tw-l-hakt .tw-tk-akt { margin: 0; }
.tw-l-hero .tw-tk-fehler { margin: 12px 0 0; }
.tw-l-hero .tw-tk-fehler[hidden] { display: none; }
/* Geister-Ticket (H-3 keine Abfluege · H-8 Board offline · H-7 Skelett): gestrichelt, Koerper + Abschnitt wie das Ticket */
.tw-l-geist { width: min(1120px, 100%); min-height: 440px; display: grid; grid-template-columns: minmax(0, 836fr) minmax(0, 260fr); gap: 24px; }
.tw-l-geist > div { border: 1.5px dashed rgba(124,92,255,.45); border-radius: 18px; background: rgba(20,21,27,.55); backdrop-filter: blur(2px);
    display: flex; flex-direction: column; justify-content: center; gap: 14px; padding: 40px 64px; min-width: 0; }
.tw-l-geist > .s { align-items: center; text-align: center; padding: 32px 20px; }
.tw-l-geist .kap { margin: 0; font: 700 12px/15px var(--font-brand); letter-spacing: .16em; text-transform: uppercase; color: var(--violett-text); }
.tw-l-geist .z { margin: 0; --font-tafel: 'Barlow Condensed', 'Outfit', sans-serif; --ks-w: 16px; --ks-h: 27px; --ks-fs: 22px; color: var(--w100); }
.tw-l-geist .txt { margin: 0; max-width: 560px; font: 400 15px/20px var(--font-brand); color: var(--w70); }
.tw-l-geist > .s .txt { font-size: 13px; line-height: 16px; color: var(--w55); }
.tw-l-geist.fehler > div { border-color: rgba(255,255,255,.22); }
.tw-l-geist.fehler .kap { color: var(--w55); }
.tw-l-geist.fehler > .s .z { color: #ff8a92; }
.tw-l-geist.skel > div { border-style: solid; border-color: var(--w08); background: rgba(255,255,255,.03); }
.tw-l-geist.skel i { display: block; height: 14px; max-width: 100%; border-radius: 6px; background: var(--w08); animation: tw-l-puls 1.6s ease-in-out infinite; }
.tw-l-geist.skel i.g { height: 48px; }
@keyframes tw-l-puls { 50% { opacity: .5; } }
/* Gate-Band oben (keine Abfluege, H-3) und Baender unten */
.tw-l-gate-oben:not(:empty) { margin-top: 56px; }
.tw-l-baender { display: flex; flex-direction: column; gap: 48px; margin-top: 72px; }
.tw-l-baender:empty { display: none; }
.tw-l-gate { display: flex; align-items: center; gap: 24px; }
.tw-l-gate .txt { flex: 1 1 auto; }
.tw-l-gate .rechts { flex: 0 1 360px; display: flex; flex-direction: column; align-items: flex-end; gap: 12px; text-align: right; min-width: 0; }
.tw-l-gate .rechts p { margin: 0; font: 400 13px/17px var(--font-brand); color: var(--w70); }
/* Tafel „Departures“ (Spec 2): TIME 150 · CUP 400 · HOST · FORMAT · SEATS 130 · STATUS 220 */
.tw-l-tafel { margin-top: 88px; min-width: 0; }
.tw-l-tafel:empty { display: none; }
.tw-l-tfkopf { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px 24px; flex-wrap: wrap; margin-top: 12px; }
.tw-l-tfkopf .tw-tk-h2 { margin: 0; }
.tw-l-tfilter { display: flex; align-items: center; gap: 12px 20px; flex-wrap: wrap; min-width: 0; }
.tw-l-tfilter:empty { display: none; }
.tw-l-tfz { display: flex; align-items: center; gap: 4px 22px; min-width: 0; }
.tw-l-tfz button { background: none; border: 0; padding: 4px 0; font: 500 15px/19px var(--font-brand); color: var(--w45); cursor: pointer; white-space: nowrap; }
.tw-l-tfz button:hover { color: var(--w100); }
.tw-l-tfz button[aria-pressed="true"] { color: var(--w100); font-weight: 600; }
.tw-l-tfz button .n { font-variant-numeric: tabular-nums; }
.tw-l-tfz button:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 4px; }
.tw-l-tfz .trenner { font-style: normal; color: var(--w25); }
.tw-l-tafel .tw-tk-fuss { margin-top: 18px; }
.tw-l-tf-kn { justify-content: flex-start; margin-top: 18px; }
@media (prefers-reduced-motion: reduce) {
    .tw-l-geist.skel i { animation: none; }
}
/* 1112 (H-6): Veranstalter · Format unter dem Cup-Namen */
@media (max-width: 1180px) {
    .tw-l-geist > div { padding: 32px 40px; }
    .tw-l-hkick { left: 0; }
}
/* ≤ 760 (M-1/M-2/M-3): Pass hochkant, je Abflug drei Zeilen (Zeit + Cup · Host · Format · Status + Plaetze) */
@media (max-width: 760px) {
    .tw-main.sf.liste.abflug { padding-top: calc(72px + 18px); }
    .tw-main.sf.liste.abflug .tw-tk-oben { justify-content: flex-start; flex-wrap: wrap; gap: 6px 8px; margin-bottom: 14px; }
    .tw-l-hkick { position: static; transform: none; }
    .tw-l-hkick::after { content: "·"; margin-left: 8px; color: var(--w25); }
    .tw-l-hakt { flex-direction: column; gap: 10px; margin-top: 16px; }
    .tw-l-hakt .tw-tk-akt { width: 100%; }
    .tw-l-hakt .tw-tk-akt .tw-btn { flex: 1 1 auto; }
    .tw-l-hakt .tw-tk-unter { order: 2; font-size: 13px; text-align: center; }
    .tw-l-geist { grid-template-columns: minmax(0, 1fr); min-height: 0; width: min(382px, 100%); gap: 20px; }
    .tw-l-geist > div { padding: 32px 28px; min-height: 0; }
    .tw-l-geist > .k { min-height: 380px; }
    .tw-l-geist > .s { min-height: 176px; }
    .tw-l-geist .z { --ks-w: 14px; --ks-h: 24px; --ks-fs: 20px; }
    .tw-l-gate-oben:not(:empty) { margin-top: 40px; }
    .tw-l-baender { gap: 32px; margin-top: 48px; }
    .tw-l-gate { flex-direction: column; align-items: stretch; }
    .tw-l-gate .rechts { align-items: flex-start; text-align: left; flex-basis: auto; }
    .tw-l-tafel { margin-top: 56px; }
    .tw-l-tfkopf { flex-direction: column; align-items: stretch; gap: 10px; }
    .tw-l-tfilter { flex-wrap: wrap; gap: 10px; }
    .tw-l-tfz { max-width: 100%; overflow-x: auto; scrollbar-width: none; }
    .tw-l-tfz { gap: 4px 18px; }
    .tw-l-tfz button { font-size: 14px; }
}

/* ═════════ Rules = Rückseite des Tickets (BAUPLAN-TICKET TK11-B · Figma 618:51906 B-1…B-3) ═════════
   Papier wie das Kleingedruckte (Creme #f1ece1, Tinte #1a1b22), Eckdaten als Stempel, §-Absätze mit Punktlinie, rechts der
   Abschnitt (Inhalt, Plattformregeln, Discord, Strichcode) hinter einer Perforation; ≤ 760 Sprungleiste oben statt Abschnitt. */
.tw-l-rs { --rs-tinte: #1a1b22; --rs-leise: rgba(26,27,34,.58); --rs-linie: rgba(26,27,34,.22); --rs-violett: #5a3fd9;
    display: grid; grid-template-columns: minmax(0, 1fr) 300px; margin-top: 40px; background: #f1ece1; border-radius: 18px; color: var(--rs-tinte);
    box-shadow: 0 18px 40px rgba(0,0,0,.45); overflow: hidden; min-width: 0; }
.tw-l-rs-haupt { padding: 44px 56px 48px; min-width: 0; display: flex; flex-direction: column; }
.tw-l-rs .kopf { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; font: 600 11px/14px var(--font-brand); letter-spacing: .14em;
    text-transform: uppercase; color: var(--rs-leise); }
.tw-l-rs .titel { margin: 24px 0 0; font: 800 36px/44px var(--font-brand); color: var(--rs-tinte); letter-spacing: -.01em; overflow-wrap: anywhere; }
.tw-l-rs .stempel { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 24px; }
.tw-l-rs .st { --st: 90,63,217; display: inline-flex; align-items: center; height: 34px; padding: 0 12px; border: 2px solid rgb(var(--st)); border-radius: 4px;
    color: rgb(var(--st)); font: 600 15px/1 'Barlow Condensed', var(--font-brand); letter-spacing: .1em; text-transform: uppercase; transform: rotate(-1.2deg);
    box-shadow: inset 0 0 0 1px rgba(var(--st), .18); white-space: nowrap; }
.tw-l-rs .st:nth-child(2n) { transform: rotate(1deg); }
.tw-l-rs .st.ton-gruen { --st: 63,143,58; } .tw-l-rs .st.ton-tuerkis { --st: 47,138,125; }
.tw-l-rs .st.ton-tinte { --st: 26,27,34; } .tw-l-rs .st.ton-rot { --st: 201,71,79; }
.tw-l-rs .paras { columns: 2; column-gap: 56px; margin-top: 28px; }
.tw-l-rs .tw-l-rg-ab { display: block; break-inside: avoid; padding: 0 0 22px; scroll-margin-top: 112px; }
.tw-l-rs-h { display: flex; align-items: baseline; gap: 8px; margin: 0 0 8px; font: 700 18px/24px var(--font-brand); color: var(--rs-tinte); }
.tw-l-rs-h .nr { color: var(--rs-violett); font-weight: 800; }
.tw-l-rs-dl { margin: 0; display: flex; flex-direction: column; }
.tw-l-rs-dl > div { display: flex; align-items: baseline; gap: 6px; padding: 3px 0; min-width: 0; }
.tw-l-rs-dl dt { flex: 0 1 auto; font: 400 13px/18px var(--font-brand); color: var(--rs-leise); overflow-wrap: anywhere; }
.tw-l-rs-dl i { flex: 1 1 12px; min-width: 12px; border-bottom: 1.5px dotted var(--rs-linie); transform: translateY(-4px); }
.tw-l-rs-dl dd { flex: 0 1 auto; margin: 0; font: 600 13px/18px var(--font-brand); color: var(--rs-tinte); text-align: right; overflow-wrap: anywhere; max-width: 62%; }
.tw-l-rs .frei { margin: 0; font: 400 14px/22px var(--font-brand); color: var(--rs-tinte); white-space: pre-line; overflow-wrap: anywhere; }
.tw-l-rs .frei .tw-ta { --ta-h: var(--rs-tinte); --ta-punkt: var(--rs-violett); }
.tw-l-rs .frei .tw-ta > .h { font: 700 12px/16px var(--font-brand); letter-spacing: .1em; text-transform: uppercase; }
.tw-l-rs hr { width: 100%; border: 0; border-top: 1px solid var(--rs-linie); margin: 4px 0 24px; }
.tw-l-rs .unterschrift { display: flex; flex-direction: column; gap: 6px; margin-top: 18px; align-self: flex-start; min-width: 240px; }
.tw-l-rs .unterschrift b { font: 800 22px/28px var(--font-brand); color: var(--rs-violett); border-bottom: 1px solid var(--rs-linie); padding-bottom: 4px; overflow-wrap: anywhere; }
.tw-l-rs .unterschrift span { font: 600 10px/13px var(--font-brand); letter-spacing: .14em; text-transform: uppercase; color: var(--rs-leise); }
.tw-l-rs-ab { position: relative; background: #e9e1cf; padding: 44px 30px 32px; display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.tw-l-rs-ab::before { content: ''; position: absolute; left: 0; top: 18px; bottom: 18px; border-left: 2px dashed var(--rs-linie); }
.tw-l-rs-ab .kap { margin: 0 0 4px; font: 600 11px/14px var(--font-brand); letter-spacing: .14em; text-transform: uppercase; color: var(--rs-leise); }
.tw-l-rs-ab .toc { display: flex; flex-direction: column; gap: 2px; position: sticky; top: 96px; }
.tw-l-rs-ab .toc button, .tw-l-rs-sprung button { display: flex; gap: 8px; align-items: baseline; background: none; border: 0; padding: 6px 0; text-align: left;
    font: 400 14px/18px var(--font-brand); color: rgba(26,27,34,.75); cursor: pointer; }
.tw-l-rs-ab .toc button .nr, .tw-l-rs-sprung button .nr { min-width: 22px; color: var(--rs-leise); font-weight: 600; }
.tw-l-rs-ab .toc button:hover { color: var(--rs-tinte); }
.tw-l-rs-ab .toc button[aria-current="true"], .tw-l-rs-ab .toc button[aria-current="true"] .nr { color: var(--rs-violett); font-weight: 700; }
.tw-l-rs-ab button:focus-visible, .tw-l-rs-ab a:focus-visible, .tw-l-rs-sprung button:focus-visible { outline: 2px solid var(--rs-violett, #5a3fd9); outline-offset: 2px; border-radius: 4px; }
.tw-l-rs-ab hr { border: 0; border-top: 1px solid var(--rs-linie); margin: 8px 0; }
.tw-l-rs-ab .plattform { display: inline-flex; align-items: center; gap: 4px; font: 600 14px/18px var(--font-brand); color: var(--rs-violett); text-decoration: none; }
.tw-l-rs-ab .plattform:hover { text-decoration: underline; }
.tw-l-rs-ab .fragen { font: 400 13px/18px var(--font-brand); color: var(--rs-leise); text-decoration: none; overflow-wrap: anywhere; }
.tw-l-rs-ab .fragen:hover { color: var(--rs-tinte); text-decoration: underline; }
.tw-l-rs-ab .code { margin-top: auto; padding-top: 32px; display: flex; flex-direction: column; gap: 8px; color: var(--rs-tinte); }
.tw-l-rs-ab .code svg { width: 100px; height: 46px; fill: currentColor; }
.tw-l-rs-ab .code span { font: 500 11px/14px var(--font-brand); letter-spacing: .12em; color: var(--rs-leise); }
.tw-l-rs-sprung { display: none; }
.tw-l-rs-leer { margin-top: 40px; }
@media (max-width: 1112px) {
    .tw-l-rs { grid-template-columns: minmax(0, 1fr) 240px; }
    .tw-l-rs-haupt { padding: 36px 36px 40px; }
    .tw-l-rs .paras { column-gap: 36px; }
}
@media (max-width: 900px) { .tw-l-rs .paras { columns: 1; } }
@media (max-width: 760px) {
    .tw-l-rs { grid-template-columns: minmax(0, 1fr); margin-top: 12px; }
    .tw-l-rs-ab { display: none; }
    .tw-l-rs-haupt { padding: 24px 20px 32px; }
    .tw-l-rs .titel { font-size: 26px; line-height: 32px; margin-top: 16px; }
    .tw-l-rs .stempel { gap: 10px; margin-top: 18px; }
    .tw-l-rs .st { height: 30px; font-size: 13px; padding: 0 10px; }
    .tw-l-rs .tw-l-rg-ab { scroll-margin-top: 132px; }
    .tw-l-rs-sprung { display: flex; gap: 16px; overflow-x: auto; scrollbar-width: none; position: sticky; top: var(--nav-h, 72px); z-index: 5;
        margin: 16px -16px 0; padding: 12px 16px; background: var(--grund); border-bottom: 1px solid var(--w08); }
    .tw-l-rs-sprung::-webkit-scrollbar { display: none; }
    .tw-l-rs-sprung button { flex: 0 0 auto; padding: 4px 0; color: var(--w55); white-space: nowrap; font-size: 13px; }
    .tw-l-rs-sprung button .nr { color: var(--w45); min-width: 0; }
    .tw-l-rs-sprung button[aria-current="true"], .tw-l-rs-sprung button[aria-current="true"] .nr { color: var(--violett-text); font-weight: 700; }
    .tw-l-rs-dl dd { max-width: 58%; }
}

/* ── Design-QoL T3: Kasten „From the host“ (Overview) — Text des Veranstalters gegliedert (TW.textAbsaetze), nach sechs Zeilen zu.
   Auf/Zu setzt tw-turniere.js `vomAnwenden` am DOM (Klassen lang/auf, --vom-h = sechs Zeilen). ── */
.tw-l-vom { max-width: 820px; padding: 22px 24px 20px; box-sizing: border-box; background: var(--w04, rgba(255,255,255,.04));
    border: 1px solid var(--border); border-radius: 12px; gap: 12px; }
.tw-l-vom-text { color: var(--w70); }
.tw-l-vom.lang:not(.auf) .tw-l-vom-text { max-height: var(--vom-h, 144px); overflow: hidden;
    -webkit-mask-image: linear-gradient(#000 55%, transparent); mask-image: linear-gradient(#000 55%, transparent); }
.tw-l-vom-mehr { display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; }
.tw-l-vom-mehr[hidden] { display: none; }
.tw-l-vom-mehr svg { width: 14px; height: 14px; transition: transform .15s; }
.tw-l-vom.auf .tw-l-vom-mehr svg { transform: rotate(180deg); }
.tw-l-vom-mehr .w, .tw-l-vom.auf .tw-l-vom-mehr .m { display: none; }
.tw-l-vom.auf .tw-l-vom-mehr .w { display: inline; }
.tw-l-vom-mehr:focus-visible { outline: 2px solid var(--violett); outline-offset: 3px; border-radius: 4px; }
@media (max-width: 760px) { .tw-l-vom { padding: 18px 16px 16px; } }
@media (prefers-reduced-motion: reduce) { .tw-l-vom-mehr svg { transition: none; } }
