:root{--cream: #fff8ec;--ink: #12261a;--panel: rgba(16, 38, 26, .72);--panel-solid: #173524;--gold: #ffd23f;--flag: #ff4d4d;--grass: #7bd152;--sky: #4aa3ee;--sat: env(safe-area-inset-top, 0px);--sab: env(safe-area-inset-bottom, 0px);--sal: env(safe-area-inset-left, 0px);--sar: env(safe-area-inset-right, 0px);--font: "Fredoka", "Baloo 2", "Trebuchet MS", system-ui, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;overflow:hidden;overscroll-behavior:none;background:linear-gradient(180deg,#4aa3ee,#cfeaff 60%,#9bd67a);color:var(--cream);font-family:var(--font);font-weight:500;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}#container,#container canvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none}button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:pointer;touch-action:manipulation}#hud{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10}#hud>*{pointer-events:none}.hidden{display:none!important}.top{position:absolute;top:calc(var(--sat) + 8px);left:calc(var(--sal) + 8px);right:calc(var(--sar) + 8px);display:flex;align-items:flex-start;gap:8px}.pill{background:var(--panel);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-radius:14px;padding:7px 12px;line-height:1.1;box-shadow:0 2px #0000002e}.menu-btn{pointer-events:auto!important;width:42px;height:42px;border-radius:14px;background:var(--panel);font-size:20px;display:grid;place-items:center}.hole-pill .big{font-size:17px;font-weight:700;letter-spacing:.3px}.hole-pill .small{font-size:12px;opacity:.85;margin-top:2px}.spacer{flex:1}.score-pill{text-align:right}.score-pill .big{font-size:22px;font-weight:700;color:var(--gold)}.score-pill .small{font-size:12px;opacity:.85}.side-left,.side-right{position:absolute;top:calc(var(--sat) + 62px);display:flex;flex-direction:column;gap:6px}.side-left{left:calc(var(--sal) + 8px);align-items:flex-start}.side-right{right:calc(var(--sar) + 8px);align-items:flex-end}.wind{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;padding:6px 10px}.wind-arrow{width:22px;height:22px;transition:transform .25s}.wind.calm .wind-arrow{opacity:.35}.points{font-size:13px;font-weight:700;color:var(--gold);padding:5px 10px}.points.bump{animation:bump .35s}@keyframes bump{40%{transform:scale(1.25)}}#minimap{width:104px;height:104px;border-radius:16px;background:var(--panel);box-shadow:0 2px #0000002e}.pin-tag{position:absolute;left:0;top:0;transform:translate(-50%,-100%);background:var(--cream);color:var(--ink);font-weight:700;font-size:13px;padding:3px 8px;border-radius:9px;white-space:nowrap;box-shadow:0 2px #00000040;will-change:transform}.pin-tag:after{content:"";position:absolute;left:50%;bottom:-5px;margin-left:-5px;border:5px solid transparent;border-top-color:var(--cream);border-bottom:0}.bottom{position:absolute;left:calc(var(--sal) + 10px);right:calc(var(--sar) + 10px);bottom:calc(var(--sab) + 12px);display:flex;align-items:flex-end;gap:10px}.club{pointer-events:auto!important;display:flex;align-items:stretch;background:var(--panel);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-radius:18px;overflow:hidden;box-shadow:0 3px #0003}.club button{width:44px;font-size:20px;font-weight:700}.club button:active{background:#ffffff29}.club .info{padding:8px 4px;text-align:center;min-width:96px}.club .name{font-size:16px;font-weight:700}.club .yards{font-size:12px;opacity:.85}.lie{position:absolute;left:0;bottom:100%;margin-bottom:8px;font-size:12px;font-weight:700;padding:5px 10px}.lie.bad{background:#a03c1ed9}.club-wrap{position:relative}.swing-btn{pointer-events:auto!important;margin-left:auto;width:104px;height:104px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe88a,var(--gold) 55%,#e2a900);color:#4a3200;font-weight:700;font-size:20px;letter-spacing:.5px;box-shadow:0 6px #a87a00,0 10px 18px #00000059;display:grid;place-items:center;text-align:center;line-height:1;transition:transform .06s,box-shadow .06s;touch-action:none}.swing-btn small{display:block;font-size:11px;font-weight:600;opacity:.75;margin-top:3px}.swing-btn.down{transform:translateY(5px);box-shadow:0 1px #a87a00,0 3px 8px #00000059}.swing-btn.pulse{animation:pulse 1.1s infinite}.swing-btn.go{background:radial-gradient(circle at 35% 30%,#ffb3a0,#ff5a3c 55%,#c9341a);color:#fff;box-shadow:0 6px #8f2410,0 10px 18px #00000059}.swing-btn.disabled{filter:grayscale(.7) brightness(.8);opacity:.55}@keyframes pulse{50%{transform:scale(1.06)}}.meter{position:absolute;left:calc(var(--sal) + 14px);right:calc(var(--sar) + 14px);bottom:calc(var(--sab) + 132px);max-width:560px;margin:0 auto}.meter .track{position:relative;height:30px;border-radius:15px;background:#0a1a12c7;border:3px solid var(--cream);overflow:hidden}.meter .fill{position:absolute;top:0;bottom:0;left:0;width:0;background:linear-gradient(90deg,#7bd152,#ffd23f 70%,#ff5a3c);opacity:.9}.meter .zone{position:absolute;top:0;bottom:0}.meter .zone.good{background:#ffffff38}.meter .zone.pure{background:#7bd152f2}.meter .line{position:absolute;top:-2px;bottom:-2px;width:3px;margin-left:-1.5px;background:#fff}.meter .ideal{position:absolute;top:0;bottom:0;width:0}.meter .ideal:before{content:"";position:absolute;top:0;bottom:0;left:-9px;width:18px;background:#ffffff47;border-left:2px dashed #fff;border-right:2px dashed #fff}.meter .lock{position:absolute;top:0;bottom:0;width:4px;margin-left:-2px;background:var(--flag)}.meter .marker{position:absolute;top:-3px;bottom:-3px;width:8px;margin-left:-4px;background:#fff;border-radius:4px;box-shadow:0 0 8px #ffffffe6}.meter .caption{text-align:center;font-size:14px;font-weight:700;margin-bottom:2px;text-shadow:0 2px 0 rgba(0,0,0,.35)}.meter .ideal-flag{position:absolute;top:-20px;transform:translate(-50%);font-size:11px;font-weight:700;background:var(--cream);color:var(--ink);padding:1px 6px;border-radius:6px;white-space:nowrap}.meter .ticks{position:relative;height:14px;font-size:10px;opacity:.8}.carry{position:absolute;left:0;right:0;bottom:calc(var(--sab) + 9%);text-align:center;font-size:clamp(40px,13vw,64px);font-weight:700;letter-spacing:1px;color:var(--cream);text-shadow:0 4px 0 rgba(0,0,0,.35),0 0 22px rgba(0,0,0,.3);font-variant-numeric:tabular-nums}.carry small{display:block;font-size:14px;letter-spacing:2px;color:var(--gold);margin-top:-2px}.meter .steps{display:flex;justify-content:center;gap:6px;margin-bottom:6px}.meter .steps i{font-style:normal;font-size:11px;font-weight:700;letter-spacing:.5px;padding:3px 9px;border-radius:10px;background:#0a1a1299;color:#fff8ec8c}.meter .steps i.done{color:var(--grass)}.meter .steps i.now{background:var(--gold);color:#4a3200;transform:scale(1.12)}.meter .flag-rail{position:relative;height:24px}.meter .flag{position:absolute;bottom:2px;transform:translate(-50%);background:var(--cream);color:var(--ink);font-size:11px;font-weight:700;letter-spacing:.5px;white-space:nowrap;padding:2px 8px;border-radius:8px;animation:flagBob .7s infinite;transition:left .12s}.meter .flag:after{content:"";position:absolute;left:50%;bottom:-5px;margin-left:-5px;border:5px solid transparent;border-top-color:var(--cream);border-bottom:0}@keyframes flagBob{50%{transform:translate(-50%,-3px)}}#hud.swinging .club-wrap{visibility:hidden}#hud.swinging .meter{left:calc(var(--sal) + 12px);right:calc(var(--sar) + 126px);bottom:calc(var(--sab) + 26px);margin:0}#hud.swinging .meter .steps i{padding:3px 6px;font-size:10px}.goal{font-size:11px;font-weight:600;padding:5px 9px;max-width:46vw;line-height:1.15}.goal.won{color:var(--gold)}.intro .cond{font-size:13px;font-weight:600;letter-spacing:1.5px;margin-top:4px}.intro .cond .pips{color:var(--gold);letter-spacing:3px}.intro .quest{display:inline-block;margin-top:10px;padding:6px 12px;border-radius:12px;background:#10261ab8;font-size:14px;font-weight:600;text-shadow:none}.intro .quest b{color:var(--gold)}.intro .tip{margin:8px auto 0;max-width:310px;padding:8px 12px;border-radius:12px;background:var(--cream);color:var(--ink);font-size:13px;font-weight:500;text-shadow:none;line-height:1.25}.intro .tip b{display:block;font-size:10px;letter-spacing:2px;opacity:.6}.card .missed{font-size:13px;opacity:.7;margin-top:6px}.glyph{position:relative;display:inline-block;width:52px;height:52px;vertical-align:middle}.glyph svg,.glyph i{position:absolute}.g-hand{top:0;right:0;bottom:0;left:0;width:100%;height:100%;filter:drop-shadow(0 2px 0 rgba(0,0,0,.25))}.g-arrow{width:34%;height:34%}.g-pips{display:flex;gap:5px;justify-content:center;margin-top:2px}.g-pips i{width:9px;height:9px;border-radius:50%;background:#12261a40}.g-pips i.done{background:#1b7a3a}.g-pips i.now{background:#12261a;transform:scale(1.35)}.g-tap .g-hand{animation:gTap .9s infinite}.g-ripple{left:50%;top:12%;width:46%;height:46%;margin:-23% 0 0 -23%;border-radius:50%;border:3px solid #fff8ec;box-shadow:0 0 0 1.5px #12261a;animation:gRipple .9s infinite}@keyframes gTap{0%,55%,to{transform:translateY(-7%)}25%{transform:translateY(7%)}}@keyframes gRipple{0%,20%{transform:scale(.2);opacity:0}30%{opacity:1}75%,to{transform:scale(1.5);opacity:0}}.g-hold .g-hand{animation:gHold 2.2s infinite}.g-timer{top:-12%;right:-12%;bottom:-12%;left:-12%;width:124%;height:124%;transform:rotate(-90deg)}.g-timer circle{fill:none;stroke:#12261a;stroke-width:4.5;stroke-linecap:round;stroke-dasharray:120;animation:gTimer 2.2s infinite linear}@keyframes gHold{0%,to{transform:translateY(-9%)}10%,72%{transform:translateY(6%)}86%{transform:translateY(-9%)}}@keyframes gTimer{0%,10%{stroke-dashoffset:120}72%{stroke-dashoffset:0}73%,to{stroke-dashoffset:120}}.g-release .g-hand{animation:gRelease .75s infinite}.g-release .g-arrow-up{left:33%;top:-30%;animation:gUp .75s infinite}@keyframes gRelease{0%,20%{transform:translateY(8%)}70%,to{transform:translateY(-10%)}}@keyframes gUp{0%,20%{opacity:0;transform:translateY(40%)}60%,to{opacity:1;transform:translateY(0)}}.g-drag .g-hand,.g-shape .g-hand{animation:gDrag 1.5s infinite ease-in-out}.g-arrow-left{left:-42%;top:30%;transform:rotate(-90deg)}.g-arrow-right{right:-42%;top:30%;transform:rotate(90deg)}.g-arrow-down{left:33%;bottom:-38%;transform:rotate(180deg)}.g-shape .g-arrow-up{left:33%;top:-38%}@keyframes gDrag{0%,to{transform:translate(-22%)}50%{transform:translate(22%)}}.g-spin{top:4%;right:4%;bottom:4%;left:4%;width:92%;height:92%;animation:gSpin 1.1s infinite linear}.g-spin circle{fill:none;stroke:#12261a;stroke-width:5;stroke-linecap:round;stroke-dasharray:60 60;opacity:.7}.g-pause{left:36%;top:30%;width:28%;height:40%;border-left:6px solid #12261a;border-right:6px solid #12261a;opacity:.7}@keyframes gSpin{to{transform:rotate(360deg)}}.swing-btn .glyph{width:56px;height:56px;display:block;margin:0 auto}.swing-btn small{margin-top:1px}.swing-btn.go .g-pips i{background:#ffffff59}.swing-btn.go .g-pips i.done{background:#fff}.swing-btn.go .g-pips i.now{background:#fff8ec;box-shadow:0 0 0 2px #12261a}.meter .flag{padding:2px 5px}.meter .flag .glyph{width:26px;height:26px}.meter .flag.now{animation:flagNow .45s infinite;background:var(--gold)}.meter .flag.now:after{border-top-color:var(--gold)}@keyframes flagNow{50%{transform:translate(-50%,-5px) scale(1.18)}}.meter .caption .ok{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#1b9a4a;color:#fff;font-size:17px}.demo{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:22px 46px;border-radius:26px;background:#10261a80;animation:hintIn .3s}.demo.high{top:calc(var(--sat) + 215px)}.demo .glyph{width:66px;height:66px}.demo .warn{position:absolute;left:50%;top:-18px;transform:translate(-50%);font-size:26px}.intro .skip .glyph{width:40px;height:40px}.intro .tip{display:flex;align-items:center;gap:12px;text-align:left}.intro .tip .glyph,.intro .tip .tip-pic{flex:none;width:40px;height:40px}.intro .tip .tip-pic svg{width:100%;height:100%}.intro .tip .tip-pic.stack{height:auto}.intro .tip .tip-pic.stack .glyph{width:34px;height:34px;display:block;margin:0 auto}.intro .tip .g-pips i{width:6px;height:6px}.help-row{display:flex;align-items:center;gap:16px;padding:10px 4px;border-bottom:1px dashed rgba(255,255,255,.14);text-align:left}.help-row .pic{flex:none;width:96px;display:flex;align-items:center;justify-content:center;gap:2px}.help-row .pic .glyph{width:40px;height:40px}.help-row .g-pips i{background:#ffffff4d}.help-row .g-pips i.now{background:#fff}.help-row .g-timer circle{stroke:var(--gold)}.help-row b{display:block;color:var(--gold);font-size:16px}.help-row span{font-size:13px;opacity:.85}@media (orientation: landscape) and (max-height: 520px){.swing-btn .glyph{width:46px;height:46px}.demo{padding:14px 40px}.demo .glyph{width:50px;height:50px}.help-row{padding:5px 4px}}.callouts{position:absolute;left:0;right:0;top:34%;display:flex;flex-direction:column;align-items:center;gap:6px}.callout{font-size:clamp(26px,8vw,44px);font-weight:700;letter-spacing:1px;color:var(--cream);text-shadow:0 3px 0 rgba(0,0,0,.35),0 0 18px rgba(0,0,0,.25);animation:callout 1.6s forwards;white-space:nowrap}.callout.gold{color:var(--gold)}.callout.bad{color:#ffb0a0}.callout.small{font-size:clamp(16px,5vw,24px);animation-duration:1.9s}.callout.pts{font-size:clamp(15px,4.5vw,22px);color:var(--gold)}@keyframes callout{0%{transform:scale(.4);opacity:0}12%{transform:scale(1.15);opacity:1}20%{transform:scale(1)}75%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-22px)}}.hint{position:absolute;left:50%;top:47%;transform:translate(-50%);font-size:14px;font-weight:600;padding:8px 14px;text-align:center;width:max-content;max-width:78vw;animation:hintIn .3s}.hint.high{top:calc(var(--sat) + 182px)}@keyframes hintIn{0%{opacity:0;transform:translate(-50%,-8px)}}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:auto!important;padding:calc(var(--sat) + 12px) 14px calc(var(--sab) + 12px)}.overlay.dim{background:#08140e80}.overlay.pass{pointer-events:none!important}.card{background:var(--panel-solid);border-radius:24px;padding:20px 18px;width:min(430px,100%);max-height:100%;overflow-y:auto;text-align:center;box-shadow:0 8px #00000040,0 20px 50px #0006;animation:cardIn .35s cubic-bezier(.2,1.4,.4,1)}@keyframes cardIn{0%{transform:translateY(30px) scale(.9);opacity:0}}.card h1{margin:0;font-size:40px;line-height:1;letter-spacing:1px}.card h2{margin:0 0 4px;font-size:14px;letter-spacing:3px;opacity:.75;font-weight:600}.card p{margin:8px 0 0;font-size:15px;opacity:.9}.card .gold{color:var(--gold)}.btn{display:block;width:100%;margin-top:12px;padding:14px 16px;border-radius:16px;background:var(--gold);color:#4a3200;font-size:19px;font-weight:700;letter-spacing:.5px;box-shadow:0 5px #a87a00;position:relative;overflow:hidden}.btn:active{transform:translateY(4px);box-shadow:0 1px #a87a00}.btn.ghost{background:#ffffff1f;color:var(--cream);box-shadow:0 5px #00000040}.btn .auto{position:absolute;left:0;bottom:0;height:5px;background:#4a320073;width:0}.btn-row{display:flex;gap:10px}.card.result .btn{position:sticky;bottom:0}.intro{position:absolute;left:0;right:0;bottom:calc(var(--sab) + 12%);text-align:center;text-shadow:0 3px 0 rgba(0,0,0,.35),0 0 24px rgba(0,0,0,.35);animation:cardIn .5s}.intro .num{font-size:15px;letter-spacing:4px;font-weight:600}.intro .name{font-size:clamp(34px,10vw,56px);font-weight:700;line-height:1;margin:2px 0 6px}.intro .meta{font-size:18px;font-weight:600;color:var(--gold)}.intro .blurb{font-size:14px;opacity:.92;margin:6px auto 0;max-width:300px}.intro .skip{font-size:12px;opacity:.7;margin-top:14px;letter-spacing:2px}.bonus-list{margin:12px 0 2px;text-align:left}.bonus{display:flex;justify-content:space-between;font-size:15px;padding:4px;border-bottom:1px dashed rgba(255,255,255,.14);animation:bonusIn .3s backwards}.bonus b{color:var(--gold)}@keyframes bonusIn{0%{opacity:0;transform:translate(-14px)}}.result-score{font-size:15px;opacity:.85;margin-top:2px}.total-line{display:flex;justify-content:space-between;font-size:18px;font-weight:700;padding:8px 4px 0}.sc{width:100%;border-collapse:collapse;margin-top:10px;font-size:13px;table-layout:fixed}.sc td,.sc th{padding:4px 0;text-align:center;font-weight:600}.sc th{opacity:.6;font-weight:500;font-size:11px}.sc tr.par td{opacity:.7}.sc td.lbl,.sc th.lbl{text-align:left;width:34px;font-size:11px;opacity:.7}.sc td.sum{font-weight:700;color:var(--gold);width:30px}.sc .s{display:inline-grid;place-items:center;width:22px;height:22px}.sc .s.birdie{border:2px solid var(--gold);border-radius:50%;color:var(--gold)}.sc .s.eagle{background:var(--gold);border-radius:50%;color:#4a3200}.sc .s.bogey{border:2px solid #ff9d8a;color:#ffb0a0}.sc .s.worse{background:#c9341a;color:#fff}.sc .s.now{background:#ffffff26;border-radius:6px}.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.stat{background:#ffffff14;border-radius:12px;padding:8px}.stat b{display:block;font-size:20px;color:var(--gold)}.stat span{font-size:11px;opacity:.8;letter-spacing:.5px}.title{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:calc(var(--sat) + 9vh) 18px calc(var(--sab) + 5vh);pointer-events:auto!important;background:linear-gradient(180deg,#0a1e1459,#0a1e1400 35%,#0a1e1400 55%,#0a1e1499)}.logo{text-align:center;text-shadow:0 5px 0 rgba(0,0,0,.3),0 0 40px rgba(0,0,0,.3)}.logo h1{margin:0;font-size:clamp(46px,15vw,96px);line-height:.9;font-weight:700;letter-spacing:1px}.logo h1 span{color:var(--gold)}.logo p{margin:10px 0 0;font-size:15px;letter-spacing:3px;font-weight:600;opacity:.95}.title-actions{width:min(380px,100%)}.title-foot{margin-top:12px;font-size:12px;opacity:.85;text-align:center;letter-spacing:.5px}.title-foot a{color:inherit;pointer-events:auto}.music-toggle{display:block;margin:10px auto 0;padding:8px 14px;background:none;border:1px solid rgba(255,255,255,.35);border-radius:999px;color:var(--cream);font:inherit;font-size:12px;letter-spacing:1px;cursor:pointer;pointer-events:auto}.loading{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:20px;font-weight:700;letter-spacing:3px;z-index:5}.fade{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c1d14;opacity:0;pointer-events:none;transition:opacity .28s;z-index:8}.fade.on{opacity:1}@media (orientation: landscape) and (max-height: 520px){.swing-btn{width:88px;height:88px;font-size:17px}.meter{bottom:calc(var(--sab) + 18px);left:220px;right:130px}.hint,.hint.high{top:calc(var(--sat) + 12px)}#minimap{width:84px;height:84px}.callouts{top:18%}.card{padding:14px}.card.result .sc{display:none}.card.result .bonus{font-size:13px;padding:2px 4px}.card .btn{margin-top:8px;padding:10px 16px}.card h1{font-size:30px}.title{padding-top:calc(var(--sat) + 4vh)}.logo h1{font-size:52px}}@media (min-width: 900px){#minimap{width:150px;height:150px}.hole-pill .big{font-size:20px}}
