:root{--navy:#0c5478;--teal:#0c7d96;--teal-2:#3ca8a8;--mint:#84d8b4;--fairway:#0c5478;--fairway-2:#0c7d96;--green:#2aa6a6;--sand:#dbeaea;--ink:#11252e;--muted:#5d7179;--line:#d8e4e6;--card:#fff;--bg:#eef4f4;--desby:#0c5478;--snow:#1f9e57;--good:#2e7d32;--bad:#c62828;--shadow:0 1px 3px #0c54781a, 0 6px 20px #0c547814;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{color:var(--ink);background:radial-gradient(900px 420px at 50% -8%, #fff 0%, var(--bg) 60%) fixed;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.app{flex-direction:column;max-width:560px;min-height:100%;margin:0 auto;display:flex}.topbar{z-index:10;background:linear-gradient(120deg, var(--navy) 0%, var(--teal) 100%);color:#fff;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex;position:sticky;top:0}.topbar .brand{letter-spacing:.3px;align-items:center;gap:9px;font-weight:800;display:flex}.topbar .brand img{object-fit:contain;filter:drop-shadow(0 1px 2px #00000040);width:26px;height:26px}.topbar .code{font-variant-numeric:tabular-nums;letter-spacing:2px;background:#ffffff2e;border-radius:8px;padding:4px 10px;font-weight:700}.topbar .sub{opacity:.85;font-size:12px;font-weight:500}.topbar .meta-area{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.topbar .course-name{opacity:.9;color:#fff;text-align:right;max-width:170px;font-size:11px;font-weight:500;line-height:1.2}.content{flex:1;padding:16px 16px 96px}.card{background:var(--card);box-shadow:var(--shadow);border-radius:16px;margin-bottom:14px;padding:18px}.card h2{margin:0 0 4px;font-size:18px}.card .hint{color:var(--muted);margin:0 0 14px;font-size:13px}label{color:var(--muted);margin:12px 0 6px;font-size:13px;font-weight:600;display:block}input,select{border:1.5px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:12px;padding:13px 14px;font-family:inherit;font-size:16px}input:focus,select:focus{border-color:var(--green);outline:none}.code-input{text-transform:uppercase;letter-spacing:6px;text-align:center;font-size:24px;font-weight:800}button{cursor:pointer;border:none;border-radius:12px;padding:14px 16px;font-family:inherit;font-size:16px;font-weight:700;transition:transform 40ms,filter .15s}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(120deg, var(--teal) 0%, var(--navy) 100%);color:#fff;width:100%;box-shadow:0 4px 14px #0c547847}.btn-primary:hover{filter:brightness(1.06)}.btn-ghost{color:var(--fairway-2);border:1.5px solid var(--line);background:0 0}.btn-row{gap:10px;display:flex}.btn-row>*{flex:1}.link{color:var(--fairway-2);cursor:pointer;background:0 0;border:none;padding:6px;font-weight:700}.chip{background:var(--sand);color:var(--ink);border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:12px;font-weight:700;display:inline-flex}.chip.desby{color:var(--desby);background:#f3e5f5}.chip.snow{color:var(--snow);background:#e1f5fe}.chip.host{color:#e65100;background:#fff3e0}.player-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 0;display:flex}.player-row:last-child{border-bottom:none}.player-row .name{font-weight:700}.player-row .meta{color:var(--muted);font-size:12px}.format-grid{gap:10px;display:grid}.format-opt{border:1.5px solid var(--line);background:#fff;border-radius:12px}.format-opt.on{border-color:var(--green);background:#e7f6ef}.format-opt .head{align-items:flex-start;gap:4px;padding:12px 6px 12px 14px;display:flex}.format-opt .head label{cursor:pointer;color:inherit;font-weight:400;font-size:inherit;flex:1;align-items:flex-start;gap:10px;margin:0;padding:0;display:flex}.format-opt .head input{flex-shrink:0;width:auto;margin-top:3px}.format-opt .t{font-weight:700}.format-opt .d{color:var(--muted);margin-top:2px;font-size:13px;line-height:1.35}.format-opt .info-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:8px;display:inline-flex}.format-opt .info-btn:hover{color:var(--ink);background:var(--sand)}.format-opt .rules{margin:0;padding:4px 16px 14px 40px;list-style:outside}.format-opt .rules li{color:var(--muted);margin:4px 0;font-size:13px;line-height:1.4}.holes-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.holes-table th,.holes-table td{text-align:center;padding:6px 4px;font-size:14px}.holes-table th{color:var(--muted);text-transform:uppercase;font-size:11px}.holes-table input{text-align:center;border-radius:8px;padding:8px 4px;font-size:15px}.holes-table td:first-child,.holes-table th:first-child{text-align:left;font-weight:700}.hole-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.hole-head .big{font-size:40px;font-weight:800;line-height:1}.hole-head .par{color:var(--muted);font-weight:700}.hole-nav{align-items:center;gap:10px;display:flex}.hole-nav button{background:var(--sand);color:var(--ink);padding:12px 16px}.score-stepper{justify-content:center;align-items:center;gap:18px;margin:10px 0 4px;display:flex}.score-stepper button{background:var(--fairway-2);color:#fff;border-radius:50%;width:64px;height:64px;font-size:30px}.score-stepper button:disabled{background:var(--line);color:var(--muted);box-shadow:none;opacity:1;cursor:not-allowed}.score-stepper .val{text-align:center;font-variant-numeric:tabular-nums;min-width:90px;font-size:56px;font-weight:800}.score-rel{text-align:center;margin-bottom:6px;font-weight:700}.score-rel.under{color:var(--good)}.score-rel.over{color:var(--bad)}.who-grid{grid-template-columns:1fr 1fr;gap:8px;margin-top:8px;display:grid}.who{border:1.5px solid var(--line);text-align:left;background:#fff;border-radius:10px;justify-content:space-between;align-items:center;padding:8px 10px;font-size:14px;font-weight:700;display:flex}.who.on{border-color:var(--green);background:#e7f6ef}.who small{color:var(--muted);font-weight:600}.tabs{gap:6px;margin-bottom:12px;padding-bottom:4px;display:flex;overflow-x:auto}.tabs button{white-space:nowrap;color:var(--muted);border:1.5px solid var(--line);background:#fff;padding:9px 14px;font-size:14px}.tabs button.on{background:var(--fairway);color:#fff;border-color:var(--fairway)}.lb{border-collapse:collapse;width:100%}.lb th{text-align:left;text-transform:uppercase;color:var(--muted);padding:6px 8px;font-size:11px}.lb td{border-top:1px solid var(--line);font-variant-numeric:tabular-nums;padding:11px 8px}.lb .rank{color:var(--muted);width:22px;font-weight:700}.lb .pname{font-weight:700}.lb .num{text-align:center;font-weight:800}.lb tr.leader td{background:#e7f6ef}.cup-bar{color:#fff;border-radius:10px;height:38px;margin:10px 0;font-weight:800;display:flex;overflow:hidden}.cup-bar .d{background:var(--desby);align-items:center;min-width:44px;padding:0 12px;display:flex}.cup-bar .s{background:var(--snow);justify-content:flex-end;align-items:center;min-width:44px;padding:0 12px;display:flex}.bottomnav{border-top:1px solid var(--line);max-width:560px;padding:8px 8px calc(8px + env(safe-area-inset-bottom));background:#fff;justify-content:space-around;margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0}.bottomnav button{color:var(--muted);background:0 0;flex-direction:column;flex:1;align-items:center;gap:3px;padding:6px;font-size:12px;font-weight:700;display:flex}.bottomnav button .ic{font-size:20px}.bottomnav button.on{color:var(--fairway-2)}.center-screen{flex-direction:column;flex:1;justify-content:center;gap:16px;padding:24px;display:flex}.hero{text-align:center;margin-bottom:8px}.hero h1{background:linear-gradient(120deg, var(--navy), var(--teal));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0 0 6px;font-size:30px}.hero p{color:var(--muted);margin:0}.hero-logo{object-fit:contain;filter:drop-shadow(0 8px 18px #0c547840);width:110px;height:110px;margin:0 auto 14px;display:block}.banner{color:#8d6e00;background:#fff8e1;border:1px solid #ffe082;border-radius:12px;margin-bottom:14px;padding:12px 14px;font-size:13px}.banner.error{color:var(--bad);background:#ffebee;border-color:#ffcdd2}.muted{color:var(--muted)}.thru{color:var(--muted);font-size:12px}.spinner{text-align:center;color:var(--muted);padding:40px 0}.row-2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.flag{font-size:18px}@media (width>=720px){.app,.bottomnav{max-width:720px}}@media (width>=1024px){.app,.bottomnav{max-width:840px}}@media (orientation:landscape) and (height<=500px){.topbar{padding:8px 16px}.topbar .brand img{width:22px;height:22px}.topbar .brand{font-size:14px}.topbar .sub{font-size:11px}.content{padding:12px 16px 84px}.hero-logo{width:64px;height:64px;margin-bottom:8px}.hero h1{margin-bottom:2px;font-size:22px}.hero p{font-size:13px}.center-screen{gap:10px;padding:12px 20px}.score-stepper{gap:14px;margin:4px 0 2px}.score-stepper button{width:52px;height:52px;font-size:24px}.score-stepper .val{font-size:44px}.card{margin-bottom:10px;padding:14px}.bottomnav{padding:4px 8px calc(4px + env(safe-area-inset-bottom))}.bottomnav button{padding:4px;font-size:11px}.bottomnav button .ic{font-size:18px}}.card-legend{flex-wrap:wrap;justify-content:center;gap:6px;margin:-8px -16px 10px;padding:0 16px;display:flex}.card-legend .sw{border:1px solid var(--line);color:var(--muted);background:#fff;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:800}.card-legend .sw.eagle{color:#8a6300;background:#fff3cd;border-color:#f0d878}.card-legend .sw.birdie{color:var(--good);background:#e7f6ef;border-color:#b6e3c8}.card-legend .sw.par{color:var(--ink);background:#fff}.card-legend .sw.bogey{color:var(--muted);background:#f3f6f6}.card-legend .sw.double{color:var(--bad);background:#fdecec;border-color:#f4c2c2}.scorecard-wrap{-webkit-overflow-scrolling:touch;border-top:1px solid var(--line);border-bottom:1px solid var(--line);box-shadow:var(--shadow);background:#fff;margin:0 -16px;overflow-x:auto}.scorecard{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:max-content;font-size:15px}.scorecard th,.scorecard td{text-align:center;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;min-width:38px;height:46px;padding:10px 8px}.scorecard thead th{background:var(--fairway);color:#fff;z-index:2;font-size:13px;font-weight:800;position:sticky;top:0}.scorecard thead th.agg{background:var(--teal);color:#fff}.scorecard thead th.agg.total{background:var(--navy);color:#fff}.scorecard .par-row td,.scorecard .par-row th{background:var(--sand);color:var(--ink);font-size:13px;font-weight:700}.scorecard .par-row td.agg{color:var(--ink);background:#d2dee0}.scorecard .par-row td.agg.total{background:var(--mint);color:var(--ink)}.scorecard .name{z-index:3;text-align:left;border-right:2px solid var(--line);min-width:150px;padding-left:14px;padding-right:10px;position:sticky;left:0}.scorecard thead .name{z-index:4}.scorecard .name .pname{font-weight:700;line-height:1.15}.scorecard .name .meta{color:var(--muted);font-size:11px}.scorecard tbody .agg{background:var(--bg);min-width:46px;font-size:15px;font-weight:800}.scorecard tbody .agg.total{background:var(--mint);color:var(--ink)}.scorecard td.cell{font-weight:700}.scorecard td.cell.eagle{color:#8a6300;background:#fff3cd}.scorecard td.cell.birdie{color:var(--good);background:#e7f6ef}.scorecard td.cell.par{color:var(--ink)}.scorecard td.cell.bogey{color:var(--muted)}.scorecard td.cell.double{color:var(--bad);background:#fdecec}.scorecard td.cell.empty{color:var(--line)}.rules-card{border:1px solid var(--line);background:#fff;border-radius:14px;margin-top:12px;overflow:hidden}.rules-toggle{cursor:pointer;width:100%;color:var(--muted);text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:14px 16px;font-size:14px;font-weight:700;display:flex}.rules-toggle:hover{color:var(--ink)}.rules-toggle .caret{color:var(--teal);margin-left:auto;font-size:20px;font-weight:800}.rules-body{border-top:1px solid var(--line);padding:0 14px 14px}.rules-intro{color:var(--muted);margin:12px 2px 4px;font-size:13px;font-weight:500;line-height:1.5}.rules-section+.rules-section{margin-top:14px}.rules-heading{text-transform:uppercase;letter-spacing:.7px;color:var(--teal);margin-top:12px;margin-bottom:8px;font-size:11px;font-weight:800}.rules-rows{flex-direction:column;gap:4px;display:flex}.rules-row{background:#f4f9f9;border-radius:8px;justify-content:space-between;align-items:baseline;gap:12px;padding:8px 12px;font-size:14px;display:flex}.rules-row .lbl{color:var(--ink);font-weight:600}.rules-row .val{color:var(--teal);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:800}.rules-note{color:var(--muted);margin-top:8px;padding:0 4px;font-size:12px;line-height:1.45}.toast-stack{left:0;right:0;bottom:calc(86px + env(safe-area-inset-bottom));pointer-events:none;z-index:1000;flex-direction:column;align-items:center;gap:8px;max-width:560px;margin:0 auto;padding:0 14px;display:flex;position:fixed}.toast{pointer-events:auto;background:var(--ink);color:#fff;border-radius:14px;max-width:480px;padding:12px 16px;font-size:14px;font-weight:600;animation:.22s ease-out toast-in;box-shadow:0 10px 30px #00000047}.toast.good{background:linear-gradient(120deg, var(--good), #1b9e57)}.toast.bad{background:linear-gradient(120deg,#c62828,#8b1717)}.toast.info{background:linear-gradient(120deg, var(--navy), var(--teal))}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.brand-badge{color:#fff;letter-spacing:-.3px;vertical-align:middle;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-weight:800;line-height:1;display:inline-flex;overflow:hidden}.brand-badge img{object-fit:contain;width:100%;height:100%}.brand-badge.has-logo{border:1px solid var(--line);background:#fff;box-shadow:0 1px 2px #0c54781f}.brand-badge.desby{background:var(--desby)}.brand-badge.snow{color:#0b3d2e;background:#62d84e}.brand-badge.other{background:#8c9a90}.name-with-badge{align-items:center;gap:8px;display:inline-flex}.putts-row{border:1.5px solid var(--line);background:#fff;border-radius:12px;justify-content:space-between;align-items:center;margin-top:14px;padding:10px 14px;display:flex}.putts-row .stat-label{color:var(--ink);font-size:15px;font-weight:700}.putts-row .putts-controls{align-items:center;gap:14px;display:flex}.putts-row .putts-controls button{background:var(--sand);width:42px;height:42px;color:var(--ink);border-radius:50%;padding:0;font-size:22px;font-weight:700}.putts-row .putts-controls button:disabled{background:var(--line);color:var(--muted);opacity:1;cursor:not-allowed}.putts-row .putts-val{text-align:center;font-variant-numeric:tabular-nums;min-width:28px;font-size:22px;font-weight:800}.gir-fir-row{grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;display:grid}.misfortune-row{grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:10px;display:grid}.big-toggle{border:1.5px solid var(--line);min-height:48px;color:var(--muted);background:#fff;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:14px 8px;font-size:15px;font-weight:700;display:flex}.big-toggle.on{border-color:var(--green);color:var(--good);background:#e7f6ef}.big-toggle.na{opacity:.55;background:#f3f6f6}.big-toggle.bad{padding:12px 6px;font-size:13px}.big-toggle.bad.on{border-color:var(--bad);color:var(--bad);background:#fdecec}.shot-detail-toggle{border:1px dashed var(--line);width:100%;color:var(--muted);background:0 0;border-radius:10px;margin-top:12px;padding:10px;font-size:13px;font-weight:700}.shot-detail-toggle:hover{color:var(--ink)}.share-btn,.play-btn{justify-content:center;align-items:center;gap:8px;display:inline-flex}.qr-wrap{justify-content:center;padding:8px 0 4px;display:flex}.qr-wrap>div{border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px}.live{align-items:center;gap:6px;font-weight:700;display:inline-flex}.live-dot{background:#69f0ae;border-radius:50%;width:9px;height:9px;animation:1.6s infinite pulse;box-shadow:0 0 #69f0aeb3}@keyframes pulse{0%{box-shadow:0 0 #69f0ae99}70%{box-shadow:0 0 0 7px #69f0ae00}to{box-shadow:0 0 #69f0ae00}}
