@font-face{font-family:Clear Sans;src:url(/assets/ClearSans-Regular-webfont-AndVGWF5.woff)format("woff");font-weight:400;font-display:swap}@font-face{font-family:Clear Sans;src:url(/assets/ClearSans-Bold-webfont-CsJVQqIs.woff)format("woff");font-weight:700;font-display:swap}:root{color:#51463b;font-synthesis:none;background:#faf8ef;font-family:Clear Sans,Arial,sans-serif;font-size:16px}*{box-sizing:border-box}html,body{min-width:320px}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:#65513d;text-underline-offset:3px}a:hover{text-decoration-thickness:2px}::selection{color:#34291f;background:#dfc590}:focus-visible{outline-offset:3px;outline:3px solid #a85c2b}input:focus-visible{outline-offset:1px}p{line-height:1.5}h1,h2,h3,p{margin-top:0}.app{min-height:100vh}.site-header{justify-content:space-between;align-items:end;gap:20px;max-width:1100px;margin:0 auto;padding:32px 24px 0;display:flex}.logo{letter-spacing:-.03em;color:#776e65;margin:0;font-size:80px;font-weight:700;line-height:1}.profile{text-align:right;align-items:center;gap:12px;min-width:0;display:flex}.profile-name{overflow-wrap:anywhere;font-weight:700}.text-button{color:#65513d;text-underline-offset:3px;background:0 0;border:0;padding:8px 0;font-weight:700;text-decoration:underline}.nav{border-bottom:1px solid #d8d0c5;gap:6px;max-width:1100px;margin:22px auto 0;padding:0 24px;display:flex}.nav button{color:#66594b;background:0 0;border:0;border-radius:4px 4px 0 0;padding:12px 18px;font-weight:700}.nav button[aria-current=page]{color:#3d3228;background:#ece5da;box-shadow:inset 0 -3px #8f7a66}.nav button:hover:not([aria-current=page]){background:#f0ebe2}.status-wrap{max-width:1100px;min-height:48px;margin:0 auto;padding:14px 24px 0}.status{color:#5f554c;font-size:14px}.status--error{color:#9c3d23}.status--warn{color:#704b20}.status button{margin-left:8px}.main{max-width:1100px;margin:0 auto;padding:14px 24px 70px}.main--solo{max-width:548px}.main--entry{max-width:550px;padding-top:64px}.intro{color:#695f55;font-size:20px;line-height:1.45}.entry-form,.inline-form,.join-form{flex-wrap:wrap;align-items:end;gap:10px;display:flex}.field{flex:220px;min-width:0}.field label{margin-bottom:7px;font-weight:700;display:block}.field input{color:#3b332c;background:#fffdf9;border:2px solid #b7a99a;border-radius:4px;width:100%;height:46px;padding:0 12px}.field input::placeholder{color:#74685c}.field-help{color:#6b6056;margin-top:8px;font-size:14px}.field-error,.error-text{color:#9c3d23;margin-top:8px;font-size:14px}.button{color:#fffdf9;text-align:center;background:#8f7a66;border:0;border-radius:4px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:9px 18px;font-weight:700;line-height:1.25;text-decoration:none;display:inline-flex}.button:hover:not(:disabled){background:#776451}.button--quiet{color:#4f4439;background:#e9e1d5}.button--quiet:hover:not(:disabled){background:#dcd1c1}.button--danger:hover:not(:disabled){background:#853a26}.button--small{min-height:40px;padding:7px 12px}.actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.muted{color:#665a50}.subtle{color:#665a50;font-size:14px}.section-title{color:#51463b;margin:0 0 8px;font-size:26px;line-height:1.2}.solo-top{justify-content:space-between;align-items:end;gap:12px;margin-bottom:14px;display:flex}.solo-top .intro{margin:0}.score-list{gap:5px;display:flex}.score-box{color:#fffdf9;text-align:center;font-variant-numeric:tabular-nums;background:#bbada0;border-radius:4px;min-width:82px;padding:6px 12px;font-size:25px;font-weight:700;line-height:1.15}.score-box small{text-transform:uppercase;color:#fffdf9;font-size:12px;line-height:1.35;display:block}.game-actions{justify-content:space-between;align-items:center;gap:12px;min-height:44px;margin:10px 0 16px;display:flex}.game-actions p{margin:0}.board-frame{position:relative}.board{--gap:3%;aspect-ratio:1;width:100%;padding:var(--gap);touch-action:none;-webkit-user-select:none;user-select:none;background:#bbada0;border-radius:6px;position:relative;overflow:hidden}.board-grid,.tile-layer{inset:var(--gap);position:absolute}.board-grid{gap:var(--gap);grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(4,1fr);display:grid}.grid-cell{background:#eee4da59;border-radius:3px}.tile{width:calc((100% - 3 * var(--gap)) / 4);height:calc((100% - 3 * var(--gap)) / 4);left:calc(var(--x) * (100% + var(--gap)) / 4);top:calc(var(--y) * (100% + var(--gap)) / 4);color:#51463b;font-variant-numeric:tabular-nums;z-index:2;background:#eee4da;border-radius:3px;place-items:center;font-size:clamp(25px,5vw,55px);font-weight:700;line-height:1;display:grid;position:absolute}.tile--moving,.tile--ghost{transition:left .1s ease-in-out,top .1s ease-in-out}.tile--ghost{z-index:3}.tile--new{animation:.2s .1s backwards tile-appear}.tile--merged{z-index:4;animation:.2s .1s backwards tile-pop}.tile--4{background:#ede0c8}.tile--8{color:#3d2a1d;background:#f2b179}.tile--16{color:#3b281d;background:#f59563}.tile--32{color:#38241c;background:#f67c5f}.tile--64{color:#fffdf9;background:#f65e3b}.tile--128{color:#382d16;background:#edcf72}.tile--256{color:#382d16;background:#edcc61}.tile--512{color:#382d16;background:#edc850}.tile--1024{color:#382d16;background:#edc53f}.tile--2048{color:#382d16;background:#edc22e}.tile--super{color:#fffdf9;background:#3c3a32}.tile:is(.tile--128,.tile--256,.tile--512){font-size:clamp(20px,4vw,43px)}.tile:is(.tile--1024,.tile--2048,.tile--super){font-size:clamp(16px,3vw,34px)}@keyframes tile-appear{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes tile-pop{0%{transform:scale(0)}50%{transform:scale(1.2)}to{transform:scale(1)}}.board-overlay{z-index:8;text-align:center;background:#faf8efd6;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:18px;display:flex;position:absolute;inset:0}.board-overlay strong{font-size:clamp(22px,6vw,42px);line-height:1.1}.board-overlay p{margin:0}.board-overlay--win{background:#edc22ec7}.instructions{margin:24px 0 0;font-size:15px}.direction-pad{display:none}.duo-intro{max-width:690px}.duo-entry{grid-template-columns:1fr 1fr;gap:28px;margin-top:28px;display:grid}.duo-entry section{border-top:2px solid #bbada0;padding-top:18px}.duo-entry p{max-width:33ch}.room-head{flex-wrap:wrap;justify-content:space-between;align-items:start;gap:20px;margin-bottom:20px;display:flex}.room-code{letter-spacing:.07em;color:#51463b;overflow-wrap:anywhere;margin:4px 0;font-size:30px;font-weight:700}.room-status{font-size:19px;font-weight:700}.room-actions{flex-wrap:wrap;gap:10px;display:flex}.invite-line{flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0 0;display:flex}.invite-line input{color:#4c4035;background:#fffdf9;border:1px solid #b7a99a;border-radius:4px;width:min(100%,420px);min-height:42px;padding:0 10px;font-size:14px}.players-line{flex-wrap:wrap;gap:16px;margin:18px 0;display:flex}.player-status{font-size:15px}.player-status strong{overflow-wrap:anywhere;display:block}.duo-boards{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:26px;display:grid}.duo-board-title{justify-content:space-between;align-items:start;gap:8px;min-height:56px;margin-bottom:9px;display:flex}.duo-board-title strong{overflow-wrap:anywhere;font-size:20px}.duo-board-title span{font-size:14px;display:block}.duo-board-title b{font-variant-numeric:tabular-nums;font-size:22px}.duo-board-title small{text-align:right;font-size:12px;display:block}.room-banner{background:#e9e1d5;border-radius:4px;margin:16px 0 20px;padding:13px 16px;font-weight:700;line-height:1.4}.room-banner p{margin:4px 0 0;font-size:15px;font-weight:400}.room-banner--result{background:#f3e4ae}.leader-tabs{gap:6px;margin:20px 0 18px;display:flex}.leader-tabs button[aria-selected=true]{color:#fffdf9;background:#8f7a66}.leader-table{border-collapse:collapse;table-layout:fixed;width:100%}.leader-table th,.leader-table td{text-align:left;overflow-wrap:anywhere;border-bottom:1px solid #ded7ca;padding:12px 10px}.leader-table th{text-transform:uppercase;color:#66594b;font-size:13px}.leader-table th:first-child,.leader-table td:first-child{width:58px}.leader-table .numeric{text-align:right;font-variant-numeric:tabular-nums}.leader-table tr.is-self{background:#eee7d9}.leader-table .name-cell{font-weight:700}.leader-table .name-cell small{font-size:12px;font-weight:400;display:block}.empty-state{color:#665a50;padding:20px 0}.dialog-backdrop{z-index:30;background:#2d231a73;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.dialog{background:#faf8ef;border-radius:6px;width:min(100%,430px);padding:24px;box-shadow:0 14px 38px #2d231a40}.dialog h2{font-size:24px}.dialog p{margin-bottom:22px}.dialog .actions{justify-content:flex-end}.footer{color:#665a50;border-top:1px solid #ded7ca;max-width:1100px;margin:20px auto;padding:20px 24px 35px;font-size:13px}.footer p{max-width:75ch;margin:0}.footer a{font-weight:700}.loading{text-align:center;place-items:center;min-height:40vh;display:grid}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=760px){.site-header{padding-top:22px}.logo{font-size:60px}.main--entry{padding-top:42px}.duo-boards{grid-template-columns:minmax(0,1fr)}.duo-board--opponent{align-items:start;gap:14px;display:flex}.duo-board--opponent .duo-board-title{flex:1;display:block}.duo-board--opponent .board-frame{flex:none;width:clamp(150px,36vw,190px)}.duo-board--opponent .tile{font-size:clamp(15px,3.5vw,26px)}.duo-board--opponent .tile:is(.tile--128,.tile--256,.tile--512,.tile--1024,.tile--2048,.tile--super){font-size:clamp(10px,2.3vw,18px)}.duo-entry{gap:22px}}@media (width<=520px){.site-header,.nav,.status-wrap,.main,.footer{padding-left:20px;padding-right:20px}.logo{font-size:56px}.site-header{align-items:center}.profile{font-size:14px;display:block}.profile .text-button{padding:2px 0}.nav{margin-top:14px}.nav button{flex:1;padding:11px 5px;font-size:14px}.main{padding-top:10px}.intro{font-size:17px}.solo-top{align-items:start}.score-box{min-width:69px;padding:5px 8px;font-size:21px}.score-box small{font-size:11px}.game-actions{margin:8px 0 12px}.duo-entry{grid-template-columns:1fr}.room-head{margin-bottom:10px}.duo-boards{gap:18px}.duo-board-title strong{font-size:17px}.duo-board--opponent .board-frame{width:clamp(145px,42vw,180px)}.direction-pad{grid-template-rows:repeat(2,44px);grid-template-columns:repeat(3,44px);gap:4px;width:fit-content;margin:14px auto;display:grid}.direction-pad button{color:#4c4035;background:#e3d9ca;border:0;border-radius:4px;font-weight:700}.direction-pad button:disabled{opacity:.5}.direction-pad .up{grid-column:2}.direction-pad .left{grid-area:2/1}.direction-pad .down{grid-area:2/2}.direction-pad .right{grid-area:2/3}.leader-table th,.leader-table td{padding:10px 5px;font-size:13px}.leader-table th:first-child,.leader-table td:first-child{width:33px}.leader-table th:nth-last-child(2),.leader-table td:nth-last-child(2){display:none}}@media (prefers-reduced-motion:reduce){.tile,.tile--moving,.tile--ghost{transition:none!important;animation:none!important}*{scroll-behavior:auto!important}}.button{background:#776451}.button--quiet{background:#e9e1d5}.button--danger{background:#963e29}.score-box,.score-box small{color:#342b23}@media (width<=520px){.profile-name{display:block}.leader-table th:nth-last-child(2),.leader-table td:nth-last-child(2){display:table-cell}}#app[aria-busy=true] .button[data-action],#app[aria-busy=true] button[data-direction],#app[aria-busy=true] form button{pointer-events:none;opacity:.5}.button:hover:not(:disabled):not(.button--quiet):not(.button--danger){background:#65513d}.leader-tabs button[aria-selected=true],.leader-tabs button[aria-selected=true]:hover:not(:disabled){color:#fffdf9;background:#776451}.leader-table th:first-child,.leader-table td:first-child{white-space:nowrap;width:40px}@media (width<=760px){.duo-board--opponent .tile--64{color:#38241c}}
