body { background: #ddd; } $dur: 0.2s; .yosemite-search { position: absolute; top: 50%; left: 50%; margin: -15px -150px; width: 300px; background: #fff; border-radius: 4px; font-family: sans-serif; font-weight: 300; * { backface-visibility: hidden; font: inherit; } .clear { display: block; position: absolute; z-index: 1; top: 50%; right: 8px; height: 16px; width: 16px; border: 0; padding: 0; margin: -8px 0 0; border-radius: 100%; text-align: center; background: #7d7d7d; color: #fff; transform: scale(0); transition: transform $dur ease-in-out; cursor: default; display: flex; align-items: center; justify-content: center; &:focus { outline: 0; } svg { fill: #fff; height: 12px; width: 12px; } } .ring { z-index: 0; position: absolute; border-radius: inherit; top: 0; right: 0; bottom: 0; left: 0; box-shadow: 0 1px 1px -1px rgba(0,0,0,0.4), 0 0 0 30px rgba(#8dbaea, 0); transition: box-shadow 0 ease-in-out; svg { fill: #333; position: absolute; top: 50%; left: 50%; margin: -7px; height: 14px; width: 14px; margin-left: -45px; transition: margin $dur ease-in-out; } } input { display: block; position: relative; z-index: 1; box-shadow: none; background: none; border: 0; margin: 0 auto; padding: 3px 28px; width: 54px; font-size: 0.9em; &::placeholder { color: #bbb; } transition: width $dur ease-in-out; &:focus, &:valid { outline: 0; width: 250px; &::placeholder { color: #ddd; } + .ring { transition-duration: $dur; box-shadow: 0 1px 1px -1px rgba(0,0,0,0.4), 0 0 0 3px #8dbaea; svg { margin-left: -145px; } } ~ .clear { transform: scale(0.8); } } } }