:root{--table:#26334d;--table-glow:#3a4c6e;--accent:#ffb703;--accent-ink:#3a2b00;--felt-ink:#f5efe2;--felt-dim:#f5efe299;--card-face:#fdf8ec;--card-ink:#3b3427;--radius:18px;--flip-ms:.42s}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{height:100%}body{color:var(--felt-ink);background:radial-gradient(120% 90% at 50% 0%,var(--table-glow)0%,var(--table)62%),var(--table);overflow:hidden;user-select:none;-webkit-user-select:none;transition:background .5s;font-family:Nunito,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.hidden{display:none!important}.screen{display:flex;padding:max(16px,env(safe-area-inset-top))16px max(16px,env(safe-area-inset-bottom));overflow-y:auto;flex-direction:column;align-items: center;height:100dvh}.menu{justify-content:center;gap:20px;max-width:560px;margin:0 auto}.menu-head{text-align:center}.logo{letter-spacing:.01em;font-family:Fredoka,Nunito,sans-serif;font-size:clamp(2.6rem,11vw,3.6rem);font-weight:700;line-height:1}.logo-it{color:var(--accent);display:inline-block;transform:rotate(4deg)}.menu-sub{color:var(--felt-dim);margin-top:8px;font-weight:700}.picker{width:100%}.picker-label{text-transform:uppercase;letter-spacing:.14em;color:var(--felt-dim);margin-bottom:10px;font-family:Fredoka,sans-serif;font-size:.95rem;font-weight:600}.theme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.theme-btn{appearance:none;border-radius:var(--radius);color:var(--felt-ink);display:flex;cursor:pointer;background:#ffffff12;border:2px solid #ffffff24;flex-direction:column;align-items: center;gap:6px;padding:14px 6px 12px;transition:transform .12s,border-color .12s,background .12s;font-family:Fredoka,sans-serif;font-size:.95rem;font-weight:600}.theme-btn .theme-icon{font-size:2rem;line-height:1}.theme-btn:active{transform:scale(.95)}.theme-btn.selected{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent)35%,transparent);background:#ffffff24}.diff-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.diff-btn{appearance:none;color:var(--felt-ink);cursor:pointer;background:#ffffff12;border:2px solid #ffffff24;border-radius:999px;padding:10px 4px;transition:transform .12s,border-color .12s,background .12s;font-family:Fredoka,sans-serif;font-size:.95rem;font-weight:600}.diff-btn small{display:block;color:var(--felt-dim);font-family:Nunito,sans-serif;font-size:.7rem;font-weight:700}.diff-btn:active{transform:scale(.95)}.diff-btn.selected{border-color:var(--accent);background:#ffffff24}.btn-play{appearance:none;background:var(--accent);color:var(--accent-ink);cursor:pointer;border:none;border-radius:999px;padding:15px 42px;transition:transform .12s,box-shadow .12s,background .3s;font-family:Fredoka,sans-serif;font-size:1.2rem;font-weight:700;box-shadow:0 6px #00000047}.btn-play:active{transform:translateY(4px);box-shadow:0 2px #00000047}.best-line{color:var(--felt-dim);min-height:1.2em;font-size:.85rem;font-weight:700}.game{overflow:hidden;gap:12px}.hud{display:flex;align-items: center;gap:10px;width:100%;max-width:640px}.btn-back{appearance:none;color:var(--felt-ink);cursor:pointer;background:#ffffff1f;border:none;border-radius:12px;flex-shrink:0;width:40px;height:40px;font-size:1.6rem;line-height:1}.hud-theme{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;font-family:Fredoka,sans-serif;font-size:1.05rem;font-weight:600}.hud-stats{display:flex;gap:8px}.chip{font-variant-numeric:tabular-nums;background:#00000040;border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:800}.board-wrap{display:flex;flex:1;justify-content:center;align-items: center;width:100%;max-width:640px;min-height:0}.board{display:grid;grid-template-columns:repeat(var(--cols,4),1fr);gap:clamp(6px,1.8vw,12px);width:100%;max-height:100%}.card{position:relative;aspect-ratio:3/4;perspective:700px;cursor:pointer;background:0 0;border:none;padding:0}.card-inner{position:absolute;transform-style:preserve-3d;transition:transform var(--flip-ms)cubic-bezier(.34,1.3,.5,1);inset:0}.card.flipped .card-inner{transform:rotateY(180deg)}.card-face{position:absolute;backface-visibility:hidden;-webkit-backface-visibility:hidden;display:flex;border-radius:14px;justify-content:center;align-items: center;inset:0}.card-back{background:radial-gradient(circle at 30% 25%,#ffffff29,transparent 55%),color-mix(in srgb,var(--accent)24%,var(--table));border:2px solid color-mix(in srgb,var(--accent)55%,transparent);font-size:clamp(1.1rem,5vw,1.8rem);box-shadow:0 3px #0000004d}.card-back .suit-mark{opacity:.9;filter:saturate(.4)brightness(1.4);transform:rotate(-8deg)}.card-front{background:var(--card-face);border:2px solid #0000001f;font-size:clamp(1.6rem,8vw,3rem);transform:rotateY(180deg);box-shadow:0 3px #0000004d}.card.matched{cursor:default}.card.matched .card-front{border-color:color-mix(in srgb,var(--accent)75%,transparent);box-shadow:0 3px 0 #0000004d,0 0 14px color-mix(in srgb,var(--accent)45%,transparent);animation:match-pop .48s ease}@keyframes match-pop{0%{transform:rotateY(180deg)scale(1)}40%{transform:rotateY(180deg)scale(1.14)}70%{transform:rotateY(180deg)scale(.96)}to{transform:rotateY(180deg)scale(1)}}.card.shake .card-inner{animation:shake .32s ease}@keyframes shake{0%,to{transform:rotateY(180deg)translate(0)}25%{transform:rotateY(180deg)translate(-5px)}75%{transform:rotateY(180deg)translate(5px)}}.game-foot{display:flex;justify-content:center;width:100%;max-width:640px}.pairs-track{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.pair-dot{background:#ffffff29;border-radius:50%;width:14px;height:14px;transition:background .2s,transform .2s}.pair-dot.found{background:var(--accent);transform:scale(1.2)}.overlay{position:fixed;display:flex;z-index:10;background:#0000008c;justify-content:center;align-items: center;padding:24px;inset:0}.card-panel{position:relative;background:var(--card-face);color:var(--card-ink);text-align:center;animation:panel-in .42s cubic-bezier(.34,1.4,.5,1);border-radius:24px;width:min(380px,100%);padding:28px 26px;box-shadow:0 10px #00000059}@keyframes panel-in{0%{transform:translateY(30px)scale(.9);opacity:0}to{transform:translateY(0)scale(1);opacity:1}}.win-eyebrow{font-family:Fredoka,sans-serif;font-size:1.5rem;font-weight:700}.stars{letter-spacing:.1em;margin:8px 0 14px;font-size:2.2rem}.stars .dim{opacity:.25;filter:grayscale(1)}.win-stats{display:flex;justify-content:center;gap:34px;margin-bottom:10px}.win-num{display:block;font-variant-numeric:tabular-nums;font-family:Fredoka,sans-serif;font-size:1.7rem;font-weight:700}.win-label{text-transform:uppercase;letter-spacing:.12em;color:#3b34278c;font-size:.75rem;font-weight:800}.win-best{color:#3b3427a6;min-height:1.2em;margin-bottom:16px;font-size:.85rem;font-weight:800}.win-actions{display:flex;flex-direction:column;gap:10px}.btn-ghost{appearance:none;color:var(--card-ink);cursor:pointer;background:0 0;border:2px solid #3b342740;border-radius:999px;padding:11px;font-family:Fredoka,sans-serif;font-size:1rem;font-weight:600}.confetti{position:absolute;overflow:hidden;pointer-events:none;inset:0}.confetti span{position:absolute;animation:fall linear forwards;font-size:1.6rem;top:-10%}@keyframes fall{to{transform:translateY(115vh)rotate(360deg)}}button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{animation-duration:1ms!important;transition-duration:1ms!important}}@media (min-width:700px) and (orientation:landscape){.board{max-width:min(640px,70vh)}}
