.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--touch);padding:var(--space-3) var(--space-5);font-family:inherit;font-size:var(--text-base);font-weight:var(--weight-semibold);line-height:1;letter-spacing:.01em;text-align:center;text-decoration:none;white-space:nowrap;border-radius:var(--r-md);border:1px solid transparent;cursor:pointer;transition:background var(--tr),border-color var(--tr),color var(--tr),transform var(--tr-fast),box-shadow var(--tr);position:relative;overflow:hidden;user-select:none;-webkit-tap-highlight-color:transparent}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;pointer-events:none}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:var(--grad-gold);color:var(--text-on-gold);font-weight:var(--weight-bold);border:1px solid var(--gold-light);box-shadow:0 4px 16px rgba(227,173,67,.2),inset 0 1px 0 rgba(255,255,255,.25)}.btn-primary::before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent 0,rgba(255,255,255,.25) 50%,transparent 100%);transform:translateX(-100%);transition:transform .6s ease}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#f1c670 0,#fedb92 50%,#fdf3da 100%);box-shadow:0 8px 24px rgba(227,173,67,.35),0 0 32px rgba(227,173,67,.25),inset 0 1px 0 rgba(255,255,255,.35);transform:translateY(-1px)}.btn-primary:hover::before{transform:translateX(100%)}.btn-secondary{background:0 0;color:var(--gold);border:1px solid var(--gold);box-shadow:0 0 0 0 rgba(227,173,67,0)}.btn-secondary:hover:not(:disabled){background:var(--gold-soft);border-color:var(--gold-light);color:var(--gold-light);box-shadow:0 0 24px rgba(227,173,67,.25)}.btn-ghost{background:0 0;color:var(--text-soft);border:1px solid transparent}.btn-ghost:hover:not(:disabled){background:var(--surface-2);color:var(--gold);border-color:var(--line)}.btn-danger{background:var(--danger);color:#fff;border:1px solid rgba(239,68,68,.5);box-shadow:0 4px 16px rgba(239,68,68,.2)}.btn-danger:hover:not(:disabled){background:#dc2626;box-shadow:0 6px 24px rgba(239,68,68,.35)}.btn-success{background:var(--success);color:#fff;border:1px solid rgba(16,185,129,.5);box-shadow:0 4px 16px rgba(16,185,129,.2)}.btn-success:hover:not(:disabled){background:#059669}.btn-whatsapp{background:#25d366;color:#fff;border:1px solid rgba(37,211,102,.5);box-shadow:0 4px 16px rgba(37,211,102,.25)}.btn-whatsapp:hover:not(:disabled){background:#1ebe57;box-shadow:0 6px 24px rgba(37,211,102,.4)}.btn-sm{min-height:36px;padding:var(--space-2) var(--space-4);font-size:var(--text-sm)}.btn-lg{min-height:56px;padding:var(--space-4) var(--space-6);font-size:var(--text-lg);font-weight:var(--weight-bold);border-radius:var(--r-lg)}.btn-xl{min-height:64px;padding:var(--space-5) var(--space-7);font-size:var(--text-xl);font-weight:var(--weight-bold);border-radius:var(--r-lg);letter-spacing:.02em}.btn-icon{width:var(--touch);height:var(--touch);padding:0;border-radius:var(--r-md);display:inline-flex;align-items:center;justify-content:center}.btn-icon.btn-sm{width:36px;height:36px}.btn-icon.btn-lg{width:56px;height:56px}.btn-icon svg{width:20px;height:20px}.btn-icon.btn-sm svg{width:16px;height:16px}.btn-icon.btn-lg svg{width:24px;height:24px}.btn-block{width:100%}.btn-group{display:inline-flex;gap:var(--space-2)}.btn-group-stack{display:flex;flex-direction:column;gap:var(--space-3);width:100%}@media (min-width:640px){.btn-group-stack{flex-direction:row;justify-content:flex-end;width:auto}}.btn[aria-busy=true]{position:relative;color:transparent!important;pointer-events:none}.btn[aria-busy=true]::after{content:'';position:absolute;inset:0;margin:auto;width:18px;height:18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:btn-spin .7s linear infinite;color:var(--text-on-gold)}.btn-ghost[aria-busy=true]::after,.btn-secondary[aria-busy=true]::after{color:var(--gold)}@keyframes btn-spin{to{transform:rotate(360deg)}}.btn-magnetic{transition:transform .2s cubic-bezier(.34, 1.56, .64, 1),background var(--tr),box-shadow var(--tr)}[dir=rtl] .btn-primary::before{transform:translateX(100%)}[dir=rtl] .btn-primary:hover::before{transform:translateX(-100%)}