:root{--green:#0b3d2e;--green-mid:#14573f;--green-soft:#e7f0ea;--cream:#f7f3e8;--gold:#c9a961;--gold-dark:#a8863c;--ink:#1c2420;--ink-soft:#5a655e;--line:#d9ded9;--bg:#f4f6f3;--card:#fff;--bad:#b3402e;--good:#1c7a43;--radius:14px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button{font-family:inherit}input,select{font-family:inherit;font-size:16px}.app{max-width:560px;margin:0 auto;padding:16px 16px 90px}.top{justify-content:center;align-items:center;padding:6px 2px 14px;display:flex}.top .brand{color:var(--green);letter-spacing:.2px;font-size:18px;font-weight:800}.top .brand span{color:var(--gold-dark)}.tabbar{z-index:40;background:var(--card);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar a{color:var(--ink-soft);border-radius:10px;flex-direction:column;align-items:center;gap:2px;min-width:64px;padding:4px 12px;font-size:11px;font-weight:600;text-decoration:none;display:flex}.tabbar a .ico{font-size:22px;line-height:1}.tabbar a.active{color:var(--green);background:var(--green-soft)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:12px;padding:16px}.card h2{text-transform:uppercase;letter-spacing:1px;color:var(--ink-soft);margin:0 0 10px;font-size:15px}.row{justify-content:space-between;align-items:center;gap:10px;display:flex}.muted{color:var(--ink-soft);font-size:13px}.big{font-size:22px;font-weight:800}.spread{justify-content:space-between;align-items:baseline;display:flex}.list-item{color:inherit;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);margin-bottom:10px;padding:13px 14px;text-decoration:none;display:block}.list-item:active{background:var(--green-soft)}.badge{letter-spacing:.5px;text-transform:uppercase;border-radius:99px;padding:3px 9px;font-size:11px;font-weight:700;display:inline-block}.badge.open{color:#274d9e;background:#e3ecff}.badge.in_progress{color:var(--good);background:#e2f5e8}.badge.completed{color:#666;background:#eee}.btn{cursor:pointer;text-align:center;background:var(--green);color:#fff;border:none;border-radius:12px;width:100%;padding:13px 20px;font-size:16px;font-weight:700;display:inline-block}.btn:disabled{opacity:.5}.btn.secondary{background:var(--green-soft);color:var(--green)}.btn.gold{background:var(--gold);color:var(--green)}.btn.danger{color:var(--bad);background:#f6e5e2}.btn.small{border-radius:10px;width:auto;padding:8px 14px;font-size:14px}.field{margin-bottom:14px}.field label{color:var(--ink-soft);margin-bottom:5px;font-size:13px;font-weight:700;display:block}.field input,.field select{border:1px solid var(--line);background:#fff;border-radius:10px;width:100%;padding:12px}.error{color:var(--bad);margin:8px 0;font-size:14px}.success{color:var(--good);margin:8px 0;font-size:14px}.chipgrid{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1.5px solid var(--line);background:var(--card);cursor:pointer;color:var(--ink);border-radius:99px;padding:8px 14px;font-size:14px;font-weight:600}.chip.sel{border-color:var(--green);background:var(--green-soft);color:var(--green)}.holestrip{z-index:30;background:var(--bg);margin:-6px 0 4px;padding:8px 0 4px;position:sticky;top:0}.dots{flex-wrap:wrap;justify-content:center;gap:4px;display:flex}.dot{border:1.5px solid var(--line);width:24px;height:24px;color:var(--ink-soft);background:var(--card);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:11px;font-weight:700;display:flex}.dot.done{background:var(--green);border-color:var(--green);color:#fff}.dot.cur{border-color:var(--gold-dark);color:var(--green);border-width:2.5px}.holehead{text-align:center;padding:10px 0 2px}.holehead .h{color:var(--green);letter-spacing:1px;font-size:30px;font-weight:900}.holehead .sub{color:var(--ink-soft);letter-spacing:2px;font-size:13px;font-weight:600}.playercard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:10px;padding:14px}.playercard .who{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.playercard .name{font-size:17px;font-weight:800}.strokedots{color:var(--gold-dark);letter-spacing:2px;font-size:13px}.stepper{justify-content:center;align-items:center;gap:14px;display:flex}.stepper button{background:var(--green-soft);width:64px;height:64px;color:var(--green);cursor:pointer;border:none;border-radius:18px;flex-shrink:0;font-size:30px;font-weight:800}.stepper button:active{background:var(--green);color:#fff}.stepper .val{text-align:center;width:84px;color:var(--ink);cursor:pointer;background:0 0;border:none;font-size:44px;font-weight:900}.stepper .val.empty{color:var(--ink-soft);font-size:20px;font-weight:700}.chipline{justify-content:center;align-items:center;gap:8px;min-height:22px;margin-top:6px;display:flex}.fchip{border-radius:99px;padding:2px 10px;font-size:13px;font-weight:800}.fchip.good{color:var(--good);background:#e2f5e8}.fchip.ok{color:#6b6b4f;background:#f1f1e9}.fchip.bad{color:var(--bad);background:#f6e5e2}.scorefoot{z-index:40;background:var(--card);border-top:1px solid var(--line);padding:10px 16px calc(10px + env(safe-area-inset-bottom));gap:10px;max-width:560px;margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0}.syncdot{text-align:center;padding-top:4px;font-size:12px;font-weight:700}.syncdot.pending{color:var(--gold-dark)}.syncdot.saved{color:var(--good)}.numpad{z-index:60;background:#0c14108c;align-items:flex-end;display:flex;position:fixed;inset:0}.numpad .pad{background:var(--card);width:100%;max-width:560px;padding:18px 18px calc(18px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;margin:0 auto}.numpad .grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.numpad .grid button{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:12px;padding:16px 0;font-size:22px;font-weight:800}.lb-row{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:12px;margin-bottom:8px;padding:13px 14px;display:flex}.lb-row .pos{color:var(--ink-soft);text-align:center;width:24px;font-weight:900}.lb-row.first{border-color:var(--gold);background:#fdfaf2}.lb-row.first .pos{color:var(--gold-dark)}.lb-row .lname{flex:1;font-weight:700}.lb-row .lmetric{color:var(--green);font-size:18px;font-weight:900}.holegrid{border-collapse:collapse;width:100%}.holegrid th{text-transform:uppercase;color:var(--ink-soft);padding:4px;font-size:11px}.holegrid td{text-align:center;padding:3px}.holegrid td.n{color:var(--ink-soft);width:34px;font-weight:800}.holegrid input{text-align:center;border:1px solid var(--line);border-radius:8px;width:100%;max-width:72px;padding:9px 4px;font-weight:700}.holegrid input.bad{border-color:var(--bad);background:#fdf1ef}.invite-page{background:radial-gradient(1200px 500px at 50% -10%,#14573f 0%,#0b3d2e 55%,#072418 100%);justify-content:center;align-items:center;min-height:100vh;padding:28px 18px;font-family:Georgia,Times New Roman,serif;display:flex;position:relative;overflow:hidden}.invite-page:before{content:"";opacity:.05;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='420' height='420' viewBox='0 0 420 420'%3E%3Cg fill='none' stroke='%23f7f3e8' stroke-width='1.4'%3E%3Cellipse cx='210' cy='210' rx='60' ry='38'/%3E%3Cellipse cx='210' cy='210' rx='105' ry='72'/%3E%3Cellipse cx='210' cy='210' rx='150' ry='108'/%3E%3Cellipse cx='210' cy='210' rx='196' ry='146'/%3E%3C/g%3E%3C/svg%3E");background-size:420px 420px;position:absolute;inset:0}.invite-card{background:var(--cream);text-align:center;border:1px solid #c9a961b3;border-radius:18px;width:100%;max-width:420px;padding:38px 30px;position:relative;box-shadow:0 30px 60px #00000073}.invite-card .crest{margin-bottom:6px;font-size:44px}.invite-kicker{color:var(--gold-dark);letter-spacing:5px;text-transform:uppercase;margin-bottom:14px;font-size:12px;font-weight:700}.invite-title{color:var(--green);margin:0 0 8px;font-size:30px;line-height:1.2}.invite-flavour{color:#6d6552;margin-bottom:22px;font-style:italic}.invite-rule{background:var(--gold);opacity:.5;height:1px;margin:18px 30px}.invite-card .field input{background:#fffdf7;border-color:#ded4bb}.invite-card .field label{color:#7a7060;text-align:left}.invite-note{color:#8a8272;margin-top:14px;font-size:13px}.linkbtn{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;margin-top:14px;padding:4px;font-size:13px;text-decoration:underline}.linkbtn:hover{color:var(--ink)}.howto{margin-top:6px}.howto>summary{cursor:pointer;color:var(--green);-webkit-user-select:none;user-select:none;align-items:center;gap:5px;font-size:13px;font-weight:600;list-style:none;display:inline-flex}.howto>summary::-webkit-details-marker{display:none}.howto>summary:before{content:"ⓘ";font-weight:700}.howto[open]>summary{margin-bottom:6px}.howto ul{margin:0;padding-left:18px}.howto li{color:var(--ink-soft);margin:5px 0;font-size:13px;line-height:1.45}.center{text-align:center}.mt{margin-top:14px}.spinner{text-align:center;color:var(--ink-soft);padding:40px 0}.section-title{text-transform:uppercase;letter-spacing:1.2px;color:var(--ink-soft);margin:20px 0 8px;font-size:14px;font-weight:800}.groupbox{border:1.5px dashed var(--line);border-radius:var(--radius);background:var(--card);margin-bottom:10px;padding:12px}.groupbox.target{border-color:var(--gold-dark);background:#fdfaf2}.pillrow{flex-wrap:wrap;gap:6px;min-height:30px;margin-top:8px;display:flex}
