@font-face{font-family:Bricolage Grotesque;src:url(/fonts/bricolage-grotesque.woff2) format("woff2");font-weight:400 800;font-display:swap}@font-face{font-family:Hanken Grotesk;src:url(/fonts/hanken-grotesk.woff2) format("woff2");font-weight:400 700;font-display:swap}:root{--fairway: #0f4634;--fairway-deep: #0a2f23;--fairway-light: #1c6b4f;--cream: #efeade;--card: #fffdf9;--ink: #16211d;--ink-soft: #61705f;--line: #ded8c8;--line-strong: #b9b2a0;--flag: #c8452f;--gold: #d4a437;--birdie: #1c6b4f;--turf-dim: #d7e5dc;--sand: #ddc9a3;--rough: #8a9c74;--turf: #b2cc93;--graphite: #3f4542;--font-display: "Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;--font-body: "Hanken Grotesk", ui-sans-serif, -apple-system, "Segoe UI", system-ui, sans-serif;--radius: 18px;--shadow: 0 1px 2px rgba(16, 40, 32, .05), 0 8px 24px rgba(16, 40, 32, .07)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{background:var(--cream);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}.app{max-width:720px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.topbar{background:var(--fairway);color:#fff;padding:env(safe-area-inset-top) 16px 0;position:sticky;top:0;z-index:20}.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:12px;height:56px}.brand{font-weight:700;font-size:18px;letter-spacing:-.01em;color:#fff;text-decoration:none;display:flex;align-items:center;gap:8px;white-space:nowrap;flex:none}.brand span[aria-hidden]{font-size:20px}.topnav{display:flex;gap:4px;align-items:center}.topnav a,.topnav button{color:#ffffffd9;text-decoration:none;font-size:14px;font-weight:500;padding:7px 10px;border-radius:9px;background:none;border:0;cursor:pointer;font-family:inherit}.topnav a:hover,.topnav button:hover{background:#ffffff1f;color:#fff}main{flex:1;padding:20px 16px calc(40px + env(safe-area-inset-bottom))}h1{font-size:26px;line-height:1.2;letter-spacing:-.02em;margin:0 0 4px}h2{font-size:18px;letter-spacing:-.01em;margin:0 0 12px}.subtitle{color:var(--ink-soft);margin:0 0 24px;font-size:15px}.eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:700;color:var(--ink-soft);margin-bottom:8px}.muted{color:var(--ink-soft);font-size:14px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-bottom:14px}.card-link{display:block;text-decoration:none;color:inherit}.card-link:active{transform:scale(.995)}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;justify-content:space-between;gap:12px}label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--ink)}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select{width:100%;padding:12px 13px;font-size:16px;font-family:inherit;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:11px;appearance:none}input:focus,select:focus{outline:2px solid var(--fairway-light);outline-offset:-1px;border-color:transparent}.field{margin-bottom:16px}.hint{font-size:13px;color:var(--ink-soft);margin-top:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 18px;font-size:15px;font-weight:600;font-family:inherit;border-radius:13px;border:1px solid transparent;background:var(--fairway);color:#fff;cursor:pointer;text-decoration:none;min-height:46px}.btn:hover{background:var(--fairway-deep)}.btn:disabled{opacity:.5;cursor:default}.btn-block{width:100%}.btn-secondary{background:var(--card);color:var(--fairway);border-color:var(--line)}.btn-secondary:hover{background:#faf8f2}.btn-danger{background:var(--card);color:var(--flag);border-color:#f0d5d0}.btn-danger:hover{background:#fdf4f2}.btn-sm{padding:8px 12px;font-size:13px;min-height:36px}.alert{padding:12px 14px;border-radius:11px;font-size:14px;margin-bottom:16px;border:1px solid}.alert-error{background:#fdf3f1;border-color:#f0d5d0;color:#8f2d1c}.alert-ok{background:#eef7f2;border-color:#c9e5d6;color:#14543f}.badge{display:inline-block;white-space:nowrap;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:#eef1ee;color:var(--ink-soft)}.badge-active{background:#e6f3ec;color:var(--birdie)}.badge-final{background:#efece2;color:#7a6a3f}.code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:17px;font-weight:600;letter-spacing:.12em;background:var(--cream);border:1px dashed var(--line);border-radius:9px;padding:8px 12px;display:inline-block}.lb-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.lb-row:last-child{border-bottom:0}.lb-pos{width:30px;height:30px;flex:none;border-radius:50%;background:var(--cream);color:var(--ink-soft);display:grid;place-items:center;font-weight:700;font-size:13px}.lb-row.leader .lb-pos{background:var(--gold);color:#4a3708}.lb-main{flex:1;min-width:0}.lb-name{font-weight:650;font-size:15px}.lb-players{font-size:13px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-score{text-align:right;flex:none}.lb-total{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.lb-topar{font-size:12px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.under{color:var(--flag)}.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -16px;padding:0 16px}table.card-table{border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums;min-width:100%}table.card-table th,table.card-table td{padding:7px 8px;text-align:center;border-bottom:1px solid var(--line);white-space:nowrap}table.card-table th{font-size:11px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}table.card-table .sticky-col{position:sticky;left:0;background:var(--card);text-align:left;font-weight:600;z-index:1;min-width:108px;box-shadow:2px 0 0 var(--line-strong)}tr.team-total td{background:#f7f9f7;font-weight:700;border-top:2px solid var(--line-strong);border-bottom:2px solid var(--line-strong)}tr.team-total .sticky-col{background:#f7f9f7}table.card-table td.under,table.card-table td.over{position:relative}table.card-table td.under:after,table.card-table td.over:after{content:"";position:absolute;left:50%;top:50%;width:21px;height:21px;transform:translate(-50%,-50%);border:1.5px solid currentColor;opacity:.4;pointer-events:none}table.card-table td.under:after{border-radius:50%}table.card-table td.over:after{border-radius:3px}td.counted{font-weight:700;color:var(--birdie);background:#eaf5ef;border-radius:6px}table.card-table .par-row td{color:var(--ink-soft);font-size:12px;border-bottom:2px solid var(--line-strong)}table.card-table thead th,table.card-table thead td,table.card-table thead .sticky-col{background:var(--cream)}table.card-table thead th{border-top:2px solid var(--line-strong)}table.card-table .col-sub{border-left:2px solid var(--line-strong)}table.card-table .col-tot{border-left:1px solid var(--line);font-weight:700}.nine-toggle{display:flex;gap:6px;margin-bottom:12px}.nine-toggle button{flex:1;padding:8px 12px;border-radius:10px;border:1px solid var(--line);background:#fff;font:inherit;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);cursor:pointer}.nine-toggle button.selected{background:var(--fairway);border-color:var(--fairway);color:#fff}.hole-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.hole-num{font-size:34px;font-weight:800;letter-spacing:-.03em;line-height:1}.hole-meta{font-size:13px;color:var(--ink-soft)}.nav-btn{width:46px;height:46px;border-radius:12px;border:1px solid var(--line);background:#fff;font-size:20px;color:var(--fairway);cursor:pointer;display:grid;place-items:center}.nav-btn:disabled{opacity:.35;cursor:default}.player-entry{padding:14px 0;border-bottom:1px solid var(--line)}.player-entry:last-child{border-bottom:0}.player-entry-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}.player-name{font-weight:650;font-size:15px}.team-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft)}.pips{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}.pip{aspect-ratio:1;border-radius:10px;border:1px solid var(--line);background:#fff;font-size:15px;font-weight:650;font-family:inherit;color:var(--ink);cursor:pointer;display:grid;place-items:center;padding:0;font-variant-numeric:tabular-nums}.pip:hover{border-color:var(--fairway-light)}.pip.selected{background:var(--fairway);border-color:var(--fairway);color:#fff}.pip.clear{font-size:12px;color:var(--ink-soft)}.team-block{margin-bottom:8px}.team-block-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);padding:10px 0 2px;border-top:1px solid var(--line)}.team-block:first-child .team-block-title{border-top:0;padding-top:0}.hole-card{padding:16px 14px 13px}.hole-num{font-size:40px;font-weight:800;line-height:.95;font-variant-numeric:tabular-nums}.ticks{display:flex;gap:3px;margin-top:13px}.tick{flex:1;height:4px;border-radius:2px;background:var(--line)}.tick.done{background:var(--fairway-light)}.tick.here{background:var(--flag)}.team-card{padding:0;overflow:hidden}.team-card-mine{border-color:var(--fairway-light)}.team-head{display:flex;align-items:center;gap:8px;padding:11px 15px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.085em;color:var(--ink-soft);border-bottom:1px solid var(--line)}.team-card-mine .team-head{background:var(--turf-dim);color:var(--fairway);border-bottom:0}.yours{margin-left:auto;font-size:10px;letter-spacing:.06em;background:var(--fairway);color:var(--card);padding:3px 9px;border-radius:999px}.player-entry{padding:13px 15px;border-top:1px solid var(--line)}.team-head+.player-entry{border-top:0}.who{display:flex;align-items:center;gap:10px;margin-bottom:10px}.badge-initials{width:32px;height:32px;flex:none;border-radius:11px;display:grid;place-items:center;background:var(--turf-dim);color:var(--fairway);font-weight:800;font-size:12px}.verdict{margin-left:auto;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft)}.link-tag{background:none;border:0;padding:0;font:inherit;cursor:pointer}.pip.selected{position:relative}.pip.selected.under:after,.pip.selected.over:after{content:"";position:absolute;inset:4px;border:1.5px solid var(--card)}.pip.selected.under:after{border-radius:50%}.pip.selected.over:after{border-radius:3px}.more{display:flex;align-items:center;gap:8px;width:100%;margin-top:11px;padding:9px 0 0;border:0;border-top:1px solid var(--line);background:none;cursor:pointer;font:inherit;font-size:12.5px;font-weight:700;color:var(--fairway);text-align:left}.recap{flex:1;font-weight:400;font-size:11.5px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.more .chev{margin-left:auto;color:var(--ink-soft);font-size:11px}.panel{padding-top:4px}.leg{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);padding:12px 0 6px}.note{font-size:12px;color:var(--ink-soft);padding:9px 12px;border:1px dashed var(--line);border-radius:12px;margin:4px 0 0}.field{width:100%;max-width:320px;height:auto;display:block;margin:0 auto;border-radius:12px}.field-off{opacity:.55}.zone{cursor:pointer}.field-off .zone{cursor:default}.zone:hover>g{opacity:.82}.zlabel{font-family:var(--font-body);font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;pointer-events:none;fill:#24301f}.zlabel.on{fill:#fffdf9}.stat-row{display:flex;align-items:center;gap:10px;padding:5px 0}.stat-label{font-size:14px}.stepper{margin-left:auto;display:flex;align-items:center;gap:5px}.stepper button{width:36px;height:36px;border-radius:11px;border:1px solid var(--line);background:transparent;color:var(--fairway);font:inherit;font-size:17px;cursor:pointer;display:grid;place-items:center;padding:0}.stepper button:hover:not(:disabled){border-color:var(--fairway-light)}.stepper button:disabled{opacity:.3;cursor:default}.stat-row.sandy .stepper button{border-color:var(--sand)}.stat-row.risky .stepper button{border-color:#ecc9c1;color:var(--flag)}.stat-value{min-width:28px;text-align:center;font-weight:700;font-size:15px;font-variant-numeric:tabular-nums}.stat-value.none{font-weight:400;color:var(--ink-soft)}.gir{display:flex;gap:6px;margin-top:9px;padding:9px 12px;border-radius:12px;background:var(--turf-dim);font-size:12.5px;color:var(--fairway)}.gir.miss{background:transparent;border:1px dashed var(--line);color:var(--ink-soft)}.empty{text-align:center;padding:40px 20px;color:var(--ink-soft)}.empty-icon{font-size:40px;margin-bottom:12px}.divider{height:1px;background:var(--line);margin:20px 0}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.chip-select{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:9px 13px;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:14px;font-family:inherit;color:var(--ink);cursor:pointer}.chip.on{background:var(--fairway);border-color:var(--fairway);color:#fff}.chip:disabled{opacity:.4;cursor:default}.center-page{max-width:380px;margin:8vh auto 0}.logo-mark{text-align:center;font-size:44px;margin-bottom:8px}h1,.brand,.hole-num,.lb-total,.badge-initials{font-family:var(--font-display);letter-spacing:-.025em}h1{font-weight:800}
