.tp-wrap{max-width:1180px;margin:0 auto;padding:1rem}.tp-filter{display:flex;gap:.65rem;flex-wrap:wrap;align-items:flex-start;margin:1rem 0}.tp-search-wrap{position:relative;display:inline-flex}.tp-search-text{min-width:280px;min-height:2.3rem}.tp-clear-field,.tp-clear-date{border:1px solid #ccc;background:#fff;border-radius:999px;cursor:pointer}.tp-filter fieldset{border:1px solid #ddd;border-radius:8px;padding:.5rem .75rem}.tp-filter-row-wide{flex-basis:100%}.tp-rating-filter label,.tp-category-filter label,.tp-akbez-filter label{display:inline-flex;gap:.25rem;margin:.15rem .6rem .15rem 0}.tp-akbez-group{margin:.25rem 0}.tp-date-wrap{display:inline-flex;gap:.25rem;align-items:center}.tp-result-toolbar{display:flex;gap:1rem;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:1rem 0;padding:.5rem;border:1px solid #e3e3e3;border-radius:8px}.tp-card{border:1px solid #ddd;border-radius:10px;padding:1rem;margin:.85rem 0;background:#fff}.tp-meta{color:#666}.tp-badges{display:flex;gap:.4rem;flex-wrap:wrap}.tp-tabs,.tp-subtabs{display:flex;gap:.5rem;flex-wrap:wrap;border-bottom:1px solid #ddd;margin:1rem 0}.tp-tabs a,.tp-subtabs a{padding:.45rem .65rem;text-decoration:none}.tp-tabs a.active,.tp-subtabs a.active{font-weight:700;border-bottom:3px solid currentColor}.tp-table{width:100%;border-collapse:collapse;margin:1rem 0}.tp-table th,.tp-table td{border-bottom:1px solid #ddd;padding:.5rem;text-align:left}.tp-dl{display:grid;grid-template-columns:180px 1fr;gap:.5rem}.tp-flag{white-space:nowrap}.tp-ko-shell{margin:1rem 0}.tp-ko-controls{display:flex;gap:.45rem;align-items:center;flex-wrap:wrap;margin:.5rem 0 .75rem}.tp-ko-controls button,.tp-ko-toggle{border:1px solid #ccc;border-radius:999px;background:#fff;padding:.25rem .55rem;font-size:.85rem}.tp-ko-round.tp-ko-hidden{display:none}.tp-ko-tableau{display:flex;gap:.75rem;overflow-x:auto;margin:1rem 0;padding-bottom:.5rem;--tp-ko-row:64px}.tp-ko-round{min-width:230px;border-left:2px solid #e4e4e4;padding-left:.75rem;display:grid;grid-template-rows:auto repeat(var(--tp-ko-visible-size,var(--tp-ko-size)),var(--tp-ko-row));grid-auto-flow:row}.tp-ko-match,.tp-ko-seed{border:1px solid #ddd;border-radius:8px;background:#fff;padding:.45rem .55rem;margin:3px 0;display:flex;flex-direction:column;justify-content:center;box-sizing:border-box}.tp-ko-result{font-weight:700}.tp-ko-match small{display:block;color:#666}.tp-ko-club{font-size:.8rem;color:#666;margin-top:.15rem}.tp-ko-pair-a{background:#edf4ff;border-color:#9cc4ff}.tp-ko-pair-b{background:#edf9f0;border-color:#91d6a2}.tp-ko-pair-end{margin-bottom:10px}.tp-ko-special{font-style:italic;color:#555}.tp-ko-empty{visibility:hidden}.tp-ko-quali-groups{display:block;margin:1rem 0}.tp-ko-quali-group{border:1px solid #ddd;border-radius:10px;padding:.75rem;background:#fafafa;margin-bottom:2rem}.tp-address-table{margin-top:.5rem}.tp-ko-jump-links{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:.75rem 0;padding:.5rem;border:1px solid #ddd;border-radius:8px;background:#fafafa}.tp-ko-jump-links a{display:inline-block;border:1px solid #ccc;border-radius:999px;padding:.2rem .55rem;text-decoration:none;background:#fff}.tp-ko-siegart{color:#666}.tp-ko-back-top{text-align:right;margin:.75rem 0 1.25rem}.tp-ko-back-top a{border:1px solid #ccc;border-radius:999px;padding:.25rem .65rem;background:#fff;text-decoration:none}.tp-seed-number{display:inline;font-weight:700;white-space:nowrap;margin-left:.25rem}.tp-participant-section{margin-top:1.25rem;background:#f6f6f6;border-left:4px solid #ccc;padding:.35rem .6rem}
.tp-ko-status-marker{font-weight:700;white-space:nowrap}
.tp-rr-shell{margin:1rem 0}.tp-rr-group{border:1px solid #ddd;border-radius:10px;padding:.75rem;background:#fafafa;margin-bottom:2rem}.tp-rr-wrap{overflow-x:auto}.tp-rr-matrix{min-width:720px}.tp-rr-matrix th,.tp-rr-matrix td{text-align:center;vertical-align:middle}.tp-rr-matrix th:nth-child(2),.tp-rr-standings td:nth-child(2){text-align:left}.tp-rr-player{min-width:220px;text-align:left}.tp-rr-cell{min-height:42px;align-items:center}.tp-rr-win .tp-rr-cell{background:#edf9f0;border-color:#91d6a2}.tp-rr-loss .tp-rr-cell{background:#ffe8e3;border-color:#ff9a87}.tp-rr-diagonal{background:#fff;color:#111;font-family:monospace}.tp-rr-standings th{white-space:nowrap}
.tp-ko-thirdplace{margin-top:.45rem;border:1px solid #ccc;border-radius:8px;background:#fff;padding:.35rem .45rem;font-size:.82rem}.tp-ko-thirdplace strong{display:block;margin-bottom:.15rem}.tp-ko-thirdplace .tp-ko-result{font-weight:700}
.tp-rr-quali-groups{display:block;margin:1rem 0}.tp-rr-quali-groups .tp-rr-shell{margin-top:0}.tp-rr-matrix .tp-seed-number,.tp-rr-standings .tp-seed-number{display:inline;font-weight:700;white-space:nowrap;margin-left:.25rem}.tp-rr-name-line{display:block;white-space:normal}
.tp-empty{border:1px dashed #ccc;border-radius:8px;background:#fafafa;color:#666;padding:.75rem;margin:.75rem 0}
.tp-ko-time,.tp-ko-date,.tp-ko-facility,.tp-ko-court,.tp-ko-place{display:block;color:#555;font-size:.8rem;margin-top:.12rem}.tp-ko-time+.tp-ko-facility,.tp-ko-date+.tp-ko-facility,.tp-ko-facility+.tp-ko-court{margin-top:.05rem}
.tp-table td .tp-ko-time,.tp-table td .tp-ko-date,.tp-table td .tp-ko-facility,.tp-table td .tp-ko-court{font-size:.82rem}
.tp-registration-form fieldset{border:1px solid #ddd;border-radius:10px;padding:1rem;margin:1rem 0}.tp-registration-form label{display:block;margin:.55rem 0}.tp-registration-form input,.tp-registration-form textarea{width:100%;max-width:520px;box-sizing:border-box}.tp-registration-form textarea{min-height:5rem}.tp-form-actions{margin:1rem 0}.tp-form-actions button{border:1px solid #666;border-radius:999px;background:#fff;padding:.45rem 1rem;font-weight:700;cursor:pointer}
.tp-registration-form{padding:1rem}.tp-registration-form h4{margin-top:1.1rem;border-left:4px solid #ccc;padding:.25rem .6rem;background:#f6f6f6}.tp-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.8rem 1rem}.tp-form-grid label{display:block;font-weight:600}.tp-registration-form input,.tp-registration-form select,.tp-registration-form textarea{width:100%;box-sizing:border-box;border:1px solid #ccc;border-radius:6px;padding:.4rem}.tp-form-wide{grid-column:1/-1}.tp-registration-form textarea{min-height:5rem}.tp-required{color:#b00020;font-weight:700}.tp-registration-info{background:#fafafa}.tp-form-actions{margin:1rem 0}.tp-form-actions button{border:1px solid #666;border-radius:999px;background:#fff;padding:.45rem 1rem;font-weight:700;cursor:pointer}
.tp-field-label{display:inline}.tp-required{display:inline;color:#b00020;font-weight:700}.tp-form-grid input,.tp-form-grid select,.tp-form-grid textarea{margin-top:.2rem}.tp-transfer-info{margin-top:1rem}
.tp-consent,.tp-copy-mail{margin-top:1rem;background:#fafafa}.tp-consent label,.tp-copy-mail label{display:block;font-weight:600}.tp-form-actions button:disabled{opacity:.45;cursor:not-allowed}
.tp-registration-summary{margin:.7rem 0}.tp-registration-summary dd{font-weight:700}
.tp-dtb-link-icon{color:#0066cc;font-size:.95rem;margin-left:.25rem;vertical-align:middle;text-decoration:none}.tp-competition-actions{white-space:nowrap}.tp-action-icon{display:inline-block;margin-right:.35rem;text-decoration:none;font-size:1rem}.tp-action-icon:hover{text-decoration:none;transform:translateY(-1px)}.tp-tvpro-filter{display:inline-flex;gap:.25rem;align-items:center;border:1px solid #ddd;border-radius:8px;padding:.45rem .65rem}.tp-external-registration{background:#fafafa}

.tp-running-tournament{background:#edf9f0;border:1px solid #91d6a2;color:#1f5f1f;padding:2px 6px;border-radius:4px;font-weight:700;display:inline-block}

/* Ergänzungen für com_tennisportal 0.5.61 */
.tp-source-filter label,.tp-status-filter label{display:inline-flex;gap:.25rem;margin:.15rem .6rem .15rem 0}.tp-active-filter-panel{margin:1rem 0;padding:.75rem;border:1px solid #dce8df;border-radius:10px;background:#f7faf8}.tp-active-filters{display:flex;gap:.45rem;flex-wrap:wrap;margin-top:.55rem}.tp-filter-chip{display:inline-flex;align-items:center;padding:.3rem .65rem;border:1px solid #b9d7c1;border-radius:999px;background:#fff;color:#245c32;text-decoration:none;font-size:.85rem}.tp-filter-chip:hover{background:#edf9f0;text-decoration:none}.tp-source-filter,.tp-status-filter{min-width:220px}

.tp-schedule-wrapper{
    overflow-x:auto;
    margin-bottom:2rem;
}

.tp-schedule-table{
    min-width:900px;
}

.tp-schedule-table th{
    background:#f5f5f5;
    text-align:center;
}

.tp-schedule-table td{
    vertical-align:top;
    min-width:180px;
}

.tp-schedule-match{
    padding:.5rem;
    margin:.25rem 0;
    border:1px solid #ddd;
    border-radius:6px;
    background:#fff;
}

/* Zeitplan 0.7.0d: klickbare Spieltage */
.tp-schedule-days{margin-top:1rem;margin-bottom:1.25rem;display:flex;flex-wrap:wrap;gap:.45rem}.tp-schedule-days a{white-space:nowrap}.tp-schedule-days a.active{background:#167a35;color:#fff;border-color:#167a35}

/* Zeitplan 0.7.0e */
.tp-schedule-competition{line-height:1.25}.tp-schedule-player{font-weight:700}

/* Zeitplan 0.7.0f */
.tp-schedule-table thead th:not(.tp-schedule-time-heading){font-weight:750}.tp-schedule-competition{white-space:normal}

/* Zeitplan 0.7.0g */
.tp-schedule-table thead th{overflow-wrap:anywhere}

/* Zeitplan 0.7.0h */
.tp-schedule-table thead th:not(.tp-schedule-time-heading){text-transform:none}

/* Zeitplan 0.7.1: Feldfilter und Rundenbezeichnung */
.tp-schedule-field-controls{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:1rem 0}.tp-schedule-field-controls .tp-ko-toggle{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .65rem;border:1px solid #d7dfda;border-radius:999px;background:#fff;cursor:pointer}.tp-schedule-field-controls .tp-ko-toggle:has(input:checked){border-color:#167a35;background:#f1f8f3}.tp-schedule-show-all{padding:.35rem .7rem;border:1px solid #d7dfda;border-radius:999px;background:#fff;cursor:pointer}.tp-schedule-match[hidden],.tp-schedule-table tr[hidden]{display:none!important}


/* Zeitplan 0.7.2: Auswahl umkehren und Platz-Stapel */
.tp-schedule-invert{padding:.35rem .7rem;border:1px solid #d7dfda;border-radius:999px;background:#fff;cursor:pointer}.tp-schedule-cell-has-match{vertical-align:top}.tp-schedule-match+.tp-schedule-match{margin-top:.6rem}

/* Zeitplan 0.7.3: Positionsfolge */
.tp-schedule-time .tp-schedule-not-before{
    display:block;
    margin-top:.2rem;
    color:#68776f;
    font-size:.72rem;
    font-weight:500;
    white-space:normal;
}
.tp-schedule-sequence{
    margin-bottom:.4rem;
    color:#53645a;
    font-size:.76rem;
    font-weight:700;
}
