/* TVS Veranstaltungskalender 0.2.5 – scoped; does not style other WordPress pages. */
.tvs-calendar{--tvs-navy:#0d4574;--tvs-ink:#15344e;--tvs-sea:#0e7083;--tvs-pale:#eaf3f8;--tvs-line:#dce7ed;--tvs-muted:#5c7080;max-width:100%;color:var(--tvs-ink);font-size:1rem}
.tvs-calendar *{box-sizing:border-box}
.tvs-calendar__sports{display:flex;gap:.5rem;flex-wrap:wrap;margin:1.5rem 0 1.1rem}
.tvs-calendar .tvs-calendar__sport{display:inline-flex;align-items:center;justify-content:center;min-height:2.8rem;padding:.6rem 1.15rem;text-decoration:none;border-radius:99rem;border:1px solid var(--tvs-line);background:#fff;color:var(--tvs-ink);font-size:.92rem;font-weight:700;line-height:1.2;transition:background .15s,border-color .15s}
.tvs-calendar .tvs-calendar__sport:hover,.tvs-calendar .tvs-calendar__sport:focus-visible{border-color:var(--tvs-navy);color:var(--tvs-navy)}
.tvs-calendar .tvs-calendar__sport.is-active{border-color:var(--tvs-navy);background:var(--tvs-navy);color:#fff}
.tvs-calendar__filters{display:grid;grid-template-columns:minmax(160px,1.15fr) minmax(170px,1.1fr) auto auto;gap:.9rem;align-items:end;padding:1.25rem;background:#f1f6f9;border:1px solid var(--tvs-line);border-radius:16px;margin:0 0 1.2rem}
.tvs-calendar .tvs-calendar__field{display:flex;flex-direction:column;gap:.35rem;color:var(--tvs-ink);font-weight:700;font-size:.84rem;line-height:1.3;margin:0}
.tvs-calendar .tvs-calendar__field select,.tvs-calendar__dates input{width:100%;height:2.8rem;min-width:0;padding:.45rem .7rem;border:1px solid #bfd1dc;border-radius:9px;background:white;color:var(--tvs-ink);font:inherit;font-weight:400;font-size:.93rem}
.tvs-calendar__check{display:inline-flex;gap:.5rem;align-items:center;min-height:2.8rem;font-size:.9rem;font-weight:600;color:var(--tvs-ink);margin:0;white-space:nowrap}
.tvs-calendar__check input{width:1.1rem;height:1.1rem;accent-color:var(--tvs-navy)}
.tvs-calendar .tvs-calendar__apply,.tvs-calendar .tvs-calendar__more-button{background:var(--tvs-navy);border:1px solid var(--tvs-navy);color:#fff;border-radius:9px;min-height:2.8rem;padding:.6rem 1.1rem;cursor:pointer;font:inherit;font-size:.92rem;font-weight:700;line-height:1.2}
.tvs-calendar .tvs-calendar__apply:hover,.tvs-calendar .tvs-calendar__more-button:hover{background:#072f51}
.tvs-calendar .tvs-calendar__reset{grid-column:1/3;font-size:.88rem;color:var(--tvs-navy);font-weight:600}
.tvs-calendar__advanced{grid-column:3/-1;justify-self:end;font-size:.86rem;color:var(--tvs-ink)}
.tvs-calendar__advanced summary{cursor:pointer;font-weight:700}
.tvs-calendar__dates{display:flex;gap:.7rem;flex-wrap:wrap;padding-top:.65rem}
.tvs-calendar__dates label{display:flex;flex-direction:column;gap:.25rem;font-size:.83rem}
.tvs-calendar__results{margin:1.55rem 0 .65rem;color:var(--tvs-muted);font-size:.91rem;display:flex;align-items:center;gap:.35rem}
.tvs-calendar__results strong{font-size:1.1rem;color:var(--tvs-navy);font-weight:800}
.tvs-calendar__month-group{margin:1.5rem 0 1.9rem}
.tvs-calendar__month-group h3{color:var(--tvs-navy);border-bottom:2px solid var(--tvs-line);padding:0 0 .65rem;margin:0 0 1rem;font-size:1.22rem;font-weight:800}
.tvs-calendar__list{list-style:none;padding:0;margin:0;display:grid;gap:.75rem}
.tvs-calendar__item{list-style:none;margin:0;padding:0}
.tvs-calendar__card{display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:1.05rem;align-items:center;padding:1rem 1.1rem;background:#fff;border:1px solid var(--tvs-line);border-left:4px solid var(--tvs-navy);border-radius:13px;box-shadow:0 5px 20px rgba(10,49,80,.05);color:var(--tvs-ink);transition:transform .15s,box-shadow .15s}
.tvs-calendar__card:hover{transform:translateY(-2px);box-shadow:0 9px 28px rgba(10,49,80,.1)}
.tvs-calendar__card.is-home{border-left-color:#0d8b8e}
.tvs-calendar__date{min-width:0;min-height:92px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.55rem .3rem;text-align:center;border-radius:9px;background:var(--tvs-pale);color:var(--tvs-navy);line-height:1}
.tvs-calendar__weekday{font-size:.72rem;letter-spacing:.06em;font-weight:800;text-transform:uppercase}
.tvs-calendar__day{font-size:2rem;font-weight:900;letter-spacing:-.06em;line-height:1.12;margin:.1rem 0}
.tvs-calendar__month{font-size:.78rem;font-weight:800;letter-spacing:.08em}
.tvs-calendar__year{font-size:.67rem;opacity:.73;margin-top:.13rem}
.tvs-calendar__info{min-width:0}
.tvs-calendar__eyebrow{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;margin:0 0 .4rem}
.tvs-calendar__team{font-size:.74rem;font-weight:800;letter-spacing:.055em;text-transform:uppercase;color:var(--tvs-navy)}
.tvs-calendar__location-badge{border:1px solid #d0e2ea;border-radius:99rem;padding:.14rem .55rem;background:#f5f9fa;color:#3b6174;font-size:.72rem;font-weight:700;line-height:1.35}
.tvs-calendar__card.is-home .tvs-calendar__location-badge{background:#e4f3f1;color:#006e6f;border-color:#b8dbd8}
.tvs-calendar__card h4{font-size:1.08rem;line-height:1.3;color:var(--tvs-ink);font-weight:800;margin:0 0 .45rem;overflow-wrap:anywhere}
.tvs-calendar__meta{display:flex;align-items:flex-start;gap:.5rem 1rem;flex-wrap:wrap;color:var(--tvs-muted);font-size:.84rem;line-height:1.45}
.tvs-calendar__meta time{font-weight:800;color:var(--tvs-ink);white-space:nowrap}
.tvs-calendar__place{min-width:0;overflow-wrap:anywhere}
.tvs-calendar .tvs-calendar__details{align-self:center;display:inline-flex;align-items:center;justify-content:center;gap:.3rem;border-radius:8px;border:1px solid #b9d0dc;padding:.55rem .7rem;color:var(--tvs-navy);font-size:.8rem;font-weight:800;text-decoration:none;white-space:nowrap}
.tvs-calendar .tvs-calendar__details:hover{border-color:var(--tvs-navy);background:var(--tvs-pale);color:var(--tvs-navy)}
.tvs-calendar__more{display:flex;flex-direction:column;align-items:center;gap:.65rem;margin:2rem 0}
.tvs-calendar__progress{font-size:.81rem;color:var(--tvs-muted)}
.tvs-calendar__empty{padding:1.5rem;color:var(--tvs-ink);background:var(--tvs-pale);border-radius:12px}
.tvs-calendar__footnote,.tvs-calendar__hint{font-size:.83rem;line-height:1.5;color:var(--tvs-muted);margin:1rem 0}
.tvs-calendar__subscriptions{background:#f0f6f9;border:1px solid var(--tvs-line);border-radius:14px;padding:1.1rem 1.3rem;margin:2rem 0}
.tvs-calendar__subscriptions summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;font-size:1.1rem;font-weight:800;color:var(--tvs-navy);cursor:pointer;list-style:none}
.tvs-calendar__subscriptions summary::-webkit-details-marker{display:none}
.tvs-calendar__subscriptions summary::before{content:'+';font-size:1.5rem;margin-right:.25rem}
.tvs-calendar__subscriptions[open] summary::before{content:'−'}
.tvs-calendar__subscriptions summary span{font-size:.78rem;white-space:nowrap;font-weight:700;background:#fff;border-radius:99rem;padding:.25rem .65rem}
.tvs-calendar__subscriptions>p{font-size:.88rem;margin:1rem 0;color:var(--tvs-muted)}
.tvs-calendar__subscriptions ul{list-style:none;padding:0;margin:.9rem 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}
.tvs-calendar__subscriptions li{margin:0;padding:0}
.tvs-calendar__subscriptions a{display:flex;justify-content:space-between;gap:.7rem;text-decoration:none;color:var(--tvs-navy);background:#fff;border:1px solid var(--tvs-line);border-radius:9px;padding:.8rem .95rem;font-size:.88rem;font-weight:700}
.tvs-calendar__subscriptions a:hover{border-color:var(--tvs-navy);text-decoration:underline}
.tvs-calendar__subscriptions a span{font-size:.72rem;color:var(--tvs-muted)}
.tvs-calendar [hidden]{display:none!important}
.tvs-calendar a:focus-visible,.tvs-calendar button:focus-visible,.tvs-calendar select:focus-visible,.tvs-calendar input:focus-visible,.tvs-calendar summary:focus-visible{outline:3px solid #d3a73b;outline-offset:3px}
@media(max-width:900px){.tvs-calendar__filters{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.tvs-calendar__advanced{grid-column:2}.tvs-calendar__card{grid-template-columns:65px minmax(0,1fr)}.tvs-calendar .tvs-calendar__details{grid-column:2;justify-self:start}.tvs-calendar__date{min-height:78px}.tvs-calendar__day{font-size:1.8rem}}
@media(max-width:620px){.tvs-calendar__filters{grid-template-columns:minmax(0,1fr);padding:1rem}.tvs-calendar .tvs-calendar__reset,.tvs-calendar__advanced{grid-column:1;justify-self:start}.tvs-calendar__check{white-space:normal}.tvs-calendar__sports{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem}.tvs-calendar .tvs-calendar__sport{font-size:.77rem;padding:.6rem .25rem;min-height:2.65rem}.tvs-calendar__card{grid-template-columns:62px minmax(0,1fr);gap:.75rem;padding:.85rem}.tvs-calendar__date{min-height:75px}.tvs-calendar__day{font-size:1.7rem}.tvs-calendar__card h4{font-size:1rem}.tvs-calendar__meta{display:flex;flex-direction:column;gap:.2rem;font-size:.81rem}.tvs-calendar__subscriptions ul{grid-template-columns:1fr}.tvs-calendar__month-group h3{font-size:1.1rem}}
@media(prefers-reduced-motion:reduce){.tvs-calendar__card,.tvs-calendar .tvs-calendar__sport{transition:none}.tvs-calendar__card:hover{transform:none}}

/* 0.2.6: Additional categories; keep text contrast on the TV2021 navy site background. */
.tvs-calendar__sports{gap:.42rem}
body.page-id-33116 .tvs-calendar__results,body.page-id-33116 .tvs-calendar__results strong,body.page-id-33116 .tvs-calendar__progress,body.page-id-33116 .tvs-calendar__month-group h3,body.page-id-33116 .tvs-calendar__footnote{color:#fff}
body.page-id-33116 .tvs-calendar__month-group h3{border-bottom-color:rgba(255,255,255,.4)}
.tvs-calendar__card,.tvs-calendar__card h4,.tvs-calendar__card .tvs-calendar__meta,.tvs-calendar__card .tvs-calendar__place{color:#15344e;background-color:#fff}
.tvs-calendar__team{color:#0d4574}
.tvs-calendar__date{color:#0d4574;background:#eaf3f8}
.tvs-calendar__filters,.tvs-calendar__subscriptions{color:#15344e;background:#f1f6f9}
.tvs-calendar__filters label,.tvs-calendar__filters span,.tvs-calendar__subscriptions summary{color:#15344e}
.tvs-calendar__filters select,.tvs-calendar__filters option,.tvs-calendar__filters input[type=date]{color:#15344e;background:#fff}
.tvs-calendar__sport:not(.is-active){color:#0d4574;background:#fff}
.tvs-calendar__sport.is-active,.tvs-calendar__apply,.tvs-calendar__more-button{color:#fff;background:#0d4574}
.tvs-calendar__details,.tvs-calendar__subscriptions a{color:#0d4574;background:#fff}
.tvs-calendar__sport,.tvs-calendar__subscriptions a,.tvs-calendar__details,.tvs-calendar__advanced summary{min-height:44px}
.tvs-calendar__subscriptions>p,.tvs-calendar__subscriptions .tvs-calendar__hint{color:#355364}
@media(max-width:620px){.tvs-calendar__sports{grid-template-columns:repeat(2,minmax(0,1fr))}.tvs-calendar__sports .tvs-calendar__sport{font-size:.84rem;min-height:46px}.tvs-calendar__field select,.tvs-calendar__apply{min-height:48px}}
@media(max-width:380px){.tvs-calendar__sports{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 0.2.6: separated, responsive public views. All contrast-critical content sits on light surfaces. */
.tvs-calendar__section-intro{background:#f1f6f9;color:#15344e;border:1px solid #d2e0e8;border-radius:16px;padding:1.4rem 1.5rem;margin-bottom:1.15rem}
.tvs-calendar__section-intro h2{color:#0d3757;margin:.2rem 0 .5rem;font-weight:800;font-size:clamp(1.35rem,2.6vw,2.1rem);line-height:1.2}
.tvs-calendar__section-intro p{color:#294d64;line-height:1.5;margin:0}
.tvs-calendar__section-intro .tvs-calendar__kicker{font-size:.73rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#275979}
.tvs-calendar--spieltage .tvs-calendar__results,.tvs-calendar--vereinstermine .tvs-calendar__results{color:#15344e;background:#f1f6f9;padding:.7rem 1rem;border-radius:10px}
.tvs-calendar--spieltage .tvs-calendar__results strong,.tvs-calendar--vereinstermine .tvs-calendar__results strong{color:#0d3757}
.tvs-calendar--spieltage .tvs-calendar__month-group h3,.tvs-calendar--vereinstermine .tvs-calendar__month-group h3{color:#0d3757;background:#f1f6f9;padding:.6rem .8rem;border-radius:7px;border-bottom:2px solid #d2e0e8}
.tvs-calendar--spieltage .tvs-calendar__footnote,.tvs-calendar--vereinstermine .tvs-calendar__footnote{color:#294d64;background:#f1f6f9;padding:.8rem 1rem;border-radius:9px}
.tvs-calendar__card--event{grid-template-columns:76px minmax(0,1fr) auto;min-height:132px;border-left-color:#1e6b7c}
.tvs-calendar__card--event .tvs-calendar__info h4{font-size:1.16rem}
.tvs-calendar__excerpt{font-size:.88rem;line-height:1.48;color:#355364;margin:.58rem 0 0;overflow-wrap:anywhere}
.tvs-calendar__overview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;align-items:start}
.tvs-calendar__overview-panel{background:#f1f6f9;color:#15344e;border:1px solid #d2e0e8;border-radius:16px;padding:1.15rem;min-width:0}
.tvs-calendar__overview-panel h3{color:#0d3757;font-size:1.28rem;margin:0 0 1rem;font-weight:800}
.tvs-calendar__overview-panel .tvs-calendar__list{gap:.65rem}
.tvs-calendar__overview-panel .tvs-calendar__card{display:flex;align-items:flex-start;padding:.75rem;gap:.75rem;flex-wrap:wrap;box-shadow:none}
.tvs-calendar__overview-panel .tvs-calendar__date{min-height:70px;min-width:56px;width:56px}
.tvs-calendar__overview-panel .tvs-calendar__day{font-size:1.65rem}
.tvs-calendar__overview-panel .tvs-calendar__info{flex:1 1 185px}
.tvs-calendar__overview-panel .tvs-calendar__details{margin-left:68px;min-height:44px}
.tvs-calendar__overview-panel .tvs-calendar__card h4{font-size:.95rem}
.tvs-calendar__overview-panel .tvs-calendar__meta{font-size:.79rem}
.tvs-calendar .tvs-calendar__overview-link{display:inline-flex;align-items:center;justify-content:space-between;gap:1rem;min-height:44px;margin-top:1rem;padding:.7rem 1rem;background:#0d4574;color:#fff;font-weight:800;text-decoration:none;border-radius:9px}
.tvs-calendar .tvs-calendar__overview-link:hover{background:#07304e;color:#fff}
.tvs-calendar__oss-link{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin:1.1rem 0;padding:1.1rem 1.2rem;background:#e5f1f3;color:#15344e;border:1px solid #c8e0e4;border-radius:14px}
.tvs-calendar__oss-link strong{color:#0d4574;font-weight:900}
.tvs-calendar__oss-link p{margin:.3rem 0;color:#294d64}
.tvs-calendar__oss-link .tvs-calendar__overview-link{margin:0}
.tvs-calendar--start .tvs-calendar__subscriptions{margin-top:1rem}
.tvs-calendar--start .tvs-calendar__overview-panel .tvs-calendar__empty{color:#15344e}
.tvs-calendar--start .tvs-calendar__overview-panel .tvs-calendar__card .tvs-calendar__info{background:transparent;color:#15344e}
.tvs-calendar__overview-link:focus-visible{outline:3px solid #d3a73b;outline-offset:3px}
@media(max-width:800px){.tvs-calendar__overview{grid-template-columns:1fr}.tvs-calendar__overview-panel .tvs-calendar__card{flex-wrap:nowrap}.tvs-calendar__overview-panel .tvs-calendar__details{margin-left:0}}
@media(max-width:620px){.tvs-calendar__section-intro{padding:1.1rem}.tvs-calendar__card--event{grid-template-columns:62px minmax(0,1fr)}.tvs-calendar__overview-panel{padding:.85rem}.tvs-calendar__overview-panel .tvs-calendar__card{flex-wrap:wrap}}

/* 0.2.6 release: independent OSS view and readable headings on the navy TVS theme. */
.tvs-calendar--oss .tvs-calendar__results,
.tvs-calendar--oss .tvs-calendar__month-group h3,
.tvs-calendar--oss .tvs-calendar__footnote{
  color:#15344e;background:#f1f6f9;border-radius:9px;padding:.7rem 1rem;
}
.tvs-calendar--oss .tvs-calendar__results strong{color:#0d3757}
.tvs-calendar--spieltage .tvs-calendar__progress,
.tvs-calendar--vereinstermine .tvs-calendar__progress,
.tvs-calendar--oss .tvs-calendar__progress{color:#e8f5ff}
body.page-id-33116 .tvs-calendar--spieltage .tvs-calendar__results,
body.page-id-33116 .tvs-calendar--vereinstermine .tvs-calendar__results,
body.page-id-33116 .tvs-calendar--oss .tvs-calendar__results,
body.page-id-33116 .tvs-calendar--spieltage .tvs-calendar__results strong,
body.page-id-33116 .tvs-calendar--vereinstermine .tvs-calendar__results strong,
body.page-id-33116 .tvs-calendar--oss .tvs-calendar__results strong,
body.page-id-33116 .tvs-calendar--spieltage .tvs-calendar__month-group h3,
body.page-id-33116 .tvs-calendar--vereinstermine .tvs-calendar__month-group h3,
body.page-id-33116 .tvs-calendar--oss .tvs-calendar__month-group h3,
body.page-id-33116 .tvs-calendar--spieltage .tvs-calendar__footnote,
body.page-id-33116 .tvs-calendar--vereinstermine .tvs-calendar__footnote,
body.page-id-33116 .tvs-calendar--oss .tvs-calendar__footnote { color:#15344e; }
.tvs-calendar__card--event .tvs-calendar__details{grid-column:3;justify-self:end}
@media(max-width:900px){.tvs-calendar__card--event .tvs-calendar__details{grid-column:2;justify-self:start}}
.tvs-calendar .tvs-calendar__field select,
.tvs-calendar .tvs-calendar__field input{min-height:44px}

/* 0.2.6: equal-size event tiles, without cropping long descriptions.
   A small progressive enhancement measures the largest visible tile across
   month groups and sets --tvs-equal-card-height per calendar instance. */
.tvs-calendar .tvs-calendar__list{grid-auto-rows:1fr}
.tvs-calendar .tvs-calendar__item{display:flex;min-width:0}
.tvs-calendar .tvs-calendar__item>.tvs-calendar__card{
  width:100%;min-height:var(--tvs-equal-card-height, 144px);
}
/* Keep both overview columns and their action links aligned. */
.tvs-calendar--start .tvs-calendar__overview{align-items:stretch}
.tvs-calendar--start .tvs-calendar__overview-panel{display:flex;flex-direction:column;min-height:var(--tvs-equal-panel-height, auto)}
.tvs-calendar--start .tvs-calendar__overview-panel .tvs-calendar__list{margin-bottom:1rem}
.tvs-calendar--start .tvs-calendar__overview-panel .tvs-calendar__overview-link{margin-top:auto}
