| $color-border-light: #eaeaea; | 
|   | 
| @mixin hairline-common() { | 
|   content: ''; | 
|   position: absolute; | 
|   transform-origin: center; | 
|   box-sizing: border-box; | 
|   pointer-events: none; | 
| } | 
|   | 
| @mixin hairline() { | 
|   @include hairline-common(); | 
|   top: -50%; | 
|   right: -50%; | 
|   bottom: -50%; | 
|   left: -50%; | 
|   border: 0 solid $color-border-light; | 
|   transform: scale(0.5); | 
| } | 
|   | 
| @mixin hairline-base($color: $color-border-light, $style: solid) { | 
|   @include hairline-common(); | 
|   | 
|   top: -50%; | 
|   left: -50%; | 
|   right: -50%; | 
|   bottom: -50%; | 
|   border: 0 $style $color; | 
|   transform: scale(0.5); | 
| } | 
|   | 
| @mixin hairline-surround($color: $color-border-light, $style: solid, $width: 1px) { | 
|   position: relative; | 
|   | 
|   &::after { | 
|     @include hairline-base($color, $style); | 
|   | 
|     border-width: $width; | 
|   } | 
| } | 
|   | 
| @mixin hairline-top($color: $color-border-light, $style: solid, $width: 1px) { | 
|   position: relative; | 
|   | 
|   &::after { | 
|     @include hairline-base($color, $style); | 
|   | 
|     border-top-width: $width; | 
|   } | 
| } | 
|   | 
| @mixin hairline-bottom($color: $color-border-light, $style: solid, $width: 1px) { | 
|   position: relative; | 
|   | 
|   &::after { | 
|     @include hairline-base($color, $style); | 
|   | 
|     border-bottom-width: $width; | 
|   } | 
| } | 
|   | 
| @mixin hairline-left($color: $color-border-light, $style: solid, $width: 1px) { | 
|   position: relative; | 
|   | 
|   &::after { | 
|     @include hairline-base($color, $style); | 
|   | 
|     border-left-width: $width; | 
|   } | 
| } | 
|   | 
| @mixin hairline-right($color: $color-border-light, $style: solid, $width: 1px) { | 
|   position: relative; | 
|   | 
|   &::after { | 
|     @include hairline-base($color, $style); | 
|   | 
|     border-right-width: $width; | 
|   } | 
| } | 
|   | 
| @mixin hairline-top-bottom($color: $color-border-light, $style: solid, $width: 1px) { | 
|   position: relative; | 
|   | 
|   &::after { | 
|     @include hairline-base($color, $style); | 
|   | 
|     border-top-width: $width; | 
|     border-bottom-width: $width; | 
|   } | 
| } | 
|   | 
| @mixin hairline-bottom-relative($color: $color-border-light, $style: solid, $width: 1px, $left: 0) { | 
|   position: relative; | 
|   | 
|   &::after { | 
|     @include hairline-common(); | 
|   | 
|     top: auto; | 
|     left: $left; | 
|     right: 0; | 
|     bottom: 0; | 
|     transform: scaleY(0.5); | 
|     border-bottom: $width $style $color; | 
|   } | 
| } | 
|   | 
| @mixin hairline-top-relative($color: $color-border-light, $style: solid, $width: 1px, $left: 0) { | 
|   position: relative; | 
|   | 
|   &::before { | 
|     @include hairline-common(); | 
|   | 
|     top: 0; | 
|     left: $left; | 
|     right: 0; | 
|     bottom: auto; | 
|     transform: scaleY(0.5); | 
|     border-top: $width $style $color; | 
|   } | 
| } | 
|   | 
| @mixin hairline-left-relative($color: $color-border-light, $style: solid, $width: 1px, $top: 0) { | 
|   position: relative; | 
|   | 
|   &::after { | 
|     @include hairline-common(); | 
|   | 
|     top: $top; | 
|     left: 0; | 
|     right: auto; | 
|     bottom: 0; | 
|     transform: scaleX(0.5); | 
|     border-left: $width $style $color; | 
|   } | 
| } | 
|   | 
| @mixin hairline-right-relative($color: $color-border-light, $style: solid, $width: 1px, $top: 0) { | 
|   position: relative; | 
|   | 
|   &::after { | 
|     @include hairline-common(); | 
|   | 
|     top: $top; | 
|     left: auto; | 
|     right: 0; | 
|     bottom: 0; | 
|     transform: scaleX(0.5); | 
|     border-right: $width $style $color; | 
|   } | 
| } | 
|   | 
| .van-hairline--bottom { | 
|   @include hairline-bottom(#ddd, 0, 0); | 
| } | 
|   | 
| [class*='van-hairline'] { | 
|   &::after { | 
|     @include hairline(); | 
|   } | 
| } | 
|   | 
| .van-hairline { | 
|   &, | 
|   &--top, | 
|   &--left, | 
|   &--right, | 
|   &--bottom, | 
|   &--surround, | 
|   &--top-bottom { | 
|     position: relative; | 
|   } | 
|   | 
|   &--top::after { | 
|     border-top-width: 1px; | 
|   } | 
|   | 
|   &--left::after { | 
|     border-left-width: 1px; | 
|   } | 
|   | 
|   &--right::after { | 
|     border-right-width: 1px; | 
|   } | 
|   | 
|   &--bottom::after { | 
|     border-bottom-width: 1px; | 
|   } | 
|   | 
|   &, | 
|   &-unset { | 
|     &--top-bottom::after { | 
|       border-width: 1px 0; | 
|     } | 
|   } | 
|   | 
|   &--surround::after { | 
|     border-width: 1px; | 
|   } | 
| } |