.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-2);border:none;border-radius:var(--radius-lg);font-family:var(--font-family-primary);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-normal);text-decoration:none;white-space:nowrap;position:relative;overflow:hidden;padding:var(--spacing-0_5)}.button--disabled,.button:disabled{opacity:.5;cursor:not-allowed}.button--primary{background:var(--gradient-rainbow);color:#fff;box-shadow:var(--shadow-lg);position:relative;background-size:200% 200%;animation:gradient-shift 3s ease-in-out infinite}.button--primary:not(.button--fill){animation:none;background-position:100% 50%}.button--primary:before{content:"";position:absolute;inset:-3px;background:var(--gradient-rainbow);border-radius:var(--radius-lg);opacity:0;transition:opacity var(--transition-normal);filter:blur(15px);z-index:-1;background-size:200% 200%;animation:gradient-shift 3s ease-in-out infinite}.button--primary:hover:not(:disabled){transform:translateY(-2px);animation:gradient-shift 3s ease-in-out infinite}.button--secondary{background:var(--gradient-accent);color:#fff;box-shadow:var(--shadow-lg);position:relative}.button--secondary:before{content:"";position:absolute;inset:-2px;background:linear-gradient(135deg,var(--color-accent),var(--color-primary));border-radius:var(--radius-lg);opacity:0;transition:opacity var(--transition-normal);filter:blur(12px);z-index:-1}.button--secondary:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-xl)}.button--secondary:hover:not(:disabled):before{opacity:.7}.button--outline{background:transparent;color:var(--color-text-primary);border:1px solid transparent;background-image:linear-gradient(var(--color-background),var(--color-background)),var(--gradient-rainbow);background-origin:border-box;background-clip:content-box,border-box;position:relative;background-size:100% 100%,200% 200%}.button--outline:before{content:"";position:absolute;inset:-4px;background:var(--gradient-rainbow);border-radius:var(--radius-lg);opacity:0;transition:opacity var(--transition-normal);filter:blur(20px);z-index:-1;background-size:200% 200%;animation:gradient-shift 3s ease-in-out infinite}.button--outline:hover:not(:disabled){color:var(--color-text-primary);transform:translateY(-2px);background-size:100% 100%,200% 200%;animation:gradient-shift 3s ease-in-out infinite}.button--outline:hover:not(:disabled):before{opacity:.8;animation:rainbow-border-glow 2s ease-in-out infinite}.button--ghost{background:transparent;color:var(--color-text-secondary);position:relative}.button--ghost:before{content:"";position:absolute;inset:-2px;background:var(--gradient-rainbow);border-radius:var(--radius-lg);opacity:0;transition:opacity var(--transition-normal);filter:blur(10px);z-index:-1}.button--ghost:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-text-primary)}.button--ghost:hover:not(:disabled):before{opacity:.3}.button--fill .button__content{background:transparent}.button--xs .button__content{padding:var(--spacing-1) var(--spacing-2);font-size:var(--font-size-xs)}.button--sm .button__content{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-sm)}.button--md .button__content{padding:var(--spacing-3) var(--spacing-6);font-size:var(--font-size-base)}.button--lg .button__content{padding:var(--spacing-4) var(--spacing-8);font-size:var(--font-size-lg)}.button__content{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--spacing-1);border-radius:var(--radius-lg);background:var(--color-background);transition:all var(--transition-fast)}.button:not(.button--disabled):not(.button--loading):hover .button__content{background:transparent}.button--full-width{width:100%}.button__icon--left{margin-right:var(--spacing-1)}.button__icon--right{margin-left:var(--spacing-1)}.button__spinner{width:16px;height:16px;border:2px solid transparent;border-top-color:currentcolor;border-radius:50%;animation:spin 1s linear infinite;margin-right:var(--spacing-2)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.button{transform:translateZ(0);will-change:transform}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.button--loading{pointer-events:none}.button--loading .button__content{opacity:.8}@media(prefers-contrast:high){.button--outline{border-color:currentColor}.button--ghost{border:1px solid}}@media(prefers-reduced-motion:reduce){.button,.button:before,.button__content,.button__spinner{animation:none;transition:none}.button--outline:before,.button--primary:before{animation:none}}