:root {
  --tsv-green: #008e4e;
  --tsv-green-dark: #006f3b;
  --tsv-ink: #14231b;
  --tsv-muted: #68736d;
  --tsv-line: #dfe7e2;
  --tsv-soft: #eef7f2;
  --tsv-bg: #f4f6f5;
  --tsv-white: #fff;
  --tsv-radius: 18px;
  --tsv-shadow: 0 16px 45px rgba(20, 35, 27, .09);
}

.tsv-app, .tsv-public-calendar, .tsv-login-card {
  box-sizing: border-box;
  color: var(--tsv-ink);
  font-family: inherit;
}

.tsv-app *, .tsv-public-calendar *, .tsv-login-card * { box-sizing: border-box; }

.tsv-app {
  background: var(--tsv-bg);
  border: 1px solid var(--tsv-line);
  border-radius: 24px;
  box-shadow: var(--tsv-shadow);
  margin: 24px auto;
  max-width: 1180px;
  overflow: hidden;
}

.tsv-app-header {
  align-items: center;
  background: var(--tsv-ink);
  color: #fff;
  display: flex;
  justify-content: space-between;
  min-height: 92px;
  padding: 16px 28px;
}

.tsv-brand { align-items: center; display: flex; gap: 14px; }
.tsv-brand img { height: 58px; object-fit: contain; width: 58px; }
.tsv-brand span, .tsv-brand strong { display: block; }
.tsv-brand span { font-size: 12px; letter-spacing: .1em; opacity: .72; text-transform: uppercase; }
.tsv-brand strong { font-size: 21px; }
.tsv-user { align-items: center; display: flex; gap: 12px; text-align: right; }
.tsv-user span, .tsv-user small { display: block; }
.tsv-user small { color: #8fe0b8; }
.tsv-user .tsv-user-actions { display: flex; gap: 5px; justify-content: flex-end; margin-top: 5px; }
.tsv-logout-form { display: inline-flex; margin: 0 !important; padding: 0; }
.tsv-user .tsv-user-action {
  align-items: center !important;
  appearance: none !important;
  background: rgba(255,255,255,.14) !important;
  border: 1px solid rgba(255,255,255,.38) !important;
  border-radius: 999px !important;
  box-shadow: none !important;
  color: #fff !important;
  cursor: pointer;
  display: inline-flex !important;
  font: inherit !important;
  font-size: 10px !important;
  gap: 4px;
  line-height: 1 !important;
  margin: 0 !important;
  min-height: 28px !important;
  padding: 6px 8px !important;
  text-decoration: none !important;
  width: auto !important;
}
.tsv-user .tsv-user-action:hover { background: rgba(255,255,255,.25) !important; border-color: #fff !important; color: #fff !important; }
.tsv-user .tsv-user-action span { display: inline; }
.tsv-user-action svg { fill: none; height: 13px; pointer-events: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; width: 13px; }

.tsv-nav {
  background: #fff;
  border-bottom: 1px solid var(--tsv-line);
  display: flex;
  gap: 4px;
  overflow-x: auto;
  padding: 0 24px;
}

.tsv-nav button {
  align-items: center;
  background: transparent;
  border: 0;
  border-bottom: 3px solid transparent;
  color: var(--tsv-muted);
  cursor: pointer;
  display: inline-flex;
  gap: 8px;
  font: inherit;
  font-weight: 700;
  padding: 18px 20px 15px;
  white-space: nowrap;
  position: relative;
}
.tsv-nav-badge { align-items: center; background: #ff315f; border-radius: 999px; color: #fff; display: flex; font-size: 9px; height: 17px; justify-content: center; min-width: 17px; padding: 0 4px; position: absolute; right: 5px; top: 7px; }
.tsv-nav-icon { fill: none; height: 21px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; width: 21px; }
.tsv-nav-icon path:first-child:not(:last-child), .tsv-nav-icon circle:first-child { fill: none; }

.tsv-nav button.is-active { border-color: var(--tsv-green); color: var(--tsv-green); }
.tsv-panel { display: none; padding: 30px; }
.tsv-panel.is-active { display: block; }
.tsv-welcome, .tsv-section-head { align-items: center; display: flex; gap: 22px; justify-content: space-between; }
.tsv-welcome { background: linear-gradient(135deg, #fff 55%, var(--tsv-soft)); border: 1px solid var(--tsv-line); border-radius: var(--tsv-radius); min-height: 190px; overflow: hidden; padding: 28px 220px 28px 28px; position: relative; }
.tsv-welcome-copy { flex: 1; }
.tsv-welcome-photo { bottom: 0; height: 175px; margin: 0; max-width: 190px; object-fit: contain; object-position: center bottom; position: absolute; right: 15px; width: 190px; }
.tsv-welcome h1, .tsv-section-head h2, .tsv-form-shell h2 { color: var(--tsv-ink); margin: 3px 0 5px; }
.tsv-welcome p, .tsv-form-shell p { color: var(--tsv-muted); margin: 0; }
.tsv-eyebrow { color: var(--tsv-green); font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }

.tsv-primary {
  background: var(--tsv-green);
  border: 0;
  border-radius: 999px;
  color: #fff !important;
  cursor: pointer;
  display: inline-block;
  font: inherit;
  font-weight: 800;
  padding: 12px 20px;
  text-decoration: none !important;
}

.tsv-primary:hover { background: var(--tsv-green-dark); }
.tsv-primary:disabled { cursor: wait; opacity: .55; }
.tsv-link { background: transparent; border: 0; color: var(--tsv-green); cursor: pointer; font-weight: 800; }

.tsv-stat-grid {
  display: grid;
  gap: 16px;
  grid-template-columns: repeat(3, 1fr);
  margin: 18px 0 32px;
}

.tsv-stat-grid article { background: #fff; border: 1px solid var(--tsv-line); border-radius: var(--tsv-radius); padding: 20px; }
.tsv-stat-grid span, .tsv-stat-grid small { color: var(--tsv-muted); display: block; }
.tsv-stat-grid strong { color: var(--tsv-green); display: block; font-size: 34px; margin: 6px 0 0; }
.tsv-section-head { margin: 5px 0 16px; }
.tsv-section-head select, .tsv-section-head input { background: #fff; border: 1px solid var(--tsv-line); border-radius: 10px; min-height: 42px; padding: 8px 12px; }

.tsv-event-list { display: grid; gap: 10px; }
.tsv-event {
  align-items: center;
  background: #fff;
  border: 1px solid var(--tsv-line);
  border-radius: 14px;
  display: grid;
  gap: 16px;
  grid-template-columns: 58px minmax(0, 1fr) 48px;
  padding: 13px 16px;
}
.tsv-calendar-list .tsv-event[hidden] { display: none !important; }
.tsv-calendar-list[hidden], .tsv-calendar-grid-view[hidden], .tsv-calendar-more[hidden] { display: none !important; }
.tsv-calendar-week-heading {
  color: var(--tsv-ink);
  font-size: 19px;
  grid-column: 1 / -1;
  margin: 20px 0 2px;
}
.tsv-calendar-week-heading:first-child { margin-top: 2px; }
.tsv-calendar-more { justify-self: center; margin-top: 14px; }
.tsv-calendar-view-switch,
.tsv-calendar-period-switch {
  border: 1px solid var(--tsv-line);
  border-radius: 11px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  margin: 0 0 20px;
  overflow: hidden;
}
.tsv-calendar-view-switch button,
.tsv-calendar-period-switch button {
  appearance: none;
  background: #fff;
  border: 0;
  color: var(--tsv-muted);
  cursor: pointer;
  font: inherit;
  font-weight: 800;
  min-height: 46px;
  padding: 10px 18px;
}
.tsv-calendar-view-switch button + button,
.tsv-calendar-period-switch button + button { border-left: 1px solid var(--tsv-line); }
.tsv-calendar-view-switch button.is-active,
.tsv-calendar-period-switch button.is-active { background: var(--tsv-ink); color: #fff; }
.tsv-calendar-toolbar { align-items: center; display: grid; grid-template-columns: 48px 1fr 48px; margin: 4px 0 14px; text-align: center; }
.tsv-calendar-toolbar strong { font-size: 21px; text-transform: capitalize; }
.tsv-calendar-toolbar button {
  align-items: center;
  appearance: none;
  background: #fff;
  border: 2px solid var(--tsv-ink);
  border-radius: 50%;
  color: var(--tsv-ink);
  cursor: pointer;
  display: flex;
  font: inherit;
  font-size: 30px;
  height: 42px;
  justify-content: center;
  line-height: 1;
  padding: 0 0 4px;
  width: 42px;
}
.tsv-calendar-toolbar button:last-child { justify-self: end; }
.tsv-calendar-period-switch { margin-bottom: 14px; }
.tsv-calendar-grid {
  border-left: 1px solid var(--tsv-line);
  border-top: 1px solid var(--tsv-line);
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
}
.tsv-calendar-day-label {
  background: #eef2f0;
  border-bottom: 1px solid var(--tsv-line);
  border-right: 1px solid var(--tsv-line);
  font-size: 13px;
  font-weight: 800;
  padding: 8px 3px;
  text-align: center;
}
.tsv-calendar-cell {
  background: #fff;
  border-bottom: 1px solid var(--tsv-line);
  border-right: 1px solid var(--tsv-line);
  min-height: 112px;
  min-width: 0;
  padding: 6px;
}
.tsv-calendar-grid.is-week .tsv-calendar-cell { min-height: 250px; }
.tsv-calendar-cell.is-outside { background: #f7f8f7; color: #aeb6b1; }
.tsv-calendar-number { display: block; font-size: 13px; margin-bottom: 5px; text-align: right; }
.tsv-calendar-cell.is-today .tsv-calendar-number {
  background: #62eb81;
  border-radius: 999px;
  color: #07150d;
  font-weight: 900;
  margin-left: auto;
  padding: 3px 7px;
  width: max-content;
}
.tsv-calendar-event {
  background: var(--tsv-green-dark);
  border: 0;
  border-radius: 5px;
  color: #fff;
  cursor: pointer;
  display: block;
  font: inherit;
  font-size: 10px;
  line-height: 1.2;
  margin: 3px 0 0;
  overflow: hidden;
  padding: 5px;
  text-align: left;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 100%;
}
.tsv-calendar-event.is-blocked { background: #d62828; color: #fff; }
.tsv-unread-messages { margin: 22px 0; }
.tsv-message-form { background: #fff; border: 1px solid var(--tsv-line); border-radius: var(--tsv-radius); margin-bottom: 24px; padding: 22px; }
.tsv-message-form select[multiple] { min-height: 130px; }
.tsv-message-form > .tsv-primary { margin: 22px 0 8px !important; }
.tsv-message-form > .tsv-form-result { margin: 6px 0 0; }
.tsv-message-list { display: grid; gap: 12px; }
.tsv-message-card { background: #fff; border: 1px solid var(--tsv-line); border-left: 5px solid var(--tsv-green); border-radius: 14px; padding: 18px 58px 18px 18px; position: relative; }
.tsv-message-card.is-read { border-left-color: #aeb8b2; }
.tsv-message-head { align-items: flex-start; display: flex; gap: 14px; justify-content: space-between; }
.tsv-message-head span { color: var(--tsv-green); font-size: 11px; font-weight: 800; }
.tsv-message-head h3 { color: var(--tsv-ink); font-size: 19px; margin: 3px 0 0; }
.tsv-message-head small, .tsv-message-by { color: var(--tsv-muted); font-size: 11px; }
.tsv-message-by { margin: 5px 0 12px; }
.tsv-message-body p { margin: 0 0 10px; }
.tsv-message-pdf { color: var(--tsv-green); display: inline-block; font-weight: 800; margin: 5px 14px 5px 0; }
.tsv-message-read { font-size: 12px; padding: 9px 14px; }
.tsv-message-delete {
  align-items: center;
  appearance: none;
  background: #fff2f2;
  border: 0;
  border-radius: 50%;
  color: #c52e3b;
  cursor: pointer;
  display: flex;
  height: 38px;
  justify-content: center;
  padding: 0;
  position: absolute;
  right: 14px;
  top: 14px;
  width: 38px;
}
.tsv-message-delete:hover { background: #ffe0e2; }
.tsv-message-delete svg { fill: none; height: 19px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; width: 19px; }

.tsv-date { align-items: center; background: var(--tsv-soft); border-radius: 11px; display: flex; flex-direction: column; justify-content: center; min-height: 55px; }
.tsv-date strong { color: var(--tsv-green); font-size: 22px; line-height: 1; }
.tsv-date span { color: var(--tsv-muted); font-size: 10px; text-transform: uppercase; }
.tsv-app .tsv-event-main h3,
.tsv-public-calendar .tsv-event-main h3 {
  font-size: 17px !important;
  line-height: 1.3 !important;
  margin: 8px 0 3px !important;
  overflow-wrap: anywhere;
}
.tsv-event-main p { color: var(--tsv-muted); font-size: 13px; margin: 0; }
.tsv-event-time, .tsv-event-place { display: inline; }
.tsv-event-tags { display: flex; flex-wrap: wrap; gap: 5px; }
.tsv-event-tags span { background: #edf1ef; border-radius: 999px; color: var(--tsv-muted); font-size: 10px; font-weight: 700; padding: 3px 8px; }
.tsv-event-tags span:first-child { background: var(--tsv-soft); color: var(--tsv-green-dark); }
.tsv-event-tags .tsv-event-type-tag { font-weight: 800; }
.tsv-event-tags .tsv-lock { background: #fff4d8; color: #855d00; }
.tsv-event-open { color: var(--tsv-green); font-size: 30px; }
.tsv-app button.tsv-event-open {
  align-items: center !important;
  appearance: none !important;
  background: var(--tsv-soft) !important;
  border: 0 !important;
  border-radius: 50% !important;
  box-shadow: none !important;
  color: var(--tsv-green) !important;
  cursor: pointer;
  display: flex !important;
  font-size: 32px !important;
  font-weight: 500 !important;
  height: 44px !important;
  justify-content: center !important;
  line-height: 1 !important;
  margin: 0 !important;
  min-height: 44px !important;
  min-width: 44px !important;
  padding: 0 0 4px !important;
  width: 44px !important;
}
.tsv-app button.tsv-event-open:hover { background: #dcefe5 !important; color: var(--tsv-green-dark) !important; }

.tsv-dialog[hidden] { display: none !important; }
.tsv-dialog { inset: 0; position: fixed; z-index: 99999; }
.tsv-dialog-backdrop { background: rgba(8, 20, 13, .58); inset: 0; position: absolute; }
.tsv-dialog-card { background: #fff; border-radius: 20px; box-shadow: 0 25px 80px rgba(0,0,0,.25); left: 50%; max-height: min(82vh, 760px); max-width: 650px; overflow-y: auto; padding: 28px; position: absolute; top: 50%; transform: translate(-50%, -50%); width: calc(100% - 32px); }
.tsv-dialog-card h2 { margin: 5px 34px 4px 0; }
.tsv-dialog-card .tsv-dialog-close {
  align-items: center !important;
  appearance: none !important;
  background: var(--tsv-soft) !important;
  border: 0 !important;
  border-radius: 50% !important;
  box-shadow: none !important;
  color: var(--tsv-ink) !important;
  cursor: pointer;
  display: flex !important;
  height: 40px !important;
  justify-content: center !important;
  line-height: 1 !important;
  margin: 0 !important;
  min-height: 40px !important;
  min-width: 40px !important;
  padding: 0 !important;
  position: absolute;
  right: 18px;
  top: 18px;
  width: 40px !important;
  z-index: 3;
}
.tsv-dialog-card .tsv-dialog-close:hover { background: #dfece5 !important; color: var(--tsv-green-dark) !important; }
.tsv-dialog-close svg { display: block; fill: none; height: 20px; pointer-events: none; stroke: currentColor; stroke-linecap: round; stroke-width: 2.2; width: 20px; }
.tsv-account-form { display: grid; gap: 14px; margin-top: 20px; }
.tsv-account-form label > span { display: block; font-size: 12px; font-weight: 800; margin-bottom: 5px; }
.tsv-account-form input { border: 1px solid #ccd8d1; border-radius: 10px; font: inherit; min-height: 44px; padding: 9px 11px; width: 100%; }
.tsv-account-form input:focus { border-color: var(--tsv-green); box-shadow: 0 0 0 3px rgba(0,143,76,.12); outline: none; }
.tsv-account-form small { color: var(--tsv-muted); display: block; font-size: 10px; margin-top: 4px; }
.tsv-settings-link { align-items: center; background: var(--tsv-soft); border: 1px solid #cfe3d7; border-radius: 12px; color: var(--tsv-ink); display: flex; gap: 11px; margin-top: 18px; padding: 12px 14px; text-decoration: none; }
.tsv-app-actions { display: grid; gap: 9px; margin-top: 18px; }
.tsv-app-actions .tsv-settings-link { cursor: pointer; font-family: inherit; margin-top: 0; text-align: left; width: 100%; }
.tsv-app-actions .tsv-settings-link[hidden] { display: none; }
.tsv-settings-link:hover { background: #dff2e7; color: var(--tsv-green-dark); }
.tsv-settings-link svg { fill: none; flex: 0 0 25px; height: 25px; stroke: var(--tsv-green); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; width: 25px; }
.tsv-settings-link span { display: block; min-width: 0; }
.tsv-settings-link strong, .tsv-settings-link small { display: block; }
.tsv-settings-link strong { font-size: 14px; }
.tsv-settings-link small { color: var(--tsv-muted); font-size: 10px; margin-top: 2px; }
.tsv-settings-link b { color: var(--tsv-green); font-size: 26px; font-weight: 500; margin-left: auto; }
.tsv-pwa-update { align-items: center; background: #15271e; border-radius: 16px; bottom: max(18px, env(safe-area-inset-bottom)); box-shadow: 0 16px 44px #0004; color: #fff; display: flex; gap: 14px; left: 50%; max-width: calc(100vw - 30px); padding: 14px 16px; position: fixed; transform: translateX(-50%); width: 430px; z-index: 100000; }
.tsv-pwa-update span { flex: 1; font-size: 13px; line-height: 1.35; }
.tsv-pwa-update button { background: var(--tsv-green); border: 0; border-radius: 999px; color: #fff; cursor: pointer; font-weight: 800; padding: 10px 15px; white-space: nowrap; }
.tsv-detail-meta { color: var(--tsv-muted); font-size: 13px; }
.tsv-event-edit-button {
  align-items: center !important; background: var(--tsv-soft) !important; border: 0 !important;
  border-radius: 50% !important; color: var(--tsv-green-dark) !important; cursor: pointer;
  display: flex !important; height: 40px !important; justify-content: center !important;
  margin: 0 !important; min-height: 40px !important; padding: 0 !important;
  position: absolute; right: 66px; top: 18px; width: 40px !important;
}
.tsv-event-edit-button svg { fill: none; height: 19px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; width: 19px; }
.tsv-event-edit-form { margin-top: 0; }
.tsv-event-edit-form h2 { margin-right: 80px; }
.tsv-event-edit-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 18px; }
.tsv-event-edit-actions button { min-height: 42px; }
.tsv-attendance-summary { display: grid; gap: 10px; grid-template-columns: 1fr 1fr; margin: 20px 0; }
.tsv-attendance-summary div { background: var(--tsv-soft); border-radius: 12px; padding: 14px; }
.tsv-attendance-summary strong, .tsv-attendance-summary span { display: block; }
.tsv-attendance-summary strong { color: var(--tsv-green); font-size: 28px; }
.tsv-roster { display: grid; gap: 7px; }
.tsv-roster-person { align-items: center; border: 1px solid var(--tsv-line); border-radius: 11px; display: grid; gap: 10px; grid-template-columns: 42px 1fr 30px; padding: 8px; }
.tsv-roster-person img { background: var(--tsv-soft); border-radius: 50%; height: 42px; object-fit: contain; object-position: center bottom; width: 42px; }
.tsv-roster-person > span, .tsv-roster-person small { display: block; }
.tsv-roster-person small { color: var(--tsv-muted); font-size: 11px; }
.tsv-roster-person b { align-items: center; border-radius: 50%; display: flex; height: 28px; justify-content: center; width: 28px; }
.tsv-roster-person b.is-yes { background: #dff7e9; color: var(--tsv-green-dark); }
.tsv-roster-person b.is-no { background: #ffe5e5; color: #a02222; }
.tsv-response { border-top: 1px solid var(--tsv-line); margin-top: 18px; max-width: 100%; min-width: 0; padding-top: 14px; }
.tsv-response-state { display: none !important; }
.tsv-response-state.is-error { background: #fff0f0; border-radius: 8px; color: #a02222; display: block !important; padding: 7px 9px; }
.tsv-inline-attendance { border-top: 1px solid var(--tsv-line); grid-column: 1 / -1; margin: 2px -16px -13px; max-width: calc(100% + 32px); overflow: hidden; padding: 10px 16px 13px; }
.tsv-inline-attendance .tsv-response { border: 0; margin: 0; padding: 0; }
.tsv-inline-attendance .tsv-response + .tsv-response { border-top: 1px solid var(--tsv-line); margin-top: 12px; padding-top: 12px; }
.tsv-inline-attendance .tsv-response-state { font-size: 11px; margin: 0 0 7px; }
.tsv-response-person { display: block; font-size: 12px; margin-bottom: 4px; }
.tsv-inline-attendance .tsv-cutoff { margin: 10px 0 0; }
.tsv-response-actions { display: grid; gap: 8px; grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 100%; min-width: 0; width: 100%; }
.tsv-response-actions button { align-items: center; background: #fff; border: 1px solid var(--tsv-line); border-radius: 12px; color: #a4aaa7; cursor: pointer; display: flex; justify-content: center; margin: 0 !important; max-width: 100%; min-height: 54px; min-width: 0 !important; padding: 8px 13px; width: 100% !important; }
.tsv-response-actions button[data-tsv-response="yes"].is-active { background: #92efad; border-color: #65d989; color: #10291b; }
.tsv-response-actions button[data-tsv-response="no"].is-active { background: #ff7199; border-color: #ff4f82; color: #fff; }
.tsv-response-actions button[data-tsv-response="no"].is-awaiting-reason { box-shadow: 0 0 0 3px rgba(255,79,130,.2); }
.tsv-response-actions button:disabled { cursor: not-allowed; }
.tsv-attendance-icon { fill: none; height: 31px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; width: 31px; }
.tsv-cutoff { align-items: center; color: #ff0b55; display: flex; font-size: 13px; font-weight: 700; gap: 7px; }
.tsv-cutoff svg { fill: none; flex: 0 0 21px; height: 21px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.2; width: 21px; }
.tsv-absence-reason { display: block; margin-top: 12px; max-width: 100%; min-width: 0; overflow: hidden; width: 100%; }
.tsv-absence-reason[hidden] { display: none !important; }
.tsv-absence-reason span, .tsv-absence-reason small { display: block; }
.tsv-absence-reason span { font-size: 12px; font-weight: 800; margin-bottom: 5px; }
.tsv-absence-reason textarea { border: 1px solid #ccd8d1; border-radius: 10px; box-sizing: border-box !important; display: block; font: inherit; margin: 0 !important; max-width: 100% !important; min-width: 0 !important; padding: 9px 11px; resize: vertical; width: 100% !important; }
.tsv-absence-reason small { color: var(--tsv-muted); font-size: 10px; margin-top: 4px; overflow-wrap: anywhere; }

.tsv-venue-grid { display: grid; gap: 15px; grid-template-columns: repeat(2, 1fr); }
.tsv-venue-card { background: #fff; border: 1px solid var(--tsv-line); border-radius: var(--tsv-radius); padding: 20px; }
.tsv-venue-card.has-events { order: -1; }
.tsv-venue-card.is-unavailable { background: #eef0ef; border-color: #d3d8d5; color: #8a928e; filter: grayscale(1); opacity: .78; order: 99; }
.tsv-venue-card.is-unavailable .tsv-venue-head span,
.tsv-venue-card.is-unavailable .tsv-venue-head h3 { color: #7c8580; }
.tsv-venue-card.is-unavailable .tsv-venue-head b { background: #dde1df; color: #6f7773; }
.tsv-unavailable-note { background: #e2e5e3; border-radius: 10px; color: #737b77; font-weight: 800; margin: 0; padding: 12px; }
.tsv-venue-head { align-items: flex-start; display: flex; justify-content: space-between; }
.tsv-venue-head span { color: var(--tsv-green); font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.tsv-venue-head h3 { margin: 2px 0 12px; }
.tsv-venue-head b { background: var(--tsv-soft); border-radius: 999px; color: var(--tsv-green-dark); font-size: 10px; padding: 5px 9px; }
.tsv-venue-slot { border-top: 1px solid var(--tsv-line); display: grid; gap: 10px; grid-template-columns: 95px 1fr; padding: 10px 0; }
.tsv-venue-slot strong { color: var(--tsv-green-dark); font-size: 12px; }
.tsv-venue-slot span { color: var(--tsv-muted); font-size: 12px; }
.tsv-venue-slot.is-blocked { background: #fff0f1; border-radius: 9px; padding: 10px 9px; }
.tsv-venue-slot.is-blocked strong, .tsv-venue-slot.is-blocked span { color: #b42332; }
.tsv-venue-slot .tsv-area { background: var(--tsv-soft); border-radius: 999px; color: var(--tsv-green-dark); display: inline-block; font-size: 10px; font-style: normal; font-weight: 800; margin-left: 6px; padding: 3px 7px; white-space: nowrap; }
.tsv-free { background: var(--tsv-soft); border-radius: 10px; color: var(--tsv-green-dark); font-weight: 800; padding: 12px; }

.tsv-form-shell { background: #fff; border: 1px solid var(--tsv-line); border-radius: var(--tsv-radius); padding: 28px; }
.tsv-booking-form { margin-top: 24px; }
.tsv-form-grid { display: grid; gap: 16px; grid-template-columns: repeat(2, 1fr); }
.tsv-form-grid label { display: block; }
.tsv-form-grid label > span { display: block; font-size: 12px; font-weight: 800; margin-bottom: 6px; }
.tsv-form-grid input, .tsv-form-grid select, .tsv-form-grid textarea {
  background: #fff;
  border: 1px solid #ccd8d1;
  border-radius: 10px;
  font: inherit;
  min-height: 44px;
  padding: 9px 11px;
  width: 100%;
}
.tsv-booking-form .tsv-form-grid select {
  min-height: 38px;
  padding-bottom: 5px;
  padding-top: 5px;
}
.tsv-form-grid input:focus, .tsv-form-grid select:focus, .tsv-form-grid textarea:focus { border-color: var(--tsv-green); box-shadow: 0 0 0 3px rgba(0, 143, 76, .12); outline: none; }
.tsv-form-grid .tsv-full { grid-column: 1 / -1; }
.tsv-form-grid label small { color: var(--tsv-muted); display: block; font-size: 11px; margin-top: 5px; }
.tsv-form-grid .tsv-check-row {
  align-items: center;
  display: flex;
  font-size: 14px;
  gap: 9px;
  line-height: 1.35;
  margin-bottom: 0;
}
.tsv-form-grid .tsv-check-row input[type="checkbox"] {
  appearance: auto !important;
  flex: 0 0 22px;
  height: 22px !important;
  margin: 0 !important;
  min-height: 22px !important;
  padding: 0 !important;
  width: 22px !important;
}
.tsv-form-grid .tsv-repeat-option[hidden] { display: none !important; }
.tsv-form-grid .tsv-block-option[hidden],
.tsv-form-grid .tsv-block-period[hidden],
.tsv-form-grid .tsv-team-field[hidden],
.tsv-form-grid .tsv-time-field[hidden] { display: none !important; }
.tsv-form-result { border-radius: 10px; margin: 14px 0; padding: 0; }
.tsv-form-result.is-success, .tsv-form-result.is-error { padding: 10px 12px; }
.tsv-form-result.is-success { background: var(--tsv-soft); color: var(--tsv-green-dark); }
.tsv-form-result.is-error { background: #fff0f0; color: #a02222; }

.tsv-empty { align-items: flex-start; background: #fff; border: 1px dashed #bfd0c6; border-radius: 14px; display: flex; flex-direction: column; padding: 25px; }
.tsv-empty span { color: var(--tsv-muted); font-size: 13px; margin-top: 5px; }
.tsv-login-card { background: #fff; border: 1px solid var(--tsv-line); border-radius: 22px; box-shadow: var(--tsv-shadow); margin: 30px auto; max-width: 440px; padding: 34px 32px; text-align: center; }
.tsv-login-card img { display: inline-block !important; height: 56px !important; max-height: 56px !important; max-width: 56px !important; object-fit: contain !important; width: 56px !important; }
.tsv-login-card h2 { font-size: 28px !important; line-height: 1.2 !important; margin: 16px 0 14px !important; }
.tsv-login-card > p { color: var(--tsv-muted); font-size: 15px; line-height: 1.55; margin: 0 auto 24px; max-width: 340px; }
.tsv-login-card form { margin: 0 !important; text-align: left; }
.tsv-login-card form > p { padding: 0 !important; }
.tsv-login-card .login-username { margin: 0 0 22px !important; }
.tsv-login-card .login-password { margin: 0 0 18px !important; }
.tsv-login-card label {
  display: block !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  line-height: 1.35 !important;
  margin: 0 0 7px !important;
  text-align: left !important;
}
.tsv-login-card input[type="text"], .tsv-login-card input[type="password"] {
  appearance: none !important;
  background: #fff !important;
  border: 1px solid var(--tsv-line) !important;
  border-radius: 10px !important;
  box-shadow: none !important;
  font-family: inherit !important;
  font-size: 16px !important;
  height: 52px !important;
  line-height: 1.3 !important;
  margin: 0 !important;
  min-height: 52px !important;
  padding: 11px 13px !important;
  width: 100% !important;
}
.tsv-login-card .login-remember { margin: 0 0 24px !important; }
.tsv-login-card .login-remember label {
  align-items: center;
  display: flex !important;
  font-size: 15px !important;
  font-weight: 500 !important;
  gap: 9px;
  margin: 0 !important;
}
.tsv-login-card .login-remember input {
  appearance: auto !important;
  flex: 0 0 20px;
  height: 20px !important;
  margin: 0 !important;
  min-height: 20px !important;
  padding: 0 !important;
  width: 20px !important;
}
.tsv-login-card #wp-submit {
  appearance: none !important;
  background: var(--tsv-green) !important;
  border: 0 !important;
  border-radius: 999px !important;
  box-shadow: none !important;
  color: #fff !important;
  cursor: pointer;
  display: block !important;
  font: inherit !important;
  font-weight: 800 !important;
  min-height: 44px !important;
  padding: 11px 20px !important;
  width: 100% !important;
}
.tsv-login-card .login-submit, .tsv-login-card form { margin-bottom: 0 !important; }
.tsv-login-card .login-submit { margin-top: 0 !important; }
.tsv-login-card #wp-submit:hover { background: var(--tsv-green-dark) !important; color: #fff !important; }
.tsv-public-calendar { margin: 20px 0; }

.tsv-event.is-blocked { background: #fff0f0; border-color: #e14b4b; box-shadow: inset 5px 0 0 #d62828; }
.tsv-event.is-blocked .tsv-date { background: #d62828; color: #fff; }
.tsv-event.is-blocked .tsv-date strong,
.tsv-event.is-blocked .tsv-date span { color: #fff !important; }
.tsv-event.is-blocked .tsv-event-tags span { background: #ffe0e0; color: #a81717; }
.tsv-event.is-blocked .tsv-event-tags span:nth-child(2) { background: #d62828; color: #fff; }
.tsv-event.is-blocked h3 { color: #a81717; }

.tsv-venue-view-switch { background: #eef3f0; border-radius: 11px; display: inline-flex; gap: 3px; margin: 0 0 16px; padding: 4px; }
.tsv-venue-view-switch button { background: transparent; border: 0; border-radius: 8px; color: var(--tsv-muted); cursor: pointer; font: inherit; font-size: 13px; font-weight: 800; padding: 8px 15px; }
.tsv-venue-view-switch button.is-active { background: #fff; color: var(--tsv-green-dark); box-shadow: 0 1px 5px rgba(20, 35, 27, .12); }
.tsv-venue-filter {
  background: var(--tsv-soft);
  border-radius: 10px;
  display: flex;
  justify-content: center;
  margin-bottom: 16px;
  padding: 12px;
  width: 100%;
}
.tsv-venue-filter label, .tsv-week-controls label { display: grid; gap: 5px; }
.tsv-venue-filter label > span, .tsv-week-controls label > span { color: var(--tsv-muted); font-size: 11px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.tsv-date-label { align-items: center; display: flex; gap: 6px; }
.tsv-date-label svg { fill: none; height: 16px; stroke: var(--tsv-green); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; width: 16px; }
.tsv-venue-filter label { max-width: 180px; width: 100%; }
.tsv-venue-filter input { box-sizing: border-box; max-width: 180px; width: 100%; }
.tsv-week-booking { margin-top: 0; }
.tsv-week-mode-switch { background: #eef3f0; border-radius: 11px; display: inline-flex; gap: 3px; margin: 0 0 12px; padding: 4px; }
.tsv-week-mode-switch button { background: transparent; border: 0; border-radius: 8px; color: var(--tsv-muted); cursor: pointer; font: inherit; font-size: 13px; font-weight: 800; padding: 8px 15px; }
.tsv-week-mode-switch button.is-active { background: #fff; box-shadow: 0 1px 5px rgba(20, 35, 27, .12); color: var(--tsv-green-dark); }
.tsv-week-controls {
  align-items: end;
  background: var(--tsv-soft);
  border-radius: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  margin-bottom: 12px;
  padding: 12px;
  width: 100%;
}
.tsv-week-venue-field { flex: 0 1 300px; min-width: 220px; }
.tsv-week-venue-field[hidden] { display: none !important; }
.tsv-week-venue-field select { min-width: 0; width: 100%; }
.tsv-week-date-field { flex: 0 1 180px; max-width: 180px; min-width: 0; width: 100%; }
.tsv-week-date-field input { box-sizing: border-box; max-width: 100%; min-width: 0; width: 100%; }
.tsv-week-help { color: var(--tsv-muted); font-size: 13px; margin: 0 0 24px; }
.tsv-week-scroll { border: 1px solid var(--tsv-line); border-radius: 14px; max-width: 100%; overflow: auto; }
.tsv-week-table { border-collapse: separate; border-spacing: 0; min-width: 850px; table-layout: fixed; width: 100%; }
.tsv-week-table th, .tsv-week-table td { border-bottom: 1px solid var(--tsv-line); border-right: 1px solid var(--tsv-line); height: 34px; padding: 0; }
.tsv-week-table thead th { background: #f4f7f5; color: var(--tsv-ink); height: 54px; position: sticky; top: 0; z-index: 3; }
.tsv-week-table thead th:first-child, .tsv-week-table tbody th { left: 0; position: sticky; width: 64px; z-index: 4; }
.tsv-week-table thead th:first-child { z-index: 5; }
.tsv-week-table tbody th { background: #fff; color: var(--tsv-muted); font-size: 11px; font-weight: 700; text-align: center; }
.tsv-week-table thead span, .tsv-week-table thead strong { display: block; }
.tsv-week-table thead span { color: var(--tsv-muted); font-size: 11px; }
.tsv-week-table td.is-free { background: #f0fbf5; }
.tsv-week-table td.is-free button { appearance: none; background: transparent; border: 0; cursor: pointer; display: block; height: 100%; min-height: 33px; padding: 0; width: 100%; }
.tsv-week-table td.is-free button:hover, .tsv-week-table td.is-free button:focus-visible { background: #bdebd2; outline: 2px solid var(--tsv-green); outline-offset: -2px; }
.tsv-week-table td.is-busy,
.tsv-week-half.is-busy { background: var(--tsv-venue-color, #008e4e); color: var(--tsv-venue-text, #fff); font-size: 10px; font-weight: 800; overflow: hidden; padding: 2px 4px; }
.tsv-week-table td.is-blocked { background: #d62828; }
.tsv-week-table td.is-split { background: #f0fbf5; }
.tsv-week-halves { display: flex; height: 100%; min-height: 33px; width: 100%; }
.tsv-week-half { border: 0; box-sizing: border-box; display: block; flex: 0 0 50%; height: 100%; min-height: 33px; overflow: hidden; }
.tsv-week-half + .tsv-week-half { border-left: 1px solid rgba(20, 35, 27, .16); }
button.tsv-week-half.is-free { appearance: none; background: #f0fbf5; cursor: pointer; padding: 0; }
button.tsv-week-half.is-free:hover,
button.tsv-week-half.is-free:focus-visible { background: #bdebd2; outline: 2px solid var(--tsv-green); outline-offset: -2px; }
.tsv-week-half.is-blocked { background: #d62828; color: #fff; }
.tsv-week-overview { align-items: start; display: grid; gap: 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.tsv-week-venue-card { background: #fff; border: 1px solid var(--tsv-line); border-radius: 14px; min-width: 0; overflow: hidden; }
.tsv-week-venue-card.is-unavailable { background: #eef0ef; filter: grayscale(1); opacity: .78; order: 99; }
.tsv-week-venue-title { align-items: center; background: var(--tsv-card-color); color: var(--tsv-card-text); display: flex; gap: 8px; min-height: 48px; padding: 10px 13px; }
.tsv-week-venue-title span { font-size: 10px; font-weight: 800; letter-spacing: .08em; opacity: .8; text-transform: uppercase; }
.tsv-week-venue-title strong { font-size: 16px; }
.tsv-week-venue-title b { background: rgba(255,255,255,.55); border-radius: 999px; font-size: 10px; margin-left: auto; padding: 4px 7px; }
.tsv-week-overview .tsv-week-scroll { border: 0; border-radius: 0; }
.tsv-week-overview .tsv-week-table { min-width: 560px; }
.tsv-week-overview .tsv-week-table thead th:first-child,
.tsv-week-overview .tsv-week-table tbody th { width: 52px; }
.tsv-week-venue-unavailable { color: var(--tsv-muted); font-size: 13px; font-weight: 800; padding: 22px 14px; text-align: center; }
.tsv-overview-legend { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 10px; }
.tsv-overview-legend span { align-items: center; background: #fff; border: 1px solid var(--tsv-line); border-radius: 999px; color: var(--tsv-ink); display: inline-flex; font-size: 11px; font-weight: 800; gap: 6px; padding: 6px 9px; }
.tsv-overview-legend i { background: var(--tsv-legend-color); border-radius: 50%; display: block; height: 10px; width: 10px; }
.tsv-overview-legend span.is-unavailable { background: #eef0ef; color: #7b837f; opacity: .8; order: 99; }
.tsv-overview-legend span.is-unavailable i { background: #aeb5b1; }
.tsv-overview-key { align-items: center; color: var(--tsv-muted); display: flex; flex-wrap: wrap; font-size: 11px; gap: 5px; margin: 0 0 12px; }
.tsv-overview-key span { border-radius: 3px; display: inline-block; height: 11px; margin-left: 7px; width: 18px; }
.tsv-overview-key span:first-child { margin-left: 0; }
.tsv-overview-key .is-free { background: #f0fbf5; border: 1px solid #c8e8d6; }
.tsv-overview-key .is-busy { background: var(--tsv-green); }
.tsv-overview-key .is-blocked { background: #d62828; }
.tsv-combined-week-table { min-width: 1000px; }
.tsv-combined-week-table td { background: #f0fbf5; }
.tsv-combined-week-table thead th:not(:first-child),
.tsv-combined-week-table tbody td { border-right: 2px solid #c8d3cd; }
.tsv-combined-week-table tbody th { line-height: 1; vertical-align: middle; }
.tsv-overview-lanes { display: grid; grid-template-columns: repeat(var(--tsv-lane-count), minmax(0, 1fr)); height: 100%; min-height: 33px; width: 100%; }
.tsv-overview-lane { border-right: 1px solid rgba(20,35,27,.16); box-sizing: border-box; display: flex; min-height: 33px; overflow: hidden; }
.tsv-overview-lane:last-child { border-right: 0; }
.tsv-overview-lane.is-free,
.tsv-overview-lane i.is-free { background: #f0fbf5; }
.tsv-overview-lane.is-busy,
.tsv-overview-lane i.is-busy { background: var(--tsv-lane-color, var(--tsv-green)); }
.tsv-overview-lane.is-blocked,
.tsv-overview-lane i.is-blocked { background: #d62828; }
.tsv-overview-lane.is-split i { display: block; flex: 0 0 50%; min-height: 33px; }
.tsv-overview-lane.is-split i + i { border-left: 1px solid rgba(20,35,27,.18); }

.tsv-admin-hero { align-items: center; background: #14231b; border-radius: 14px; color: #fff; display: flex; gap: 18px; margin: 20px 0; padding: 22px; }
.tsv-admin-hero img { height: 72px; width: 72px; object-fit: contain; }
.tsv-admin-hero h1 { color: #fff; margin: 0 0 5px; }
.tsv-admin-hero p { margin: 0; opacity: .75; }
.tsv-admin-cards { display: grid; gap: 14px; grid-template-columns: repeat(4, 1fr); margin-bottom: 20px; }
.tsv-admin-cards a { background: #fff; border: 1px solid #dcdcde; border-radius: 12px; color: #14231b; padding: 20px; text-decoration: none; }
.tsv-admin-cards strong, .tsv-admin-cards span { display: block; }
.tsv-admin-cards strong { color: #008e4e; font-size: 28px; }

.tsv-table-scroll { overflow-x: auto; }
.tsv-standing table { border-collapse: collapse; min-width: 680px; width: 100%; }
.tsv-standing th, .tsv-standing td { border-bottom: 1px solid var(--tsv-line); padding: 11px 10px; text-align: center; }
.tsv-standing th:nth-child(2), .tsv-standing td:nth-child(2) { text-align: left; }
.tsv-standing thead { background: var(--tsv-ink); color: #fff; }
.tsv-standing tr.is-tsv { background: #008e4e !important; color: #fff !important; font-weight: 800; }
.tsv-standing tr.is-tsv td { background: #008e4e !important; border-bottom-color: #007a41; color: #fff !important; }
.tsv-standing tr.is-tsv td:first-child { box-shadow: inset 5px 0 0 #005d32; }
.tsv-standing tr.is-tsv strong, .tsv-standing tr.is-tsv a { color: #fff !important; }
.tsv-source { color: var(--tsv-muted); font-size: 11px; margin-top: 10px; }
.tsv-result-list { display: grid; gap: 9px; }
.tsv-result-row { align-items: center; background: #fff; border: 1px solid var(--tsv-line); border-radius: 12px; display: flex; flex-wrap: wrap; gap: 10px 18px; justify-content: space-between; padding: 13px 16px; }
.tsv-result-row span { color: var(--tsv-muted); }
.tsv-result-row strong { color: var(--tsv-green-dark); font-size: 18px; }
.tsv-empty a { color: var(--tsv-green); font-weight: 800; margin-top: 8px; }

@media (max-width: 760px) {
  body.tsv-teamplaner-page .site-header,
  body.tsv-teamplaner-page #masthead,
  body.tsv-teamplaner-page .elementor-location-header,
  body.tsv-teamplaner-page [data-elementor-type="header"],
  body.tsv-teamplaner-page .ast-mobile-popup-drawer {
    display: none !important;
  }
  body.tsv-teamplaner-page { --tsv-mobile-top: 0px; }
  body.admin-bar.tsv-teamplaner-page { --tsv-mobile-top: 46px; }
  body.tsv-teamplaner-page .tsv-app {
    border-radius: 0;
    margin: 0;
    max-width: none;
    padding-top: 137px;
    width: 100%;
  }
  body.tsv-teamplaner-page .tsv-app-header {
    height: 76px;
    left: 0;
    min-height: 76px;
    position: fixed;
    right: 0;
    top: var(--tsv-mobile-top);
    z-index: 9998;
  }
  body.tsv-teamplaner-page .tsv-nav {
    height: 61px;
    left: 0;
    position: fixed;
    right: 0;
    top: calc(var(--tsv-mobile-top) + 76px);
    z-index: 9997;
  }
  .tsv-app { border-radius: 0; margin: 0; }
  .tsv-login-card { margin: 18px 14px; max-width: none; padding: 26px 22px; }
  .tsv-login-card h2 { font-size: 25px !important; margin-top: 14px !important; }
  .tsv-login-card > p { font-size: 14px; margin-bottom: 20px; }
  .tsv-app-header { padding: 13px 16px; }
  .tsv-brand img { height: 46px; width: 46px; }
  .tsv-user span { max-width: 105px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .tsv-user .tsv-user-action span { display: none; }
  .tsv-user .tsv-user-action { height: 30px !important; justify-content: center; min-height: 30px !important; min-width: 30px !important; padding: 0 !important; width: 30px !important; }
  .tsv-nav { padding: 0 8px; }
  .tsv-nav { justify-content: space-around; }
  .tsv-nav button { flex: 1; flex-direction: column; font-size: 10px; gap: 3px; padding: 10px 7px 8px; }
  .tsv-nav-badge { right: calc(50% - 23px); top: 4px; }
  .tsv-nav-icon { height: 23px; width: 23px; }
  .tsv-panel { padding: 18px 14px; }
  .tsv-welcome { align-items: flex-start; min-height: 185px; padding: 20px 118px 20px 20px; }
  .tsv-welcome-copy { min-width: 100%; }
  .tsv-welcome-photo { bottom: 0; height: 155px; margin: 0; max-width: 125px; position: absolute; right: 4px; width: 34%; }
  .tsv-welcome .tsv-primary { margin-top: 15px; }
  .tsv-stat-grid { grid-template-columns: repeat(3, 1fr); gap: 8px; }
  .tsv-stat-grid article { padding: 13px 10px; }
  .tsv-stat-grid strong { font-size: 26px; }
  .tsv-stat-grid span, .tsv-stat-grid small { font-size: 10px; }
  .tsv-section-head { align-items: flex-start; flex-direction: column; }
  .tsv-section-head select { width: 100%; }
  [data-tsv-date-filter] { align-self: flex-start; max-width: 190px !important; min-width: 0 !important; width: 100% !important; }
  .tsv-calendar-week-heading { font-size: 18px; margin-top: 18px; }
  .tsv-calendar-view-switch button, .tsv-calendar-period-switch button { min-height: 44px; padding: 9px 8px; }
  .tsv-calendar-toolbar strong { font-size: 18px; }
  .tsv-calendar-cell { min-height: 86px; padding: 3px; }
  .tsv-calendar-grid.is-week .tsv-calendar-cell { min-height: 190px; }
  .tsv-calendar-day-label { font-size: 11px; padding: 6px 1px; }
  .tsv-calendar-event { font-size: 8px; padding: 4px 2px; }
  .tsv-message-form { padding: 16px 13px; }
  .tsv-message-head { display: block; }
  .tsv-message-head small { display: block; margin-top: 5px; }
  .tsv-event { gap: 10px; grid-template-columns: 52px minmax(0, 1fr) 46px; padding: 11px; }
  .tsv-app .tsv-event-main h3,
  .tsv-public-calendar .tsv-event-main h3 { font-size: 16px !important; line-height: 1.28 !important; }
  .tsv-event-meta .tsv-event-time,
  .tsv-event-meta .tsv-event-place { display: block; line-height: 1.18; }
  .tsv-event-meta .tsv-event-place { margin-top: 0; }
  .tsv-event-meta .tsv-event-separator { display: none; }
  .tsv-event { max-width: 100%; min-width: 0; overflow: hidden; }
  .tsv-event-main { min-width: 0; }
  .tsv-inline-attendance { margin: 8px 0 -11px; max-width: 100%; overflow: hidden; padding: 10px 0 11px; width: 100%; }
  .tsv-inline-attendance .tsv-response { max-width: 100%; min-width: 0; width: 100%; }
  .tsv-absence-reason,
  .tsv-absence-reason textarea { max-width: 100% !important; min-width: 0 !important; width: 100% !important; }
  .tsv-inline-attendance .tsv-response-actions { gap: 6px; }
  .tsv-inline-attendance .tsv-response-actions button { min-height: 44px; min-width: 0 !important; padding: 7px 4px; width: 100% !important; }
  .tsv-venue-grid, .tsv-form-grid { grid-template-columns: minmax(0, 1fr); }
  .tsv-week-controls { align-items: center; flex-direction: column; width: 100%; }
  .tsv-week-mode-switch { display: flex; width: 100%; }
  .tsv-week-mode-switch button { flex: 1; }
  .tsv-week-venue-field { flex-basis: auto; min-width: 0; width: 100%; }
  .tsv-week-controls select, .tsv-week-controls input { min-width: 0; width: 100%; }
  .tsv-week-date-field { align-self: center; flex-basis: auto; max-width: min(100%, 180px); width: 180px; }
  .tsv-venue-view-switch { display: flex; width: 100%; }
  .tsv-venue-view-switch button { flex: 1; }
  .tsv-venue-filter { width: 100%; }
  .tsv-venue-filter label { max-width: 180px; width: 180px; }
  .tsv-venue-filter input { max-width: 180px !important; width: 100%; }
  .tsv-week-scroll { margin-left: -2px; width: calc(100% + 4px); }
  .tsv-week-table { min-width: 760px; }
  .tsv-week-overview { grid-template-columns: 1fr; }
  .tsv-week-overview .tsv-week-table { min-width: 700px; }
  .tsv-combined-week-table { min-width: 920px; }
  .tsv-form-grid .tsv-full { grid-column: auto; }
  .tsv-form-shell { padding: 20px 15px; }
  .tsv-app .tsv-booking-form .tsv-schedule-field {
    box-sizing: border-box;
    max-width: 100%;
    min-width: 0;
    overflow: hidden;
    width: 100%;
  }
  .tsv-app .tsv-booking-form .tsv-schedule-field input[type="date"],
  .tsv-app .tsv-booking-form .tsv-schedule-field input[type="time"] {
    -webkit-appearance: none !important;
    appearance: none !important;
    box-sizing: border-box;
    display: block;
    height: 44px !important;
    inline-size: 100% !important;
    line-height: 24px !important;
    margin: 0 !important;
    max-height: 44px !important;
    max-width: 100% !important;
    min-height: 44px !important;
    min-width: 0 !important;
    overflow: hidden !important;
    padding: 9px 11px !important;
    width: 100% !important;
  }
  .tsv-app .tsv-booking-form .tsv-schedule-field input[type="date"]::-webkit-date-and-time-value,
  .tsv-app .tsv-booking-form .tsv-schedule-field input[type="time"]::-webkit-date-and-time-value {
    height: 24px;
    line-height: 24px;
    margin: 0;
    min-height: 0;
    text-align: left;
  }
  .tsv-admin-cards { grid-template-columns: 1fr; }
  .tsv-dialog-card { border-radius: 20px 20px 0 0; bottom: 0; left: 0; max-height: 88vh; padding: 24px 18px; top: auto; transform: none; width: 100%; }
  .tsv-app .tsv-booking-form .tsv-form-grid select {
    font-size: 15px !important;
    height: 40px !important;
    min-height: 40px !important;
    padding: 5px 34px 5px 10px !important;
  }
  .tsv-event-edit-actions { align-items: stretch; flex-direction: column-reverse; }
  .tsv-event-edit-actions button { width: 100%; }
}

/* Startseite: kommende Spiele im TSV-Terminslider */
.tsv-home-schedule { color: #20272e; font-family: Archivo, sans-serif; max-width: none; width: 100%; }
.tsv-home-schedule, .tsv-home-schedule * { box-sizing: border-box; }
.tsv-home-schedule-head { align-items: center; display: flex; justify-content: space-between; margin-bottom: 14px; }
.tsv-home-schedule-title { font-family: Archivo, sans-serif; font-size: clamp(19px, 1.6vw, 25px); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.tsv-home-schedule-title::after { color: #008e4e; content: " ›"; }
.tsv-home-schedule-track { display: flex; gap: 22px; overflow-x: auto; overscroll-behavior-x: contain; padding: 0 0 14px; scroll-behavior: smooth; scroll-snap-type: x mandatory; scrollbar-width: none; }
.tsv-home-schedule-track::-webkit-scrollbar { display: none; }
.tsv-home-schedule-card { background: #e8e9e8; border-radius: 8px; display: flex; flex: 0 0 calc((100% - 44px) / 3); flex-direction: column; min-height: 394px; min-width: 0; padding: 27px 29px 29px; scroll-snap-align: none; }
.tsv-home-schedule-card:nth-child(3n + 1) { scroll-snap-align: start; }
.tsv-home-schedule-card.is-active { background: linear-gradient(90deg, #008e4e 0%, #00683a 55%, #004d2b 100%); }
.tsv-home-schedule-card.is-active .tsv-home-schedule-date strong,
.tsv-home-schedule-card.is-active .tsv-home-schedule-date span { color: #fff; }
.tsv-home-schedule-date strong { color: #a7a9aa; display: block; font-family: Archivo, sans-serif; font-size: clamp(54px, 4.3vw, 72px); font-weight: 300; letter-spacing: -.04em; line-height: .95; }
.tsv-home-schedule-date span { color: #a7a9aa; display: block; font-size: 15px; font-weight: 400; margin-top: 9px; text-transform: uppercase; }
.tsv-home-schedule-games { display: grid; gap: 12px; margin-top: 25px; }
.tsv-home-schedule-game { align-items: center; background: #fff; border-radius: 4px; display: grid; gap: 14px; grid-template-columns: 24px minmax(0, 1fr); margin: 0; min-height: 82px; padding: 14px 15px; }
.tsv-home-schedule-ball { color: #008e4e; height: 24px; width: 24px; }
.tsv-home-schedule-ball svg { display: block; fill: none; height: 100%; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; width: 100%; }
.tsv-home-schedule-logos { align-items: center; display: flex; flex-direction: column; gap: 3px; width: 28px; }
.tsv-home-schedule-logos img, .tsv-home-schedule-logos span { display: block; height: 24px; object-fit: contain; width: 24px; }
.tsv-home-schedule-game:has(.tsv-home-schedule-logos) { grid-template-columns: 28px minmax(0, 1fr); }
.tsv-home-schedule-copy { min-width: 0; }
.tsv-home-schedule-competition { color: #a7a9aa; font-size: 12px; font-weight: 400; letter-spacing: .01em; line-height: 1.25; margin-bottom: 5px; }
.tsv-home-schedule-pairing { align-items: center; display: grid; gap: 12px; grid-template-columns: minmax(0, 1fr) auto; }
.tsv-home-schedule-pairing strong { color: #20272e; font-size: 14px; font-weight: 700; line-height: 1.3; overflow-wrap: anywhere; }
.tsv-home-schedule-pairing time { color: #20272e; font-size: 13px; font-weight: 700; white-space: nowrap; }
.tsv-home-schedule-venue { color: #a7a9aa; font-size: 12px; line-height: 1.25; margin-top: 5px; overflow: hidden; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.tsv-home-schedule-dots { display: flex; gap: 9px; justify-content: center; padding-top: 8px; }
.tsv-home-schedule-dots button { appearance: none; background: transparent; border: 2px solid #111; border-radius: 50%; cursor: pointer; height: 11px; margin: 0; min-height: 0; padding: 0; transition: background .2s ease, border-color .2s ease; width: 11px; }
.tsv-home-schedule-dots button.is-active { background: #008e4e; border-color: #008e4e; }
.tsv-home-schedule-dots button:focus-visible { outline: 2px solid #008e4e; outline-offset: 3px; }
.tsv-home-schedule-empty { background: #e8e9e8; border-radius: 7px; padding: 28px; }
@media (max-width: 760px) {
  .tsv-home-schedule-head { margin-bottom: 18px; padding-left: 2px; }
  .tsv-home-schedule-title { font-size: 20px; }
  .tsv-home-schedule-track { gap: 16px; scroll-padding-left: 0; }
  .tsv-home-schedule-card { flex-basis: 86%; min-height: 394px; padding: 25px 24px 26px; scroll-snap-align: start; }
  .tsv-home-schedule-date strong { font-size: 58px; }
  .tsv-home-schedule-date span { font-size: 16px; }
  .tsv-home-schedule-games { margin-top: 25px; }
  .tsv-home-schedule-game { gap: 13px; grid-template-columns: 24px minmax(0, 1fr); min-height: 104px; padding: 14px 14px; }
  .tsv-home-schedule-pairing strong { font-size: 15px; line-height: 1.45; }
  .tsv-home-schedule-pairing time { font-size: 14px; }
  .tsv-home-schedule-competition, .tsv-home-schedule-venue { font-size: 10px; }
}

/* Nächstes Mannschaftsspiel mit Vereinslogos und Live-Countdown */
.tsv-next-team-event {
  background: #fff;
  border-radius: 18px;
  box-shadow: 0 12px 30px rgba(0,0,0,.16);
  color: #20272e;
  container-name: tsv-next-game;
  container-type: inline-size;
  font-family: Archivo, sans-serif;
  margin-inline: auto;
  max-width: 840px;
  overflow: hidden;
  width: 100%;
}
.tsv-next-team-event, .tsv-next-team-event * { box-sizing: border-box; }
.tsv-next-team-game-head { font-size: clamp(18px,3.2cqi,27px); font-weight: 800; padding: clamp(18px,3cqi,25px) 5%; }
.tsv-next-team-game-stage { align-items: center; background: #f2f2f2; display: grid; gap: clamp(12px,3cqi,24px); grid-template-columns: minmax(80px,1fr) minmax(0,2.1fr) minmax(80px,1fr); padding: clamp(22px,4cqi,34px) 5%; }
.tsv-next-team-game-club { align-items: center; display: flex; justify-content: center; min-height: clamp(80px,15cqi,125px); min-width: 0; }
.tsv-next-team-game-club img { height: clamp(80px,15cqi,125px); max-width: 100%; object-fit: contain; width: auto; }
.tsv-next-team-game-countdown { display: grid; gap: clamp(6px,1.8cqi,15px); grid-template-columns: repeat(4,minmax(0,1fr)); min-width: 0; text-align: center; }
.tsv-next-team-game-countdown strong { display: block; font-size: clamp(30px,6.2cqi,52px); font-variant-numeric: tabular-nums; line-height: .95; }
.tsv-next-team-game-countdown span { display: block; font-size: clamp(10px,1.7cqi,14px); margin-top: 8px; }
.tsv-next-team-game-info { padding: clamp(20px,3.6cqi,30px) 5%; }
.tsv-next-team-game-info > strong { display: block; font-size: clamp(18px,3cqi,25px); margin-bottom: clamp(16px,3cqi,25px); }
.tsv-next-team-game-info > div { display: flex; flex-wrap: wrap; font-size: clamp(14px,2.1cqi,18px); gap: 14px clamp(24px,6cqi,50px); }
.tsv-game-date::before { content: "◫"; font-size: 1.15em; margin-right: 12px; }
.tsv-game-venue::before { content: "⌖"; font-size: 1.2em; margin-right: 12px; }
.tsv-next-team-event.is-empty strong { display: block; font-size: 16px; margin-top: 4px; }
@container tsv-next-game (max-width: 600px) {
  .tsv-next-team-game-head { padding: 18px 20px; }
  .tsv-next-team-game-stage { gap: 10px; grid-template-columns: minmax(52px,1fr) minmax(0,2.5fr) minmax(52px,1fr); padding: 22px 12px; }
  .tsv-next-team-game-club { min-height: clamp(58px,16cqi,82px); }
  .tsv-next-team-game-club img { height: clamp(58px,16cqi,82px); }
  .tsv-next-team-game-countdown { gap: 4px; }
  .tsv-next-team-game-countdown strong { font-size: clamp(22px,7.5cqi,34px); }
  .tsv-next-team-game-countdown span { font-size: clamp(8px,2.2cqi,10px); margin-top: 5px; }
  .tsv-next-team-game-info { padding: 20px; }
  .tsv-next-team-game-info > strong { margin-bottom: 16px; }
  .tsv-next-team-game-info > div { display: grid; gap: 10px; }
}
@media (max-width: 700px) {
  .tsv-next-team-game-head { padding: 18px 20px; }
  .tsv-next-team-game-stage { gap: 12px; grid-template-columns: 70px minmax(0,1fr) 70px; padding: 24px 12px; }
  .tsv-next-team-game-club { min-height: 72px; }
  .tsv-next-team-game-club img { height: 72px; max-width: 72px; }
  .tsv-next-team-game-countdown { gap: 5px; }
  .tsv-next-team-game-countdown strong { font-size: clamp(24px,8vw,36px); }
  .tsv-next-team-game-countdown span { font-size: 9px; margin-top: 5px; }
  .tsv-next-team-game-info { padding: 20px; }
  .tsv-next-team-game-info > strong { margin-bottom: 16px; }
  .tsv-next-team-game-info > div { display: grid; gap: 10px; }
}

/* Startseite: kompakte Tabelle und Ergebnis-Slider */
.tsv-home-compact-table, .tsv-home-results { color: #333; font-family: inherit; width: 100%; }
.tsv-home-card-title { font-size: clamp(22px, 2vw, 30px); font-weight: 800; letter-spacing: .02em; margin: 0 0 22px; text-transform: uppercase; }
.tsv-home-data-card, .tsv-home-result-slide { background: #fff; border-radius: 20px; }
.tsv-home-data-card { padding: 34px 38px; }
.tsv-home-table-scroll { overflow-x: auto; }
.tsv-home-data-card table { border-collapse: collapse; margin: 0; min-width: 460px; width: 100%; }
.tsv-home-data-card th, .tsv-home-data-card td { border: 0; border-bottom: 1px solid #222; padding: 14px 10px; text-align: center; }
.tsv-home-data-card th:nth-child(2), .tsv-home-data-card td:nth-child(2) { text-align: left; }
.tsv-home-data-card tbody tr:last-child td { border-bottom: 0; }
.tsv-home-data-card tr.is-tsv { background: rgba(0,143,76,.11); color: #006e3b; font-weight: 800; }
.tsv-home-data-empty { align-items: center; display: flex; flex-direction: column; gap: 7px; justify-content: center; min-height: 170px; text-align: center; }
.tsv-home-data-empty span { color: #777; font-size: 14px; }
.tsv-home-results-head { align-items: center; display: flex; justify-content: space-between; }
.tsv-home-slider-buttons { display: flex; gap: 8px; margin-bottom: 22px; }
.tsv-home-slider-buttons button { align-items: center; background: #008e4e; border: 0; border-radius: 50%; color: #fff; cursor: pointer; display: flex; font-size: 27px; height: 38px; justify-content: center; line-height: 1; padding: 0 0 3px; width: 38px; }
.tsv-home-results-track { display: flex; gap: 0; overflow-x: auto; scroll-behavior: smooth; scroll-snap-type: x mandatory; scrollbar-width: none; }
.tsv-home-results-track::-webkit-scrollbar { display: none; }
.tsv-home-result-slide { align-items: center; display: flex; flex: 0 0 100%; flex-direction: column; justify-content: center; min-height: 310px; padding: 34px 26px; scroll-snap-align: start; text-align: center; }
.tsv-home-result-team { background: #008e4e; border-radius: 999px; color: #fff; font-size: 13px; font-weight: 800; letter-spacing: .06em; padding: 6px 14px; text-transform: uppercase; }
.tsv-home-result-competition { font-size: 18px; letter-spacing: .06em; margin-top: 14px; text-transform: uppercase; }
.tsv-home-result-score { font-size: clamp(52px, 6vw, 72px); line-height: 1; margin: 26px 0 22px; }
.tsv-home-result-pair { align-items: center; display: grid; font-size: 17px; gap: 15px; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); max-width: 470px; text-transform: uppercase; width: 100%; }
.tsv-home-result-pair span:first-child { text-align: right; }
.tsv-home-result-pair span:last-child { text-align: left; }
.tsv-home-result-slide time, .tsv-home-result-sample { color: #777; font-size: 12px; margin-top: 14px; }
.tsv-home-result-sample { background: #f2f2f2; border-radius: 999px; padding: 4px 9px; }
.tsv-home-result-empty { color: #777; font-size: 18px; margin-top: 52px; }
.tsv-home-slider-dots { display: flex; gap: 7px; justify-content: center; padding-top: 16px; }
.tsv-home-slider-dots span { background: #c8c8c8; border-radius: 999px; height: 7px; transition: width .2s ease, background .2s ease; width: 7px; }
.tsv-home-slider-dots span.is-active { background: #008e4e; width: 22px; }
@media (max-width: 760px) {
  .tsv-home-card-title { font-size: 23px; margin-bottom: 15px; }
  .tsv-home-data-card { border-radius: 16px; padding: 18px 15px; }
  .tsv-home-result-slide { border-radius: 16px; min-height: 280px; padding: 26px 15px; }
  .tsv-home-result-pair { font-size: 14px; gap: 9px; }
  .tsv-home-slider-buttons { margin-bottom: 15px; }
}
.tsv-app-version {
  margin: 18px 0 0;
  color: #7a8580;
  font-size: 12px;
  line-height: 1.4;
  text-align: center;
}
