.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-weight:600;text-decoration:none;border:none;cursor:pointer;transition:all .2s ease;overflow:hidden;white-space:nowrap}.btn-text{font-family:var(--font-jetbrains-mono),monospace}.btn-icon,.btn-text{position:relative;z-index:1}.btn-icon{display:flex;align-items:center;justify-content:center}.btn-icon svg{width:1.25rem;height:1.25rem}.btn-small{padding:.5rem 1rem;font-size:.875rem;border-radius:.375rem}.btn-medium{padding:.75rem 1.5rem;font-size:1rem;border-radius:.5rem}.btn-large{padding:1rem 2rem;font-size:1.125rem;border-radius:.5rem}.btn-primary{background:linear-gradient(135deg,#60a5fa,#a78bfa);color:white;box-shadow:0 4px 12px rgba(96,165,250,.3)}.btn-primary-gradient{position:absolute;inset:0;background:linear-gradient(135deg,#3b82f6,#8b5cf6);opacity:0;transition:opacity .2s ease;z-index:0}.btn-primary:hover .btn-primary-gradient{opacity:1}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(96,165,250,.4)}.btn-primary:active{transform:translateY(0);box-shadow:0 2px 8px rgba(96,165,250,.3)}.btn-secondary{background:transparent;color:#d1d5db;border:2px solid rgba(96,165,250,.3);box-shadow:0 0 0 rgba(96,165,250,0)}.btn-secondary:hover{border-color:#60a5fa;color:#60a5fa;box-shadow:0 0 20px rgba(96,165,250,.2);transform:translateY(-2px)}.btn-secondary:active{transform:translateY(0)}.btn-tertiary{background:linear-gradient(135deg,#7289da,#5865f2);color:white;box-shadow:0 4px 12px rgba(114,137,218,.3)}.btn-tertiary:hover{background:linear-gradient(135deg,#5865f2,#4752c4);transform:translateY(-2px);box-shadow:0 6px 16px rgba(114,137,218,.4)}.btn-tertiary:active{transform:translateY(0);box-shadow:0 2px 8px rgba(114,137,218,.3)}.btn-disabled,.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn:focus-visible{outline:2px solid #60a5fa;outline-offset:2px}@media (max-width:768px){.btn-large{padding:.875rem 1.75rem;font-size:1rem}.btn-medium{padding:.625rem 1.25rem;font-size:.9375rem}.btn-small{padding:.5rem 1rem;font-size:.8125rem}}