

index.html
<!-- one real input; js
draws each piece's
outline as an svg -->
<div class="dovetail-row">
<input
class="dovetail-input"
…>
<span
class="dovetail-piece"
aria-hidden="true">
</span>dovetail.css
/* js sets each slide's
length; a cut-off one
resumes where it is */
.dovetail-piece {
translate: 0 0;
transition:
translate
var(--dovetail-move)
var(--dovetail-glide), …
.dovetail-piece.is-lifted {
… scale: 1.06; }dovetail.js
// tab and socket share
// points: they meet exactly
function outline(s,
socket, tab) {
return rounded([
...(tab ?
tabPoints(W, s) : []),
…
...(socket ?
tabPoints(0, s)
.reverse() : []),Dovetail
$12A one-time code field of puzzle pieces that slide together and lock into a check
11 KB0 depsForms







