:root{--green:#1b5e20;--green-light:#e8f5e9;--border:#d0d7d0;--muted:#667066;--danger:#c62828;color:#1a1a1a;-webkit-tap-highlight-color:transparent;background:#fff;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:17px}*{box-sizing:border-box}body{min-height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);margin:0}a{color:var(--green)}h1{margin:0;font-size:1.25rem}h2{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:1.5rem 0 .5rem;font-size:1rem}.muted{color:var(--muted);font-size:.9rem}.error{color:var(--danger);margin:0}.header{background:var(--green);color:#fff;z-index:1;grid-template-columns:3rem 1fr auto;align-items:center;gap:.5rem;padding:.75rem 1rem;display:grid;position:sticky;top:0}.header h1{text-align:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.header a{color:#fff;text-decoration:none}.header-back{font-size:2rem;line-height:1}.header-action{text-align:right;min-width:3rem;font-weight:600}.page{max-width:40rem;margin:0 auto;padding:1rem}.help-content{overflow-wrap:anywhere;line-height:1.6}.help-content h2{text-transform:none;letter-spacing:0}.help-content ol,.help-content ul{padding-left:1.5rem}.help-content li+li{margin-top:.5rem}.help-content table{border-collapse:collapse;width:100%;font-size:.9rem}.help-content th,.help-content td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:.6rem}.stats-share{border-bottom:1px solid var(--border);padding-bottom:1rem}.stats-share .form{margin-top:1rem}.share-actions{flex-wrap:wrap;gap:.5rem;display:flex}.share-actions .btn{flex:12rem}.stats-share .btn svg{vertical-align:middle}.home{flex-direction:column;justify-content:center;gap:2rem;max-width:30rem;min-height:100dvh;margin:0 auto;padding:1.5rem;display:flex}.home-title{flex-direction:column;align-items:center;gap:.75rem;display:flex}.home-title h1{color:var(--green);font-size:1.6rem}.home-menu{flex-direction:column;gap:1rem;display:flex}.home-sync{text-align:center;text-decoration:none}.btn{border:2px solid var(--green);width:100%;color:var(--green);font:inherit;text-align:center;cursor:pointer;background:#fff;border-radius:12px;padding:.85rem 1rem;font-weight:600;text-decoration:none;display:block}.btn:active{filter:brightness(.92)}.btn-primary{background:var(--green);color:#fff}.btn-danger{border-color:var(--danger);color:var(--danger)}.btn-big{padding:1.4rem 1rem;font-size:1.15rem}.list{border:1px solid var(--border);border-radius:12px;margin:0;padding:0;list-style:none;overflow:hidden}.list li+li{border-top:1px solid var(--border)}.list a{color:inherit;flex-direction:column;gap:.2rem;padding:.85rem 1rem;text-decoration:none;display:flex}.list a:active{background:var(--green-light)}.user-directory a{overflow-wrap:anywhere}.match-list-item{grid-template-columns:minmax(0,1fr) auto;display:grid}.match-list-item>a{overflow-wrap:anywhere;min-width:0}.match-list-item>a .muted{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.match-list-actions{justify-content:center;align-items:center;gap:.5rem;padding:.5rem .75rem .5rem 0;display:flex}.btn-compact{border-radius:8px;width:auto;min-height:2rem;padding:.3rem .55rem;font-size:.75rem}.match-list-actions .btn-compact{width:auto;min-height:2.75rem}.match-list-actions:has(.form){flex-direction:column;grid-column:1/-1;align-items:stretch;padding:0 .75rem .75rem}.match-list-actions:has(.form)>.btn-compact{align-self:flex-end;width:auto}.match-finalise .form{border:1px solid var(--border);border-radius:12px;padding:1rem}.match-finalise p{margin:0}.form{flex-direction:column;gap:1rem;display:flex}.form label{flex-direction:column;gap:.35rem;font-weight:600;display:flex}.form input:not([type=checkbox]):not([type=radio]),.form select,.form textarea{font:inherit;border:1px solid var(--border);background:#fff;border-radius:10px;width:100%;padding:.7rem;font-weight:400}.form label.checkbox{flex-direction:row;align-items:center;gap:.6rem;font-weight:400}.form input[type=checkbox]{width:1.4rem;height:1.4rem}.player-stats-controls .chip{min-height:2.75rem}.stats-match-selection.scrollable{max-height:calc(25rem + 6px);overflow-y:auto}.stats-match-selection label.checkbox{min-height:5rem;padding:.75rem}.stats-match-selection input{flex-shrink:0}.stats-match-selection label>span{overflow-wrap:anywhere;min-width:0}.stats-match-selection .muted{display:block}fieldset{border:none;margin:0;padding:0}legend{margin-bottom:.35rem;font-weight:600}.segmented{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.form .segmented label{border:2px solid var(--border);border-radius:10px;align-items:center;padding:.75rem;font-weight:600}.form .segmented label.active{border-color:var(--green);background:var(--green-light)}.segmented input{opacity:0;pointer-events:none;position:absolute}.placeholder{border:2px dashed var(--border);text-align:center;color:var(--muted);border-radius:12px;margin:1.5rem 0;padding:2rem 1rem}.form .field{flex-direction:column;gap:.35rem;font-weight:600;display:flex}.club-picker{min-width:0}.club-picker label{overflow-wrap:anywhere;min-height:2.75rem}.player-suggestions{border:1px solid var(--border);border-radius:10px;max-height:16rem;margin:0;padding:0;list-style:none;overflow-y:auto}.player-suggestions button{width:100%;min-height:2.75rem;color:inherit;font:inherit;text-align:left;overflow-wrap:anywhere;background:#fff;border:0;justify-content:space-between;gap:.75rem;padding:.7rem;display:flex}.player-suggestions button[aria-selected=true]{background:var(--green-light)}.player-suggestions button .small{flex-shrink:0}.summary{border:1px solid var(--border);border-radius:12px;padding:1rem}.summary p{margin:0 0 .75rem}.summary-players{font-size:1.3rem;font-weight:700}.serve-choice{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.start-btn{margin:1.5rem 0 1rem}.btn:disabled{opacity:.45;cursor:not-allowed}.tracker h2{margin:1rem 0 .4rem}.serve-status{background:var(--green-light);white-space:nowrap;border-radius:10px;flex-wrap:nowrap;justify-content:space-between;align-items:baseline;gap:.5rem;padding:.35rem .75rem;font-size:.85rem;display:flex}.serve-no{color:var(--green);font-weight:700}.serve-no.second{color:var(--danger)}.choice-grid{gap:.5rem;display:grid}.choice-grid.two,.choice-grid.outcomes{grid-template-columns:1fr 1fr}.choice-grid.three{grid-template-columns:repeat(3,1fr)}.choice-grid.outcomes .btn:last-child{grid-column:1/-1}.choice-grid .btn{min-height:3.2rem;padding:.6rem .4rem}.btn.ace{color:#1565c0;background:#fff;border-color:#1565c0}.btn.ace.btn-primary{color:#fff;background:#1565c0}.btn.fault{border-color:var(--danger);color:var(--danger);background:#fff}.btn.fault.btn-primary{background:var(--danger);color:#fff}.next-btn{margin-top:1rem}.rally-count{font-variant-numeric:tabular-nums;width:100%}.undo-btn{margin:.75rem 0 1rem}.point-note-entry{margin:.75rem 0}.point-note-entry>button{align-self:flex-start;min-height:2.75rem}.point-note{white-space:pre-wrap;overflow-wrap:anywhere}.match-over{background:var(--green);color:#fff;text-align:center;border-radius:12px;padding:1rem;font-size:1.15rem}.score-table{border-collapse:collapse;font-variant-numeric:tabular-nums;border:1px solid var(--border);border-radius:12px;width:100%;overflow:hidden}.score-table th,.score-table td{text-align:center;border-bottom:1px solid var(--border);padding:.55rem .5rem}.score-table thead th{color:var(--muted);font-size:.8rem;font-weight:600}.score-table tbody th{text-align:left;white-space:nowrap;font-weight:600}.score-table td.set-won{font-weight:700}.score-table td.current{background:var(--green-light);font-weight:700}.score-table td.points{background:var(--green);color:#fff;min-width:3rem;font-weight:700}.score-table tr.winner th{color:var(--green)}.score-table sup{margin-left:1px;font-size:.65em}.serve-dot{border-radius:50%;width:.55rem;height:.55rem;margin-right:.4rem;display:inline-block}.serve-dot.on{background:#c0ca33}.point-count{margin:0;font-size:.8rem}.dock-footer{justify-content:space-between;align-items:center;gap:.5rem;margin-top:.3rem;display:flex}.sync-badge{border-radius:999px;padding:.1rem .5rem;font-size:.8rem;font-weight:600;text-decoration:none}.sync-badge.ok{color:var(--green);background:var(--green-light)}.sync-badge.warn{color:#8a5a00;background:#fff3cd}.sync-badge.bad{color:var(--danger);background:#fdecea}.add-point-btn{border:1px solid var(--green);width:1.8rem;height:1.8rem;color:var(--green);font:inherit;cursor:pointer;vertical-align:middle;background:#fff;border-radius:50%;margin-left:.5rem;padding:0;font-weight:700;line-height:1}.add-point-btn:active{background:var(--green-light)}.stats h2{margin-top:1.75rem}.small{font-size:.8rem}.chips{flex-wrap:wrap;gap:.4rem;margin:.4rem 0;display:flex}.chip{font:inherit;border:1px solid var(--green);color:var(--green);cursor:pointer;background:#fff;border-radius:999px;padding:.35rem .75rem;font-size:.85rem}.chip.on{background:var(--green);color:#fff}.stats-table-scroll{overflow-x:auto}.stats-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin:.5rem 0;font-size:.9rem}.stats-table th,.stats-table td{border-bottom:1px solid var(--border);text-align:center;padding:.4rem .35rem}.stats-table thead th{color:var(--muted);font-size:.75rem;font-weight:600}.stats-table tbody th{text-align:left;white-space:nowrap;font-weight:500}.score-dock{z-index:2;max-width:40rem;padding:.3rem .75rem calc(.3rem + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:#fff;margin:0 auto;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 12px #00000014}.score-dock .score-table{font-size:.9rem}.score-dock .score-table th,.score-dock .score-table td{padding:.15rem .4rem}.score-dock .score-table thead th{font-size:.7rem}.score-dock .add-point-btn{width:1.5rem;height:1.5rem;margin-left:.4rem}.score-dock .dock-footer{margin-top:.2rem}.score-dock .point-count,.score-dock .sync-badge{font-size:.7rem}.score-dock .sync-badge{padding:0 .4rem}.user-row{flex-direction:column;gap:.5rem;padding:.85rem 1rem;display:flex}.club-section{overflow-wrap:anywhere;flex-direction:column;gap:.5rem;min-width:0;display:flex}.club-section h2{margin:0;font-size:1.1rem}.club-players summary{cursor:pointer;min-height:2.75rem;padding:.7rem 0;font-weight:600}.user-actions{flex-wrap:wrap;gap:.4rem;display:flex}.user-actions .btn{width:auto;padding:.35rem .75rem;font-size:.85rem}.page:has(.score-dock){padding-bottom:7.5rem}.match-details{margin-top:1.5rem}.match-details summary{cursor:pointer;color:var(--muted)}.point-log{margin:0 0 1rem;padding-left:1.6rem}.point-log li{border-bottom:1px solid var(--border);padding:.5rem 0;font-size:.95rem}.point-score{font-variant-numeric:tabular-nums;font-weight:700}
