*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior:none;touch-action:manipulation}#app{min-height:100%;display:flex;align-items:center;justify-content:center;padding:16px}.game{width:min(92vw,420px);display:flex;flex-direction:column;gap:14px}.crumb{font-size:14px}.crumb a{color:var(--accent);text-decoration:none;font-weight:700}.crumb a:hover{text-decoration:underline}.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.title{font-size:clamp(30px,9vw,46px);font-weight:800;line-height:1;letter-spacing:-1px}.sizebar{display:flex;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:4px}.size{flex:1;border:none;background:transparent;color:var(--text);font-size:14px;font-weight:700;padding:8px 4px;border-radius:6px;cursor:pointer;transition:background .12s ease,color .12s ease}.size:hover{background:var(--line)}.size.active{background:var(--accent);color:var(--accent-text)}.stats{display:flex;gap:8px}.stat{flex:1;background:var(--board-bg);color:var(--accent-text);border-radius:6px;padding:6px 10px;text-align:center;min-width:0}.stat .label{font-size:10px;text-transform:uppercase;letter-spacing:1px;opacity:.85;font-weight:700}.stat .value{font-size:20px;font-weight:800;line-height:1.1;white-space:nowrap}.controls{display:flex;align-items:center;justify-content:space-between;gap:10px}.how{font-size:13px;opacity:.85;flex:1}.how b{font-weight:700}.btn{background:var(--accent);color:var(--accent-text);border:none;border-radius:6px;padding:10px 16px;font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap;transition:filter .12s ease}.btn:hover{filter:brightness(1.05)}.btn:active{filter:brightness(.95)}.board{--n: 4;--gap: clamp(6px, 2vw, 10px);--board: min(92vw, calc(100dvh - 260px) , 440px);--cell: calc((var(--board) - (var(--n) + 1) * var(--gap)) / var(--n));position:relative;width:var(--board);height:var(--board);min-width:264px;min-height:264px;align-self:center;background:var(--board-bg);border-radius:8px;padding:var(--gap);touch-action:none}.tiles{position:absolute;inset:var(--gap)}.tile{position:absolute;width:var(--cell);height:var(--cell);border:none;border-radius:6px;background:var(--cell-bg);color:var(--accent-text);font-weight:800;font-size:calc(var(--cell) * .44);cursor:pointer;-webkit-tap-highlight-color:transparent;--tx: calc(var(--col) * (var(--cell) + var(--gap)));--ty: calc(var(--row) * (var(--cell) + var(--gap)));transform:translate(var(--tx),var(--ty));transition:transform .13s cubic-bezier(.22,.61,.36,1),filter .12s ease;will-change:transform}.tile:hover{filter:brightness(1.06)}.tile:active{filter:brightness(.94)}.overlay{position:absolute;inset:0;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:20px;background:var(--overlay-bg);z-index:10;opacity:0;pointer-events:none;transition:opacity .22s ease}.overlay.show{opacity:1;pointer-events:auto}.overlay.show .msg{animation:solvedPop .38s ease}@keyframes solvedPop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08);opacity:1}to{transform:scale(1);opacity:1}}.overlay .msg{font-size:clamp(28px,9vw,44px);font-weight:800}.overlay.win .msg{color:#4caf7d}.overlay .sub{font-size:15px;font-weight:700;opacity:.9}.overlay .actions{display:flex;gap:10px;margin-top:4px}
