:root {
  --button-size: 36px;
  --icon-size: 20px;

  --padding-ver: calc(0.3 * var(--icon-size));
  --padding-hor: calc(var(--icon-size) / 2);
  --padding-icon: calc((var(--button-size) - var(--icon-size)) / 2);

  --height: calc(var(--button-size) - 2 * var(--padding-ver));
  --width: calc(var(--button-size) - 2 * var(--padding-hor));
}

.shareon {
  font-size: 0 !important;
}

.shareon > * {
  display: inline-block;
  position: relative;

  height: var(--height);
  min-width: var(--width);

  margin: calc(var(--padding-ver) / 2);
  padding: var(--padding-ver) var(--padding-hor);

  background-color: #333;
  border-radius: calc(var(--icon-size) / 6);
  border: none;
  box-sizing: content-box;
  color: white;
  line-height: 1.5;
  transition: opacity 300ms ease;
  vertical-align: middle;
}

.shareon > *:hover {
  border: none;
  cursor: pointer;
  opacity: 0.7;
}

.shareon > *:not(:empty) {
  font-size: calc(0.8 * var(--icon-size));
  text-decoration: none;
}

.shareon > *:not(:empty)::before {
  position: relative;

  height: 100%;
  width: calc(var(--icon-size) + var(--padding-icon));

  top: 0;
  left: 0;

  background-position: 0 50%;
}

.shareon > *::before {
  display: inline-block;
  position: absolute;

  height: var(--icon-size);
  width: var(--icon-size);

  top: var(--padding-icon);
  left: var(--padding-icon);

  background-repeat: no-repeat;
  background-size: var(--icon-size) var(--icon-size);
  content: "";
  vertical-align: bottom;
}

.shareon > .copy-url:before {
  background-image: url("icons/copy-url.svg");
}

.shareon > .copy-url.done:before {
  background-image: url("icons/copy-url-done.svg");
}

.shareon > .facebook {
  background-color: #1877f2;
}
.shareon > .facebook:before {
  background-image: url("icons/facebook.svg");
}

.shareon > .linkedin {
  background-color: #0a66c2;
}
.shareon > .linkedin:before {
  background-image: url("icons/linkedin-in.svg");
}
.shareon > .linkedin:not(:empty):before {
  background-image: url("icons/linkedin.svg");
}

.shareon > .mastodon {
  background-color: #6364ff;
}
.shareon > .mastodon:before {
  background-image: url("icons/mastodon.svg");
}

.shareon > .messenger {
  background-color: #00b2ff;
}
.shareon > .messenger:before {
  background-image: url("icons/messenger.svg");
}

.shareon > .odnoklassniki {
  background-color: #ee8208;
}
.shareon > .odnoklassniki:before {
  background-image: url("icons/odnoklassniki.svg");
}

.shareon > .pinterest {
  background-color: #bd081c;
}
.shareon > .pinterest:before {
  background-image: url("icons/pinterest.svg");
}

.shareon > .pocket {
  background-color: #ef3f56;
}
.shareon > .pocket:before {
  background-image: url("icons/pocket.svg");
}

.shareon > .reddit {
  background-color: #ff4500;
}
.shareon > .reddit:before {
  background-image: url("icons/reddit.svg");
}

.shareon > .telegram {
  background-color: #26a5e4;
}
.shareon > .telegram:before {
  background-image: url("icons/telegram.svg");
}

.shareon > .teams {
  background-color: #6264a7;
}
.shareon > .teams:before {
  background-image: url("icons/teams.svg");
}

.shareon > .twitter {
  background-color: #1d9bf0;
}
.shareon > .twitter:before {
  background-image: url("icons/twitter.svg");
}

.shareon > .viber {
  background-color: #7360f2;
}
.shareon > .viber:before {
  background-image: url("icons/viber.svg");
}

.shareon > .vkontakte {
  background-color: #0077ff;
}
.shareon > .vkontakte:before {
  background-image: url("icons/vkontakte.svg");
}

.shareon > .web-share:before {
  background-image: url("icons/web-share.svg");
}

.shareon > .whatsapp {
  background-color: #25d366;
}
.shareon > .whatsapp:before {
  background-image: url("icons/whatsapp.svg");
}

.shareon > .tumblr {
  background-color: #36465d;
}
.shareon > .tumblr:before {
  background-image: url("icons/tumblr.svg");
}