:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0b12;--grid:#1b1830;--cell:#00f5ff0d;--ink:#eaf6ff;--accent-cyan:#00f5ff;--accent-magenta:#ff2bd6;--move-ms:.1s}*{box-sizing:border-box}body{background:radial-gradient(ellipse at 50% -10%, #00f5ff1f, transparent 55%), radial-gradient(ellipse at 100% 100%, #ff2bd61a, transparent 60%), var(--bg);min-height:100dvh;color:var(--ink);touch-action:none;-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;margin:0;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;display:flex;position:relative;overflow-x:hidden}body:before{content:"";pointer-events:none;mix-blend-mode:overlay;background:repeating-linear-gradient(#ffffff09 0 1px,#0000 1px 3px);position:fixed;inset:0}header{justify-content:space-between;align-items:center;width:min(94vw,30rem);padding:.75rem 0 0;display:flex}header nav a{letter-spacing:.08em;color:var(--accent-cyan);text-shadow:0 0 6px #00f5ff99;font-size:1rem;font-weight:700;text-decoration:none}#score{text-align:center;min-width:3.5rem;color:var(--accent-cyan);font-variant-numeric:tabular-nums;background:#00f5ff14;border:1px solid #00f5ff66;border-radius:.3rem;margin:0;padding:.35rem .7rem;font-weight:700;transition:transform .12s;box-shadow:inset 0 0 10px #00f5ff40,0 0 8px #00f5ff33}#score.bump{transform:scale(1.15)}main{flex-direction:column;align-items:center;gap:1rem;padding:1rem;display:flex}h1{letter-spacing:.12em;background:linear-gradient(90deg, var(--accent-cyan), var(--accent-magenta));color:#0000;filter:drop-shadow(0 0 10px #00f5ff59)drop-shadow(0 0 16px #ff2bd640);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(2.2rem,9vw,3rem);font-weight:800;animation:6s ease-in-out infinite flicker}@keyframes flicker{0%,92%,to{opacity:1}93%{opacity:.4}94%{opacity:1}95%{opacity:.6}96%{opacity:1}}#board{aspect-ratio:1;background:linear-gradient(160deg,#14101f,#0c0a14);border:1px solid #00f5ff40;border-radius:.6rem;grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(4,1fr);gap:.5rem;width:min(94vw,32rem);padding:.5rem;display:grid;position:relative;box-shadow:0 0 0 1px #0006,0 0 30px #00f5ff14,inset 0 0 30px #00000080}#board.invite-x{animation:.9s ease-in-out board-nudge-x}#board.invite-y{animation:.9s ease-in-out board-nudge-y}@keyframes board-nudge-x{0%,to{transform:translate(0)}22%{transform:translate(26px)}38%{transform:translate(0)}60%{transform:translate(-19px)}75%,to{transform:translate(0)}}@keyframes board-nudge-y{0%,to{transform:translate(0)}22%{transform:translateY(26px)}38%{transform:translate(0)}60%{transform:translateY(-19px)}75%,to{transform:translate(0)}}.cell{background:var(--cell);border:1px solid #00f5ff0f;border-radius:.35rem}#tiles{position:absolute;inset:.5rem}.tile{transition:left var(--move-ms) ease, top var(--move-ms) ease;border-radius:.35rem;justify-content:center;align-items:center;font-size:clamp(1rem,6vw,1.9rem);font-weight:700;display:flex;position:absolute}.tile.materialize{animation:.16s ease-out materialize}@keyframes materialize{0%{opacity:0;transform:scale(.3)}60%{opacity:1;transform:scale(1.08)}to{opacity:1;transform:scale(1)}}.tile.merge-pop{animation:.26s ease-out merge-pop}@keyframes merge-pop{0%{filter:brightness();transform:scale(1)}35%{filter:brightness(1.6);transform:scale(1.28)}to{filter:brightness();transform:scale(1)}}.tile.glitch{color:#ff3b3b;text-shadow:0 0 8px #ff2828e6;background:repeating-linear-gradient(45deg,#ff1e1e59 0 6px,#0a000099 6px 12px),#1a0505;animation:1.6s step-end infinite glitch-idle;box-shadow:0 0 16px #ff1e1e80,inset 0 0 12px #ff00004d}@keyframes glitch-idle{0%,82%,to{filter:none;transform:translate(0)}85%{filter:brightness(1.4);transform:translate(-1px,1px)}88%{filter:none;transform:translate(1px,-1px)}91%{filter:brightness(1.6);transform:translate(-1px)}94%{filter:none;transform:translate(0)}}.tile.corrupt{animation:.22s steps(2,end) corrupt}@keyframes corrupt{0%{filter:brightness()saturate();transform:scale(1)translate(0)}30%{filter:brightness(2)saturate(0);transform:scale(1.15)translate(2px,-1px)}60%{filter:brightness(1.5)saturate(.4)hue-rotate(-30deg);transform:scale(.95)translate(-2px,1px)}to{filter:none;transform:scale(1)translate(0)}}.tile.purge{pointer-events:none;animation:.2s ease-in forwards purge}@keyframes purge{0%{opacity:1;filter:brightness()hue-rotate();transform:scale(1)}40%{opacity:.9;filter:brightness(2.2)hue-rotate(90deg);transform:scale(1.25)}to{opacity:0;filter:brightness(2.5)hue-rotate(160deg);transform:scale(.15)}}.tile[data-value="2"]{color:#7fe9ff;background:#123b45;box-shadow:0 0 10px #00f5ff40}.tile[data-value="4"]{color:#63f5d0;background:#0f4a4a;box-shadow:0 0 12px #00ffc84d}.tile[data-value="8"]{color:#e17bff;background:#3a1246;box-shadow:0 0 12px #e15aff59}.tile[data-value="16"]{color:#ff7bd6;background:#4a0f3d;box-shadow:0 0 14px #ff3cd266}.tile[data-value="32"]{color:#ff5fc4;background:#55103a;box-shadow:0 0 16px #ff2dc373}.tile[data-value="64"]{color:#ff4fae;background:#5c0e2d;box-shadow:0 0 18px #ff28aa80}.tile[data-value="128"]{color:#ffd85e;background:#5a3600;font-size:clamp(.95rem,5.5vw,1.7rem);box-shadow:0 0 18px #ffc83c80}.tile[data-value="256"]{color:#ffcf3d;background:#663200;font-size:clamp(.95rem,5.5vw,1.7rem);box-shadow:0 0 20px #ffbe288c}.tile[data-value="512"]{color:#ff9a3d;background:#6e2400;font-size:clamp(.9rem,5vw,1.6rem);box-shadow:0 0 22px #ff821e99}.tile[data-value="1024"]{color:#ff6b5e;background:#701818;font-size:clamp(.85rem,5vw,1.5rem);box-shadow:0 0 24px #ff5a3ca6}.tile[data-value="2048"]{color:#fff;box-shadow:0 0 10px #fff, 0 0 22px var(--accent-cyan), 0 0 34px var(--accent-magenta);background:#101010;font-size:clamp(.85rem,5vw,1.5rem)}#overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#06050cd1;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#overlay[hidden]{display:none}#replay{cursor:pointer;width:4.5rem;height:4.5rem;color:var(--accent-cyan);background:#00f5ff14;border:1px solid #00f5ff80;border-radius:999px;font-size:2rem;line-height:1;animation:1.2s ease-in-out infinite pulse;box-shadow:0 0 20px #00f5ff59}#overlay.lost #replay{color:#ff6a6a;background:#ff3c3c14;border-color:#ff5a5a99;box-shadow:0 0 20px #ff464659}#overlay.won #replay{color:#ffd60a;background:#ffd60a1a;border-color:#ffd60ab3;box-shadow:0 0 26px #ffd60a80}#replay:after{content:"↻"}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@media (prefers-reduced-motion:reduce){#board.invite-x,#board.invite-y,h1,.tile,.tile.materialize,.tile.merge-pop,.tile.glitch,.tile.corrupt,.tile.purge,#replay{animation:none!important}.tile{transition:none!important}}
