:root{--completion-purple:#7660d9;--completion-outline:#aaaab5}
:root[data-theme="light"]{--completion-outline:#90909b}
.otis-completion{position:relative;display:inline-grid;place-items:center;vertical-align:middle;width:44px;height:44px;flex:0 0 44px;isolation:isolate}
.otis-completion>.otis-completion-input{position:absolute!important;inset:0!important;width:44px!important;height:44px!important;min-width:44px!important;margin:0!important;padding:0!important;opacity:0!important;clip-path:none!important;cursor:pointer;z-index:1}
.otis-completion>.otis-squircle{width:var(--completion-size,22px);height:var(--completion-size,22px);display:block;overflow:visible;pointer-events:none;transition:transform 120ms ease-out}
.otis-squircle-shape{fill:transparent;stroke:var(--completion-outline);stroke-width:1.5;transition:fill 180ms ease-out,stroke 180ms ease-out}
.otis-squircle-tick{fill:none;stroke:#fff;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;opacity:0;transition:stroke-dashoffset 180ms ease-out,opacity 120ms ease-out}
.otis-completion-input:checked+.otis-squircle .otis-squircle-shape{fill:var(--completion-purple);stroke:var(--completion-purple)}
.otis-completion-input:checked+.otis-squircle .otis-squircle-tick{stroke-dashoffset:0;opacity:1}
.otis-completion-input:active+.otis-squircle{transform:scale(.94)}
.otis-completion-input:active:not(:checked)+.otis-squircle .otis-squircle-shape{fill:color-mix(in srgb,var(--completion-purple) 12%,transparent)}
.otis-completion-input:focus-visible+.otis-squircle{outline:2px solid var(--completion-purple);outline-offset:5px;border-radius:7px}
.otis-completion-input:disabled{cursor:default}.otis-completion-input:disabled+.otis-squircle{opacity:.48}
.completion-on>.otis-squircle{animation:completion-release 250ms cubic-bezier(.2,.8,.3,1)}
.completion-on .otis-squircle-shape{animation:completion-fill 180ms ease-out}
.completion-on .otis-squircle-tick{animation:completion-draw 230ms ease-out}
.completion-off .otis-squircle-tick{animation:completion-retract 180ms ease-out}
.completion-off .otis-squircle-shape{animation:completion-empty 180ms ease-out}
@keyframes completion-release{0%{transform:scale(.94)}70%{transform:scale(1.025)}100%{transform:scale(1)}}
@keyframes completion-fill{from{fill:transparent;stroke:var(--completion-outline)}to{fill:var(--completion-purple);stroke:var(--completion-purple)}}
@keyframes completion-draw{0%,20%{stroke-dashoffset:1;opacity:0}30%{opacity:1}100%{stroke-dashoffset:0;opacity:1}}
@keyframes completion-retract{from{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:1;opacity:0}}
@keyframes completion-empty{from{fill:var(--completion-purple);stroke:var(--completion-purple)}to{fill:transparent;stroke:var(--completion-outline)}}
.project-check:has(>.otis-completion),.dashboard-check:has(>.otis-completion){width:44px;min-width:44px;min-height:44px;padding:0;display:grid;place-items:center}
@media(prefers-reduced-motion:reduce){.otis-completion *{animation:none!important;transition:none!important}}
@media(forced-colors:active){.otis-squircle-shape{stroke:CanvasText}.otis-completion-input:checked+.otis-squircle .otis-squircle-shape{fill:Highlight;stroke:Highlight}.otis-squircle-tick{stroke:HighlightText}}
.otis-squircle-shape,.otis-squircle-tick{vector-effect:non-scaling-stroke}
