/* TVS Kursplan – Frontend
   Hinweis: Es wird bewusst KEINE font-family gesetzt (Vererbung vom Theme).
   Schriftgrößen sind über die Variablen --tvs-fs-* anpassbar (z. B. im „Zusätzlichen CSS"). */

/* Variablen auf App UND Overlay – das Detail-Fenster hängt am Body und muss sie ebenfalls kennen. */
.tvsk-app,.tvsk-overlay{
  --tvsk-red:#B80008;--tvsk-red-dark:#8d0006;
  --tvsk-dark:#101820;--tvsk-dark-2:#1c262f;
  --tvsk-line:#e6e8ea;--tvsk-band:#f4f5f6;
  --tvsk-muted:#7a8088;--tvsk-muted-2:#9aa0a6;--tvsk-txt:#1a1f24;
  --tvsk-free:#2e9e6b;--tvsk-free-bg:#e7f5ee;
  --tvsk-full:#e8820e;--tvsk-full-bg:#fdefdc;

  --tvs-fs-title:34px;
  --tvs-fs-intro:15px;
  --tvs-fs-day:15px;
  --tvs-fs-band:12px;
  --tvs-fs-card-title:15px;
  --tvs-fs-tag:10px;
  --tvs-fs-time:13px;
  --tvs-fs-meta:12px;
  --tvs-fs-status:11.5px;
  --tvs-fs-weeknav:16px;
  --tvs-fs-chip:13px;
  --tvs-fs-modal-title:30px;
  --tvs-fs-modal-desc:16px;
  --tvs-fs-btn:15px;
}
.tvsk-app{color:var(--tvsk-txt);line-height:1.45}
.tvsk-app *{box-sizing:border-box}

