@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";:root{font-family:Manrope,sans-serif;color:#26343a;background:#f5efe4;font-synthesis:none;--ink:#26343a;--soft:#75807e;--paper:#f5efe4;--panel:#e9ddcd;--slot:#deceb9;--coral:#d4674d;--teal:#277b78;--cream:#fffaf2}*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(circle at 80% 12%,#f9d9bc55,transparent 28rem),var(--paper)}button{font:inherit;color:inherit;border:0;cursor:pointer}button:focus-visible{outline:3px solid #d4674d;outline-offset:3px}.app{min-height:100dvh;max-width:780px;margin:auto;padding:30px 34px 26px;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:12px;align-items:center}.brand-mark{width:38px;height:38px;border-radius:13px;background:var(--coral);display:flex;align-items:center;justify-content:center;gap:3px;transform:rotate(-8deg);box-shadow:0 5px 12px #c36c4c44}.brand-mark i{width:6px;height:19px;border-radius:5px;background:#fff5e8;display:block}.brand-mark i:nth-child(2){height:25px;opacity:.75}.brand-mark i:nth-child(3){height:14px;opacity:.52}.wordmark{font-size:23px;font-weight:800;letter-spacing:-1.3px}.wordmark span{color:var(--coral)}.tagline{color:var(--soft);font:10px DM Mono;letter-spacing:1.1px;margin-top:1px}.top-actions{display:flex;gap:10px}.icon-button{width:43px;height:43px;border-radius:14px;background:#eadfce;color:var(--ink);font-size:23px;line-height:1;transition:transform .18s ease,background .18s}.icon-button:hover{background:#dfcfbb;transform:translateY(-2px)}.game-head{display:flex;align-items:flex-end;justify-content:space-between;margin:68px 2px 20px}.eyebrow{font:500 10px DM Mono;letter-spacing:1.8px;color:var(--coral)}.dot{display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--teal);vertical-align:middle;margin-left:7px}h1{font-size:27px;line-height:1.1;margin:7px 0 0;letter-spacing:-1.1px}.stat{text-align:right}.stat strong{font-size:34px;line-height:.9;display:block;letter-spacing:-1px}.stat span{font:500 9px DM Mono;color:var(--soft);letter-spacing:1.5px}.board-shell{width:min(100%,540px);aspect-ratio:1;margin:0 auto;background:var(--panel);padding:clamp(12px,2vw,18px);border-radius:31px;display:grid;grid-template-columns:repeat(var(--n),1fr);gap:clamp(8px,1.7vw,15px);position:relative;touch-action:none;-webkit-user-select:none;user-select:none;box-shadow:0 16px 30px #a68e7433,inset 0 1px #fff4e4;--n:3}.cell{border-radius:clamp(12px,3vw,26px);background:var(--slot);min-width:0;transition:transform .22s cubic-bezier(.2,1.5,.4,1),background .2s;box-shadow:inset 0 2px 3px #c8b69f44}.cell.filled{box-shadow:inset 0 -3px 4px #00000015,0 4px 8px #75635033;animation:appear .24s both}.board-note{position:absolute;bottom:11px;left:0;right:0;text-align:center;color:#52636066;font:500 9px DM Mono;letter-spacing:2px;pointer-events:none}.nudge-l .cell,.nudge-r .cell{animation:slideX .25s both}.nudge-u .cell,.nudge-d .cell{animation:slideY .25s both}@keyframes appear{0%{transform:scale(.82);opacity:.6}to{transform:scale(1);opacity:1}}@keyframes slideX{0%{transform:translate(0)}45%{transform:translate(var(--j,3px))}to{transform:translate(0)}}@keyframes slideY{0%{transform:translateY(0)}45%{transform:translateY(var(--j,3px))}to{transform:translateY(0)}}.below-board{display:flex;justify-content:space-between;align-items:center;color:var(--soft);font-size:11px;padding:15px 4px 20px}.hint b{font:500 10px DM Mono;color:var(--ink)}.personal-best{font:11px DM Mono}.personal-best b{color:var(--teal)}.controls{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #dfd2c2;padding:18px 7px 0}.controls button{background:none;color:var(--ink);display:flex;gap:9px;align-items:center;font:700 11px DM Mono;letter-spacing:1px;transition:color .15s,transform .15s}.controls button:hover{color:var(--coral);transform:translateY(-2px)}.controls button:first-child,.controls button:last-child{width:108px}.controls button:last-child{justify-content:flex-end}.controls button{font-size:17px}.controls button span{font-size:10px}.controls kbd{font:500 9px DM Mono;color:#9a958b;background:#e9dece;padding:4px 5px;border-radius:5px}.controls .reset{background:#e9dece;padding:10px 15px;border-radius:13px;color:var(--coral)}.overlay{position:fixed;z-index:10;top:0;right:0;bottom:0;left:0;background:#26343a66;display:flex;justify-content:center;align-items:flex-end;padding:20px}.modal,.win-card{background:var(--cream);border-radius:28px;padding:27px;box-shadow:0 25px 70px #26343a35;width:min(100%,620px);max-height:90dvh;overflow:auto}.modal-head{display:flex;justify-content:space-between;align-items:start}.modal h2,.win-card h2{margin:5px 0 0;font-size:28px;letter-spacing:-1px}.close-text{background:var(--ink);color:var(--cream);border-radius:11px;padding:10px 15px;font-size:12px;font-weight:700}.modal-copy{color:var(--soft);font-size:13px;line-height:1.55;max-width:390px;margin:17px 0 22px}.level-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:11px}.level-option{background:#f1e8da;border-radius:15px;padding:10px;text-align:left;transition:transform .18s,background .18s}.level-option:hover,.level-option.selected{background:#ead5c5;transform:translateY(-2px)}.level-option>span{font:500 10px DM Mono;color:#9c9387}.mini-grid{display:grid;gap:3px;margin:8px 0}.mini-grid i{aspect-ratio:1;border-radius:3px}.level-option small{font:10px DM Mono;color:var(--soft)}.palette-list{display:grid;gap:9px}.palette-option{display:flex;align-items:center;gap:15px;padding:13px 15px;background:#f1e8da;border-radius:14px;text-align:left;font-weight:700}.palette-option:hover{background:#ead5c5}.swatches{display:flex}.swatches i{width:25px;height:25px;border-radius:50%;border:2px solid var(--cream);margin-left:-5px}.swatches i:first-child{margin-left:0}.win-card{position:fixed;z-index:11;left:50%;top:50%;transform:translate(-50%,-50%);max-width:380px;text-align:center}.modal-close{position:absolute;right:20px;top:17px;background:none;font-size:26px;color:var(--soft)}.win-mark{width:56px;height:56px;margin:0 auto 18px;border-radius:19px;background:var(--teal);color:var(--cream);font-size:30px;display:grid;place-items:center}.win-card h2{font-size:25px}.win-card p{color:var(--soft);font-size:13px;margin:22px 0 3px}.win-score{font-size:52px;line-height:1}.win-score small{font-size:15px;color:var(--soft)}.best-line{border-top:1px solid #eadfd2;border-bottom:1px solid #eadfd2;padding:12px;margin:20px 0 12px;color:var(--teal);font:500 10px DM Mono;letter-spacing:1.4px}.share-button{background:none;color:var(--teal);font-size:12px;font-weight:800;padding:10px}.win-actions{display:flex;gap:10px;margin-top:11px}.win-actions button{flex:1;background:#eadfd2;border-radius:13px;padding:14px;font-size:12px;font-weight:700}.win-actions .primary{background:var(--coral);color:var(--cream)}@media (min-width:760px){.overlay{align-items:center}.app{padding-top:38px}.game-head{margin-top:76px}.board-shell{width:min(64vw,540px)}}@media (max-width:520px){.app{padding:22px 18px 18px}.game-head{margin-top:48px}.game-head h1{font-size:23px}.below-board{font-size:10px}.hint{max-width:220px;line-height:1.5}.modal,.win-card{padding:23px}.board-shell{border-radius:25px}}.app{padding-top:26px;padding-bottom:20px}.game-head{margin-top:38px;margin-bottom:16px}.wordmark .wordmark-blue{color:#6f94a6}.wordmark .wordmark-coral{color:#c47e68}.wordmark .wordmark-ochre{color:#d1a75e}.board-shell{width:min(100%,52dvh,460px)}.below-board{gap:14px}.direction-controls{display:flex;gap:5px}.direction-controls button{width:44px;height:44px;border-radius:12px;background:#e9dece;color:var(--ink);font-size:17px;transition:transform .15s ease,background .15s ease}.replay-notice{position:fixed;z-index:12;left:50%;bottom:22px;width:min(calc(100% - 32px),430px);transform:translate(-50%);display:flex;align-items:center;gap:14px;padding:12px 12px 12px 18px;border:1px solid #d9cab7;border-radius:18px;background:var(--cream);box-shadow:0 16px 40px #6d5c4938}.replay-notice>span{flex:1;font-size:12px;font-weight:700}.replay-notice small{display:block;margin-top:2px;color:var(--soft);font:9px DM Mono;letter-spacing:.8px}.replay-notice button{min-height:42px;padding:0 15px;border-radius:12px;background:var(--coral);color:var(--cream);font-size:11px;font-weight:800}.replay-notice .notice-close{min-width:34px;padding:0;background:transparent;color:var(--soft);font-size:22px}.direction-controls button:hover{background:#dfcfbb;transform:translateY(-2px)}.direction-controls button:active{transform:scale(.94)}.stat small{display:block;margin-top:6px;color:var(--teal);font:500 9px DM Mono;letter-spacing:.8px}.level-option-head{display:flex;min-height:19px;align-items:center;justify-content:space-between;gap:6px}.level-option-head>span:first-child{color:#9c9387;font:500 10px DM Mono}.star-badge{width:17px;height:17px;display:inline-grid;place-items:center;border:1px solid #277b7838;border-radius:50%;background:#dce9e3;color:#276c69;font:10px/1 sans-serif;font-style:normal;box-shadow:0 2px 5px #496e6020}.personal-best .star-badge{display:inline-block;margin-left:6px;text-align:center;vertical-align:-4px;line-height:15px}.level-filters{display:flex;align-items:center;gap:6px;margin:-7px 0 18px}.level-filters button{padding:7px 10px;border-radius:999px;background:transparent;color:var(--soft);font:500 9px DM Mono;text-transform:capitalize}.level-filters button:hover,.level-filters button.active{background:#e8ded0;color:var(--ink)}.filter-icon{width:14px;height:13px;margin-right:3px;background:var(--teal);clip-path:polygon(0 0,100% 0,62% 48%,62% 100%,38% 100%,38% 48%)}.level-option small b{color:var(--teal);font-weight:500}.board-shell[class*=nudge-] .cell.filled.moved{will-change:transform,box-shadow;animation-duration:.36s;animation-timing-function:cubic-bezier(.18,.82,.28,1);animation-fill-mode:both}.board-shell[class*=nudge-] .cell:not(.moved){animation:none}.nudge-l .cell.filled.moved{animation-name:weighted-left}.nudge-r .cell.filled.moved{animation-name:weighted-right}.nudge-u .cell.filled.moved{animation-name:weighted-up}.nudge-d .cell.filled.moved{animation-name:weighted-down}.board-shell.celebrating .cell.filled{animation:completion-settle .7s cubic-bezier(.2,.9,.25,1) both}.completion-burst{position:absolute;z-index:3;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;justify-items:center;border-radius:inherit;background:#fffaf2d9;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:completion-reveal 1.4s ease both;pointer-events:none}.completion-burst i{width:54px;height:54px;display:grid;place-items:center;margin-bottom:13px;border-radius:18px;background:var(--teal);color:var(--cream);font-size:27px;font-style:normal;box-shadow:0 10px 24px #277b7840;animation:completion-mark .65s cubic-bezier(.2,1.45,.35,1) both}.completion-burst strong{color:var(--ink);font-size:20px;letter-spacing:-.5px}.completion-burst span{margin-top:5px;color:var(--soft);font:10px DM Mono;letter-spacing:1px}.completion-burst small{margin-top:11px;padding:6px 9px;border-radius:8px;background:#e8ded0;color:var(--teal);font:500 9px DM Mono;letter-spacing:.5px}.controls button:disabled{cursor:default;opacity:.45;transform:none}@keyframes completion-settle{0%{transform:scale(1)}38%{transform:scale(.94)}68%{transform:scale(1.035)}to{transform:scale(1)}}@keyframes completion-mark{0%{opacity:0;transform:translateY(10px) scale(.65) rotate(-8deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}@keyframes completion-reveal{0%{opacity:0}14%,82%{opacity:1}to{opacity:0}}@keyframes weighted-left{0%{transform:translate(7px) scaleX(.985)}48%{transform:translate(-11px) scaleX(1.025);box-shadow:inset 3px -3px 5px #00000018,5px 6px 9px #7563502b}72%{transform:translate(2.5px) scaleX(.992)}to{transform:translate(0) scale(1)}}@keyframes weighted-right{0%{transform:translate(-7px) scaleX(.985)}48%{transform:translate(11px) scaleX(1.025);box-shadow:inset -3px -3px 5px #00000018,-5px 6px 9px #7563502b}72%{transform:translate(-2.5px) scaleX(.992)}to{transform:translate(0) scale(1)}}@keyframes weighted-up{0%{transform:translateY(7px) scaleY(.985)}48%{transform:translateY(-11px) scaleY(1.025);box-shadow:inset 0 3px 5px #00000018,0 7px 10px #7563502b}72%{transform:translateY(2.5px) scaleY(.992)}to{transform:translateY(0) scale(1)}}@keyframes weighted-down{0%{transform:translateY(-7px) scaleY(.985)}48%{transform:translateY(11px) scaleY(1.025);box-shadow:inset 0 -3px 5px #00000018,0 3px 7px #7563502b}72%{transform:translateY(-2.5px) scaleY(.992)}to{transform:translateY(0) scale(1)}}@media (prefers-reduced-motion: reduce){.board-shell[class*=nudge-] .cell.filled.moved{animation-duration:1ms}.board-shell.celebrating .cell.filled,.completion-burst,.completion-burst i{animation:none}}@media (min-width: 760px){.app{padding-top:30px}.game-head{margin-top:38px}.board-shell{width:min(100%,52dvh,460px)}}@media (max-width: 520px){.game-head{margin-top:30px}.board-shell{width:min(100%,48dvh,430px)}.below-board{flex-wrap:wrap}.direction-controls{order:3;width:100%;justify-content:center}}.account-button{min-width:43px;height:43px;border-radius:14px;padding:0 13px;background:var(--teal);color:var(--cream);font-size:11px;font-weight:800;letter-spacing:.3px;line-height:1}.account-button.signed-in{width:43px;padding:0;font-size:16px}.account-button:hover{background:#216c69;transform:translateY(-2px)}.account-panel{display:grid;gap:15px}.account-profile{display:flex;gap:13px;align-items:center;padding:14px;background:#f1e8da;border-radius:15px}.account-profile img,.account-profile>span{width:42px;height:42px;border-radius:50%;object-fit:cover}.account-profile>span{display:grid;place-items:center;background:var(--teal);color:var(--cream);font-weight:800}.account-profile div{display:grid;gap:3px}.account-profile small,.account-status{color:var(--soft);font-size:12px}.account-status{margin:0;line-height:1.5}.account-action,.google-action{border-radius:13px;padding:13px 16px;font-size:12px;font-weight:800}.account-action{background:#eadfd2;color:var(--ink)}.google-action{background:var(--coral);color:var(--cream)}.account-action:disabled,.google-action:disabled{opacity:.6;cursor:wait}.auth-error{margin:0;color:#b54d38;font-size:12px}
