/* Isolated styles; reuse the portfolio's navy, blue and typography. */
.game2048{--game-gap:7px;display:grid;grid-template-columns:minmax(180px,230px) minmax(0,1fr);gap:20px;align-items:center;background:#fff;border:1px solid #d5e0f2;border-radius:16px;padding:16px;margin:22px 0 24px;position:relative;box-shadow:0 6px 24px #10254005;max-width:580px}
.game2048-board{position:relative;padding:8px;background:#d8e3f6;border-radius:12px;aspect-ratio:1;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;outline:none}
.game2048-board:active{cursor:grabbing}
.game2048-board:focus-visible{outline:3px solid var(--blue);outline-offset:4px}
.game2048-board:focus{box-shadow:0 0 0 3px #245eea15}
.game2048-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--game-gap);width:100%;height:100%}
.game2048-grid>span{border-radius:7px;background:#edf2fb}
.game2048-tiles{position:absolute;inset:8px;pointer-events:none}
.game2048-tile{position:absolute;display:flex;align-items:center;justify-content:center;left:calc(var(--x) * (100% + var(--game-gap)) / 4);top:calc(var(--y) * (100% + var(--game-gap)) / 4);width:calc((100% - 3 * var(--game-gap)) / 4);height:calc((100% - 3 * var(--game-gap)) / 4);font-size:clamp(20px,2vw,28px);font-weight:750;letter-spacing:-.04em;line-height:1;border-radius:7px;background:#d9e7ff;color:#102540;transition:left 100ms ease-out,top 100ms ease-out;box-shadow:0 2px 3px #10254008}
.game2048-tile[data-level="2"]{background:#b9d4ff}.game2048-tile[data-level="3"]{background:#8db9fc}.game2048-tile[data-level="4"]{background:#5b96ee;color:#092345}.game2048-tile[data-level="5"]{background:#245eea;color:#fff}.game2048-tile[data-level="6"]{background:#174cca;color:#fff}.game2048-tile[data-level="7"]{background:#143c9e;color:#fff}.game2048-tile[data-level="8"]{background:#12327d;color:#fff}.game2048-tile[data-level="9"]{background:#102540;color:#fff}.game2048-tile[data-level="10"]{background:#0b1932;color:#fff}.game2048-tile[data-level="11"]{background:#173670;color:#fff;box-shadow:inset 0 0 0 2px #a7c7ff}
.game2048-small-number{font-size:clamp(14px,1.4vw,20px);letter-spacing:-.05em}.game2048-pop{animation:game2048-appear 130ms ease-out}
@keyframes game2048-appear{from{transform:scale(.65);opacity:.5}to{transform:scale(1);opacity:1}}
.game2048-info{min-width:0}.game2048-title{display:flex;align-items:baseline;gap:9px;margin-bottom:7px}.game2048-title h2{font-size:32px;letter-spacing:-.06em;line-height:1;margin:0;color:var(--ink)}.game2048-title>span{font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--blue)}
.game2048-info p{font-size:12px;line-height:1.55;color:var(--muted);margin:8px 0}.game2048-scores{display:flex;gap:7px;margin:12px 0}.game2048-scores>div{padding:7px 10px;background:#eff4ff;border-radius:8px;min-width:64px;flex:1}.game2048-scores span{display:block;font-size:10px;line-height:1.4;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.game2048-scores strong{font-size:18px;line-height:1.4;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.game2048 button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:7px 12px;border:1px solid #cdd7e6;border-radius:8px;background:white;color:var(--ink);font-size:12px;font-weight:650;line-height:1.4;transition:background .15s}
.game2048 button:hover{background:#edf3ff;border-color:#9cb8f5}.game2048 .game2048-primary{background:var(--blue);color:#fff;border-color:var(--blue)}.game2048 .game2048-primary:hover{background:#164bc8}
.game2048-directions{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-top:9px}.game2048-directions button{padding:0;font-size:18px;min-width:0;min-height:36px}.game2048-help{margin-bottom:0!important}.game2048-help b{font-weight:600;color:var(--ink)}
.game2048-overlay{position:absolute;inset:0;z-index:2;border-radius:12px;background:#eff4fff2;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px;gap:9px;text-align:center;cursor:default}.game2048-overlay strong{font-size:22px;line-height:1.25}.game2048-overlay button{min-height:44px}.game2048 [hidden]{display:none!important}
.game2048-reset{position:absolute;inset:0;z-index:3;background:#fffffff7;border:1px solid #b9ccec;border-radius:16px;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:20px;gap:12px;text-align:center}.game2048-reset p{margin:0;font-size:14px}.game2048-reset>div{display:flex;gap:10px}.game2048-reset button{min-height:44px}
.game2048-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:1060px){
 .game2048{grid-template-columns:96px minmax(0,1fr);padding:14px;gap:12px;margin-top:20px;--game-gap:7px}
 .game2048-info{display:contents}.game2048-info>p:first-of-type{display:none}
 .game2048-title{grid-column:1;grid-row:1;display:block;margin:0}.game2048-title h2{font-size:32px}.game2048-title>span{font-size:9px}
 .game2048-scores{grid-column:2;grid-row:1;margin:0;gap:7px}.game2048-scores>div{min-width:0;padding:6px 8px}.game2048-scores strong{font-size:18px}
 .game2048-board{grid-row:2;grid-column:1/-1;width:100%;max-width:280px;justify-self:center}
 .game2048-tile{font-size:29px}.game2048-small-number{font-size:20px}
 .game2048-info>[data-game-new]{grid-column:1;grid-row:3;min-height:44px;padding:7px}
 .game2048-directions{grid-column:2;grid-row:3;margin:0;gap:4px}.game2048-directions button{min-height:44px;font-size:19px}
 .game2048-help{grid-column:1/-1;grid-row:4;text-align:center;font-size:11px!important;margin:0!important}
 .game2048-help b{display:block}.game2048 button{min-height:44px}
}
@media(max-width:374px){.game2048{grid-template-columns:85px minmax(0,1fr);padding:12px;gap:10px}.game2048-directions{grid-column:1/-1;grid-row:4}.game2048-info>[data-game-new]{grid-column:1/-1}.game2048-help{grid-row:5}.game2048-board{max-width:250px}}
@media(prefers-reduced-motion:reduce){.game2048 *{transition:none!important;animation:none!important}}
