*{box-sizing:border-box}body{margin:0;background:#17271e;color:#eee6cb;font-family:Georgia,serif}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{cursor:pointer;font:11px monospace}header{max-width:1260px;margin:auto;height:76px;display:flex;align-items:center;gap:20px;padding:0 22px;border-bottom:1px solid #3b4a35}.logo{font:bold 16px monospace;letter-spacing:1px}.beta{font:8px monospace;letter-spacing:1px;background:#394730;color:#c2d391;border:1px solid #5b6842;padding:6px 9px;border-radius:4px}header button{margin-left:auto;background:none;color:#c4cea8;border:1px solid #546345;border-radius:4px;padding:9px 12px}main{max-width:1216px;margin:auto}.village-title{display:flex;justify-content:space-between;align-items:center;padding:26px 0 22px}.village-title h1{font-weight:normal;font-size:31px;margin:0 0 7px}.village-title p{font:11px Arial;color:#92a484;margin:0}.village-title>span{font:10px monospace;color:#96a684}.village-title b{color:#e1c37b;font-weight:normal}.world-shell{border:4px solid #576346;border-radius:8px;overflow:hidden;box-shadow:0 15px 50px #0004}.viewport{position:relative;aspect-ratio:3/2;background:#6a9e4a;overflow:hidden}canvas{display:block;width:100%;height:100%;image-rendering:pixelated;touch-action:none;outline-offset:-5px}.location{position:absolute;top:17px;left:17px;background:#233b2be6;border:1px solid #d8d1a078;padding:10px 13px;font:9px monospace;letter-spacing:1px;pointer-events:none}.location i{display:inline-block;width:5px;height:5px;background:#d7e695;margin-right:6px}#hint{position:absolute;bottom:17px;left:50%;transform:translateX(-50%);background:#203329e8;color:#fff4c7;font:9px monospace;white-space:nowrap;padding:10px 14px;border:1px solid #b3c48870;pointer-events:none;border-radius:3px}.map-footer{background:#2c402c;display:flex;justify-content:space-between;padding:13px 17px;font:8px monospace;color:#8fa57b}.map-footer b{color:#e0dfb1;margin-left:5px}.dpad{position:absolute;bottom:62px;left:18px;display:grid;grid-template-columns:repeat(3,34px);grid-template-rows:repeat(2,34px);gap:3px;opacity:.9}.dpad button,.meet{background:#f5ebcfe8;border:2px solid #4c6040;color:#304c2c;font:bold 18px monospace;touch-action:none;user-select:none}.dpad button:first-child{grid-column:2}.dpad button:nth-child(2){grid-row:2;grid-column:1}.dpad button:nth-child(3){grid-row:2;grid-column:2}.dpad button:nth-child(4){grid-row:2;grid-column:3}.meet{position:absolute;bottom:66px;right:20px;font:10px monospace;padding:12px}.dialog{position:absolute;bottom:61px;left:8%;width:84%;background:#fbf0cd;border:4px double #4e5332;box-shadow:0 8px 0 #25352555;padding:19px 23px;z-index:3}#speaker{font:bold 13px monospace;color:#6e5226}.dialog p{font:14px/1.6 monospace;color:#3d4a2e}.dialog button{display:block;margin-left:auto;background:none;border:0;font:10px monospace;color:#86723d}footer{display:flex;justify-content:space-between;padding:23px 0;color:#708267;font:8px monospace}#loader{position:fixed;inset:0;z-index:30;background:radial-gradient(ellipse at center,#34402a,#132019 70%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transition:opacity .5s}.load-brand{font:12px monospace;letter-spacing:4px;color:#d4bf80}.load-egg{position:relative;width:230px;height:285px;margin:30px 0 12px;filter:drop-shadow(0 14px 22px #0006)}.load-egg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%;clip-path:ellipse(44% 48% at 50% 50%)}.load-egg .half{opacity:0;transition:transform .9s ease,opacity .1s}.load-egg .left{clip-path:polygon(0 0,48% 0,55% 18%,46% 26%,54% 36%,42% 45%,53% 54%,44% 63%,54% 71%,47% 81%,57% 91%,50% 100%,0 100%)}.load-egg .right{clip-path:polygon(48% 0,100% 0,100% 100%,50% 100%,57% 91%,47% 81%,54% 71%,44% 63%,53% 54%,42% 45%,54% 36%,46% 26%,55% 18%)}.load-egg svg{position:absolute;inset:0;width:100%;height:100%}#crack-line{fill:none;stroke:#372315;stroke-width:5;stroke-linejoin:round;stroke-dasharray:500;stroke-dashoffset:500}.load-egg.open .whole{opacity:0}.load-egg.open .half{opacity:1}.load-egg.open .left{transform:translate(-72px,22px) rotate(-24deg)}.load-egg.open .right{transform:translate(72px,22px) rotate(24deg)}.load-egg.open svg{opacity:0}#loader h1{font-weight:normal;font-size:28px;margin:10px 0}#loader p{font:11px Arial;color:#a4b190;margin:7px 0 20px}.load-track{width:220px;height:4px;background:#516042;margin-bottom:12px}.load-track span{display:block;width:0;height:100%;background:#e3bd70;transition:width .12s linear}#load-number{font:14px monospace;color:#e5c880}#loader small{font:8px monospace;color:#7d9270;letter-spacing:2px;margin-top:28px}#retry-load{background:#e5c880;padding:10px 20px;border:0;margin:12px}body.loading{overflow:hidden}#arcade-modal{position:fixed;inset:0;background:#07130ddb;z-index:20;display:flex;align-items:center;justify-content:center;padding:20px}.arcade-window{width:min(1000px,100%);background:#132219;border:3px solid #839461;border-radius:9px;overflow:hidden;box-shadow:0 20px 80px #0009}.arcade-title{display:flex;justify-content:space-between;align-items:center;padding:14px 17px;font:12px monospace;color:#efe5c3;background:#2b3f2b}.arcade-title small{display:block;font:8px monospace;color:#aabd88;margin-top:5px}.arcade-title button{border:1px solid #70835a;background:#374e32;color:#e9e9c9;padding:9px}iframe{display:block;width:100%;height:min(65vh,560px);border:0;background:#15101d}.arcade-window>p{text-align:center;font:10px monospace;padding:4px 15px;color:#8da77b}button:focus-visible,a:focus-visible{outline:3px solid #f0cc70;outline-offset:3px}[hidden]{display:none!important}@media(max-width:1270px){main{margin:0 3%}}@media(max-width:650px){header{height:62px;padding:0 12px;gap:10px}.logo{font-size:12px}.beta{font-size:6px;padding:5px}.village-title{display:block;padding:21px 0 17px}.village-title h1{font-size:27px}.village-title>span{display:block;margin-top:11px;font-size:9px}.viewport{aspect-ratio:3/4}.location{font-size:7px;top:10px;left:10px}#hint{font-size:7px;white-space:normal;text-align:center;width:90%;bottom:12px}.map-footer{font-size:7px;padding:12px}.map-footer>span:last-child{display:none}.dialog{left:4%;width:92%;padding:13px}.dialog p{font-size:11px}#speaker{font-size:10px}footer{font-size:6px;gap:15px}.load-egg{width:190px;height:235px}.arcade-title{font-size:9px;padding:12px}.arcade-title button{font-size:8px}#arcade-modal{padding:10px}iframe{height:68vh}.arcade-window>p{font-size:8px}}@media(prefers-reduced-motion:reduce){#loader,.load-egg .half{transition:none}}

/* A single pixel-RPG visual language across the world. */
body,button,h1,h2,p{font-family:'Courier New',monospace}header{border-bottom:3px solid #4d613e}.logo{display:flex;align-items:center;gap:9px;letter-spacing:-.5px;font:bold 18px 'Courier New',monospace}.logo-egg{width:32px;height:40px;object-fit:contain;image-rendering:pixelated}.village-title h1{font:bold 29px 'Courier New',monospace;letter-spacing:-1px}.village-title p{font:10px 'Courier New',monospace}.world-shell,.beta,header button,.location,#hint,.find-arcade,.arcade-window{border-radius:0;box-shadow:3px 3px 0 #0e1b12}.find-arcade{background:#e5c77f;color:#33442b;border:3px solid #8d743b;padding:9px 18px;font:bold 12px monospace;box-shadow:inset 0 0 0 2px #ffe8a9,4px 4px #0c1d13;text-align:left}.find-arcade small{display:block;font:8px monospace;letter-spacing:1px;margin-top:4px}.pixel-house{float:left;font:29px monospace;margin-right:11px}.find-arcade:hover{background:#f6dca0}.load-egg img{object-fit:contain;border-radius:0;image-rendering:pixelated}.load-egg .whole{clip-path:none}.load-brand{font:bold 19px monospace;letter-spacing:1px}#loader h1{font:bold 23px monospace}#loader p{font:10px monospace}.arcade-title{border-bottom:3px solid #576b42}.arcade-window>p{font-family:monospace}.arcade-window iframe{background:#dce8cf}@media(max-width:650px){.logo{font-size:13px}.logo-egg{width:25px;height:31px}.village-title h1{font-size:25px}.find-arcade{margin-top:15px;padding:8px 12px;font-size:11px}}

.field-guide{padding:35px 0 10px}.guide-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.guide-heading>div>span{font:8px monospace;letter-spacing:1.5px;color:#a8bc87}.guide-heading h2{font:bold 22px monospace;color:#ede3c0;margin:10px 0}.guide-heading p{font:11px monospace;color:#899f79;margin:0}.guide-heading>strong{padding:9px 12px;border:2px solid #617549;color:#e8ce8b;font:10px monospace;box-shadow:3px 3px #0c1b10}#character-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.creature-card{padding:0;text-align:left;border:2px solid #526b41;background:#f1e8c9;box-shadow:4px 4px #0e1d12;transition:transform .15s;color:#35472b}.creature-card:hover{transform:translateY(-3px);border-color:#d8bd74}.creature-art{height:171px;position:relative;display:flex;align-items:center;justify-content:center;border-bottom:2px solid #b3bf8e;background:repeating-conic-gradient(#d8e0b8 0 25%,#dce4bf 0 50%) 0 / 16px 16px}.guide-sprite{width:105px;height:140px;background-image:url('assets/creatures.png');background-size:400% 200%;image-rendering:pixelated}.entry-number{position:absolute;top:11px;left:10px;font:8px monospace;color:#69734b}.entry-status{position:absolute;top:9px;right:9px;background:#405735;color:#f0e4b2;padding:4px 6px;font:7px monospace}.entry-copy{padding:16px}.entry-copy small{font:7px monospace;letter-spacing:.5px;color:#9b7c36}.entry-copy h3{font:bold 16px monospace;letter-spacing:-.6px;margin:9px 0}.entry-copy p{font:10px/1.6 monospace;color:#788058;min-height:48px;margin:0}.entry-link{display:block;border-top:1px solid #c3c79e;margin-top:12px;padding-top:10px;font:7px monospace;letter-spacing:.6px;color:#807545}@media(max-width:900px){#character-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){.field-guide{padding-top:27px}.guide-heading{gap:15px}.guide-heading h2{font-size:16px}.guide-heading p{font-size:9px}.guide-heading>strong{white-space:nowrap;font-size:8px;padding:7px}.guide-heading>div>span{font-size:6px}#character-grid{gap:12px}.creature-art{height:148px}.entry-copy{padding:12px}.entry-copy h3{font-size:13px}.entry-copy p{font-size:9px}.guide-sprite{width:90px;height:120px}}@media(prefers-reduced-motion:reduce){.creature-card{transition:none}}
/* Warm field-journal surrounds, with habitat-colored specimen windows. */
body{background-color:#eee4c7;background-image:linear-gradient(90deg,#bca77312 1px,transparent 1px),linear-gradient(#bca77312 1px,transparent 1px);background-size:24px 24px;color:#34462e}header{max-width:none;background:#263e2e;color:#f4e7b7;padding-left:max(3%,calc((100% - 1216px)/2));padding-right:max(3%,calc((100% - 1216px)/2));border-bottom:4px solid #b69a58}.village-title{padding-top:30px}.village-title p{color:#68734a}.world-shell{border:5px solid #52633a;box-shadow:0 0 0 3px #d6c795,6px 7px 0 #b4aa80}.field-guide{margin-top:30px;padding:25px 0 10px;border-top:3px double #b8a775}.guide-heading h2{color:#34462e}.guide-heading>div>span,.guide-heading p{color:#6a754d}.guide-heading>strong{background:#e1d5ad;color:#405735;box-shadow:3px 3px #b8a775}.creature-card{border:2px solid #71804d;background:#fff5d7;box-shadow:4px 4px #c4b990}.creature-card:hover{border-color:#486436;box-shadow:4px 7px #afa377}.creature-art{height:172px;isolation:isolate;overflow:hidden;background:linear-gradient(#c9deb7 0 70%,#9fb780 70% 74%,#b7c994 74%);border-bottom:3px solid #9bab77}.creature-art:after{content:'';position:absolute;bottom:13px;width:85px;height:9px;background:#47634325;z-index:-1}.creature-card:nth-child(3) .creature-art{background:linear-gradient(#e3c992 0 70%,#b79e67 70% 74%,#d5bc86 74%)}.creature-card:nth-child(4) .creature-art{background:linear-gradient(#ded8bb 0 70%,#b0be88 70% 74%,#c5cf9c 74%)}.creature-card:nth-child(5) .creature-art{background:linear-gradient(#c2d9d1 0 70%,#90b6a6 70% 74%,#abc5b6 74%)}.creature-card:nth-child(n+7) .creature-art{background:linear-gradient(#c2e0d7 0 70%,#84b5b0 70% 74%,#a1cbc1 74%)}.guide-sprite{background:none;width:128px;height:130px;overflow:hidden;image-rendering:pixelated;position:relative;z-index:1}.entry-copy{padding:15px 16px}.entry-copy p{min-height:32px;color:#67714b}.entry-number{color:#536640}.entry-copy small{color:#876730}.entry-link{color:#677044}footer{color:#69744d;padding:25px 0 30px}@media(max-width:650px){.village-title{padding-top:20px}.guide-sprite{width:108px;height:114px}.creature-art{height:150px}.field-guide{margin-top:23px}.entry-copy{padding:12px}.entry-copy p{min-height:44px}header .beta{max-width:75px;text-align:center}.guide-heading h2{line-height:1.3}}

/* Original photo, with CSS shell outlines so both halves split cleanly. */
.load-egg{width:260px;height:285px}.load-egg img,.logo-egg{object-fit:fill;image-rendering:auto}.load-egg .whole,.logo-egg{clip-path:polygon(50% 5%,43% 5.3%,36% 8%,29% 13%,23% 21%,18% 31%,15% 42%,14.2% 53%,15% 64%,18% 75%,24% 84%,32% 90%,41% 93%,50% 93.5%,59% 92%,68% 88%,75% 81%,80% 71%,83% 60%,84% 48%,82% 36%,78% 25%,72% 16%,65% 9%,58% 5.8%)}.load-egg .left{clip-path:polygon(50% 5%,43% 5.3%,36% 8%,29% 13%,23% 21%,18% 31%,15% 42%,14.2% 53%,15% 64%,18% 75%,24% 84%,32% 90%,41% 93%,50% 93.5%,50% 93.5%,57% 86%,47% 76%,54% 67%,44% 59%,53% 51%,42% 42%,54% 34%,46% 24%,55% 17%,50% 5%)}.load-egg .right{clip-path:polygon(50% 93.5%,57% 86%,47% 76%,54% 67%,44% 59%,53% 51%,42% 42%,54% 34%,46% 24%,55% 17%,50% 5%,58% 5.8%,65% 9%,72% 16%,78% 25%,82% 36%,84% 48%,83% 60%,80% 71%,75% 81%,68% 88%,59% 92%)}.logo-egg{width:43px;height:47px}#crack-line{stroke-width:3}@media(max-width:650px){.load-egg{width:215px;height:235px}.logo-egg{width:32px;height:35px}.logo{font-size:12px}}
/* The PNG supplies the shell silhouette; clip only the opening seam. */
.load-egg .whole,.logo-egg{clip-path:none}.load-egg .left{clip-path:polygon(0 0,48% 0,55% 18%,46% 26%,54% 36%,42% 45%,53% 54%,44% 63%,54% 71%,47% 81%,57% 91%,50% 100%,0 100%)}.load-egg .right{clip-path:polygon(48% 0,100% 0,100% 100%,50% 100%,57% 91%,47% 81%,54% 71%,44% 63%,53% 54%,42% 45%,54% 36%,46% 26%,55% 18%)}

/* Flappy Egg lives on the page, ahead of the village. */
#arcade-modal{position:relative;inset:auto;z-index:auto;display:block;padding:0;margin:0 0 34px;background:none;scroll-margin-top:16px}.arcade-window{width:100%;border:4px solid #52633a;box-shadow:5px 6px #b4aa80;border-radius:0}.arcade-title{font-weight:bold;font-size:16px}.arcade-window iframe{height:540px}.arcade-window>p{color:#d4dfbb;padding:8px 12px;margin:0}#world{scroll-margin-top:16px}@media(max-width:650px){.arcade-title{font-size:12px}.arcade-window iframe{height:570px}.arcade-title button{font-size:9px}}

.village-title .village-motto{font-size:12px;line-height:1.8;margin-top:10px;color:#65734c}.village-motto strong{font-size:14px;color:#34462e}@media(max-width:650px){.village-title .village-motto{font-size:11px}.village-motto strong{font-size:13px}}

.coming-soon{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:0 0 34px}.soon-card{padding:22px;background:#e1d8b7;border:3px solid #71804d;box-shadow:4px 4px #b4aa80}.soon-label{display:inline-block;background:#405735;color:#f6e9bd;padding:6px 9px;font:bold 9px monospace;letter-spacing:1px}.soon-card h2{font:bold 20px 'Courier New',monospace;color:#34462e;margin:16px 0 8px}.soon-card p{font:12px/1.6 'Courier New',monospace;color:#65734c;margin:0}@media(max-width:650px){.coming-soon{grid-template-columns:1fr;gap:13px}.soon-card{padding:18px}.soon-card h2{font-size:18px}}

.world-teaser{padding:22px 24px;background:#f1e8c9;border-bottom:3px solid #52633a;color:#34462e}.world-teaser>span{font:bold 9px monospace;letter-spacing:1.5px;color:#6b7547}.world-teaser h2{font:bold 20px monospace;margin:10px 0}.world-teaser p{font:12px/1.7 monospace;margin:0;color:#65734c}@media(max-width:650px){.world-teaser{padding:18px}.world-teaser h2{font-size:17px}.world-teaser p{font-size:11px}}
.whack-game{margin:0 0 34px;border:4px solid #52633a;background:#f1e8c9;box-shadow:5px 6px #b4aa80}.whack-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px}.whack-heading h2{font:bold 25px monospace;margin:12px 0 8px}.whack-heading p,.whack-help,#whack-status{font:12px/1.6 monospace;color:#566740}.whack-actions{display:flex;gap:8px;flex-wrap:wrap}.whack-actions button{padding:12px;border:2px solid #7c713d;background:#e5c77f;color:#34462e;font:bold 12px monospace}.whack-stats{display:flex;justify-content:space-around;padding:15px 8px;background:#304a32;color:#ebdfb6;font:10px monospace}.whack-stats b{font-size:19px;color:#ffe49a;margin-left:5px}.whack-board{display:grid;grid-template-columns:repeat(3,1fr);gap:15px 28px;max-width:720px;margin:auto;padding:28px;background:repeating-linear-gradient(0deg,#a7bb7e 0 12px,#adbf85 12px 24px)}.whack-hole{position:relative;height:135px;border:0;border-radius:0;background:transparent;overflow:hidden;touch-action:manipulation}.whack-hole:before{content:'';position:absolute;bottom:4px;left:5%;width:90%;height:35px;border-radius:50%;background:#3d3325;box-shadow:0 5px #798452,inset 0 5px #29291e}.whack-target{position:absolute;inset:0 10% 15px;transform:translateY(130%);transition:transform .12s ease;pointer-events:none}.whack-target img,.whack-target svg{width:100%;height:100%;object-fit:contain;overflow:hidden;filter:drop-shadow(2px 3px 0 #323c2344)}.whack-hole.up .whack-target{transform:translateY(0)}.whack-hole.hit .whack-target{transform:translateY(30%) rotate(24deg);opacity:.4}.whack-pop{position:absolute;inset:40% 0 auto;font:bold 13px monospace;color:#fff1b7;text-shadow:1px 2px #3d3325;pointer-events:none}.hole-number{position:absolute;bottom:10px;left:47%;color:#d3bd85;font:9px monospace;pointer-events:none}#whack-status{padding:16px 20px 0;margin:0;min-height:48px}.whack-help{padding:6px 20px 16px;margin:0;font-size:10px}@media(max-width:650px){.whack-heading{display:block;padding:18px}.whack-actions{margin-top:14px}.whack-board{gap:9px;padding:18px 10px}.whack-hole{height:108px}.whack-stats{font-size:8px}.whack-stats b{font-size:16px}.whack-pop{font-size:10px}}@media(prefers-reduced-motion:reduce){.whack-target{transition:none}}
/* A mallet strike, then the actual target splits along a jagged seam. */
.whack-hole{cursor:crosshair}.whack-target img,.whack-target .shell-crack{position:absolute;inset:0;width:100%;height:100%}.whack-target .shell-left,.whack-target .shell-right{opacity:0}.shell-left{clip-path:polygon(0 0,50% 0,43% 20%,56% 32%,44% 46%,57% 59%,46% 73%,54% 85%,50% 100%,0 100%)}.shell-right{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,54% 85%,46% 73%,57% 59%,44% 46%,56% 32%,43% 20%)}.shell-crack{opacity:0;filter:none!important}.shell-crack path{fill:none;stroke:#422510;stroke-width:2;stroke-linejoin:round;stroke-dasharray:160;stroke-dashoffset:160}.whack-hole.hit .whack-target{transform:translateY(0);opacity:1;transition:none}.hit .shell-whole{animation:shell-vanish .75s forwards}.hit .shell-left{animation:shell-split-left .65s .1s both}.hit .shell-right{animation:shell-split-right .65s .1s both}.hit .shell-crack{animation:crack-visible .2s both}.hit .shell-crack path{animation:crack-draw .13s forwards}.shell-chip{position:absolute;left:50%;top:40%;width:8px;height:10px;background:#efbc7d;clip-path:polygon(0 0,100% 25%,70% 100%,10% 70%);opacity:0}.hit .shell-chip{animation:chip-scatter .55s .1s both}.chip-one{--dx:-40px;--dy:-24px}.chip-two{--dx:42px;--dy:-15px}.chip-three{--dx:12px;--dy:-40px}.whack-hammer{position:absolute;right:7%;top:3%;width:56px;height:85px;z-index:4;pointer-events:none;opacity:0;transform:rotate(30deg);transform-origin:70% 90%}.hammer-handle{position:absolute;top:22px;left:29px;width:12px;height:57px;background:#ac703a;border:3px solid #4b3021;box-shadow:inset 3px 0 #d8a85f}.hammer-head{position:absolute;left:3px;top:4px;width:53px;height:29px;background:#8c9f9b;border:4px solid #30463d;box-shadow:inset 0 5px #c7d5c7,3px 3px #24392a44}.whack-hole:hover .whack-hammer,.whack-hole:focus-visible .whack-hammer{opacity:1}.whack-hole.swing .whack-hammer{animation:hammer-strike .28s ease-out both}.whack-pop{z-index:5;top:63%}.whack-board.paused *{animation-play-state:paused!important}@keyframes hammer-strike{0%{opacity:1;transform:translate(5px,-10px) rotate(45deg)}40%{opacity:1;transform:translate(-12px,20px) rotate(-35deg)}100%{opacity:0;transform:translate(6px,-10px) rotate(25deg)}}@keyframes shell-vanish{0%,13%{opacity:1}14%,100%{opacity:0}}@keyframes shell-split-left{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(-32px,50px) rotate(-32deg)}}@keyframes shell-split-right{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(32px,50px) rotate(32deg)}}@keyframes crack-draw{to{stroke-dashoffset:0}}@keyframes crack-visible{0%,70%{opacity:1}100%{opacity:0}}@keyframes chip-scatter{0%{opacity:1;transform:translate(0,0)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(160deg)}}@media(prefers-reduced-motion:reduce){.hit .shell-chip{display:none}.hit .shell-left,.hit .shell-right{animation:none}.hit .shell-whole{animation:none;opacity:.4}.hit .shell-crack{animation:none;opacity:1}.hit .shell-crack path{animation:none;stroke-dashoffset:0}.whack-hole.swing .whack-hammer{animation:none;opacity:1;transform:rotate(-25deg)}}

/* Sculpted arcade mallet with an egg-stamped steel head. */
.whack-hammer{width:84px;height:109px;right:1%;top:-2%;transform-origin:52% 90%;filter:drop-shadow(3px 4px 1px #25361e55)}.mallet-art{width:100%;height:100%;overflow:visible}.mallet-impact{position:absolute;width:54px;height:54px;top:5px;left:15px;background:#fff0a5;clip-path:polygon(50% 0,59% 32%,85% 12%,71% 41%,100% 50%,70% 59%,87% 86%,59% 70%,50% 100%,41% 70%,12% 87%,30% 59%,0 50%,30% 41%,12% 12%,41% 32%);opacity:0;z-index:-1}.swing .mallet-impact{animation:mallet-flash .32s ease-out both}@keyframes hammer-strike{0%{opacity:1;transform:translate(13px,-13px) rotate(48deg)}38%{opacity:1;transform:translate(-23px,23px) rotate(-44deg)}52%{opacity:1;transform:translate(-20px,19px) rotate(-37deg)}78%{opacity:1;transform:translate(3px,-6px) rotate(10deg)}100%{opacity:0;transform:translate(9px,-10px) rotate(25deg)}}@keyframes mallet-flash{0%,28%{opacity:0;transform:scale(.4)}40%{opacity:.9;transform:scale(1.1)}100%{opacity:0;transform:scale(1.5)}}.whack-hole.swing .whack-hammer{animation-duration:.32s}@media(max-width:650px){.whack-hammer{width:68px;height:88px;right:-2%}}@media(prefers-reduced-motion:reduce){.swing .mallet-impact{animation:none;opacity:.6}}
/* Rapid taps should hit eggs without selecting or dragging their artwork. */
.whack-board,.whack-board *{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.whack-target img{-webkit-user-drag:none}.whack-board ::selection{background:transparent}.whack-hole:focus:not(:focus-visible){outline:none}

/* Five holes: three above, two centered below. */
.whack-board{grid-template-columns:repeat(6,minmax(0,1fr))}.whack-hole{grid-column:span 2}.whack-hole:nth-child(4){grid-column:2 / span 2}.whack-hole:nth-child(5){grid-column:4 / span 2}#whack-lives{color:#ffaaa0;letter-spacing:3px;white-space:nowrap}.whack-stats{flex-wrap:wrap;gap:12px}@media(max-width:650px){.whack-stats{justify-content:center;gap:12px 18px}#whack-lives{letter-spacing:1px}}

.whack-arena{position:relative;background:#adbf85}.whack-result{position:absolute;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;background:#18291cd9;padding:16px;animation:result-fade .25s ease-out}.whack-result-card{width:min(360px,100%);text-align:center;padding:24px;background:#f3e6be;border:4px solid #52633a;box-shadow:6px 6px #101b15;animation:result-pop .45s ease-out}.whack-result-card h3{font:bold 30px monospace;color:#733e2d;margin:13px 0}.whack-result-card p{font:12px/1.7 monospace;color:#4b5937}.whack-result-card button{background:#e5c77f;color:#34462e;border:3px solid #7c713d;padding:12px 22px;font:bold 13px monospace}.broken-heart{position:relative;width:70px;height:65px;margin:0 auto 12px;display:none}.no-hearts .broken-heart{display:block}.broken-heart span{position:absolute;inset:0;font:65px/1 Georgia;color:#d56853;text-shadow:2px 3px #703b2d}.broken-heart span:first-child{clip-path:polygon(0 0,50% 0,43% 30%,57% 45%,43% 60%,53% 80%,50% 100%,0 100%);animation:heart-break-left .7s .15s both}.broken-heart span:last-child{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,53% 80%,43% 60%,57% 45%,43% 30%);animation:heart-break-right .7s .15s both}@keyframes result-fade{from{opacity:0}to{opacity:1}}@keyframes result-pop{from{opacity:0;transform:translateY(16px) scale(.9)}to{opacity:1;transform:none}}@keyframes heart-break-left{0%,25%{transform:none}45%{transform:translate(-3px,0)}100%{transform:translate(-12px,5px) rotate(-18deg)}}@keyframes heart-break-right{0%,25%{transform:none}45%{transform:translate(3px,0)}100%{transform:translate(12px,5px) rotate(18deg)}}@media(max-width:650px){.whack-result-card{padding:12px}.whack-result-card h3{font-size:23px;margin:8px 0}.broken-heart{height:48px;width:52px;margin-bottom:5px}.broken-heart span{font-size:48px}.whack-result-card p{font-size:11px}}@media(prefers-reduced-motion:reduce){.whack-result,.whack-result-card,.broken-heart span{animation:none!important}}
/* Make the village motto a prominent statement above the games. */
.village-title{flex-wrap:wrap;gap:20px;align-items:center}.village-title>div{flex:1;min-width:0}.village-title .village-motto{display:block;background:#304a32;color:#f6e9c2;border:3px solid #8d9b64;box-shadow:4px 4px #c1b280;padding:17px 20px;margin-top:17px;font:bold clamp(14px,1.7vw,19px)/1.65 'Courier New',monospace;max-width:770px}.village-title .village-motto strong{display:inline-block;color:#ffe39a;font:bold clamp(20px,2.5vw,29px)/1.3 'Courier New',monospace;margin-top:7px;letter-spacing:-.6px}.village-title .find-arcade{flex-shrink:0}@media(max-width:650px){.village-title .village-motto{font-size:14px;padding:14px 15px;margin-top:14px}.village-title .village-motto strong{font-size:22px;line-height:1.4}.village-title .find-arcade{margin-top:19px}}

.village-disclaimer{margin:30px 0 0;padding:24px;background:#e4dbbc;border-top:3px double #81905d;color:#53613e}.village-disclaimer h2{font:bold 17px monospace;margin:0 0 15px;color:#34462e}.village-disclaimer p{font:12px/1.8 monospace;margin:12px 0}.village-disclaimer strong{color:#34462e}@media(max-width:650px){.village-disclaimer{padding:18px}.village-disclaimer p{font-size:11px}.village-title .village-motto strong{overflow-wrap:break-word}}
