/* GnomeGame games — scoped styles that work inside any theme */
.gg-game{--gg-ink:#2B2119;--gg-soft:#54493E;--gg-paper:#F7F9F1;--gg-rule:#C5CFB0;--gg-hat:#C42B2F;--gg-hat-dark:#8E1D22;--gg-moss:#33502C;--gg-moss-deep:#22381D;--gg-gold:#F2C14E;--gg-blue:#2C5AA0;
  --gg-display:"Caprasimo",Georgia,"Times New Roman",serif;
  position:relative;margin:0 0 2rem;max-width:760px;color:var(--gg-ink);font-size:1rem;line-height:1.5}
.gg-game *,.gg-game *::before,.gg-game *::after{box-sizing:border-box}
.gg-game[data-gg="whack"]{max-width:640px}
.gg-game[data-gg="match"]{max-width:560px}
.gg-game[data-gg="memory"]{max-width:600px}
.gg-game[data-gg="find"]{max-width:820px}
.gg-game[data-gg="runner"]{max-width:900px}
.gg-game:not(.gg-ready){min-height:320px;background:var(--gg-moss);border-radius:18px;display:flex;align-items:center;justify-content:center;color:#fff;padding:1rem;text-align:center}
.gg-game svg{max-width:100%;height:auto}
.gg-wrap{position:relative;border-radius:18px;overflow:hidden;background:var(--gg-moss)}
.gg-hud{display:grid;grid-template-columns:repeat(4,auto);justify-content:space-between;align-items:baseline;gap:.2rem .8rem;background:var(--gg-moss-deep);color:#fff;padding:.6rem 1rem;font-size:.98rem}
.gg-stat{display:flex;align-items:baseline;gap:.4rem;white-space:nowrap}
.gg-stat b{font-family:var(--gg-display);font-weight:400;font-size:1.45rem;color:var(--gg-gold);line-height:1}
@media (max-width:480px){.gg-hud{padding:.5rem .7rem;font-size:.85rem}.gg-stat{gap:.25rem}.gg-stat b{font-size:1.2rem}}
.gg-stage{position:relative;touch-action:manipulation;user-select:none;-webkit-user-select:none}
.gg-canvas{display:block;width:100%;height:auto;outline:none;cursor:pointer;touch-action:none}
.gg-canvas:focus-visible{box-shadow:inset 0 0 0 4px var(--gg-gold)}

/* Overlays */
.gg-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:.8rem;background:rgba(26,43,22,.84);z-index:5}
.gg-overlay[hidden]{display:none}
.gg-panel{background:var(--gg-paper);color:var(--gg-ink);border-radius:16px;padding:1.3rem 1.4rem;max-width:430px;width:100%;text-align:center;box-shadow:0 8px 0 rgba(0,0,0,.25);max-height:100%;overflow:auto}
.gg-panel h2{font-family:var(--gg-display);font-weight:400;font-size:1.85rem;line-height:1.1;margin:0 0 .45rem;color:var(--gg-ink)}
.gg-panel p{margin:.3rem 0 .8rem}
.gg-modes{display:flex;justify-content:center;gap:.4rem;flex-wrap:wrap;border:0;padding:0;margin:0 0 1rem}
.gg-modes legend{width:100%;font-size:.92rem;color:var(--gg-soft);margin-bottom:.35rem;padding:0;text-align:center}
.gg-modes label{cursor:pointer;margin:0}
.gg-modes input{position:absolute;opacity:0;pointer-events:none}
.gg-modes span{display:inline-block;padding:.38rem .9rem;border-radius:999px;box-shadow:inset 0 0 0 2px var(--gg-rule);font-size:.98rem}
.gg-modes input:checked+span{background:var(--gg-moss);color:#fff;box-shadow:none}
.gg-modes input:focus-visible+span{outline:3px solid var(--gg-blue);outline-offset:2px}
.gg-final{font-family:var(--gg-display);font-size:3rem;line-height:1;color:var(--gg-hat);margin:.2rem 0 .4rem!important}
.gg-rank{font-weight:700}
.gg-row{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;margin-top:.5rem}
.gg-keys{font-size:.88rem;color:var(--gg-soft);margin-top:.9rem!important;margin-bottom:0!important}
@media (hover:none) and (pointer:coarse){.gg-keys{display:none}}
@media (max-width:480px){.gg-panel{padding:1rem .9rem}.gg-panel h2{font-size:1.5rem}.gg-panel p{margin-bottom:.6rem}.gg-final{font-size:2.4rem}}
.gg-game .gg-btn{display:inline-flex;align-items:center;justify-content:center;font-family:var(--gg-display);font-size:1.15rem;font-weight:400;line-height:1.2;background:var(--gg-hat);color:#fff;border:0;border-radius:999px;padding:.7rem 1.5rem;cursor:pointer;text-decoration:none;box-shadow:0 4px 0 var(--gg-hat-dark);text-transform:none;letter-spacing:0;min-height:0}
.gg-game .gg-btn:hover{background:#B02529;color:#fff}
.gg-game .gg-btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--gg-hat-dark)}
.gg-game .gg-btn.gg-ghost{background:transparent;color:var(--gg-ink);box-shadow:inset 0 0 0 2px var(--gg-ink)}
.gg-game .gg-btn.gg-ghost:hover{background:#fff}
.gg-game .gg-btn:focus-visible,.gg-game .gg-tool:focus-visible{outline:3px solid var(--gg-blue);outline-offset:3px}
.gg-tools{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.6rem;flex-wrap:wrap}
.gg-game .gg-tool{background:transparent;border:2px solid var(--gg-rule);color:var(--gg-ink);border-radius:999px;padding:.28rem .9rem;font:inherit;font-size:.93rem;cursor:pointer;line-height:1.4;text-transform:none;letter-spacing:0;box-shadow:none}
.gg-game .gg-tool:hover{border-color:var(--gg-ink);background:transparent;color:var(--gg-ink)}
.gg-game .gg-tool:disabled{opacity:.5;cursor:default}
.gg-game .gg-tool[hidden]{display:none}
.gg-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.gg-fallback{background:var(--gg-paper);padding:1rem;border-radius:12px;color:var(--gg-ink)}

/* Whack-a-Gnome */
.gg-garden{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(.4rem,2vw,1rem);padding:clamp(.8rem,3vw,1.6rem);
  background:repeating-linear-gradient(90deg,#4F7A33 0 46px,#4A7330 46px 92px)}
.gg-garden.gg-shake{animation:gg-shake .32s linear}
@keyframes gg-shake{25%{transform:translateX(-6px)}50%{transform:translateX(5px)}75%{transform:translateX(-3px)}}
.gg-game .gg-hole{position:relative;aspect-ratio:1/1;border:0;background:transparent;padding:0;margin:0;cursor:pointer;-webkit-tap-highlight-color:transparent;box-shadow:none;border-radius:0;min-height:0;width:100%}
.gg-game .gg-hole:hover,.gg-game .gg-hole:focus{background:transparent}
.gg-hole:focus-visible{outline:3px solid var(--gg-gold);outline-offset:2px;border-radius:12px}
.gg-pit{position:absolute;left:8%;right:8%;bottom:14%;height:24%;border-radius:50%;background:radial-gradient(ellipse at 50% 35%,#1E140D 0 55%,#3A2819 70%)}
.gg-clip{position:absolute;left:0;right:0;top:0;bottom:24%;overflow:hidden;border-radius:0 0 50% 50%/0 0 22% 22%}
.gg-critter{position:absolute;left:18%;width:64%;bottom:0;transform:translateY(105%);transition:transform .14s ease-out}
.gg-critter svg{display:block;width:100%;height:auto}
.gg-hole.gg-up .gg-critter{transform:translateY(8%)}
.gg-hole.gg-hit .gg-critter{transform:translateY(105%);transition-duration:.22s}
.gg-lip{position:absolute;left:3%;right:3%;bottom:6%;height:22%;border-radius:50%;background:radial-gradient(ellipse at 50% 30%,#8A6142 0 40%,#6B4A31 70%);box-shadow:inset 0 5px 0 rgba(255,255,255,.12)}
.gg-pop{position:absolute;left:50%;top:6%;transform:translateX(-50%);font-family:var(--gg-display);font-size:clamp(1rem,3vw,1.45rem);color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.4);pointer-events:none;opacity:0;white-space:nowrap}
.gg-pop.gg-show{animation:gg-float .7s ease-out}
.gg-pop.gg-bad{color:#FFB4B4}
@keyframes gg-float{0%{opacity:1;transform:translate(-50%,10px)}100%{opacity:0;transform:translate(-50%,-26px)}}
.gg-legend{display:flex;flex-wrap:wrap;gap:.5rem 1.4rem;list-style:none;margin:.8rem 0 0!important;padding:0!important;font-size:.98rem}
.gg-legend li{display:flex;align-items:center;gap:.5rem;margin:0!important;list-style:none}
.gg-legend li::before{content:none!important}
.gg-legend svg{width:28px;height:34px;flex:none}

/* Memory */
.gg-cards{display:grid;grid-template-columns:repeat(var(--gg-cols,4),1fr);gap:clamp(.4rem,1.6vw,.75rem);padding:clamp(.7rem,2.5vw,1.2rem);background:repeating-linear-gradient(45deg,#3F6436 0 14px,#3A5D31 14px 28px)}
@media (min-width:700px){.gg-cards{grid-template-columns:repeat(var(--gg-cols-wide,4),1fr)}}
.gg-game .gg-card{position:relative;aspect-ratio:1/1;border:0;padding:0;margin:0;background:transparent;cursor:pointer;perspective:700px;border-radius:12px;box-shadow:none;min-height:0;width:100%}
.gg-game .gg-card:hover,.gg-game .gg-card:focus{background:transparent}
.gg-card:focus-visible{outline:3px solid var(--gg-gold);outline-offset:2px}
.gg-card-in{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .35s ease}
.gg-card.gg-up .gg-card-in{transform:rotateY(180deg)}
.gg-card-back,.gg-card-face{position:absolute;inset:0;border-radius:12px;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.gg-card-back{background:var(--gg-moss-deep);box-shadow:inset 0 0 0 3px #4C6F40,0 3px 0 rgba(0,0,0,.25)}
.gg-card-back svg{width:62%}
.gg-card-face{background:var(--gg-paper);transform:rotateY(180deg);box-shadow:0 3px 0 rgba(0,0,0,.25)}
.gg-card-face svg{width:72%;max-height:78%}
.gg-card.gg-done .gg-card-face{background:#FFF6D8;box-shadow:inset 0 0 0 3px var(--gg-gold),0 3px 0 rgba(0,0,0,.2)}
@media (prefers-reduced-motion:reduce){.gg-card-in{transition:none}.gg-critter{transition:none}.gg-garden.gg-shake{animation:none}.gg-pop.gg-show{animation:none;opacity:1}}

/* Canvas games */
.gg-board .gg-canvas{aspect-ratio:1/1}
.gg-run .gg-canvas{aspect-ratio:16/7}
@media (max-width:560px){.gg-run .gg-canvas{aspect-ratio:4/3}}
.gg-scene .gg-canvas{aspect-ratio:4/3;cursor:crosshair}

/* Bingo */
.gg-bingo-wrap{margin:1rem 0 2rem}
.gg-bingo-tools{display:flex;flex-wrap:wrap;gap:.7rem;margin:0 0 1.2rem;align-items:center}
.gg-game .gg-select{font:inherit;padding:.55rem .9rem;border-radius:999px;border:2px solid var(--gg-ink);background:var(--gg-paper);color:var(--gg-ink)}
.gg-bingo{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));max-width:540px;border:3px solid var(--gg-ink);background:#fff}
.gg-bh{font-family:var(--gg-display);font-size:1.6rem;text-align:center;background:var(--gg-hat);color:#fff;padding:.3rem 0}
.gg-bc{aspect-ratio:1/1;border:1px solid var(--gg-ink);display:flex;align-items:center;justify-content:center;text-align:center;font-size:clamp(.66rem,2.7vw,.9rem);line-height:1.2;padding:.25rem;overflow-wrap:anywhere;hyphens:auto}
.gg-free{background:var(--gg-gold);font-family:var(--gg-display)}

/* Game cards (hub shortcode) */
.gg-hub{list-style:none!important;padding:0!important;margin:1.5rem 0 2rem!important;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem}
.gg-hub li{margin:0!important;list-style:none}
.gg-hub li::before{content:none!important}
.gg-hub a{display:grid;grid-template-columns:64px 1fr;gap:.9rem;align-items:center;padding:1rem;border-radius:16px;background:var(--gg-paper,#F7F9F1);border:2px solid var(--gg-rule,#C5CFB0);color:var(--gg-ink,#2B2119);text-decoration:none;height:100%}
.gg-hub a:hover{border-color:var(--gg-ink,#2B2119)}
.gg-hub .gg-hub-art{width:64px;height:64px;border-radius:14px;background:var(--gg-moss,#33502C);display:flex;align-items:center;justify-content:center}
.gg-hub .gg-hub-art svg{width:44px;height:44px}
.gg-hub strong{display:block;font-family:var(--gg-display,Georgia,serif);font-weight:400;font-size:1.25rem;line-height:1.15}
.gg-hub span.gg-hub-text{display:block;font-size:.95rem;color:var(--gg-soft,#54493E);margin-top:.15rem}

/* Other games (sidebar list) */
.gg-more{list-style:none!important;padding:0!important;margin:0!important;display:grid;gap:.5rem}
.gg-more li{margin:0!important;list-style:none}
.gg-more li::before{content:none!important}
.gg-more a{display:flex;align-items:center;gap:.7rem;padding:.45rem .6rem;border-radius:12px;color:var(--gg-ink,#2B2119);text-decoration:none;font-weight:700;border:2px solid transparent}
.gg-more a:hover{border-color:var(--gg-rule,#C5CFB0);background:var(--gg-paper,#F7F9F1)}
.gg-more svg{width:40px;height:40px;flex:none;background:var(--gg-moss,#33502C);border-radius:10px;padding:5px}
@media (min-width:600px) and (max-width:999px){.gg-more{grid-template-columns:repeat(2,1fr)}}
