/* ═══════════════════════════════════════════════════════════════════════════ BUTTON COMPONENT STYLES - FUSION DESIGN SYSTEM 6 Variants: Primary (Neon), Secondary (Outline), Gaming, Terminal, Nature, Graffiti ═══════════════════════════════════════════════════════════════════════════ */ .btn-veza { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); padding: var(--space-3) var(--space-6); font-family: var(--font-heading); font-size: var(--text-sm); font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; border: none; cursor: pointer; transition: all var(--duration-fast) var(--ease-out); overflow: hidden; isolation: isolate; } .btn-veza:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } /* ───────────────────────────────────────────────────────────────────────── VARIANT: PRIMARY (Neon Cyber) ───────────────────────────────────────────────────────────────────────── */ .btn-veza--primary { background: linear-gradient( 135deg, var(--veza-cyan-dim) 0%, var(--veza-cyan) 100% ); color: var(--veza-void); clip-path: var(--clip-manga); box-shadow: var(--glow-cyan); } .btn-veza--primary::before { content: ''; position: absolute; inset: 0; background: linear-gradient( 135deg, transparent 0%, rgba(255, 255, 255, 0.2) 50%, transparent 100% ); transform: translateX(-100%); transition: transform var(--duration-normal) var(--ease-out); } .btn-veza--primary:hover { transform: translateY(-2px); box-shadow: 0 0 30px var(--veza-cyan), 0 0 60px rgba(0, 255, 247, 0.4); } .btn-veza--primary:hover::before { transform: translateX(100%); } .btn-veza--primary:active { transform: translateY(0); } /* ───────────────────────────────────────────────────────────────────────── VARIANT: SECONDARY (Outline Neon) ───────────────────────────────────────────────────────────────────────── */ .btn-veza--secondary { background: transparent; color: var(--veza-magenta); border: 2px solid var(--veza-magenta); clip-path: var(--clip-manga); } .btn-veza--secondary::before { content: ''; position: absolute; inset: 0; background: var(--veza-magenta); transform: scaleX(0); transform-origin: left; transition: transform var(--duration-normal) var(--ease-out); z-index: -1; } .btn-veza--secondary:hover { color: var(--veza-void); box-shadow: var(--glow-magenta); } .btn-veza--secondary:hover::before { transform: scaleX(1); } /* ───────────────────────────────────────────────────────────────────────── VARIANT: GAMING (XP/Achievement Style) ───────────────────────────────────────────────────────────────────────── */ .btn-veza--gaming { background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); color: var(--veza-xp-gold); border: 2px solid var(--veza-xp-gold); border-radius: var(--radius-sm); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), inset 0 -2px 0 rgba(0, 0, 0, 0.3), 0 2px 8px rgba(0, 0, 0, 0.5); text-shadow: 0 0 10px var(--veza-xp-gold); } .btn-veza--gaming:hover { background: linear-gradient(180deg, #3a3a3a 0%, #2a2a2a 100%); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), inset 0 -2px 0 rgba(0, 0, 0, 0.3), 0 0 20px rgba(255, 215, 0, 0.4); } .btn-veza--gaming:active { transform: translateY(2px); box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5), 0 1px 2px rgba(0, 0, 0, 0.3); } /* ───────────────────────────────────────────────────────────────────────── VARIANT: TERMINAL (Matrix/Hacker Style) ───────────────────────────────────────────────────────────────────────── */ .btn-veza--terminal { background: var(--veza-matrix); color: var(--veza-terminal-green); border: 1px solid var(--veza-terminal-green); font-family: var(--font-mono); border-radius: var(--radius-sm); text-shadow: var(--glow-terminal); } .btn-veza--terminal::before { content: '> '; opacity: 0.7; } .btn-veza--terminal:hover { background: rgba(0, 255, 0, 0.1); box-shadow: var(--glow-terminal); } /* ───────────────────────────────────────────────────────────────────────── VARIANT: NATURE (Organic/Botanical) ───────────────────────────────────────────────────────────────────────── */ .btn-veza--nature { background: linear-gradient( 135deg, var(--veza-moss) 0%, var(--veza-leaf) 100% ); color: var(--veza-white); border-radius: var(--radius-2xl); border: none; box-shadow: 0 4px 15px rgba(45, 90, 61, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.2); } .btn-veza--nature:hover { transform: scale(1.02); box-shadow: 0 6px 25px rgba(45, 90, 61, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.2); } /* ───────────────────────────────────────────────────────────────────────── VARIANT: GRAFFITI (Spray Paint Effect) ───────────────────────────────────────────────────────────────────────── */ .btn-veza--graffiti { background: var(--gradient-sunset); color: var(--veza-white); font-family: var(--font-display); font-weight: 900; letter-spacing: 0.2em; clip-path: polygon(5% 0, 95% 5%, 100% 95%, 0% 100%); text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.3); position: relative; } .btn-veza--graffiti::after { content: ''; position: absolute; inset: -2px; background: inherit; clip-path: inherit; filter: blur(8px); opacity: 0.5; z-index: -1; } .btn-veza--graffiti:hover { animation: graffiti-shake 0.3s ease-in-out; } /* ───────────────────────────────────────────────────────────────────────── VARIANT: GHOST (Minimal) ───────────────────────────────────────────────────────────────────────── */ .btn-veza--ghost { background: transparent; color: var(--veza-text-muted); border: 1px solid transparent; } .btn-veza--ghost:hover { background: var(--veza-linen); color: var(--veza-text); } .dark .btn-veza--ghost:hover { background: var(--veza-slate); } /* ───────────────────────────────────────────────────────────────────────── VARIANT: OUTLINE (Clean) ───────────────────────────────────────────────────────────────────────── */ .btn-veza--outline { background: transparent; border: 1px solid var(--veza-stone); color: var(--veza-text); } .btn-veza--outline:hover { border-color: var(--veza-sage); background: var(--veza-mint-light); } /* ───────────────────────────────────────────────────────────────────────── VARIANT: DESTRUCTIVE (Error/Delete) ───────────────────────────────────────────────────────────────────────── */ .btn-veza--destructive { background: linear-gradient( 135deg, var(--veza-error) 0%, var(--veza-error-soft) 100% ); color: var(--veza-white); clip-path: var(--clip-manga); } .btn-veza--destructive:hover { transform: translateY(-2px); box-shadow: 0 0 20px rgba(255, 23, 68, 0.4); } /* ───────────────────────────────────────────────────────────────────────── SIZE VARIANTS ───────────────────────────────────────────────────────────────────────── */ .btn-veza--sm { padding: var(--space-2) var(--space-4); font-size: var(--text-xs); } .btn-veza--md { padding: var(--space-3) var(--space-6); font-size: var(--text-sm); } .btn-veza--lg { padding: var(--space-4) var(--space-8); font-size: var(--text-base); } .btn-veza--xl { padding: var(--space-5) var(--space-10); font-size: var(--text-lg); } /* ───────────────────────────────────────────────────────────────────────── ICON BUTTON ───────────────────────────────────────────────────────────────────────── */ .btn-veza--icon { width: 44px; height: 44px; padding: 0; border-radius: var(--radius-md); background: var(--veza-slate); color: var(--veza-grey-200); border: 1px solid var(--veza-steel); } .btn-veza--icon:hover { background: var(--veza-steel); color: var(--veza-cyan); border-color: var(--veza-cyan); } .btn-veza--icon.btn-veza--sm { width: 36px; height: 36px; } .btn-veza--icon.btn-veza--lg { width: 52px; height: 52px; }