:root,
:host {
    --van-button-mini-height: 6.15385vw;
    --van-button-mini-padding: 0 var(--van-padding-base);
    --van-button-mini-font-size: var(--van-font-size-xs);
    --van-button-small-height: 8.20513vw;
    --van-button-small-padding: 0 var(--van-padding-xs);
    --van-button-small-font-size: var(--van-font-size-sm);
    --van-button-normal-padding: 0 3.84615vw;
    --van-button-normal-font-size: var(--van-font-size-md);
    --van-button-large-height: 12.82051vw;
    --van-button-default-height: 11.28205vw;
    --van-button-default-line-height: 1.2;
    --van-button-default-font-size: var(--van-font-size-lg);
    --van-button-default-color: var(--van-text-color);
    --van-button-default-background: var(--van-background-2);
    --van-button-default-border-color: var(--van-gray-4);
    --van-button-primary-color: var(--van-white);
    --van-button-primary-background: var(--van-primary-color);
    --van-button-primary-border-color: var(--van-primary-color);
    --van-button-success-color: var(--van-white);
    --van-button-success-background: var(--van-success-color);
    --van-button-success-border-color: var(--van-success-color);
    --van-button-danger-color: var(--van-white);
    --van-button-danger-background: var(--van-danger-color);
    --van-button-danger-border-color: var(--van-danger-color);
    --van-button-warning-color: var(--van-white);
    --van-button-warning-background: var(--van-warning-color);
    --van-button-warning-border-color: var(--van-warning-color);
    --van-button-border-width: var(--van-border-width);
    --van-button-radius: var(--van-radius-md);
    --van-button-round-radius: var(--van-radius-max);
    --van-button-plain-background: var(--van-white);
    --van-button-disabled-opacity: var(--van-disabled-opacity);
    --van-button-icon-size: 1.2em;
    --van-button-loading-icon-size: 5.12821vw
}

.van-theme-dark {
    --van-button-plain-background: transparent
}

.van-button {
    position: relative;
    display: inline-block;
    box-sizing: border-box;
    height: var(--van-button-default-height);
    margin: 0;
    padding: 0;
    font-size: var(--van-button-default-font-size);
    line-height: var(--van-button-default-line-height);
    text-align: center;
    border-radius: var(--van-button-radius);
    cursor: pointer;
    transition: opacity var(--van-duration-fast);
    -webkit-appearance: none;
    -webkit-font-smoothing: auto
}

.van-button:before {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 100%;
    height: 100%;
    background: var(--van-black);
    border: inherit;
    border-color: var(--van-black);
    border-radius: inherit;
    transform: translate(-50%, -50%);
    opacity: 0;
    content: " ";
    box-sizing: content-box
}

.van-button:active:before {
    opacity: .1
}

.van-button--loading:before,
.van-button--disabled:before {
    display: none
}

.van-button--default {
    color: var(--van-button-default-color);
    background: var(--van-button-default-background);
    border: var(--van-button-border-width) solid var(--van-button-default-border-color)
}

.van-button--primary {
    color: var(--van-button-primary-color);
    background: var(--van-button-primary-background);
    border: var(--van-button-border-width) solid var(--van-button-primary-border-color)
}

.van-button--success {
    color: var(--van-button-success-color);
    background: var(--van-button-success-background);
    border: var(--van-button-border-width) solid var(--van-button-success-border-color)
}

.van-button--danger {
    color: var(--van-button-danger-color);
    background: var(--van-button-danger-background);
    border: var(--van-button-border-width) solid var(--van-button-danger-border-color)
}

.van-button--warning {
    color: var(--van-button-warning-color);
    background: var(--van-button-warning-background);
    border: var(--van-button-border-width) solid var(--van-button-warning-border-color)
}

.van-button--plain {
    background: var(--van-button-plain-background)
}

.van-button--plain.van-button--primary {
    color: var(--van-button-primary-background)
}

.van-button--plain.van-button--success {
    color: var(--van-button-success-background)
}

.van-button--plain.van-button--danger {
    color: var(--van-button-danger-background)
}

.van-button--plain.van-button--warning {
    color: var(--van-button-warning-background)
}

.van-button--large {
    width: 100%;
    height: var(--van-button-large-height)
}

.van-button--normal {
    padding: var(--van-button-normal-padding);
    font-size: var(--van-button-normal-font-size)
}

.van-button--small {
    height: var(--van-button-small-height);
    padding: var(--van-button-small-padding);
    font-size: var(--van-button-small-font-size)
}

.van-button__loading {
    color: inherit;
    font-size: inherit
}

.van-button__loading .van-loading__spinner {
    color: currentColor;
    width: var(--van-button-loading-icon-size);
    height: var(--van-button-loading-icon-size)
}

.van-button--mini {
    height: var(--van-button-mini-height);
    padding: var(--van-button-mini-padding);
    font-size: var(--van-button-mini-font-size)
}

.van-button--mini+.van-button--mini {
    margin-left: var(--van-padding-base)
}

.van-button--block {
    display: block;
    width: 100%
}

.van-button--disabled {
    cursor: not-allowed;
    opacity: var(--van-button-disabled-opacity)
}

.van-button--loading {
    cursor: default
}

.van-button--round {
    border-radius: var(--van-button-round-radius)
}

.van-button--square {
    border-radius: 0
}

.van-button__content {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%
}

.van-button__content:before {
    content: " "
}

.van-button__icon {
    font-size: var(--van-button-icon-size);
    line-height: inherit
}

.van-button__icon+.van-button__text,
.van-button__loading+.van-button__text,
.van-button__text+.van-button__icon,
.van-button__text+.van-button__loading {
    margin-left: var(--van-padding-base)
}

.van-button--hairline {
    border-width: 0
}

.van-button--hairline:after {
    border-color: inherit;
    border-radius: calc(var(--van-button-radius) * 2)
}

.van-button--hairline.van-button--round:after {
    border-radius: var(--van-button-round-radius)
}

.van-button--hairline.van-button--square:after {
    border-radius: 0
}