:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#faf8ef;--surface:#fff;--text:#5f574f;--text-strong:#4a443e;--text-muted:#6f6862;--border:#e6dfd4;--board-bg:#bbada0;--cell-bg:#eee4da61;--accent:#7a6a58;--accent-hover:#6a5c4c;--on-accent:#f9f6f2;--chip-bg:#776e65;--chip-text:#f9f6f2;--tile-light-text:#776e65;--tile-dark-text:#f9f6f2;--tile-warm-text:#6b5c1f;--tile-hot-text:#4a2f22;--tile-2:#eee4da;--tile-4:#ede0c8;--tile-8:#f2b179;--tile-16:#f59563;--tile-32:#f67c5f;--tile-64:#f65e3b;--tile-128:#edcf72;--tile-256:#edcc61;--tile-512:#edc850;--tile-1024:#edc53f;--tile-2048:#edc22e;--tile-max:#3c3a32;--glow-128:0 0 18px #f3d7743d;--glow-2048:0 0 26px #f3d77473;--radius-sm:6px;--radius:10px;--radius-lg:14px;--gap:clamp(6px, 2vmin, 14px);--shell-pad:clamp(8px, 2.4vmin, 20px);--shell-gap:clamp(6px, 1.6vmin, 16px);--shell-max:620px;--slide-ms:.11s;--pop-ms:.18s;--flip-ms:.52s;--shadow:0 1px 2px #0000000f, 0 8px 24px #50443814;--shadow-lifted:0 10px 20px #0000001f, 0 30px 60px #50443838;--font:ui-rounded, "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#12100e;--surface:#1c1917;--text:#d9d1c7;--text-strong:#f0e9e0;--text-muted:#979089;--border:#2e2926;--board-bg:#2b2724;--cell-bg:#ffffff0d;--accent:#a58f79;--accent-hover:#b9a48e;--on-accent:#12100e;--chip-bg:#2b2724;--chip-text:#e8e0d6;--tile-light-text:#2b2724;--tile-2:#cdc3b6;--tile-4:#ccbfa4;--tile-max:#0f0e0d;--shadow:0 1px 2px #00000080, 0 10px 30px #00000059;--shadow-lifted:0 10px 20px #00000080, 0 30px 60px #0000008c}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#12100e;--surface:#1c1917;--text:#d9d1c7;--text-strong:#f0e9e0;--text-muted:#979089;--border:#2e2926;--board-bg:#2b2724;--cell-bg:#ffffff0d;--accent:#a58f79;--accent-hover:#b9a48e;--on-accent:#12100e;--chip-bg:#2b2724;--chip-text:#e8e0d6;--tile-light-text:#2b2724;--tile-2:#cdc3b6;--tile-4:#ccbfa4;--tile-max:#0f0e0d;--shadow:0 1px 2px #00000080, 0 10px 30px #00000059;--shadow-lifted:0 10px 20px #00000080, 0 30px 60px #0000008c}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;overscroll-behavior:none;margin:0;font-size:16px;line-height:1.5}h1,h2,h3,h4,p,ul{margin:0}button,select{font:inherit;color:inherit}a{color:var(--accent);text-underline-offset:3px}:where(a,button,select,[tabindex]):focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:20;border-radius:var(--radius);background:var(--accent);color:var(--on-accent);padding:10px 16px;text-decoration:none;transition:translate .15s;position:absolute;top:8px;left:50%;translate:-50% -200%}.skip-link:focus-visible{translate:-50%}.app{width:100%;max-width:var(--shell-max);height:100svh;padding:max(var(--shell-pad), env(safe-area-inset-top,0px)) max(var(--shell-pad), env(safe-area-inset-right,0px)) max(var(--shell-pad), env(safe-area-inset-bottom,0px)) max(var(--shell-pad), env(safe-area-inset-left,0px));gap:var(--shell-gap);flex-direction:column;margin-inline:auto;display:flex;overflow:hidden}.panel{display:contents}.app--page{height:auto;min-height:100svh;overflow:visible}.stage{order:1}.hint{order:2}.masthead{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.masthead__brand{min-width:0}.masthead__title{letter-spacing:-.02em;color:var(--text-strong);font-size:clamp(30px,8vmin,56px);font-weight:800;line-height:1}.masthead__edition{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:2px;font-size:.34em;display:block}.masthead__tagline{color:var(--text-muted);margin-top:6px;font-size:15px;display:none}.masthead__aside{align-items:center;gap:8px;display:flex}.scores{gap:6px;display:flex}.score{border-radius:var(--radius);background:var(--chip-bg);min-width:74px;color:var(--chip-text);text-align:center;padding:6px 10px 8px;position:relative}.score__label{letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:700;display:block}.score__value{font-variant-numeric:tabular-nums;font-size:clamp(18px,5vmin,24px);font-weight:800;line-height:1.15;display:block}.score__gain{color:var(--chip-text);text-shadow:0 1px 3px #00000059;pointer-events:none;font-size:18px;font-weight:800;animation:.6s ease-out both score-gain;position:absolute;top:22px;left:0;right:0}.iconbtn{border:2px solid var(--border);background:var(--surface);width:40px;height:40px;color:var(--text-strong);cursor:pointer;border-radius:50%;flex:none;place-items:center;padding:0;font-family:Georgia,Times New Roman,serif;font-size:20px;font-style:italic;font-weight:700;line-height:1;transition:background-color .12s,transform .12s,border-color .12s;display:grid}.iconbtn:hover{background:var(--cell-bg);border-color:var(--accent)}.iconbtn:active{transform:scale(.94)}.toolbar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.btn{border-radius:var(--radius);background:var(--accent);color:var(--on-accent);cursor:pointer;border:0;padding:9px 14px;font-size:15px;font-weight:700;transition:background-color .12s,transform .12s,opacity .12s}.btn:hover:not(:disabled){background:var(--accent-hover)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--ghost{color:var(--text);border:2px solid var(--border);background:0 0}.btn--ghost:hover:not(:disabled){background:var(--cell-bg)}.btn--icon{place-items:center;min-width:40px;padding:9px 10px;font-size:16px;line-height:1;display:inline-grid}.icon{fill:none;stroke:currentColor;stroke-width:2.1px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px;display:block}.field{color:var(--text-muted);align-items:center;gap:8px;margin-left:auto;font-size:13px;font-weight:600;display:inline-flex}.field select{border:2px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;padding:8px 9px;font-size:14px;font-weight:700}.stage{touch-action:none;flex:auto;place-items:center;min-height:0;display:grid;container-type:size}.stage__fit{aspect-ratio:1;width:100cqmin;position:relative}.board{width:100%;height:100%;padding:var(--gap);border-radius:var(--radius-lg);background:var(--board-bg);box-shadow:var(--shadow);user-select:none;-webkit-tap-highlight-color:transparent;position:relative;container-type:size}.board__grid{grid-template-columns:repeat(var(--size,4), 1fr);gap:var(--gap);grid-auto-rows:1fr;height:100%;display:grid}.board__cell{border-radius:var(--radius);background:var(--cell-bg)}.board__tiles{inset:var(--gap);position:absolute}.tile{--row:0;--col:0;width:calc((100% - (var(--size) - 1) * var(--gap)) / var(--size));aspect-ratio:1;border-radius:var(--radius);background:var(--tile-2);color:var(--tile-light-text);font-variant-numeric:tabular-nums;font-weight:800;font-size:calc(.44 * (100cqmin - (var(--size) - 1) * var(--gap)) / var(--size));letter-spacing:-.03em;transform:translate(calc(var(--col) * (100% + var(--gap))), calc(var(--row) * (100% + var(--gap))));transition:transform var(--slide-ms) ease-in-out;will-change:transform;place-items:center;display:grid;position:absolute;top:0;left:0}.tile--skin{font-size:calc(.5 * (100cqmin - (var(--size) - 1) * var(--gap)) / var(--size));letter-spacing:0;line-height:1}.tile__value{font-size:calc(.13 * (100cqmin - (var(--size) - 1) * var(--gap)) / var(--size));letter-spacing:0;opacity:.72;line-height:1;position:absolute;bottom:6%;right:8%}.tile__image{object-fit:contain;pointer-events:none;width:72%;height:72%}.tile--d3{font-size:calc(.36 * (100cqmin - (var(--size) - 1) * var(--gap)) / var(--size))}.tile--d4{font-size:calc(.29 * (100cqmin - (var(--size) - 1) * var(--gap)) / var(--size))}.tile--d5{font-size:calc(.24 * (100cqmin - (var(--size) - 1) * var(--gap)) / var(--size))}.tile--d6{font-size:calc(.2 * (100cqmin - (var(--size) - 1) * var(--gap)) / var(--size))}.tile--2{background:var(--tile-2)}.tile--4{background:var(--tile-4)}.tile--8{background:var(--tile-8);color:var(--tile-hot-text)}.tile--16{background:var(--tile-16);color:var(--tile-hot-text)}.tile--32{background:var(--tile-32);color:var(--tile-hot-text)}.tile--64{background:var(--tile-64);color:var(--tile-hot-text)}.tile--128{background:var(--tile-128);color:var(--tile-warm-text);box-shadow:var(--glow-128)}.tile--256{background:var(--tile-256);color:var(--tile-warm-text);box-shadow:var(--glow-128)}.tile--512{background:var(--tile-512);color:var(--tile-warm-text);box-shadow:var(--glow-128)}.tile--1024{background:var(--tile-1024);color:var(--tile-warm-text);box-shadow:var(--glow-2048)}.tile--2048{background:var(--tile-2048);color:var(--tile-warm-text);box-shadow:var(--glow-2048)}.tile--4096{background:var(--tile-max);color:var(--tile-dark-text)}.tile--merging{z-index:1}.tile--spawned{animation:tile-appear var(--pop-ms) ease-out var(--slide-ms) backwards}.tile--merged{z-index:2;animation:tile-pop var(--pop-ms) ease-out var(--slide-ms) backwards}.tile--cleared{z-index:1;animation:.26s ease-in forwards tile-clear}@keyframes tile-clear{to{opacity:0;scale:.2}}@keyframes tile-appear{0%{opacity:0;scale:.3}to{opacity:1;scale:1}}@keyframes tile-pop{0%{opacity:0;scale:.6}20%{opacity:1}60%{scale:1.12}to{opacity:1;scale:1}}@keyframes score-gain{0%{opacity:1;translate:0}60%{opacity:.5}to{opacity:0;translate:0 -26px}}.overlay{z-index:5;text-align:center;border-radius:var(--radius-lg);background:color-mix(in srgb, var(--bg) 78%, transparent);backdrop-filter:blur(2px);place-content:center;gap:14px;padding:20px;animation:.32s ease-out both overlay-in;display:grid;position:absolute;inset:0}.overlay[hidden]{display:none}.overlay--won{background:color-mix(in srgb, var(--tile-2048) 62%, transparent);color:#6b5c1f}.overlay__title{color:var(--text-strong);font-size:clamp(26px,8cqmin,46px);font-weight:800;line-height:1.1}.overlay--won .overlay__title,.overlay--won .overlay__text{color:#6b5c1f}.overlay__text{color:var(--text-muted);font-size:15px}.overlay__actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.overlay__actions .btn--ghost{border-color:color-mix(in srgb, var(--text-strong) 25%, transparent)}.btn--reward{background:var(--tile-2048);color:#4a3d0f;box-shadow:var(--glow-2048)}.btn--reward:not([hidden]){flex-direction:column;align-items:center;gap:2px;display:inline-flex}.btn--reward:hover:not(:disabled){background:var(--tile-1024)}.btn--reward:disabled{cursor:progress}.btn--reward[data-state=ready] .btn__label:before{content:"▶ "}.btn__sub{opacity:.8;font-size:11px;font-weight:600}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.stage--error:after{content:"The game failed to load. Please refresh the page.";text-align:center;color:var(--text-muted);padding:24px;display:block}.brag{z-index:30;top:max(10px, env(safe-area-inset-top,0px));border:2px solid color-mix(in srgb, var(--tile-2048) 60%, transparent);border-radius:var(--radius-lg);background:var(--surface);width:min(100% - 20px,440px);color:var(--text);box-shadow:var(--shadow-lifted);padding:10px 8px 10px 10px;animation:.42s cubic-bezier(.22,.85,.28,1) both brag-in;position:fixed;left:50%;translate:-50%}.brag:not([hidden]){align-items:center;gap:10px;display:flex}.brag.is-leaving{animation:.2s ease-in both brag-out}.brag__badge{border-radius:var(--radius);background:var(--tile-1024);width:46px;height:46px;color:var(--tile-dark-text);box-shadow:var(--glow-2048);flex:none;place-items:center;font-size:16px;font-weight:800;display:grid}.brag__body{flex:auto;min-width:0;line-height:1.25}.brag__title{color:var(--text-strong);font-weight:800}.brag__text{color:var(--text-muted);font-size:13px}.brag__share{flex:none}.brag__close{width:32px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;padding:0;font-size:22px;line-height:1}.brag__close:hover{background:var(--cell-bg);color:var(--text-strong)}@keyframes brag-in{0%{opacity:0;translate:-50% -130%}to{opacity:1;translate:-50%}}@keyframes brag-out{0%{opacity:1;translate:-50%}to{opacity:0;translate:-50% -130%}}.hint{color:var(--text-muted);text-align:center;font-size:clamp(11px,1.6vmin,14px)}.hint kbd,.guide kbd{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);border-bottom-width:2px;padding:1px 5px;font-family:inherit;font-size:.85em;font-weight:700}@media (hover:none) and (pointer:coarse){.hint--controls{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}.guide{max-width:none;max-height:none;color:var(--text);background:0 0;border:0;margin:auto;padding:0;overflow:visible}.guide::backdrop{backdrop-filter:blur(3px);background:#140f0a8c;animation:.24s ease-out both guide-veil}.guide__card{border-radius:var(--radius-lg);background:var(--surface);width:min(92vw,520px);height:min(78svh,620px);max-height:calc(100svh - 24px);box-shadow:var(--shadow-lifted);perspective:1400px;flex-direction:column;display:flex;overflow:hidden}.guide[open] .guide__card{animation:.42s cubic-bezier(.22,.85,.28,1) both guide-in}.guide.is-closing .guide__card{animation:.2s ease-in both guide-out}.guide__faces{min-height:0;transform-style:preserve-3d;transition:transform var(--flip-ms) cubic-bezier(.4, .1, .2, 1);flex:auto;position:relative}.guide[data-face=back] .guide__faces{transform:rotateY(180deg)}.guide__face{overscroll-behavior:contain;backface-visibility:hidden;flex-direction:column;gap:10px;padding:clamp(16px,4vmin,26px);font-size:15px;display:flex;position:absolute;inset:0;overflow-y:auto}.guide__face--back{transform:rotateY(180deg)}.guide__title,.extras__title{color:var(--text-strong);font-size:clamp(19px,5vmin,24px);font-weight:800}.guide__intro{border-radius:var(--radius);background:var(--cell-bg);padding:10px 12px}.guide__face h3,.extras__article h3{color:var(--text-strong);margin-top:6px;font-size:15px;font-weight:800}.guide__face h4,.extras__article h4{color:var(--text-strong);margin-top:4px;font-size:14px;font-weight:700}.guide__face ul,.extras__article ul{flex-direction:column;gap:6px;padding-left:20px;display:flex}.guide__fine{color:var(--text-muted);margin-top:auto;padding-top:12px;font-size:12px}.guide__bar{border-top:2px solid var(--border);background:var(--surface);align-items:center;gap:8px;padding:10px clamp(12px,3vmin,20px);display:flex}.guide__link{color:var(--text-muted);margin-right:auto;font-size:13px;font-weight:600}@keyframes guide-veil{0%{opacity:0}to{opacity:1}}@keyframes guide-in{0%{opacity:0;transform:perspective(1200px)rotateY(-85deg)scale(.94)}to{opacity:1;transform:perspective(1200px)rotateY(0)scale(1)}}@keyframes guide-out{0%{opacity:1;transform:perspective(1200px)rotateY(0)scale(1)}to{opacity:0;transform:perspective(1200px)rotateY(70deg)scale(.94)}}.extras{width:min(100% - 32px, var(--shell-max));flex-direction:column;gap:20px;margin-inline:auto;padding-block:24px 40px;display:flex}.extras__article{flex-direction:column;gap:10px;font-size:15px;display:flex}.ad:not([hidden]){flex-direction:column;align-items:center;gap:6px;display:flex;overflow:hidden}.ad[data-ad-fill=empty]{display:none}.ad__label{color:var(--text-muted);letter-spacing:.09em;text-transform:uppercase;font-size:10px;font-weight:700}.ad .adsbygoogle{width:100%;min-height:100px;display:block}.ad--board{border-top:2px solid var(--border);min-height:126px;padding-top:20px}.ad--article{min-height:268px}.ad--article .adsbygoogle{min-height:250px}a.btn{text-decoration:none;display:inline-block}.site-footer{color:var(--text-muted);text-align:center;font-size:13px}.site-footer p+p{margin-top:8px}.prose{flex-direction:column;gap:12px;font-size:15px;display:flex}.prose h2{color:var(--text-strong);margin-top:12px;font-size:clamp(18px,4vmin,22px);font-weight:800}.prose ul{flex-direction:column;gap:6px;margin:0;padding-left:22px;display:flex}.prose code{border-radius:var(--radius-sm);background:var(--cell-bg);padding:1px 5px;font-size:.9em}@media (height>=780px) and (width>=420px){.masthead__tagline{display:block}}@media (width<=430px){.field__label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.btn{padding:8px 12px;font-size:14px}.btn--icon{min-width:38px;padding:8px}.score{min-width:66px}.iconbtn{width:38px;height:38px}}@media (orientation:landscape) and (height<=620px){.app{flex-direction:row;align-items:stretch;max-width:min(100%,1000px)}.panel{gap:var(--shell-gap);flex-direction:column;width:min(42%,300px);min-width:0;display:flex}.masthead{flex-wrap:wrap}.hint{text-align:left;margin-top:auto}}@media (height<=420px){.masthead__title{font-size:clamp(24px,7vmin,34px)}.hint{display:none}}.reduce-motion .tile,.reduce-motion .overlay,.reduce-motion .score__gain,.reduce-motion .brag,.reduce-motion .guide__card,.reduce-motion .guide__faces,.reduce-motion .guide::backdrop{transition-duration:1ms!important;animation-duration:1ms!important;animation-delay:0s!important}@media (prefers-reduced-motion:reduce){.tile,.overlay,.score__gain,.brag,.skip-link,.btn,.iconbtn,.guide__card,.guide__faces,.guide::backdrop{transition-duration:1ms!important;animation-duration:1ms!important;animation-delay:0s!important}}
