[hidden]{display:none!important}
:root {
  --bg: #f4f5f1;
  --panel: #ffffff;
  --ink: #142018;
  --muted: #68736d;
  --green: #123b2a;
  --green-2: #1e5a40;
  --lime: #d8ef80;
  --gold: #d5b363;
  --line: #dfe5df;
  --soft: #eaf0eb;
  --danger: #a53a3a;
  --shadow: 0 14px 40px rgba(24, 43, 31, .09);
}
* { box-sizing: border-box; }
html { background: var(--bg); }
body { margin:0; font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; background:var(--bg); color:var(--ink); }
button,input,select { font:inherit; }
button { -webkit-tap-highlight-color:transparent; }
.app-shell { max-width:760px; margin:0 auto; min-height:100vh; padding-bottom:calc(30px + env(safe-area-inset-bottom)); }
.hero { margin:14px 14px 0; border-radius:24px; padding:22px 18px; display:grid; grid-template-columns:auto 1fr auto; gap:14px; align-items:center; color:white; background:linear-gradient(135deg,#0e3022,#1b5a3e); box-shadow:var(--shadow); }
.hero-mark { width:48px;height:48px;border-radius:50%;display:grid;place-items:center;border:2px solid rgba(255,255,255,.75);font-weight:800;font-size:24px;background:rgba(255,255,255,.07); }
.app-refresh-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#refreshAppBtn{min-height:44px;padding:10px 14px;border:1px solid rgba(255,255,255,.65);border-radius:12px;color:white;background:transparent;font:inherit;font-size:13px;font-weight:700;cursor:pointer}
#refreshAppBtn:focus-visible{outline:3px solid white;outline-offset:3px}
@media(max-width:520px){.app-refresh-controls{grid-column:1 / -1;justify-content:flex-end}}
.hero h1 { font-size:20px;line-height:1.1;margin:3px 0 5px; }.hero p{margin:0;color:rgba(255,255,255,.74);font-size:12px}.eyebrow{font-size:10px;letter-spacing:.14em;font-weight:800}.eyebrow.muted{color:#7a867f}.status-pill{font-size:9px;letter-spacing:.08em;padding:7px 8px;border-radius:999px;background:rgba(255,255,255,.13);white-space:nowrap}
main{padding:14px}.view{display:none}.view.active{display:block}.season-card,.panel,.finish-card{background:var(--panel);border-radius:20px;box-shadow:var(--shadow);border:1px solid rgba(24,43,31,.05)}.season-card{padding:18px;display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.season-card h2{font-size:19px;margin:5px 0}.season-card p{margin:0;color:var(--muted);font-size:13px}.season-badge{min-width:68px;text-align:center;border-radius:14px;padding:10px 8px;background:var(--soft);color:var(--green);font-weight:800;font-size:12px}.panel{padding:18px}.panel-heading{display:flex;justify-content:space-between;gap:12px;align-items:flex-end;margin-bottom:16px}.panel-heading.slim{margin-bottom:10px}.panel-heading h2{margin:4px 0 0;font-size:22px}.tiny-note{color:var(--muted);font-size:10px;text-align:right;max-width:140px}.field-block{margin-top:17px}.field-block label,.player-setup-card label{display:block;font-size:11px;font-weight:700;margin-bottom:6px}.segmented{display:grid;grid-template-columns:1fr 1fr;background:#eef1ee;padding:4px;border-radius:12px;gap:4px}.seg-btn{border:0;border-radius:9px;background:transparent;min-height:42px;font-weight:700;color:#59635d;cursor:pointer}.seg-btn.active{background:white;color:var(--green);box-shadow:0 2px 8px rgba(0,0,0,.07)}.group-intro{margin:15px 0 10px;background:#f1f5f2;border:1px solid #dce5de;border-radius:12px;padding:10px 12px;color:var(--muted);font-size:11px;line-height:1.45}
.players-setup{display:flex;flex-direction:column;gap:10px}.player-setup-card{border:1px solid #dfe5df;border-radius:16px;padding:12px;background:#fbfcfb}.player-setup-head{display:grid;grid-template-columns:34px 1fr 34px;gap:8px;align-items:center}.player-number{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--green);color:white;font-weight:800}.player-name{width:100%;border:1px solid #d8dfd9;border-radius:10px;padding:9px 10px;font-weight:700}.remove-player{width:32px;height:32px;border:0;border-radius:9px;background:#f4e8e8;color:var(--danger);font-size:20px;cursor:pointer}.player-setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.player-setup-card select{width:100%;min-height:39px;border:1px solid #d8dfd9;border-radius:9px;background:white;padding:0 9px}.hcp-compact{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:10px}.hcp-compact>div:first-child span{display:block;color:var(--muted);font-size:9px}.mini-stepper{display:grid;grid-template-columns:35px 62px 35px;gap:5px}.mini-stepper button,.mini-stepper input{min-height:36px;border:1px solid #d8dfd9;background:white;border-radius:9px;text-align:center;font-weight:800}.mini-stepper input{width:62px}.player-course-preview{display:grid;grid-template-columns:1.5fr .75fr 1fr;gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid #e3e8e4}.player-course-preview div{min-width:0}.player-course-preview span{display:block;color:var(--muted);font-size:8px;text-transform:uppercase}.player-course-preview strong{display:block;font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-course-preview.missing strong{color:var(--danger)}
.primary-btn,.secondary-btn{width:100%;border:0;border-radius:13px;min-height:49px;margin-top:14px;font-weight:800;cursor:pointer}.primary-btn{background:var(--green);color:white;box-shadow:0 7px 18px rgba(18,59,42,.18)}.secondary-btn{background:white;color:var(--green);border:1px solid #d9e0da}.primary-btn:disabled,.secondary-btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.primary-btn.compact{margin-top:0}.error-text{color:var(--danger);font-size:12px;text-align:center}.rules-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.rules-strip div{background:white;border-radius:13px;padding:11px 8px;text-align:center;border:1px solid #e4e8e4}.rules-strip strong{display:block;color:var(--green);font-size:12px}.rules-strip span{display:block;color:var(--muted);font-size:9px;margin-top:3px}
.score-topbar{background:white;border-radius:17px;padding:11px;display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;box-shadow:var(--shadow);position:sticky;top:8px;z-index:5}.back-btn{border:0;background:var(--soft);color:var(--green);border-radius:10px;min-height:36px;padding:0 10px;font-weight:700;cursor:pointer}.score-course strong{display:block;font-size:13px}.score-course span{display:block;color:var(--muted);font-size:10px;margin-top:2px}.score-hcp{width:45px;height:45px;border-radius:12px;background:var(--green);color:white;display:grid;place-items:center;line-height:1}.score-hcp span{font-size:8px;opacity:.7}.score-hcp strong{font-size:18px}.hole-nav-wrap{margin:13px 0 8px;background:white;border-radius:15px;padding:8px;border:1px solid #e1e6e2;box-shadow:0 4px 16px rgba(24,43,31,.05)}.hole-nav{display:grid;grid-template-columns:repeat(9,1fr);gap:4px}.hole-nav button{min-width:0;aspect-ratio:1;border:0;border-radius:9px;background:#edf1ee;color:#6d7771;font-weight:800;font-size:11px;cursor:pointer}.hole-nav button.active{background:var(--green);color:white}.hole-nav button.done:not(.active){background:#dbeccf;color:#295a34}.hole-progress{text-align:center;color:var(--muted);font-size:10px;font-weight:700;margin-top:10px}.hole-title{text-align:center;font-size:25px;font-weight:800;margin:4px 0 14px;color:var(--green)}.hole-title span{display:block;color:var(--muted);font-size:10px;font-weight:500;margin-top:4px}
.mobile-score-list{display:flex;flex-direction:column;gap:9px}.player-score-card{background:white;border:1px solid #dfe5df;border-radius:16px;padding:13px;box-shadow:0 4px 18px rgba(24,43,31,.04)}.player-score-card.wiped{background:#faf8f3}.player-score-main{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.player-score-info strong{display:block;font-size:15px}.score-meta{color:var(--muted);font-size:9.5px;line-height:1.4;margin-top:4px}.score-controls{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.stepper{display:grid;grid-template-columns:39px 48px 39px;gap:4px}.stepbtn,.mobilegross{height:42px;border:1px solid #d6ded7;background:white;border-radius:10px;text-align:center;font-weight:800}.stepbtn{font-size:20px;color:var(--green);cursor:pointer}.mobilegross{width:48px;font-size:17px;color:var(--ink)}.score-result-row{display:grid;grid-template-columns:auto auto 62px;gap:4px;align-items:center}.wipebtn,.mulligan-btn{height:30px;border-radius:8px;border:1px solid #d8dfd9;background:white;color:#6d7771;font-size:9px;font-weight:800;padding:0 8px;cursor:pointer}.wipebtn.on{background:#eee3d0;border-color:#d5b363;color:#795f21}.mulligan-btn.on{background:#d5b363;border-color:#d5b363;color:#203326}.points-badge{min-width:62px;height:30px;border-radius:8px;display:grid;place-items:center;font-size:10px;font-weight:800;background:#eaf0eb;color:var(--green)}.points-badge.high{background:#dceccf;color:#275a31}.points-badge.two{background:#e9f0ea}.points-badge.low{background:#f1eeee;color:#7b6565}.mobile-score-actions{margin-top:12px}.score-nav-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.score-nav-row .secondary-btn{margin-top:8px}.totals-panel{margin-top:14px}.group-totals{display:flex;flex-direction:column;gap:7px}.total-row{display:grid;grid-template-columns:1fr 70px;gap:7px;align-items:center;padding:9px 0;border-top:1px solid #edf0ed}.total-row:first-child{border-top:0}.total-row>div:first-child strong{display:block;font-size:12px}.total-row>div:first-child span{display:block;color:var(--muted);font-size:9px;margin-top:2px}.total-row>div:not(:first-child){text-align:center}.total-row>div:not(:first-child) span{display:block;color:var(--muted);font-size:8px;text-transform:uppercase}.total-row>div:not(:first-child) strong{font-size:17px}.points-total{background:var(--green);color:white;border-radius:9px;padding:5px}.points-total span{color:rgba(255,255,255,.7)!important}.test-note{font-size:10px;color:var(--muted);text-align:center;line-height:1.5;padding:0 18px}.finish-card{padding:28px 18px;text-align:center;margin-top:30px}.finish-icon{width:60px;height:60px;border-radius:50%;background:var(--soft);color:var(--green);display:grid;place-items:center;margin:0 auto 16px;font-size:26px;font-weight:800}.finish-card h2{margin:6px 0 18px}.finish-results{text-align:left}.finish-result-row{display:grid;grid-template-columns:1fr 70px;gap:8px;align-items:center;padding:12px 0;border-top:1px solid #e7ebe7}.finish-result-row:first-child{border-top:0}.finish-result-row>div:first-child strong{display:block;font-size:13px}.finish-result-row>div:first-child span{display:block;color:var(--muted);font-size:9px;margin-top:3px}.finish-result-row>div:not(:first-child){text-align:center}.finish-result-row>div:not(:first-child) strong{display:block;font-size:18px;color:var(--green)}.finish-result-row>div:not(:first-child) span{color:var(--muted);font-size:8px;text-transform:uppercase}
@media (max-width:520px){.hero{margin:8px 8px 0;padding:18px 14px;grid-template-columns:auto 1fr}.hero .status-pill{grid-column:2;justify-self:start}main{padding:8px}.panel{padding:15px}.player-score-main{grid-template-columns:1fr}.score-controls{align-items:stretch}.stepper{grid-template-columns:1fr 54px 1fr}.mobilegross{width:54px}.score-result-row{grid-template-columns:1fr 1fr 68px}.hole-nav button{font-size:10px}.player-course-preview{grid-template-columns:1fr 64px 86px}}


/* V6 weekly leaderboard */
.leaderboard-panel{margin-top:14px}.leaderboard-heading{align-items:flex-start}.leaderboard-dates{margin:5px 0 0;color:var(--green);font-size:12px;font-weight:700}.leaderboard-list{display:flex;flex-direction:column}.leaderboard-empty{padding:16px 12px;border:1px dashed #d8dfd9;border-radius:12px;color:var(--muted);font-size:11px;text-align:center;background:#fafcfb}.leaderboard-empty[hidden]{display:none}.leaderboard-row{display:grid;grid-template-columns:36px minmax(0,1fr) 58px;gap:10px;align-items:center;padding:12px 0;border-top:1px solid #e7ebe7}.leaderboard-row:first-child{border-top:0}.leaderboard-pos{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--soft);color:var(--green);font-weight:800;font-size:12px}.leaderboard-player strong{display:block;font-size:13px}.leaderboard-player span{display:block;color:var(--muted);font-size:9px;margin-top:3px}.leaderboard-points{background:var(--green);color:white;border-radius:10px;text-align:center;padding:7px 5px}.leaderboard-points strong{display:block;font-size:18px;line-height:1}.leaderboard-points span{display:block;font-size:7px;letter-spacing:.08em;margin-top:3px;opacity:.75}@media(max-width:520px){.leaderboard-row{grid-template-columns:32px minmax(0,1fr) 54px}.leaderboard-dates{font-size:11px}}


/* V7 results tabs */
.home-tabs{display:flex;gap:7px;overflow-x:auto;padding:2px 0 8px;margin:12px 0 2px;scrollbar-width:none}.home-tabs::-webkit-scrollbar{display:none}.home-tab{flex:0 0 auto;border:1px solid #dce4de;background:white;color:#526159;border-radius:999px;min-height:39px;padding:0 14px;font-weight:800;font-size:10px;cursor:pointer;white-space:nowrap}.home-tab.active{background:var(--green);color:white;border-color:var(--green)}.home-tab-panel{display:none}.home-tab-panel.active{display:block}.home-tab-panel>.panel:first-child{margin-top:4px}.prize-results-list{display:flex;flex-direction:column}.prize-result-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(120px,.7fr);gap:12px;align-items:center;padding:13px 0;border-top:1px solid #e7ebe7}.prize-result-row:first-child{border-top:0}.prize-result-row strong{display:block;font-size:12px}.prize-result-row span{display:block;color:var(--muted);font-size:9px;margin-top:3px;text-transform:capitalize}.prize-winner{text-align:right}.prize-winner strong{color:var(--green)}
@media(max-width:520px){.home-tabs{margin-left:-1px;margin-right:-1px}.home-tab{padding:0 12px;min-height:37px}.prize-result-row{grid-template-columns:1fr}.prize-winner{text-align:left}}
.scoring-tabs{margin:10px 0 10px;padding-bottom:2px}.scorecardView .scoring-tabs{position:sticky;top:0;z-index:15;background:rgba(247,249,247,.96);backdrop-filter:blur(8px);padding-top:4px}.leaderboard-points.position-only{background:#f0f4f1;color:var(--green)}

/* V9 player registration */
.account-strip{display:flex;justify-content:space-between;align-items:center;gap:14px;background:white;border:1px solid #e1e7e2;border-radius:15px;padding:13px 15px;margin-top:12px;box-shadow:0 4px 15px rgba(24,43,31,.04)}
.account-strip strong{display:block;font-size:13px}.account-strip span{display:block;color:var(--muted);font-size:9px;margin-top:3px}.account-actions{display:flex;gap:6px;align-items:center}.compact-account{width:auto;min-height:36px;margin:0;padding:0 12px;border-radius:10px;white-space:nowrap}
.auth-panel{max-width:620px;margin:18px auto}.auth-switch{display:flex;gap:7px;margin:8px 0 14px}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-form label>span,.form-grid label>span{display:block;font-size:9px;font-weight:800;text-transform:uppercase;color:var(--muted);margin:0 0 5px 2px;letter-spacing:.03em}.auth-form input,.auth-form select,.form-grid input,.form-grid select{width:100%;min-height:45px;border:1px solid #d8dfd9;border-radius:11px;background:white;padding:0 12px;font:inherit;color:var(--ink)}.form-grid{display:grid;gap:10px}.form-grid.two{grid-template-columns:1fr 1fr}.ga-box{border:1px solid #e0e6e1;border-radius:12px;padding:11px;background:#fbfcfb}.check-row{display:flex!important;align-items:center;gap:9px}.check-row input{width:18px!important;min-height:18px!important}.check-row span{margin:0!important;text-transform:none!important;font-size:11px!important;color:var(--ink)!important}.ga-box .form-grid{margin-top:10px}.auth-message{padding:11px;border-radius:10px;font-size:11px;margin:12px 0 0}.auth-message.info{background:#edf3ef;color:var(--green)}.auth-message.success{background:#e3f0dc;color:#295a34}.auth-message.error{background:#f7e7e7;color:#8a3030}
@media(max-width:520px){.account-strip{align-items:flex-start;flex-direction:column}.account-actions{width:100%}.compact-account{flex:1}.form-grid.two{grid-template-columns:1fr}.auth-panel{margin-top:8px}}


/* V10 passwordless auth + admin */
.auth-help{max-width:none!important;text-align:left!important;line-height:1.5;margin:0}
.code-intro{border:1px solid #dfe6e0;background:#f5f8f6;border-radius:12px;padding:12px}
.code-intro strong,.code-intro span{display:block}.code-intro span{font-size:10px;color:var(--muted);margin-top:3px}
.text-btn{border:0;background:transparent;color:var(--green);font-weight:800;min-height:36px;cursor:pointer}
#loginCode{font-size:24px;letter-spacing:.22em;text-align:center;font-weight:800}
.admin-panel{max-width:900px;margin:18px auto}
.admin-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:15px}
.admin-stat{border:1px solid #e0e6e1;border-radius:13px;padding:13px;background:#fbfcfb}
.admin-stat span{display:block;color:var(--muted);font-size:9px;text-transform:uppercase;font-weight:800}.admin-stat strong{display:block;font-size:24px;margin-top:4px;color:var(--green)}
.admin-section{border-top:1px solid #e7ebe8;padding-top:17px;margin-top:17px}
.admin-section-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}.admin-section-head h3{margin:3px 0 0;font-size:17px}
.admin-small-btn{width:auto;min-height:36px;margin:0;padding:0 11px}.admin-small-btn.finalised{background:#e8f1e9}.danger-outline{border-color:#b65d5d!important;color:#8b3333!important}
.admin-search{width:100%;min-height:43px;border:1px solid #d8dfd9;border-radius:11px;padding:0 12px;font:inherit;margin:4px 0 10px}
.admin-player-list,.admin-week-list{display:flex;flex-direction:column}
.admin-player-row{display:grid;grid-template-columns:minmax(170px,1.35fr) minmax(190px,1.4fr) minmax(120px,.75fr) 70px;gap:10px;align-items:center;padding:12px 0;border-top:1px solid #e8ece9}
.admin-player-row:first-child,.admin-week-row:first-child{border-top:0}.admin-player-row strong,.admin-week-row strong{display:block;font-size:11px}.admin-player-row span,.admin-week-row span{display:block;color:var(--muted);font-size:9px;margin-top:3px;overflow-wrap:anywhere}
.admin-player-hcp{text-align:right}.admin-player-status{text-align:center;font-size:9px;font-weight:800;border-radius:999px;padding:6px 7px}.admin-player-status.active{background:#e4f0e5;color:#2e6338}.admin-player-status.inactive{background:#f3e5e5;color:#843c3c}
.admin-week-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px 0;border-top:1px solid #e8ece9}
.admin-note{font-size:10px;color:var(--muted);line-height:1.5;margin:0 0 8px}
@media(max-width:650px){
  .admin-stat-grid{grid-template-columns:1fr 1fr}
  .admin-player-row{grid-template-columns:1fr auto}
  .admin-player-contact{grid-column:1/-1}.admin-player-hcp{text-align:left}.admin-player-status{grid-row:1;grid-column:2}
  .admin-week-row{align-items:flex-start;flex-direction:column}.admin-week-row .admin-small-btn{width:100%}
}

/* V12 email-link auth */
#emailSentPanel .code-intro { margin-bottom: 0; }

/* V14 chart-based handicap checker */
.handicap-panel h2 { font-size:22px; margin:6px 0 12px; }
.handicap-note { font-size:12px; color:var(--muted); line-height:1.6; }
#handicapControls { margin:20px 0; }
#handicapControls label { display:block; font-size:13px; font-weight:700; margin-bottom:8px; }
#handicapInput { width:100%; max-width:240px; padding:12px 14px; border:1px solid var(--line); border-radius:12px; font-size:22px; font-weight:800; color:var(--green); }
#handicapInput:focus { outline:2px solid var(--green-2); outline-offset:2px; }
#handicapInput[aria-invalid="true"] { border-color:var(--danger); }
.handicap-table { width:100%; border-collapse:collapse; font-size:12px; }
.handicap-table caption { text-align:left; font-size:13px; font-weight:700; padding:0 0 14px; }
.handicap-table th,.handicap-table td { padding:13px 6px; text-align:center; border-bottom:1px solid var(--line); }
.handicap-table th:first-child { text-align:left; white-space:nowrap; }
.handicap-table thead th { font-size:10px; color:var(--muted); }
.handicap-table thead span { display:block; font-size:9px; margin-top:3px; }
.handicap-table .daily-result { font-size:22px; font-weight:800; color:var(--green); background:#f1f5e7; }
.tee-dot { display:inline-block; height:9px; width:9px; border-radius:50%; margin-right:6px; border:1px solid #a0aaa2; }
.tee-red { background:#b54840; border-color:#b54840; }.tee-white { background:white; }.tee-green { background:#34704f; border-color:#34704f; }
@media(max-width:380px) { .handicap-table { font-size:10px; }.handicap-table th,.handicap-table td { padding:12px 3px; }.handicap-table thead th { font-size:9px; } }

#handicapGender {display:block;width:100%;max-width:240px;padding:12px;border:1px solid var(--line);border-radius:12px;background:white;margin-bottom:18px;}

.test-banner{background:#fff7dd;border:1px solid #e6d393;border-radius:14px;padding:14px;margin:12px 0;font-size:12px;line-height:1.5}.test-banner p{margin:6px 0}.test-banner .secondary-btn{margin-top:8px}.test-table{width:100%;border-collapse:collapse;font-size:12px}.test-table th,.test-table td{padding:12px 7px;border-bottom:1px solid var(--line);text-align:left}.test-report-row{border-top:1px solid var(--line);padding:14px 0;font-size:13px}.test-report-row p{margin:7px 0}.test-preview-label{font-size:11px;color:var(--muted)}#testRefreshBtn{width:auto;font-size:11px;padding:9px}#testTab h2{font-size:20px}#testTab .panel-heading{margin-top:24px}.player-name{min-width:0}

.admin-entry-panel{border:1px solid var(--line);border-radius:14px;padding:16px;margin:18px 0;background:#fbfcfb}.admin-entry-panel summary{font-weight:800;font-size:16px;cursor:pointer}.admin-player-actions{grid-column:1/-1;display:flex;gap:8px}.admin-player-actions .secondary-btn{width:auto;margin:0;padding:8px 12px;font-size:11px}.admin-field-label{font-size:11px;display:block;color:var(--muted);font-weight:700}.admin-daily{display:block;font-size:26px;color:var(--green);padding:10px 0}.check-label{display:flex!important;align-items:center;gap:10px}.check-label input{width:auto!important}.admin-entry-panel select{max-width:100%;min-width:0}.admin-entry-panel .form-grid>*{min-width:0}

/* V17 divisions and prize testing */
.division-results{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.division-results:first-child{margin-top:8px}.division-results h3{font-size:14px;margin:0 0 8px;color:var(--green)}
.prize-publication{border:1px solid var(--line);border-radius:16px;padding:14px;margin:0 0 16px;background:#fff}.prize-publication.sample{border-style:dashed;background:#fffaf0}
.prize-publication-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.prize-publication-head h3{margin:3px 0 0;font-size:17px}.prize-status{font-size:9px;font-weight:800;letter-spacing:.08em;border-radius:999px;padding:7px 9px;background:var(--soft);color:var(--green);white-space:nowrap}
.prize-pool-strip{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;background:#f5f7f5;border-radius:10px;padding:9px 10px;margin:8px 0}.prize-pool-strip span{font-size:10px;color:var(--muted)}.prize-pool-strip strong{font-size:12px;color:var(--green)}
#adminPrizePreviewBox{margin-top:10px}

.test-export-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.test-export-actions button{margin:0}@media(max-width:520px){.test-export-actions{display:grid;grid-template-columns:1fr}.test-export-actions button{width:100%}}

.test-placegetters{margin:8px 0 10px;padding:9px 11px;border:1px solid #d7e2ea;border-radius:9px;background:#f7fafc;font-size:.92rem}
.cb-badge,.tie-badge{display:inline-block;margin-left:4px;padding:1px 5px;border-radius:999px;font-size:.72em;font-weight:800;letter-spacing:.03em;vertical-align:1px}
.cb-badge{background:#173d2a;color:#fff}
.tie-badge{background:#fff3cd;color:#6d5200;border:1px solid #e7c96a}
/* V21 reserved Twilight tee-time booking */
.booking-size-row{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.booking-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}.booking-slot{min-height:62px;border:1px solid var(--line,#d8ddd9);border-radius:12px;background:#fff;padding:10px;text-align:left;font:inherit}.booking-slot strong,.booking-slot span{display:block}.booking-slot span{font-size:.82rem;opacity:.72;margin-top:3px}.booking-slot:disabled{opacity:.48}.my-booking{margin-top:14px;padding:14px;border:1px solid var(--line,#d8ddd9);border-radius:12px}.my-booking button{margin-top:10px}@media(min-width:620px){.booking-slots{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* V23: roster remains readable when the booking action is disabled. */
.booking-time-card{border:1px solid #d9e2dd;border-radius:16px;overflow:hidden;padding-bottom:12px;min-width:0}
.booking-time-card .booking-slot{width:100%;border:0;border-radius:0;text-align:left}
.booking-names{list-style:none;margin:10px 14px;padding:0;color:#173e30;overflow-wrap:anywhere}
.booking-names li{padding:6px 0;border-bottom:1px solid #eef2ef}
.booking-names span{color:#51665c}
.booking-time-card>p{padding:0 14px}
#bookingForWrap{margin:12px 0}#bookingFor{width:100%;padding:12px}
.admin-timesheet-row{display:grid;grid-template-columns:80px 1fr 45px;gap:10px;align-items:start;border-bottom:1px solid #e2e8e4;padding:12px 0}
.admin-timesheet-row .booking-names{margin:0}

.directory-controls{display:flex;gap:16px;flex-wrap:wrap;margin:18px 0}.directory-controls[hidden]{display:none}.directory-controls label{flex:1;min-width:180px}.registered-player-card{display:flex;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid #ddd}.registered-player-card p{font-size:14px;color:#52645c;margin:6px 0}.registered-player-card>div:last-child{text-align:right}.registered-player-card span{display:block;font-size:12px}.registered-player-card>div:last-child strong{display:block;font-size:22px}

.player-name-search { flex: 1; min-width: 0; }
.player-name-search .player-name { width: 100%; box-sizing: border-box; }
.player-matches { margin-top: 6px; border: 1px solid #b8cec3; border-radius: 10px; background: white; max-height: 260px; overflow-y: auto; padding: 6px; font-size: 14px; }
.player-matches[hidden] { display: none; }
.player-match { display: block; width: 100%; text-align: left; padding: 12px 10px; background: white; color: #143e2e; border: 0; border-bottom: 1px solid #e4ebe7; border-radius: 4px; }
.player-match span { display: block; font-size: 12px; margin-top: 4px; }
.player-match:hover, .player-match:focus-visible { background: #eaf4ed; outline: 2px solid #3a7156; }
.player-match:disabled { opacity: .55; cursor: default; }
.player-matches p { margin: 8px; }

/* Keep every menu item visible, with readable labels and generous touch targets. */
.home-tabs {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  overflow: visible;
  margin: 14px 0 12px;
  padding: 0;
}
.home-tab {
  min-width: 0;
  min-height: 50px;
  padding: 10px 8px;
  border: 1px solid #bdcdc3;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.25;
  white-space: normal;
  color: #234a38;
  box-shadow: 0 2px 3px rgba(20, 62, 46, .04);
}
.home-tab:hover { background: #e5eee8; }
.home-tab.active, .home-tab.active:hover { background: var(--green); color: white; border-color: var(--green); }
.home-tab:focus-visible { outline: 3px solid #a46b1d; outline-offset: 2px; }
.home-tab.admin-score-shortcut { background: #fff2d7; color: #513b10; border: 2px solid #b78d3d; }
.home-tab[hidden] { display: none; }
@media (max-width: 640px) {
  .home-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 400px) {
  .home-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.admin-hole-row { display:grid; grid-template-columns:minmax(90px,1fr) 80px auto auto 52px; align-items:center; gap:12px; padding:14px 0; border-bottom:1px solid #dce4de; }
.admin-hole-row>div>span {display:block;font-size:12px;color:#526159;margin-top:4px;}
.admin-hole-row label {font-size:12px;}
.admin-hole-row input[type=number] {width:100%;min-height:44px;box-sizing:border-box;}
.admin-hole-total {padding:16px;background:#edf5ef;border-radius:12px;font-weight:700;line-height:1.6;}
@media(max-width:540px){.admin-hole-row{grid-template-columns:minmax(85px,1fr) 75px 55px;gap:10px}.admin-hole-row>.check-row{grid-row:2}.admin-hole-row>strong{grid-column:3;grid-row:1}.admin-hole-row>.check-row:nth-of-type(3){grid-column:2 / 4}}

.shop-login-box { margin-top: 1rem; padding: 1rem; border: 1px solid var(--border, #ccc); border-radius: 10px; }
.shop-login-box[hidden] { display: none !important; }

/* V32 weekly results at top of Admin */
#weeklyResultsAdmin{border:2px solid #bdd1c4;background:#f6faf7;border-radius:14px;padding:15px;margin-bottom:16px}
#weeklyResultsAdmin>label{display:block;font-weight:700;margin:10px 0}
#resultsWeekSelect{display:block;width:100%;padding:10px;margin-top:6px}
.weekly-report-division{margin:12px 0;border-top:1px solid #d5e2d8;padding-top:8px}
.weekly-report-row{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid #e2e8e3;font-size:12px}
.weekly-report-row span{white-space:nowrap}

/* V7: compact, accessible admin navigation */
.admin-tab-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0 18px;position:sticky;top:0;z-index:8;background:var(--bg,#f6f7f4);padding:8px 0;border-bottom:1px solid #d7dfd8}
.admin-tab{font:inherit;font-weight:700;border:1px solid #b9cac0;background:white;color:#174b37;border-radius:10px;padding:12px 6px;min-height:44px;cursor:pointer}
.admin-tab.active,.admin-tab[aria-selected="true"]{background:#164a37;color:#fff;border-color:#164a37}
.admin-tab:focus-visible{outline:3px solid #ce9e49;outline-offset:2px}
.admin-tab-panel[hidden]{display:none!important}
@media(min-width:650px){.admin-tab-nav{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* V8: on narrow mobile screens, keep long booking dates inside the layout. */
#bookingControls, #bookingControls > * { min-width:0; max-width:100%; }
#bookingDate, #bookingFor { display:block; box-sizing:border-box; width:100%; max-width:100%; min-width:0; min-height:46px; padding:8px 34px 8px 12px; overflow:hidden; text-overflow:ellipsis; font-size:16px; }
@media(max-width:480px){#bookingControls { width:100%; } #bookingDate { appearance:auto; }}

/* V14 admin-only correction UI in Registered Players. No changes to existing panels. */
.directory-edit-button{margin-top:10px;padding:8px 12px;font-size:13px;max-width:230px}
.directory-edit-dialog{box-sizing:border-box;width:min(94vw,520px);max-height:90dvh;overflow:auto;border:1px solid #d3ded7;border-radius:16px;padding:24px;color:#173d2c;background:white;box-shadow:0 15px 45px #0004}
.directory-edit-dialog::backdrop{background:#0b1e1680}
.directory-edit-dialog form{display:flex;flex-direction:column;gap:9px}
.directory-edit-dialog h2{margin:0 0 6px}
.directory-edit-dialog label{font-weight:700;font-size:14px}
.directory-edit-dialog input{box-sizing:border-box;width:100%;font-size:16px;padding:11px 12px;border:1px solid #b7c9bd;border-radius:8px}
.directory-edit-dialog .handicap-note{margin:0 0 8px}
.directory-edit-original{background:#eef3f0;padding:12px;border-radius:8px;margin:0 0 6px;font-weight:600}
.directory-edit-actions{display:flex;gap:12px;justify-content:flex-end;flex-wrap:wrap;margin-top:10px}
.directory-edit-actions button{flex:1;min-width:155px}
@media(max-width:530px){.directory-edit-dialog{padding:16px}.registered-player-card{gap:8px}}

/* V15: separate, read-only admin live-scoreboard. Public leaderboard styling unchanged. */
.admin-live-section{margin-top:0;padding-top:0;border:0}
.admin-live-controls{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:14px 0 10px}
.admin-live-controls label{flex:1 1 210px;font-size:12px;font-weight:700}
.admin-live-controls label span{display:block;margin-bottom:5px}
.admin-live-controls select{min-height:41px;width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:white}
.admin-live-controls button{width:auto;min-height:41px;margin:0}
.admin-live-division{margin-top:16px}
.admin-live-division h4{font-size:13px;text-transform:uppercase;letter-spacing:.03em;color:var(--green);margin:0 0 10px}
.admin-live-row{display:grid;grid-template-columns:36px minmax(0,1fr) 66px;align-items:center;gap:10px;border-top:1px solid #e8eee9;padding:11px 4px}
.admin-live-place{background:#eff5ef;color:var(--green);border-radius:999px;text-align:center;font-weight:800;padding:7px 2px;font-size:12px}
.admin-live-player strong{display:block;font-size:13px;overflow-wrap:anywhere}
.admin-live-player small{display:block;color:var(--muted);font-size:10px;margin-top:3px}
.admin-live-points{display:block;border-radius:10px;background:var(--green);color:white;text-align:center;padding:7px 4px}
.admin-live-points strong{display:block;font-size:19px;line-height:1.1}
.admin-live-points small{display:block;font-size:9px;margin-top:2px}
@media(max-width:480px){.admin-live-controls button{width:100%}.admin-live-row{grid-template-columns:30px minmax(0,1fr) 54px;gap:7px}}

/* V16: prominent no-email registration and read-only round/activity lists */
.admin-shortcut-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px;border:1px solid #d7e5da;background:#f0f7f1;border-radius:13px;margin:12px 0 4px}
.admin-shortcut-bar button{width:auto;margin:0;min-width:220px}.admin-shortcut-bar span{font-size:12px;line-height:1.4;color:#34483e;flex:1}
.admin-tab-highlight{border:2px solid #ad8440;color:#654b16;background:#fff9e9}
.admin-tab-highlight.active{background:#164a37;color:white;border-color:#164a37}
.admin-no-email-panel{margin-top:0;padding-top:10px}.admin-no-email-panel h3{margin:6px 0 8px;font-size:20px}
.admin-progress-heading{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--green);margin:15px 0 8px}
.admin-progress-row{display:flex;gap:12px;align-items:center;justify-content:space-between;border-top:1px solid #e7ece9;padding:12px 2px}
.admin-progress-row strong{display:block;font-size:13px}.admin-progress-row small{display:block;color:var(--muted);font-size:10px;margin-top:5px;overflow-wrap:anywhere}
.admin-progress-pill{display:block;font-size:10px;white-space:nowrap;padding:6px 9px;border-radius:8px;background:#ecf4ed;color:var(--green);font-weight:700}
.admin-progress-older{margin-top:15px;padding:10px;border:1px solid var(--line);border-radius:10px}
@media(max-width:550px){.admin-shortcut-bar button{width:100%}.admin-progress-row{align-items:start;flex-direction:column}}

/* Group review: narrow tables remain readable on phones. */
.review-player{margin:18px 0;padding:16px 12px;border:1px solid var(--line);border-radius:14px;background:#fff}
.review-player h3{margin:0;font-size:17px;overflow-wrap:anywhere}
.review-player-meta{margin:5px 0 12px;font-size:11px;color:var(--muted);line-height:1.5}
.review-score-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:14px}
.review-score-table th,.review-score-table td{padding:9px 4px;text-align:center;border-bottom:1px solid #e7ebe7}
.review-score-table thead{background:var(--soft);color:var(--green);font-size:12px}
.review-score-table tbody th{font-weight:600}
.review-score-table tfoot{background:var(--soft);font-weight:800;color:var(--green)}
.review-score-table tfoot th,.review-score-table tfoot td{border-bottom:0}
.review-wipe{color:#795f21;font-size:12px;font-weight:700}
.review-mulligan{font-size:10px;color:#795f21}
.review-score-note{margin:10px 0 0;font-size:11px;line-height:1.5;color:var(--muted)}
.review-score-table .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Find a Game: scoped to its own panel. */
.noticeboard details{margin:20px 0;padding:16px;background:#f2f6f3;border-radius:12px}.noticeboard summary{cursor:pointer;font-weight:700}.noticeboard form{display:grid;gap:12px;margin-top:14px}.noticeboard label{display:grid;gap:6px}.noticeboard input,.noticeboard textarea{width:100%;box-sizing:border-box;padding:12px;border:1px solid #bac9c0;border-radius:8px;font:inherit}.noticeboard button{cursor:pointer}.noticeboard button:disabled{opacity:.5;cursor:default}.nb-thread{border:1px solid #d5e0d9;border-radius:14px;padding:18px;margin:18px 0;overflow-wrap:anywhere}.nb-thread h3{margin:0 0 8px}.nb-author{color:#52675b}.nb-body{white-space:pre-wrap}.nb-replies>div{border-left:3px solid #ccdcd0;padding:10px 14px;margin:12px 0;background:#f6f8f6}.nb-actions{display:flex;gap:12px;flex-wrap:wrap}.nb-actions button,.nb-replies button{background:white;border:1px solid #b5c8bd;border-radius:6px;padding:8px 12px;color:#234c37}.nb-reply button{justify-self:start}#nbStatus{min-height:24px}

.rules-table{width:100%;border-collapse:collapse;margin:18px 0}.rules-table th,.rules-table td{padding:12px;text-align:left;border-bottom:1px solid #d5e0d9}.rules-table th{background:#edf4ef}#editPlayerSearch,#editPlayerSelect{width:100%;padding:12px;margin:8px 0}

/* Weekly handicap changes: compact, full-width table with phone-sized cards. */
.hc-week-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:11px 14px;margin:16px 0}
.hc-week-controls label{display:flex;flex-direction:column;gap:5px;min-width:0;max-width:100%}
.hc-week-controls label.check-row{min-width:0;flex-direction:row;align-items:center;gap:8px;padding-bottom:9px}
.hc-week-controls select{width:100%;min-width:0;min-height:40px;max-width:100%}
.hc-week-controls button{width:auto;min-width:136px;min-height:40px;padding:0 12px;margin:0}
.hc-week-summary{font-size:13px;font-weight:700;margin:12px 0}
#handicapChangesTab .hc-week-table-wrap{width:100%;max-width:100%;min-width:0;overflow:visible}
#handicapChangesTab .hc-week-table{width:100%;max-width:100%;min-width:0;table-layout:fixed;margin:12px 0;border-collapse:collapse}
#handicapChangesTab .hc-week-table th,#handicapChangesTab .hc-week-table td{box-sizing:border-box;padding:10px 8px;text-align:left;vertical-align:middle;font-size:12px;line-height:1.35;overflow-wrap:break-word}
#handicapChangesTab .hc-week-table thead th{font-size:11px;line-height:1.35;color:#244a37}
#handicapChangesTab .hc-week-table th[scope="row"]{white-space:normal;font-weight:400}
#handicapChangesTab .hc-week-table tbody tr:nth-child(even){background:#f7faf8}
#handicapChangesTab .hc-week-table tbody tr:nth-child(odd){background:#fff}
#handicapChangesTab .hc-week-table td:nth-child(n+3),#handicapChangesTab .hc-week-table thead th:nth-child(n+3){text-align:right}
.hc-week-table .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.hc-player-name{display:block;color:#1e382b;font-weight:750;font-size:13px;line-height:1.4}
.hc-player-sub{display:block;color:#526159;font-size:10.5px;font-weight:400;line-height:1.4;margin-top:3px}
.hc-mobile-only{display:none}
.hc-week-table .hc-value strong{font-size:13px}
.hc-week-table .hc-new-value strong{color:#1f5238}
.hc-change{white-space:nowrap}
.hc-down{color:#1e6c43}.hc-up{color:#8d5100}.hc-same{color:#4b6057}
.hc-rule-detail{border-top:1px solid #dce4de;margin-top:18px;padding-top:12px}
.hc-rule-detail summary{cursor:pointer;margin-bottom:10px}
#handicapChangesTab .hc-rule-table{width:100%;min-width:0;table-layout:fixed;font-size:12px}
#handicapChangesTab .hc-rule-table th,#handicapChangesTab .hc-rule-table td{padding:9px 8px;overflow-wrap:anywhere}
@media(max-width:720px){
  .hc-week-controls{grid-template-columns:minmax(0,1fr)}
  .hc-week-controls button{width:100%}
  .hc-week-controls label.check-row{padding:0}
  #handicapChangesTab .hc-week-table{display:block;margin-top:12px}
  #handicapChangesTab .hc-week-table colgroup,#handicapChangesTab .hc-week-table thead{display:none}
  #handicapChangesTab .hc-week-table tbody{display:grid;gap:10px}
  #handicapChangesTab .hc-week-table tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid #dce6de;border-radius:12px;padding:11px 12px;gap:7px;background:#fff;box-shadow:0 1px 5px #1f402c0b}
  #handicapChangesTab .hc-week-table tbody tr:nth-child(even){background:#fbfcfb}
  #handicapChangesTab .hc-week-table th[scope="row"]{grid-column:1/-1;padding:0 0 9px;border-bottom:1px solid #e3ebe5}
  #handicapChangesTab .hc-week-table .hc-week-meta-cell{display:none}
  #handicapChangesTab .hc-week-table td.hc-value{display:flex;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:4px 2px;border:0;text-align:center;font-size:14px}
  #handicapChangesTab .hc-week-table td.hc-value::before{content:attr(data-label);font-weight:700;color:#587062;text-transform:uppercase;letter-spacing:.04em;font-size:9px}
  #handicapChangesTab .hc-week-table .hc-value strong{font-size:15px}
  .hc-player-name{font-size:14px}
  .hc-player-sub{font-size:11px}
  .hc-mobile-only{display:inline}
}
@media(max-width:410px){
  #handicapChangesTab .hc-week-table tbody tr{padding:10px;gap:4px}
  #handicapChangesTab .hc-rule-table th,#handicapChangesTab .hc-rule-table td{padding:8px 5px;font-size:11px}
  #handicapChangesTab .hc-rule-table th{line-height:1.25}
}

/* Twilight 2026 Week 3: registration activation and ball balances */
.shop-player-options{max-height:300px;overflow:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:6px;padding:9px;background:var(--surface,#f5f7f8);border-radius:10px;margin:8px 0}
.shop-player-option{display:flex;align-items:center;gap:10px;padding:8px;background:white;border:1px solid #dbe1e5;border-radius:7px;font-size:.9rem}
.shop-activation-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #ddd}
.shop-activation-row span{display:block;color:#58656e;font-size:.85rem}.shop-revoked{color:#9c3737!important}
.twilight-activation-notice{border-left:4px solid #507789;padding:10px 12px;background:#f2f7fa;border-radius:8px;margin-top:10px;font-size:.91rem}
.twilight-activation-notice p{margin:5px 0 0}.twilight-activation-notice a{font-weight:bold}
.ball-own-balance{padding:15px;margin:14px 0;border:1px solid #d9e4e9;border-radius:10px}
.ball-history{margin-top:8px}.ball-history>div{font-size:.85rem;padding:4px 0;border-bottom:1px solid #eee}

.twilight-activation-notice[hidden]{display:none!important}
.twilight-activation-notice[data-status="ready"]{background:#e9f8ef;border-left-color:#238a55}
.twilight-activation-notice[data-status="blocked"]{background:#fff5ea;border-left-color:#b16920}
.twilight-activation-notice #refreshScoringActivation{margin-top:7px}

/* V54.2: Payment activation is the main day-to-day Golf Shop admin action. */
.admin-payment-shortcut{
  display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
  padding:18px 20px;margin:14px 0 10px;background:#e8f3eb;
  border:2px solid #91b8a1;border-left:6px solid #164a37;border-radius:15px;
}
.admin-payment-shortcut-copy{flex:1 1 320px;min-width:0}
.admin-payment-shortcut-label{display:block;color:#32674b;font-size:11px;font-weight:800;letter-spacing:.09em;margin-bottom:5px}
.admin-payment-shortcut h3{margin:0 0 6px;color:#113b2b;font-size:clamp(18px,2vw,23px);line-height:1.25}
.admin-payment-shortcut p{margin:0;color:#35483e;line-height:1.45;font-size:13px}
.admin-payment-shortcut .admin-payment-fee-guide{margin-top:7px;color:#113b2b;font-size:14px}
.admin-payments-quick-btn{width:auto!important;flex:0 1 290px;min-width:220px;min-height:59px;padding:13px 16px!important;margin:0!important;
  background:#164a37!important;color:white!important;box-shadow:0 3px 0 #103a28;font-size:15px!important;font-weight:800!important;line-height:1.3}
.admin-payments-quick-btn:focus-visible{outline:3px solid #ca9b3a;outline-offset:3px}
@media(max-width:650px){.admin-payment-shortcut{padding:15px;gap:12px}.admin-payments-quick-btn{flex-basis:100%;width:100%!important;min-width:0}}

/* V54.3 shop activation: unmistakable selection, paid confirmation and completion states. */
.shop-date-label{max-width:310px}
.shop-selection-help{background:#f3f7f3;padding:9px 12px;margin:2px 0!important;border:1px solid #c2d4c8;border-radius:9px;font-size:.92rem;color:#203b30}
.shop-player-options{max-height:385px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:9px;padding:10px}
.shop-player-option{cursor:pointer;min-height:77px;gap:14px;padding:12px 15px;border:1px solid #bfcfc7;align-items:center;transition:border-color .1s,background-color .1s}
.shop-player-option input[type=checkbox]{width:27px;min-width:27px;height:27px;accent-color:#155639;cursor:pointer;flex-shrink:0}
.shop-player-copy{display:flex;flex-direction:column;gap:5px;line-height:1.35;text-align:left;min-width:0}
.shop-player-copy strong{font-size:.94rem;color:#203b30;overflow-wrap:anywhere}
.shop-player-hint{font-size:.81rem;color:#4c6256;font-weight:700}
.shop-player-selected{background:#e8f5ee;border-color:#27764d;box-shadow:inset 0 0 0 1px #27764d}
.shop-player-selected .shop-player-hint{color:#145b38}
.shop-player-activated{background:#eef7f1;border-color:#b0cfba;cursor:default}
.shop-player-activated .shop-player-hint{color:#167345}
.shop-player-activated input[type=checkbox]{opacity:.55;cursor:default}
.shop-selection-summary{padding:13px;border-radius:9px;background:#e9f0eb;color:#173b2e;font-weight:800;font-size:1rem;line-height:1.45;margin:8px 0}
.shop-confirm-btn{font-weight:800!important;min-height:52px!important;margin:2px 0 10px!important}
.shop-confirm-btn:disabled{opacity:.55;cursor:not-allowed}
.shop-payment-message{min-height:22px;line-height:1.5;padding:9px 11px;margin:6px 0 16px;border-radius:9px;font-weight:700}
.shop-payment-message[data-status=success]{background:#e6f5eb;color:#0d5b37;border:1px solid #76b78d}
.shop-payment-message[data-status=error]{background:#fff1ee;color:#9b2d1d;border:1px solid #df998f}
.shop-payment-message[data-status=info]{background:#f2f5f3;color:#365749}
.shop-activated-tag{color:#137343!important;font-weight:800}
@media(max-width:550px){.shop-player-options{grid-template-columns:1fr}.shop-player-option{min-height:68px}.shop-player-copy strong{font-size:.91rem}}


/* V54.4: dedicated, single-purpose Golf Shop payment workspace.
   Admin navigation disappears completely when payment activation is open. */
body.shop-payment-mode .hero{display:none}
body.shop-payment-mode .app-shell{max-width:1000px;padding-bottom:10px}
body.shop-payment-mode main{padding:clamp(6px,1.8vw,18px)}
#adminView.payment-workspace-open .admin-panel{margin:0 auto;max-width:none;padding:clamp(12px,2vw,22px);box-shadow:none}
#adminView.payment-workspace-open .admin-panel>.panel-heading,
#adminView.payment-workspace-open .admin-payment-shortcut,
#adminView.payment-workspace-open #adminTabNav{display:none!important}
#adminView.payment-workspace-open #adminPanel-shop-payments{display:block}
.shop-workspace{margin:0}
.shop-workspace-header{display:flex;gap:12px;justify-content:space-between;align-items:center;border-bottom:1px solid #e4ebe5;padding-bottom:11px}
.shop-workspace-header h2{font-size:clamp(19px,2.5vw,27px);margin:3px 0 4px;color:#103c2b;line-height:1.2}
.shop-workspace-header p{margin:0;font-size:12px;color:#55685e;line-height:1.4}
.shop-workspace-header .shop-workspace-back{flex:none;white-space:nowrap;padding:9px 12px;min-height:41px;font-size:13px;border:1px solid #d4e1d7}
.shop-workspace-fees{display:flex;gap:9px;align-items:center;flex-wrap:wrap;padding:10px 0 11px;font-size:13px;color:#184b36;font-weight:800}
.shop-workspace-fees>span:not(.shop-workspace-tip){display:inline-flex;align-items:center;gap:8px;border:1px solid #cee0d0;background:#eaf5ec;padding:8px 13px;border-radius:9px}
.shop-workspace-fees strong{font-size:10px;letter-spacing:.06em}
.shop-workspace-fees .shop-workspace-tip{font-size:11px;color:#647269;font-weight:600;margin-left:auto}
.shop-workspace-fields{display:grid;grid-template-columns:minmax(175px,.7fr) minmax(0,1.3fr);gap:12px}
.shop-workspace-fields label{min-width:0}
.shop-workspace-fields label>span{display:block;font-size:11px;font-weight:800;margin:0 0 5px;color:#324b3a;letter-spacing:0;text-transform:none}
.shop-workspace-fields input{height:46px;min-height:46px;font-size:16px!important}
.shop-payment-action-bar{position:sticky;top:0;z-index:20;display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,1fr);align-items:center;gap:6px 16px;background:#f0f6f0;border:1px solid #bdd8c5;border-left:5px solid #13543a;box-shadow:0 5px 18px #103a2820;border-radius:12px;padding:11px 13px;margin:2px 0 0}
.shop-workspace-action-copy{min-width:0}
.shop-payment-action-bar .shop-selection-summary{margin:0;padding:0;background:transparent;border:0;line-height:1.32;font-size:clamp(15px,1.8vw,19px);color:#164530}
.shop-workspace-action-copy>small{display:block;color:#577164;margin-top:5px;line-height:1.35;font-size:11px}
.shop-payment-action-bar .shop-confirm-btn{margin:0!important;min-height:59px!important;padding:9px 14px;font-size:clamp(13px,1.6vw,17px);line-height:1.25;width:100%}
.shop-payment-action-bar .shop-payment-message{grid-column:1/-1;margin:3px 0 0;padding:9px 11px;font-size:13px}
.shop-workspace-picker-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px;margin:12px 2px 5px}
.shop-workspace-picker-head strong{font-size:15px;color:#123b2a}
.shop-workspace-picker-head span{font-size:12px;color:#53645a}
#adminPanel-shop-payments .shop-player-options{margin:0;max-height:min(50dvh,440px);min-height:200px;overflow:auto;overscroll-behavior:contain;border:1px solid #e1e8e2;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:8px;padding:10px;background:#f7faf7}
#adminPanel-shop-payments .shop-player-option{min-height:67px;padding:9px 12px}
#adminPanel-shop-payments .shop-player-copy strong{font-size:13px}
#adminPanel-shop-payments .shop-player-hint{font-size:11px}
.shop-activated-details{margin-top:11px;background:#fff;border:1px solid #dce6dd;border-radius:12px;overflow:hidden}
.shop-activated-details summary{padding:12px 14px;cursor:pointer;font-weight:800;color:#194936;font-size:14px}
.shop-activated-details summary span{display:inline-block;background:#e4f4e8;border-radius:99px;padding:4px 9px;margin-left:5px;color:#125237}
.shop-workspace-activation-list{padding:0 14px 10px}
.shop-workspace-activation-top{display:flex;gap:12px;align-items:center;justify-content:space-between}
.shop-workspace-activation-top p{margin:4px 0;color:#57665c;font-size:12px}
.shop-workspace-activation-top .secondary-btn{width:auto!important;margin:4px 0;padding:8px 15px;min-height:35px}
@media(max-width:650px){
 .shop-workspace-header{align-items:flex-start}
 .shop-workspace-header h2{font-size:20px}
 .shop-workspace-header p{font-size:11px}
 .shop-workspace-header .shop-workspace-back{font-size:12px;min-height:38px;padding:8px}
 .shop-workspace-fees{gap:6px;padding:8px 0}
 .shop-workspace-fees>span:not(.shop-workspace-tip){padding:7px 9px;font-size:12px}
 .shop-workspace-fees .shop-workspace-tip{display:none}
 .shop-workspace-fields{grid-template-columns:1fr 1fr;gap:7px}
 .shop-workspace-fields label>span{font-size:10px}
 .shop-payment-action-bar{grid-template-columns:1fr;gap:6px;padding:10px 12px}
 .shop-payment-action-bar .shop-confirm-btn{min-height:49px!important}
 .shop-workspace-action-copy>small{display:none}
 #adminPanel-shop-payments .shop-player-options{grid-template-columns:1fr;max-height:42dvh;min-height:185px}
 .shop-workspace-picker-head span{font-size:11px}
}
@media(max-width:420px){
 .shop-workspace-header{flex-direction:column-reverse;align-items:stretch}
 .shop-workspace-header .shop-workspace-back{align-self:flex-start}
 .shop-workspace-fields{grid-template-columns:1fr}
 #adminPanel-shop-payments .shop-player-options{max-height:40dvh}
}
/* Override the generic form-label span rule: names and selection hints use separate lines. */
#adminPanel-shop-payments .shop-player-option > .shop-player-copy{
  display:flex;flex:1;flex-direction:column;gap:4px;min-width:0;
}


/* V54.5: use the available browser height for the dedicated payment screen.
   Only the names list scrolls. All non-payment screens are unchanged. */
body.shop-payment-mode {
  height:100vh;
  height:100dvh;
  overflow:hidden;
}
body.shop-payment-mode .app-shell {
  height:100vh;
  height:100dvh;
  min-height:0;
  padding-bottom:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
body.shop-payment-mode main {
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  padding:clamp(5px,1.1vh,12px);
}
body.shop-payment-mode #adminView.view.active {
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
#adminView.payment-workspace-open .admin-panel {
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  padding:clamp(10px,1.4vh,16px);
}
#adminView.payment-workspace-open #adminContent {
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
#adminView.payment-workspace-open #adminPanel-shop-payments {
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
#adminView.payment-workspace-open .shop-workspace {
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
#adminView.payment-workspace-open #shopPaymentForm {
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  gap:clamp(5px,1vh,10px);
}
#adminView.payment-workspace-open #shopPaymentPlayers.shop-player-options {
  flex:1 1 auto;
  min-height:0;
  max-height:none;
  overflow-y:auto;
  scrollbar-gutter:stable;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
#adminView.payment-workspace-open .shop-workspace-header {
  flex:0 0 auto;
  padding-bottom:clamp(6px,1vh,11px);
}
#adminView.payment-workspace-open .shop-workspace-fees {
  flex:0 0 auto;
  padding:clamp(5px,.8vh,9px) 0;
}
#adminView.payment-workspace-open .shop-workspace-fields,
#adminView.payment-workspace-open .shop-payment-action-bar,
#adminView.payment-workspace-open .shop-workspace-picker-head {
  flex:0 0 auto;
  margin:0;
}
#adminView.payment-workspace-open .shop-payment-action-bar {position:relative;top:auto}
#adminView.payment-workspace-open .shop-activated-details {
  flex:0 0 auto;
  margin-top:clamp(4px,.8vh,8px);
  max-height:min(30dvh,240px);
  overflow:auto;
}
#adminView.payment-workspace-open .shop-activated-details summary {
  padding:clamp(7px,1vh,11px) 12px;
}
/* Compact smaller-height displays without reducing touch targets excessively. */
@media(max-height:760px) {
  #adminView.payment-workspace-open .shop-workspace-header h2 {font-size:clamp(18px,2vw,23px)}
  #adminView.payment-workspace-open .shop-workspace-header p {font-size:11px}
  #adminView.payment-workspace-open .shop-workspace-fees .shop-workspace-tip {display:none}
  #adminView.payment-workspace-open .shop-workspace-fields input {height:40px;min-height:40px}
  #adminView.payment-workspace-open .shop-payment-action-bar {padding:7px 10px}
  #adminView.payment-workspace-open .shop-payment-action-bar .shop-confirm-btn {min-height:45px!important}
  #adminView.payment-workspace-open .shop-workspace-action-copy>small {display:none}
  #adminView.payment-workspace-open .shop-player-option {min-height:58px;padding:7px 10px}
  #adminView.payment-workspace-open .shop-workspace-picker-head strong {font-size:13px}
}
@media(max-width:650px) {
  #adminView.payment-workspace-open .shop-workspace-header {flex-direction:row}
  #adminView.payment-workspace-open .shop-workspace-header .shop-workspace-back {align-self:center}
  #adminView.payment-workspace-open .shop-workspace-fees {gap:5px}
  #adminView.payment-workspace-open .shop-payment-action-bar .shop-selection-summary {font-size:14px}
}
@media(max-width:420px) {
  #adminView.payment-workspace-open .shop-workspace-header {flex-direction:row;align-items:center}
  #adminView.payment-workspace-open .shop-workspace-header h2 {font-size:18px}
  #adminView.payment-workspace-open .shop-workspace-header p {display:none}
  #adminView.payment-workspace-open .shop-workspace-header .shop-workspace-back {font-size:11px;white-space:normal;max-width:100px}
  #adminView.payment-workspace-open .shop-workspace-fields {grid-template-columns:1fr 1fr}
  #adminView.payment-workspace-open .shop-workspace-fields label>span {font-size:10px}
  #adminView.payment-workspace-open .shop-workspace-fields input {min-width:0;padding:0 6px;font-size:13px!important}
  #adminView.payment-workspace-open .shop-workspace-picker-head span {display:none}
}
/* On exceptionally short or landscape phones, permit scrolling within the
   payment workspace itself rather than clipping form controls. */
@media(max-height:490px) {
  #adminView.payment-workspace-open .shop-workspace {overflow-y:auto;overscroll-behavior:contain}
  #adminView.payment-workspace-open #shopPaymentForm {flex:0 0 auto;min-height:320px}
  #adminView.payment-workspace-open #shopPaymentPlayers.shop-player-options {min-height:130px;max-height:160px}
  #adminView.payment-workspace-open .shop-payment-action-bar {position:sticky;top:0;z-index:20}
}

/* Public prizes show recipients and awards only. */
.prize-winners-subhead{font-size:13px;font-weight:800;color:var(--green);margin:18px 0 6px;}

/* v54.8 — explicit exit from server-released scorecards */
.released-round-notice{margin:14px 0;padding:16px;border:1px solid #dfc18b;
  border-radius:13px;background:#fff9ee;color:#493b21;font-size:13px;line-height:1.55}
.released-round-notice strong{display:block;font-size:15px}
.released-round-notice p{margin:8px 0}
.released-round-notice .secondary-btn{margin:12px 0 0;max-width:360px}
#checkSavedRoundBtn{margin-top:9px}

/* v54.9 — Dedicated scoring setup, using the existing score form and guards. */
#scoreTab .score-workspace-heading{display:none}
#homeView.score-workspace-open>.season-card,
#homeView.score-workspace-open>.account-strip,
#homeView.score-workspace-open>#homeTabs,
#homeView.score-workspace-open>.rules-strip{display:none!important}
#homeView.score-workspace-open #scoreTab .score-workspace-heading{
 display:flex;align-items:center;justify-content:space-between;gap:16px;
 padding:18px 20px;margin-bottom:10px;background:#fff;border-radius:18px;border:1px solid #dbe6dd;
}
.score-workspace-heading h2{font-size:clamp(22px,3vw,30px);line-height:1.15;color:#123b2a;margin:7px 0 6px}
.score-workspace-heading p{color:#67786f;font-size:13px;margin:0}
.score-workspace-heading .back-btn{white-space:nowrap;flex:none}
body.score-entry-workspace .hero{display:none}
body.score-entry-workspace .app-shell{max-width:940px}
body.score-entry-workspace main{padding-top:10px}
body.score-entry-workspace #scoreTab>.panel{margin-top:0}
@media(max-width:530px){
 #homeView.score-workspace-open #scoreTab .score-workspace-heading{padding:14px;gap:8px;align-items:flex-start}
 .score-workspace-heading .back-btn{white-space:normal;font-size:12px;min-height:38px;padding:8px 10px}
 .score-workspace-heading h2{font-size:21px}
 .score-workspace-heading p{font-size:11px}
}
/* v54.9 — Ball statement: credits only, never internal fee allocations. */
.ball-statement-heading{align-items:center;flex-wrap:wrap}
.ball-statement-heading .secondary-btn{width:auto;margin:0}
.ball-statement-heading .handicap-note{margin:6px 0 0}
.ball-statement-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0;padding:15px;background:#edf4ee;border-radius:12px}
.ball-statement-summary>div{display:flex;flex-direction:column;gap:5px}
.ball-statement-summary span{font-size:10px;font-weight:800;color:#597162;letter-spacing:.04em}
.ball-statement-summary strong{font-size:17px;color:#174631;overflow-wrap:anywhere}
.ball-statement-summary .ball-statement-total{font-size:31px;line-height:1}
.ball-statement-history{margin-top:14px}
.ball-statement-table-wrap{width:100%;overflow:auto;border:1px solid #dde7e0;border-radius:12px}
.ball-statement-table{border-collapse:collapse;min-width:835px;width:100%;font-size:12px}
.ball-statement-table th{color:#123b2a;font-size:11px;text-align:left;background:#e8f0ea;position:sticky;top:0;padding:12px 10px;white-space:nowrap}
.ball-statement-table td{padding:11px 10px;border-top:1px solid #e4ebe5;line-height:1.4}
.ball-statement-table tbody tr:nth-child(even){background:#f7faf8}
.ball-statement-table .num{text-align:right;white-space:nowrap}
.ball-statement-table .strong{font-weight:800;color:#123b2a}
.ball-statement-cards{display:none}
.ball-statement-empty{background:#f6f9f7;border-radius:10px;padding:16px;color:#53685b;font-size:13px}
@media(max-width:740px){
 .ball-statement-table-wrap{display:none}
 .ball-statement-cards{display:grid;gap:10px}
 .ball-statement-card{border:1px solid #d8e5da;background:#fff;border-radius:12px;padding:13px}
 .ball-statement-card-top{display:flex;justify-content:space-between;gap:8px;font-size:13px}
 .ball-statement-card-top strong{color:#123b2a}
 .ball-statement-card-top span{color:#67776c;font-size:11px;white-space:nowrap}
 .ball-statement-card p{margin:10px 0 4px;color:#233d2e;font-weight:650;font-size:13px}
 .ball-statement-card small{display:block;color:#6b7b70;line-height:1.5}
 .ball-statement-card-amounts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;border-top:1px solid #e3ebe4;margin-top:11px;padding-top:10px;font-size:11px}
 .ball-statement-card-amounts span{display:flex;flex-direction:column;gap:4px;color:#607065}
 .ball-statement-card-amounts strong{font-size:17px;color:#113b29}
}

/* v55.0 – Quick staff redemption shortcut in admin dashboard */
.admin-balls-quick-btn{font-size:clamp(13px,1.4vw,17px);min-height:55px;padding:13px 18px;white-space:normal;background:#eff7f0}
@media(min-width:1100px){.admin-payment-shortcut{gap:12px}.admin-balls-quick-btn{flex:0 0 170px}}
/* v55.0 – Dedicated Ball Redemption screen, no admin navigation clutter. */
body.ball-redemption-mode .hero{display:none!important}
body.ball-redemption-mode .app-shell{max-width:1050px}
#adminView.ball-redemption-open .admin-panel>.panel-heading,
#adminView.ball-redemption-open .admin-payment-shortcut,
#adminView.ball-redemption-open #adminTabNav{display:none!important}
#adminView.ball-redemption-open .admin-panel{padding:clamp(14px,2vw,25px)}
#adminView.ball-redemption-open #adminPanel-ball-redeem{display:block}
.ball-redeem-workspace{display:flex;flex-direction:column;gap:17px}
.ball-redeem-header{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #dfe9df;padding:0 0 15px}
.ball-redeem-header h2{margin:7px 0;font-size:clamp(22px,2.4vw,31px);color:#123b2b}
.ball-redeem-header p{margin:0;color:#65796f;font-size:13px;line-height:1.5;max-width:620px}
.ball-redeem-header .back-btn{flex-shrink:0}
.ball-redeem-form{display:flex;flex-direction:column;gap:15px}
.ball-redeem-form label{display:flex;flex-direction:column;gap:8px;font-weight:800;color:#173d2b;font-size:13px}
.ball-redeem-form select,.ball-redeem-form input{border:1px solid #cbdcd0;border-radius:13px;min-height:48px;padding:9px 12px;width:100%;font-size:18px;color:#162c23;background:#fff}
.ball-redeem-form select:focus,.ball-redeem-form input:focus{outline:3px solid #b9d9c3;outline-offset:2px}
.ball-redeem-summary{display:flex;justify-content:space-between;gap:12px;align-items:center;background:#eaf2ec;padding:15px;border-radius:14px}
.ball-redeem-summary>div{display:flex;flex-direction:column;gap:5px;min-width:0}
.ball-redeem-summary span{color:#687c70;font-weight:800;letter-spacing:.04em;font-size:11px}
.ball-redeem-summary strong{color:#133c29;font-size:clamp(19px,2.5vw,30px);overflow-wrap:anywhere}
.ball-redeem-summary>div:last-child{text-align:right}
.ball-redeem-quantities{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.ball-redeem-form label span{display:flex;flex-direction:column;gap:3px}
.ball-redeem-form label small{font-size:12px;color:#617567;font-weight:500}
.ball-redeem-confirm-wrap{display:flex;align-items:center;gap:14px;justify-content:space-between;background:#f4f8f4;border-radius:14px;padding:12px 15px}
.ball-redeem-credit-summary{display:flex;flex-direction:column;gap:5px;font-size:13px;color:#657b6d}
.ball-redeem-credit-summary strong{font-size:23px;color:#123b2a}
.ball-redeem-confirm-wrap .primary-btn{flex:0 0 50%;margin:0;min-height:55px}
.ball-redeem-confirm-wrap .primary-btn:disabled{opacity:.55}
.ball-redeem-status{margin:0;padding:12px 15px;background:#f3f7f4;border-radius:12px;font-size:13px;color:#425e4e;line-height:1.5}
.ball-redeem-status[data-status="success"]{background:#e5f4e9;color:#145c30;font-weight:700}
.ball-redeem-status[data-status="error"]{background:#fff0e9;color:#9a3a17;font-weight:700}
.ball-redeem-audit{border:1px solid #dbe8de;border-radius:15px;overflow:hidden}
.ball-redeem-audit-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;background:#f2f7f3}
.ball-redeem-audit-head h3{margin:0 0 5px;color:#153b2a}
.ball-redeem-audit-head p{margin:0;font-size:12px;color:#65776a}
.ball-redeem-audit-actions{display:flex;gap:8px;flex-wrap:wrap}
.ball-redeem-audit-actions button{width:auto;margin:0;font-size:12px;padding:9px 12px;min-height:40px}
.ball-redeem-audit-body{padding:13px 14px;font-size:13px;max-height:360px;overflow:auto}
.ball-audit-table{border-collapse:collapse;width:100%;min-width:650px;font-size:12px}
.ball-audit-wrap{max-width:100%;overflow:auto}
.ball-audit-table th{color:#153b2a;background:#e6f0e8;padding:9px 8px;text-align:left}
.ball-audit-table td{border-bottom:1px solid #e2ebe4;padding:11px 8px;vertical-align:top}
.ball-audit-table .num{text-align:right;font-variant-numeric:tabular-nums}
.ball-audit-table .last{font-weight:800}
.ball-audit-table .audit-initials{font-weight:800;color:#184f34}
@media(max-width:700px){
 .ball-redeem-header{align-items:flex-start}.ball-redeem-header .back-btn{font-size:12px;padding:10px;max-width:105px;white-space:normal}
 .ball-redeem-header p{font-size:11px}
 .ball-redeem-quantities{grid-template-columns:1fr 1fr}
 .ball-redeem-quantities label:last-child{grid-column:1/-1}
 .ball-redeem-confirm-wrap{align-items:stretch;flex-direction:column}
 .ball-redeem-confirm-wrap .primary-btn{flex:auto;width:100%}
 .ball-redeem-audit-head{flex-direction:column;align-items:stretch}
 .ball-redeem-audit-actions button{flex:1}
}
@media(max-width:390px){
 .ball-redeem-header h2{font-size:21px}
 .ball-redeem-summary strong{font-size:19px}
 .ball-redeem-quantities{gap:8px}
}


/* V55.1: compulsory nine/tee check before opening a group scorecard. */
.round-confirm-dialog {
  box-sizing: border-box;
  width: min(92vw, 460px);
  max-height: min(88vh, 760px);
  overflow-y: auto;
  margin: auto;
  padding: 24px;
  border: 1px solid #d8e2da;
  border-radius: 22px;
  background: #fff;
  color: #102c21;
  box-shadow: 0 20px 80px rgba(10, 29, 19, .28);
}
.round-confirm-dialog::backdrop { background: rgba(7, 27, 18, .68); }
.round-confirm-eyebrow { color: #63766b; font-size: 12px; font-weight: 800; letter-spacing: .11em; }
.round-confirm-dialog h2 { font-size: clamp(23px, 5vw, 29px); line-height: 1.15; margin: 12px 0 10px; }
.round-confirm-dialog p { line-height: 1.45; color: #526159; font-size: 15px; margin: 0 0 16px; }
.round-confirm-nine { background: #e7f0ea; border: 2px solid #165039; border-radius: 16px; text-align: center; padding: 16px 12px; margin: 16px 0 18px; }
.round-confirm-nine > span { display: block; color: #456958; font-size: 11px; font-weight: 800; letter-spacing: .1em; }
.round-confirm-nine > strong { display: block; font-size: clamp(26px, 6.5vw, 34px); font-weight: 800; margin-top: 3px; color: #103e2b; }
.round-confirm-player-label { font-size: 12px; font-weight: 800; letter-spacing: .08em; margin-bottom: 6px; color: #526159; }
.round-confirm-player { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid #e4eae5; }
.round-confirm-player span { min-width: 0; }
.round-confirm-player small { display: block; font-size: 11px; color: #607268; margin-bottom: 2px; }
.round-confirm-player span strong { font-size: 15px; overflow-wrap: anywhere; }
.round-confirm-tee { flex: 0 0 auto; color: #103e2b; background: #e7f0ea; border-radius: 9px; padding: 8px 10px; font-size: 14px; }
.round-confirm-dialog .round-confirm-warning { margin-top: 15px; padding: 10px 12px; background: #fff5e8; color: #775024; border-radius: 10px; font-size: 13px; font-weight: 600; }
.round-confirm-actions { display: flex; flex-direction: column; gap: 10px; margin-top: 20px; }
.round-confirm-actions .primary-btn, .round-confirm-actions .secondary-btn { width: 100%; min-height: 52px; margin: 0; }
@media(max-width: 390px) { .round-confirm-dialog { padding: 18px; } }

/* V55.2 — safe, reversible registration control */
.admin-registration-action{grid-column:1/-1;border:1px solid #d9e2db;border-radius:12px;padding:14px;background:#f8faf8;margin-top:4px;}
.admin-registration-action[hidden]{display:none!important}
.admin-registration-action>strong{display:block;font-size:14px;color:var(--green)}
.admin-registration-action label{font-size:12px;font-weight:700;margin-top:12px;display:block}
.admin-registration-action input{width:100%;min-height:42px;margin:6px 0 10px;padding:9px;border:1px solid #c6d2c9;border-radius:9px;font:inherit;box-sizing:border-box;}
.admin-registration-buttons{display:flex;flex-wrap:wrap;gap:8px}
.admin-registration-buttons .secondary-btn{width:auto;min-height:42px;padding:9px 12px;font-size:12px}
.admin-player-actions{flex-wrap:wrap}

/* V55.3 — visible self-service restart, with extra caution for unsubmitted scores. */
.round-restart-panel,.round-rescue-panel{padding:14px 15px;margin:14px 0;border:1px solid #d8e4dc;background:#f5f8f5;border-radius:14px;line-height:1.5}
.round-restart-panel[hidden],.round-rescue-panel[hidden]{display:none!important}
.round-restart-panel strong,.round-rescue-panel strong{display:block;font-size:15px;color:#153f2b}
.round-restart-panel p,.round-rescue-panel p{font-size:13px;margin:7px 0 12px;color:#52675a}
.round-restart-panel .secondary-btn,.round-rescue-panel .secondary-btn{width:100%;min-height:46px;margin:0}
.restart-danger{border:1px solid #ac5738!important;color:#843d25!important;background:#fff7f2!important;font-weight:800!important}
.restart-danger:disabled{opacity:.5}
.scoring-restart-bar{margin:12px 0 0;padding:10px 12px;background:#fffaf5;border:1px solid #e9cdbb;border-radius:12px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.scoring-restart-bar span{font-size:12px;font-weight:650;color:#79523b}
.scoring-restart-bar button{flex-shrink:0;min-height:43px;font-size:12px;margin:0;padding:8px 12px;width:auto}
.stuck-round-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;border:1px solid #dbe5df;border-radius:11px;margin:9px 0;padding:10px}
.stuck-round-row strong{font-size:13px}
.stuck-round-row small{display:block;font-size:11px;color:#586a60;margin-top:3px}
.stuck-round-row button{width:auto!important;font-size:12px;flex-shrink:0;padding:8px 10px}
@media(max-width:560px){.scoring-restart-bar{flex-direction:column;align-items:stretch}.scoring-restart-bar button{width:100%}.stuck-round-row{flex-direction:column;align-items:stretch}.stuck-round-row button{width:100%!important}}


/* V55.5 — Phone-friendly admin sections. The admin menu is its own screen;
   choosing an item shows only that section, never the 17-button menu above it. */
#adminView:not(.admin-section-open) #adminTabNav { position:static; }
#adminView.admin-section-open .admin-payment-shortcut,
#adminView.admin-section-open #adminTabNav,
#adminView.admin-section-open .admin-panel > .panel-heading { display:none!important; }
body.admin-section-mode .hero { display:none; }
#adminView.admin-section-open .admin-panel { margin-top:0; }
.admin-section-bar {
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  align-items:center;
  margin:0 0 18px;
  padding:0 0 14px;
  border-bottom:1px solid var(--line);
}
.admin-section-bar .back-btn { min-height:44px; }
.admin-section-bar h2 { margin:0; font-size:clamp(18px,4.5vw,24px); line-height:1.2; color:var(--green); }
#adminView.payment-workspace-open #adminSectionBar,
#adminView.ball-redemption-open #adminSectionBar { display:none!important; }
@media (max-width:540px) {
  body.admin-section-mode main { padding:8px; }
  #adminView.admin-section-open:not(.payment-workspace-open) .admin-panel {padding:14px;}
  .admin-section-bar {flex-direction:column; align-items:stretch; gap:9px;}
  .admin-section-bar .back-btn {width:100%;text-align:left;}
}

/* V55.6 — Cancel individual tee-time reservations from Admin > Tee Times only. */
.admin-booking-entry{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 0!important}
.admin-booking-person{flex:1 1 150px;min-width:0;color:#173e30;overflow-wrap:anywhere}
.admin-booking-person strong{font-weight:650}
.admin-booking-person small{display:block;margin-top:4px;font-size:12px;color:#51665c}
.admin-cancel-booking{min-height:40px!important;margin:0!important;padding:8px 11px!important;width:auto!important;flex:0 0 auto;font-size:12px!important;white-space:nowrap}
.admin-cancel-booking:disabled{opacity:.5}
#adminBookingMessage:not(:empty){margin:12px 0;padding:8px 10px;border:1px solid #d7e2dc;border-radius:9px}
@media(max-width:510px){.admin-timesheet-row{grid-template-columns:64px minmax(0,1fr) 40px;gap:7px}.admin-booking-entry{align-items:flex-start}.admin-cancel-booking{width:100%!important;text-align:center}}
/* V56 — Ambrose only. Existing Stableford UI remains unchanged. */
.ambrose-panel{max-width:980px;margin:0 auto}
.ambrose-panel h2{margin:6px 0 8px}.ambrose-panel h3{margin:0 0 8px}
.ambrose-panel button{min-height:43px;touch-action:manipulation}
.ambrose-message{border-radius:9px;background:#edf5f0;color:#163f31;border:1px solid #b8d1c4;padding:12px 14px;margin:14px 0;font-weight:600;overflow-wrap:anywhere}
.ambrose-pair,.ambrose-score-pair{border:1px solid #d6e3dc;border-radius:14px;padding:15px;margin:12px 0;background:#fff}
.ambrose-players{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.ambrose-player-slot{min-width:0;position:relative}.ambrose-player-slot>label{display:block;font-weight:650;margin-bottom:7px}
.ambrose-player-slot select,.ambrose-player-slot input,.ambrose-admin-team textarea{width:100%;max-width:100%;padding:11px;border:1px solid #a5bcb1;border-radius:8px;background:white;font:inherit;box-sizing:border-box}
.ambrose-selected{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:9px;min-height:45px}.ambrose-selected strong{display:block;width:100%;font-size:1.02em}.ambrose-selected span{font-size:.83em;color:#596d62}.ambrose-selected button{border:1px solid #c4d5cb;border-radius:6px;background:#f4f8f5;padding:3px 11px;margin-left:auto}
.ambrose-matches{position:relative;z-index:3;border:1px solid #a4bcb0;border-radius:8px;background:#fff;max-height:260px;overflow:auto;box-shadow:0 8px 20px #0002}
.ambrose-matches button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;background:#fff;border:0;border-bottom:1px solid #e2ece6;padding:9px 12px;color:#23483b}
.ambrose-matches button:disabled{opacity:.4}.ambrose-matches small{color:#5c7066}
.ambrose-setup-actions,.ambrose-actions,.ambrose-admin-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.ambrose-setup-actions button,.ambrose-actions>.primary-btn,.ambrose-admin-actions button{flex:1 1 170px}
.ambrose-locked{font-weight:750;background:#eff6f1;border-radius:9px;padding:12px;margin:12px 0}
.ambrose-score-header{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:16px 0}
.ambrose-hole-nav{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:4px;margin-bottom:16px}
.ambrose-hole-nav button{min-width:0;padding:6px 0;border:1px solid #cfdfd4;border-radius:7px;background:#f4f8f5;color:#245b43;font-weight:800}
.ambrose-hole-nav button.done{background:#d4f1e2}.ambrose-hole-nav button.current{outline:2px solid #188148;outline-offset:1px}
.ambrose-score-stepper{display:flex;justify-content:center;gap:11px;align-items:center;margin:13px 0}
.ambrose-score-stepper button{width:55px;height:55px;border-radius:11px;border:1px solid #cbdcd1;background:#f3f7f4;font-size:28px;font-weight:700}
.ambrose-score-stepper input{width:94px;height:60px;text-align:center;font-weight:800;font-size:27px;border:1px solid #a2b8ac;border-radius:11px}
.ambrose-running{color:#345c47;text-align:center}.ambrose-running small{font-size:.75em;color:#748679}
.ambrose-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}
.ambrose-summary>div{background:#eff5f0;border-radius:10px;padding:9px;text-align:center}.ambrose-summary small{display:block;color:#60786a}.ambrose-summary strong{display:block;font-size:24px}
.ambrose-holes-review{display:flex;flex-wrap:wrap;gap:6px}.ambrose-holes-review span{border:1px solid #d4e4db;border-radius:5px;padding:4px 8px}
.ambrose-admin-summary{display:grid;gap:5px;padding:12px;background:#f0f6f1;border:1px solid #d1e3d6;margin:12px 0;border-radius:10px}.ambrose-admin-summary span{font-size:.85em}
.ambrose-admin-team{padding:10px;border:1px solid #d5e2d8;border-radius:10px;margin:9px 0}.ambrose-admin-team summary{cursor:pointer;line-height:1.65}
.ambrose-holes-editor{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:6px;margin:12px 0}.ambrose-holes-editor label{font-size:.78em;min-width:0}.ambrose-holes-editor input{display:block;box-sizing:border-box;width:100%;padding:8px 3px;text-align:center;border:1px solid #bfd0c4;border-radius:6px}
@media(max-width:620px){.ambrose-players{grid-template-columns:1fr}.ambrose-hole-nav{gap:2px}.ambrose-hole-nav button{font-size:11px}.ambrose-holes-editor{gap:3px}.ambrose-holes-editor input{font-size:11px}.ambrose-score-stepper input{width:76px}.ambrose-panel{padding:13px}}

/* V56.2 — Admin date-specific twilight tee-time manager. */
.admin-tee-manager{margin-bottom:22px}
.admin-tee-manager>label,.admin-tee-add-form>label{display:block;font-weight:650;margin:12px 0 6px}
#adminTeeDate{width:100%;max-width:360px;padding:11px 12px;border:1px solid #b5c6bb;border-radius:9px;font:inherit;background:#fff}
.admin-tee-slots{margin:12px 0;display:grid;gap:8px}
.admin-tee-row{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid #d7e4da;background:#f9fbf9;padding:11px 13px;border-radius:11px;flex-wrap:wrap}
.admin-tee-row>div:first-child{min-width:130px;flex:1 1 150px}
.admin-tee-row strong{display:block;color:#173e30}
.admin-tee-row small{display:block;color:#52685c;font-size:12px;margin-top:4px;line-height:1.5}
.admin-tee-actions{display:flex;gap:8px;flex-wrap:wrap}
.admin-tee-actions button,.admin-tee-add-controls button{min-height:40px;margin:0!important;width:auto!important;white-space:nowrap;padding:8px 13px!important}
.admin-tee-actions button:disabled{opacity:.5}
.admin-tee-remove{color:#9a302d!important;border-color:#dfbdb9!important}
.admin-tee-editing label{display:flex;gap:6px;align-items:center;flex:1 1 140px;flex-wrap:wrap}
.admin-tee-editing input,.admin-tee-add-controls input{font:inherit;min-height:42px;padding:8px;border:1px solid #b5c6bb;border-radius:9px;background:#fff;color:#173e30}
.admin-tee-add-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
#adminTeeMessage:not(:empty){padding:10px 12px;border:1px solid #c5dacc;border-radius:9px;background:#f2f8f3;margin-top:12px}
@media(max-width:480px){.admin-tee-row{align-items:flex-start}.admin-tee-actions{width:100%}.admin-tee-actions button{flex:1 1 auto}}

/* V56.3 — Add, close, reopen or move entire Twilight playing days. */
.admin-tee-day-panel{margin:10px 0 16px;padding:14px 16px;border:1px solid #c7ddcf;background:#f5f9f6;border-radius:12px}
.admin-tee-day-panel h4{margin:0 0 8px;color:#173e30}
.admin-tee-day-form label{display:block;font-weight:650;margin:10px 0 6px}
.admin-tee-day-form input[type=date]{font:inherit;min-height:42px;padding:8px 10px;border:1px solid #b5c6bb;border-radius:9px;background:#fff;max-width:220px;min-width:175px}
.admin-tee-day-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin:8px 0 16px}
.admin-tee-day-actions form{flex:1 1 240px}
.admin-tee-day-actions>button{min-height:42px;width:auto!important;margin:0 0 0 0!important;padding:9px 13px!important}
.admin-tee-day-actions>button[hidden]{display:none!important}
.admin-tee-times-heading{margin-top:17px;margin-bottom:10px;color:#173e30}
#adminTeeDayStatus{font-weight:600;margin:10px 0}
.admin-tee-day-actions button:disabled,.admin-tee-day-form button:disabled{opacity:.55}
@media(max-width:480px){.admin-tee-day-actions{display:block}.admin-tee-day-actions>button{margin-top:10px!important}}
