/* ============================================================
   TURNIERE — „Eine Runde, die es nie gab."
   Grundstimmung dunkel und dicht: Anzeigetafel, Sekretariat um
   neunzehn Uhr, Siegerehrung im Halbdunkel. Zwei helle Kapitel
   (Streifen, Bedingungen), einmal Mint (Fox & Rabbit).
   Drei tragende Effekte, sonst nichts:
   1) Die Tafel — Einlauf und Fallblatt-Registerwechsel
   2) Streifen wachsen, die Vorgaben-Kontur zeichnet sich darüber
   3) Das Siegerfoto klappt zur Bildwand auf
   Kein einziger abgerundeter Kasten mit Schatten: Getrennt wird
   über Haarlinien, Flächenwechsel und Luft. --lime nur als Signal
   (Scores unter Par, Bruttoführung, Kapitelnummern auf Dunkel),
   --live ausschließlich für Scores über Par und „Auswertung
   folgt". --gold kommt auf dieser Seite nicht vor.
   Alle Farben, Abstände, Kurven aus tokens.css; bewegt werden nur
   transform, clip-path und opacity.
   ============================================================ */

.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* ============================================================
   FEHLENDE TOKENS AUS tokens.css
   seite.css bringt Farben, --inset, --luft und --ease mit — aber
   NICHT die Radien, die Übergangsdauern und die Schatten. Ohne sie
   wäre jede transition mit var(--t-…) ungültig (kein Übergang,
   harte Sprünge). Werte wortgleich aus tokens.css; nur für diese
   Seite, wie es platzreife.css vormacht — global gehören sie nach
   seite.css, sobald jemand die anderen Seiten mitprüfen kann.
   ============================================================ */
:root{
  --r-pill:999px;      /* Buttons, Chips, Plaketten */
  --r-karte:14px;      /* Dropdowns, Glaskarten */
  --r-flaeche:0px;     /* Bildflächen: scharfe Kante */
  --t-schnell:.25s;    /* Farbe, Deckkraft */
  --t-mittel:.35s;     /* Position, Größe */
  --t-lang:.8s;        /* Reveals, Bildwechsel */
  --schatten-karte:0 28px 60px -28px rgba(11,65,43,.45);
  --schatten-plakette:0 14px 30px -14px rgba(6,26,17,.6);
}

/* ============================================================
   TYPOGRAFIE-STUFEN AUS tokens.css
   Die .t-*-Klassen fehlen in site/ (seite.css bringt nur die
   Farbtokens mit). Auf einer Seite voller Tabellen und Zähler ist
   vor allem .t-zahl mit tabularen Ziffern unverzichtbar — ohne sie
   springt jede Zahl beim Zählen. Wortgleich aus tokens.css.
   ============================================================ */

/* ============================================================
   GRUNDREGELN DER SEITE
   ============================================================ */
/* Sprungziele laufen sonst unter das Wappen (hängt 130 px in die Seite). */
.tu-naechstes,.tu-kalender,.tu-band,.tu-archiv,.tu-turnier,.tu-mosaik,.tu-pause,
.tu-tafel,.tu-panel,.tu-streifen,.tu-fox,.tu-bedingungen,.tu-ausschuss,.tu-cta,
.tu-tabelle .tu-monat th{scroll-margin-top:150px}

/* Überschriften ohne Schusterjungen, Lauftext ruhig umbrechen. */
.tu-naechstes-name,.tu-fund,.tu-cta h2{text-wrap:balance}

/* Die eine Randgeste der Seite: Unterlinien laufen von links auf —
   Textlinks im Fluss, Registerzeile, Dokumentenliste, alle dieselbe
   Richtung. (Randgeste Nr. 6 der Detailarbeit.) */
.tu-linie{position:relative;text-decoration:none}
.tu-linie::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:0 50%;
  transition:transform var(--t-mittel) var(--ease)}
.tu-linie:hover::after,.tu-linie:focus-visible::after{transform:scaleX(1)}

