.tsb-frontend-wrap{margin:1rem 0}
.tsb-view-toggle{display:flex;gap:8px;justify-content:flex-end;margin:0 0 10px}
.tsb-view-btn{padding:6px 10px;border:1px solid #c9ced6;border-radius:6px;background:#fff;cursor:pointer}
.tsb-view-btn.is-active{background:#1d4ed8;color:#fff;border-color:#1d4ed8}
.tsb-filter-form{margin-bottom:1rem;padding:0.75rem;border:1px solid #e5e5e5;border-radius:8px;background:#fafafa}
.tsb-filter-grid{display:grid;gap:10px;align-items:start}
.tsb-filter-col.is-empty{min-height:1px}
.tsb-filter-box{border:1px solid #d9d9d9;border-radius:6px;background:#fff;padding:0}
.tsb-filter-box summary{cursor:pointer;list-style:none;padding:8px 10px;font-weight:600}
.tsb-filter-box summary::-webkit-details-marker{display:none}
.tsb-filter-options{padding:0 10px 10px;display:flex;flex-direction:column;gap:6px;max-height:220px;overflow:auto}
.tsb-filter-options label{display:flex;gap:6px;align-items:flex-start}
.tsb-filter-actions{display:flex;gap:12px;margin-top:12px;align-items:center}
.tsb-filter-actions button{padding:8px 14px;cursor:pointer}
.tsb-table-wrap{overflow:auto;max-width:100%}
.tsb-table{width:100%;border-collapse:collapse}
.tsb-table th,.tsb-table td{padding:10px;border-bottom:1px solid #ececec;text-align:left;background:#fff}
.tsb-table thead th{position:sticky;top:0;z-index:2;background:#fff;box-shadow:0 1px 0 #e5e7eb}
.tsb-pagination{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.tsb-pagination a{padding:6px 10px;border:1px solid #ccc;border-radius:4px;text-decoration:none}
.tsb-pagination a.is-active{font-weight:700;background:#f3f3f3}
.tsb-view{display:none}.tsb-show-table .tsb-view-table{display:block}.tsb-show-cards .tsb-view-cards{display:grid}
.tsb-cards-wrap{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.tsb-card-item{border-radius:12px;padding:14px;box-shadow:0 2px 8px rgba(0,0,0,.08);overflow:hidden}
.tsb-card-field{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid rgba(255,255,255,.18)}
.tsb-card-field:last-child{border-bottom:0}
.tsb-card-label{font-weight:600;opacity:.92}
.tsb-card-value{text-align:right}
@media (max-width: 782px){.tsb-view-toggle{justify-content:flex-start}}

.tsb-turnaus-group-row td{
  background:#eaf3ff;
  border-left:4px solid #9bb8dd;
  font-weight:600;
}
.tsb-turnaus-card-group{
  background:#eaf3ff;
  border-left:4px solid #9bb8dd;
  padding:10px 12px;
  margin:10px 0 6px;
  font-weight:600;
}


/* Selkeämpi muotoilu ottelu- ja tuomarilistoihin */
.tsb-table thead th.tsb-col-group-match,
.tsb-table thead th.tsb-col-group-referee{
  background:#f6f8fb;
  font-weight:700;
}

.tsb-table th.tsb-col-sep-start,
.tsb-table td.tsb-col-sep-start{
  border-left:3px solid #d7dee8;
}

.tsb-table th.tsb-col-sep-end,
.tsb-table td.tsb-col-sep-end{
  border-right:3px solid #d7dee8;
}

.tsb-table td.tsb-col-koti,
.tsb-table td.tsb-col-kotijoukkue,
.tsb-table td.tsb-col-vieras,
.tsb-table td.tsb-col-vierasjoukkue{
  font-weight:600;
}

.tsb-table td.tsb-col-stadion,
.tsb-table td.tsb-col-ottelupaikka{
  color:#4b5563;
}

.tsb-table td.tsb-col-pelituomari,
.tsb-table td.tsb-col-syottotuomari,
.tsb-table td.tsb-col-kaksituomari,
.tsb-table td.tsb-col-kolmituomari,
.tsb-table td.tsb-col-takaraja,
.tsb-table td.tsb-col-tarkkailija,
.tsb-table th.tsb-col-pelituomari,
.tsb-table th.tsb-col-syottotuomari,
.tsb-table th.tsb-col-kaksituomari,
.tsb-table th.tsb-col-kolmituomari,
.tsb-table th.tsb-col-takaraja,
.tsb-table th.tsb-col-tarkkailija{
  background-image: linear-gradient(to right, rgba(234,243,255,.65), rgba(255,255,255,0));
}

.tsb-table tbody tr:hover td{
  background:#fafcff;
}
