:root{--ink:#e9eef6;--bg:#12151b;--panel:#171c24;--accent:#62d0ff;--accent2:#9cf3d1;--good:#7cff9c;--warn:#ffd166;--bad:#ff7c7c;--btn-bg:linear-gradient(180deg,#1b2736,#0f1926);--btn-border:#ffffff1f;--canvas-grad-1:#0c1a1b;--canvas-grad-2:#0a1216;--titlebar-h:56px;--titlebar-border:#ffffff14;--bar-ace:#00d084;--bar-alb:#13c7bb;--bar-eagle:#25a36b;--bar-birdie:#7ed957;--bar-par:#94a3b8;--bar-bogey:#f59e0b;--bar-dbogey:#ef4444;--bar-tbogey:#dc2626;--bar-quad:#991b1b;--bar-bg:#ffffff14;--overlay-ink:#eaf1ff;--overlay-sub:#ffffffdb;--overlay-bg-top:#0c121ee0;--overlay-bg-bot:#060a12f0}[data-theme=light]{--ink:#0e1624;--bg:#f3f6fb;--panel:#fff;--accent:#2563eb;--accent2:#22c55e;--good:#22c55e;--warn:#eab308;--bad:#ef4444;--btn-bg:linear-gradient(180deg,#eaeef7,#dfe6f3);--btn-border:#0000001a;--canvas-grad-1:#e8f3ff;--canvas-grad-2:#dfeaf7;--bar-bg:#00000014;--overlay-ink:#eaf1ff;--overlay-sub:#ffffffdb;--overlay-bg-top:#0c121ee0;--overlay-bg-bot:#060a12f0;--titlebar-border:#00000014}[hidden],.modal[hidden]{display:none!important}html,body{height:100%;margin:0;overflow:hidden}body{background:radial-gradient(900px 500px at 70% 0%,#545a6c 0%,var(--bg)70%);color:var(--ink);-webkit-tap-highlight-color:transparent;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;padding-top:var(--titlebar-h);min-height:100vh;margin:0;font:14px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;transition:background-color .25s,color .25s}input,textarea,select,.sg-copy-seed{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}input,textarea,select{font-size:16px}.titlebar{height:var(--titlebar-h);background:var(--bg);border-bottom:1px solid var(--titlebar-border);z-index:100;backdrop-filter:saturate(120%)blur(4px);grid-template-columns:1fr auto;align-items:center;padding:0 12px;display:grid;position:fixed;inset:0 0 auto}.titlebar__left{align-items:center;gap:10px;display:flex}.titlebar__right{align-items:center;gap:8px;display:flex}.brand{letter-spacing:.2px;font-size:18px;font-weight:800}.wrap{width:min(1080px,100vw - 24px);margin:18px auto;position:relative}.panel{backdrop-filter:blur(4px);background:linear-gradient(#ffffff0d,#00000040);border:1px solid #ffffff14;border-radius:14px;padding:12px;transition:background .25s,border-color .25s,box-shadow .25s;box-shadow:0 20px 80px #00000059,inset 0 1px #ffffff0a}[data-theme=light] .panel{background:linear-gradient(#ffffffd9,#fffffff2);border-color:#0000000f;box-shadow:0 10px 40px #0000001a,inset 0 1px #fff9}.toolbar{grid-template-columns:1fr;align-items:center;gap:12px;margin-bottom:10px;display:grid}@media (width>=720px){.toolbar{grid-template-columns:auto 1fr auto}}.btn{background:var(--btn-bg);border:1px solid var(--btn-border);color:var(--ink);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:12px;padding:12px 16px;font-weight:700;transition:filter .15s,background .25s,border-color .25s}.btn:hover{filter:brightness(1.08)}.btn-ghost{border:1px solid var(--btn-border);backdrop-filter:blur(3px);background:0 0}.btn-small{border-radius:10px;padding:8px 12px;font-size:13px}.btn.is-disabled,.btn[disabled]{opacity:.6;cursor:not-allowed;pointer-events:none}.meter{background:#ffffff1a;border-radius:999px;height:12px;overflow:hidden;box-shadow:inset 0 1px 2px #00000080}[data-theme=light] .meter{background:#00000014;box-shadow:inset 0 1px 1px #00000014}.fill{background:linear-gradient(90deg,var(--accent),var(--accent2));width:0%;height:100%;box-shadow:0 0 8px var(--accent);transition:width 40ms linear}.status{opacity:.9;text-align:left}@media (width>=720px){.status{text-align:right}}@media (width<=719.98px){.status{text-align:right;justify-self:end}}canvas{aspect-ratio:16/10;background:linear-gradient(180deg,var(--canvas-grad-1)0%,var(--canvas-grad-2)100%);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none;user-drag:none;border-radius:14px;width:100%;max-height:82vh;transition:background .25s;display:block;box-shadow:inset 0 1px #ffffff0a}@media (pointer:coarse) and (width>=820px){.wrap{width:min(1080px,100vw - 16px)}canvas{aspect-ratio:16/9;max-height:86vh}}@media (pointer:coarse) and (width>=1024px){.wrap{width:min(1200px,100vw - 16px)}}@media (pointer:coarse) and (width<=820px) and (orientation:landscape){html,body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;overflow:auto}canvas{touch-action:none}}.hint{opacity:.7;text-align:center;margin-top:8px;font-size:12px}.banner{opacity:0;visibility:hidden;pointer-events:none;color:var(--overlay-ink);background:linear-gradient(180deg,var(--overlay-bg-top),var(--overlay-bg-bot));text-shadow:0 1px #00000059;text-align:center;z-index:5;backdrop-filter:blur(6px);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border:1px solid #ffffff29;border-radius:16px;min-width:max(50%,280px);max-width:min(92%,560px);padding:16px 20px;transition:opacity .22s,transform .24s cubic-bezier(.2,.8,.2,1),visibility 0s linear .22s;position:absolute;inset:auto 50% 50% auto;transform:translate(50%,50%)scale(.965);box-shadow:0 15px 60px #00000080,inset 0 1px #ffffff0a}.banner.show{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .26s,transform .28s cubic-bezier(.2,.8,.2,1),visibility;transform:translate(50%,50%)scale(1)}.banner .title{color:var(--overlay-ink)}.banner .sub{color:var(--overlay-sub)}.banner .stats{background:#ffffff14!important;border-color:#ffffff29!important}.banner .note{opacity:.85;text-align:center;margin-top:10px;font-size:14px}.banner__close{text-align:center;border:1px solid var(--btn-border);width:28px;height:28px;color:var(--overlay-ink);cursor:pointer;background:0 0;border-radius:8px;line-height:28px;position:absolute;top:8px;right:8px}.stats{text-align:left;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:12px;margin-top:14px;padding:12px}[data-theme=light] .stats{background:#0000000a;border-color:#00000014}.stats h3{letter-spacing:.2px;margin:0 0 8px;font-size:14px;font-weight:800}.dist{grid-template-columns:88px 1fr 40px;align-items:center;gap:8px;font-size:13px;display:grid}.dist .label{opacity:.9}.dist .barWrap{background:var(--bar-bg);border-radius:8px;height:18px;position:relative;overflow:hidden}.dist .bar{border-radius:8px;width:0%;height:100%;transition:width .4s cubic-bezier(.2,.8,.2,1);display:block}.dist .count{text-align:right;font-variant-numeric:tabular-nums;opacity:.9}.bar.ace{background:var(--bar-ace)}.bar.albatross{background:var(--bar-alb)}.bar.eagle{background:var(--bar-eagle)}.bar.birdie{background:var(--bar-birdie)}.bar.par{background:var(--bar-par)}.bar.bogey{background:var(--bar-bogey)}.bar.double-bogey{background:var(--bar-dbogey)}.bar.triple-bogey{background:var(--bar-tbogey)}.bar.quad-plus{background:var(--bar-quad)}.modal{z-index:110;background:#0000006b;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal__card{background:var(--panel);width:min(92vw,520px);color:var(--ink);border:1px solid var(--btn-border);border-radius:14px;overflow:hidden;box-shadow:0 20px 80px #00000073,inset 0 1px #ffffff0a}[data-theme=light] .modal__card{background:var(--panel);border-color:#00000014;box-shadow:0 12px 48px #0000002e}.modal__header{border-bottom:1px solid var(--btn-border);grid-template-columns:1fr auto;align-items:center;padding:12px 14px;display:grid}.modal__header h2{margin:0;font-size:18px}.modal__body{gap:12px;padding:14px;display:grid}.icon-btn{border:1px solid var(--btn-border);width:32px;height:32px;color:var(--ink);cursor:pointer;background:0 0;border-radius:8px;place-items:center;display:grid}#statsModal .modal__card{background:linear-gradient(180deg,var(--overlay-bg-top),var(--overlay-bg-bot));color:var(--overlay-ink);text-shadow:0 1px #00000059;border-color:#ffffff29}#statsModal .modal__header{border-bottom-color:#ffffff29}#statsModal .modal__header h2{color:var(--overlay-ink)}#statsModal .modal__close{color:var(--overlay-ink);border-color:#ffffff29}#statsModal .modal__body{color:var(--overlay-ink)}#statsModal .stats{background:#ffffff14;border-color:#ffffff29}#statsModal .dist .barWrap{background:#ffffff1f}@media (width<=480px){.brand{font-size:16px}.btn-small{padding:6px 10px;font-size:12px}.panel{padding:10px}.toolbar{grid-template-columns:1fr}}.menu-wrap{position:relative}#helpMenu{background:var(--panel,#161616);border:1px solid var(--border,#2a2a2a);z-index:50;border-radius:12px;min-width:220px;padding:6px;display:none;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #00000059}#helpMenu[aria-hidden=false]{display:block}#helpMenu .menu-item{text-align:left;width:100%;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:10px 12px}#helpMenu .menu-item:hover{background:#ffffff0f}.is-disabled{opacity:.6;cursor:not-allowed}.icon-btn{appearance:none;border:1px solid var(--border,#2a2a2a);color:inherit;cursor:pointer;background:0 0;border-radius:10px;padding:6px 10px}.icon-btn:focus{outline:2px solid var(--accent,#4ac08a);outline-offset:2px}.menu,.menu__btn{position:relative}.menu__list{background:var(--panel);color:var(--ink);border:1px solid var(--btn-border);z-index:120;border-radius:12px;min-width:220px;padding:6px;display:none;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 16px 60px #00000059,inset 0 1px #ffffff0a}.menu__list.show{display:block}.menu__item{cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.menu__item:hover{background:#ffffff0f}.menu__label{font-weight:600}.menu__desc{opacity:.8;font-size:12px}.menu__group{opacity:.8;padding:6px 6px 2px;font-size:11px}.menu__sep{background:var(--btn-border);height:1px;margin:6px}#seedModal .modal__body form{gap:10px;display:grid}#seedInput{border:1px solid var(--btn-border);color:var(--ink);background:0 0;border-radius:10px;padding:10px 12px}#modePill{letter-spacing:.3px;border:1px solid var(--btn-border);opacity:.85;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800}.sg-copy-seed{text-overflow:ellipsis!important;white-space:nowrap!important;vertical-align:bottom!important;max-width:160px!important;display:inline-block!important;overflow:hidden!important}@media (width<=480px),(height<=480px){.banner.show{transform:translate(50%,60%)scale(1)}}