:root{--night:#071d16;--green:#176b43;--lime:#dcff62;--cream:#f4f1e7;--paper:#fffdf6;--ink:#102119;--muted:#68766d;--line:#d8ddd7;--danger:#b64b34;--shadow:0 18px 60px #1021191f}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.5 "DM Sans",sans-serif}.topbar{height:68px;padding:0 4vw;display:flex;align-items:center;justify-content:space-between;background:var(--night);color:#fff;position:sticky;top:0;z-index:10}.brand{color:#fff;text-decoration:none;font-weight:700;letter-spacing:.15em}.brand span{color:var(--lime);font-size:1.4rem}.topbar button{border:1px solid #49665a;background:transparent;color:#fff;border-radius:99px;padding:8px 14px}.builder,.play{width:min(1160px,calc(100% - 32px));margin:auto;padding:55px 0 90px}.intro{display:grid;grid-template-columns:1.3fr 1fr;gap:70px;align-items:end;margin-bottom:40px}.eyebrow,.setup small,.settle-head small{color:var(--green);font-size:.74rem;letter-spacing:.16em;font-weight:700}.intro h1,.play-head h1{font:400 clamp(3.4rem,7vw,6.4rem)/.88 "DM Serif Display",serif;letter-spacing:-.04em;margin:0}.intro h1 em{color:var(--green)}.intro>p,.play-head p,.helper{color:var(--muted)}.progress{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid #c9cfc9;margin-bottom:24px}.progress button{border:0;border-bottom:3px solid transparent;background:transparent;padding:14px;text-align:left;color:#758078;font-weight:700}.progress b{display:inline-grid;place-items:center;width:28px;height:28px;border:1px solid #a8b1aa;border-radius:50%;margin-right:8px}.progress .active{color:var(--green);border-color:var(--green)}.progress .active b{background:var(--green);color:#fff}.setup{display:none;background:var(--paper);padding:38px;border-radius:17px;box-shadow:var(--shadow)}.setup.active{display:block}.setup>header,.settle-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:28px}.setup h2,.settle-head h2{font:400 2.4rem "DM Serif Display",serif;margin:0}.setup header i{font-style:normal;font-size:.72rem;letter-spacing:.1em;background:#e7ebe6;border-radius:99px;padding:7px 11px}label{display:block;font-size:.79rem;color:#4f5d54;font-weight:700}input,select,textarea{width:100%;margin-top:7px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:12px;font:inherit;color:var(--ink)}textarea{min-height:110px;resize:vertical}.search{display:flex;align-items:center;border:1px solid var(--line);border-radius:10px;background:#fff;margin-top:7px;padding-left:15px}.search input{border:0;margin:0;outline:0}.search span{font-size:1.5rem;color:var(--muted)}.results{display:none;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:7px}.results.show{display:block}.course-result{width:100%;display:flex;justify-content:space-between;text-align:left;border:0;border-bottom:1px solid var(--line);background:#fff;padding:14px}.course-result strong,.course-result small{display:block}.course-result small{color:var(--muted)}.selected{margin-top:18px;padding:22px;border-radius:12px;background:var(--night);color:#fff}.selected-top{display:flex;justify-content:space-between}.selected h3{margin:0}.selected p{margin:3px 0;color:#b9c9c1}.tee-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:17px}.tee{border:1px solid #49665a;border-radius:99px;background:transparent;color:#fff;padding:7px 12px}.tee.active{background:var(--lime);color:var(--night);border-color:var(--lime)}details{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}summary{cursor:pointer;color:var(--green);font-weight:700}.grid{display:grid;gap:12px;margin-top:15px}.two{grid-template-columns:repeat(2,1fr)}.four{grid-template-columns:repeat(4,1fr)}.holes{display:grid;grid-template-columns:repeat(9,1fr);gap:5px;margin:16px 0}.hole-edit{background:#f0f3ee;padding:6px;border-radius:7px;text-align:center}.hole-edit input{padding:5px 2px;text-align:center}.primary,.outline{border:0;border-radius:99px;padding:12px 18px;font-weight:700}.primary{background:var(--lime);color:var(--night)}.primary:disabled{opacity:.35}.outline{border:1px solid var(--green);background:transparent;color:var(--green)}.setup footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:28px;padding-top:21px}.player-form,.game-form{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:12px;align-items:end}.game-form{grid-template-columns:1.5fr 1fr 1fr .7fr auto}.add{width:48px;height:48px;border:0;border-radius:50%;background:var(--night);color:var(--lime);font-size:1.5rem}.empty{padding:25px;border:1px dashed #bdc6bf;border-radius:9px;text-align:center;color:var(--muted);margin-top:18px}.player-item{display:grid;grid-template-columns:40px 1.5fr 1fr 1fr auto;gap:12px;align-items:center;padding:13px 3px;border-bottom:1px solid var(--line)}.avatar{display:grid;place-items:center;width:37px;height:37px;border-radius:50%;background:#e2eddc;color:var(--green);font-weight:700}.remove{border:0;background:transparent;color:var(--danger);font-size:1.2rem}.modes{display:flex;gap:8px;margin-bottom:18px}.modes button,.tabs button{border:1px solid var(--line);border-radius:99px;background:#fff;padding:9px 15px}.modes .active,.tabs .active{background:var(--night);color:#fff}.game-stack{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px}.game-card{position:relative;border:1px solid var(--line);border-radius:12px;padding:18px;background:#fff}.game-card .remove{position:absolute;right:9px;top:7px}.game-card h3{margin:5px 0}.game-card p{font-size:.82rem;color:var(--muted)}.review{display:grid;grid-template-columns:1.2fr 1fr 1.2fr;gap:13px}.review-panel{background:#f0f3ee;border-radius:11px;padding:17px}.review-panel h3{margin-top:0}.notice{margin-top:18px;border-left:4px solid var(--lime);background:var(--night);color:#fff;border-radius:8px;padding:17px}.hidden{display:none!important}.play-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:25px}.play-head h1{font-size:clamp(2.7rem,5vw,4.8rem)}.tabs{display:flex;background:#e1e5df;border-radius:99px;padding:4px}.tabs button{border:0;background:transparent}.view{display:none}.view.active{display:block}.nav{display:flex;justify-content:center;align-items:center;gap:25px;background:var(--night);color:#fff;border-radius:14px 14px 0 0;padding:13px}.nav button{width:42px;height:42px;border-radius:50%;border:1px solid #48675a;background:transparent;color:#fff}.nav div{text-align:center}.nav small{display:block;color:#afc0b7}.nav strong{font:2rem "DM Serif Display",serif}.facts{display:grid;grid-template-columns:repeat(4,1fr);background:#113c2b;color:#fff}.fact{text-align:center;padding:11px}.fact small{display:block;color:#aec0b7}.scores{background:#fff;padding:8px 21px}.score-row{display:grid;grid-template-columns:1.5fr .8fr 42px 60px 42px 1fr;gap:8px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.score-row button{height:39px;border:1px solid var(--line);background:#fff;border-radius:8px}.score-row input{margin:0;padding:8px;text-align:center}.net{color:var(--green);font-weight:700}.strip{display:grid;grid-template-columns:repeat(18,1fr);gap:4px;margin-top:12px}.strip button{border:0;border-radius:6px;background:#dfe4dd;padding:9px 2px}.strip .active{background:var(--lime);font-weight:700}.strip .complete{box-shadow:inset 0 -3px var(--green)}.live-games{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.live-game{background:#fff;border-radius:13px;padding:20px}.standing{display:flex;justify-content:space-between;padding:9px 0;border-top:1px solid var(--line)}.standing strong{color:var(--green)}.settlement{display:grid;grid-template-columns:1.1fr 1fr;gap:14px}.settle-summary,.payments{background:#fff;border-radius:13px;padding:20px}.balance{display:flex;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line)}.wins{color:var(--green)}.owes{color:var(--danger)}.payment,.ledger{background:#fff;border-radius:10px;padding:14px;margin-top:8px}.payment b{color:var(--green)}.ledger{display:grid;grid-template-columns:1fr 2fr 1fr;gap:10px}.complete-banner{grid-column:1/-1;background:var(--night);color:#fff;border-radius:13px;padding:18px;text-align:center}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,18px);background:var(--night);color:#fff;border-radius:99px;padding:10px 17px;opacity:0;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}
.import-card{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px;background:#edf4e8;border:1px solid #cdddca;border-radius:12px}.import-card b,.import-card span{display:block}.import-card span{color:var(--muted);font-size:.84rem}.upload-button{display:inline-flex;align-items:center;justify-content:center;background:var(--night);color:#fff;border-radius:99px;padding:10px 15px;white-space:nowrap;cursor:pointer}.upload-button input{display:none}.upload-button.light{background:#fff;color:var(--green);border:1px solid var(--green);margin-bottom:8px}.or{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:.68rem;letter-spacing:.12em;margin:18px 0}.or:before,.or:after{content:"";height:1px;background:var(--line);flex:1}.play-actions{display:flex;flex-direction:column;align-items:flex-end}
dialog{width:min(1000px,calc(100% - 24px));border:0;border-radius:17px;padding:0;background:var(--paper);box-shadow:0 25px 90px #0005}dialog::backdrop{background:#06150fc7}.scan-head{display:flex;justify-content:space-between;align-items:center;padding:22px 25px;border-bottom:1px solid var(--line)}.scan-head h2{font:2rem "DM Serif Display",serif;margin:0}.scan-head button{border:0;background:transparent;font-size:1.7rem}.scan-layout{display:grid;grid-template-columns:1fr 1.2fr;min-height:470px}.scan-layout>img{width:100%;height:100%;max-height:620px;object-fit:contain;background:#15221c}.scan-work{padding:25px;overflow:auto;max-height:620px}.scan-work p{color:var(--muted)}#scanProgress{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:9px;text-align:center}.spinner{width:46px;height:46px;border:4px solid #dce3dc;border-top-color:var(--green);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.scan-grid{display:grid;grid-template-columns:80px repeat(9,1fr);gap:4px;min-width:580px}.scan-grid label{font-size:.63rem;text-align:center}.scan-grid input{padding:7px 2px;text-align:center;margin-top:2px}.scan-grid .row-label{display:flex;align-items:end;font-weight:700}.review-needed input{background:#fff3b9;border-color:#d7a928}.scan-player{margin:13px 0 18px;overflow:auto}.confidence{display:inline-block;margin-left:6px;padding:2px 6px;border-radius:99px;background:#e6f1df;color:var(--green);font-size:.65rem}.confidence.low{background:#fff0b8;color:#8b6100}
@media(max-width:780px){.topbar>div{display:none}.builder,.play{width:calc(100% - 24px);padding-top:32px}.intro{grid-template-columns:1fr;gap:14px}.intro h1{font-size:3.6rem}.progress button{text-align:center;padding:11px 2px;font-size:.72rem}.progress b{display:none}.setup{padding:21px 15px}.setup h2{font-size:1.9rem}.setup header i{display:none}.two,.four,.player-form,.game-form{grid-template-columns:1fr 1fr}.player-form label:first-child,.game-form label:first-child{grid-column:1/-1}.holes{grid-template-columns:repeat(6,1fr)}.player-item{grid-template-columns:38px 1.5fr 1fr auto}.player-item .tee-name{display:none}.game-stack,.review,.live-games,.settlement{grid-template-columns:1fr}.play-head{flex-direction:column;align-items:flex-start;gap:16px}.tabs{width:100%}.tabs button{flex:1}.score-row{grid-template-columns:1.4fr 42px 56px 42px}.course-hcp,.net{display:none}.strip{grid-template-columns:repeat(9,1fr)}.ledger{grid-template-columns:1fr}.import-card{align-items:flex-start;flex-direction:column}.play-actions{width:100%;align-items:stretch}.upload-button.light{align-self:flex-start}.scan-layout{grid-template-columns:1fr}.scan-layout>img{height:220px}.scan-work{max-height:55vh}}
