:root{--pine:#1e4d3b;--pine-deep:#163b2d;--cream:#f5efe0;--card:#fbf7ec;--card-grad:linear-gradient(180deg, #fdfaf1, #faf5e8);--brass:#b08d3e;--brass-soft:#b08d3e59;--brick:#a63d2f;--graphite:#4a4a44;--pencil:#55534c;--rule:#1e4d3b73;--rule-faint:#1e4d3b2e;--green:var(--pine);--green-mid:#2f6b4f;--green-soft:#1e4d3b12;--gold:var(--brass);--gold-dark:#96762f;--ink:var(--graphite);--ink-soft:#6b6a5e;--ink-faint:#837f70;--line:#1e4d3b47;--bg:#efe8d4;--bg-grad:radial-gradient(ellipse at 50% -5%, #f6f0df, #eae2cc);--bad:var(--brick);--bad-soft:#a63d2f14;--good:#2f6b4f;--good-soft:#2f6b4f1a;--btn-bg:var(--pine);--btn-fg:var(--cream);--hand-glow:none;--card-shadow:0 1px 0 var(--brass-soft), 0 2px 8px #4a4a4414;--radius:2px;--serif:"EB Garamond", Georgia, "Times New Roman", serif;--display:"Cinzel", Georgia, serif;--fell:"IM Fell English", Georgia, serif;--mono:"Courier Prime", "Courier New", monospace;--hand:"Kalam", "Segoe Print", "Bradley Hand", cursive}:root[data-theme=dark]{--pine:#c9a45c;--pine-deep:#0c1d16;--cream:#0c1d16;--card:#1c3a2c;--card-grad:linear-gradient(180deg, #234534, #1c3a2c);--brass:#c9a45c;--brass-soft:#c9a45c59;--brick:#d07a6d;--graphite:#ede5d0;--pencil:#ede5d0;--rule:#c9a45c59;--rule-faint:#ede5d024;--green:#c9a45c;--green-mid:#3a5c48;--green-soft:#c9a45c1a;--gold:#c9a45c;--gold-dark:#dab873;--ink:#ede5d0;--ink-soft:#cfc5ac;--ink-faint:#9c9887;--line:#ede5d029;--bg:#0a1811;--bg-grad:radial-gradient(ellipse at 50% -5%, #14291e, #081209);--bad:#d07a6d;--bad-soft:#d07a6d1a;--good:#8fbfa5;--good-soft:#8fbfa51f;--btn-bg:#c9a45c;--btn-fg:#0c1d16;--hand-glow:0 0 4px #ede5d047;--card-shadow:0 3px 12px #00000059}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--serif);background:var(--bg);background-image:var(--bg-grad);color:var(--ink);-webkit-font-smoothing:antialiased;background-attachment:fixed;font-size:17px}button{font-family:inherit}input,select{font-family:var(--serif);font-size:16px}.app{max-width:560px;margin:0 auto;padding:12px 16px 96px}.hand{font-family:var(--hand);color:var(--pencil);text-shadow:var(--hand-glow)}.tilt-a{display:inline-block;transform:rotate(-2deg)}.tilt-b{display:inline-block;transform:rotate(1.6deg)}.tilt-c{display:inline-block;transform:rotate(-1deg)translateY(1px)}.masthead{text-align:center;padding:6px 0 8px}.masthead .club{font-family:var(--display);letter-spacing:.12em;color:var(--pine);font-size:19px;font-weight:600;text-decoration:none}.masthead .flourish{color:var(--brass);letter-spacing:.5em;opacity:.85;margin-top:2px;font-size:10px}.rule-double{border-top:1px solid var(--brass-soft);border-bottom:1px solid var(--brass-soft);height:4px;margin:0 4px 14px}.tabbar{z-index:40;background:var(--card);background-image:var(--card-grad);border-top:2px solid var(--pine);padding:8px 4px calc(8px + env(safe-area-inset-bottom));justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar a{color:var(--ink-faint);font-family:var(--display);letter-spacing:.16em;text-transform:uppercase;flex-direction:column;align-items:center;gap:3px;min-width:64px;padding:2px 12px;font-size:9.5px;text-decoration:none;display:flex;position:relative}.tabbar .glyph{width:22px;height:22px;stroke:var(--ink-faint);fill:none;stroke-width:1.6px}.tabbar a.active{color:var(--pine);font-weight:700}.tabbar a.active .glyph{stroke:var(--pine)}.tabbar a.active:before{content:"";border-top:2.5px solid var(--brass);position:absolute;top:-10px;left:20%;right:20%}.card{background:var(--card);background-image:var(--card-grad);border:1.5px solid var(--rule);border-radius:var(--radius);box-shadow:var(--card-shadow);margin-bottom:14px;padding:16px}.card h2{font-family:var(--display);text-transform:uppercase;letter-spacing:.22em;color:var(--pine);margin:0 0 10px;font-size:13px;font-weight:600}.row{justify-content:space-between;align-items:center;gap:10px;display:flex}.muted{color:var(--ink-soft);font-size:14px}.big{font-size:23px;font-weight:600;font-family:var(--fell);color:var(--pine)}.spread{justify-content:space-between;align-items:baseline;display:flex}.list-item{color:inherit;border:1.5px solid var(--rule);border-radius:var(--radius);background:var(--card);background-image:var(--card-grad);box-shadow:var(--card-shadow);margin-bottom:10px;padding:13px 14px;text-decoration:none;display:block}.list-item:active{border-color:var(--brass)}.list-item b{font-family:var(--fell);color:var(--pine);font-size:19px;font-weight:400}.badge{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;border:1px solid;border-radius:1px;padding:2px 9px;font-size:10.5px;font-weight:700;display:inline-block}.badge.open{color:var(--green-mid);border-color:var(--rule);background:var(--green-soft)}.badge.in_progress{color:var(--brick);border-color:var(--bad-soft);background:var(--bad-soft)}.badge.completed{color:var(--ink-faint);border-color:var(--line);background:0 0}.btn{border-radius:var(--radius);cursor:pointer;font-family:var(--display);letter-spacing:.14em;text-transform:uppercase;text-align:center;background:var(--btn-bg);color:var(--btn-fg);border:none;width:100%;padding:14px 20px;font-size:13.5px;font-weight:600;display:inline-block;box-shadow:inset 0 0 0 1px #f5efe040,0 2px 6px #141e1440}.btn:disabled{opacity:.45}.btn.secondary{color:var(--pine);border:1.5px solid var(--brass);box-shadow:none;background:0 0}.btn.gold{background:var(--brass);color:#f5efe0}[data-theme=dark] .btn.gold{color:#0c1d16}.btn.danger{color:var(--bad);border:1.5px solid var(--bad-soft);box-shadow:none;background:0 0}.btn.small{width:auto;padding:8px 14px;font-size:11.5px}.field{margin-bottom:14px}.field label{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:5px;font-size:11px;display:block}.field input,.field select{border:1px solid var(--rule);border-radius:var(--radius);background:var(--card);width:100%;color:var(--ink);padding:12px}.error{color:var(--bad);font-size:14.5px;font-style:italic;font-family:var(--fell);margin:8px 0}.success{color:var(--good);font-size:14.5px;font-style:italic;font-family:var(--fell);margin:8px 0}.chipgrid{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--rule);background:var(--card);border-radius:var(--radius);font-family:var(--serif);cursor:pointer;color:var(--ink);padding:8px 14px;font-size:15px;font-weight:500}.chip.sel{border-color:var(--pine);background:var(--pine);color:var(--cream)}[data-theme=dark] .chip.sel{color:#0c1d16}.holestrip{z-index:30;background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;margin:-6px 0 4px;padding:8px 0 6px;position:sticky;top:0}.dots{flex-wrap:wrap;justify-content:center;gap:4px;display:flex}.dot{border:1px solid var(--line);width:27px;height:27px;font-family:var(--mono);color:var(--ink-soft);background:var(--card);cursor:pointer;border-radius:1px;justify-content:center;align-items:center;padding:0;font-size:12px;font-weight:400;display:flex}.dot.done{background:var(--pine);border-color:var(--pine);color:var(--cream)}[data-theme=dark] .dot.done{color:#0c1d16}.dot.cur{border:2px solid var(--brass);color:var(--pine);font-weight:700}.holehead{text-align:center;padding:8px 0 2px}.holehead .h{font-family:var(--display);color:var(--pine);letter-spacing:.08em;font-size:31px;font-weight:700}.holehead .sub{font-family:var(--mono);color:var(--ink-faint);letter-spacing:.22em;font-size:12px}.tally{font-family:var(--mono);letter-spacing:.12em;color:var(--ink-faint);text-transform:uppercase;flex-wrap:wrap;justify-content:center;gap:14px;margin:4px 0 10px;font-size:12px;display:flex}.tally b{color:var(--pine);font-weight:700}.tally .hand{letter-spacing:0;text-transform:none;font-size:16px}.ptally{text-align:left;font-family:var(--mono);letter-spacing:.12em;color:var(--ink-faint);text-transform:uppercase;margin:-2px 0 4px;font-size:11px}.playercard{background:var(--card);background-image:var(--card-grad);border:1.5px solid var(--rule);border-radius:var(--radius);box-shadow:var(--card-shadow);margin-bottom:10px;padding:14px}.playercard .who{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.playercard .name{font-family:var(--fell);color:var(--pine);font-size:20px;font-weight:400}.playercard .name .muted{font-family:var(--serif)}.strokedots{color:var(--brass);letter-spacing:2px;font-size:13px}.stepper{justify-content:center;align-items:center;gap:18px;display:flex}.stepper button{border-radius:var(--radius);border:1.5px solid var(--rule);width:58px;height:58px;font-size:28px;font-weight:400;font-family:var(--serif);color:var(--pine);cursor:pointer;background:0 0;flex-shrink:0}.stepper button:active{background:var(--pine);color:var(--cream)}.stepper .val{font-family:var(--hand);text-align:center;width:88px;color:var(--pencil);text-shadow:var(--hand-glow);cursor:pointer;background:0 0;border:none;font-size:52px;font-weight:400;transform:rotate(-2deg)}.stepper .val.empty{color:var(--ink-faint);font-size:15px;font-family:var(--fell);font-style:italic;transform:none}.chipline{justify-content:center;align-items:center;gap:8px;min-height:24px;margin-top:4px;display:flex}.chipline .muted{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;font-size:11.5px}.fchip{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid;border-radius:1px;padding:2px 10px;font-size:12px;font-weight:700}.fchip.good{border-color:var(--rule);color:var(--good);background:var(--good-soft)}.fchip.ok{border-color:var(--line);color:var(--ink-soft);background:0 0}.fchip.bad{border-color:var(--bad-soft);color:var(--bad);background:var(--bad-soft)}.scorefoot{z-index:40;background:var(--card);background-image:var(--card-grad);border-top:1px solid var(--brass-soft);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{font-family:var(--hand);text-align:center;padding-top:6px;font-size:15px;transform:rotate(-1deg)}.syncdot.pending{color:var(--gold-dark)}.syncdot.saved{color:var(--good)}.numpad{z-index:60;background:#08100a9e;align-items:flex-end;display:flex;position:fixed;inset:0}.numpad .pad{background:var(--card);background-image:var(--card-grad);border-top:2px solid var(--brass);width:100%;max-width:560px;padding:18px 18px calc(18px + env(safe-area-inset-bottom));border-radius:6px 6px 0 0;margin:0 auto}.numpad .grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.numpad .grid button{font-family:var(--hand);color:var(--pencil);border:1px solid var(--rule);border-radius:var(--radius);cursor:pointer;background:0 0;padding:14px 0;font-size:24px}.board-frame{border:2px solid var(--pine);outline:1px solid var(--pine);outline-offset:3px;background:var(--card);background-image:var(--card-grad);box-shadow:var(--card-shadow);margin:4px 2px 18px;padding:18px 14px 14px}.board-frame .club-line{text-align:center;font-family:var(--display);letter-spacing:.3em;color:var(--pine);text-transform:uppercase;font-size:10.5px}.board-frame h3{text-align:center;font-family:var(--fell);color:var(--pine);margin:2px 0;font-size:24px;font-weight:400}.board-frame .comp-meta{text-align:center;font-family:var(--mono);color:var(--ink-faint);letter-spacing:.08em;text-transform:uppercase;margin-bottom:12px;font-size:11.5px}.live-chip{font-family:var(--mono);letter-spacing:.18em;color:var(--brick);border:1px solid var(--bad-soft);margin-left:6px;padding:1px 8px;font-size:10.5px;display:inline-block}table.board{border-collapse:collapse;width:100%}table.board th{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--pine);border-bottom:1.5px solid var(--rule);text-align:left;padding:6px 4px;font-size:11px;font-weight:700}table.board th:last-child,table.board td:last-child{text-align:right}table.board td{border-bottom:1px solid var(--rule-faint);vertical-align:middle;padding:10px 4px}table.board tr:last-child td{border-bottom:none}.bd-pos{font-family:var(--display);color:var(--brass);width:36px;font-size:15px}.bd-name{font-family:var(--hand);color:var(--pencil);text-shadow:var(--hand-glow);font-size:20px}.bd-detail{font-family:var(--mono);color:var(--ink-faint);font-size:11px}.bd-pts{font-family:var(--hand);color:var(--pencil);text-shadow:var(--hand-glow);white-space:nowrap;font-size:23px}tr.leader-row{background:#b08d3e1a}[data-theme=dark] tr.leader-row{background:#c9a45c1f}tr.leader-row .bd-name:after{content:" ✎";color:var(--brass);font-size:13px}.board-note{text-align:center;font-family:var(--fell);color:var(--ink-faint);margin-top:10px;font-size:14px;font-style:italic}.lb-row{background:var(--card);border:1px solid var(--rule);border-radius:var(--radius);align-items:center;gap:12px;margin-bottom:8px;padding:13px 14px;display:flex}.lb-row .pos{font-family:var(--display);color:var(--brass);text-align:center;width:24px}.lb-row.first{border-color:var(--brass)}.lb-row .lname{flex:1;font-weight:600}.lb-row .lmetric{font-family:var(--hand);color:var(--pencil);font-size:21px}.vcard{background:var(--card);background-image:var(--card-grad);border:2px solid var(--green-mid);outline:1px solid var(--green-mid);outline-offset:4px;box-shadow:var(--card-shadow);margin:6px 3px 18px;padding:22px 14px 20px}.vcard .club-line{text-align:center;font-family:var(--display);letter-spacing:.28em;color:var(--green-mid);text-transform:uppercase;font-size:11px}.vcard h3{text-align:center;font-family:var(--fell);color:var(--pine);margin:4px 0 2px;font-size:24px;font-weight:400}.vcard .date-line{text-align:center;font-family:var(--mono);color:var(--ink-faint);letter-spacing:.06em;margin-bottom:14px;font-size:12px}.vcard .date-line .hand{font-size:15px}.vcard table{border-collapse:collapse;table-layout:fixed;width:100%}.vcard th,.vcard td{border:1px solid var(--rule);text-align:center;padding:6px 1px;overflow:hidden}.vcard th{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--green-mid);background:var(--green-soft);font-size:10.5px;font-weight:700}.vcard th.wide,.vcard td.wide{width:15%}.vcard td.label{font-family:var(--mono);color:var(--ink-soft);font-size:12px}.vcard td.score{font-family:var(--hand);color:var(--pencil);text-shadow:var(--hand-glow);font-size:17px}.vcard td.score .birdie{min-width:20px;display:inline-block;position:relative}.vcard td.score .birdie:after{content:"";border:1.5px solid var(--pencil);opacity:.6;border-radius:50%;position:absolute;inset:-3px -5px;transform:rotate(-4deg)}.vcard td.score .over{color:var(--brick)}.vcard .rowname{font-family:var(--hand);color:var(--pencil);text-align:left;padding-left:5px;font-size:14px}.vcard .footer-row{font-family:var(--mono);color:var(--ink-faint);letter-spacing:.06em;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;margin-top:14px;font-size:10.5px;display:flex}.vcard .sig{font-family:var(--hand);color:var(--pencil);font-size:17px;display:inline-block;transform:rotate(-1.5deg)}.teemeta{font-family:var(--mono);letter-spacing:.15em;color:var(--ink-faint);font-size:10.5px}.teechips{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.teechip{font-family:var(--mono);letter-spacing:.04em;border:1px solid var(--rule-faint);color:var(--pine);border-radius:1px;padding:2px 8px;font-size:11px;font-weight:700}.teechip span{color:var(--ink-faint);margin-left:4px;font-weight:400}.holegrid{border-collapse:collapse;width:100%}.holegrid th{font-family:var(--mono);text-transform:uppercase;color:var(--ink-faint);letter-spacing:.08em;padding:4px;font-size:10.5px}.holegrid td{text-align:center;padding:3px}.holegrid td.n{font-family:var(--mono);color:var(--ink-soft);width:34px;font-weight:700}.holegrid input{text-align:center;border:1px solid var(--rule);border-radius:var(--radius);background:var(--card);width:100%;max-width:72px;color:var(--ink);padding:9px 4px;font-weight:600}.holegrid input.bad{border-color:var(--bad);background:var(--bad-soft)}.invite-page{min-height:100vh;font-family:var(--serif);background:radial-gradient(1200px 500px at 50% -10%,#1e4d3b 0%,#12291f 55%,#081209 100%);justify-content:center;align-items:center;padding:28px 18px;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{text-align:center;color:#4a4a44;background:#f5efe0;border:1px solid #b08d3eb3;border-radius:4px;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:#96762f;letter-spacing:.35em;text-transform:uppercase;font-size:11px;font-family:var(--display);margin-bottom:14px;font-weight:600}.invite-title{font-family:var(--fell);color:#1e4d3b;margin:0 0 8px;font-size:30px;font-weight:400;line-height:1.2}.invite-flavour{color:#6d6552;font-style:italic;font-family:var(--fell);margin-bottom:22px}.invite-rule{opacity:.5;background:#b08d3e;height:1px;margin:18px 30px}.invite-card .field input{color:#4a4a44;background:#fffdf7;border-color:#ded4bb}.invite-card .field label{color:#7a7060;text-align:left}.invite-card .btn{color:#f5efe0;background:#1e4d3b}.invite-card .btn.secondary{color:#1e4d3b;background:0 0;border:1.5px solid #b08d3e}.invite-card .btn.gold{color:#f5efe0;background:#b08d3e}.invite-note{color:#8a8272;margin-top:14px;font-size:13px}.invite-card .error{color:#a63d2f}.linkbtn{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;margin-top:14px;padding:4px;font-size:13px;text-decoration:underline}.invite-card .linkbtn{color:#7a7060}.linkbtn:hover{color:var(--ink)}.howto{margin-top:6px}.howto>summary{cursor:pointer;color:var(--green-mid);-webkit-user-select:none;user-select:none;align-items:center;gap:5px;font-size:13.5px;font-weight:600;list-style:none;display:inline-flex}[data-theme=dark] .howto>summary{color:var(--brass)}.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:14px;line-height:1.5}.center{text-align:center}.mt{margin-top:14px}.spinner{text-align:center;font-family:var(--fell);color:var(--ink-soft);padding:40px 0;font-style:italic}.section-title{font-family:var(--display);text-transform:uppercase;letter-spacing:.24em;color:var(--pine);align-items:center;gap:10px;margin:20px 2px 10px;font-size:12px;font-weight:600;display:flex}.section-title:after{content:"";border-top:1px solid var(--brass-soft);flex:1}.groupbox{border:1px dashed var(--rule);border-radius:var(--radius);background:var(--card);margin-bottom:10px;padding:12px}.groupbox.target{border-color:var(--brass)}.groupbox b{color:var(--pine)}.pillrow{flex-wrap:wrap;gap:6px;min-height:30px;margin-top:8px;display:flex}
