Petr Gazarov published a pretty rad little design pattern in his article Text input highlight, TripAdvisor style.

It’s a trick! You can’t really make an <input>
stretch like that, so Petr makes a <span>
to sync the value too, which acts as the border itself. The whole thing is a React component.
If you’re willing to use a <span contenteditable>
instead, you could do the whole thing in CSS!
See the Pen Outline bottom by Chris Coyier (@chriscoyier) on CodePen.
Although that also means no placeholder
.