/* ==================================================================
   TV Wiesbach Volleyball - gemeinsame Gestaltung
   ------------------------------------------------------------------
   Wird von den Mannschaftsseiten eingebunden. Alle Regeln haengen an
   der Klasse .tvw, damit sie die Mobirise-Abschnitte nicht stoeren.
   ================================================================== */

.tvw{
  --gruen:#7aba04;
  --gruen-dunkel:#5b8d03;
  --gruen-hell:#83c409;
  --dunkel:#232323;
  --leise:#7b7f77;
  font-family:'Inter Tight',system-ui,-apple-system,'Segoe UI',sans-serif;
  color:var(--dunkel);
}
.tvw *{box-sizing:border-box;}
.tvw img{height:auto;}

/* --- Kopfbereich einer Unterseite --- */
.tvw-seitenkopf{background:#fff;padding:8rem 0 3rem;}
.tvw-seitenkopf .raster{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  gap:2.75rem;align-items:center;
}
.tvw-teamfoto{
  border-radius:20px;overflow:hidden;line-height:0;
  box-shadow:0 22px 55px rgba(0,0,0,.16);
  aspect-ratio:5/4;background:#e6e8e3;
}
.tvw-teamfoto img{
  width:100%;height:100%;object-fit:cover;object-position:center 30%;display:block;
}
.tvw-marke{
  display:inline-block;background:var(--gruen);color:#fff;font-size:.74rem;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;padding:.4rem .9rem;border-radius:999px;
  margin-bottom:1.1rem;
}
.tvw-seitenkopf h1{
  font-size:clamp(2rem,4.6vw,3.1rem);font-weight:800;line-height:1.1;margin:0;
}

/* --- Abschnittsueberschrift --- */
.tvw-abschnitt{display:flex;align-items:baseline;gap:1rem;margin:0 0 1.75rem;}
.tvw-abschnitt h2{font-size:1.5rem;font-weight:800;margin:0;white-space:nowrap;}
.tvw-abschnitt::after{
  content:"";flex:1;height:3px;border-radius:2px;
  background:linear-gradient(90deg,var(--gruen),rgba(122,186,4,0));
}

/* --- Infokarten --- */
.tvw-inhalt{background:#f7f7f7;padding:3.5rem 0 4.5rem;}
.tvw-karten{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;}
.tvw-karte{
  background:#fff;border-radius:16px;padding:1.75rem;
  box-shadow:0 2px 10px rgba(0,0,0,.06);border-top:4px solid var(--gruen);
}
.tvw-karte h3{
  font-size:.76rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;
  color:var(--gruen);margin:0 0 .9rem;
}
.tvw-karte p,.tvw-karte div{line-height:1.75;margin:0;color:#3c403a;}
.tvw-karte a{color:var(--gruen-dunkel);font-weight:600;text-decoration:none;}
.tvw-karte a:hover{text-decoration:underline;}
.tvw-karte strong{color:var(--dunkel);}

/* --- Schaltflaechen --- */
.tvw-knoepfe{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:2rem;}
.tvw-knopf{
  display:inline-block;background:var(--gruen);color:#fff;text-decoration:none;
  font-weight:700;font-size:.95rem;padding:.75rem 1.5rem;border-radius:10px;
  transition:background .2s ease,transform .2s ease;
}
.tvw-knopf:hover{background:var(--gruen-hell);color:#fff;transform:translateY(-2px);}
.tvw-knopf--leer{
  background:#fff;color:var(--dunkel);border:2px solid rgba(0,0,0,.12);
}
.tvw-knopf--leer:hover{background:#fff;border-color:var(--gruen);color:var(--gruen-dunkel);}

/* ==================================================================
   Spielplan
   ================================================================== */

.tvw-spielplan{margin-top:3rem;display:none;}
.tvw-spielplan.sichtbar{display:block;}

.tvw-spiele-liste{list-style:none;margin:0;padding:0;display:grid;gap:.75rem;}
.tvw-spiel{
  background:#fff;border-radius:13px;padding:1rem 1.25rem;
  box-shadow:0 2px 8px rgba(0,0,0,.05);
  display:grid;grid-template-columns:5.5rem 1fr auto;gap:.5rem 1.1rem;align-items:center;
}
.tvw-spiel:first-child{border-left:4px solid var(--gruen);}
.tvw-spiel .wann{line-height:1.35;}
.tvw-spiel .wann b{display:block;font-size:1.05rem;font-weight:800;}
.tvw-spiel .wann span{font-size:.8rem;color:var(--leise);}
.tvw-spiel .wer{min-width:0;}
.tvw-spiel .wer b{display:block;font-size:1.02rem;font-weight:700;line-height:1.3;}
.tvw-spiel .wer span{font-size:.85rem;color:var(--leise);}
.tvw-spiel .wo{text-align:right;font-size:.83rem;color:var(--leise);line-height:1.4;}
.tvw-spiel .wo em{font-style:normal;display:block;color:#8a6400;font-weight:600;}

.tvw-ort{
  display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;padding:.2rem .5rem;border-radius:6px;margin-bottom:.25rem;
}
.tvw-ort--heim{background:#eef5e0;color:#4a7003;}
.tvw-ort--aus{background:#f0f0ee;color:#6b6f68;}

.tvw-letztes{
  margin-top:1rem;font-size:.94rem;color:#4a4d47;background:#fff;
  border-left:4px solid var(--gruen);border-radius:0 11px 11px 0;
  padding:.85rem 1.15rem;box-shadow:0 2px 8px rgba(0,0,0,.05);
}
.tvw-letztes strong{color:var(--dunkel);}

/* --- Langer Fliesstext (Berichte, Merkblaetter) --- */
.tvw-text{
  background:#fff;border-radius:16px;padding:2.25rem 2.5rem;
  box-shadow:0 2px 10px rgba(0,0,0,.06);
}
.tvw-text p{line-height:1.85;color:#3c403a;margin:0;font-size:1.02rem;}
.tvw-text a{color:var(--gruen-dunkel);font-weight:600;text-decoration:none;}
.tvw-text a:hover{text-decoration:underline;}
.tvw-text strong{color:var(--dunkel);}
.tvw-vorspann{
  font-size:.76rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;
  color:var(--gruen);margin:0 0 1.25rem;
}
.tvw-aufmacher{
  border-radius:18px;overflow:hidden;line-height:0;margin-bottom:2rem;
  box-shadow:0 18px 42px rgba(0,0,0,.14);
}
.tvw-aufmacher img{width:100%;height:auto;display:block;}
@media (max-width:575px){
  .tvw-text{padding:1.35rem;}
}

/* --- Personen: Vorstand, Foerderverein --- */
.tvw-personen{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.1rem;}
.tvw-person{
  background:#fff;border-radius:14px;padding:1.35rem 1.5rem;
  box-shadow:0 2px 10px rgba(0,0,0,.06);border-left:4px solid var(--gruen);
}
.tvw-person .amt{
  font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--gruen);display:block;margin-bottom:.45rem;
}
.tvw-person .wer{font-size:1.08rem;font-weight:700;line-height:1.4;display:block;}
.tvw-person .zusatz{display:block;margin-top:.6rem;font-size:.9rem;}
.tvw-person .zusatz a{color:var(--gruen-dunkel);font-weight:600;text-decoration:none;}
.tvw-person .zusatz a:hover{text-decoration:underline;}

/* --- Aufzaehlung mit gruenem Punkt --- */
.tvw-liste{list-style:none;margin:0;padding:0;display:grid;gap:.55rem;}
.tvw-liste li{position:relative;padding-left:1.7rem;line-height:1.7;color:#3c403a;}
.tvw-liste li::before{
  content:"";position:absolute;left:0;top:.6rem;
  width:.65rem;height:.65rem;border-radius:50%;background:var(--gruen);
}

/* --- Beitraege --- */
.tvw-beitraege{display:grid;gap:.6rem;}
.tvw-beitrag{
  background:#fff;border-radius:12px;padding:1rem 1.35rem;
  display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;
  gap:.4rem 1rem;box-shadow:0 2px 8px rgba(0,0,0,.05);
}
.tvw-beitrag .was{font-weight:600;}
.tvw-beitrag .was small{display:block;font-weight:500;font-size:.83rem;color:var(--leise);}
.tvw-beitrag .preis{font-weight:800;font-size:1.15rem;color:var(--gruen-dunkel);white-space:nowrap;}
.tvw-beitrag .preis small{font-weight:600;color:var(--leise);font-size:.78rem;}

/* --- Hervorgehobener Aufruf --- */
.tvw-aufruf{
  margin-top:2.5rem;background:linear-gradient(150deg,#2c302b,#1c1f1b);
  color:#fff;border-radius:18px;padding:2.5rem 2.25rem;text-align:center;
}
.tvw-aufruf h3{font-size:1.4rem;font-weight:800;margin:0 0 .75rem;}
.tvw-aufruf p{color:rgba(255,255,255,.82);line-height:1.7;margin:0 auto 1.6rem;max-width:56ch;}
.tvw-aufruf .tvw-knopf--leer{background:transparent;color:#fff;border-color:rgba(255,255,255,.35);}
.tvw-aufruf .tvw-knopf--leer:hover{background:rgba(255,255,255,.1);color:#fff;border-color:#fff;}

/* --- Kader einer Mannschaft --- */
.tvw-facts{display:flex;flex-wrap:wrap;gap:2.25rem;border-top:2px solid rgba(0,0,0,.08);padding-top:1.35rem;}
.tvw-facts b{display:block;font-size:1.85rem;font-weight:800;line-height:1;color:var(--gruen);}
.tvw-facts span{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--leise);}

.tvw-kaderraster{display:grid;grid-template-columns:repeat(auto-fill,minmax(235px,1fr));gap:1.75rem;}
.tvw-spielerin{
  background:#fff;border-radius:16px;overflow:hidden;display:flex;flex-direction:column;
  box-shadow:0 2px 10px rgba(0,0,0,.06);transition:transform .28s ease,box-shadow .28s ease;
}
.tvw-spielerin:hover{transform:translateY(-6px);box-shadow:0 16px 34px rgba(0,0,0,.14);}
.tvw-spielerin .foto{position:relative;aspect-ratio:4/5;overflow:hidden;background:#e6e8e3;}
.tvw-spielerin .foto img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease;}
.tvw-spielerin:hover .foto img{transform:scale(1.04);}
.tvw-spielerin .text{padding:1.05rem 1.15rem 1.2rem;flex:1;display:flex;flex-direction:column;}
.tvw-spielerin .top{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem;}
.tvw-spielerin h3{font-size:1.1rem;font-weight:700;margin:0 0 .3rem;line-height:1.25;}
.tvw-spielerin .pos{
  font-size:.74rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--gruen);margin:0 0 .9rem;
}
.tvw-spielerin .nr{
  flex:none;display:inline-flex;align-items:center;justify-content:center;
  min-width:2.6rem;height:2.6rem;padding:0 .6rem;border-radius:13px;
  background:rgba(122,186,4,.13);color:var(--gruen-dunkel);
  font-size:1.5rem;font-weight:800;line-height:1;font-variant-numeric:lining-nums tabular-nums;
}
.tvw-spielerin.ist-trainer .nr{background:rgba(35,35,35,.08);color:#3a3f38;}
.tvw-spielerin .nr--text{font-size:1.05rem;letter-spacing:.04em;}
.tvw-spielerin .meta{
  margin:auto 0 0;padding-top:.8rem;border-top:1px solid rgba(0,0,0,.08);display:flex;gap:1.5rem;
}
.tvw-spielerin .meta dt{
  font-size:.66rem;letter-spacing:.09em;text-transform:uppercase;color:var(--leise);
  font-weight:500;margin:0 0 .15rem;
}
.tvw-spielerin .meta dd{font-size:.92rem;font-weight:600;margin:0;}

@media (max-width:575px){
  .tvw-kaderraster{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem;}
  .tvw-spielerin .text{padding:.85rem .9rem 1rem;}
  .tvw-spielerin h3{font-size:.96rem;}
  .tvw-spielerin .nr{min-width:2.2rem;height:2.2rem;padding:0 .45rem;border-radius:11px;font-size:1.2rem;}
  .tvw-spielerin .meta{gap:1rem;}
  .tvw-facts{gap:1.5rem;}
}
@media (prefers-reduced-motion:reduce){
  .tvw-spielerin,.tvw-spielerin .foto img{transition:none;}
  .tvw-spielerin:hover{transform:none;}
  .tvw-spielerin:hover .foto img{transform:none;}
}

/* --- Sanftes Einblenden --- */
.tvw-auf{opacity:0;transform:translateY(16px);transition:opacity .55s ease,transform .55s ease;}
.tvw-auf.da{opacity:1;transform:none;}

@media (max-width:640px){
  .tvw-seitenkopf{padding:6.5rem 0 2rem;}
  .tvw-inhalt{padding:2.5rem 0 3rem;}
  .tvw-karte{padding:1.25rem;}
  .tvw-spiel{grid-template-columns:1fr;gap:.35rem;}
  .tvw-spiel .wo{text-align:left;}
  .tvw-spiel .wann b{display:inline;margin-right:.5rem;}
}

@media (max-width:800px){
  .tvw-seitenkopf .raster{grid-template-columns:1fr;gap:1.75rem;}
  .tvw-teamfoto{order:-1;aspect-ratio:16/10;}
}

@media (prefers-reduced-motion:reduce){
  .tvw-auf{opacity:1;transform:none;transition:none;}
  .tvw-knopf{transition:none;}
  .tvw-knopf:hover{transform:none;}
}
