:root{font-family:DM Sans,system-ui,sans-serif;color:#183b34;background:#f5f6ef;font-synthesis:none;font-weight:400;--green: #153d35;--muted: #6b7972;--line: #dce2d8;--lime: #dcf19b}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{min-height:44px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--green);padding:10px 17px;font-weight:600;cursor:pointer;transition:background .15s,transform .15s}button:hover{background:#edf2e6}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #93b857;outline-offset:3px}input,select{border:1px solid var(--line);border-radius:8px;padding:12px;background:#fff;color:var(--green);min-width:0}input{width:100%}h1,h2,p{margin-top:0}h1,h2,.player,.stat strong{font-family:Outfit,system-ui,sans-serif}h1{font-size:clamp(36px,5vw,56px);line-height:1.06;letter-spacing:-1.5px;font-weight:500;margin-bottom:14px}h2{font-size:23px;font-weight:500;letter-spacing:-.4px;margin-bottom:8px}p{line-height:1.6}small{font-size:12px}.header{max-width:1120px;margin:auto;padding:30px 36px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.brand{display:flex;gap:10px;align-items:center;font-family:Outfit,sans-serif;font-size:24px;font-weight:600;line-height:1}.brand-icon{display:grid;place-items:center;background:var(--green);color:var(--lime);height:43px;width:43px;border-radius:50%;font-size:31px}.brand-sub{display:block;font-family:DM Sans,sans-serif;font-size:9px;letter-spacing:4px;margin-top:7px}.pill{font-size:10px;font-weight:600;letter-spacing:1.4px;border:1px solid #ccd6c5;border-radius:20px;padding:9px 13px}.app main{max-width:1000px;margin:auto;padding:44px 36px 30px}.setup{max-width:760px;margin:auto}.eyebrow{font-size:10px;letter-spacing:1.7px;font-weight:700;color:var(--muted);margin-bottom:12px}.setup h1{margin-top:20px}.setup h1 span{color:#68825d}.intro{font-size:16px;max-width:450px;color:var(--muted);margin-bottom:28px}.card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:25px;margin-bottom:20px}.section-heading{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:18px}.section-heading p{color:var(--muted);font-size:13px;margin-bottom:0}.count-badge{background:#eff3e6;color:#476139;font-family:Outfit,sans-serif;border-radius:12px;padding:12px 17px;font-size:28px}.count-label{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:20px;font-size:13px}.count-label select{min-width:85px;padding:8px 12px}.name-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 22px}.name-row{display:flex;align-items:center;gap:10px}.index{font-size:11px;color:#899485}.name-row input{background:#fafbf7;border-color:#e4e9de;height:47px}.icon-button{border:0;background:transparent;padding:4px 9px;font-size:22px;min-width:40px}.add-button{margin:20px 0 24px;width:100%;border:1px dashed #cbd7be;background:#fcfdf9}.primary{background:var(--green);color:#fff;border-color:var(--green);padding:17px 22px;font-weight:600}.primary:hover{background:#24554a}.full{width:100%}.primary.full{display:flex;align-items:center;justify-content:space-between}.primary span{font-size:22px;font-weight:400}.footnote{font-size:11px;text-align:center;color:var(--muted);margin:14px 0 0;line-height:1.6}.principles{display:flex;justify-content:space-between;font-size:11px;color:#8c987f;gap:12px;margin-top:27px}.principles b{font-weight:500;margin-left:8px;color:var(--muted)}footer{max-width:1000px;padding:22px 36px 32px;margin:20px auto 0;display:flex;justify-content:space-between;border-top:1px solid var(--line);font-size:9px;letter-spacing:1px;color:#7e8c7b}footer span{letter-spacing:0}.session-heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:24px}.session-heading h1{font-size:42px}.muted{color:var(--muted)}.session-heading p{font-size:13px;margin-bottom:0}.tabs{display:flex;border:1px solid var(--line);padding:4px;border-radius:11px;background:#edf0e7}.tabs button{border:0;background:transparent;font-size:12px;min-height:35px;padding:8px 14px}.tabs .selected{background:#fff;box-shadow:0 1px 4px #173b3410}.court-label{display:flex;gap:8px;align-items:center;font-size:10px;letter-spacing:1.5px;color:var(--muted);margin-bottom:12px}.court-label>span:last-child{margin-left:auto}.live-dot{height:6px;width:6px;border-radius:50%;background:#6a9453}.teams{display:grid;grid-template-columns:1fr 1fr;gap:20px;position:relative;margin-bottom:20px}.team{border-radius:16px;min-height:230px;padding:26px 28px;overflow-wrap:anywhere}.team-0{background:#153d35;color:#fff}.team-1{background:#e5eccc;border:1px solid #d2dcbb}.team-label{display:flex;justify-content:space-between;letter-spacing:2px;font-size:10px;font-weight:600;padding-bottom:18px;margin-bottom:12px;border-bottom:1px solid #ffffff33}.team-1 .team-label{border-color:#163c3522}.team-label span{opacity:.4}.player{min-height:70px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;font-size:clamp(24px,3.5vw,36px);font-weight:500;line-height:1.1;padding:8px 0}.serve-badge{font-family:DM Sans,sans-serif;font-size:9px;letter-spacing:1px;border-radius:20px;padding:5px 9px;background:var(--lime);color:var(--green);white-space:nowrap;font-weight:700}.team-1 .serve-badge{background:var(--green);color:#fff}.versus{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#f5f6ef;border:5px solid #f5f6ef;font-size:9px;color:#627160;font-weight:700}.rotation-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.rotation-grid .card{margin:0}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid var(--line);background:#f7f9f3;border-radius:7px;padding:8px 12px;font-size:14px}.transition>div{display:flex;gap:13px}.transition>div+div{margin-top:14px}.transition .eyebrow{font-size:9px}.transition p{margin:4px 0 0;font-size:13px;line-height:1.5}.arrow{height:29px;min-width:29px;border-radius:50%;display:grid;place-items:center;background:#eaf1dc}.arrow.out{background:#f0f0e9;color:#8b927d}.next{margin-top:24px;font-size:18px;min-height:64px}.session-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:25px}.session-actions button{font-size:12px}.danger-text{color:#9a5949}.notice{font-size:13px;background:#edf1de;border:1px solid #d9dfc5;border-radius:9px;padding:15px;margin-bottom:18px;line-height:1.6}.notice button{margin:8px}.error{background:#fff0e9;border-color:#edcbbb;color:#913f2b}.text-button{border:0;background:transparent;font-size:13px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.stat{display:flex;flex-direction:column;gap:8px;padding:23px}.stat strong{font-size:42px;font-weight:500}.stat strong small{font-size:25px}.stat span{font-size:13px;font-weight:600}.stat small{color:var(--muted);line-height:1.4;font-size:10px}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}th,td{padding:14px 12px;border-bottom:1px solid #e8ece3;white-space:nowrap}thead th{font-size:10px;color:var(--muted);font-weight:500}tbody th{padding-left:0}th small{display:block;color:#8d795c;font-weight:400;margin-top:3px}.history-row{display:flex;gap:18px;align-items:center;padding:16px 0;border-bottom:1px solid #e8ece3}.history-row:last-child{border-bottom:0}.game-index{font-size:11px;color:#86957e}.history-row p{font-size:14px;margin-bottom:4px}.history-row small{color:var(--muted);font-size:10px}.history-row .muted{margin:0 8px;font-size:10px}.modal-backdrop{position:fixed;inset:0;background:#0c241db0;display:flex;align-items:center;justify-content:center;padding:20px;z-index:10}.modal{background:#fafbf5;border-radius:18px;padding:28px;width:100%;max-width:480px;max-height:90dvh;overflow:auto;box-shadow:0 20px 100px #10251b33}.modal p{font-size:13px}.modal .primary{margin-top:20px}.manage-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid var(--line)}.manage-row strong{font-size:14px;overflow-wrap:anywhere}.manage-row select{font-size:12px;max-width:145px}.add-player{display:flex;gap:10px;margin-top:20px}.check-row{display:flex;gap:12px;align-items:center;font-size:14px;margin-top:20px}.check-row input{width:20px;height:20px;accent-color:var(--green)}.pause{text-align:center;padding:40px 25px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@media(max-width:640px){.header{padding:21px 20px}.brand{font-size:21px}.pill{font-size:8px;letter-spacing:.8px;padding:8px}.app main{padding:30px 20px 20px}.setup h1{font-size:42px}.intro{font-size:14px}.card{padding:20px}.name-grid{grid-template-columns:1fr;gap:12px}.name-row input{font-size:16px}.section-heading h2{font-size:22px}.principles{font-size:9px;gap:8px}.principles b{display:block;margin:6px 0 0}.session-heading{align-items:flex-start}.session-heading h1{font-size:34px}.session-heading .eyebrow{font-size:8px;letter-spacing:1.2px}.tabs button{padding:8px 9px;font-size:11px}.session-heading p{font-size:11px}.teams{gap:12px}.team{padding:19px 17px;min-height:210px}.team-label{font-size:9px;letter-spacing:1px}.player{font-size:25px;min-height:75px}.serve-badge{font-size:7px;padding:5px 7px;letter-spacing:.6px}.versus{width:28px;height:28px;font-size:8px}.rotation-grid{grid-template-columns:1fr;gap:12px}.transition{display:grid;grid-template-columns:1fr 1fr;gap:15px}.transition>div+div{margin:0}.stats-grid{gap:8px}.stat{padding:14px 12px}.stat strong{font-size:33px}.stat span{font-size:11px}.stat small{font-size:9px}.session-actions{gap:8px}.session-actions button{padding:10px 12px;font-size:11px}footer{margin:10px 20px 0;padding:20px 0;gap:12px;font-size:8px;flex-direction:column}.modal{padding:22px}.session-heading:has(.tabs){flex-wrap:wrap}.next{margin-top:18px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.name-field{min-width:0}.name-row input::placeholder{color:#68736d;font-weight:400;font-style:italic;opacity:1}.name-row input:not(:placeholder-shown){background:#fff;font-weight:600}.name-row input[aria-invalid=true]{border-color:#a04b35;background:#fff6f0}.field-error{color:#963e2a;font-size:12px;margin:7px 0 0;line-height:1.5}.name-field .field-error{padding-left:24px}.setup-status{font-size:13px;margin-bottom:14px;color:#53644f}.result-editor{border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-top:20px;background:#fafbf6}.result-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0;width:100%;border:0;background:transparent;text-align:left;font-size:14px}.result-toggle small{font-weight:400;color:var(--muted);margin-left:7px}.winner-options{margin:4px 0 0;padding:0;border:0;display:flex;flex-wrap:wrap;gap:8px}.winner-options legend{font-size:12px;margin-bottom:7px}.winner-options button{font-size:12px;padding:8px 12px}.winner-options .selected{background:#e5eccc;border-color:#627a50}.score-toggle{padding:8px 0;text-decoration:underline;text-underline-offset:3px}.score-inputs{display:grid;grid-template-columns:1fr 1fr;gap:14px}.score-inputs label{font-size:12px}.score-inputs input{margin-top:6px;font-size:16px}.score-inputs input[aria-invalid=true]{border-color:#a04b35}.result-help,.result-summary{font-size:12px;line-height:1.5;margin:8px 0 0;color:#566650}.discard-result{margin-top:12px;font-size:12px;color:#913f2b;border-color:#dfc5b7;width:100%}.result-statistics>p,.point-statistics p{font-size:12px}.point-statistics{margin-top:18px}.point-statistics summary{padding:12px 0;cursor:pointer;font-size:14px;font-weight:600}.history-result{font-size:12px!important;margin-top:7px}.history-row .text-button{padding-left:0;font-size:12px}[hidden]{display:none!important}@media(max-width:400px){.result-editor{padding:10px 12px}.winner-options{gap:6px}.winner-options button{padding:8px 10px}}