/* Signalfarben — nie das einzige Merkmal, das Vorzeichen steht immer dabei. */
.tu-unter{color:var(--lime)}
.tu-ueber{color:var(--live)}
.tu-par{color:#fff}

/* Lochergebnisse sprechen die Sprache der Anzeigetafel: Eagle blau,
   Birdie rot, Par weiss, alles darueber tritt zurueck. Das ist bewusst
   ein anderes Farbsystem als bei den Gesamtergebnissen (tu-unter/-ueber) —
   dort heisst rot "ueber Par", hier heisst rot "Birdie". Deshalb eigene
   Klassen und nebenan immer die Vorlesezeile mit dem Klartext. */
.tu-eagle{color:var(--eagle)}
.tu-birdie{color:var(--live)}
.tu-par-score{color:#fff}
.tu-ueber-score{color:rgba(255,255,255,.58)}
.tu-legende{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-top:12px;color:rgba(255,255,255,.55)}
.tu-legende span{margin-right:4px;font-size:1.1em;line-height:1}
.tu-summe-diff{margin-top:2px;color:rgba(255,255,255,.6)}
.tu-summe-diff-zahl{font-weight:700;margin-right:4px}
.tu-strich{color:var(--muted)}

/* ============================================================
   00 · ZUSTANDSBLOCK unter dem Hero
   Die einzige handlungsauffordernde Stelle der Seite.
   ============================================================ */
.tu-naechstes{background:var(--pine);color:#fff;padding:26px var(--inset);
  display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:18px 48px;align-items:center;
  border-bottom:1px solid var(--hairline-dunkel)}
.tu-naechstes .t-mikro{color:rgba(255,255,255,.5)}
.tu-naechstes-name{font-family:'Space Grotesk',sans-serif;font-weight:700;text-transform:uppercase;
  letter-spacing:-.03em;line-height:1;font-size:clamp(22px,2.6vw,36px);margin:8px 0 6px}
.tu-naechstes .t-klein{color:rgba(255,255,255,.72)}
.tu-naechstes-frist{text-align:right}
.tu-frist-wert{font-size:clamp(20px,2.2vw,30px);line-height:1.1;margin-top:8px;white-space:nowrap}
/* Unter 24 Stunden färbt sich die Zeit — das Signal, nicht Dekor. */
.tu-frist-knapp .tu-frist-wert{color:var(--live)}
.tu-naechstes-cta{display:flex;gap:12px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.tu-naechstes-cta .t-klein{color:rgba(255,255,255,.72)}
.tu-naechstes-cta a:not(.btn){color:var(--lime)}
@media (max-width:900px){
  .tu-naechstes{grid-template-columns:1fr;gap:16px}
  .tu-naechstes-frist{text-align:left}
  .tu-naechstes-cta{justify-content:flex-start}
}

/* ============================================================
   00b · DER WEG HINEIN — PC-CADDIE-Anmeldung
   Ein schmales Band, kein Kasten: die Kante links trägt es. Es steht
   zwischen dem nächsten Turnier und dem Kalender, weil genau dort die
   Frage aufkommt „warum sehe ich die Meldeliste nicht?".
   ============================================================ */
.tu-pcc{background:var(--tanne);color:#fff;padding:16px var(--inset);
  border-bottom:1px solid var(--hairline-dunkel);
  display:flex;flex-wrap:wrap;align-items:center;gap:12px 32px;
  box-shadow:inset 3px 0 0 var(--lime)}
/* Angemeldet ist der Balken nur noch Quittung — er darf leiser werden. */
.tu-pcc-drin{padding:12px var(--inset);box-shadow:inset 3px 0 0 rgba(204,255,0,.55)}
.tu-pcc-satz{flex:1 1 320px;min-width:0}
.tu-pcc .t-mikro{color:rgba(255,255,255,.5)}
.tu-pcc-lead{margin:5px 0 0;font-family:'Hanken Grotesk',sans-serif;font-size:14px;
  line-height:1.5;color:rgba(255,255,255,.78);max-width:62ch}
.tu-pcc-wer{margin:4px 0 0;display:flex;align-items:center;gap:9px;
  font-family:'Hanken Grotesk',sans-serif;font-size:14px;color:rgba(255,255,255,.78)}
.tu-pcc-wer b{color:#fff;font-weight:700}
.tu-pcc-punkt{width:7px;height:7px;flex:none;border-radius:50%;background:var(--lime)}
.tu-pcc-tat{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px}
.tu-pcc-neu,.tu-pcc-ab{font-family:'Space Grotesk',sans-serif;font-size:11px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;text-decoration:none;
  color:rgba(255,255,255,.6);transition:color var(--t-schnell)}
.tu-pcc-neu:hover,.tu-pcc-neu:focus-visible,
.tu-pcc-ab:hover,.tu-pcc-ab:focus-visible{color:#fff;text-decoration:underline;text-underline-offset:4px}
@media (max-width:640px){
  .tu-pcc{align-items:stretch}
  .tu-pcc-tat{width:100%}
  .tu-pcc-tat .btn{flex:1 1 auto;text-align:center;justify-content:center}
}

/* Das Anmeldeblatt — dieselbe Machart wie in der Startzeiten-Tafel
   (st-anm), aber in der Sprache dieser Seite und mit deren Feldern. */
.tu-pccanm{border:0;padding:0;background:transparent;color:#fff;
  width:min(460px,calc(100vw - 28px));max-height:calc(100vh - 28px);margin:auto}
.tu-pccanm::backdrop{background:rgba(7,32,21,.55);
  backdrop-filter:blur(10px) saturate(120%);-webkit-backdrop-filter:blur(10px) saturate(120%)}
.tu-pccanm[open]{animation:tuPccAuf .3s var(--ease) both}
@keyframes tuPccAuf{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
.tu-pccanm-karte{position:relative;background:var(--pine);border:1px solid rgba(255,255,255,.16);
  border-radius:var(--r-karte);padding:30px 28px 26px;
  box-shadow:0 40px 90px -30px rgba(0,0,0,.7)}
.tu-pccanm-karte .t-mikro{color:var(--lime)}
.tu-pccanm-zu{position:absolute;top:14px;right:14px;width:36px;height:36px;display:grid;place-items:center;
  background:none;border:1px solid rgba(255,255,255,.16);border-radius:50%;color:rgba(255,255,255,.7);
  font-size:14px;line-height:1;cursor:pointer;
  transition:background var(--t-schnell),color var(--t-schnell),border-color var(--t-schnell)}
.tu-pccanm-zu:hover,.tu-pccanm-zu:focus-visible{background:var(--lime);border-color:var(--lime);color:var(--pine)}
.tu-pccanm-karte h3{margin:8px 0 0;font-family:'Space Grotesk',sans-serif;font-weight:700;
  font-size:clamp(21px,2.6vw,26px);line-height:1.08;letter-spacing:-.02em;text-transform:uppercase;color:#fff}
.tu-pccanm-text{margin:10px 0 20px;font-family:'Hanken Grotesk',sans-serif;font-size:14px;
  line-height:1.5;color:rgba(255,255,255,.72)}
.tu-pccanm .tu-anm-felder{max-width:none;grid-template-columns:1fr}
.tu-pccanm-merken{display:flex;align-items:baseline;gap:9px;margin-top:14px;
  font-family:'Hanken Grotesk',sans-serif;font-size:14px;color:rgba(255,255,255,.72)}
.tu-pccanm-merken small{color:rgba(255,255,255,.45)}
.tu-pccanm-senden{width:100%;margin-top:18px}
.tu-pccanm-senden[disabled]{opacity:.55;cursor:progress}
.tu-pccanm-meldung{margin:14px 0 0;padding:11px 13px;border-radius:9px;line-height:1.5;font-size:14px;
  background:rgba(255,90,77,.14);border:1px solid rgba(255,90,77,.45)}
.tu-pccanm-meldung[data-art="ok"]{background:rgba(204,255,0,.14);border-color:rgba(204,255,0,.4)}
.tu-pccanm-fuss{margin:16px 0 0;font-family:'Hanken Grotesk',sans-serif;font-size:12.5px;
  line-height:1.5;color:rgba(255,255,255,.45)}
@media (max-width:560px){
  .tu-pccanm{width:100vw;max-height:94vh;margin:auto 0 0}
  .tu-pccanm-karte{border-radius:var(--r-karte) var(--r-karte) 0 0;
    padding:26px 20px calc(24px + env(safe-area-inset-bottom))}
}
@media (prefers-reduced-motion:reduce){.tu-pccanm[open]{animation:none}}
@media (max-width:560px){
  .tu-naechstes-cta{width:100%}
  .tu-naechstes-cta .btn{flex:1 1 100%;justify-content:center}
}

/* ============================================================
   01 · KALENDER — Fläche Tanne, Konturziffer, klebende Steuerzeile
   ============================================================ */
.tu-kalender{background:var(--tanne);color:#fff;padding:0 0 var(--luft);position:relative;overflow:clip}
/* Die Jahreszahl steht im HINTERGRUND — Konturziffer rechts oben, ohne
   eigenen Platz im Fluss. Bis zum 18.08.2026 nahm sie als Zeile über die
   volle Breite rund 400 px Höhe ein: viel Scrollarbeit, wenig Nutzen
   (Andreas). Jetzt ist sie Wasserzeichen: absolut, halb transparent,
   hinter Stand und Steuerzeile. */
.tu-jahr-zeile{position:absolute;top:-6px;right:calc(var(--inset) - .04em);z-index:0;pointer-events:none;
  line-height:1;user-select:none}
.tu-jahr{display:block;font-family:'Space Grotesk',sans-serif;font-weight:700;
  font-size:clamp(88px,11vw,164px);line-height:.92;letter-spacing:.04em;
  color:transparent;-webkit-text-stroke:1.5px rgba(255,255,255,.18);
  font-variant-numeric:tabular-nums}
.tu-stand{color:rgba(255,255,255,.55);padding:34px var(--inset) 0;position:relative;z-index:1}
.tu-stand a{color:var(--lime)}

/* Die Steuerzeile klebt — auch auf schmalen Fenstern. Sie liegt unter dem
   Seitenkopf (76 px) und deckt mit eigener Fläche, was unter ihr durchläuft. */
.tu-steuer{position:sticky;top:76px;z-index:20;display:flex;justify-content:space-between;
  gap:18px;align-items:center;background:var(--tanne);border-top:1px solid var(--hairline-dunkel);
  border-bottom:1px solid var(--hairline-dunkel);padding:0 var(--inset) 0 calc(var(--inset) + 100px);margin-top:64px;
  overflow-x:auto;scrollbar-width:none}
/* Das Wappen hängt 134 px tief aus dem Kopf (kompakt) — bis unter die
   klebende Steuerzeile. Ohne den Einzug lagen „APR MAI" darunter. */
@media (max-width:900px){
  /* Zwei feste Zeilen: Monate (wischbar) über den Filtern — statt einer
     wild umbrechenden Leiste, die mit „Heute" dreizeilig wurde. */
  .tu-steuer{top:64px;padding-left:88px;flex-wrap:wrap;gap:0}
  .tu-steuer ul{flex:1 1 100%;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;min-width:0}
  .tu-steuer ul::-webkit-scrollbar{display:none}
  .tu-steuer-monate{border-bottom:1px solid var(--hairline-dunkel)}
  .tu-steuer a{padding:11px 8px}
  .tu-heute-link{margin-right:2px}
}
/* Der Monat, der gerade im Bild ist, leuchtet in der Steuerzeile — am
   Handy ist das die „Kalenderzeile", die beim Scrollen mitläuft. */
.tu-steuer-monate a[aria-current="location"]{color:#fff}
.tu-steuer-monate a[aria-current="location"]::after{transform:scaleX(1)}
.tu-heute-link{color:var(--lime) !important;margin-right:6px}
.tu-heute-link::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--lime);margin-right:8px;vertical-align:1px;box-shadow:0 0 0 3px rgba(204,255,0,.22)}
.tu-steuer::-webkit-scrollbar{display:none}
.tu-steuer ul{display:flex;gap:2px;list-style:none;margin:0;padding:0}
.tu-steuer a{display:inline-block;padding:14px 10px;color:rgba(255,255,255,.55);
  white-space:nowrap;position:relative;transition:color var(--t-schnell)}
.tu-steuer a::after{content:"";position:absolute;left:10px;right:10px;bottom:0;height:2px;
  background:var(--lime);transform:scaleX(0);transform-origin:0 50%;
  transition:transform var(--t-mittel) var(--ease)}
.tu-steuer a:hover,.tu-steuer a:focus-visible{color:#fff}
.tu-steuer a:hover::after,.tu-steuer a:focus-visible::after,
.tu-steuer a[aria-current="true"]::after{transform:scaleX(1)}
.tu-steuer a[aria-current="true"]{color:#fff}
.tu-ansage{padding:0 var(--inset);color:rgba(255,255,255,.55);min-height:0}
.tu-ansage:empty{display:none}
.tu-ansage{font-family:'Hanken Grotesk',sans-serif;font-size:13px;padding-top:10px}

/* Die Termine — echte Tabelle, Haarlinien statt Rahmen. Links daneben die
   Rail: je Monat ein Block, so hoch wie sein tbody (turniere.js misst),
   darin der Monatsname um 90° gedreht und KLEBEND — er bleibt stehen,
   solange sein Monat scrollt, und wird vom nächsten hinausgeschoben.
   Natives position:sticky in einem Block passender Höhe, kein Scroll-Handler. */
.tu-tabelle-huelle{padding:0 var(--inset);display:grid;grid-template-columns:52px minmax(0,1fr);gap:0 8px;
  position:relative;z-index:1}
.tu-rail{position:relative;overflow:visible}
/* overflow:clip, NICHT hidden: hidden macht den Block zum Scrollcontainer,
   und der klebende Name klebt dann an dessen (unbeweglicher) Kante statt am
   Fenster — er stand 146 px zu tief und rührte sich nie (gemessen 18.08.). */
.tu-rail-monat{position:relative;overflow:clip;min-height:0}
.tu-rail-name{position:sticky;top:calc(76px + 52px + 18px);display:block;
  writing-mode:vertical-rl;transform:rotate(180deg);inline-size:max-content;block-size:auto;
  margin-left:auto;margin-right:auto;
  font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:22px;letter-spacing:.22em;
  text-transform:uppercase;color:rgba(255,255,255,.28);line-height:1;padding:0;margin:0 auto;
  white-space:nowrap;transition:color .25s}
.tu-rail-monat.tu-rail-an .tu-rail-name{color:var(--lime)}
.tu-rail-monat::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;
  background:rgba(255,255,255,.08)}
.tu-rail-monat[hidden]{display:none}
.tu-tabelle{width:100%;border-collapse:collapse}
/* Die Heute-Marke: eine Lime-Linie mit Datum, sitzt vor dem nächsten Turnier. */
.tu-heute-marke td{padding:18px 14px 6px;border-bottom:0}
.tu-heute-marke span{display:flex;align-items:center;gap:12px;color:var(--lime);white-space:nowrap}
.tu-heute-marke span::after{content:"";flex:1;height:1px;background:var(--lime);opacity:.7}
.tu-heute-marke span::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--lime);
  box-shadow:0 0 0 4px rgba(204,255,0,.2)}
.tu-tabelle[data-zeigen="gelaufen"] tr[data-gruppe="heute"],
.tu-tabelle[data-zeigen="gelaufen"] tbody[data-hat="heute"]{display:none}
.tu-zeile{scroll-margin-top:calc(76px + 52px + 60px)}
.tu-heute-marke{scroll-margin-top:calc(76px + 52px + 24px)}
/* Die Schnellpillen bleiben stehen, solange die Steuerzeile klebt — sie
   werden nur schmal (turniere.js setzt .tu-eng und nimmt der Zeile rechts
   genau deren Breite). Was wegfällt, sagt in einer Leiste nichts: die
   Ketten-Chevrons und die breiten Polster. */
.schnell.tu-eng a,.schnell.tu-eng.mit a{padding:8px 11px;letter-spacing:.06em;gap:7px}
.schnell.tu-eng .kette{display:none}
/* Reicht der Platz neben Monaten und Filtern nicht, treten die Pillen
   eine Etage tiefer — unter die klebende Steuerzeile (turniere.js
   misst das). Weg sind sie nie. */
.schnell.tu-tief{top:138px}
.tu-steuer{transition:padding-right .3s var(--ease)}
/* Der Sprung: die Zielzeile blitzt einmal auf. */
@keyframes tuBlitz{0%{background:rgba(204,255,0,.28)}100%{background:transparent}}
.tu-zeile.tu-blitzt{animation:tuBlitz 1.6s var(--ease) both}
.tu-tabelle thead th{text-align:left;color:rgba(255,255,255,.45);font-weight:600;
  padding:22px 14px 12px;border-bottom:1px solid var(--hairline-dunkel)}
.tu-tabelle th.tu-re,.tu-tabelle td.tu-re{text-align:right}
.tu-monat th{text-align:left;color:rgba(255,255,255,.5);padding:34px 14px 10px;
  border-bottom:1px solid rgba(255,255,255,.3)}
.tu-zeile td{padding:16px 14px;border-bottom:1px solid var(--hairline-dunkel);vertical-align:top}
.tu-zeile{transition:background var(--t-schnell)}
.tu-zeile:hover,.tu-zeile:focus-within{background:rgba(255,255,255,.05)}
.tu-datum{white-space:nowrap;width:64px}
.tu-datum .t-zahl{display:block;font-size:26px;line-height:1}
.tu-datum .t-mikro{display:block;color:rgba(255,255,255,.45);margin-top:4px}
/* Wochenendturniere fallen auf: der Wochentag als Pille — werktags Lime,
   Sa/So Rot (Wunsch Andreas 18.08.2026; bewusste Ausnahme von der Regel
   „--live nie dekorativ" — hier ist Rot Information, kein Schmuck). */
.tu-tag-pille{display:inline-block;margin-top:6px;padding:3px 8px;border-radius:var(--r-pill);
  font-family:'Space Grotesk',sans-serif;font-size:10px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase}
.tu-tag-wt{background:var(--lime);color:var(--pine)}
.tu-tag-we{background:var(--live);color:#fff}
.tu-abgesagt .tu-tag-pille{background:rgba(255,255,255,.16);color:rgba(255,255,255,.7)}
.tu-name a{color:#fff;font-family:'Hanken Grotesk',sans-serif;font-weight:600;font-size:17px}
.tu-name a:hover,.tu-name a:focus-visible{color:var(--lime)}
.tu-name>span.t-klein,.tu-name .t-klein{display:block;color:rgba(255,255,255,.55);margin-top:4px}
.tu-name{font-family:'Hanken Grotesk',sans-serif;font-weight:600;font-size:17px;color:#fff}
.tu-feld{white-space:nowrap;width:120px}
.tu-feld-zahl{font-size:15px;color:rgba(255,255,255,.8)}
.tu-balken{display:block;width:96px;height:4px;background:rgba(255,255,255,.16);margin-bottom:7px}
.tu-balken i{display:block;height:100%;background:var(--lime)}
.tu-tabelle td.tu-re{font-size:15px;color:rgba(255,255,255,.8);white-space:nowrap}
.tu-zustand-spalte{white-space:nowrap}
.tu-tabelle .tu-zustand-z{font-family:'Hanken Grotesk',sans-serif;font-size:14px;color:rgba(255,255,255,.72)}
td.tu-z-offen{color:rgba(255,255,255,.85)}
td.tu-z-auswertung{color:var(--live)}
.tu-tabelle td.tu-zustand{font-family:'Hanken Grotesk',sans-serif;font-weight:300;
  font-size:14px;color:rgba(255,255,255,.72);white-space:nowrap}
.tu-tabelle td.tu-zustand a{color:var(--lime)}
.tu-abgesagt td{opacity:.45;text-decoration:none}
.tu-abgesagt .tu-name{text-decoration:line-through;text-decoration-color:rgba(255,255,255,.5)}

/* Hover und Fokus zeigen Information, nicht Farbe: Die Zeile gibt eine
   zweite Zeile frei — Startinformation, Relevanz, Spanne, die Links. */
.tu-mehr{display:none}
.tu-mehr td{padding:0 14px 16px;border-bottom:1px solid var(--hairline-dunkel);color:rgba(255,255,255,.6)}
.tu-mehr .t-klein{color:rgba(255,255,255,.6)}
/* Anmelden, Ausschreibung, Termin speichern: drei Aktionen, eine Optik.
   Vorher war "Anmelden" ein Knopf mit geerbter Schriftgroesse und
   Unterstrich, die Nachbarn schlichte Mikro-Links — nebeneinander sah das
   aus wie zwei verschiedene Dinge (Andreas, 18.08.). */
.tu-mehr-links{display:inline-flex;flex-wrap:wrap;gap:20px;margin-left:20px;align-items:baseline}
.tu-mehr-links a,.tu-mehr-links button{color:var(--lime);background:none;border:0;padding:0;
  font-family:'Space Grotesk',sans-serif;font-size:11px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;text-decoration:none;cursor:pointer}
.tu-mehr-links a:hover,.tu-mehr-links button:hover,
.tu-mehr-links a:focus-visible,.tu-mehr-links button:focus-visible{text-decoration:underline;text-underline-offset:4px}
.tu-mehr-links button[aria-expanded="true"]{color:#fff;text-decoration:underline;text-underline-offset:4px}
/* Aufgeklappt wird per KLICK, nicht per Hover. Mit Hover klappte beim
   blossen Ueberfahren der Tabelle staendig etwas auf und zu — bei 90
   Terminen ein Flackern, das die Liste unlesbar macht (Andreas, 18.08.).
   Wer klickt, entscheidet; und was offen ist, bleibt offen. */
.js .tu-mehr.tu-offen{display:table-row}
.js .tu-zeile{cursor:pointer}
.js .tu-zeile a,.js .tu-zeile button{cursor:auto}
.js .tu-zeile.tu-zeile-offen{background:rgba(255,255,255,.04)}
.tu-aufklapp{background:none;border:0;padding:6px;margin:-6px;color:rgba(255,255,255,.55);
  cursor:pointer;line-height:0}
.tu-aufklapp svg{transition:transform .18s var(--ease)}
.tu-zeile-offen .tu-aufklapp svg{transform:rotate(180deg)}
.tu-aufklapp:hover,.tu-aufklapp:focus-visible{color:#fff}
.js .tu-zeile:hover td,.js .tu-zeile:focus-within td{border-bottom-color:transparent}
/* Ohne JavaScript ist nichts versteckt. */
html:not(.js) .tu-mehr{display:table-row}

/* Der Filter blendet um — alles bleibt im DOM. Monatsköpfe ohne einen
   einzigen Treffer verschwinden mit (vorher standen unter „Kommend" vier
   leere Monate übereinander, bevor der August kam). */
.tu-tabelle[data-zeigen="kommend"] tr[data-gruppe="gelaufen"],
.tu-tabelle[data-zeigen="gelaufen"] tr[data-gruppe="kommend"],
.tu-tabelle[data-zeigen="kommend"] tbody:not([data-hat~="kommend"]),
.tu-tabelle[data-zeigen="gelaufen"] tbody:not([data-hat~="gelaufen"]){display:none}

/* Die Aktionsspalte: Anmelden · Ergebnis · Ausschreibung als Chips IN der
   Zeile. Anmelden ist voll (Lime), Ergebnis lime umrandet, Ausschreibung
   still — die Hierarchie ist die Reihenfolge, in der man es braucht. */
.tu-akt{white-space:nowrap;text-align:right;width:1%}
.tu-akt-liste{display:inline-flex;gap:6px;align-items:center;vertical-align:middle;margin-right:14px}
.tu-chip{display:inline-flex;align-items:center;height:28px;padding:0 11px;border-radius:var(--r-pill,999px);
  border:1px solid rgba(255,255,255,.22);background:transparent;color:rgba(255,255,255,.8);
  font-family:'Space Grotesk',sans-serif;font-size:10.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;text-decoration:none;cursor:pointer;line-height:1;white-space:nowrap;
  transition:background var(--t-schnell),color var(--t-schnell),border-color var(--t-schnell),transform var(--t-schnell)}
.tu-chip:hover,.tu-chip:focus-visible{border-color:#fff;color:#fff;transform:translateY(-1px)}
.tu-chip-voll{background:var(--lime);border-color:var(--lime);color:var(--pine)}
.tu-chip-voll:hover,.tu-chip-voll:focus-visible{background:#fff;border-color:#fff;color:var(--pine)}
.tu-chip-voll[aria-expanded="true"]{background:#fff;border-color:#fff}
.tu-chip-lime{border-color:var(--lime);color:var(--lime)}
.tu-chip-lime:hover,.tu-chip-lime:focus-visible{background:var(--lime);color:var(--pine);border-color:var(--lime)}
/* „Du bist gemeldet" — die Pille, die turniere.js nachträgt, sobald
   api/turnier-meine.php geantwortet hat. Gefüllt statt umrandet: Sie ist
   keine Aufforderung mehr, sondern eine Feststellung. */
.tu-chip-gemeldet{background:rgba(204,255,0,.16);border-color:var(--lime);color:var(--lime)}
.tu-chip-gemeldet::before{content:"✓";margin-right:6px;font-weight:700}
.tu-chip-gemeldet[data-gemeldet="warten"]{background:rgba(255,255,255,.06);
  border-color:rgba(255,255,255,.4);color:rgba(255,255,255,.8)}
.tu-chip-gemeldet[data-gemeldet="warten"]::before{content:"·"}
button.tu-chip-gemeldet:hover,button.tu-chip-gemeldet:focus-visible{background:var(--lime);color:var(--pine)}
.tu-chip-stumm{border-style:dashed;color:rgba(255,255,255,.55);cursor:default}
.tu-chip-stumm:hover{transform:none;border-color:rgba(255,255,255,.22);color:rgba(255,255,255,.55)}
.tu-akt .tu-aufklapp{vertical-align:middle}
.tu-name-zustand{display:none}
.tu-fuss{color:rgba(255,255,255,.45);padding:18px var(--inset) 0}

@media (max-width:900px){
  /* Kompakte Zeilen, keine Karten: Datum, Name, eine Zustandszeile, die
     Chips — mehr steht erst nach dem Antippen da. Bis zum 18.08. lag jede
     Zeile als fünfzeilige Karte offen (Balken, Feld, Zustand, Pfeil), 90
     Turniere ergaben eine endlose Wand („responsive sind alle turniere
     ausgeklappt", Andreas). Die Seite scrollt nie waagerecht — die
     Steuerzeile ist wischbar und klebt. */
  .tu-tabelle thead{display:none}
  .tu-tabelle-huelle{grid-template-columns:minmax(0,1fr);gap:0}
  .tu-rail{display:none}
  .tu-tabelle,.tu-tabelle tbody{display:block}
  .tu-heute-marke,.tu-heute-marke td{display:block;padding:18px 0 4px}
  .tu-monat{display:block}
  .tu-monat th{display:block;padding:26px 0 6px}
  .tu-zeile{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:0 12px;
    align-items:start;padding:12px 0;border-bottom:1px solid var(--hairline-dunkel)}
  .tu-zeile td{display:block;padding:0;border-bottom:0}
  .tu-datum{grid-column:1;grid-row:1/span 2}
  .tu-datum .t-zahl{font-size:22px}
  .tu-tag-pille{margin-top:4px;padding:2px 6px;font-size:9px}
  .tu-name{grid-column:2;grid-row:1;font-size:16px;line-height:1.25}
  .tu-name>span.t-klein,.tu-name .t-klein{margin-top:2px;font-size:13px}
  .tu-name-zustand{display:block;margin-top:5px;color:rgba(255,255,255,.5);letter-spacing:.1em}
  .tu-name-zustand.tu-z-auswertung{color:var(--live)}
  /* td-Selektoren mit Klasse: `.tu-zeile td{display:block}` schlägt sonst
     jede reine Klassenregel (Spezifität 0,1,1 gegen 0,1,0). */
  .tu-zeile td.tu-feld,.tu-tabelle td.tu-re,.tu-tabelle td.tu-zustand{display:none}
  .tu-zeile td.tu-akt{grid-column:2/span 2;grid-row:2;text-align:left;width:auto;white-space:normal;
    display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}
  .tu-akt-liste{display:flex;flex-wrap:wrap;gap:6px;margin:0}
  .tu-chip{height:26px;padding:0 9px;font-size:9.5px}
  .tu-akt .tu-aufklapp{margin-left:auto;padding:8px;margin:-8px -8px -8px auto}
  /* Der Aufklappteil: Startzeit, Feld, Vorgabe, Infofelder, Termin. */
  .tu-mehr{display:block}
  .tu-mehr td{display:block;border-bottom:0;padding:8px 0 4px 64px}
  .js .tu-mehr{display:none}
  .js .tu-mehr.tu-offen{display:block}
  .tu-mehr-links{display:flex;margin:8px 0 0;flex-wrap:wrap;gap:14px}
  /* :not([hidden]) ist Pflicht: `display:block` allein schlug das
     hidden-Attribut, und am Handy standen ALLE Anmeldeformulare offen
     unter ihren Zeilen (Andreas, 18.08.2026: „alle turniere ausgeklappt"). */
  .tu-anmeldung:not([hidden]){display:block}
  .tu-anmeldung > td{display:block;padding:0 0 18px}
}
@media (max-width:420px){
  .tu-mehr td{padding-left:0}
}

/* ============================================================
   02 · BANDBILD
   ============================================================ */
.tu-band{position:relative;background:var(--pine)}
.tu-band img{width:100%;height:34svh;min-height:240px;object-fit:cover;object-position:40% 35%;
  filter:brightness(.72)}
.tu-band-satz{position:absolute;top:clamp(20px,5vh,48px);left:var(--inset);right:var(--inset);
  color:#fff;max-width:16ch}

/* ============================================================
   03 · ERGEBNISARCHIV — Pine, asymmetrisch
   ============================================================ */
.tu-archiv{background:var(--pine);color:#fff;padding-top:var(--luft)}
.tu-archiv-leer{color:rgba(255,255,255,.6);max-width:62ch;padding-bottom:var(--luft-s)}

/* Das Jahresregister über den Tafeln — dieselbe Optik wie das Register der
   Anzeigetafel (.tu-register), aber jede Saison ist eine eigene Adresse:
   Hier wechselt die Seite, nicht ein Panel. Die Zahl dahinter sagt, wie
   viele Ergebnislisten der Jahrgang trägt. */
.tu-jahre{margin-top:34px;gap:30px}
.tu-jahre a{padding-bottom:12px}
.tu-jahre .tu-jahre-zahl{color:rgba(255,255,255,.38);letter-spacing:.08em;margin-left:6px}
.tu-jahre a[aria-current="true"] .tu-jahre-zahl{color:var(--lime)}
.tu-turnier{background:var(--pine);color:#fff;padding:0 var(--inset) var(--luft)}
.tu-turnier-lage{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:56px;align-items:start}

/* Das Brett — die Tafel als physisches Objekt: eigener Rahmen, dunklere
   Fläche, Kopf mit Fallblatt-Namen und der Uhr der Auswertungszeit
   (Mockup-Abnahme Andreas 18.08.2026). */
.tu-brett{background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.14)}
.tu-brett-kopf{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;
  gap:10px 24px;padding:20px 26px;border-bottom:2px solid rgba(255,255,255,.4)}
/* min-width:0 ist hier keine Kosmetik: Ein Grid-Kind darf sonst breiter
   werden als seine Spalte (min-width:auto = min-content), und die Kacheln
   des Turniernamens schoben die ganze Seite auf 539 px bei 390 px
   Fensterbreite (gemessen 18.08.2026). */
.tu-brett-name{margin:0;grid-column:1;min-width:0}
.tu-flap-zeile{max-width:100%}
.tu-brett-kopf .tu-uhr{grid-column:2;grid-row:1/span 2}
.tu-brett-form{grid-column:1}
/* Woerter bleiben zusammen: Vorher war jede Kachel ein eigenes Flex-Kind,
   und der Umbruch traf mitten ins Wort — „… GERHEL" / „M" (Andreas,
   18.08.2026). Jetzt bricht die Zeile nur zwischen den Woertern. */
/* Zwischen den Wörtern eine deutliche Lücke — vorher stand dort dieselbe
   4-px-Fuge wie zwischen den Buchstaben, und aus „MEN'S DAY BY" wurde
   „MEN'SDAYBY" (Andreas, 18.08.2026: „Leerzeichen fehlen"). */
.tu-flap-zeile{display:flex;flex-wrap:wrap;gap:6px .8em;align-items:flex-start}
.tu-flap-wort{display:inline-flex;gap:4px}
/* Buchstabenkacheln wie eine Fallblattanzeige; das Umklappen setzt
   turniere.js beim Hereinscrollen in Gang (Klasse .flippt am Artikel). */
.tu-flap,.tu-flap-luft{font-style:normal;font-family:'Space Grotesk',sans-serif;font-weight:700;
  font-size:clamp(17px,1.7vw,22px);line-height:1;width:1.45em;height:1.82em;
  display:grid;place-items:center;color:#fff}
.tu-flap{background:rgba(0,0,0,.4);border:1px solid rgba(255,255,255,.16);
  box-shadow:inset 0 2px 4px rgba(0,0,0,.5);position:relative}
.tu-flap::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;
  background:rgba(255,255,255,.09)}
.tu-flap-luft{width:.7em}
/* Das einmalige Kippen beim Hereinscrollen weicht dem echten Rattern
   (turniere.js): Jede Kachel klappt bei JEDEM Zeichenwechsel. */
.tu-flap-dreht{animation:tuFlap .16s var(--ease) both;transform-origin:50% 0;
  backface-visibility:hidden}
@keyframes tuFlap{from{transform:rotateX(-92deg)}60%{transform:rotateX(14deg)}to{transform:rotateX(0)}}
.tu-brett-form{color:rgba(255,255,255,.5);white-space:nowrap}
.tu-uhr{display:flex;align-items:center;gap:12px}
.tu-uhr svg{display:block;flex:none}
.tu-uhr-stand{color:rgba(255,255,255,.5);text-align:right;line-height:1.5}
.tu-uhr-stand b{display:block;font-size:15px;color:#fff;letter-spacing:.04em}

/* Wertungsbänder: Brutto auf Lime — die Ehrensache steht oben.
   ACHTUNG, hier lag ein Fehler: Diese Regel hiess `.tu-band` — genau wie
   die SEKTION des Bandbildes. Das randlose Bild bekam dadurch Polsterung
   und einen hellen Grund und stand in einem weissen Rahmen (Andreas,
   18.08.2026). Ein Klassenname, zwei Bedeutungen — jetzt getrennt. */
.tu-band-w,.tu-wertungsband{display:flex;justify-content:space-between;align-items:baseline;
  padding:8px 26px;font-family:'Space Grotesk',sans-serif;font-size:11px;font-weight:700;
  letter-spacing:.22em;text-transform:uppercase;background:rgba(255,255,255,.12);color:#fff}
.tu-band-lime{background:var(--lime);color:var(--pine)}

/* Zeilen wie Stecktafeln: Zebra, Haarlinien, tabulare Ziffern. */
.tu-lb{width:100%;border-collapse:collapse}
.tu-lb thead th{text-align:left;color:rgba(255,255,255,.45);font-weight:600;
  padding:14px 14px 9px;border-bottom:1px solid rgba(255,255,255,.16)}
.tu-lb thead th:first-child{padding-left:26px}
.tu-lb thead th:last-child{padding-right:26px}
.tu-lb td{padding:13px 14px;border-bottom:1px solid rgba(255,255,255,.10);vertical-align:middle}
.tu-lb .tu-pos{font-size:24px;width:56px;padding-left:26px}
.tu-lb td:last-child{padding-right:26px}
.tu-lb tbody:first-of-type tr:first-child .tu-pos{color:var(--lime)}
.tu-lb-spieler{display:block;font-family:'Space Grotesk',sans-serif;font-weight:700;
  font-size:18px;letter-spacing:.06em;text-transform:uppercase;color:#fff}
.tu-lb-club{display:block;color:rgba(255,255,255,.5);margin-top:2px}
.tu-spv{font-size:16px;color:rgba(255,255,255,.7);white-space:nowrap}
/* Die Ergebnisspalte stand linksbuendig, weil die Rechtsbuendigkeit nur
   fuer die Kalendertabelle definiert war (.tu-tabelle td.tu-re) — im
   Leaderboard sassen die Steckziffern deshalb je nach Namenslaenge
   unterschiedlich weit links (Andreas, 18.08.2026). */
.tu-lb th.tu-re,.tu-lb td.tu-re{text-align:right}
.tu-erg{white-space:nowrap}
.tu-erg .tu-ziffern{justify-content:flex-end}
/* Steckziffern: jede Ziffer eine Kachel. Farbe über tu-unter/tu-ueber —
   das Vorzeichen steht immer mit auf der Tafel. */
.tu-ziffern{display:inline-flex;gap:4px;vertical-align:middle}
.tu-ziffern i{font-style:normal;font-family:'Space Grotesk',sans-serif;font-weight:700;
  font-size:20px;font-variant-numeric:tabular-nums;width:30px;height:38px;
  display:grid;place-items:center;background:rgba(0,0,0,.4);
  border:1px solid rgba(255,255,255,.14);box-shadow:inset 0 2px 4px rgba(0,0,0,.5);color:#fff}
.tu-ziffern.tu-unter i{color:var(--lime)}
.tu-ziffern.tu-ueber i{color:var(--live)}
.js .tu-turnier.flippt .tu-ziffern i{animation:tuFlap .32s var(--ease) both;
  animation-delay:calc(var(--i,0)*25ms);transform-origin:50% 0;backface-visibility:hidden}
.tu-erg-lage{display:inline-flex;align-items:center;gap:8px;vertical-align:middle}
.tu-erg-text{color:rgba(255,255,255,.65)}
/* Die Einheit steht IMMER dabei („39 Punkte", „90 Schläge"), darunter in
   Mikro das Zweite: die Schläge zum Stableford, die Differenz zu Par beim
   Zählspiel. Eine nackte Zahl kann niemand lesen (Andreas, 18.08.2026). */
.tu-erg-zusatz{display:block;color:rgba(255,255,255,.45);margin-top:5px;letter-spacing:.12em}
/* Teams (Scramble, Vierer): jeder Name eine Zeile, der Schrägstrich
   bleibt für Screenreader im Text, sichtbar ist nur der Umbruch. */
.tu-lb-team .tu-lb-und{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.tu-lb-team .tu-lb-n{display:block}
.tu-lb-team .tu-lb-n+.tu-lb-n{margin-top:2px}
.tu-brett-leer{padding:18px 26px;color:rgba(255,255,255,.6);margin:0}
.tu-sieger-platzhalter img{filter:saturate(.85);object-position:50% 65%}
.tu-lb-mehr{display:block;width:100%;text-align:left;background:none;border:0;cursor:pointer;
  color:var(--lime);padding:13px 26px;letter-spacing:.16em;
  border-bottom:1px solid rgba(255,255,255,.10);transition:background var(--t-schnell)}
.tu-lb-mehr:hover,.tu-lb-mehr:focus-visible{background:rgba(255,255,255,.05)}
.tu-sonder{margin:0}
.tu-sonder li{display:flex;gap:18px;align-items:baseline;padding:12px 26px;
  border-bottom:1px solid rgba(255,255,255,.10)}
.tu-sonder li:last-child{border-bottom:0}
.tu-sonder .t-mikro{color:rgba(255,255,255,.45)}
.tu-sonder .t-mikro:first-child{min-width:16ch}
.tu-sonder-name{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:15px;
  letter-spacing:.06em;text-transform:uppercase;color:#fff;margin-right:auto}

/* Der Knopf zum Bogen: eine Zeile mit zwei Enden. */
.tu-bogen-knopf{display:flex;justify-content:space-between;align-items:baseline;gap:14px}
.tu-bogen-knopf .tu-bogen-zahl{color:rgba(255,255,255,.5);letter-spacing:.1em}
/* Der Ergebnisbogen — <dialog>, unscharfer Hintergrund, Tafeloptik. */
.tu-bogen{border:0;padding:0;background:transparent;max-width:min(920px,calc(100vw - 32px));width:100%;
  max-height:calc(100vh - 32px);margin:auto;color:#fff}
.tu-bogen::backdrop{background:rgba(7,32,21,.55);backdrop-filter:blur(10px) saturate(120%);
  -webkit-backdrop-filter:blur(10px) saturate(120%)}
.tu-bogen[open]{animation:tuBogenAuf .32s var(--ease) both}
.tu-bogen[open]::backdrop{animation:tuBogenGrund .32s var(--ease) both}
@keyframes tuBogenAuf{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:none}}
@keyframes tuBogenGrund{from{opacity:0}to{opacity:1}}
.tu-bogen-huelle{background:var(--pine);border:1px solid rgba(255,255,255,.16);box-shadow:0 40px 90px -30px rgba(0,0,0,.7);
  max-height:calc(100vh - 32px);overflow:auto;overscroll-behavior:contain;border-radius:var(--r-flaeche,6px)}
.tu-bogen-kopf{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:flex-start;gap:20px;
  padding:22px 26px 16px;background:var(--pine);border-bottom:2px solid rgba(255,255,255,.4)}
.tu-bogen-kopf .t-mikro{color:rgba(255,255,255,.5)}
.tu-bogen-kopf h3{margin:4px 0 6px;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(20px,2.4vw,28px);
  line-height:1.05;letter-spacing:.02em;text-transform:uppercase;color:#fff}
.tu-bogen-kopf .t-klein{color:rgba(255,255,255,.6)}
.tu-bogen-tasten{display:flex;gap:10px;align-items:center;flex:none}
.tu-bogen-druck{background:none;border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:999px;padding:8px 14px;
  cursor:pointer;letter-spacing:.14em}
.tu-bogen-druck:hover{border-color:var(--lime);color:var(--lime)}
.tu-bogen-zu{background:none;border:1px solid rgba(255,255,255,.3);color:#fff;width:38px;height:38px;border-radius:50%;
  cursor:pointer;font-size:16px;line-height:1;display:grid;place-items:center}
.tu-bogen-zu:hover,.tu-bogen-zu:focus-visible{background:var(--lime);border-color:var(--lime);color:var(--pine)}
.tu-bogen-nav{display:flex;flex-wrap:wrap;gap:6px;padding:12px 26px;border-bottom:1px solid rgba(255,255,255,.12)}
.tu-bogen-nav a{color:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.2);border-radius:999px;padding:6px 11px;
  text-decoration:none;letter-spacing:.1em}
.tu-bogen-nav a:hover{border-color:var(--lime);color:var(--lime)}
.tu-bogen-wertung{scroll-margin-top:110px}
.tu-lb-bogen .tu-pos{font-size:18px}
.tu-lb-bogen .tu-lb-spieler{font-size:15px}
.tu-lb-bogen td{padding:10px 14px}
.tu-lb-bogen .tu-erg b{font-size:18px}
.tu-bogen-preis .tu-pos{color:var(--lime)}
.tu-bogen-preis td:first-child{box-shadow:inset 3px 0 0 var(--lime)}
.tu-bogen-fuss{padding:16px 26px 22px;color:rgba(255,255,255,.45)}
html.tu-bogen-offen{overflow:hidden}
/* Die Scorekarte je Zeile im Bogen: Zeile klickbar, Chevron dreht, die
   Karten-Zeile darunter zeigt zwei Neunerblöcke (Bahn · Par · Punkte ·
   Schläge) mit Out/In/Gesamt. Zebra im Bogen aus — die eingeschobenen
   Kartenzeilen würden das Muster verschieben. */
.tu-lb tbody tr:nth-child(even) td{background:none}
.tu-lb tr.tu-hat-karte{cursor:pointer}
.tu-lb tr.tu-hat-karte:hover td{background:rgba(255,255,255,.05)}
.tu-lb tr.tu-hat-karte.tu-offen td{border-bottom-color:transparent}
.tu-lb tr.tu-hat-karte.tu-offen td:first-child{box-shadow:inset 3px 0 0 var(--lime)}
.tu-lb tr.tu-hat-karte .tu-erg{position:relative;padding-right:64px}
.tu-karte-knopf{position:absolute;right:26px;top:50%;margin-top:-13px;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  border:1px solid rgba(255,255,255,.28);border-radius:50%;background:none;color:rgba(255,255,255,.7);
  cursor:pointer;transition:border-color .2s,color .2s}
.tu-karte-knopf::before{content:"";width:7px;height:7px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;
  transform:translateY(-2px) rotate(45deg);transition:transform .25s var(--ease)}
.tu-hat-karte:hover .tu-karte-knopf,.tu-karte-knopf:focus-visible{border-color:var(--lime);color:var(--lime)}
.tu-karte-knopf[aria-expanded="true"]::before{transform:translateY(2px) rotate(225deg)}
.tu-lb tr.tu-karte td{padding:0 14px 16px 26px;background:none}
.tu-lb tr.tu-karte.tu-offen td:first-child{box-shadow:inset 3px 0 0 var(--lime)}
.tu-sk{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:12px 22px;
  background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:12px 14px 12px}
.tu-sk-halb{min-width:0}
.tu-sk-z{display:grid;grid-template-columns:52px repeat(9,minmax(0,1fr)) 40px;align-items:center;gap:0 2px;
  padding:3px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.tu-sk-halb .tu-sk-z:last-child{border-bottom:0}
.tu-sk-z>span{text-align:center;min-width:0}
.tu-sk-z>span:first-child{text-align:left;color:rgba(255,255,255,.5)}
.tu-sk-z .tu-sk-sum{font-weight:700;color:#fff;border-left:1px solid rgba(255,255,255,.14)}
.tu-sk-kopf,.tu-sk-par{color:rgba(255,255,255,.55)}
.tu-sk-kopf .tu-sk-b{font-weight:600;color:rgba(255,255,255,.75)}
.tu-sk-pkt{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:17px;color:var(--lime)}
.tu-sk-schl{font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:14px;color:rgba(255,255,255,.85)}
.tu-sk:not(.tu-sk-stb) .tu-sk-schl{font-size:17px;font-weight:700;color:#fff}
.tu-sk-stb .tu-sk-schl{color:rgba(255,255,255,.6)}
.tu-sk-stb .tu-sk-schl .tu-sk-sum{color:rgba(255,255,255,.75)}
/* Die Formen der Karte: Kreis unter Par, Quadrat über Par, doppelt = zwei. */
.tu-sk-s i{display:inline-grid;place-items:center;font-style:normal;min-width:24px;height:24px;padding:0 3px;border-radius:50%;
  border:1.5px solid transparent;box-sizing:border-box}
.tu-sk-s.tu-sk-bi i{border-color:var(--lime);color:var(--lime)}
.tu-sk-s.tu-sk-ea i{border-color:var(--lime);color:var(--lime);box-shadow:0 0 0 3px var(--pine),0 0 0 4.5px var(--lime)}
.tu-sk-s.tu-sk-bo i{border-radius:4px;border-color:rgba(255,255,255,.55)}
.tu-sk-s.tu-sk-db i{border-radius:4px;border-color:rgba(255,120,120,.85);color:#ffb3b3;box-shadow:0 0 0 3px var(--pine),0 0 0 4.5px rgba(255,120,120,.6)}
.tu-sk-ges{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px 18px;align-items:baseline;padding-top:8px;
  border-top:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.55)}
.tu-sk-ges b{color:#fff;font-family:'Space Grotesk',sans-serif;font-size:15px;letter-spacing:0}
@media (max-width:560px){
  .tu-bogen{max-width:100vw;max-height:100vh}
  .tu-bogen-huelle{max-height:100vh;border-radius:0}
  .tu-bogen-kopf{padding:16px 16px 12px}
  .tu-bogen-nav{padding:10px 16px}
  .tu-lb-bogen td{padding:9px 8px}
  .tu-lb tr.tu-karte td{padding:0 6px 12px 10px}
  .tu-sk{padding:8px 6px;gap:8px}
  .tu-sk-pkt{font-size:14px}
  .tu-sk-schl,.tu-sk:not(.tu-sk-stb) .tu-sk-schl{font-size:12px}
  .tu-sk-s i{min-width:20px;height:20px;padding:0 1px}
  /* Am Handy ist neben „10 Punkte" kein Platz für den Knopf: die ganze
     Zeile ist tippbar, der Hinweis-Chevron sitzt unter der Platzzahl. */
  .tu-lb tr.tu-hat-karte .tu-erg{padding-right:8px}
  .tu-karte-knopf{display:none}
  .tu-lb tr.tu-hat-karte .tu-pos::after{content:"";display:block;width:6px;height:6px;margin:6px 0 0 4px;
    border-right:1.5px solid rgba(255,255,255,.45);border-bottom:1.5px solid rgba(255,255,255,.45);
    transform:rotate(45deg);transition:transform .25s var(--ease)}
  .tu-lb tr.tu-hat-karte.tu-offen .tu-pos::after{transform:rotate(225deg);margin-top:9px;border-color:var(--lime)}
  .tu-sk-z{grid-template-columns:48px repeat(9,minmax(0,1fr)) 30px;gap:0}
  .tu-sk-z>span:first-child{font-size:9px;letter-spacing:.03em}
  .tu-sk-z .tu-sk-sum{font-size:12px}
}
@media print{
  /* Nur der Bogen kommt aufs Papier: alles unsichtbar, der Dialog sichtbar
     und an die Ecke gesetzt (visibility statt display — display:none am
     Vorfahren würde den Dialog mit verschlucken). */
  html.tu-bogen-offen body *{visibility:hidden}
  html.tu-bogen-offen dialog.tu-druckt,html.tu-bogen-offen dialog.tu-druckt *{visibility:visible}
  html.tu-bogen-offen dialog.tu-druckt{position:absolute;left:0;top:0;width:100%;max-width:none;max-height:none;margin:0;color:#000}
  dialog.tu-druckt .tu-bogen-huelle{background:#fff;color:#000;border:0;box-shadow:none;max-height:none;overflow:visible}
  dialog.tu-druckt .tu-bogen-kopf{position:static;background:#fff;color:#000;border-bottom-color:#000}
  dialog.tu-druckt h3,dialog.tu-druckt .tu-lb-spieler,dialog.tu-druckt .tu-lb td,dialog.tu-druckt .t-klein,
  dialog.tu-druckt .t-mikro,dialog.tu-druckt .tu-lb-club,dialog.tu-druckt .tu-erg b{color:#000 !important}
  dialog.tu-druckt .tu-bogen-tasten,dialog.tu-druckt .tu-bogen-nav{display:none}
  dialog.tu-druckt .tu-lb tbody tr:nth-child(even) td{background:#f2f2f2}
  dialog.tu-druckt .tu-wertungsband{background:#ddd;color:#000}
  dialog.tu-druckt .tu-lb thead th{color:#333}
  dialog.tu-druckt .tu-karte-knopf{display:none}
  dialog.tu-druckt .tu-sk{background:#f6f6f6;border-color:#bbb;color:#000}
  dialog.tu-druckt .tu-sk *{color:#000 !important}
  dialog.tu-druckt .tu-sk-s.tu-sk-bi i,dialog.tu-druckt .tu-sk-s.tu-sk-ea i{border-color:#000}
  dialog.tu-druckt .tu-sk-s.tu-sk-ea i,dialog.tu-druckt .tu-sk-s.tu-sk-db i{box-shadow:0 0 0 2px #fff,0 0 0 3.5px #000}
}
/* Die Klappe: „Ergebnisse" zu, „Zuklappen" offen. */
.tu-archiv-eintrag .tu-ae-auf{display:none}
.tu-archiv-eintrag[open] .tu-ae-auf{display:inline}
.tu-archiv-eintrag[open] .tu-ae-zu{display:none}
.tu-archiv-eintrag{scroll-margin-top:100px}

/* Rechts neben der Tafel: „Das Turnier in Zahlen" (klebt beim Scrollen
   mit), Bilder stehen seit 19.08. nur noch UNTER der Tafel. */
.tu-brett-bogenlink{background:none;border:0;padding:0;margin:0;font:inherit;color:var(--lime);
  letter-spacing:inherit;text-transform:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.tu-brett-bogenlink:hover,.tu-brett-bogenlink:focus-visible{color:#fff}
/* Der Foto-Block steht als eigenes Brett UNTER Tafel und Zahlen — am Handy
   ist die Reihenfolge damit Tafel → Zahlen → Fotos (Andreas, 19.08.2026). */
.tu-brett-fotos{grid-column:1;margin-top:0}
.tu-bogen-druck{text-decoration:none;display:inline-block}
.tu-rail-zahlen{position:sticky;top:110px;border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.18);
  padding:22px 26px 18px}
.tu-rz-titel{color:var(--lime);letter-spacing:.2em;margin:0 0 6px}
.tu-rz-liste{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
.tu-rz{padding:14px 0 12px;border-bottom:1px solid rgba(255,255,255,.12);min-width:0}
.tu-rz-gross{grid-column:1/-1}
.tu-rz:nth-last-child(1),.tu-rz:nth-last-child(2):not(.tu-rz-gross){border-bottom:0}
.tu-rz dt{color:rgba(255,255,255,.5);margin:0 0 4px}
.tu-rz dd{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
.tu-rz dd b{font-size:34px;line-height:1;color:#fff}
.tu-rz-gross dd b{font-size:56px}
.tu-rz dd .t-klein{color:rgba(255,255,255,.62)}
.tu-rz-fuss{color:rgba(255,255,255,.4);margin:14px 0 0}
.tu-brett-bild{margin:0;padding:14px 26px 22px}
.tu-brett-bild img{display:block;width:100%;aspect-ratio:16/9;max-height:440px;object-fit:cover}
.tu-wand summary{list-style:none;cursor:pointer;position:relative;display:block}
.tu-wand summary::-webkit-details-marker{display:none}
.tu-wand summary:focus-visible{outline:3px solid var(--lime);outline-offset:3px}
.tu-wand-wink{position:absolute;right:14px;bottom:12px;color:#fff;background:rgba(7,48,31,.72);
  padding:7px 13px;letter-spacing:.16em;transition:background var(--t-schnell)}
.tu-wand summary:hover .tu-wand-wink{background:var(--pine)}
.tu-wand[open] .tu-wand-wink{display:none}
.tu-wand-bilder{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}
.tu-wand-bild{margin:0;position:relative}
/* Der Griff zur Lightbox liegt zwischen figure und img: ein reiner
   Rahmen ohne eigenes Aussehen, damit die Wandmasse gelten. */
.tu-wand-lupe{display:block;width:100%;height:100%;margin:0;padding:0;border:0;
  background:none;cursor:zoom-in;overflow:hidden}
.tu-wand-lupe img{transition:transform .5s var(--ease),opacity .3s}
.tu-wand-lupe:hover img{transform:scale(1.03)}
.tu-wand-lupe:focus-visible{outline:2px solid var(--lime);outline-offset:-2px}
.tu-wand-bild img{width:100%;height:100%;min-height:120px;object-fit:cover}
.tu-wand-gross{grid-column:span 2;grid-row:span 2}
.tu-wand-bild figcaption{position:absolute;left:10px;bottom:8px;color:#fff;
  text-shadow:0 1px 8px rgba(0,0,0,.6)}
/* Die Auffalt-Geste (Effekt 3): clip-path fährt auf, Bilder skalieren von
   1,04 zurück. Das Skript setzt nur die Klasse; zu ist einfach display. */
.js .tu-wand-bilder{clip-path:inset(0 0 0 0)}
.js .tu-wand.faltet .tu-wand-bilder{animation:tuWand .6s var(--ease)}
.js .tu-wand.faltet .tu-wand-bild img{animation:tuWandBild .6s var(--ease)}
@keyframes tuWand{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}
@keyframes tuWandBild{from{transform:scale(1.04)}to{transform:scale(1)}}

@media (max-width:900px){
  /* minmax(0,1fr), nicht 1fr: „1fr" heisst minmax(AUTO,1fr) und laesst das
     Kind auf min-content wachsen — das Brett wurde so 437 px breit bei
     390 px Fenster (gemessen 18.08.2026). Die Tabelle darin scrollt
     ohnehin selbst. */
  .tu-turnier-lage{grid-template-columns:minmax(0,1fr);gap:30px}
  .tu-rail-zahlen{position:static}
  .tu-brett-form{white-space:normal}
}
@media (max-width:560px){
  /* Frueher: display:block + nowrap, also eine seitwaerts scrollende Box.
     Sie schob trotzdem die Seite auf (gemessen 390 px → 444 px), und
     seitwaerts scrollende Ergebnislisten sind am Handy ohnehin muehsam.
     Jetzt bricht die Tabelle um: feste Spalten fuer Platz, Vorgabe und
     Ergebnis, der Name nimmt den Rest und darf trennen. */
  .tu-turnier-lage .tu-lb{table-layout:fixed;width:100%;white-space:normal}
  /* Die Spaltenbreiten standen hier an den <td> der Datenzeilen — und
     blieben damit wirkungslos: `table-layout:fixed` liest die Breiten
     AUSSCHLIESSLICH aus der ersten Zeile, und das ist der Tabellenkopf.
     Gemessen 28.08.2026 bei 390 px waren alle vier Spalten gleich breit
     (4 × 86 px), die Ergebnisspalte lief 27 px über den Tafelrand hinaus
     („58 Pun…") und dem Namen blieben 58 px. Die Breiten stehen jetzt an
     den <th> — weiter unten im Handy-Abschnitt, damit sie nicht von den
     dortigen Regeln überschrieben werden. */
  .tu-lb-name{overflow-wrap:anywhere}
  /* Der Ergebnisbogen (Modal) bekommt eigene Spaltenmaße: Platz/Vorgabe
     schmal, der Name breit — sonst brach „BÖLCSFÖLDY" mitten im Wort. */
  .tu-turnier-lage .tu-lb-bogen{table-layout:auto}
  .tu-lb-bogen .tu-lb-name{overflow-wrap:normal;word-break:normal;hyphens:auto}
  .tu-lb-bogen .tu-pos{width:30px;padding-left:10px}
  .tu-lb-bogen .tu-spv{width:38px}
  .tu-lb-bogen .tu-erg{width:auto;white-space:nowrap}
  /* „Spielvorgabe" ist in einer 42-px-Spalte nicht unterzubringen — der
     Kopf ragte 37 px in die Nachbarspalte. Auf der Tafel steht dort
     dieselbe Abkürzung wie im Bogen. */
  .tu-lb thead th:nth-child(3){font-size:0}
  .tu-lb thead th:nth-child(3)::after{content:"SPV";font-size:9px;letter-spacing:.08em}
  .tu-lb thead th{font-size:9px;letter-spacing:.08em}
  .tu-wand-bilder{grid-template-columns:1fr 1fr}
  .tu-wand-gross{grid-column:span 2;grid-row:auto}
}

/* ============================================================
   04 · DIE SAISON IN BILDERN — randloses Mosaik, ungleiche Gewichte
   ============================================================ */
.tu-mosaik{background:var(--pine);display:grid;grid-template-columns:repeat(6,1fr);
  grid-auto-flow:dense;gap:8px;padding:8px 0}
.tu-mosaik-bild{margin:0;position:relative;overflow:hidden}
.tu-mosaik-bild img{width:100%;height:100%;object-fit:cover}
.tu-g-gross{grid-column:span 6;height:62svh;min-height:320px}
.tu-g-mittel{grid-column:span 3;height:38svh;min-height:240px}
.tu-g-hoch{grid-column:span 2;height:48svh;min-height:280px}
/* Ein Bild statt Mosaik: ein Band von 44 svh, gedeckelt — hoch genug für
   Wirkung, flach genug, dass die Eclectic in Reichweite bleibt. */
.tu-mosaik-eins{display:block;padding:0}
.tu-g-band{height:clamp(240px,44svh,520px)}
.tu-g-band img{object-position:50% 60%}
.tu-mosaik-bild figcaption{position:absolute;left:16px;bottom:14px;color:#fff;
  text-shadow:0 1px 10px rgba(0,0,0,.6)}
@media (max-width:900px){
  .tu-g-mittel{grid-column:span 3}
  .tu-g-hoch{grid-column:span 3;height:40svh}
}
@media (max-width:560px){
  .tu-mosaik{grid-template-columns:1fr 1fr;gap:6px;padding:6px 0}
  .tu-g-gross{grid-column:span 2;height:44svh}
  .tu-g-mittel,.tu-g-hoch{grid-column:span 1;height:30svh}
}

/* ============================================================
   05 · PAUSE — ein Bild, dann eine Bildschirmhöhe fast nichts
   ============================================================ */
.tu-pause{background:var(--pine);color:#fff}
.tu-pause-bild{width:100%;height:30svh;min-height:200px;object-fit:cover;object-position:50% 60%}
/* Die Ruhefläche vor der Tafel — nach Andreas' Rückmeldungen vom
   18.08.2026 ohne feste Höhe: nur der Satz mit Luft, mehr nicht. */
.tu-pause-raum{display:grid;place-content:center;text-align:center;
  padding:64px var(--inset) 56px;gap:18px}
.tu-pause-raum .t-display{color:#fff;max-width:14ch;margin:0 auto}
.tu-pause-raum .t-klein{color:rgba(255,255,255,.6);max-width:52ch;margin:0 auto}

/* ============================================================
   06 · DIE TAFEL — das Gerät. Randlos, Pine, kein --inset-Kasten.
   ============================================================ */
.tu-tafel{background:var(--pine);color:#fff;padding:var(--luft-s) var(--inset) var(--luft)}
/* Steht die Eclectic-Summe unten, ragt sie über die Sektionsgrenze —
   dann übernimmt die Summenzeile den unteren Abstand selbst. */
.tu-register{display:flex;gap:26px;border-bottom:1px solid rgba(255,255,255,.3);
  overflow-x:auto;scrollbar-width:none}
.tu-register::-webkit-scrollbar{display:none}
.tu-register a{display:inline-block;padding:0 0 14px;color:rgba(255,255,255,.5);
  white-space:nowrap;position:relative;letter-spacing:.2em;transition:color var(--t-schnell)}
.tu-register a::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;
  background:var(--lime);transform:scaleX(0);transform-origin:0 50%;
  transition:transform var(--t-mittel) var(--ease)}
.tu-register a:hover,.tu-register a:focus-visible{color:#fff}
.tu-register a[aria-current="true"]{color:#fff}
.tu-register a[aria-current="true"]::after{transform:scaleX(1)}
.tu-tafel .tu-ansage{padding:8px 0 0}

/* Mit Skript zeigt die Tafel ein Register; ohne liegen alle drei
   untereinander, jedes mit eigener Sprungmarke. */
.js .tu-tafel[data-aktiv="eclectic"] .tu-panel:not([data-tafel="eclectic"]),
.js .tu-tafel[data-aktiv="clubmeister"] .tu-panel:not([data-tafel="clubmeister"]),
.js .tu-tafel[data-aktiv="zahlen"] .tu-panel:not([data-tafel="zahlen"]){display:none}
.tu-panel{padding-top:34px}
html:not(.js) .tu-panel+.tu-panel{margin-top:var(--luft-s);border-top:1px solid rgba(255,255,255,.3)}

.tu-tafel-kopf{display:flex;align-items:baseline;gap:28px;
  border-bottom:2px solid rgba(255,255,255,.4);padding-bottom:12px}
.tu-tafel-kopf h3{color:#fff;letter-spacing:.22em;font-size:12px;margin-right:auto}
.tu-tafel-kopf .t-mikro{color:rgba(255,255,255,.5)}
.tu-tafel-kopf .tu-tafel-diff{color:var(--lime);font-variant-numeric:tabular-nums}

/* Register 1 — die Eclectic-Tabelle, gesetzt wie eine Anzeigetafel. */
.tu-tafel-tabelle{width:100%;border-collapse:collapse}
.tu-tafel-tabelle td{padding:13px 14px;border-bottom:1px solid var(--hairline-dunkel);
  vertical-align:baseline}
.tu-tafel-tabelle td:first-child{padding-left:0}
.tu-tafel-tabelle td:last-child{padding-right:0}
.tu-bahn{font-size:clamp(18px,1.8vw,24px);width:56px}
.tu-tafel-tabelle .tu-par{color:rgba(255,255,255,.45);white-space:nowrap;width:70px}
.tu-score{font-size:clamp(18px,1.8vw,24px);width:64px;white-space:nowrap}
.tu-ass{display:inline-block;vertical-align:baseline;margin-left:8px;color:currentColor}
.tu-tafel-tabelle .tu-name{font-family:'Hanken Grotesk',sans-serif;font-weight:600;
  font-size:17px;color:#fff}
.tu-tafel-tabelle .tu-datum{color:rgba(255,255,255,.6);font-size:15px;font-weight:600;
  white-space:nowrap;width:74px}
.tu-turnier-name{color:rgba(255,255,255,.55)}
.tu-offen{color:rgba(255,255,255,.35);font-weight:300}
/* Wer zweimal auf der Tafel steht, fällt auf: Haarlinie links, keine Farbfläche. */
.tu-tafel-tabelle tr[data-name]{cursor:default}
.tu-tafel-tabelle tr.tu-name-an td:first-child{box-shadow:inset 3px 0 0 var(--lime)}
.tu-cm-name.tu-name-an{box-shadow:inset 0 -1px 0 var(--lime)}
.tu-tafel-notiz{color:rgba(255,255,255,.6);margin-top:18px;max-width:62ch}
.tu-datenzeile{color:rgba(255,255,255,.45);margin-top:22px}

/* Die Summe — Skalenspitze der Seite. Ihre Ziffern stehen zur Hälfte auf
   Pine, zur Hälfte auf Weiß und wechseln an der Kante die Farbe: der eine
   absichtliche Rasterverstoß (translateY(50%) über die Sektionsgrenze). */
/* Die Summe steht als Abschlusszeile IN der Tafel: Label links, die Zahl
   in Lime, Einheit und Differenz daneben. Der frühere „Rasterverstoß" (Ziffern
   halb auf Pine, halb auf Weiß, per translateY über die Sektionsgrenze)
   sah aus wie ein Layoutfehler — halbe Ziffern in Schwarz auf Grün, viel
   Leere links (Andreas, 18.08.2026: „das sieht seltsam aus"). */
.tu-summe-zeile{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;
  margin-top:28px;padding-top:22px;border-top:2px solid rgba(255,255,255,.4)}
.tu-summe-zeile::before{content:"Die Runde, die es nie gab";font-family:'Space Grotesk',sans-serif;
  font-size:11px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:rgba(255,255,255,.5);
  align-self:center}
.tu-summe-block{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;justify-content:flex-end}
.tu-summe{display:flex;align-items:baseline;gap:12px;line-height:.85;margin:0}
.tu-summe span{font-size:clamp(56px,7vw,96px);line-height:.85;color:var(--lime)}
.tu-summe em{font-style:normal;color:rgba(255,255,255,.55)}
.tu-summe-diff{margin:0;color:rgba(255,255,255,.6);white-space:nowrap}

/* Register 2 — die Ehrentafel: 28 Jahrgänge als <details>-Zeilen. */
.tu-cm-vorspann{color:rgba(255,255,255,.6);max-width:70ch;margin:20px 0 6px}
.tu-cm-liste{margin-top:12px}
.tu-cm-jahr{border-bottom:1px solid var(--hairline-dunkel)}
.tu-cm-jahr summary{list-style:none;cursor:pointer;display:grid;
  grid-template-columns:86px minmax(0,1fr) minmax(0,1fr) 30px;gap:20px;align-items:baseline;
  padding:14px 0;transition:background var(--t-schnell)}
.tu-cm-jahr summary::-webkit-details-marker{display:none}
.tu-cm-jahr summary:hover{background:rgba(255,255,255,.04)}
.tu-cm-jahr summary:focus-visible{outline:3px solid var(--lime);outline-offset:-3px}
.tu-cm-j{font-size:clamp(18px,1.8vw,24px)}
.tu-cm-titel{font-family:'Hanken Grotesk',sans-serif;font-weight:600;font-size:16.5px;color:#fff}
.tu-cm-pfeil{justify-self:end;align-self:center;width:9px;height:9px;
  border-right:1.6px solid rgba(255,255,255,.5);border-bottom:1.6px solid rgba(255,255,255,.5);
  transform:rotate(45deg);transition:transform var(--t-mittel) var(--ease)}
.tu-cm-jahr[open] .tu-cm-pfeil{transform:rotate(225deg)}
.tu-cm-kategorien{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 28px;
  padding:4px 0 22px 106px}
.tu-cm-kategorien dt{color:rgba(255,255,255,.45)}
.tu-cm-kategorien dd{margin:6px 0 0;font-family:'Hanken Grotesk',sans-serif;font-weight:600;
  font-size:15.5px;color:#fff}
.tu-rekord{display:grid;grid-template-columns:auto minmax(0,1fr);gap:34px;align-items:end;
  margin-top:44px;border-top:1px solid rgba(255,255,255,.3);padding-top:30px}
.tu-rekord .tu-summe span{color:var(--lime)}
.tu-rekord-liste li{display:flex;gap:14px;align-items:baseline;flex-wrap:wrap;
  padding:7px 0;color:rgba(255,255,255,.72)}
.tu-rekord-liste .t-mikro{color:rgba(255,255,255,.45);min-width:11ch}
.tu-rekord-liste .tu-cm-name{color:#fff;font-weight:600}
.tu-rekord-jahre{font-size:13px;color:rgba(255,255,255,.55);letter-spacing:0}

/* Register 3 — die Kennzahlen als Tafelzeilen. */
.tu-zahlen{margin-top:8px}
.tu-zahlen-zeile{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1.2fr);
  gap:24px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--hairline-dunkel)}
.tu-zahlen-zeile dt{color:rgba(255,255,255,.5)}
.tu-zahlen-zeile dd{margin:0}
.tu-zahlen-zeile dd.t-zahl{font-size:clamp(22px,2.4vw,34px);color:#fff;text-align:right}
.tu-zusatz{color:rgba(255,255,255,.6);text-align:right}

@media (max-width:900px){
  .tu-cm-kategorien{grid-template-columns:1fr 1fr;padding-left:0}
  .tu-rekord{grid-template-columns:1fr;gap:18px}
  .tu-zahlen-zeile{grid-template-columns:minmax(0,1fr) auto;gap:8px 20px}
  .tu-zusatz{grid-column:1/-1;text-align:left}
}
@media (max-width:560px){
  /* Die Tafel bleibt vollständig — Datum und Turnier rutschen unter den
     Namen, Bahn/Par/Score bleiben nebeneinander. Kein overflow-x. */
  .tu-tafel{padding-left:var(--inset);padding-right:var(--inset)}
  .tu-tafel-tabelle,.tu-tafel-tabelle tbody{display:block}
  .tu-tafel-tabelle tr{display:grid;grid-template-columns:40px 52px 56px minmax(0,1fr);
    gap:2px 10px;padding:12px 0;border-bottom:1px solid var(--hairline-dunkel);align-items:baseline}
  .tu-tafel-tabelle td{display:block;padding:0;border-bottom:0;width:auto}
  .tu-tafel-tabelle .tu-name{grid-column:4}
  .tu-tafel-tabelle .tu-datum,.tu-turnier-name{grid-column:4;width:auto}
  .tu-cm-jahr summary{grid-template-columns:56px minmax(0,1fr) 30px;gap:8px 14px}
  .tu-cm-jahr summary .tu-cm-titel:nth-of-type(2){grid-column:2}
  .tu-cm-kategorien{grid-template-columns:1fr}
  .tu-summe-zeile{flex-direction:column;align-items:flex-start;gap:10px}
  .tu-summe-block{justify-content:flex-start}
}

/* Der Einlauf (Effekt 1a): Zeilen fahren hinter einer Kante hervor —
   clip-path, nicht opacity. Staffelung zu fünft über --i (turniere.js). */
.js .tu-tafel-tabelle tr,.js .tu-cm-jahr,.js .tu-zahlen-zeile{clip-path:inset(0)}
.js .tu-tafel.einlauf-bereit .tu-panel .tu-tafel-tabelle tr,
.js .tu-tafel.einlauf-bereit .tu-panel .tu-cm-jahr,
.js .tu-tafel.einlauf-bereit .tu-panel .tu-zahlen-zeile{clip-path:inset(0 0 100% 0)}
.js .tu-tafel.laeuft-ein .tu-panel .tu-tafel-tabelle tr,
.js .tu-tafel.laeuft-ein .tu-panel .tu-cm-jahr,
.js .tu-tafel.laeuft-ein .tu-panel .tu-zahlen-zeile{
  animation:tuZeileEin .25s var(--ease) both;
  animation-delay:calc(var(--i,0)*60ms)}
@keyframes tuZeileEin{from{clip-path:inset(0 0 100% 0);transform:translateY(16px)}
  to{clip-path:inset(-1px 0 0 0);transform:none}}

/* Der Registerwechsel (Effekt 1b): Zeilen kippen einmal um die waagerechte
   Achse — dieselbe Fallblatt-Geste wie die Kopfzeile, in Zeilenauflösung. */
.js .tu-panel.kippt .tu-tafel-tabelle tr,
.js .tu-panel.kippt .tu-cm-jahr,
.js .tu-panel.kippt .tu-zahlen-zeile{
  animation:tuKippe .3s var(--ease) both;
  animation-delay:calc(var(--i,0)*60ms);
  transform-origin:50% 50%;backface-visibility:hidden}
@keyframes tuKippe{from{transform:rotateX(-88deg)}to{transform:rotateX(0)}}
/* Unter 560 px kippen die Zeilen nicht — die Tafel federt als Ganzes nach. */
@media (max-width:560px){
  .js .tu-panel.kippt .tu-tafel-tabelle tr,
  .js .tu-panel.kippt .tu-cm-jahr,
  .js .tu-panel.kippt .tu-zahlen-zeile{animation:none}
  .js .tu-panel.kippt{animation:tuFedert .3s var(--ease)}
}
@keyframes tuFedert{from{transform:translateY(8px)}to{transform:none}}
/* Die ratternden Zwischenstufen der Kopfzeile (rein darstellend). */
.tu-ratter{display:inline-block;white-space:pre}

/* ============================================================
   07 · DER PLATZ IN ZAHLEN — Weiß, bewusst schmal, Marginalie
   ============================================================ */
.tu-streifen{background:var(--weiss);padding:var(--luft) 0 var(--luft)}
/* Die überhängende Eclectic-Summe braucht oben Platz. */
.tu-streifen-lage{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(0,1fr);gap:64px;
  align-items:start}
.tu-streifen-svg{width:100%;height:auto;display:block}
.tu-str{fill:var(--tanne);transform-origin:center bottom;
  transition:fill .28s var(--ease),opacity .28s var(--ease)}
/* Der Zeiger — Strich am Balken, eckige Sprechblase, beides fährt zum
   nächsten Balken mit (Wunsch Andreas 18.08.2026: „klebt ein strich an
   einem balken, die eckige Sprechblase fährt mit, springt zum nächsten").
   Alles Bewegung ist transform; die Bühne bekommt position:relative, die
   Koordinaten rechnet turniere.js aus der viewBox um. */
.tu-str-buehne{position:relative}
.tu-str-buehne.zeigt .tu-str{opacity:.42}
.tu-str-buehne.zeigt .tu-str.aktiv{opacity:1;fill:var(--gruen)}
.tu-streifen-svg:focus-visible{outline:2px solid var(--lime);outline-offset:6px}
.tu-str-lineal{position:absolute;left:0;top:0;width:0;pointer-events:none;
  transition:transform .34s cubic-bezier(.2,.85,.25,1.08),height .34s cubic-bezier(.2,.85,.25,1.08),opacity .2s;
  will-change:transform;opacity:0}
.tu-str-lineal.an{opacity:1}
.tu-str-lineal::before{content:"";position:absolute;left:-1px;top:0;bottom:0;width:2px;
  background:var(--tinte)}
/* Der Anker: ein kleines Quadrat, das auf der Oberkante des Balkens sitzt. */
.tu-str-lineal i{position:absolute;left:-5px;top:-5px;width:10px;height:10px;background:var(--tinte);
  border:2px solid var(--weiss);box-sizing:border-box}
.tu-str-tip{position:absolute;left:0;top:0;pointer-events:none;background:var(--tinte);color:var(--weiss);
  padding:12px 14px 12px;min-width:172px;max-width:230px;display:grid;gap:3px;
  transition:transform .34s cubic-bezier(.2,.85,.25,1.08),opacity .2s;will-change:transform;opacity:0;
  box-shadow:0 10px 30px rgba(0,0,0,.18)}
.tu-str-tip.an{opacity:1}
/* Die eckige Nase — ein gedrehtes Quadrat an der Flanke der Blase, auf
   Höhe der Balkenkante (--nase-y setzt das Skript); links oder rechts, je
   nachdem, auf welcher Seite des Strichs die Blase steht. */
.tu-str-tip::after{content:"";position:absolute;left:-6px;top:var(--nase-y,14px);width:12px;height:12px;
  background:var(--tinte);transform:translateY(-50%) rotate(45deg)}
.tu-str-tip.links::after{left:auto;right:-6px}
.tu-str-tip-kopf{color:rgba(255,255,255,.62);letter-spacing:.16em}
.tu-str-tip-wert{font-size:30px;line-height:1;margin:3px 0 4px;color:var(--lime)}
.tu-str-tip-text{color:rgba(255,255,255,.78);letter-spacing:.08em;line-height:1.55;text-transform:none;font-size:11px}
.tu-str-tip-urteil{color:#fff;letter-spacing:.08em;line-height:1.5;text-transform:none;font-size:11px;
  border-top:1px solid rgba(255,255,255,.18);padding-top:7px;margin-top:4px}
.tu-str-tip-urteil:empty{display:none}
.tu-streifen-tabelle tr.aktiv td{background:rgba(11,65,43,.06)}
.tu-streifen-tabelle tbody tr{transition:background .2s}
@media (prefers-reduced-motion:reduce){
  .tu-str-lineal,.tu-str-tip{transition:opacity .2s}
}
.tu-str-grund{stroke:var(--hairline);stroke-width:1}
.tu-str-nr{font-family:'Space Grotesk',sans-serif;font-size:13px;font-weight:600;
  fill:var(--muted);font-variant-numeric:tabular-nums}
/* Das Echo der Hero-Konturschrift: die Behauptung als Kontur. */
.tu-str-kontur{stroke:var(--gruen);stroke-width:2;stroke-linejoin:miter}
.js .tu-streifen.an .tu-str{animation:tuStr .3s var(--ease) both;
  animation-delay:calc(var(--i,0)*60ms)}
@keyframes tuStr{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.tu-streifen-leer{max-width:56ch;margin-top:14px}
.tu-fund{color:var(--tinte);margin:36px 0 0;max-width:24ch}
.tu-streifen-tabelle-huelle{margin-top:38px;overflow-x:auto}
.tu-streifen-tabelle{width:100%;border-collapse:collapse}
.tu-streifen-tabelle th{text-align:left;color:var(--muted);font-weight:600;
  padding:0 12px 9px;border-bottom:1px solid var(--tinte)}
.tu-streifen-tabelle th:first-child,.tu-streifen-tabelle td:first-child{padding-left:0}
.tu-streifen-tabelle td{padding:8px 12px;border-bottom:1px solid var(--hairline);
  font-size:15px;color:var(--tinte)}
.tu-streifen-tabelle .tu-re{text-align:right}
.tu-balkenspalte{width:34%}
.tu-balken-mess{position:relative;display:block;width:100%;height:5px;background:transparent}
.tu-balken-mess i{display:block;height:100%;background:var(--tanne)}
.tu-balken-mess em{position:absolute;top:-3px;width:2px;height:11px;background:var(--gruen)}
.tu-marginalie{border-left:1px solid var(--hairline);padding-left:28px}
.tu-marginalie p+p{margin-top:12px}
.tu-streifen .tu-datenzeile{color:var(--muted)}
@media (max-width:900px){
  .tu-streifen-lage{grid-template-columns:1fr;gap:34px}
  .tu-marginalie{border-left:0;padding-left:0;border-top:1px solid var(--hairline);padding-top:22px}
}
@media (max-width:560px){
  /* Die Streifen kippen in die Waagerechte: Grafik weg, die Tabelle trägt
     die Balken nach rechts — die Skalenspitze bleibt eine Spitze. */
  .tu-streifen-svg{display:none}
  .tu-streifen-tabelle-huelle{margin-top:8px;overflow:visible}
}

/* ============================================================
   08 · FOX & RABBIT — die hellste Stelle der Seite
   ============================================================ */
.tu-fox{background:var(--mint);padding:var(--luft) 0}
/* Seit dem 23.08.2026 ist das Kapitel nur noch die Verweisstelle auf
   /fox-rabbit: Zitat, Ablauf und Reel-Streifen sind umgezogen. Die alten
   Regeln (.tu-fox-lage, .tu-fox-zitat, .tu-fox-schritte, .tu-fox-reels)
   bleiben stehen, falls der Umzug je zurückgedreht wird. */
.tu-fox-verweis{display:flex;flex-wrap:wrap;align-items:center;gap:18px 32px;
  padding-top:8px;padding-bottom:var(--luft)}
.tu-fox-verweis .tu-fox-fuchs{margin:0;max-width:44ch}

.tu-fox-lage{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:start}
.tu-fox-zitat{border-left:2px solid var(--gruen);padding-left:22px;max-width:52ch}
.tu-fox-zitat cite{display:block;font-style:normal;color:var(--muted);margin-top:12px}
.tu-fox-schritte{list-style:none;margin-top:34px;counter-reset:none}
.tu-fox-schritte li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:18px;
  align-items:baseline;padding:13px 0;border-top:1px solid var(--hairline);max-width:58ch}
.tu-fox-schritte .t-zahl{font-size:24px;color:var(--gruen)}
.tu-fox-fuchs{margin-top:30px;max-width:52ch;border-top:1px solid var(--hairline);padding-top:22px}
.tu-fox-reels{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:start}
.tu-reel{margin:0}
.tu-reel video{width:100%;aspect-ratio:9/16;object-fit:cover;background:var(--tanne)}
.tu-reel figcaption{color:var(--muted);margin-top:8px}
@media (max-width:900px){
  .tu-fox-lage{grid-template-columns:1fr;gap:36px}
  /* Reels sind auf schmalen Fenstern im Vorteil: größer, wischbar. */
  .tu-fox-reels{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;
    padding-bottom:8px;margin-right:calc(var(--inset)*-1);padding-right:var(--inset)}
  .tu-reel{flex:0 0 min(72vw,300px);scroll-snap-align:start}
}

/* ============================================================
   09 · BEDINGUNGEN UND UNTERLAGEN — Weiß, Fließtext + Hochformat
   ============================================================ */
.tu-bedingungen{background:var(--weiss);padding:var(--luft) 0}
.tu-bed-lage{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:64px;
  align-items:stretch}
.tu-bed-text h2{color:var(--tinte);max-width:14ch}
.tu-bed-punkte{margin-top:38px}
.tu-bed-punkte li{padding:14px 0;border-top:1px solid var(--hairline);max-width:62ch}
.tu-bed-bild{margin:0}
.tu-bed-bild img{width:100%;height:100%;object-fit:cover;border-radius:var(--r-flaeche)}
.tu-dokumente{margin-top:var(--luft-s);border-top:1px solid var(--tinte)}
.tu-dokumente li{border-bottom:1px solid var(--hairline)}
.tu-dokumente a{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:24px;
  align-items:baseline;padding:16px 0;color:var(--tinte);
  transition:padding-left var(--t-mittel) var(--ease)}
.tu-dokumente a:hover,.tu-dokumente a:focus-visible{padding-left:12px;color:var(--gruen)}
.tu-dok-name{font-family:'Hanken Grotesk',sans-serif;font-weight:600;font-size:16.5px}
.tu-dok-meta{color:var(--muted);white-space:nowrap}
.tu-dok-pfeil{font-family:'Space Grotesk',sans-serif;transition:transform var(--t-mittel) var(--ease)}
.tu-dokumente a:hover .tu-dok-pfeil{transform:translate(3px,-2px)}
@media (max-width:900px){
  .tu-bed-lage{grid-template-columns:1fr;gap:30px}
  .tu-bed-bild{max-height:52svh;overflow:hidden}
  .tu-dokumente a{grid-template-columns:minmax(0,1fr) auto;gap:8px 18px}
  .tu-dok-meta{grid-column:1;grid-row:2}
}

/* ============================================================
   10 · DER SPIELAUSSCHUSS — typografische Plakette, kein Bild
   ============================================================ */
.tu-ausschuss{background:var(--tanne);color:#fff;padding:var(--luft) var(--inset)}
.tu-ausschuss-titel{color:var(--lime);letter-spacing:.22em}
.tu-ausschuss-liste{max-width:860px;margin:26px auto 0}
.tu-ausschuss-liste li{padding:18px 0;border-bottom:1px solid var(--hairline-dunkel)}
.tu-ausschuss-name{display:block;font-family:'Space Grotesk',sans-serif;font-weight:700;
  text-transform:uppercase;letter-spacing:-.03em;line-height:1;
  font-size:clamp(24px,3.6vw,46px);color:#fff}
.tu-ausschuss-liste .t-mikro{display:block;color:rgba(255,255,255,.5);margin-top:8px}
.tu-ausschuss-text{color:rgba(255,255,255,.65);max-width:64ch;margin:30px auto 0}

/* ============================================================
   11 · ABSCHLUSS — wie der erste Bildschirm: Spitze, Fläche, Aussage
   ============================================================ */
.tu-cta{position:relative;background:var(--tanne);color:#fff;overflow:hidden;
  padding:calc(var(--luft)*1.4) var(--inset);text-align:center}
/* Das zweite, leisere Echo: die Kapitelzahl der Eclectic als Wasserzeichen. */
.tu-cta-wasserzeichen{position:absolute;right:-.06em;bottom:-.18em;
  font-size:clamp(200px,34vw,520px);line-height:.8;color:transparent;
  -webkit-text-stroke:2px rgba(255,255,255,.07);pointer-events:none;user-select:none}
.tu-cta-inhalt{position:relative;z-index:1;max-width:900px;margin:0 auto}
.tu-cta h2{font-family:'Space Grotesk',sans-serif;font-weight:700;text-transform:uppercase;
  letter-spacing:-.045em;line-height:.9;font-size:clamp(40px,6.4vw,96px);color:#fff}
.tu-cta-termin{color:rgba(255,255,255,.78);margin-top:22px}
.tu-cta-aktion{display:flex;gap:14px;justify-content:center;align-items:center;
  flex-wrap:wrap;margin-top:30px}
.tu-cta-voll{color:rgba(255,255,255,.72)}
.tu-cta-voll a{color:var(--lime)}
@media (max-width:560px){
  .tu-cta-aktion .btn{flex:1 1 100%;justify-content:center}
}

/* ============================================================
   BEWEGUNG — Rücknahme
   seite.css nimmt bei prefers-reduced-motion bereits jede Dauer auf
   .001ms zurück; hier stehen nur die Zustände, die dann sofort
   „fertig" sein müssen. Die Seite verliert nichts außer Zeit.
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  .js .tu-tafel.einlauf-bereit .tu-panel .tu-tafel-tabelle tr,
  .js .tu-tafel.einlauf-bereit .tu-panel .tu-cm-jahr,
  .js .tu-tafel.einlauf-bereit .tu-panel .tu-zahlen-zeile{clip-path:inset(0)}
  .js .tu-streifen .tu-str{transform:none}
}

/* Videos in der Bildwand (Handy-Uploads): gleiche Fläche wie die Bilder. */
.tu-wand-bild video{width:100%;height:100%;min-height:120px;object-fit:cover;display:block;background:#000}

/* Bildwand ohne Siegerfoto: direkt offen, erstes Element groß. */
.tu-wand-solo{margin-top:0}

/* Die Bildwand im Brett: gleiche Innenkante wie die Tafelzeilen; ohne
   Siegerfoto nimmt das Brett die ganze Breite. */
.tu-brett-bilder{padding:14px 26px 20px;margin-top:0;grid-auto-rows:150px}
.tu-brett-bilder .tu-wand-bild img,.tu-brett-bilder .tu-wand-bild video{min-height:0}
.tu-brett-bilder+.tu-brett-bilder{padding-top:0}
button+.tu-brett-bilder,.tu-brett-bilder[hidden]+.tu-lb-mehr{border-bottom:0}
.tu-ohne-sieger .tu-turnier-lage{grid-template-columns:1fr}


/* Die zehn Infofelder aus PC CADDIE (Spielleitung, Verpflegung,
   Siegerehrung). Sie stehen in der Aufklappzeile des Kalenders und sind
   das, was das Sekretariat ohnehin pflegt — nur bisher an einem anderen
   Ort. Zweispaltig ab 700 px, damit acht Angaben die Zeile nicht zu einem
   Absatz machen. */
.tu-infos{margin:10px 0 0;display:grid;gap:6px 26px}
@media(min-width:700px){.tu-infos{grid-template-columns:1fr 1fr}}
.tu-info dt{color:rgba(255,255,255,.5);margin-bottom:1px}
.tu-info dd{margin:0;color:rgba(255,255,255,.82)}

/* ============================================================
   DAS TURNIERBLATT — Register im aufgeklappten Turnier
   Dieselbe Machart wie die Registerzeile der Tafel (.tu-register):
   Text auf einer Linie, das aktive Register traegt die Kante. Kein
   Kasten, keine Schatten — die Zeile darunter ist schon Flaeche genug.
   ============================================================ */
.tu-blatt-reg{display:none}
.js .tu-blatt-reg{display:flex;flex-wrap:wrap;gap:2px;margin:14px 0 0;
  border-bottom:1px solid var(--hairline-dunkel)}
.tu-blatt-reg button{background:none;border:0;cursor:pointer;font-family:inherit;
  padding:9px 14px;color:rgba(255,255,255,.55);border-bottom:2px solid transparent;
  transition:color var(--t-schnell),border-color var(--t-schnell)}
.tu-blatt-reg button:hover,.tu-blatt-reg button:focus-visible{color:#fff}
.tu-blatt-reg button[aria-current="true"]{color:var(--lime);border-bottom-color:var(--lime)}
.tu-blatt{margin-top:12px;min-height:1px}
.tu-blatt[aria-busy="true"]{opacity:.5}
.tu-blatt-laedt,.tu-blatt-leer{margin:12px 0;color:rgba(255,255,255,.55)}
.tu-blatt-leer{font-family:'Hanken Grotesk',sans-serif;font-size:14px;line-height:1.55;max-width:66ch}

/* Die Kopfzahlen der Detailansicht — die standardisierte Ausschreibung.
   Zwei bis vier Spalten, damit zwölf Angaben nicht zwölf Zeilen sind. */
.tu-blatt-zahlen{margin:0;display:grid;gap:12px 26px;
  grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.tu-blatt-zahlen dt{color:rgba(255,255,255,.5);margin-bottom:2px}
.tu-blatt-zahlen dd{margin:0;color:#fff;font-family:'Hanken Grotesk',sans-serif;
  font-size:15px;line-height:1.4}
.tu-blatt-infos{margin:20px 0 0;display:grid;gap:12px 26px;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  padding-top:16px;border-top:1px solid var(--hairline-dunkel)}
.tu-blatt-infos dt{color:rgba(255,255,255,.5);margin-bottom:2px}
.tu-blatt-infos dd{margin:0;color:rgba(255,255,255,.82);
  font-family:'Hanken Grotesk',sans-serif;font-size:14px;line-height:1.55}
.tu-blatt-frei{margin:16px 0 0;color:var(--lime)}
.tu-blatt-links{display:flex;flex-wrap:wrap;gap:12px 22px;margin:18px 0 0;align-items:baseline}
.tu-blatt-links a{color:var(--lime);text-decoration:none}
.tu-blatt-links a:hover,.tu-blatt-links a:focus-visible{text-decoration:underline;text-underline-offset:4px}

/* Die Tuer: Meldeliste und Startliste zeigt PC CADDIE nur Angemeldeten.
   Das ist keine Stoerung, sondern die Regel — deshalb kein Fehlerrot,
   sondern der Weg hinein. */
.tu-blatt-tuer{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;margin:8px 0 4px;
  padding:16px 18px;border-radius:var(--r-karte);background:rgba(255,255,255,.05);
  box-shadow:inset 3px 0 0 var(--lime)}
.tu-blatt-tuer p{margin:0;flex:1 1 280px;font-family:'Hanken Grotesk',sans-serif;
  font-size:14px;line-height:1.55;color:rgba(255,255,255,.82)}

/* Melde- und Startliste. Eine Zeile je Person: Name, Heimatclub,
   Stammvorgabe rechtsbuendig — die drei Angaben, die auf einer
   Meldeliste stehen. Die eigene Zeile traegt die Kante. */
.tu-blatt-stand{margin:0 0 10px;color:rgba(255,255,255,.5)}
.tu-blatt-wl{margin-top:22px;padding-top:14px;border-top:1px solid var(--hairline-dunkel)}
/* Zwei Spalten, aber SPALTENWEISE gefüllt (columns, nicht grid): PC CADDIE
   liefert die Meldeliste alphabetisch, und in einem zweispaltigen Raster
   liest sie sich zeilenweise — A, B, A, B. Wer einen Namen sucht, sucht
   ihn dann zweimal. Mit column-count läuft A–M links herunter und N–Z
   rechts, so wie auf einem Aushang. */
.tu-melde{list-style:none;margin:0;padding:0}
@media(min-width:820px){.tu-melde{columns:2;column-gap:26px}}
.tu-melde li{break-inside:avoid}
.tu-melde li,.tu-flight-spieler li{display:flex;align-items:baseline;gap:10px;
  padding:7px 10px;border-radius:6px;font-family:'Hanken Grotesk',sans-serif;font-size:14px;
  color:rgba(255,255,255,.82)}
.tu-melde li:nth-child(odd){background:rgba(255,255,255,.035)}
.tu-melde li.tu-ich,.tu-flight-spieler li.tu-ich{background:rgba(204,255,0,.14);
  box-shadow:inset 2px 0 0 var(--lime);color:#fff}
.tu-sp-name{flex:1 1 auto;min-width:0}
.tu-sp-club{flex:none;color:rgba(255,255,255,.45);font-size:12.5px}
.tu-sp-stv{flex:none;min-width:4ch;text-align:right;color:rgba(255,255,255,.6)}
.tu-sp-ich{flex:none;color:var(--lime)}

/* Die Flights der Startliste — Startzeit als Anker links, die bis zu
   vier Namen daneben. */
.tu-flights{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.tu-flight{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:4px 14px;
  align-items:baseline;padding:10px 0;border-top:1px solid var(--hairline-dunkel)}
.tu-flight:first-child{border-top:0}
.tu-flight-zeit{font-size:17px;color:#fff}
.tu-flight-tee{color:rgba(255,255,255,.45)}
.tu-flight-spieler{list-style:none;margin:0;padding:0;display:grid;gap:1px}
@media(max-width:560px){
  .tu-flight{grid-template-columns:auto 1fr}
  .tu-flight-spieler{grid-column:1/-1}
}

/* ============ Anmeldung in der Zeile ============
   Der Weg fuehrte bis zum 18.08.2026 auf pccaddie.net. Jetzt faehrt die
   Tabelle auseinander und das Formular steht da, wo das Turnier steht —
   in der Formularsprache der Vertragsstrecke (gerahmte Kaesten, 9px
   Radius), aber auf dunklem Grund. */
.tu-anmeldung > td{padding:0 14px 22px;border-bottom:1px solid var(--hairline-dunkel)}
.tu-anm-kopf{color:rgba(255,255,255,.72);margin:0 0 14px}
.tu-anm-kopf strong{color:#fff;font-weight:600}
.tu-anm-felder{display:grid;gap:14px 20px;grid-template-columns:1fr;max-width:760px}
@media(min-width:640px){.tu-anm-felder{grid-template-columns:1fr 1fr}}
.tu-anm-breit{grid-column:1/-1}
.tu-anm-feld{display:flex;flex-direction:column;gap:6px}
.tu-anm-feld label{font-family:'Space Grotesk',sans-serif;font-size:11px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.62)}
.tu-anm-opt{letter-spacing:.04em;text-transform:none;font-weight:400;color:rgba(255,255,255,.42)}
.tu-anm-feld input,.tu-anm-feld select{font-family:'Hanken Grotesk',sans-serif;font-size:16px;
  color:#fff;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.18);
  border-bottom:2px solid rgba(255,255,255,.3);padding:12px 14px;border-radius:9px;width:100%}
.tu-anm-feld input:hover,.tu-anm-feld select:hover{border-bottom-color:var(--lime)}
.tu-anm-feld input:focus,.tu-anm-feld select:focus{outline:none;border-bottom-color:var(--lime);
  box-shadow:0 0 0 3px rgba(204,255,0,.28)}
/* Angemeldet steht statt der zwei Felder nur noch die Quittung. */
.tu-anm-wer{display:flex;align-items:center;gap:9px;margin:0;
  font-family:'Hanken Grotesk',sans-serif;font-size:14px;color:rgba(255,255,255,.72)}
.tu-anm-wer b{color:#fff;font-weight:700}
.tu-anm-fuss{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;margin-top:18px;max-width:760px}
.tu-anm-hinweis{flex:1 1 320px;margin:0;color:rgba(255,255,255,.5);line-height:1.5}
.tu-anm-hinweis a{color:rgba(255,255,255,.75)}
.tu-anm-meldung{margin:16px 0 0;padding:12px 14px;border-radius:9px;max-width:760px;
  background:rgba(204,255,0,.14);border:1px solid rgba(204,255,0,.4);color:#fff}
.tu-anm-meldung[data-art="fehler"]{background:rgba(255,90,77,.14);border-color:rgba(255,90,77,.45)}
.tu-anm-senden[disabled],.tu-anm-abmelden[disabled]{opacity:.55;cursor:progress}
/* Die Absage steht daneben, nicht darunter — und sie sieht aus wie das,
   was sie ist: der leisere der beiden Wege. */
.tu-anm-abmelden{background:none;border:0;padding:0;color:rgba(255,255,255,.62);
  text-decoration:underline;text-underline-offset:4px;cursor:pointer;font-family:inherit}
.tu-anm-abmelden:hover,.tu-anm-abmelden:focus-visible{color:#fff}

/* Wertungsklasse als Zwischenzeile im Leaderboard */
.tu-lb-klasse td{padding:14px 26px 6px;color:rgba(255,255,255,.5);border:0;
  letter-spacing:.14em;text-transform:uppercase}
.tu-lb-klasse:first-child td{padding-top:2px}

/* Legende der achtzehn Streifen: Balken = Messung, Linie = Setzung. */
.tu-streifen-legende{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:8px;
  color:var(--sekundaer);max-width:74ch}
.tu-streifen-legende li{display:flex;align-items:baseline;gap:10px;line-height:1.5;
  letter-spacing:.04em;text-transform:none}
.tu-streifen-legende em{font-style:normal;color:var(--tinte);font-weight:600}
.tu-lg-balken{flex:none;width:14px;height:14px;background:var(--tanne);border-radius:2px;
  transform:translateY(2px)}
.tu-lg-linie{flex:none;width:14px;height:14px;position:relative;transform:translateY(2px)}
.tu-lg-linie::before{content:"";position:absolute;left:0;right:0;top:6px;height:2px;
  background:var(--gruen)}

/* ============ Archiv: eine Zeile je aelterem Turnier ============
   Offen steht nur das juengste Brett. Alles davor ist eine ruhige Zeile,
   die sich auf Klick zur vollen Tafel oeffnet — mit Bildern, Wertungen und
   allem, was das Brett sonst zeigt. */
.tu-archiv-eintrag{border-bottom:1px solid var(--hairline-dunkel);background:var(--pine)}
.tu-archiv-eintrag summary{display:grid;grid-template-columns:auto 1fr auto;gap:18px;
  align-items:center;padding:18px 26px;cursor:pointer;list-style:none;
  transition:background var(--t-schnell) ease-out}
.tu-archiv-eintrag summary::-webkit-details-marker{display:none}
.tu-archiv-eintrag summary:hover,.tu-archiv-eintrag summary:focus-visible{background:rgba(255,255,255,.05)}
.tu-ae-datum{color:rgba(255,255,255,.55);font-size:15px;white-space:nowrap;
  font-variant-numeric:tabular-nums}
.tu-ae-text{min-width:0}
.tu-ae-name{display:block;font-family:'Space Grotesk',sans-serif;font-weight:700;
  font-size:clamp(15px,1.5vw,19px);letter-spacing:.04em;text-transform:uppercase;color:#fff;
  overflow-wrap:anywhere}
.tu-ae-form{display:block;color:rgba(255,255,255,.5);margin-top:3px}
.tu-ae-mehr{color:var(--lime);white-space:nowrap;display:inline-flex;align-items:center;gap:8px}
.tu-ae-mehr::after{content:"";width:8px;height:8px;border-right:1.6px solid currentColor;
  border-bottom:1.6px solid currentColor;transform:rotate(45deg) translateY(-2px);
  transition:transform .18s var(--ease)}
.tu-archiv-eintrag[open] .tu-ae-mehr::after{transform:rotate(225deg) translateY(-2px)}
.tu-archiv-eintrag[open] .tu-ae-mehr{color:#fff}
/* Das aufgeklappte Brett sitzt eingerueckt unter seiner Zeile. */
.tu-turnier-klein{padding-top:0}
@media(min-width:900px){.tu-turnier-klein{padding-left:26px;padding-right:26px}}

/* ============ Schmale Schirme ============
   Gemessen am 18.08.2026 bei 390 px: Die Seite scrollte 566 px breit.
   Der Hauptgrund waren die Fallblatt-Kacheln — sie haben eine feste
   Breite in em, und ein Wort wie VELDENSTEINER ist dreizehn davon.
   Auf dem Handy werden sie kleiner, und im Notfall darf auch ein Wort
   umbrechen: eine abgeschnittene Tafel ist schlimmer als ein getrenntes
   Wort. */
@media(max-width:700px){
  .tu-flap,.tu-flap-luft{font-size:clamp(11px,3.2vw,17px)}
  /* Ein Wort darf im Notfall brechen — ohne max-width bleibt sein
     Wunschmass max-content, und flex-wrap allein hilft dann nichts. */
  .tu-flap-wort{flex-wrap:wrap;max-width:100%}
  /* Das Leaderboard bekommt feste Spalten: Sonst bestimmt der laengste
     Name die Tabellenbreite und schiebt die Seite auf. */
  .tu-lb-spieler{font-size:15px;letter-spacing:.02em;overflow-wrap:anywhere}
  .tu-lb-club{overflow-wrap:anywhere}
  .tu-spv{font-size:14px}
  .tu-lb thead th{padding:12px 8px 8px}
  .tu-lb td{padding:11px 8px}
  .tu-brett{margin-left:0;margin-right:0}
  .tu-lb .tu-pos{padding-left:14px;width:40px;font-size:19px}
  .tu-lb td:last-child,.tu-lb thead th:last-child{padding-right:14px}
  .tu-lb thead th:first-child{padding-left:14px}
  .tu-wertungsband,.tu-band-w{padding-left:14px;padding-right:14px;letter-spacing:.14em}
  .tu-lb-klasse td{padding-left:14px;padding-right:14px}
  .tu-lb-mehr,.tu-sonder li{padding-left:14px;padding-right:14px}
  .tu-brett-bild{padding:12px 14px 16px}
  .tu-rail-zahlen{padding:18px 14px 14px}
  .tu-rz dd b{font-size:28px}
  .tu-rz-gross dd b{font-size:44px}
  .tu-archiv-eintrag summary{padding:14px;gap:12px;grid-template-columns:auto 1fr}
  .tu-ae-mehr{grid-column:2;justify-self:start}
  .tu-turnier-klein{padding-left:0;padding-right:0}
  /* Die Steuerleiste des Kalenders darf umbrechen statt hinauszuragen. */
  .tu-steuer{flex-wrap:wrap;gap:10px}
  .tu-steuer-filter,.tu-steuer-monate{flex-wrap:wrap}
  /* Die Ziffernkacheln der Ergebnisse: schmaler, damit die Spalte passt. */
  .tu-ziffern i{width:24px;height:32px;font-size:17px}
  .tu-anm-felder{grid-template-columns:1fr}
  /* Die festen Spaltenbreiten des Leaderboards — am <th>, nicht am <td>,
     sonst greifen sie unter `table-layout:fixed` nicht (siehe oben).
     Der Ergebnisbogen bleibt aussen vor, der rechnet mit `auto`. */
  .tu-lb:not(.tu-lb-bogen) thead th:nth-child(1){width:66px}
  .tu-lb:not(.tu-lb-bogen) thead th:nth-child(3){width:104px}
  .tu-lb:not(.tu-lb-bogen) thead th:nth-child(4){width:136px}
  /* Kacheln und Einheit nebeneinander sind breiter als die Spalte: Am
     Handy rutscht „Punkte" unter die Ziffern, rechtsbündig wie sie. */
  .tu-lb:not(.tu-lb-bogen) .tu-erg{white-space:normal}
  .tu-erg-lage{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:2px 6px}
  .tu-erg-text{flex:0 0 100%;text-align:right;font-size:12.5px}
}
/* Unter 560 px wird es eng: Platz und Vorgabe geben ab, was sie können,
   damit der Name Luft behält (146 px statt 58 px, gemessen bei 390 px). */
@media(max-width:560px){
  .tu-lb:not(.tu-lb-bogen) thead th:nth-child(1){width:58px;padding-right:3px}
  .tu-lb:not(.tu-lb-bogen) thead th:nth-child(3){width:42px}
  .tu-lb:not(.tu-lb-bogen) thead th:nth-child(4){width:98px}
  .tu-ziffern{gap:3px}
  .tu-ziffern i{width:23px}
}

/* Zwischen 561 und 700 px bleibt das Leaderboard eine echte Tabelle —
   dort verhindern feste Spalten, dass der laengste Name die Breite
   bestimmt. Darunter macht der Bestand daraus eine scrollende Box. */
@media(min-width:561px) and (max-width:700px){
  .tu-lb{table-layout:fixed}
}
/* Das Wertungsband ist ein Flex mit zwei Enden: Ohne Umbruch bestimmt der
   laengste Klassenname („KLASSE A NETTO HCP BIS 17,2") die Brettbreite und
   schiebt bei 390 px die ganze Seite auf. */
.tu-wertungsband,.tu-band-w{flex-wrap:wrap;gap:4px 18px}
@media(max-width:700px){
  .tu-wertungsband,.tu-band-w{font-size:10px;letter-spacing:.1em}
}
/* KEINE seitwaerts scrollende Tabelle: Eine Mindestbreite plus
   overflow-x ist ein Pflaster, kein Layout — der Inhalt war rechts
   abgeschnitten (Andreas, 18.08.2026). Die Hausregel lautet Karten statt
   breiter Tabellen; das Kartenlayout gab es schon, es begann nur erst bei
   560 px. Jetzt gilt es bis 900 px, also fuer jedes Handy und jedes
   Tablet im Hochformat. */

/* Damit die scrollende Leaderboard-Box ihren Rahmen nicht sprengt. */
@media(max-width:560px){
  .tu-turnier-lage .tu-lb{max-width:100%}
  .tu-brett{overflow:hidden}
}

/* Sponsorenlogo in der Turnierzeile — so gross wie eine Zeile Text, nie
   groesser: Es gehoert zum Turnier, nicht ueber das Turnier. Ausgeliefert
   aus unserem eigenen Bestand (api/sponsor.php), damit der Browser nicht
   mit pccaddie.net spricht. */
.tu-sponsor{display:block;height:26px;width:auto;max-width:150px;object-fit:contain;
  margin-top:8px;opacity:.9;background:rgba(255,255,255,.9);border-radius:4px;padding:3px 6px}
@media(max-width:900px){.tu-sponsor{height:20px;max-width:110px;margin-top:6px}}