/* Toolbar */
.tvsk-toolbar{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;padding:6px 0 18px}
.tvsk-chips{display:flex;flex-wrap:wrap;gap:8px}
.tvsk-chip{border:1.5px solid var(--tvsk-line);background:#fff;border-radius:999px;padding:7px 16px;font-size:var(--tvs-fs-chip);font-weight:600;cursor:pointer;color:#4a5158;text-transform:uppercase;letter-spacing:.5px;display:inline-flex;align-items:center;gap:7px}
.tvsk-chip .cdot{width:9px;height:9px;border-radius:50%}
.tvsk-chip:hover{border-color:var(--tvsk-dark)}
.tvsk-chip.active{border-color:var(--tvsk-dark);background:var(--tvsk-dark);color:#fff}
.tvsk-filters{display:flex;gap:10px;flex-wrap:wrap}
.tvsk-app select{border:1.5px solid var(--tvsk-line);border-radius:8px;padding:9px 14px;font-size:13px;font-weight:600;color:#4a5158;background:#fff;font-family:inherit;cursor:pointer}

/* Wochen-Navigation */
.tvsk-weeknav{display:flex;align-items:center;gap:10px;border-top:1px solid var(--tvsk-line);border-bottom:1px solid var(--tvsk-line);padding:11px 0}
.tvsk-weeknav button.arrow{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--tvsk-line);background:#fff;font-size:17px;line-height:1;cursor:pointer;color:var(--tvsk-dark);flex-shrink:0}
.tvsk-weeknav button.arrow:hover{border-color:var(--tvsk-dark)}
.tvsk-weeknav .range{text-transform:uppercase;font-weight:600;letter-spacing:.5px;font-size:var(--tvs-fs-weeknav)}
.tvsk-weeknav .today{margin-left:auto;border:1.5px solid var(--tvsk-line);background:#fff;border-radius:8px;padding:8px 14px;font-weight:600;font-size:13px;cursor:pointer;text-transform:uppercase;letter-spacing:.5px;color:var(--tvsk-dark)}
.tvsk-weeknav .today[disabled]{opacity:.4;cursor:default}

/* Banner (Pause/Ferien) */
.tvsk-banner{display:none;align-items:center;gap:9px;background:var(--tvsk-full-bg);color:#b9690a;border-radius:10px;padding:12px 16px;font-weight:600;font-size:14px;margin:14px 0 4px}
.tvsk-app.is-paused .tvsk-banner{display:flex}

/* Karte */
.tvsk-card{position:relative;border:1px solid var(--tvsk-line);border-top:3px solid var(--tvsk-dark);border-radius:12px;padding:12px 13px 11px;margin-bottom:10px;background:#fff;cursor:pointer;transition:.15s}
.tvsk-card:hover{box-shadow:0 6px 18px rgba(16,24,32,.10);transform:translateY(-1px)}
.tvsk-card .tvsk-card-title{font-weight:600;font-size:var(--tvs-fs-card-title);line-height:1.15;letter-spacing:.2px;margin:0;padding:0 74px 0 0;color:inherit;text-transform:none;font-family:inherit}
.tvsk-grpbadge{position:absolute;top:11px;right:11px;display:inline-flex;align-items:center;gap:4px;font-size:var(--tvs-fs-tag);font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#5a6066;background:#f1f3f5;border-radius:6px;padding:3px 8px;max-width:100px}
.tvsk-grpbadge svg{flex-shrink:0}
.tvsk-card .tags{margin-top:8px}
.tvsk-tag.cat{display:inline-flex;align-items:center;font-size:var(--tvs-fs-tag);font-weight:700;text-transform:uppercase;letter-spacing:.6px;padding:3px 9px;border-radius:5px}
.tvsk-card .time{margin-top:9px;font-size:var(--tvs-fs-time);font-weight:600;color:#2a3036}
.tvsk-card .meta{margin-top:3px;font-size:var(--tvs-fs-meta);color:var(--tvsk-muted)}
.tvsk-card .statusline{margin-top:9px;font-size:var(--tvs-fs-status);font-weight:600;display:flex;align-items:center;gap:6px}
.tvsk-card .statusline .dot{width:8px;height:8px;border-radius:50%}
.tvsk-card .statusline.frei{color:var(--tvsk-free)}
.tvsk-card .statusline.frei .dot{background:var(--tvsk-free)}
.tvsk-card .statusline.warteliste{color:#b9690a}
.tvsk-card .statusline.warteliste .dot{background:var(--tvsk-full)}
.tvsk-card .statusline.pausiert{color:var(--tvsk-muted)}
.tvsk-card .statusline.pausiert .dot{background:var(--tvsk-muted-2)}
.tvsk-card.paused{opacity:.55}

/* ===== Ansicht A: 6-Spalten-Wochenraster (nur breit) ===== */
.tvsk-grid{display:none}
.tvsk-app.is-wide .tvsk-grid{display:block}
.tvsk-app.is-wide .tvsk-weeklist{display:none}
.tvsk-grid-wrap{padding:8px 0 6px}
.tvsk-daycols{display:grid;grid-template-columns:repeat(6,1fr);border-bottom:1px solid var(--tvsk-line)}
.tvsk-daycol-head{padding:14px 13px;border-left:1px solid var(--tvsk-line)}
.tvsk-daycol-head:first-child{border-left:0}
.tvsk-daycol-head .dow{text-transform:uppercase;font-weight:600;font-size:var(--tvs-fs-day)}
.tvsk-daycol-head .date{color:var(--tvsk-muted-2);font-size:12px}
.tvsk-daycol-head.is-today .dow{color:var(--tvsk-red)}
.tvsk-band-label{text-align:center;color:#aab0b6;font-size:var(--tvs-fs-band);letter-spacing:3px;text-transform:uppercase;font-weight:600;padding:16px 0 8px;position:relative}
.tvsk-band-label span{background:#fff;padding:0 14px;position:relative;z-index:1}
.tvsk-band-label::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--tvsk-line);z-index:0}
.tvsk-band{display:grid;grid-template-columns:repeat(6,1fr)}
.tvsk-cell{border-left:1px solid var(--tvsk-line);padding:8px 8px 2px;min-height:26px}
.tvsk-cell:first-child{border-left:0}

/* ===== Ansicht B: ganze Woche als Tages-Abschnitte (Standard / Tablet / Handy) ===== */
.tvsk-weeklist{display:block;padding:6px 0 4px}
.tvsk-daysec{padding:2px 0 6px;border-bottom:1px solid var(--tvsk-line)}
.tvsk-daysec:last-child{border-bottom:0}
.tvsk-dayhead{display:flex;align-items:baseline;gap:12px;padding:18px 0 12px;position:relative;padding-left:16px}
.tvsk-dayhead::before{content:"";position:absolute;left:0;top:20px;width:4px;height:20px;background:var(--tvsk-red);border-radius:2px}
.tvsk-dayhead .dow{text-transform:uppercase;font-weight:600;font-size:calc(var(--tvs-fs-day) + 3px)}
.tvsk-dayhead .date{color:var(--tvsk-muted-2);font-size:13px}
.tvsk-daysec.is-today .tvsk-dayhead .dow{color:var(--tvsk-red)}
.tvsk-daygrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;padding-bottom:6px}
.tvsk-daygrid .tvsk-card{margin-bottom:0}
.tvsk-dayempty{color:var(--tvsk-muted-2);font-size:13px;padding:0 0 14px 16px}

/* Ansicht per Shortcode „ansicht=liste" erzwingen */
.tvsk-app.force-list .tvsk-grid{display:none}
.tvsk-app.force-list .tvsk-weeklist{display:block}

/* Legende */
.tvsk-legend{display:flex;gap:14px 22px;flex-wrap:wrap;align-items:center;padding:16px 0 8px;font-size:12.5px;color:var(--tvsk-muted)}
.tvsk-legend .grp{display:flex;gap:16px;flex-wrap:wrap}
.tvsk-legend .it{display:flex;align-items:center;gap:7px}
.tvsk-legend .d{width:10px;height:10px;border-radius:50%}
.tvsk-legend .bar{width:16px;height:4px;border-radius:2px}
.tvsk-legend .sep{color:var(--tvsk-muted-2)}

/* Modal */
.tvsk-overlay{position:fixed;inset:0;background:rgba(16,24,32,.55);display:none;align-items:center;justify-content:center;padding:40px 16px;overflow:auto;z-index:99999}
.tvsk-overlay.open{display:flex}
.tvsk-modal{background:#fff;border-radius:18px;max-width:640px;width:100%;margin:auto;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.4)}
.tvsk-modal .hero{height:230px;background-size:cover;background-position:center;position:relative;background-color:var(--tvsk-dark-2)}
.tvsk-modal .hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,24,32,.12),rgba(16,24,32,.5))}
.tvsk-modal .closebtn{position:absolute;top:16px;right:16px;background:rgba(16,24,32,.7);color:#fff;border:0;border-radius:999px;padding:8px 16px;text-transform:uppercase;font-size:13px;letter-spacing:.5px;cursor:pointer;z-index:2}
.tvsk-modal .body{padding:26px 30px 30px}
.tvsk-modal .cattag{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px}
.tvsk-modal .tvsk-modal-title{text-transform:uppercase;font-size:var(--tvs-fs-modal-title);letter-spacing:.5px;margin:8px 0 12px;padding:0;font-weight:700;line-height:1.15;color:inherit;font-family:inherit}
.tvsk-modal .desc{color:#111417;font-size:var(--tvs-fs-modal-desc);line-height:1.65}
.tvsk-modal .hinweis{margin-top:12px;font-size:13.5px;color:#b9690a;background:var(--tvsk-full-bg);padding:9px 13px;border-radius:8px}
.tvsk-modal .facts{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:22px 0 8px;padding-top:20px;border-top:1px solid var(--tvsk-line)}
.tvsk-fact{display:flex;gap:12px;align-items:center}
.tvsk-fact .ic{width:46px;height:46px;border-radius:12px;background:var(--tvsk-band);display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0}
.tvsk-fact .ic .m{font-size:9px;text-transform:uppercase;color:var(--tvsk-red);font-weight:700;letter-spacing:.5px}
.tvsk-fact .ic .d{font-size:20px;font-weight:700;line-height:1;color:var(--tvsk-dark)}
.tvsk-avatar{width:46px;height:46px;border-radius:50%;background:var(--tvsk-dark-2);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:16px;flex-shrink:0}
.tvsk-fact .lab{font-size:12px;color:var(--tvsk-muted)}
.tvsk-fact .val{font-size:14px;font-weight:600}
.tvsk-statusbadge{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;margin-top:18px;padding:9px 15px;border-radius:8px}
.tvsk-statusbadge.frei{background:var(--tvsk-free-bg);color:#1d7a51}
.tvsk-statusbadge.warteliste{background:var(--tvsk-full-bg);color:#b9690a}
.tvsk-statusbadge.pausiert{background:#eef0f2;color:#5a6066}
.tvsk-cta{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap}
.tvsk-overlay .tvsk-btn{border:0;border-radius:999px;padding:14px 26px;text-transform:uppercase;letter-spacing:.6px;font-size:var(--tvs-fs-btn);font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.tvsk-overlay .tvsk-btn:hover{text-decoration:none}
.tvsk-overlay .tvsk-btn-primary{background:var(--tvsk-red);color:#fff}
.tvsk-overlay .tvsk-btn-primary:hover{background:var(--tvsk-red-dark);color:#fff}
.tvsk-overlay .tvsk-btn-ghost{background:#fff;color:var(--tvsk-dark);border:1.5px solid var(--tvsk-line)}
.tvsk-overlay .tvsk-btn-ghost:hover{color:var(--tvsk-dark)}

.tvsk-fallback ul{margin:0 0 14px;padding-left:18px}
