:root{--bg:#17120e;--soil:#241c15;--hole:#0d0a08;--rim:#2f251b;--fur:#c98b4b;--fur-lit:#e8a862;--pip:#d8b487;--pip-spent:#3a2e23;--loss-slow:#6fa8c7;--loss-wrong:#e0603f;--ink:#6b5843;--cell:clamp(84px, 28vmin, 200px)}*{box-sizing:border-box}body{background:radial-gradient(120% 90% at 50% 8%, #221a13 0%, var(--bg) 70%);min-height:100dvh;color:var(--ink);touch-action:manipulation;-webkit-user-select:none;user-select:none;flex-direction:column;justify-content:center;align-items:center;gap:clamp(16px,3vh,32px);margin:0;font:500 16px/1.4 ui-rounded,Segoe UI,system-ui,sans-serif;display:flex;overflow:hidden}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chrome{position:fixed;top:max(12px,2vh);left:max(14px,2vw)}.wordmark{letter-spacing:.14em;text-transform:lowercase;color:#4a3c2e;margin:0;font-size:13px;font-weight:600}.lives{justify-content:center;gap:10px;height:14px;display:flex}.pip{background:var(--pip);border-radius:50%;width:14px;height:14px;transition:background-color .22s,transform .22s}.pip.is-spent{background:var(--pip-spent);transform:scale(.72)}.field{grid-template-columns:repeat(3, var(--cell));grid-template-rows:repeat(3, var(--cell));gap:clamp(8px,1.6vmin,18px);display:grid}.hole{cursor:default;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0;position:relative;overflow:hidden}.hole:before{content:"";background:radial-gradient(70% 100% at 50% 30%, var(--hole) 0%, var(--soil) 100%);border-radius:50%;position:absolute;inset:22% 8% 8%;box-shadow:inset 0 6px 12px #000000a6}.hole:focus-visible{outline:2px solid var(--fur);outline-offset:3px}.target{aspect-ratio:1;background:var(--fur);will-change:transform;transition:transform .13s cubic-bezier(.2,.9,.3,1.3),opacity .13s;position:absolute;bottom:6%;left:16%;right:16%;transform:translateY(115%)}.hole.is-mole .target{border-radius:50% 50% 38% 38%/62% 62% 38% 38%}.hole.is-mole .target:before,.hole.is-mole .target:after{content:"";aspect-ratio:1;background:inherit;border-radius:50%;width:36%;position:absolute;top:-4%}.hole.is-mole .target:before{left:-8%}.hole.is-mole .target:after{right:-8%}.hole.is-decoy .target{clip-path:polygon(50% 0%,62% 20%,85% 15%,80% 38%,100% 50%,80% 62%,85% 85%,62% 80%,50% 100%,38% 80%,15% 85%,20% 62%,0% 50%,20% 38%,15% 15%,38% 20%)}.hole.is-up .target{transform:translateY(0)}.hole.is-up{cursor:pointer}@media (hover:hover){.hole.is-up:hover .target{background:var(--fur-lit);scale:1.05}}.hole.is-struck .target{opacity:.35;transform:translateY(38%)scaleY(.62)scaleX(1.16)}.hole.is-armed .target{animation:1.7s ease-in-out infinite breathe}.hole.is-armed.is-beckon .target{animation:1.1s ease-in-out infinite beckon}.hole.is-armed:after{content:"";border-radius:50%;animation:1.7s ease-out infinite halo;position:absolute;inset:30% 14% 10%;box-shadow:0 0 #c98b4b73}@keyframes breathe{0%,to{transform:translateY(0)}50%{transform:translateY(-5%)}}@keyframes beckon{0%,to{transform:translateY(0)rotate(0)}30%{transform:translateY(-15%)rotate(-5deg)}60%{transform:translateY(-11%)rotate(5deg)}}@keyframes halo{0%{box-shadow:0 0 #c98b4b66}to{box-shadow:0 0 0 1.4em #c98b4b00}}.mark{opacity:0;pointer-events:none;position:absolute;inset:18% 20% 14%}.mark.is-retreat{background:var(--loss-slow);clip-path:polygon(50% 100%,0% 34%,22% 20%,50% 62%,78% 20%,100% 34%);animation:.9s ease-out forwards sink}.mark.is-decoy{background:var(--loss-wrong);clip-path:polygon(50% 0%,63% 30%,96% 22%,74% 50%,96% 78%,63% 70%,50% 100%,37% 70%,4% 78%,26% 50%,4% 22%,37% 30%);animation:.9s cubic-bezier(.3,1.4,.5,1) forwards recoil}@keyframes sink{0%{opacity:.95;transform:translateY(-18%)}to{opacity:0;transform:translateY(34%)}}@keyframes recoil{0%{opacity:1;transform:scale(.5)rotate(-14deg)}35%{opacity:1;transform:scale(1.18)rotate(8deg)}to{opacity:0;transform:scale(1)rotate(0)}}body.is-lost .field{filter:grayscale(.7)brightness(.55);transition:filter .7s}body.is-won .field{filter:brightness(1.16)saturate(1.25);transition:filter .7s}body.is-won .hole:before{box-shadow:inset 0 6px 12px #00000073,0 0 1.5em #e8a86259}@media (prefers-reduced-motion:reduce){.hole.is-armed .target,.hole.is-armed.is-beckon .target,.hole.is-armed:after{animation:none}.target{transition-duration:60ms}.mark.is-retreat,.mark.is-decoy{animation-duration:.4s}}
