画像を使わず、CSSのみで装飾を済ませるのが多い今のコーディング事情で、ボックスに2重線を引く方法といえば、borderとoutlineをあてたり、box-shadowを当てたり、疑似要素を使ったり、色々な方法があります。
思いついた2重線の書き方のまとめ。
ボックスの外側にborder。内側にoutlineってイメージです。
.w-border01{
  border: solid 1px #fff;
  outline: solid 1px #c414ba;
  background-color: #c414ba;
  padding: 5px 20px;
}
影をぼかしなしで2重であてる。境界線を複数あてれなかったCS時期のPhotoshopのレイヤースタイルを思い出します。
.w-border02{
  box-shadow: 0 0 0 1px #fff, 0 0 0 2px #c414ba;
  background-color: #c414ba;
  padding: 5px 20px;
}
beforeに関しては可変さえるためにはcalcでずらした分のwidthを引いてあげないと、線がズレます。
.w-border03{
  position: relative;
  z-index: 0;
  border: 1px solid #fff;
  background-color: #c414ba;
  padding: 5px 20px;
}
.w-border03:before{
  content: "";
  display: block;
  position: absolute;
  top: -2px;
  left: -2px;
  width: calc(100% + 2px);
  min-height: 100%;
  border: 1px solid #c414ba;
  padding-bottom: 2px;
  z-index: 1;
}
入れ子の構造にしても良い場合はこれでもアリかも。ただし大元には「display: inline-block;」にしておかないと、上下の線は消えます。
リストのテキストアイコンを並べる時とかに有効です。
.w-border04{
  box-sizing: border-box;
  display: inline-block;
  background-color: #c414ba;
}
.w-border04 em{
  margin: 1px;
  border: 1px solid #fff;
  display: block;
  text-align: center;
  padding: 5px 20px;
  font-style: normal;
}
【参考サイト】