:root{--bg:#f4f6f1;--surface:#fff;--text:#1d2a1f;--muted:#5d6b60;--line:#d9e0d6;--accent:#1f6f43;--accent-text:#fff;--ball:#c8e03c;--man:#e6eef9;--woman:#f9e9ef;--warn-bg:#fff4d6;--warn-line:#e4b84a;--error-bg:#fde8e6;--error-line:#d9655a;--selected:#f0b429;color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.4}@media (prefers-color-scheme:dark){:root{--bg:#121814;--surface:#1b231d;--text:#e6ece6;--muted:#9aa89c;--line:#2f3a31;--accent:#4fbf7d;--accent-text:#0d1a11;--man:#1f2c3d;--woman:#3a2230;--warn-bg:#3a3118;--warn-line:#a3802b;--error-bg:#3d1f1c;--error-line:#b0473d}}*{box-sizing:border-box}body{background:var(--bg);margin:0}.app{max-width:1400px;margin:0 auto;padding:16px}.app__header{flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:16px;display:flex}.app__header h1{margin:0;font-size:1.5rem}.app__header h1:before{content:"";background:var(--ball);border-radius:50%;width:.8em;height:.8em;margin-right:.4em;display:inline-block}.app__header p{color:var(--muted);margin:0}.app__reset{margin-left:auto}h2{margin:0 0 12px;font-size:1.1rem}button{font:inherit;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:var(--accent-text);border-radius:6px;padding:8px 14px}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{color:var(--text);border-color:var(--line);background:0 0}input{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:6px 8px}.muted{color:var(--muted)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;padding:16px}.panel__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.panel__header h2{margin:0}.panel__header-actions{flex-wrap:wrap;gap:8px;display:flex}.note{background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:8px;margin:12px 0 0;padding:8px 12px}h3{margin:0 0 8px;font-size:1rem}.panel--problems{background:var(--error-bg);border-color:var(--error-line)}.panel--problems ul{margin:0;padding-left:20px}.setup{max-width:720px}.file-pickers{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.file-picker{border:2px dashed var(--line);border-radius:8px;flex-direction:column;gap:10px;padding:14px;display:flex}.file-picker:hover{border-color:var(--accent)}.file-picker--todo{border-style:solid;border-color:var(--warn-line)}.file-picker__drop{cursor:pointer;flex-direction:column;gap:4px;display:flex}.file-picker input{display:none}.file-picker__actions{flex-wrap:wrap;gap:8px;display:flex}.player-list summary{cursor:pointer;color:var(--accent);font-size:.9rem}.player-list table{border-collapse:collapse;width:100%;margin-top:8px;font-size:.9rem}.player-list thead th{background:var(--surface);text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:4px 6px;font-weight:600;position:sticky;top:0}.player-list td{border-bottom:1px solid var(--line);padding:3px 6px}.player-list td:first-child,.player-list th:first-child{width:2.5em;color:var(--muted);font-variant-numeric:tabular-nums}.player-list td:last-child,.player-list th:last-child{text-align:right;font-variant-numeric:tabular-nums}.player-list[open]{max-height:360px;overflow-y:auto}.file-picker__label{font-weight:600}.file-picker__status{color:var(--muted);font-size:.9rem}.sizes{flex-wrap:wrap;gap:12px;display:flex}.sizes label{flex-direction:column;gap:4px;font-size:.9rem;display:flex}.sizes input{width:120px}.actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.toolbar__hint{min-width:200px;color:var(--muted);flex:1;font-size:.9rem}.warnings{background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:8px;margin:0 0 12px;padding:10px 14px;list-style:none}.groups{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;display:grid}.group{flex-direction:column;gap:10px;display:flex}.group h2{margin:0}.team{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px}.team--drift{border-color:var(--warn-line);box-shadow:inset 4px 0 0 var(--warn-line)}.team.is-selected,.pair.is-selected,.chip.is-selected{outline:3px solid var(--selected);outline-offset:1px}.team__header{align-items:center;gap:6px;margin-bottom:6px;display:flex}.team__name{background:0 0;border-color:#0000;flex:1;min-width:0;font-weight:600}.team__name:hover,.team__name:focus{border-color:var(--line)}.team__total{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.team__total small{color:var(--muted);margin-left:4px;font-weight:400}.handle{color:var(--muted);border-color:var(--line);background:0 0;min-width:36px;padding:2px 6px;font-size:.8rem}.pairs{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.pairs--disordered{border-left:3px solid var(--warn-line);padding-left:4px}.pair{border-radius:6px;align-items:center;gap:6px;display:flex}.pair__players{flex:1;gap:4px;min-width:0;display:flex}.pair__strength{font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap;font-size:.9rem}.badge{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--text);border-radius:4px;margin-right:4px;padding:0 4px;font-size:.7rem}.chip{min-width:0;color:var(--text);border:1px solid var(--line);flex:1;justify-content:space-between;align-items:baseline;gap:6px;padding:4px 8px;font-size:.9rem;display:flex}.chip--M{background:var(--man)}.chip--W{background:var(--woman)}.chip__name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chip__rating{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.8rem}.reserves{margin-top:16px}.reserves__list{flex-wrap:wrap;gap:6px;display:flex}.reserves__list .chip{flex:0 200px}.ranking{max-width:720px}.ranking__header{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.ranking__header h2{text-transform:capitalize;margin:0}.ranking__header .muted{font-size:.9rem}.ranking__meta{margin:6px 0 16px;font-size:.9rem}.progress__label{justify-content:space-between;gap:12px;margin-bottom:6px;font-size:.9rem;display:flex}.progress__track{background:var(--line);border-radius:7px;height:14px;position:relative;overflow:hidden}.progress__fill{background:var(--accent);border-radius:7px;height:100%;transition:width .3s}.progress__detail{color:var(--muted);margin:6px 0 0;font-size:.85rem}.round{background:var(--surface);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;padding:16px}.round__hint{color:var(--muted);margin:0 0 10px;font-size:.9rem}.round__list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.round__item{flex-direction:column;align-items:stretch;gap:4px;display:flex}.round__level{color:var(--muted);border:1px dashed var(--line);background:0 0;border-radius:10px;align-self:center;padding:0 10px;font-size:.8rem;line-height:1.6}.round__level.is-on{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--text)}.round__card{background:var(--bg);border:1px solid var(--line);cursor:grab;border-radius:8px;align-items:center;gap:8px;padding:10px 12px;display:flex}.round__card:active{cursor:grabbing}.round__grip{color:var(--muted);letter-spacing:-2px}.round__name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.round__unknown{min-width:auto}.round__unknowns{flex-wrap:wrap;align-items:center;gap:6px;margin-top:12px;display:flex}.chip-button{padding:4px 10px;font-size:.9rem}.review__unplaced{border:1px solid var(--warn-line);background:var(--warn-bg);border-radius:8px;margin-top:12px;padding:10px 12px}.review__unplaced p{margin:0 0 8px}.review__chips{flex-wrap:wrap;gap:6px;display:flex}.review__chip{background:var(--surface);border:1px solid var(--line);cursor:grab;border-radius:6px;align-items:center;gap:6px;padding:4px 4px 4px 10px;display:inline-flex}.review__list{flex-direction:column;gap:2px;margin:0 0 16px;padding:0;list-style:none;display:flex}.review__row{background:var(--surface);border:1px solid var(--line);cursor:grab;border-radius:6px;align-items:center;gap:8px;padding:6px 10px;display:flex}.review__rank{width:2.2em;color:var(--muted);font-variant-numeric:tabular-nums}.review__name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.review__rating{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.85rem}.review__end{text-align:center;color:var(--muted);border:2px dashed var(--line);border-radius:6px;padding:10px;font-size:.9rem}.print-sheet{display:none}@media print{:root{--text:#000}body{background:#fff}.app__header,.editor{display:none}.print-sheet{color:#000;display:block}.print-group{break-inside:avoid;margin-bottom:18px}.print-group h2{border-bottom:2px solid #000;padding-bottom:4px}.print-teams{grid-template-columns:repeat(2,1fr);gap:12px 24px;display:grid}.print-team{break-inside:avoid}.print-team h3{margin:0 0 4px;font-size:1rem}.print-team ol{margin:0;padding:0;list-style:none}.print-team li span{color:#555;width:2.5em;display:inline-block}}
