.app-button[data-v-a321e395]{align-items:center;border:none;border-radius:var(--radius-md);cursor:pointer;display:inline-flex;font-family:var(--font-family);font-weight:var(--font-weight-medium);gap:var(--space-2);justify-content:center;overflow:hidden;position:relative;text-decoration:none;transition:background-color var(--transition-base),color var(--transition-base),box-shadow var(--transition-base),transform var(--transition-base),filter var(--transition-base);white-space:nowrap}.app-button[data-v-a321e395]:disabled{cursor:not-allowed;opacity:var(--control-disabled-opacity)}.app-button[data-v-a321e395]:focus-visible{box-shadow:0 0 0 var(--focus-ring-size) var(--input-focus-ring);outline:none}.app-button--ghost[data-v-a321e395]:focus-visible,.app-button--outline[data-v-a321e395]:focus-visible{background:var(--color-accent-dim)}.app-button--sm[data-v-a321e395]{border-radius:var(--radius-md);font-size:var(--text-xs);padding:var(--space-1) var(--space-3)}.app-button--md[data-v-a321e395]{font-size:var(--text-sm);padding:var(--space-2) var(--space-4)}.app-button--lg[data-v-a321e395]{font-size:var(--text-base);padding:var(--space-3) var(--space-6)}.app-button--primary[data-v-a321e395]{background:var(--color-accent);color:var(--color-text-inverse)}.app-button--primary[data-v-a321e395]:hover:not(:disabled){box-shadow:var(--shadow-accent);filter:brightness(1.05);transform:translateY(-2px)}.app-button--primary[data-v-a321e395]:active:not(:disabled){transform:translateY(0) scale(.98);transition-duration:.1s}.app-button--secondary[data-v-a321e395]{background:color-mix(in srgb,var(--color-text-primary) 6%,transparent);color:var(--color-text-secondary)}.app-button--secondary[data-v-a321e395]:hover:not(:disabled){background:color-mix(in srgb,var(--color-text-primary) 10%,transparent);color:var(--color-text-primary)}.app-button--outline[data-v-a321e395]{background:transparent;box-shadow:inset 0 0 0 1px var(--color-border);color:var(--color-accent)}.app-button--outline[data-v-a321e395]:hover:not(:disabled){background:var(--color-accent-dim);box-shadow:inset 0 0 0 1px var(--color-accent),var(--shadow-xs)}.app-button--ghost[data-v-a321e395]{background:transparent;color:var(--color-text-secondary)}.app-button--ghost[data-v-a321e395]:hover:not(:disabled){background:color-mix(in srgb,var(--color-text-primary) 6%,transparent);color:var(--color-text-primary)}.app-button--danger[data-v-a321e395]{background:color-mix(in srgb,var(--color-error) 10%,transparent);color:var(--color-error)}.app-button--danger[data-v-a321e395]:hover:not(:disabled){background:color-mix(in srgb,var(--color-error) 16%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--color-error) 30%,transparent)}.app-button--gradient[data-v-a321e395]{background:var(--gradient-accent);background-size:200% auto;border-color:transparent;color:var(--color-text-inverse)}.app-button--gradient[data-v-a321e395]:hover:not(:disabled){background-position:100%;box-shadow:var(--shadow-accent-lg);transform:translateY(-2px)}.app-button--gradient[data-v-a321e395]:active:not(:disabled){transform:translateY(0) scale(.98);transition-duration:.1s}.app-button--gradient[data-v-a321e395]:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.15),transparent);background-size:200% 100%;content:"";inset:0;opacity:0;position:absolute;transition:opacity .3s ease}.app-button--gradient[data-v-a321e395]:hover:before{animation:shimmer-btn-a321e395 1.5s ease infinite;opacity:1}.app-button__icon[data-v-a321e395],.app-button__spinner[data-v-a321e395]{flex-shrink:0;height:1em;width:1em}.app-button__spinner[data-v-a321e395]{animation:spin-a321e395 .6s linear infinite;border:2px solid;border-radius:var(--radius-full);border-right:2px solid transparent}@keyframes shimmer-btn-a321e395{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin-a321e395{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@media(prefers-reduced-motion:reduce){.app-button[data-v-a321e395]{transition:none}.app-button[data-v-a321e395]:hover:not(:disabled){transform:none}.app-button--gradient[data-v-a321e395]:before{animation:none}.app-button__spinner[data-v-a321e395]{animation-duration:1.5s}}
