:root{--bg-page:#060b18;--bg-panel:#0d1422;--bg-panel-alt:#0a0f1e;--bg-input:#1f2937;--bg-input-alt:#111827;--border:#374151;--border-subtle:#1e293b;--text-primary:#fff;--text-body:#e5e7eb;--text-secondary:#9ca3af;--text-muted:#6b7280;--text-disabled:#4b5563;--text-faint:#374151;--font-body:Arial, Helvetica, sans-serif;--font-heading:Arial, Helvetica, sans-serif}body{font-family:var(--font-body);background:var(--bg-page);color:var(--text-body);margin:0;transition:background .2s,color .2s}button{appearance:none;color:#fff;background:#1f6feb;border:none;border-radius:12px;margin:0;padding:14px 16px;font-size:18px}button:active{transform:scale(.98)}input{border:none;border-radius:10px;margin:6px;padding:10px;font-size:16px}@keyframes blink{0%{opacity:1}50%{opacity:.3}to{opacity:1}}@keyframes fadeIn{0%{opacity:0;transform:scale(1.1)}to{opacity:1;transform:scale(1)}}@keyframes ballBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-14px)}}.member-header{z-index:20;background:var(--bg-panel);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 16px;font-size:13px;display:flex;position:sticky;top:0}.member-header-home{color:var(--color-primary,var(--text-primary));font-weight:700;text-decoration:none}.member-header-home:hover{text-decoration:underline}.member-header-user{color:var(--text-secondary)}.member-page{box-sizing:border-box;justify-content:center;align-items:flex-start;min-height:100vh;padding:24px 16px;display:flex}.member-card{background:var(--bg-panel);border:1px solid var(--border-subtle);box-sizing:border-box;border-radius:16px;width:100%;max-width:420px;margin-top:20px;padding:24px 20px}@media (width>=640px){.member-page{padding:48px 16px}.member-card{margin-top:40px;padding:32px 28px}}.member-title{font-family:var(--font-heading);color:var(--color-primary,var(--text-primary));margin:0 0 4px;font-size:20px;font-weight:900}.member-subtitle{color:var(--text-secondary);margin:0 0 20px;font-size:13px}.member-field{margin-bottom:14px;display:block}.member-field label{color:var(--text-secondary);margin-bottom:4px;font-size:12px;display:block}.member-field input,.member-field select{box-sizing:border-box;background:var(--bg-input);border:1px solid var(--border);width:100%;color:var(--text-primary);border-radius:8px;margin:0;padding:10px 12px;font-family:inherit;font-size:15px}.member-field input:focus,.member-field select:focus{border-color:var(--color-primary,var(--border));outline:none}.member-field-static{color:var(--text-secondary);padding:10px 12px;font-size:15px}.member-row{gap:10px;display:flex}.member-row .member-field{flex:1}.member-btn{box-sizing:border-box;cursor:pointer;background:var(--color-primary,#1f6feb);color:#000;border:none;border-radius:10px;width:100%;margin-top:6px;padding:12px 16px;font-size:14px;font-weight:700}.member-btn:disabled{opacity:.6;cursor:default}.member-link-row{color:var(--text-secondary);text-align:center;margin-top:16px;font-size:13px}.member-link-row a{color:var(--color-primary,#60a5fa);text-decoration:none}.member-link-row a:hover{text-decoration:underline}.member-alert{border-radius:8px;margin-top:12px;padding:10px 12px;font-size:13px}.member-alert-ok{color:#4ade80;background:#14532d}.member-alert-err{color:#fca5a5;background:#7f1d1d}.member-alert-warn{color:#fbbf24;background:#78350f}.member-loading{text-align:center;color:var(--text-secondary);padding:40px 16px}.member-wide-card{max-width:720px}.member-grid-card{max-width:1400px}.reservation-row{border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;display:flex}.reservation-row:last-child{border-bottom:none}.member-status-badge{border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-block}.member-status-pending{color:#fbbf24;background:#78350f}.member-status-approved{color:#4ade80;background:#14532d}.member-status-rejected{color:#fca5a5;background:#7f1d1d}.member-status-paid{color:#4ade80;background:#14532d}.member-status-unpaid{color:#fbbf24;background:#78350f}.member-status-exempt,.member-status-running{color:#60a5fa;background:#1e3a5f}.member-status-finished{color:#d1d5db;background:#374151}.member-btn-secondary{background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border)}.res-legend{color:var(--text-secondary);flex-wrap:wrap;gap:14px;margin-bottom:14px;font-size:12px;display:flex}.res-legend-item{align-items:center;gap:6px;display:inline-flex}.res-legend-dot{border-radius:3px;width:10px;height:10px;display:inline-block}.res-legend-dot.free{background:#eab308}.res-legend-dot.booked{background:#3b82f6}.res-legend-dot.own{background:var(--color-primary,#1f6feb)}.res-legend-dot.trainer{background:#a855f7}.res-legend-dot.vereinsadmin{background:#f97316}.res-legend-dot.locked{background:repeating-linear-gradient(45deg,#4b5563,#4b5563 4px,#374151 4px 8px)}.week-nav{justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.week-nav-label{font-family:var(--font-heading);color:var(--text-primary);font-size:14px;font-weight:700}.week-grid-scroll{padding-bottom:6px;overflow-x:auto}.week-grid{gap:6px;width:100%;display:flex}.time-axis{flex:none;width:40px}.time-axis-head{height:62px}.time-axis .time-label{height:26px;color:var(--text-secondary);justify-content:flex-end;align-items:flex-start;margin-bottom:1px;padding-right:4px;font-size:10px;display:flex}.day-col{flex:1 1 0;min-width:0}.day-header{text-align:center;height:46px;color:var(--text-primary);box-sizing:border-box;padding-top:2px;font-size:12px;font-weight:700;line-height:1.5}.day-header.beyond{color:var(--text-disabled);font-weight:400}.day-placeholder{text-align:center;color:var(--text-disabled);padding:16px 4px;font-size:11px}.day-courts-head{gap:2px;height:14px;margin-bottom:2px;display:flex}.day-courts-head span{text-align:center;min-width:0;height:14px;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:9px;line-height:14px;overflow:hidden}.day-slot-row{gap:2px;height:26px;margin-bottom:1px;display:flex}.day-slot-cell{border:1px solid var(--border-subtle);background:var(--bg-input);min-width:0;color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;cursor:default;border-radius:4px;flex:1;justify-content:center;align-items:center;padding:0 4px;font-size:10px;display:flex;overflow:hidden}.day-slot-cell.own{font-weight:700}.day-slot-cell.free{cursor:pointer;background:color-mix(in srgb, #eab308 22%, var(--bg-input));border-color:color-mix(in srgb, #eab308 45%, var(--border-subtle))}.day-slot-cell.free:hover,.day-slot-cell.free:active{background:color-mix(in srgb, #4ade80 38%, var(--bg-input));border-color:#4ade80}.day-slot-cell.past{background:0 0;border-color:#0000}.day-slot-cell.booked{color:#fff;background:#3b82f6;border-color:#0000}.day-slot-cell.trainer{color:#fff;background:#a855f7;border-color:#0000}.day-slot-cell.vereinsadmin{color:#fff;background:#f97316;border-color:#0000}.day-slot-cell.locked{color:#d1d5db;cursor:not-allowed;background:repeating-linear-gradient(45deg,#4b5563,#4b5563 6px,#374151 6px 12px);border-color:#0000}.day-slot-cell.own{background:var(--color-primary,#1f6feb);color:#000;border-color:#0000}.modal-backdrop{z-index:1000;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-card{background:var(--bg-panel);border:1px solid var(--border-subtle);box-sizing:border-box;border-radius:16px;width:100%;max-width:360px;padding:20px}.partner-selected{background:var(--bg-input);border:1px solid var(--border);color:var(--text-primary);border-radius:8px;justify-content:space-between;align-items:center;padding:10px 12px;font-size:14px;display:flex}.partner-selected button{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;font-size:16px;line-height:1}.partner-hits{border:1px solid var(--border);border-radius:8px;margin-top:4px;overflow:hidden}.partner-hit{color:var(--text-primary);cursor:pointer;padding:8px 12px;font-size:13px}.partner-hit:hover{background:var(--bg-input-alt)}.partner-mode-link{color:var(--color-primary,#60a5fa);cursor:pointer;text-align:left;background:0 0;border:none;margin-top:6px;padding:0;font-size:12px;display:block}.modal-actions{gap:10px;margin-top:6px;display:flex}.modal-actions .member-btn{margin-top:0}.ladder-pyramid{flex-direction:column;align-items:center;gap:10px;padding:4px 4px 10px;display:flex;overflow-x:auto}.ladder-row{justify-content:center;gap:10px;display:flex}.ladder-slot{border:1px solid var(--border);background:var(--bg-input);width:108px;min-width:108px;color:var(--text-secondary);cursor:default;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:9px 8px;font-family:inherit;font-size:12px;transition:transform .12s,box-shadow .12s;display:flex;box-shadow:0 1px 3px #00000040}.ladder-slot-pos{color:var(--text-disabled);font-size:11px;font-weight:700}.ladder-slot-name{text-align:center;-webkit-line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;max-width:100%;line-height:1.25;display:-webkit-box;overflow:hidden}.ladder-slot.tier-gold{background:color-mix(in srgb, #facc15 14%, var(--bg-input));border-color:#facc15;box-shadow:0 0 12px #facc1544,0 1px 3px #00000040}.ladder-slot.tier-gold .ladder-slot-pos{color:#facc15}.ladder-slot.tier-silver{background:color-mix(in srgb, #cbd5e1 10%, var(--bg-input));border-color:#cbd5e1}.ladder-slot.tier-bronze{background:color-mix(in srgb, #d97706 10%, var(--bg-input));border-color:#d97706}.ladder-slot.tier-rest{border-color:#818cf866}.ladder-slot.me{border-color:var(--color-primary,#1f6feb);background:color-mix(in srgb, var(--color-primary,#1f6feb) 15%, var(--bg-input));color:var(--text-primary)}.ladder-slot.challengeable{cursor:pointer;color:var(--text-primary);border-color:#f59e0b}.ladder-slot.challengeable:hover{background:color-mix(in srgb, #f59e0b 15%, var(--bg-input));transform:translateY(-1px);box-shadow:0 3px 8px #00000059}.ladder-slot:disabled{opacity:1}.news-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;display:grid}.news-card{text-align:left;background:var(--bg-input);border:1px solid var(--border);cursor:pointer;color:inherit;border-radius:12px;flex-direction:column;padding:0;font-family:inherit;display:flex;overflow:hidden}.news-card:hover{border-color:var(--color-primary,var(--border))}.news-card-featured{grid-column:1/-1}.news-card-featured .news-card-image{height:220px}.news-card-image{object-fit:cover;width:100%;height:130px}.news-card-body{flex-direction:column;gap:4px;padding:12px;display:flex}.news-card-title{color:var(--text-primary);font-size:15px;font-weight:700}.news-card-teaser{color:var(--text-secondary);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:13px;display:-webkit-box;overflow:hidden}.news-card-meta{color:var(--text-disabled);margin-top:4px;font-size:11px}.news-landing-wrap{box-sizing:border-box;width:100%;max-width:1100px;margin:0 auto;padding:8px 4px 24px}.news-hero{isolation:isolate;border-radius:16px;padding:18px 16px 16px;position:relative;overflow:hidden}.news-hero:before{content:"";z-index:-2;background-image:url(/news-hero.jpg);background-position:50% 62%;background-size:cover;position:absolute;inset:0}.news-hero:after{content:"";z-index:-1;background:linear-gradient(#060b18e0,#060b18ed 60%,#060b18f7);position:absolute;inset:0}.news-landing-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.news-landing-brand{align-items:center;gap:12px;display:flex}.news-landing-logo{object-fit:contain;filter:drop-shadow(0 2px 10px #0009);width:76px;height:76px}.news-landing-clubname{font-family:var(--font-heading);letter-spacing:.5px;color:var(--color-primary,var(--text-primary));text-shadow:0 2px 10px #0009;font-size:28px;font-weight:900}.news-landing-login{color:#000;white-space:nowrap;background:#22c55e;border:none;border-radius:10px;align-items:center;gap:6px;padding:10px 18px;font-size:13px;font-weight:900;text-decoration:none;display:inline-flex;box-shadow:0 0 12px #22c55e44}.news-landing-login:hover{background:#16a34a}.news-landing-nav{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:10px;display:grid}.news-landing-nav a{text-align:center;border:1px solid var(--color-primary,#facc15);color:var(--color-primary,#facc15);box-shadow:0 0 10px color-mix(in srgb, var(--color-primary,#facc15) 45%, transparent);background:#000;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:9px 10px;font-size:12.5px;font-weight:900;text-decoration:none;display:flex}.news-landing-nav a:hover{box-shadow:0 0 16px color-mix(in srgb, var(--color-primary,#facc15) 70%, transparent)}.news-landing-scoreboard{position:relative;background:var(--color-primary,#facc15)!important;color:#000!important;box-shadow:0 0 14px color-mix(in srgb, var(--color-primary,#facc15) 65%, transparent)!important}.news-landing-scoreboard:hover{box-shadow:0 0 20px color-mix(in srgb, var(--color-primary,#facc15) 85%, transparent)!important}.news-landing-live-dot{color:#fca5a5;letter-spacing:.5px;vertical-align:middle;background:#7f1d1d;border-radius:999px;align-items:center;gap:4px;margin-left:5px;padding:1px 6px;font-size:10px;font-weight:900;display:inline-flex}.news-landing-live-dot:before{content:"";background:#ef4444;border-radius:50%;width:6px;height:6px}.news-landing-nav-secondary{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));max-width:480px}.news-landing-nav-secondary a{color:#111827;background:#f8fafc;border:1px solid #e5e7eb;padding:6px 10px;font-size:12px;font-weight:600}.news-landing-nav-secondary a:hover{background:#e5e7eb}.news-columns{grid-template-columns:2fr 1fr;align-items:start;gap:22px;margin-top:22px;display:grid}@media (width<=760px){.news-columns{grid-template-columns:1fr}}.news-column-title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;font-size:12px;font-weight:700}.tennisnet-list{flex-direction:column;gap:10px;display:flex}.tennisnet-card{color:inherit;background:var(--bg-input);border:1px solid var(--border);border-radius:10px;gap:10px;padding:8px;text-decoration:none;display:flex}.tennisnet-card:hover{border-color:var(--color-primary,var(--border))}.tennisnet-card img{object-fit:cover;border-radius:6px;flex-shrink:0;width:60px;height:60px}.tennisnet-card-title{color:var(--text-primary);font-size:13px;font-weight:700;line-height:1.3}.tennisnet-card-meta{color:var(--text-disabled);margin-top:3px;font-size:11px}.tariff-list{flex-direction:column;gap:8px;display:flex}.tariff-option{background:var(--bg-input);border:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.tariff-option.selected{border-color:var(--color-primary,var(--border))}.tariff-option input[type=radio]{flex-shrink:0;margin-top:3px}.tariff-option-body{flex-direction:column;gap:2px;min-width:0;display:flex}.tariff-option-name{color:var(--text-primary);font-size:14px;font-weight:700}.tariff-option-desc{color:var(--text-secondary);font-size:12px}.contact-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;display:grid}.contact-card{background:var(--bg-input);border:1px solid var(--border);border-radius:12px;align-items:center;gap:12px;padding:12px;display:flex}.contact-info{flex-direction:column;gap:2px;min-width:0;display:flex}.contact-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700;overflow:hidden}.contact-link{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;font-size:12px;text-decoration:none;display:flex;overflow:hidden}.contact-link:hover{color:var(--color-primary,#60a5fa);text-decoration:underline}.contact-icon{flex-shrink:0;font-size:11px}
