.game-container{justify-content:center;align-items:center;padding:2rem 0;display:flex}.sn-footer{display:none}.app{--bg:#f9fafb;--surface:#fff;--border:#e5e7eb;--border-subtle:#f3f4f6;--text:#111827;--text-2:#6b7280;--text-3:#9ca3af;--accent:oklch(52% .22 254);--accent-hover:oklch(45% .22 254);--accent-soft:oklch(97% .03 254);--accent-mid:oklch(90% .06 254);--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 12px #00000014, 0 2px 4px #0000000a;--font:"IBM Plex Sans", system-ui, sans-serif;--mono:"IBM Plex Mono", monospace;--cell:88px;--gap:10px;--board:calc(var(--cell) * 4 + var(--gap) * 5);flex-direction:column;align-items:center;display:flex}@keyframes tileAppear{0%{opacity:0;transform:scale(.4)}60%{transform:scale(1.06)}to{opacity:1;transform:scale(1)}}@keyframes tileMerge{0%{transform:scale(1)}40%{transform:scale(1.14)}to{transform:scale(1)}}@keyframes scoreUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-28px)}}.header{width:var(--board);margin-bottom:20px}.header-row{justify-content:space-between;align-items:flex-end;margin-bottom:16px;display:flex}.title{font-family:var(--mono);letter-spacing:-.04em;color:var(--text);font-size:40px;font-weight:600;line-height:1}.subtitle{color:var(--text-2);margin-top:4px;font-size:12px}.subtitle .num{font-family:var(--mono);color:var(--accent)}.scores{align-items:flex-start;gap:8px;display:flex}.score-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);text-align:center;min-width:72px;box-shadow:var(--shadow-sm);padding:8px 16px;position:relative;overflow:visible}.score-label{letter-spacing:.08em;color:var(--text-3);text-transform:uppercase;margin-bottom:2px;font-size:10px;font-weight:600}.score-value{font-family:var(--mono);color:var(--text);letter-spacing:-.02em;font-size:18px;font-weight:600}.score-delta{font-family:var(--mono);color:var(--accent);pointer-events:none;font-size:13px;font-weight:600;animation:.6s ease-out both scoreUp;position:absolute;top:-4px;right:4px}.actions{justify-content:flex-end;display:flex}.btn-primary{font-family:var(--font);background:var(--text);color:#fff;border-radius:var(--radius-sm);cursor:pointer;letter-spacing:.02em;border:none;padding:6px 14px;font-size:12px;font-weight:500;transition:opacity .15s}.btn-primary:hover{opacity:.8}.board{width:var(--board);height:var(--board);border-radius:var(--radius-lg);padding:var(--gap);grid-template-columns:repeat(4, var(--cell));grid-template-rows:repeat(4, var(--cell));gap:var(--gap);-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none;box-shadow:var(--shadow-sm);background:#e5e7eb;display:grid;position:relative}.tile{border-radius:var(--radius-md);width:100%;height:100%;font-family:var(--mono);letter-spacing:-.03em;-webkit-user-select:none;-moz-user-select:none;user-select:none;justify-content:center;align-items:center;font-weight:600;line-height:1;transition:background .1s;display:flex}.tile-appear{animation:.18s ease-out both tileAppear}.tile-merge{animation:.18s ease-out both tileMerge}.overlay{border-radius:var(--radius-lg);backdrop-filter:blur(2px);z-index:10;background:#f9fafbe0;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:absolute;inset:0}.overlay-title{letter-spacing:-.02em;color:var(--text);font-size:28px;font-weight:600}.overlay-title.won{color:var(--accent)}.overlay-sub{color:var(--text-2);font-size:14px}.overlay-actions{gap:8px;display:flex}.btn-soft{font-family:var(--font);background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-mid);border-radius:var(--radius-sm);cursor:pointer;padding:8px 18px;font-size:13px;font-weight:500;transition:opacity .15s}.btn-soft:hover{opacity:.85}.btn-dark{font-family:var(--font);background:var(--text);color:#fff;border-radius:var(--radius-sm);cursor:pointer;border:none;padding:8px 18px;font-size:13px;font-weight:500;transition:opacity .15s}.btn-dark:hover{opacity:.85}.hint{color:var(--text-3);text-align:center;margin-top:16px;font-size:12px}@media (width<=480px){.app{--cell:64px;--gap:8px}.title{font-size:32px}}
