:root{--c-bg:#0f172a;--c-surface:#1e293b;--c-surface-alt:#0d1a2e;--c-footer-bg:#0a1122;--c-border:#334155;--c-border-row:#1a2744;--c-accent-border:#1e3a5f;--c-text:#f1f5f9;--c-text-bright:#f8fafc;--c-text-muted:#64748b;--c-text-dim:#475569;--c-text-secondary:#94a3b8;--c-accent:#93c5fd;--c-live:#f87171;--c-live-dot:#ef4444;--c-straf:#f97316;--c-status-waiting-bg:#1e293b;--c-status-waiting-text:#334155;--c-footer-text:#1e3a5f;--c-search-bg:#1e293b;--c-search-border:#334155;--c-search-focus:#3b82f6}html.light{--c-bg:#f1f5f9;--c-surface:#e2e8f0;--c-surface-alt:#f8fafc;--c-footer-bg:#e2e8f0;--c-border:#94a3b8;--c-border-row:#cbd5e1;--c-accent-border:#bfdbfe;--c-text:#1e293b;--c-text-bright:#0f172a;--c-text-muted:#64748b;--c-text-dim:#64748b;--c-text-secondary:#475569;--c-accent:#1d4ed8;--c-live:#dc2626;--c-live-dot:#dc2626;--c-straf:#ea580c;--c-status-waiting-bg:#e2e8f0;--c-status-waiting-text:#94a3b8;--c-footer-text:#94a3b8;--c-search-bg:#fff;--c-search-border:#94a3b8;--c-search-focus:#2563eb}html,body{background:var(--c-bg);height:100%;color:var(--c-text);margin:0;padding:0}.root{flex-direction:column;min-height:100vh;font-family:system-ui,sans-serif;display:flex}.sticky-top{z-index:10;position:sticky;top:0}.tv-header{background:var(--c-surface);border-bottom:2px solid var(--c-border);justify-content:space-between;align-items:center;padding:.9rem 2rem;display:flex}.tv-header-left{align-items:center;gap:1rem;display:flex}.tv-logo{object-fit:contain;width:auto;height:2.8rem}.tv-title{letter-spacing:-.02em;color:var(--c-text-bright);font-size:1.9rem;font-weight:700}.tv-badge{letter-spacing:.05em;text-transform:uppercase;border-radius:9999px;padding:.2rem .75rem;font-size:.85rem;font-weight:600}.tv-badge-blue{color:#bfdbfe;background:#1d4ed8}.tv-badge-green{color:#bbf7d0;background:#166534}.ansicht-pills{flex-shrink:0;align-items:center;gap:.4rem;display:flex}.tv-pill{letter-spacing:.05em;text-transform:uppercase;cursor:pointer;border:none;border-radius:9999px;padding:.2rem .75rem;font-size:.85rem;font-weight:600;transition:opacity .15s}.tv-pill-inactive{background:var(--c-surface);color:var(--c-text-muted);border:1.5px solid var(--c-border)}.tv-pill-inactive:hover{opacity:.8}.jahr-select-wrap{display:inline-block;position:relative}.jahr-select{appearance:none;border:none;border-bottom:2px solid var(--c-text-muted);color:var(--c-text-bright);letter-spacing:-.01em;cursor:pointer;background:0 0;outline:none;padding:.1rem 1.6rem .1rem .3rem;font-family:inherit;font-size:1.4rem;font-weight:700;transition:border-color .15s}.jahr-select:hover,.jahr-select:focus{border-color:var(--c-accent)}.jahr-select-wrap:after{content:"▾";color:var(--c-text-muted);pointer-events:none;font-size:.85rem;position:absolute;top:50%;right:.2rem;transform:translateY(-50%)}.tv-header-right{align-items:center;gap:1.5rem;display:flex}.tv-live{color:var(--c-live);letter-spacing:.1em;align-items:center;gap:.4rem;font-size:.8rem;font-weight:700;display:flex}.tv-live-dot{background:var(--c-live-dot);border-radius:50%;width:.55rem;height:.55rem;animation:1.5s ease-in-out infinite blink}@keyframes blink{0%,to{opacity:1}50%{opacity:.2}}.tv-clock{font-variant-numeric:tabular-nums;color:var(--c-text-bright);font-size:2.1rem;font-weight:700}.tv-logo-wrap{align-items:center;gap:1rem;display:flex}.tv-badge-under{display:none}.tv-badge-inline{display:inline}.search-bar{background:var(--c-surface);border-bottom:1px solid var(--c-border);align-items:center;gap:1.5rem;padding:.9rem 2rem;display:flex}.search-input-wrap{flex:1;max-width:48rem;position:relative}.search-icon{width:1.1rem;height:1.1rem;color:var(--c-text-muted);pointer-events:none;position:absolute;top:50%;left:.85rem;transform:translateY(-50%)}.search-input{box-sizing:border-box;background:var(--c-search-bg);border:1.5px solid var(--c-search-border);width:100%;color:var(--c-text);border-radius:8px;outline:none;padding:.65rem 2.5rem;font-family:inherit;font-size:1.05rem;transition:border-color .15s}.search-input:focus{border-color:var(--c-search-focus)}.search-input::placeholder{color:var(--c-text-dim)}.search-input::-webkit-search-cancel-button{display:none}.search-clear{color:var(--c-text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.2rem .4rem;font-size:.9rem;line-height:1;position:absolute;top:50%;right:.6rem;transform:translateY(-50%)}.search-clear:hover{color:var(--c-text)}.search-count{color:var(--c-text-muted);white-space:nowrap;font-size:.85rem}.main-content{flex:1;padding:1.5rem 2rem 3rem}.empty{text-align:center;color:var(--c-text-muted);padding:4rem 2rem;font-size:1.3rem}.code{background:var(--c-surface);border-radius:4px;padding:.1em .4em;font-family:ui-monospace,monospace}.strecke-section{margin-bottom:2.5rem}.strecke-heading{color:var(--c-accent);border-bottom:1px solid var(--c-accent-border);margin:0 0 .6rem;padding-bottom:.4rem;font-size:1.2rem;font-weight:600}.klasse-heading{color:var(--c-text-secondary);border-bottom:1px solid var(--c-border-row);margin:1rem 0 .4rem;padding-bottom:.25rem;font-size:1rem;font-weight:600}.tv-table{border-collapse:collapse;width:100%;font-size:1rem}.tv-table thead tr{background:var(--c-surface);color:var(--c-text-muted);letter-spacing:.07em;text-transform:uppercase;font-size:.78rem;font-weight:600}.tv-table th{text-align:left;padding:.5rem .9rem}.tv-table td{padding:.55rem .9rem}.tv-table tbody tr{border-bottom:1px solid var(--c-border-row)}.tv-table tbody tr:nth-child(2n){background:var(--c-surface-alt)}.row-finisher{opacity:1;color:var(--c-text)}.row-racing{opacity:.75;color:var(--c-text);animation:3s ease-in-out infinite row-pulse}.row-waiting{opacity:.38;color:var(--c-text-muted)}@keyframes row-pulse{0%,to{opacity:.75}50%{opacity:.55}}.col-platz{width:5%;font-weight:700}.col-nr{width:5%}.col-name{width:38%;font-weight:600}.col-klasse{width:25%;color:var(--c-text-secondary);font-size:.95rem}.col-zeit{white-space:nowrap;width:15%}.col-status{width:14%}.team-name{display:block}.team-members{color:var(--c-text-muted);margin-top:.1rem;font-size:.76rem;font-weight:400;display:block}.team-klasse{color:var(--c-text-secondary);margin-top:.15rem;font-size:.76rem;font-weight:400;display:none}.straf-inline{color:var(--c-straf);margin-top:.1rem;font-size:.78rem;display:block}@media (width<=600px){.tv-header{padding:.55rem .9rem}.tv-header-left{flex-shrink:1;gap:.5rem;min-width:0}.tv-header-right{flex-shrink:0;gap:.6rem}.tv-logo-wrap{flex-direction:column;align-items:flex-start;gap:.2rem}.tv-logo{height:1.8rem}.tv-title,.jahr-select{font-size:1.15rem}.tv-clock,.tv-live,.tv-badge-under,.tv-badge-inline{display:none}.search-bar{flex-wrap:wrap;gap:.5rem;padding:.6rem .9rem}.ansicht-pills{order:-1;justify-content:flex-start;width:100%}.tv-pill{padding:.15rem .55rem;font-size:.72rem}.search-count{display:none}.search-input{padding:.45rem 2rem;font-size:.88rem}.main-content{padding:.75rem 0 2rem}.strecke-section{margin-bottom:1.5rem}.strecke-heading{margin-bottom:.4rem;padding:0 .75rem .4rem}.tv-table{font-size:.88rem}.tv-table th,.tv-table td{padding:.4rem .5rem}.hide-mobile{display:none}.show-mobile{display:block}.col-platz,.col-nr{width:8%}.col-name{width:58%}.col-zeit{width:26%}}.nr-badge{border-radius:4px;padding:1px 6px;font-weight:700;display:inline-block}.mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,monospace}.straf{color:var(--c-straf)}.racing-indicator{align-items:center;display:flex}.racing-dot{background:#3b82f6;border-radius:50%;width:.55rem;height:.55rem;animation:1.8s ease-in-out infinite dot-pulse;display:inline-block}@keyframes dot-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}.waiting-dash{color:var(--c-text-dim)}.racing-label{color:#60a5fa;font-size:.82rem;font-style:italic}.status-badge{border-radius:9999px;align-items:center;gap:.35rem;padding:.1rem .55rem;font-size:.8rem;font-weight:600;display:inline-flex}.status-racing{color:#93c5fd;background:#1e3a5f}.status-waiting{background:var(--c-status-waiting-bg);color:var(--c-status-waiting-text)}.racing-dot-small{background:#3b82f6;border-radius:50%;width:.4rem;height:.4rem;animation:1.8s ease-in-out infinite dot-pulse;display:inline-block}.tv-footer{background:var(--c-footer-bg);border-top:1px solid var(--c-border);position:sticky;bottom:0}.footer-info{color:var(--c-footer-text);justify-content:space-between;padding:.5rem 2rem;font-size:.78rem;display:flex}.refresh-flash{color:#60a5fa;animation:.8s ease-out forwards flash}@keyframes flash{0%{color:#93c5fd}to{color:var(--c-footer-text)}}
