/* =========================================================
   TSV Trainingszeiten (Plugin)
   Farben aus den Tokens der Gestaltungsschicht (Zusatz-CSS), mit Rückfallwerten.
   Kontraste auf Weiß: Text #16211A, sekundär #3A4A3F (Lc 91,8), Links Tiefgrün #0A6B1D (Lc 82,5, nur ab 17 px).
   ========================================================= */
.tsv-tz-einbau{display:block}
.tsv-tz,.tsv-tz-orte{
  --tz-text:var(--tsv-text,#16211A);--tz-sek:var(--tsv-sekundaer,#3A4A3F);--tz-linie:var(--tsv-linie,#DDE8E0);
  --tz-tint:var(--tsv-tint,#EEF8F0);--tz-gruen:var(--tsv-gruen,#129D2D);--tz-tief:var(--tsv-tiefgruen,#0A6B1D);
  --tz-tief-h:var(--tsv-tiefgruen-hover,#085C18);--tz-nacht:var(--tsv-nachtblau,#07075E);
  --tz-titel:"Barlow Condensed","Arial Narrow",sans-serif;
  display:block;color:var(--tz-text);font-size:17px;line-height:1.55
}

/* Symbole als Masken (einfarbig, übernehmen die Textfarbe) */
.tsv-tz-ic{display:inline-block;flex:none;width:22px;height:22px;background-color:currentColor;-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat}
.tsv-tz-ic-uhr{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3.2 2'/%3E%3C/svg%3E")}
.tsv-tz-ic-kalender{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5' width='17' height='15.5' rx='2.5'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4M8 14h.01M12 14h.01M16 14h.01M8 17h.01M12 17h.01'/%3E%3C/svg%3E")}
.tsv-tz-ic-kalender-plus{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5' width='17' height='15.5' rx='2.5'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4M12 13v5M9.5 15.5h5'/%3E%3C/svg%3E")}
.tsv-tz-ic-kopieren{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8.5' y='8.5' width='12' height='12' rx='2.5'/%3E%3Cpath d='M15.5 8.5V6a2.5 2.5 0 0 0-2.5-2.5H6A2.5 2.5 0 0 0 3.5 6v7A2.5 2.5 0 0 0 6 15.5h2.5'/%3E%3C/svg%3E")}
.tsv-tz-ic-ort{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.1-7-11.5a7 7 0 0 1 14 0C19 14.9 12 21 12 21z'/%3E%3Ccircle cx='12' cy='9.5' r='2.6'/%3E%3C/svg%3E")}
.tsv-tz-ic-route{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6.5 9 4l6 2.5L21 4v13.5L15 20l-6-2.5L3 20z'/%3E%3Cpath d='M9 4v13.5M15 6.5V20'/%3E%3C/svg%3E")}
.tsv-tz-ic-sync{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 12a8 8 0 0 1-14.3 4.9M4 12a8 8 0 0 1 14.3-4.9'/%3E%3Cpath d='M18.6 3v4.3h-4.3M5.4 21v-4.3h4.3'/%3E%3C/svg%3E")}
.tsv-tz-kopieren.ist-kopiert .tsv-tz-ic-kopieren{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E")}

/* Knöpfe: gleiche Form wie auf der übrigen Website. Niedrige Spezifität, damit die Regeln der Gestaltungsschicht gewinnen. */
:where(.tsv-tz,.tsv-tz-orte) .tsv-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 24px;border-radius:999px;border:2px solid transparent;font:inherit;font-weight:700;font-size:16.5px;line-height:1.2;text-decoration:none;cursor:pointer}
:where(.tsv-tz,.tsv-tz-orte) .tsv-btn-blau{background:var(--tz-tief);color:#fff}
:where(.tsv-tz,.tsv-tz-orte) .tsv-btn-outline-blau{background:#fff;border-color:var(--tz-tief);color:var(--tz-tief)}
.tsv-tz .tsv-btn,.tsv-tz-orte .tsv-btn{gap:10px}
.tsv-tz .tsv-btn[hidden],.tsv-tz-orte .tsv-btn[hidden]{display:none}
.tsv-tz-kopieren.ist-kopiert{background:var(--tz-tief);border-color:var(--tz-tief);color:#fff}
.tsv-tz-kopie{display:inline-flex}
.tsv-tz-status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Kopfzeile über der Tabelle */
.tsv-tz-leiste{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px 24px;margin:0 0 22px}
.tsv-tz-stand{display:flex;align-items:center;gap:14px;margin:0;font-size:16px;line-height:1.4;color:var(--tz-sek)}
.tsv-tz-stand>.tsv-tz-ic{width:28px;height:28px;color:var(--tz-tief)}
.tsv-tz-stand strong{font-size:19px;color:var(--tz-nacht)}
.tsv-tz-aktionen{display:flex;flex-wrap:wrap;gap:12px}

/* Wochenplan */
.tsv-tz-rahmen{border:1px solid var(--tz-linie);border-radius:22px;overflow:hidden;background:#fff}
.tsv-tz .tsv-tz-tabelle{width:100%;margin:0;border:0;border-collapse:collapse;font-size:17px;line-height:1.45;background:none}
.tsv-tz .tsv-tz-tabelle th,.tsv-tz .tsv-tz-tabelle td{padding:14px 20px;border:0;text-align:left;vertical-align:top;background:none}
.tsv-tz .tsv-tz-tabelle thead th{padding-top:12px;padding-bottom:12px;background:var(--tz-tint);font-size:14px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--tz-sek)}
.tsv-tz .tsv-tz-tabelle tbody+tbody tr.tsv-tz-erste td{border-top:1px solid var(--tz-linie)}
.tsv-tz .tsv-tz-tabelle tr:not(.tsv-tz-erste) td{padding-top:2px}
.tsv-tz .tsv-tz-tabelle tbody tr:last-child td{padding-bottom:16px}
.tsv-tz-sp-tag{width:15%}
.tsv-tz-sp-zeit{width:19%;white-space:nowrap;font-weight:700;font-variant-numeric:tabular-nums}
.tsv-tz-sp-gruppe{width:28%;font-weight:700;color:var(--tz-nacht)}
.tsv-tz-tagname{font-family:var(--tz-titel);font-weight:800;font-size:22px;line-height:1.15;letter-spacing:.01em;text-transform:uppercase;color:var(--tz-nacht)}
.tsv-tz-klein{display:block;margin-top:2px;font-size:15px;font-weight:400;line-height:1.4;color:var(--tz-sek)}
.tsv-tz a:not(.tsv-btn):not(.tsv-tz-chip),.tsv-tz-orte a:not(.tsv-btn){color:var(--tz-tief);font-weight:700;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:2px}
.tsv-tz a:not(.tsv-btn):not(.tsv-tz-chip):hover,.tsv-tz-orte a:not(.tsv-btn):hover{color:var(--tz-tief-h);text-decoration-thickness:3px}
.tsv-tz-hinweis{margin:16px 0 0;font-size:17px;color:var(--tz-sek)}
.tsv-tz-leer{margin:0;padding:22px 24px;border-radius:18px;background:var(--tz-tint);color:var(--tz-text)}

/* Kalender je Gruppe und Abo */
.tsv-tz-kalender{margin-top:32px;padding:28px 30px;border-radius:22px;background:var(--tz-tint)}
.tsv-tz .tsv-tz-h3,.tsv-tz-orte .tsv-tz-h3{margin:0 0 6px;font-family:var(--tz-titel);font-weight:800;font-size:clamp(24px,2.4vw,30px);line-height:1.05;letter-spacing:.005em;text-transform:uppercase;color:var(--tz-nacht)}
.tsv-tz-text{max-width:62ch;margin:0 0 18px;color:var(--tz-text)}
.tsv-tz-chips{display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none}
.tsv-tz-chips li{margin:0;padding:0}
.tsv-tz-chip{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:8px 18px 8px 14px;border:2px solid var(--tz-tief);border-radius:999px;background:#fff;color:var(--tz-tief);font-weight:700;font-size:17px;line-height:1.2;text-decoration:none;transition:background-color 160ms ease,color 160ms ease,border-color 160ms ease}
.tsv-tz-chip-zahl{font-size:15px;font-weight:400;color:var(--tz-sek);transition:color 160ms ease}
@media (hover:hover) and (pointer:fine){
  .tsv-tz-chip:hover{background:var(--tz-tief-h);border-color:var(--tz-tief-h);color:#fff}
  .tsv-tz-chip:hover .tsv-tz-chip-zahl{color:#fff}
  :where(.tsv-tz,.tsv-tz-orte) .tsv-btn-blau:hover{background:var(--tz-tief-h);color:#fff}
  :where(.tsv-tz,.tsv-tz-orte) .tsv-btn-outline-blau:hover{background:var(--tz-tief);color:#fff}
}
.tsv-tz-abo{display:flex;align-items:flex-start;gap:12px;margin:22px 0 0;font-size:17px;line-height:1.55;color:var(--tz-text)}
.tsv-tz-abo>.tsv-tz-ic{margin-top:2px;color:var(--tz-tief)}
.tsv-tz-chips+.tsv-tz-abo{padding-top:20px;border-top:1px solid var(--tz-linie)}

/* Trainingsorte */
.tsv-tz-orte{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:22px}
.tsv-tz-orte-eins{grid-template-columns:minmax(0,760px)}
.tsv-tz-ort{display:flex;flex-direction:column;margin:0;padding:28px;border:1px solid var(--tz-linie);border-radius:24px;background:#fff;box-shadow:0 24px 48px -34px rgba(6,58,18,.5);scroll-margin-top:130px}
.tsv-tz-ort:focus{outline:none}
.tsv-tz-ort:target{outline:3px solid var(--tz-gruen);outline-offset:4px}
.tsv-tz-ort-kopf{display:flex;align-items:center;gap:14px;margin-bottom:12px}
.tsv-tz-ort-ic{display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:50%;background:var(--tz-tint);color:var(--tz-tief)}
.tsv-tz-ort-ic .tsv-tz-ic{width:24px;height:24px}
.tsv-tz-orte .tsv-tz-h3{margin:0}
.tsv-tz-adresse{margin:0 0 20px;padding-left:62px;font-style:normal;font-size:19px;line-height:1.5;color:var(--tz-text)}
.tsv-tz-ort-label{margin:0 0 8px;font-size:14px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--tz-sek)}
.tsv-tz-ort-gruppen{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px;padding:0;list-style:none}
.tsv-tz-ort-gruppen li{margin:0;padding:6px 12px;border-radius:999px;background:var(--tz-tint);font-size:16px;font-weight:700;line-height:1.35;color:var(--tz-text)}
.tsv-tz-klein-inline{font-weight:400}
.tsv-tz-ort-infos{margin:0 0 20px}
.tsv-tz-ort-infos dt{font-weight:700;color:var(--tz-nacht)}
.tsv-tz-ort-infos dd{margin:0 0 10px}
.tsv-tz-ort-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:auto}

/* Handy: jede Zeile als kompakte Karte, Tag als Zwischenüberschrift (Tabellen-Rollen stehen im Markup) */
@media (max-width:767px){
  .tsv-tz-leiste{align-items:flex-start}
  .tsv-tz-aktionen,.tsv-tz-aktionen>*,.tsv-tz-aktionen .tsv-btn{width:100%}
  .tsv-tz-rahmen{border:0;border-radius:0;overflow:visible;background:none}
  .tsv-tz .tsv-tz-tabelle,.tsv-tz .tsv-tz-tabelle tbody,.tsv-tz .tsv-tz-tabelle td{display:block;width:auto}
  .tsv-tz .tsv-tz-tabelle thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .tsv-tz .tsv-tz-tabelle tbody{margin:0 0 14px;padding:4px 18px 6px;border:1px solid var(--tz-linie);border-radius:18px;background:#fff}
  .tsv-tz .tsv-tz-tabelle tr{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:16px;padding:12px 0;border-top:1px solid var(--tz-linie)}
  .tsv-tz .tsv-tz-tabelle tr.tsv-tz-erste{border-top:0;padding-top:8px}
  .tsv-tz .tsv-tz-tabelle th,.tsv-tz .tsv-tz-tabelle td,.tsv-tz .tsv-tz-tabelle tr:not(.tsv-tz-erste) td,.tsv-tz .tsv-tz-tabelle tbody tr:last-child td{padding:0;border:0}
  .tsv-tz .tsv-tz-tabelle tbody+tbody tr.tsv-tz-erste td{border-top:0}
  .tsv-tz .tsv-tz-tabelle td.tsv-tz-sp-tag{grid-column:1/-1}
  .tsv-tz .tsv-tz-tabelle tr.tsv-tz-erste td.tsv-tz-sp-tag{margin:0 0 12px;padding:4px 0 10px;border-bottom:1px solid var(--tz-linie)}
  .tsv-tz .tsv-tz-tabelle td.tsv-tz-sp-ort{grid-column:2;margin-top:4px;font-size:16px}
  .tsv-tz-sp-zeit{font-size:16px}
  .tsv-tz-kalender{padding:22px 18px;border-radius:20px}
  .tsv-tz-chips{flex-direction:column}
  .tsv-tz-chip{width:100%}
  .tsv-tz-chip-zahl{margin-left:auto}
  .tsv-tz-ort{padding:22px 18px;border-radius:20px}
  .tsv-tz-adresse{padding-left:0}
  .tsv-tz-ort-links,.tsv-tz-ort-links>*,.tsv-tz-ort-links .tsv-btn{width:100%}
}
@media (max-width:400px){
  .tsv-tz .tsv-tz-tabelle tr{grid-template-columns:minmax(0,1fr)}
  .tsv-tz .tsv-tz-tabelle td.tsv-tz-sp-ort{grid-column:1}
}

@media (prefers-reduced-motion:reduce){
  .tsv-tz-chip,.tsv-tz-chip-zahl{transition:none}
}

/* Druck: nur Plan und Adressen */
@media print{
  .tsv-tz-aktionen,.tsv-tz-kalender,.tsv-tz-ort-links{display:none!important}
  .tsv-tz-rahmen,.tsv-tz-ort{border:1px solid #999;box-shadow:none}
  .tsv-tz a{color:inherit;text-decoration:none}
}
