.gm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;margin:8px 0 30px}
.gm-card{display:flex;flex-direction:column;gap:6px;padding:20px;border:1px solid var(--rule2);border-top:3px solid var(--acc);border-radius:4px;text-decoration:none;color:var(--ink);background:var(--bg);transition:.15s}
.gm-card:hover{border-color:var(--ink);border-top-color:var(--acc);transform:translateY(-2px)}
.gm-card b{font:700 28px/1.1 var(--serif)}.gm-k{font:700 11px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--acc)}
.gm-s{font:600 15px/1.35 var(--sans)}.gm-d{font:14px/1.45 var(--sans);color:var(--mut)}
.gm{max-width:460px;margin:6px auto 0;font-family:var(--sans);-webkit-user-select:none;user-select:none}
.gm-note{max-width:460px;margin:18px auto 0;text-align:center}
.gm-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 12px;font:700 14px var(--sans)}
.gm-msg{min-height:24px;text-align:center;font:700 15px var(--sans);margin:10px 0}
.gm button.gb{padding:9px 16px;border-radius:99px;border:1px solid var(--ink);background:var(--bg);color:var(--ink);font:700 13px var(--sans);cursor:pointer}
.gm button.gb:hover,.gm button.gb.on{background:var(--ink);color:#fff}
.gm-tabs{display:flex;gap:8px;justify-content:center;margin:0 0 14px}
/* Parole */
.pw-grid{display:grid;grid-template-rows:repeat(6,1fr);gap:6px;width:min(100%,320px);margin:0 auto 14px}
.pw-row{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.pw-c{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border:2px solid var(--rule2);font:800 28px var(--sans);text-transform:uppercase}
.pw-c.f{border-color:var(--ink2)}.pw-c.g{background:#2e7d4f;border-color:#2e7d4f;color:#fff}.pw-c.y{background:#c99a1e;border-color:#c99a1e;color:#fff}.pw-c.n{background:#6a6a6a;border-color:#6a6a6a;color:#fff}
.pw-kb{display:flex;flex-direction:column;gap:6px;align-items:center}.pw-kr{display:flex;gap:5px;justify-content:center;width:100%}
.pw-k{flex:1;max-width:42px;min-width:0;height:50px;border:0;border-radius:4px;background:#dcdcdc;font:700 14px var(--sans);text-transform:uppercase;cursor:pointer;color:var(--ink);padding:0}
.pw-k.w{flex:1.6;max-width:66px;font-size:12px}.pw-k.g{background:#2e7d4f;color:#fff}.pw-k.y{background:#c99a1e;color:#fff}.pw-k.n{background:#6a6a6a;color:#fff}
.pw-shake{animation:pwsh .4s}@keyframes pwsh{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
/* Sudoku */
.sd-grid{display:grid;grid-template-columns:repeat(9,1fr);width:100%;aspect-ratio:1;border:2px solid var(--ink);background:var(--bg)}
.sd-c{display:flex;align-items:center;justify-content:center;border:1px solid var(--rule2);font:600 clamp(18px,5.5vw,26px) var(--sans);cursor:pointer;padding:0;background:var(--bg);color:var(--acc);border-radius:0}
.sd-c.fx{color:var(--ink);font-weight:800;background:var(--soft)}.sd-c:nth-child(3n):not(:nth-child(9n)){border-right:2px solid var(--ink)}
.sd-c:nth-child(n+19):nth-child(-n+27),.sd-c:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid var(--ink)}
.sd-c.rel{background:#eceaff}.sd-c.fx.rel{background:#e3e1f3}.sd-c.sel{background:#cfcbff}.sd-c.same{background:#dcd9ff}.sd-c.bad{color:#c0262d;background:#fde6e7}
.sd-pad{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:14px 0 0}.sd-pad button{height:46px;border:1px solid var(--rule2);border-radius:4px;background:var(--bg);font:700 20px var(--sans);cursor:pointer;color:var(--ink)}
.sd-pad button:hover{background:var(--ink);color:#fff}
/* 2048 */
.g48{position:relative;background:#bbada0;border-radius:8px;padding:10px;width:100%;aspect-ratio:1;touch-action:none}
.g48-b{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:10px;width:100%;height:100%}
.g48-t{border-radius:5px;display:flex;align-items:center;justify-content:center;font:800 clamp(22px,8vw,38px) var(--sans);background:rgba(238,228,218,.35);color:#776e65}
.g48-t.v2{background:#eee4da}.g48-t.v4{background:#ede0c8}.g48-t.v8{background:#f2b179;color:#fff}.g48-t.v16{background:#f59563;color:#fff}.g48-t.v32{background:#f67c5f;color:#fff}.g48-t.v64{background:#f65e3b;color:#fff}
.g48-t.v128{background:#edcf72;color:#fff;font-size:clamp(20px,7vw,32px)}.g48-t.v256{background:#edcc61;color:#fff;font-size:clamp(20px,7vw,32px)}.g48-t.v512{background:#edc850;color:#fff;font-size:clamp(20px,7vw,32px)}
.g48-t.v1024,.g48-t.v2048,.g48-t.vbig{background:#edc22e;color:#fff;font-size:clamp(16px,5.6vw,26px)}
.g48-t.pop{animation:g48pop .15s}@keyframes g48pop{0%{transform:scale(.6)}100%{transform:scale(1)}}
.g48-sc{display:flex;gap:8px}.g48-sc span{background:var(--soft);border:1px solid var(--rule2);border-radius:4px;padding:5px 12px;font:700 12px var(--sans);text-align:center;color:var(--mut)}.g48-sc b{display:block;font-size:18px;color:var(--ink)}
/* Coppie */
.cp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.cp-c{aspect-ratio:1;border:0;border-radius:8px;background:var(--acc);color:#fff;font-size:clamp(28px,10vw,46px);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:transform .2s}
.cp-c:hover{filter:brightness(1.1)}.cp-c.up{background:var(--soft);border:2px solid var(--rule2)}.cp-c.ok{background:#e4f3e9;border:2px solid #2e7d4f;cursor:default}
@media (prefers-reduced-motion:reduce){.pw-shake,.g48-t.pop{animation:none}.gm-card{transition:none}}
/* Impiccato */
.im-fig{width:min(100%,230px);margin:0 auto 6px;color:var(--ink)}.im-fig svg{display:block;width:100%;height:auto}
.im-word{display:flex;flex-wrap:wrap;gap:10px 16px;justify-content:center;margin:12px 0}.im-w{display:flex;gap:4px}
.im-c{width:clamp(22px,7vw,32px);height:clamp(30px,9vw,40px);border-bottom:3px solid var(--ink);display:flex;align-items:flex-end;justify-content:center;font:800 clamp(18px,5.5vw,26px) var(--sans);padding-bottom:2px}
.im-c.p{border-bottom-color:transparent;width:12px}.im-c.miss{color:#c0262d}
.pw-k:disabled{cursor:default;opacity:.85}
/* Tris */
.tr-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:min(100%,330px);margin:0 auto}
.tr-c{aspect-ratio:1;border:2px solid var(--rule2);border-radius:8px;background:var(--bg);font:800 clamp(40px,14vw,64px) var(--sans);cursor:pointer;padding:0;color:var(--ink)}
.tr-c.x{color:var(--acc)}.tr-c.o{color:#c0262d}.tr-c.win{background:#e4f3e9;border-color:#2e7d4f}
/* Forza 4 */
.f4-board{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;background:#1d4ed8;padding:8px;border-radius:10px;width:100%}
.f4-col{display:flex;flex-direction:column;gap:6px;border:0;background:none;padding:0;cursor:pointer}
.f4-d{display:block;aspect-ratio:1;border-radius:50%;background:#eef2ff;box-shadow:inset 0 2px 4px rgba(0,0,0,.25)}
.f4-d.p1{background:#dc2626}.f4-d.p2{background:#facc15}.f4-d.win{outline:3px solid #fff;outline-offset:-3px}
