:root{--text:#4b5563;--text-h:#111827;--bg:#f3f4f6;--card-bg:#fff;--border:#e5e7eb;--accent:#059669;--accent-hover:#047857;--accent-light:#d1fae5;--danger:#dc2626;--danger-hover:#b91c1c;--warning:#f59e0b;--shadow:0 1px 3px #0000001a, 0 1px 2px #0000000f;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:16px/1.5 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#9ca3af;--text-h:#f3f4f6;--bg:#0f172a;--card-bg:#1e293b;--border:#334155;--accent:#10b981;--accent-hover:#059669;--accent-light:#10b98126;--shadow:0 1px 3px #0006, 0 1px 2px #00000040}}*,:before,:after{box-sizing:border-box}body{margin:0}#root{max-width:1100px;min-height:100svh;margin:0 auto;padding:24px 16px}h1,h2{color:var(--text-h);margin:0;font-weight:600;line-height:1.3}h1{font-size:1.75rem}h2{font-size:1.2rem}p{margin:0}.btn{font-family:var(--sans);border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);cursor:pointer;border-radius:6px;padding:8px 16px;font-size:.875rem;font-weight:500;transition:all .15s}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:disabled:hover{border-color:var(--border);color:var(--text-h)}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.btn-danger{color:var(--danger);border-color:#0000}.btn-danger:hover{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-small{padding:6px 12px;font-size:.8rem}.btn-tiny{padding:3px 8px;font-size:.75rem}.btn-large{padding:12px 32px;font-size:1rem}input[type=text],input[type=date]{font-family:var(--sans);border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);border-radius:6px;outline:none;padding:8px 12px;font-size:.95rem;transition:border-color .15s}input[type=text]:focus,input[type=date]:focus{border-color:var(--accent)}input[type=text]::placeholder{color:var(--text);opacity:.6}label{color:var(--text-h);margin-bottom:4px;font-size:.85rem;font-weight:500;display:block}.archive{flex-direction:column;gap:24px;max-width:720px;margin:0 auto;padding:32px 16px;display:flex}.archive h1{text-align:center;font-size:2rem}.archive-empty{text-align:center;color:var(--text);padding:32px 0}.archive-list{flex-direction:column;gap:8px;display:flex}.archive-list h2{margin-bottom:8px}.archive-item{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:8px;align-items:center;gap:12px;padding:12px 16px;display:flex}.archive-item-main{cursor:pointer;flex:1;padding:4px 0}.archive-item-name{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.archive-item-name strong{color:var(--text-h);font-size:1.05rem}.archive-item-meta{color:var(--text);margin-top:2px;font-size:.85rem}.archive-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;padding-top:8px;display:flex}.header-buttons{gap:6px;display:flex}.setup{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:60vh;display:flex}.setup h1{margin-bottom:4px;font-size:2.2rem}.subtitle{color:var(--text);margin-bottom:32px}.setup-form{flex-direction:column;gap:16px;width:100%;max-width:360px;display:flex}.form-group{text-align:left}.form-group input{width:100%}.setup-form .btn-primary{margin-top:8px}.dashboard{flex-direction:column;gap:24px;display:flex}.tournament-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:16px;display:flex}.tournament-date{color:var(--text);margin-top:4px;font-size:.9rem}.phase-badge{white-space:nowrap;border-radius:20px;padding:4px 12px;font-size:.8rem;font-weight:600}.phase-setup{background:var(--accent-light);color:var(--accent)}.phase-liga{color:#2563eb;background:#dbeafe}.phase-finale{color:#d97706;background:#fef3c7}.phase-abgeschlossen{background:var(--border);color:var(--text)}.player-list{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;padding:20px}.player-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.player-count{color:var(--text);font-size:.85rem}.player-count.ready{color:var(--accent);font-weight:600}.add-player-form{gap:8px;margin-bottom:16px;display:flex}.add-player-form input{flex:1}.empty{text-align:center;color:var(--text);opacity:.7;padding:24px 0}.players{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.player-item{border-radius:6px;align-items:center;gap:10px;padding:8px 12px;transition:background .1s;display:flex}.player-item:hover{background:var(--bg)}.player-index{color:var(--text);min-width:24px;font-size:.8rem}.player-name{color:var(--text-h);flex:1;font-weight:500}.status-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:10px;padding:2px 8px;font-size:.7rem;font-weight:600}.status-badge.aktiv{background:var(--accent-light);color:var(--accent)}.status-badge.pausiert{color:#d97706;background:#fef3c7}.status-badge.ausgestiegen{color:var(--danger);background:#fee2e2}.player-item.status-ausgestiegen .player-name{opacity:.5;text-decoration:line-through}.player-actions{gap:4px;display:flex}.match-panel{background:var(--card-bg);border:2px solid var(--accent);box-shadow:var(--shadow);border-radius:10px;padding:20px}.match-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.match-teams{justify-content:center;align-items:center;gap:20px;margin-bottom:20px;display:flex}.team{text-align:center;background:var(--bg);border-radius:8px;flex:1;padding:12px}.team-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text);margin-bottom:4px;font-size:.75rem;font-weight:600;display:block}.team-players{color:var(--text-h);font-size:1.05rem;font-weight:600}.vs{color:var(--text);font-size:.85rem;font-weight:700}.reasoning{background:var(--bg);border-radius:6px;margin-bottom:16px;padding:12px 16px;font-size:.85rem}.reasoning-item{margin-bottom:8px}.reasoning-item:last-child{margin-bottom:0}.reasoning-item ul{margin:4px 0 0;padding-left:20px}.reasoning-item li{color:var(--text);font-size:.8rem}.result-form{justify-content:center;align-items:flex-end;gap:12px;margin-bottom:12px;display:flex}.score-input{text-align:center}.score-input label{text-align:center;margin-bottom:4px}.score-input input{text-align:center;width:64px;padding:8px;font-size:1.2rem;font-weight:700}.score-separator{color:var(--text-h);padding-bottom:8px;font-size:1.4rem;font-weight:700}.error-msg{color:var(--danger);text-align:center;margin-bottom:8px;font-size:.85rem}.match-actions{text-align:center}.phase-badges{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.phase-sub{font-size:.7rem}.phase-phase1{color:#2563eb;background:#dbeafe}.phase-phase2{color:#7c3aed;background:#ede9fe}.phase-endphase{color:#d97706;background:#fef3c7}.endphase-banner{background:var(--card-bg);border:2px solid var(--warning);text-align:center;border-radius:10px;padding:16px 20px}.endphase-banner p{color:var(--text-h);margin-bottom:8px;font-weight:500}.endphase-banner p:last-child{margin-bottom:0}.endphase-banner.status-fair,.endphase-banner.status-almost_fair{border-color:var(--accent)}.endphase-banner.status-max_reached{border-color:var(--danger)}.endphase-banner .btn,.closure-plan{margin-top:8px}.closure-summary{font-size:.9rem;font-weight:600}.closure-details{color:var(--text);flex-wrap:wrap;justify-content:center;gap:4px 16px;margin:8px 0;padding:0;font-size:.85rem;list-style:none;display:flex}.preview-section{border-top:1px solid var(--border);margin-top:16px;padding-top:16px}.preview-section h3{color:var(--text);margin:0 0 8px;font-size:.85rem;font-weight:600}.preview-match{background:var(--bg);border-radius:6px;align-items:center;gap:8px;margin-bottom:4px;padding:6px 10px;font-size:.85rem;display:flex}.preview-label{text-transform:uppercase;letter-spacing:.5px;color:var(--warning);white-space:nowrap;font-size:.65rem;font-weight:700}.preview-teams{color:var(--text);font-weight:500}.btn-warning{color:var(--warning);border-color:var(--warning)}.btn-warning:hover{background:var(--warning);color:#fff;border-color:var(--warning)}.setup-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;padding-top:8px;display:flex}.io-actions{justify-content:center;align-items:center;gap:12px;padding-top:4px;display:flex}.import-label{cursor:pointer}.import-input{display:none}.import-section{flex-direction:column;align-items:center;gap:8px;margin-top:16px;display:flex}.league-table{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;padding:20px}.league-table h2{margin-bottom:12px}.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.league-table table{border-collapse:collapse;white-space:nowrap;width:100%;font-size:.85rem}.league-table th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:var(--text);border-bottom:2px solid var(--border);padding:6px 8px;font-size:.75rem;font-weight:600}.league-table td{border-bottom:1px solid var(--border);color:var(--text-h);padding:6px 8px}.league-table tbody tr:last-child td{border-bottom:none}.col-rank{width:32px;color:var(--text);font-weight:700}.col-name{font-weight:500}.col-num{font-variant-numeric:tabular-nums;font-family:var(--mono);font-size:.8rem;text-align:right!important}.table-status{vertical-align:middle;border-radius:8px;margin-left:6px;padding:1px 5px;font-size:.6rem;font-weight:700}.table-status.pausiert{color:#d97706;background:#fef3c7}.table-status.ausgestiegen{color:var(--danger);background:#fee2e2}.row-out td{opacity:.45}.row-unqualified td{opacity:.65;font-style:italic}.league-table-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.league-table-header h2{margin:0}.table-filter{gap:4px;display:flex}.table-status.unqualified{color:var(--text);cursor:help;background:#9ca3af33}.table-legend{opacity:.75;flex-wrap:wrap;gap:12px;margin-top:10px;font-size:.85em;display:flex}.table-legend>span{align-items:center;gap:4px;display:inline-flex}.btn-nerf{letter-spacing:.5px;color:#d97706;cursor:pointer;vertical-align:middle;background:0 0;border:1px solid #d97706;border-radius:3px;margin-left:6px;padding:1px 5px;font-size:.6em;font-weight:700;line-height:1.2;display:inline-block}.btn-nerf:hover{background:#d977061a}.btn-nerf.active{color:#fff;background:#d97706}.table-status.tied{color:var(--warning);cursor:help;background:#f59e0b2e;font-weight:800}.table-status.drawn{color:#a78bfa;cursor:help;background:#7c3aed2e}.row-tied td{background:#f59e0b0d}.modal-overlay{z-index:1000;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--card-bg);border:2px solid var(--accent);border-radius:12px;width:100%;max-width:480px;padding:28px;box-shadow:0 20px 60px #0006}.modal h2{color:var(--text-h);margin-bottom:12px}.modal p{color:var(--text-h);margin-bottom:20px}.modal-actions{flex-direction:column;align-items:stretch;gap:8px;display:flex}.modal-result{text-align:center}.modal-winner{background:var(--accent-light);color:var(--text-h);border-radius:8px;margin-bottom:16px;padding:12px;font-size:1.2rem}.match-history{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;padding:20px}.match-history h2{margin-bottom:12px}.history-list{flex-direction:column;gap:8px;display:flex}.history-item{background:var(--bg);border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;font-size:.85rem;display:flex}.history-nr{color:var(--text);min-width:32px;font-weight:700}.history-teams{color:var(--text-h);flex:1;font-weight:500}.vs-small{color:var(--text);margin:0 6px;font-size:.75rem;font-weight:400}.history-score{font-weight:700;font-family:var(--mono);color:var(--text-h);font-size:.95rem}.history-pts{color:var(--text);font-size:.75rem}.history-edit{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.history-edit input{text-align:center;border:1px solid var(--border);background:var(--card-bg);width:48px;color:var(--text-h);border-radius:4px;padding:4px;font-size:1rem;font-weight:700}.history-edit span{color:var(--text-h);font-weight:700}.liga-grid{grid-template-columns:1fr;gap:24px;display:grid}@media (width>=800px){.liga-grid{grid-template-columns:3fr 2fr;align-items:stretch}}.history-list{max-height:400px;overflow-y:auto}@media (width<=600px){.hide-mobile{display:none}.history-teams{flex-basis:100%;order:2;font-size:.8rem}.history-item{padding:6px 8px}}.beamer{flex-direction:column;gap:32px;max-width:100%;margin:0 auto;padding:32px 48px;font-size:1.2rem;display:flex}.beamer-header{justify-content:space-between;align-items:center;gap:16px;display:flex}.beamer-header h1{font-size:2.8rem}.beamer-header .phase-badge{padding:6px 16px;font-size:1rem}.beamer-toolbar{opacity:.4;gap:8px;transition:opacity .2s;display:flex}.beamer-toolbar:hover{opacity:1}.beamer-preview{background:var(--card-bg);border:1px dashed var(--border);border-radius:10px;padding:20px 24px}.beamer-preview h3{color:var(--text);margin-bottom:12px;font-size:1.2rem;font-weight:600}.beamer-preview .preview-match{padding:10px 14px;font-size:1.1rem}.beamer-preview .preview-label{font-size:.75rem}.beamer-history{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;padding:24px}.beamer-history h2{margin-bottom:16px;font-size:1.5rem}.beamer-history .history-item{padding:10px 14px;font-size:1rem}.beamer-history .history-score{font-size:1.15rem}.beamer-history .history-list{max-height:500px;overflow-y:auto}.beamer-waiting{border-style:dashed;border-color:var(--border)}.beamer-waiting p{color:var(--text);font-size:1.4rem}.header-right{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.beamer-empty{text-align:center;color:var(--text);padding:80px 0;font-size:1.6rem}.beamer-status{text-align:center;color:var(--warning);background:#d977061f;border-radius:10px;padding:12px 20px;font-size:1.2rem;font-weight:600}.beamer-match{background:var(--card-bg);border:3px solid var(--accent);text-align:center;box-shadow:var(--shadow);border-radius:16px;padding:32px}.beamer-match h2{margin-bottom:20px;font-size:1.8rem}.beamer-teams{justify-content:center;align-items:center;gap:32px;display:flex}.beamer-team{color:var(--text-h);font-size:2rem;font-weight:700}.beamer-vs{color:var(--text);font-size:1.3rem;font-weight:700}.beamer-champions{background:var(--card-bg);border:3px solid var(--accent);text-align:center;box-shadow:var(--shadow);border-radius:16px;padding:40px}.beamer-champions h2{font-size:1.8rem}.beamer-champions .champion-names{font-size:2.4rem}.beamer-champions .bo3-final-score{font-size:1.6rem}.beamer .league-table{padding:24px}.beamer .league-table h2{margin-bottom:16px;font-size:1.5rem}.beamer .league-table table{font-size:1.1rem}.beamer .league-table th{padding:8px 12px;font-size:.9rem}.beamer .league-table td{padding:10px 12px}.beamer .col-num{font-size:1.05rem}.beamer .bo3-score{font-size:3rem}.finale-setup,.finale-match,.finale-result{background:var(--card-bg);box-shadow:var(--shadow);text-align:center;border:2px solid #d97706;border-radius:10px;padding:24px}.finale-result{border-color:var(--accent)}.top4-display{margin-bottom:24px}.top4-display h3{color:var(--text);margin-bottom:8px;font-size:1rem}.top4-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.top4-list li{background:var(--bg);color:var(--text-h);border-radius:6px;justify-content:center;align-items:center;gap:8px;padding:8px 16px;font-weight:500;display:flex}.top4-list li.champion{background:#d977061f;font-weight:700}.top4-rank{color:var(--text);min-width:24px;font-weight:700}.champion-badge{color:#d97706;background:#fef3c7;border-radius:10px;padding:2px 8px;font-size:.7rem;font-weight:700}.partner-choice{margin-top:20px}.choice-prompt{color:var(--text-h);margin-bottom:12px;font-size:1.05rem}.choice-buttons{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.finale-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.bo3-score{font-size:2rem;font-weight:800;font-family:var(--mono);color:var(--text-h)}.finale-teams{justify-content:center;align-items:center;gap:20px;margin-bottom:20px;display:flex}.finale-game-result{background:var(--bg);border-radius:6px;justify-content:center;align-items:center;gap:12px;margin-bottom:4px;padding:6px 12px;font-size:.9rem;display:flex}.game-winner{border-radius:10px;padding:2px 8px;font-size:.75rem;font-weight:700}.game-winner.teamA{color:#2563eb;background:#dbeafe}.game-winner.teamB{color:#7c3aed;background:#ede9fe}.position-section{border-top:1px solid var(--border);margin-top:20px;padding-top:16px}.position-section h3{margin-bottom:4px;font-size:1rem}.position-rule{color:var(--text);margin-bottom:12px;font-size:.85rem;font-style:italic}.position-auto{flex-direction:column;align-items:center;gap:12px;display:flex}.position-auto p{color:var(--text)}.position-chooser{flex-direction:column;align-items:center;gap:12px;display:flex}.position-team{text-align:left;background:var(--bg);border-radius:6px;width:100%;max-width:400px;padding:8px 16px}.position-row{align-items:center;gap:8px;margin-top:4px;font-size:.9rem;display:flex}.position-row select{font-family:var(--sans);border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);border-radius:4px;padding:4px 8px;font-size:.85rem}.auto-pos{color:var(--text);font-size:.8rem}.position-display{flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:12px;display:flex}.pos-tag{background:var(--bg);color:var(--text);border-radius:10px;padding:2px 10px;font-size:.8rem}.finale-score-section{border-top:1px solid var(--border);margin-top:16px;padding-top:16px}.finale-score-section h3{margin-bottom:12px;font-size:1rem}.champions-display{padding:24px 0}.champions-display h2{color:var(--accent);margin-bottom:8px;font-size:1.3rem}.champion-names{color:var(--text-h);margin-bottom:8px;font-size:1.8rem;font-weight:800}.bo3-final-score{font-size:1.2rem;font-family:var(--mono);color:var(--text)}.finale-summary{margin:16px 0}.finale-summary h3{color:var(--text);margin-bottom:8px;font-size:.95rem}.finale-teams-summary{justify-content:center;gap:20px;margin:16px 0;display:flex}.team-summary{background:var(--bg);border-radius:8px;padding:12px 20px}.team-summary strong{color:var(--text);text-transform:uppercase;letter-spacing:.5px;font-size:.8rem}.team-summary p{color:var(--text-h);margin-top:4px;font-weight:600}.liga-champion-note{color:var(--text);padding:8px 0;font-size:.9rem}@media (prefers-color-scheme:dark){.phase-liga{color:#60a5fa;background:#2563eb26}.phase-finale,.status-badge.pausiert{color:#fbbf24;background:#d9770626}.status-badge.ausgestiegen{background:#dc262626}.table-status.pausiert{color:#fbbf24;background:#d9770626}.table-status.ausgestiegen{background:#dc262626}.phase-phase1{color:#60a5fa;background:#2563eb26}.phase-phase2{color:#a78bfa;background:#7c3aed26}.phase-endphase,.champion-badge{color:#fbbf24;background:#d9770626}.game-winner.teamA{color:#60a5fa;background:#2563eb26}.game-winner.teamB{color:#a78bfa;background:#7c3aed26}}
