:root{--text:#3a3d52;--text-h:#262c63;--text-strong:#0b0b0b;--muted:#7a7f9c;--bg:#f2f4fb;--card:#fff;--border:#e3e7f4;--accent:#4f5bd5;--accent-strong:#4048c0;--accent-tint:#e7eafb;--accent-tint-text:#3a41a8;--accent-text:#fff;--bye:#8a6a00;--bye-bg:#fff8e1;--error:#c62828;--error-tint:#fbe4e4;--gender-m:#0d9488;--gender-m-tint:#e1f5f3;--gender-m-tint-text:#0f6b62;--gender-w:#b45309;--gender-w-tint:#fdf1e0;--gender-w-tint-text:#8a4008;--court-1:#4f5bd5;--court-2:#ff771c;--court-3:#0d9488;--court-4:#ca8a04;--sans:"Hanken Grotesk", system-ui, sans-serif;--display:"Bricolage Grotesque", "Hanken Grotesk", system-ui, sans-serif;--radius-panel:16px;font-family:var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:17px;line-height:1.45}@media (prefers-color-scheme:dark) and (prefers-color-scheme:light){:root{--text:#c8cbe8;--text-h:#eaecff;--text-strong:#fff;--muted:#8b90c8;--bg:#0e1030;--card:#191c42;--border:#2c3060;--accent:#818cf8;--accent-strong:#6b76e8;--accent-tint:#23264f;--accent-tint-text:#c7ccff;--accent-text:#14163a;--bye:#f0c852;--bye-bg:#2e2410;--error:#ef5350;--error-tint:#40222b;--court-1:#818cf8;--gender-m:#2dd4bf;--gender-m-tint:#113b38;--gender-m-tint-text:#5eead4;--gender-w:#fbbf24;--gender-w-tint:#3a2c0d;--gender-w-tint-text:#fcd34d}}*{box-sizing:border-box}body{margin:0}h1,h2,h3{font-family:var(--display);color:var(--text-h);letter-spacing:-.01em;font-weight:800;line-height:1.1}.app{max-width:640px;margin:0 auto;padding:16px}.app__header{text-align:center;margin-bottom:20px}.app__title{letter-spacing:-.02em;justify-content:center;align-items:center;gap:10px;margin:8px 0;font-size:34px;display:flex}.app__logo{flex:none;width:auto;height:44px}.player-input{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-panel);flex-direction:column;gap:14px;padding:16px;display:flex}.player-input__title{font-family:var(--display);letter-spacing:-.01em;color:var(--text-h);margin:0;font-size:19px;font-weight:800;line-height:1.1}.player-input__title-toggle{width:100%;font:inherit;cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:10px;padding:0;display:flex}.panel-summary{width:100%;font:inherit;text-align:left;border:1px solid var(--border);border-radius:var(--radius-panel);background:var(--card);color:var(--text-strong);cursor:pointer;justify-content:space-between;align-items:center;padding:14px 16px;font-weight:600;display:flex}.panel-summary__chevron{flex:none;width:16px;height:16px}.game-options-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-panel);flex-direction:column;gap:14px;margin-top:14px;padding:16px;display:flex}.game-options-panel--collapsed{padding:14px 16px}.field{flex-direction:column;gap:6px;display:flex}.field__label{color:var(--text-h);font-weight:600}.chips-footer{border-top:1px solid var(--border);margin-top:4px;padding-top:10px}.field__clear{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:4px 0;font-size:14px;display:inline-flex}.field__clear-icon{flex:none;width:15px;height:15px}.field__clear:active{opacity:.6}.field__hint{color:var(--muted);font-weight:400}.field__input{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;padding:10px 12px}.add-player{gap:8px;display:flex}.add-player__input{flex:1;min-width:0}.add-player__button{font:inherit;background:var(--accent);color:var(--accent-text);cursor:pointer;border:none;border-radius:8px;padding:0 18px;font-weight:600}.add-player__button:disabled{opacity:.5;cursor:default}.chips{flex-wrap:wrap;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.chip{background:var(--accent-tint);border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:6px 6px 6px 14px;display:inline-flex}@keyframes chip-added{0%{box-shadow:0 0 0 3px var(--accent)}to{box-shadow:0 0 0 3px #0000}}.chip--added{animation:.7s ease-out chip-added}@media (prefers-reduced-motion:reduce){.chip--added{animation:none}}.chip__name{color:var(--accent-tint-text);font-weight:600}.chip--man{background:var(--gender-m-tint)}.chip--woman{background:var(--gender-w-tint)}.chip__name--gender{font:inherit;cursor:pointer;color:var(--accent-tint-text);background:0 0;border:none;align-items:center;gap:6px;padding:0;font-weight:600;display:inline-flex}.chip__name--man{color:var(--gender-m-tint-text)}.chip__name--woman{color:var(--gender-w-tint-text)}.chip__gender-badge{background:var(--card);border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:11px;font-weight:700;display:inline-flex}.chip__name--man .chip__gender-badge{color:var(--gender-m)}.chip__name--woman .chip__gender-badge{color:var(--gender-w)}.chip__name--unset .chip__gender-badge{color:var(--muted)}.chip__remove{background:var(--card);width:26px;height:26px;color:var(--muted);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.chip__remove:active{background:var(--border)}.stepper{border:1px solid var(--border);border-radius:12px;align-self:flex-start;align-items:center;display:inline-flex;overflow:hidden}.stepper__button{font:inherit;background:var(--bg);width:48px;height:48px;color:var(--accent);cursor:pointer;border:none;font-size:24px;line-height:1}.stepper__button:active{background:var(--card)}.stepper__button:disabled{color:var(--muted);opacity:.45;cursor:default}.stepper__value{text-align:center;min-width:56px;font-family:var(--display);color:var(--text-strong);font-size:20px;font-weight:800}.player-input__error{color:var(--error);margin:0;font-size:15px}.options-toggle{width:100%;font:inherit;text-align:left;color:var(--text-h);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:10px;padding:0;font-weight:600;display:flex}.options-toggle__right{align-items:center;gap:10px;display:flex}.options-toggle__label{font-family:var(--display);letter-spacing:-.01em;color:var(--text-h);font-size:19px;font-weight:800;line-height:1.1}.options-toggle__label--summary{font-family:var(--sans);font-size:17px;font-weight:600;line-height:inherit;letter-spacing:normal;color:var(--text-strong)}.options-toggle__summary{color:var(--muted);font-size:14px;font-weight:400}.options-toggle__chevron{flex:none;width:16px;height:16px;transition:transform .17s}.options-toggle[aria-expanded=true] .options-toggle__chevron{transform:rotate(180deg)}.options-panel{flex-direction:column;gap:14px;display:flex}.options-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.options-row__label{color:var(--text-h);font-weight:600}.segmented{border:1px solid var(--border);border-radius:10px;display:inline-flex;overflow:hidden}.segmented__button{font:inherit;text-align:center;background:var(--card);color:var(--text);cursor:pointer;border:none;flex:1;padding:8px 14px;font-weight:700}.segmented__button:not(:last-child){border-right:1px solid var(--border)}.segmented__button--active{background:var(--accent);color:var(--accent-text)}.toggle{background:var(--border);cursor:pointer;border:none;border-radius:999px;flex:none;width:48px;height:28px;padding:0;position:relative}.toggle--on{background:var(--accent)}.toggle__thumb{background:var(--card);border-radius:50%;width:22px;height:22px;transition:transform .15s;position:absolute;top:3px;left:3px}.toggle--on .toggle__thumb{transform:translate(20px)}.options-cap-input{text-align:center;width:90px}.player-input__hint{color:var(--error);margin:0;font-size:13px}.button{font:inherit;background:var(--accent);color:var(--accent-text);cursor:pointer;border:none;border-radius:12px;padding:14px;font-weight:700;transition:background .12s}.button:hover{background:var(--accent-strong)}.button:active{filter:brightness(.95)}.button--generate{width:100%;margin-top:14px;display:block}.button--subtle{color:var(--accent);border:1px solid var(--accent);background:0 0;padding:8px 14px}.button--subtle:hover{background:var(--accent-tint);color:var(--accent-tint-text)}.tabs{border:1px solid var(--border);border-radius:var(--radius-panel);background:var(--card);top:calc(env(safe-area-inset-top) + 8px);z-index:10;gap:4px;margin-top:28px;padding:4px;display:flex;position:sticky}.tabs__tab{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:12px;flex:1;padding:9px;font-weight:700}.tabs__tab--active{background:var(--accent);color:var(--accent-text)}.view{min-height:calc(100vh - env(safe-area-inset-top) - 80px);min-height:calc(100dvh - env(safe-area-inset-top) - 80px)}.schedule{margin-top:16px}.round{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-panel);margin-bottom:12px;padding:14px 18px;scroll-margin-top:80px}.round__title{margin:0 0 12px;font-size:22px}.button--keep-playing{width:100%;margin-top:4px;display:block}.round__games{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.game{border-left:4px solid var(--court-color,var(--accent));flex-direction:column;align-items:flex-start;gap:4px;padding-left:12px;display:flex}.round__games>.game:nth-child(4n+1){--court-color:var(--court-1)}.round__games>.game:nth-child(4n+2){--court-color:var(--court-2)}.round__games>.game:nth-child(4n+3){--court-color:var(--court-3)}.round__games>.game:nth-child(4n+4){--court-color:var(--court-4)}.game__court{letter-spacing:.04em;text-transform:uppercase;color:var(--court-color,var(--accent));min-width:64px;font-size:12px;font-weight:700}.game__matchup{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.team{color:var(--text-strong);white-space:nowrap;font-weight:600}.game__vs{color:var(--muted);font-size:14px}.round__byes{background:var(--bye-bg);color:var(--bye);border-radius:999px;align-items:baseline;gap:6px;margin:14px 0 0;padding:6px 12px;font-size:14px;display:inline-flex}.round__byes-label{font-weight:700}.game__unscored{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;width:100%;display:flex}.game__add{font:inherit;white-space:nowrap;border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:999px;padding:6px 14px;font-size:14px;font-weight:600}.game__add:active{background:var(--accent-tint)}.game__scored{text-align:left;cursor:pointer;width:100%;font:inherit;background:0 0;border:none;flex-direction:column;gap:4px;padding:0;display:flex}.game__side{color:var(--muted);justify-content:space-between;align-items:baseline;gap:10px;display:flex}.game__side .team{color:inherit}.game__side--win{color:var(--text-strong)}.game__points{font-family:var(--display);text-align:right;font-variant-numeric:tabular-nums;min-width:28px;font-size:20px;font-weight:800}.sheet-overlay{z-index:100;--sheet-pad-top:max(clamp(12px, 3dvh, 24px), calc(env(safe-area-inset-top) + 12px));--sheet-pad-bottom:max(clamp(12px, 3dvh, 24px), calc(env(safe-area-inset-bottom) + 12px));padding:var(--sheet-pad-top) 12px var(--sheet-pad-bottom);background:#0b0b0b73;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0}.score-sheet{width:100%;max-width:440px;max-height:calc(100dvh - var(--sheet-pad-top) - var(--sheet-pad-bottom));background:var(--card);border-radius:20px;padding:clamp(12px,2.2dvh,18px);overflow-y:auto;box-shadow:0 12px 40px #0b0b0b40}.score-sheet__where{text-align:center;color:var(--text-h);margin:0 0 clamp(6px,1.4dvh,12px);font-weight:600}.score-sheet__teams{grid-template-columns:1fr 1fr;gap:10px 12px;display:grid}.score-field__label{text-align:center;color:var(--text-h);justify-content:center;align-items:flex-end;font-size:17px;font-weight:700;line-height:1.25;display:flex}.score-input{border:1px solid var(--border);background:var(--bg);width:100%;max-width:132px;color:var(--text-strong);font-family:var(--display);text-align:center;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;border-radius:12px;outline:none;justify-content:center;justify-self:center;align-items:center;padding:clamp(6px,1.5dvh,10px) 8px;font-size:clamp(30px,7dvh,40px);font-weight:800;display:flex}.score-input__placeholder{color:var(--muted);opacity:.5}.score-input:focus,.score-input--active{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}.score-sheet__keypad{grid-template-columns:repeat(3,1fr);gap:6px;margin-top:clamp(8px,1.6dvh,14px);display:grid}.score-keypad__key{border:1px solid var(--border);background:var(--bg);color:var(--text-strong);font-family:var(--display);text-align:center;cursor:pointer;border-radius:12px;padding:clamp(8px,1.6dvh,12px) 0;font-size:22px;font-weight:700}.score-keypad__key:active{background:var(--accent-tint);border-color:var(--accent)}.score-keypad__key--delete,.score-keypad__key--switch{color:var(--accent)}.score-keypad__key--delete{font-size:18px}.score-keypad__key--switch{font-size:20px}.score-sheet__rules{text-align:center;color:var(--muted);margin:clamp(6px,1.4dvh,12px) 0 0;font-size:13px;line-height:1.4}.score-sheet__rule{border-radius:6px;transition:color .16s,background-color .16s}.score-sheet__rule--violated{color:var(--error);background:var(--error-tint);margin:0 -5px;padding:2px 5px}.score-sheet__rules-sep{margin:0 9px}.score-sheet__save{width:100%;margin-top:clamp(6px,1.4dvh,12px)}.score-sheet__actions{justify-content:space-between;margin-top:6px;display:flex}.score-sheet__link{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:10px 4px;font-size:15px}.score-sheet__link--clear{color:var(--error)}.confirm-sheet{background:var(--card);border-radius:20px;width:100%;max-width:400px;padding:20px;box-shadow:0 12px 40px #0b0b0b40}.confirm-sheet__body{color:var(--text-h);margin:0 0 20px;font-size:16px;line-height:1.4}.confirm-sheet__actions{gap:10px;display:flex}.confirm-sheet__actions .button{flex:1}.confirm-sheet__confirm{background:var(--error)}.confirm-sheet__confirm:hover{background:var(--error);filter:brightness(.92)}.standings{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-panel);margin-top:16px;padding:4px 18px}.standings__head,.standings__row{align-items:center;gap:10px;display:flex}.standings__head{border-bottom:1px solid var(--border);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:12px 0 8px;font-size:12px;font-weight:700}.standings__list{margin:0;padding:0;list-style:none}.standings__row{border-bottom:1px solid var(--border);padding:12px 0}.standings__row:last-child{border-bottom:none}.standings__col--rank{width:24px;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:700}.standings__row:first-child .standings__col--rank{color:var(--court-4)}.standings__col--name{min-width:0;color:var(--text-strong);flex:1;font-weight:600}.standings__col--record{text-align:right;width:52px;color:var(--text);font-variant-numeric:tabular-nums}.standings__col--diff{text-align:right;width:52px;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:600}.standings__col--pos{color:var(--court-3)}.standings__col--neg{color:var(--error)}
