.v-button{--btn-bg:var(--c-inset);--btn-fg:var(--c-text);--btn-border:var(--c-border-strong);justify-content:center;align-items:center;gap:var(--s-2);height:40px;padding:0 var(--s-4);border-radius:var(--r-md);border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--btn-fg);font:600 var(--fs-sm)/1 var(--f-body);white-space:nowrap;cursor:pointer;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease),box-shadow var(--t-med) var(--ease);display:inline-flex;position:relative;text-decoration:none!important}.v-button:hover:not(:disabled){border-color:var(--c-primary-text)}.v-button:active:not(:disabled){transform:translateY(1px)}.v-button:disabled{opacity:.55;cursor:not-allowed}.v-button.primary{--btn-bg:var(--c-primary);--btn-fg:var(--c-on-primary);--btn-border:transparent;box-shadow:var(--shadow-glow)}.v-button.primary:hover:not(:disabled){background:var(--c-primary-hover);border-color:#0000}.v-button.ghost{--btn-bg:transparent;--btn-border:transparent;--btn-fg:var(--c-text-secondary)}.v-button.ghost:hover:not(:disabled){color:var(--c-text);background:var(--c-inset);border-color:#0000}.v-button.danger{--btn-fg:var(--c-error);--btn-border:color-mix(in srgb, var(--c-error) 45%, transparent)}.v-button.danger:hover:not(:disabled){background:var(--c-error-bg);border-color:var(--c-error)}.v-button.sm{height:32px;padding:0 var(--s-3);font-size:var(--fs-xs);border-radius:var(--r-sm)}.v-button.lg{height:50px;padding:0 var(--s-5);font-size:var(--fs-md)}.v-button.block{width:100%;display:flex}.v-button-spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite v-spin}@keyframes v-spin{to{transform:rotate(1turn)}}
