:root{--bg:#f4f6f1;--surface:#fff;--surface-2:#f0f3ec;--ink:#1b2418;--muted:#5f6b5a;--line:#dde3d6;--accent:#2f6b3a;--accent-ink:#fff;--accent-soft:#e2efe0;--ball:#d7e84a;--warn:#a35a00;--warn-soft:#fff1dc;--bad:#b3261e;--good:#2f7d3b;--bye:#eceee8;--radius:10px;--shadow:0 1px 2px #141e0f0f, 0 2px 8px #141e0f0d;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#12160f;--surface:#1b2117;--surface-2:#222a1d;--ink:#e7ecdf;--muted:#9aa691;--line:#313a2b;--accent:#7fc48a;--accent-ink:#0f1a10;--accent-soft:#233523;--ball:#c9da3e;--warn:#f0b35c;--warn-soft:#3a2c15;--bad:#ff8a80;--good:#8fd69a;--bye:#262d21;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font:15px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}button,input,select{font:inherit;color:inherit}.topbar{background:var(--surface);border-bottom:1px solid var(--line);z-index:10;flex-wrap:wrap;align-items:center;gap:16px;padding:12px 20px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;margin-right:auto;display:flex}.brand h1{letter-spacing:-.01em;margin:0;font-size:18px}.brand .sub{color:var(--muted);margin:0;font-size:12.5px}.ball{background:var(--ball);border-radius:50%;flex:none;width:26px;height:26px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 2px #00000014}.ball:before,.ball:after{content:"";border:2px solid #ffffffd9;border-radius:50%;width:26px;height:26px;position:absolute}.ball:before{left:-16px}.ball:after{right:-16px}.tabs{background:var(--surface-2);border-radius:999px;gap:4px;padding:4px;display:flex}.tab{color:var(--muted);border-radius:999px;padding:6px 16px;font-weight:600;text-decoration:none}.tab.on{background:var(--accent);color:var(--accent-ink)}.menu{position:relative}.menu summary{cursor:pointer;border:1px solid var(--line);color:var(--muted);border-radius:8px;padding:6px 12px;list-style:none}.menu summary::-webkit-details-marker{display:none}.menu-body{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;min-width:230px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #00000026}.menu-body button,.filebtn{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:8px 10px}.menu-body button:hover,.filebtn:hover{background:var(--surface-2)}.filebtn input{display:none}.menu-body hr{border:0;border-top:1px solid var(--line);width:100%;margin:4px 0}main{max-width:1280px;margin:0 auto;padding:20px}button{cursor:pointer}.primary,.ghost,.add-court,.seg button{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:8px 14px}.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.danger{color:var(--bad)}.field{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.field input,.field select{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;min-width:0;padding:8px 10px}.field.grow{flex:200px}.check{align-items:center;gap:6px;display:inline-flex}.hint{color:var(--muted);margin:0;font-size:13px}.hint.small{margin-top:12px;font-size:12px}.weekbar{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;align-items:flex-end;gap:12px;padding:14px;display:flex}.weekbar-actions{gap:8px;margin-left:auto;display:flex}.options{flex-wrap:wrap;align-items:center;gap:6px 14px;margin:14px 2px;display:flex}.courts{grid-template-columns:repeat(auto-fill,minmax(min(100%,400px),1fr));gap:16px;display:grid}.court{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;display:flex;overflow:hidden}.court-head{background:var(--accent-soft);border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:10px 12px;display:flex}.court-title{align-items:center;gap:6px;font-weight:700;display:flex}.court-title input{border:1px solid var(--line);background:var(--surface);text-align:center;border-radius:6px;width:3.2em;padding:4px 6px;font-weight:700}.bonus{white-space:nowrap;color:var(--muted);align-items:center;gap:4px;font-size:13px;display:flex}.bonus input{border:1px solid var(--line);background:var(--surface);text-align:center;border-radius:6px;width:3em;padding:4px 6px}.size-wrap{color:var(--muted);align-items:center;gap:6px;margin-left:auto;font-size:13px;display:flex}.size-toggle{border:1px solid var(--line);border-radius:7px;display:flex;overflow:hidden}.size-toggle button{background:var(--surface);color:var(--muted);border:0;padding:4px 12px;font-size:13px}.size-toggle button.on{background:var(--accent);color:var(--accent-ink);font-weight:600}.icon-btn{color:var(--muted);background:0 0;border:0;padding:2px 4px;font-size:18px;line-height:1}.icon-btn:hover{color:var(--bad)}.score-table{border-collapse:collapse;table-layout:fixed;width:100%}.score-table th,.score-table td{border-bottom:1px solid var(--line);padding:0}.score-table th{color:var(--muted);text-align:center;background:var(--surface-2);padding:6px 2px;font-size:12px;font-weight:600}.score-table th .pair{opacity:.85;white-space:nowrap;font-size:10.5px;font-weight:400;display:block}.score-table th.name-col{text-align:left;width:46%;padding-left:10px}.score-table.five th.name-col{width:36%}.score-table th.total-col{width:17%}.score-table td.name{white-space:nowrap}.score-table td.name .num{color:var(--muted);text-align:right;vertical-align:middle;width:22px;font-size:12px;display:inline-block}.score-table td.name input{vertical-align:middle;width:calc(100% - 24px)}.score-table td input{background:0 0;border:0;outline:none;width:100%;padding:10px 6px}.score-table td input:focus{background:var(--accent-soft)}.score-table td.score input{text-align:center;font-variant-numeric:tabular-nums}.score-table td.bye{background:var(--bye);color:var(--muted);text-align:center;letter-spacing:.05em;font-size:11px}.score-table td.total{text-align:center;font-variant-numeric:tabular-nums;background:var(--surface-2);padding:4px 2px;font-weight:700}.score-table td.total .pts{color:var(--muted);font-size:11px;font-weight:400;display:block}.score-table td.total.imported{font-style:italic}.score-table tr.dup td.name input{color:var(--bad)}.score-table input.over{color:var(--bad);font-weight:700}.score-table td input.auto{color:var(--muted);font-style:italic}.foot-right{align-items:center;gap:12px;display:flex}.link-btn{color:var(--muted);text-underline-offset:2px;background:0 0;border:0;padding:0;font-size:12.5px;text-decoration:underline}.link-btn:hover{color:var(--bad)}.court-foot{color:var(--muted);justify-content:space-between;gap:10px;margin-top:auto;padding:8px 12px;font-size:12.5px;display:flex}.court-foot .ok{color:var(--good);font-weight:600}.court-foot .off{color:var(--warn);font-weight:600}.add-court{width:100%;color:var(--muted);background:0 0;border-style:dashed;margin-top:16px;padding:14px}.ac-menu{z-index:50;background:var(--surface);border:1px solid var(--line);border-radius:8px;max-height:264px;padding:4px;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #0000002e}.ac-item{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-radius:6px;padding:8px 10px;overflow:hidden}.ac-item:hover{background:var(--surface-2)}.ac-item.active{background:var(--accent);color:var(--accent-ink)}.ac-item mark{color:inherit;text-underline-offset:2px;background:0 0;font-weight:700;text-decoration:underline}.ac-empty{color:var(--muted);white-space:normal;padding:8px 10px;font-size:13px}.weekbar+.courts{margin-top:14px}.courts.readonly td input,.field input[readonly]{cursor:default}.courts.readonly td input:focus{background:0 0}.size-toggle button:disabled,.w-toggle:disabled{cursor:default}.save-status{color:var(--muted);white-space:nowrap;font-size:12.5px}.save-status.saved{color:var(--good)}.save-status.error{color:var(--warn);font-weight:600}.signin{flex-direction:column;gap:6px;padding:6px 10px 8px;display:flex}.signin label{color:var(--muted);font-size:12px}.signin input{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:7px 9px}.signin .err{color:var(--bad);font-size:12px}.menu-body .signin button.primary{text-align:center;background:var(--accent);color:var(--accent-ink);border-radius:7px}.menu-body .signin button.primary:hover{background:var(--accent);filter:brightness(1.08)}.ladderbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;display:flex}.seg{display:flex}.seg button{border-radius:0}.seg button:first-child{border-radius:8px 0 0 8px}.seg button:last-child{border-left:0;border-radius:0 8px 8px 0}.seg button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}#ladderSearch{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex:0 220px;min-width:0;padding:8px 10px}#ladderHint{margin-bottom:10px}.menu-body button:disabled{opacity:.6;cursor:progress}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}table.ladder{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}table.ladder th,table.ladder td{border-bottom:1px solid var(--line);white-space:nowrap;text-align:right;padding:8px 10px}table.ladder th{color:var(--muted);background:var(--surface-2);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:12px;font-weight:600;position:sticky;top:0}table.ladder th.sorted{color:var(--ink)}table.ladder th.nosort{cursor:default}table.ladder td.name,table.ladder th.name{text-align:left}table.ladder td.rank{width:3em;font-weight:700}table.ladder td.avg{color:var(--accent);font-weight:700}table.ladder td.wk{color:var(--muted);min-width:2.6em}table.ladder td.wk.played{color:var(--ink)}table.ladder tr:hover td{background:var(--surface-2)}table.ladder tbody tr:last-child td{border-bottom:0}.move{font-size:12px}.move.up{color:var(--good)}.move.down{color:var(--bad)}.move.new{color:var(--muted)}.w-toggle{color:var(--line);background:0 0;border:0;padding:0 4px 0 0;font-size:14px}.w-toggle.on{color:#c2408a}table.ladder th:nth-child(-n+2),table.ladder td:nth-child(-n+2){z-index:1;background:var(--surface);position:sticky}table.ladder th:nth-child(-n+2){z-index:3;background:var(--surface-2)}table.ladder th:first-child,table.ladder td:first-child{width:44px;min-width:44px;left:0}table.ladder th:nth-child(2),table.ladder td:nth-child(2){box-shadow:1px 0 0 var(--line);left:44px}table.ladder tbody tr:hover td{background:var(--surface-2)}.pname-text{vertical-align:middle;white-space:normal;width:calc(100% - 24px);padding:10px 6px;line-height:1.25;display:inline-block}.pname-text.empty{color:var(--muted)}.score-table td.name input{text-overflow:ellipsis}@media (pointer:coarse){.ac-item,.menu-body button,.filebtn{padding:12px}.icon-btn{padding:6px 8px;font-size:22px}.size-toggle button{padding:7px 14px}}@media (width<=640px){input,select,textarea{font-size:16px}main{padding:14px 12px calc(24px + env(safe-area-inset-bottom))}.topbar{gap:10px;padding:10px 12px}.brand{width:100%;margin-right:0}.brand h1{font-size:17px}.tabs{flex:1}.tab{text-align:center;flex:1;padding:8px 12px}.menu summary{padding:8px 14px}.menu-body{width:min(320px,100vw - 24px)}.save-status{order:3;width:100%;margin-top:-4px;font-size:12px}.weekbar{gap:10px;padding:12px}.weekbar .field:first-child,.weekbar .field:first-child select{width:100%}.weekbar .field:nth-child(2),.weekbar .field:nth-child(3){flex:1 1 0;min-width:0}.weekbar .field input{width:100%}.weekbar .field.grow{flex-basis:100%}.weekbar-actions{width:100%;margin-left:0}.weekbar-actions button{flex:1;padding:10px 14px}.options{margin:12px 2px}.options .hint{font-size:12.5px}.courts{gap:12px}.court-head{flex-wrap:wrap;gap:8px;padding:8px 10px}.court-title input,.bonus input{font-size:16px}.size-wrap>span{display:none}.score-table th.name-col{width:44%;padding-left:6px}.score-table.five th.name-col{width:38%}.score-table th.total-col{width:14%}.score-table th .long{display:none}.score-table th .pair{font-size:9.5px}.score-table td.name .num{width:16px;font-size:11px}.score-table td.name input{width:calc(100% - 17px);padding:10px 4px}.pname-text{width:calc(100% - 17px);padding:10px 4px;font-size:14.5px}.score-table td.score input{padding:10px 0}.court-foot{flex-wrap:wrap;row-gap:4px;padding:8px 10px}.foot-right{white-space:nowrap;margin-left:auto}.ladderbar{gap:10px}#ladderSearch{flex:160px}table.ladder th,table.ladder td{padding:8px 7px}table.ladder th:first-child,table.ladder td:first-child{width:36px;min-width:36px}table.ladder th:nth-child(2),table.ladder td:nth-child(2){text-overflow:ellipsis;max-width:150px;left:36px;overflow:hidden}}
