:root{--wine:#4b081b;--red:#e53945;--aqua:#20c4d4;--paper:#f4e7e9;--ink:#25191e;--muted:#725f67}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper);font-family:Arial,Helvetica,sans-serif}a{color:inherit}header{width:min(1240px,calc(100% - 36px));height:76px;margin:auto;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:10px;text-decoration:none}.brand img{width:40px;height:40px;border-radius:10px}nav{display:flex;gap:24px}nav a{text-decoration:none;color:var(--muted);font-size:.9rem}.play{padding:46px max(20px,calc((100vw - 1240px)/2)) 86px;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(290px,.75fr);gap:clamp(42px,7vw,94px);align-items:center;color:#fff;background:radial-gradient(circle at 82% 12%,rgba(239,64,81,.34),transparent 27%),linear-gradient(135deg,#21040c,#640e2b 58%,#390716)}small{display:block;margin-bottom:10px;color:var(--aqua);font-weight:900;letter-spacing:.14em;text-transform:uppercase}h1{margin:0;font-size:clamp(2.6rem,5vw,4.6rem);line-height:.9;letter-spacing:-.06em}h2{margin:0 0 26px;font-size:clamp(2.8rem,5.5vw,5.5rem);line-height:.94;letter-spacing:-.06em}.game-panel{width:min(680px,100%);margin:auto;padding:clamp(18px,4vw,36px);border:1px solid rgba(255,255,255,.14);border-radius:30px;background:rgba(255,255,255,.075);box-shadow:0 35px 90px rgba(0,0,0,.34);backdrop-filter:blur(18px)}.game-heading{display:flex;justify-content:space-between;align-items:end;gap:18px}.stats{display:flex;gap:8px}.stats span{min-width:76px;padding:7px;border:1px solid rgba(255,255,255,.13);border-radius:11px;color:rgba(255,255,255,.5);font-size:.64rem;text-align:center;text-transform:uppercase}.stats b{display:block;color:#fff;font-size:1rem}.trophies{display:grid;grid-template-columns:repeat(11,1fr);gap:4px;margin:22px 0 17px}.trophies span{aspect-ratio:1;display:grid;place-items:center;border-radius:7px;color:rgba(255,255,255,.25);background:rgba(255,255,255,.08);font-size:clamp(.43rem,1.2vw,.62rem);font-weight:900}.trophies .earned{color:#fff;background:linear-gradient(135deg,#ed3d50,var(--aqua))}.game-layout{width:min(480px,100%);margin:auto;display:grid;grid-template-columns:50px minmax(0,1fr) 50px;grid-template-rows:50px auto 50px;gap:7px;grid-template-areas:". top ." "left board right" ". bottom ."}.edge-row,.edge-column{display:grid;gap:7px}.edge-row{grid-template-columns:repeat(4,1fr)}.edge-column{grid-template-rows:repeat(4,1fr)}.top{grid-area:top}.bottom{grid-area:bottom}.left{grid-area:left}.right{grid-area:right}.edge{min-width:0;min-height:0;padding:0;border:0;border-radius:10px;color:#fff;background:var(--red);font-weight:900;cursor:pointer;box-shadow:0 7px 17px rgba(0,0,0,.18);touch-action:manipulation}.edge:hover:not(:disabled){transform:scale(1.05)}.edge:disabled{opacity:.18;cursor:default}.edge.locked{color:rgba(255,255,255,.4);background:transparent;box-shadow:none;font-size:1.4rem}.board{grid-area:board;position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding:8px;border:3px solid #fff;border-radius:15px;background:rgba(255,255,255,.9);box-shadow:0 16px 40px rgba(0,0,0,.24)}.tile{aspect-ratio:1;display:grid;place-items:center;border-radius:10px;color:#fff;background:#d9dee3;font-size:clamp(1rem,4vw,1.55rem);font-weight:900}.v2{background:#e53945}.v4{background:#ea3e60}.v8{background:#e84383}.v16{background:#d947ad}.v32{background:#b64dce}.v64{background:#8a58e3}.v128{background:#6268e8}.v256{background:#477fec}.v512{background:#329ddc}.v1024{color:#20252b;background:#24bdd3}.v2048{color:#20252b;background:#20d8e4}.over{position:absolute;inset:8px;display:grid;place-content:center;gap:6px;border-radius:10px;text-align:center;background:rgba(33,4,12,.84);backdrop-filter:blur(4px)}.over b{font-size:1.15rem}.over span{color:rgba(255,255,255,.65)}.status{min-height:42px;margin-top:16px;display:flex;align-items:center;justify-content:center;gap:9px;color:rgba(255,255,255,.66);font-size:.8rem;text-align:center}.status i{width:7px;height:7px;border-radius:50%;background:var(--aqua);box-shadow:0 0 12px var(--aqua)}.actions{display:flex;justify-content:center;gap:9px}.actions button{min-height:42px;padding:0 17px;border:1px solid rgba(255,255,255,.22);border-radius:999px;color:#fff;background:transparent;font-weight:800;cursor:pointer}.actions .primary{color:#063037;border-color:transparent;background:var(--aqua)}details{margin-top:17px;padding-top:13px;border-top:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.67);font-size:.82rem}summary{color:#fff;font-weight:800;cursor:pointer}details p{line-height:1.55}.achievements{display:flex;flex-wrap:wrap;justify-content:center;gap:5px;margin-top:15px}.achievements span{padding:5px 8px;border:1px solid rgba(255,255,255,.11);border-radius:999px;color:rgba(255,255,255,.3);font-size:.66rem}.achievements .unlocked{color:#fff;border-color:rgba(32,196,212,.55);background:rgba(32,196,212,.14)}aside>p{color:rgba(255,255,255,.7);font-size:1.05rem;line-height:1.7}aside ul{margin:30px 0;padding:0;list-style:none}aside li{display:grid;gap:4px;padding:14px 0;border-top:1px solid rgba(255,255,255,.15)}aside li:last-child{border-bottom:1px solid rgba(255,255,255,.15)}aside li span{color:rgba(255,255,255,.48);font-size:.86rem}.stamp{display:inline-block;margin-bottom:32px;padding:9px 12px 7px;border:2px solid #ff7a86;transform:rotate(-2deg);color:#ff919b;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase}.story{padding:110px max(24px,calc((100vw - 1180px)/2));display:grid;grid-template-columns:.9fr 1.1fr;gap:90px}.story small{color:var(--wine)}.story p{color:var(--muted);font-size:1.04rem;line-height:1.75}.story blockquote{margin:38px 0 12px;padding-left:22px;border-left:4px solid var(--red);color:var(--wine);font-size:1.3rem;font-weight:800;line-height:1.5}.story div:last-child>small{color:var(--muted);font-size:.7rem}footer{min-height:110px;padding:26px max(24px,calc((100vw - 1180px)/2));display:flex;align-items:center;justify-content:space-between;background:#16080d;color:rgba(255,255,255,.55);font-size:.82rem}footer a{color:var(--aqua)}@media(max-width:820px){.play,.story{grid-template-columns:1fr;gap:62px}.play{padding-top:28px}.story{padding-block:82px}footer{align-items:flex-start;flex-direction:column;gap:12px}}@media(max-width:520px){header nav a:nth-child(2){display:none}.game-panel{padding:16px 11px 20px;border-radius:19px}.game-heading{align-items:start;flex-direction:column}.stats{align-self:stretch}.stats span{flex:1}.game-layout{grid-template-columns:39px minmax(0,1fr) 39px;grid-template-rows:39px auto 39px;gap:5px}.edge-row,.edge-column,.board{gap:5px}.board{padding:6px}.trophies{gap:3px}.trophies span{border-radius:5px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* A new tile visibly travels from the chosen edge before the board resolves. */
.incoming{z-index:4;aspect-ratio:1;display:grid;place-items:center;border-radius:10px;color:#fff;background:#e53945;font-size:clamp(1rem,4vw,1.55rem);font-weight:900;box-shadow:0 8px 18px rgba(80,0,24,.28);pointer-events:none;animation-duration:220ms;animation-timing-function:cubic-bezier(.22,.8,.25,1);animation-fill-mode:both}.incoming.replay-speed{animation-duration:90ms}.incoming-top{grid-column:var(--incoming-line);grid-row:1;animation-name:enter-top}.incoming-bottom{grid-column:var(--incoming-line);grid-row:4;animation-name:enter-bottom}.incoming-left{grid-column:1;grid-row:var(--incoming-line);animation-name:enter-left}.incoming-right{grid-column:4;grid-row:var(--incoming-line);animation-name:enter-right}@keyframes enter-top{from{transform:translateY(calc(-100% - 19px))}to{transform:translateY(0)}}@keyframes enter-bottom{from{transform:translateY(calc(100% + 19px))}to{transform:translateY(0)}}@keyframes enter-left{from{transform:translateX(calc(-100% - 19px))}to{transform:translateX(0)}}@keyframes enter-right{from{transform:translateX(calc(100% + 19px))}to{transform:translateX(0)}}@media(prefers-reduced-motion:reduce){.incoming{animation-duration:1ms}}
.game-layout{width:min(550px,100%);aspect-ratio:1;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(6,minmax(0,1fr));grid-template-areas:". top top top top ." "left board board board board right" "left board board board board right" "left board board board board right" "left board board board board right" ". bottom bottom bottom bottom ."}.incoming-layer{position:absolute;z-index:4;inset:8px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(4,minmax(0,1fr));gap:7px;pointer-events:none}@media(max-width:520px){.game-layout{grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(6,minmax(0,1fr));gap:5px}.incoming-layer{inset:6px;gap:5px}}
.moving-layer{--move-gap:7px;position:absolute;z-index:4;inset:8px;pointer-events:none}.moving-tile{--move-cell:calc((100% - (3 * var(--move-gap)))/4);position:absolute;top:calc(var(--source-row)*(var(--move-cell) + var(--move-gap)));left:calc(var(--source-column)*(var(--move-cell) + var(--move-gap)));width:var(--move-cell);height:var(--move-cell);display:grid;place-items:center;border-radius:10px;color:#fff;font-size:clamp(1rem,4vw,1.55rem);font-weight:900;box-shadow:0 8px 18px rgba(80,0,24,.28);animation:move-whole-line 220ms ease-in-out both}.moving-tile.replay-speed{animation-duration:55ms}@keyframes move-whole-line{to{transform:translate(calc(var(--delta-column)*(var(--move-cell) + var(--move-gap))),calc(var(--delta-row)*(var(--move-cell) + var(--move-gap))))}}@media(max-width:520px){.moving-layer{--move-gap:5px;inset:6px}}@media(prefers-reduced-motion:reduce){.moving-tile{animation-duration:1ms}}
.moving-layer{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(4,minmax(0,1fr));gap:var(--move-gap)}.moving-tile{position:static;width:auto;height:auto;animation-name:move-whole-line}@keyframes move-whole-line{from{transform:var(--move-from)}to{transform:var(--move-to)}}
