{errorMsg}
div.sudoku > div { width: ${Math.max(D.deg * 14, 50)}px; height: ${Math.max(D.deg * 14, 50)}px } div.sudoku { width: max-content; height: max-content; grid-template-rows: repeat(${D.D2}, 1fr); grid-template-columns: repeat(${D.D2}, 1fr); } div.grid { display: grid; grid-template-rows: repeat(${D.deg}, 1fr); grid-template-columns: repeat(${D.deg}, 1fr); } div.highlighted${d} div.d${d} { color: deeppink } div.solved div.d${d} { color: hsl( ${(d-1) / D.D2 * 360} 100% 40%); }

Built with OtoReact

Oto-Sudoku

Read me!

Degree
{S.counts}

At least {S.solutionCount} solution{S.solutionCount != 1 ? 's': ''}


What level?

{level}

Progress: {S.task.task.length} / {S.moveStack.length - (S.task?.task?.length ?? 0)} / {S.free.size}

{digit}
{m.d}
{d}

body { transform: translate( ${ -bSize.width/2 + viewport.width/2 }px, ${ (s2 - 1) * bSize.height/2 }px ) scale( ${s2} ) ; }

Oto-Sudoku

Built with OtoReact