CSS Button Creator

Neumorph Pill CSS button

Soft UI pill with a gentle gradient. Hover, click and tab to it to see every state.

CSS

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5em;
  padding: 16px 32px;
  font-family: 'Inter', sans-serif;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.2;
  color: #334155;
  background: linear-gradient(145deg, #f1f5f9 0%, #d6dce5 100%);
  border: 0;
  border-radius: 999px;
  box-shadow: -7px -7px 16px 0 rgba(255, 255, 255, .90000000000000002220446049250313080847263336181640625), 7px 7px 16px 0 rgba(163, 177, 198, .84999999999999997779553950749686919152736663818359375);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  -webkit-tap-highlight-color: transparent;
  transition: transform 200ms cubic-bezier(.2,.8,.2,1), box-shadow 200ms cubic-bezier(.2,.8,.2,1), filter 200ms cubic-bezier(.2,.8,.2,1);
}

.btn__icon {
  display: inline-block;
  transition: transform 200ms cubic-bezier(.2,.8,.2,1);
}

.btn:hover {
  transform: translateY(-1px);
  filter: brightness(1.020000000000000017763568394002504646778106689453125);
  box-shadow: -7px -6px 18px 0 rgba(255, 255, 255, .90000000000000002220446049250313080847263336181640625), 7px 8px 18px 0 rgba(163, 177, 198, .84999999999999997779553950749686919152736663818359375);
}

.btn:hover .btn__icon {
  transform: translateX(3px);
}

.btn:active {
  transform: translateY(1px) scale(0.9699999999999999733546474089962430298328399658203125);
  box-shadow: -7px -7px 16px 0 rgba(255, 255, 255, .90000000000000002220446049250313080847263336181640625), 6px 6px 16px 0 rgba(163, 177, 198, .84999999999999997779553950749686919152736663818359375);
  transition-duration: 100ms;
}

.btn:focus-visible {
  outline: 3px solid #f1f5f9;
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .btn,
  .btn__icon {
    transition: none;
    animation: none;
  }
}

HTML

<button class="btn" type="button">
  Play
  <span class="btn__icon" aria-hidden="true">★</span>
</button>

How this button is built

How to use it

  1. Copy the CSS into your stylesheet. The @import line loads the Inter font from Google Fonts. Move it to the top of your file, or drop it if you already load the font.
  2. Paste the HTML where you want the button. It works on <button>, <a> and <input type="submit">.
  3. Change the label, or rename the .btn class if it clashes with your framework. Want a different colour or size? Open it in the editor, change it visually, and copy the new code.

This soft-UI style relies on the page background matching the button. Use #e0e5ec (or recolour the button to match your page).