.vx-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:0 22px;border:1.5px solid transparent;border-radius:var(--radius-control);font-family:var(--font-label);font-weight:700;font-size:15px;letter-spacing:.08em;text-transform:uppercase;line-height:1;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background-color var(--dur-fast) var(--ease-precise),color var(--dur-fast) var(--ease-precise),border-color var(--dur-fast) var(--ease-precise),transform var(--dur-instant) var(--ease-precise);-webkit-tap-highlight-color:transparent}
.vx-btn:focus-visible,.vx-btn.is-focus{outline:2px solid var(--focus-color);outline-offset:3px}
.vx-btn .vx-icon{transition:transform var(--dur-base) var(--ease-out)}
.vx-btn:hover .vx-btn__trail,.vx-btn.is-hover .vx-btn__trail{transform:translateX(3px)}
.vx-btn--sm{min-height:36px;padding:0 14px;font-size:13px}
.vx-btn--sm::after{content:"";position:absolute;inset:-4px 0}
.vx-btn--lg{min-height:56px;padding:0 30px;font-size:16px}
.vx-btn--block{display:flex;width:100%}
.vx-btn--primary{background:var(--accent);color:var(--text-on-accent)}
.vx-btn--primary:hover,.vx-btn--primary.is-hover{background:var(--accent-hover);color:var(--text-on-accent)}
.vx-btn--primary:active,.vx-btn--primary.is-active{background:var(--accent-pressed);transform:translateY(1px)}
.vx-btn--secondary{background:transparent;color:var(--text-primary);border-color:var(--text-primary)}
.vx-btn--secondary:hover,.vx-btn--secondary.is-hover{background:var(--text-primary);color:var(--surface-page)}
.vx-btn--secondary:active,.vx-btn--secondary.is-active{background:var(--text-secondary);border-color:var(--text-secondary);color:var(--surface-page);transform:translateY(1px)}
.vx-btn--ghost{background:transparent;color:var(--text-primary)}
.vx-btn--ghost:hover,.vx-btn--ghost.is-hover{background:var(--border-subtle);color:var(--text-primary)}
.vx-btn--ghost:active,.vx-btn--ghost.is-active{background:var(--border-default);transform:translateY(1px)}
.vx-btn--text{padding:0;min-height:44px;background:none;border:0;color:var(--text-primary);gap:8px}
.vx-btn--text .vx-btn__label{background:linear-gradient(var(--accent),var(--accent)) 0 100%/100% 2px no-repeat;padding-bottom:4px;transition:background-size var(--dur-base) var(--ease-out)}
.vx-btn--text:hover,.vx-btn--text.is-hover{color:var(--text-accent)}
.vx-btn--text:active,.vx-btn--text.is-active{color:var(--accent-pressed)}
.vx-btn--text:focus-visible,.vx-btn--text.is-focus{outline-offset:4px}
.vx-btn:disabled,.vx-btn.is-disabled,.vx-btn[aria-disabled="true"]{background:var(--disabled-bg);color:var(--text-disabled);border-color:transparent;cursor:not-allowed;transform:none}
.vx-btn--text:disabled,.vx-btn--text.is-disabled{background:none}
.vx-btn--text:disabled .vx-btn__label,.vx-btn--text.is-disabled .vx-btn__label{background-size:0 0}
.vx-btn--secondary:disabled,.vx-btn--secondary.is-disabled{background:transparent;border-color:var(--border-default)}
.vx-iconbtn{display:inline-grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid transparent;border-radius:var(--radius-control);background:transparent;color:var(--text-primary);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-precise)}
.vx-iconbtn:hover,.vx-iconbtn.is-hover{background:var(--border-subtle)}
.vx-iconbtn:active{background:var(--border-default)}
.vx-iconbtn:focus-visible{outline:2px solid var(--focus-color);outline-offset:2px}
.vx-iconbtn--outline{border-color:var(--border-default)}
.vx-iconbtn:disabled{color:var(--text-disabled);cursor:not-allowed;background:none}
