:root{--paper:250 248 239;--ink:119 110 101;--muted:119 110 101;--panel:238 228 218;--line:221 211 200;--board:187 173 160;--cell:205 193 180;--accent:143 122 102;--accent-strong:#6f5e4e;color-scheme:light}.dark{--paper:20 23 22;--ink:243 238 228;--muted:197 186 170;--panel:31 35 32;--line:60 64 58;--board:72 78 70;--cell:51 56 50;--accent:129 199 170;--accent-strong:#4d8f75;color-scheme:dark}*{box-sizing:border-box}html{min-width:320px;scroll-behavior:smooth;background:rgb(var(--paper));color:rgb(var(--ink));font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}body{margin:0;overflow-x:hidden;background:radial-gradient(circle at 50% 0%,rgba(255,255,255,.75),transparent 32rem),linear-gradient(180deg,rgb(var(--paper)),rgb(var(--paper)));letter-spacing:0}.dark body{background:radial-gradient(circle at 50% 0%,rgba(129,199,170,.11),transparent 30rem),linear-gradient(180deg,rgb(var(--paper)),rgb(var(--paper)))}button{font:inherit}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid #1668dc;outline-offset:3px}.shell{width:min(560px,calc(100% - 24px));margin:18px auto 40px}.top,.intro,.board,.stats{position:relative;z-index:1}.top{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:start}.title{font-size:clamp(3.35rem,15vw,5.15rem);font-weight:900;line-height:1;margin:0;color:#776e65;text-shadow:0 1px 0 rgba(255,255,255,.45)}.dark .title{color:#f3eee4;text-shadow:none}.scores{display:grid;grid-template-columns:repeat(2,minmax(76px,1fr));gap:8px}.score{position:relative;min-width:78px;min-height:56px;display:grid;place-items:center;overflow:hidden;background:#b9aa9d;color:white;border-radius:8px;font-weight:900;box-shadow:inset 0 2px 0 rgba(255,255,255,.2),0 10px 20px rgba(91,73,55,.15)}.dark .score{background:rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}.score span{font-size:12px;text-transform:uppercase;color:#eee4da}.score strong{font-size:24px;line-height:1}.intro{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center;margin:18px 0}.intro p{font-size:clamp(1rem,3.6vw,1.18rem);line-height:1.5;margin:0;color:#776e65}.dark .intro p{color:#d8cebf}.game-shell{position:relative;display:grid;gap:14px;border:1px solid rgba(255,255,255,.4);border-radius:20px;background:rgba(255,255,255,.35);padding:clamp(12px,3vw,18px);box-shadow:0 24px 70px rgba(91,73,55,.14);backdrop-filter:blur(10px)}.dark .game-shell{border-color:rgba(255,255,255,.1);background:rgba(255,255,255,.04);box-shadow:0 24px 70px rgba(0,0,0,.3)}.controls{display:grid;justify-items:stretch;gap:8px}.btn,.small-btn{border:0;cursor:pointer;transition:transform .15s ease,background .15s ease,box-shadow .15s ease}.btn{min-height:44px;border-radius:8px;background:rgb(var(--accent));color:white;font-weight:900;padding:0 20px;box-shadow:0 7px 0 var(--accent-strong)}.btn:hover{transform:translateY(-2px);background:#9d856f}.btn:active{transform:translateY(3px);box-shadow:0 2px 0 var(--accent-strong)}.dark .btn{color:#13201b}.toggle-row{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.small-btn{min-height:36px;border:1px solid #d8cabc;border-radius:999px;background:#f5eee4;color:#776e65;font-size:12px;font-weight:900;padding:0 12px}.small-btn:hover{background:white}.dark .small-btn{border-color:rgba(255,255,255,.1);background:rgba(255,255,255,.1);color:#f3eee4}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat{min-width:0;border:1px solid rgba(216,202,188,.85);border-radius:10px;background:rgba(245,238,228,.72);padding:9px 10px;box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}.dark .stat{border-color:rgba(255,255,255,.1);background:rgba(255,255,255,.06)}.stat span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8f7a66;font-size:11px;font-weight:900;text-transform:uppercase}.dark .stat span{color:#d8cebf}.stat strong{display:block;margin-top:3px;color:#776e65;font-size:clamp(1.05rem,4vw,1.35rem);line-height:1}.dark .stat strong{color:#f3eee4}.progress-track{grid-column:1/-1;height:8px;overflow:hidden;border-radius:999px;background:rgba(187,173,160,.28)}.progress-bar{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,#8f7a66,#edc850,#61aa8e);transition:width .24s cubic-bezier(.16,1,.3,1)}.board-wrap{position:relative;width:100%;touch-action:none;user-select:none}.board{aspect-ratio:1;width:100%;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(10px,2.6vw,14px);padding:clamp(10px,2.6vw,14px);background:rgb(var(--board));border-radius:14px;box-shadow:inset 0 3px 0 rgba(255,255,255,.22),0 18px 38px rgba(91,73,55,.22)}.dark .board{box-shadow:inset 0 3px 0 rgba(255,255,255,.08),0 18px 38px rgba(0,0,0,.35)}.board.bump{animation:board-bump .17s ease-out}.cell{display:grid;place-items:center;min-width:0;background:rgb(var(--cell));border-radius:9px;box-shadow:inset 0 2px 0 rgba(255,255,255,.18)}.tile{width:100%;height:100%;display:grid;place-items:center;overflow:hidden;border-radius:9px;color:white;font-size:clamp(2rem,10vw,3.45rem);font-weight:900;line-height:1;box-shadow:0 7px 14px rgba(73,56,40,.18),inset 0 2px 0 rgba(255,255,255,.28);transform:translateZ(0);will-change:transform,filter;animation:appear .16s cubic-bezier(.2,1.2,.22,1)}.tile.merged{animation:merge .26s cubic-bezier(.16,1,.3,1);box-shadow:0 0 0 5px rgba(255,255,255,.15),0 12px 24px rgba(73,56,40,.24),inset 0 2px 0 rgba(255,255,255,.32);z-index:2}.move-left{animation:slide-from-right .155s cubic-bezier(.2,.9,.25,1)}.move-right{animation:slide-from-left .155s cubic-bezier(.2,.9,.25,1)}.move-up{animation:slide-from-down .155s cubic-bezier(.2,.9,.25,1)}.move-down{animation:slide-from-up .155s cubic-bezier(.2,.9,.25,1)}.tile-2{background:linear-gradient(145deg,#f5eadc,#e9d8c3);color:#3d352c}.tile-4{background:linear-gradient(145deg,#f0dfc5,#e2cba9);color:#3d352c}.tile-8{background:linear-gradient(145deg,#f6b074,#e98245)}.tile-16{background:linear-gradient(145deg,#f49a6c,#df6543)}.tile-32{background:linear-gradient(145deg,#f47c67,#d84f45)}.tile-64{background:linear-gradient(145deg,#ed634c,#c7352c)}.tile-128{background:linear-gradient(145deg,#f2d67c,#d9ad3f);font-size:clamp(1rem,6.8vw,2.7rem)}.tile-256{background:linear-gradient(145deg,#edcd67,#c9972c);font-size:clamp(1rem,6.8vw,2.7rem)}.tile-512{background:linear-gradient(145deg,#efc94e,#b9821e);font-size:clamp(1rem,6.8vw,2.7rem)}.tile-1024{background:linear-gradient(145deg,#8ab896,#5f8f68);font-size:clamp(.88rem,5.8vw,2.35rem)}.tile-2048{background:linear-gradient(145deg,#61aa8e,#3d7d68);font-size:clamp(.88rem,5.8vw,2.35rem)}.tile-super{background:linear-gradient(145deg,#344a58,#192732);font-size:clamp(.72rem,4.8vw,1.9rem)}.modal{position:absolute;inset:0;display:none;place-items:center;border-radius:14px;background:rgba(250,248,239,.82);padding:18px;text-align:center;animation:modal-fade .18s ease-out}.dark .modal{background:rgba(20,23,22,.82)}.modal.show{display:grid}.modal-card{width:min(340px,100%);border-radius:16px;background:rgba(255,255,255,.9);padding:22px;box-shadow:0 24px 60px rgba(73,56,40,.2);animation:modal-card .24s cubic-bezier(.16,1,.3,1)}.dark .modal-card{background:#20251f}.modal h2{margin:0 0 8px;font-size:clamp(2rem,9vw,3rem);line-height:1;color:#776e65}.dark .modal h2{color:#f3eee4}.modal p{margin:0 0 16px;line-height:1.5}.modal-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.guide{font-size:18px;line-height:1.75;margin-top:28px;color:#776e65}.dark .guide{color:#d8cebf}.guide h2{display:inline;font-size:16px;text-transform:uppercase;margin:0}.faq{border-top:1px solid rgb(var(--line));margin-top:24px;padding-top:16px}.faq h2{margin:0 0 10px}.faq article{border-top:1px solid rgb(var(--line));padding:12px 0}.faq h3{margin:0 0 6px}.faq p{margin:0;line-height:1.6}.links{display:flex;flex-wrap:wrap;gap:8px 12px;justify-content:center;margin-top:30px;font-size:14px}.links a{color:#5d3b85}.dark .links a{color:#bda8ff}@keyframes appear{from{opacity:0;transform:scale(.64) rotate(-1.5deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes merge{0%{transform:scale(1);filter:brightness(1)}35%{transform:scale(1.2);filter:brightness(1.17) saturate(1.08)}65%{transform:scale(.97);filter:brightness(1.04)}100%{transform:scale(1);filter:brightness(1)}}@keyframes board-bump{0%,100%{transform:scale(1)}50%{transform:scale(1.006)}}@keyframes modal-fade{from{opacity:0}to{opacity:1}}@keyframes modal-card{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes slide-from-left{from{opacity:.88;transform:translateX(-34%) scale(.985)}to{opacity:1;transform:translateX(0)}}@keyframes slide-from-right{from{opacity:.88;transform:translateX(34%) scale(.985)}to{opacity:1;transform:translateX(0)}}@keyframes slide-from-up{from{opacity:.88;transform:translateY(-34%) scale(.985)}to{opacity:1;transform:translateY(0)}}@keyframes slide-from-down{from{opacity:.88;transform:translateY(34%) scale(.985)}to{opacity:1;transform:translateY(0)}}@media(max-width:520px){.top,.intro{grid-template-columns:1fr}.scores,.stats{width:100%}.intro{margin-top:8px}.modal-actions{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:1ms!important;scroll-behavior:auto!important;transition-duration:1ms!important}}:root{--paper:255 250 242;--ink:55 47 42;--muted:112 92 78;--panel:255 246 231;--line:229 207 185;--board:125 108 96;--cell:235 224 211;--accent:15 166 143;--accent-strong:#087767}.dark{--paper:27 28 30;--ink:250 244 232;--muted:209 196 178;--panel:39 38 36;--line:76 67 59;--board:80 72 65;--cell:58 53 48;--accent:95 224 190;--accent-strong:#20977e}html{font-family:ui-rounded,"Trebuchet MS","Segoe UI",system-ui,-apple-system,BlinkMacSystemFont,Arial,sans-serif}body{background:linear-gradient(135deg,rgba(255,247,231,.98),rgba(239,253,248,.92) 52%,rgba(255,242,237,.96)),rgb(var(--paper));color:rgb(var(--ink))}.dark body{background:linear-gradient(135deg,rgba(29,37,36,.98),rgba(39,32,29,.96) 50%,rgba(28,35,44,.98)),rgb(var(--paper))}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline-color:#10bfa8}.title{background:linear-gradient(135deg,#0fa68f 8%,#f6a731 50%,#ef5d50 86%);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none}.intro p{font-weight:700;color:rgb(var(--muted))}.game-shell{border-color:rgba(255,255,255,.7);background:linear-gradient(145deg,rgba(255,255,255,.9),rgba(255,244,229,.72) 52%,rgba(237,255,249,.78));box-shadow:0 26px 70px rgba(71,52,33,.16)}.btn{background:linear-gradient(135deg,#0fa68f,#16b8a6 48%,#ef5d50);box-shadow:0 7px 0 #087767,0 14px 28px rgba(15,166,143,.25)}.btn:hover{background:linear-gradient(135deg,#10bfa8,#16b8a6 46%,#ff6b5d);filter:saturate(1.08)}.small-btn{border-color:#bfe8dc;background:#f0fff9;color:#0b7f70}.score{background:linear-gradient(145deg,#13b8a0,#0b8878);box-shadow:inset 0 2px 0 rgba(255,255,255,.25),0 10px 22px rgba(15,166,143,.22)}.scores .score:nth-child(2){background:linear-gradient(145deg,#f7b733,#ef6c4f);box-shadow:inset 0 2px 0 rgba(255,255,255,.28),0 10px 22px rgba(239,93,80,.22)}.score span{color:rgba(255,255,255,.78)}.stat{border-color:#bfe8dc;background:linear-gradient(145deg,#f2fff9,#e4f7ef);box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 10px 24px rgba(15,166,143,.1)}.stat span{color:#0b7f70}.stat strong{color:rgb(var(--ink))}.progress-track{background:#ead2a5}.progress-bar{background:linear-gradient(90deg,#0fa68f,#f6bd3e 54%,#ef5d50)}.tile-2{background:linear-gradient(145deg,#fff8ea,#f6e7cd);color:#3d352c}.tile-4{background:linear-gradient(145deg,#e8fff6,#c9f2e7);color:#17483f}.tile-8{background:linear-gradient(145deg,#4fd1bd,#0fa68f)}.tile-16{background:linear-gradient(145deg,#ffb35c,#f07b32)}.tile-32{background:linear-gradient(145deg,#ff7a67,#ef4f48)}.tile-64{background:linear-gradient(145deg,#e84d6b,#b72b55)}.tile-128{background:linear-gradient(145deg,#ffe07a,#f2aa25);color:#513814}.tile-256{background:linear-gradient(145deg,#ffc857,#d88b16)}.tile-512{background:linear-gradient(145deg,#8adf74,#39a85a)}.tile-1024{background:linear-gradient(145deg,#62a8ff,#3f6bd8)}.tile-2048{background:linear-gradient(145deg,#b16cff,#7a3fc5)}.tile-super{background:linear-gradient(145deg,#263a40,#13262b)}.guide,.faq p{color:rgb(var(--muted))}.guide h2,.faq h2,.faq h3{color:rgb(var(--ink))}.links a{color:#0b7f70}.links a:hover{color:#ef5d50}.dark .title{background:linear-gradient(135deg,#75ffd8,#ffd479 50%,#ff907f);-webkit-background-clip:text;background-clip:text;color:transparent}.dark .game-shell{background:linear-gradient(145deg,rgba(255,255,255,.08),rgba(255,255,255,.035))}.dark .links a{color:#a4ffd8}