/* Base Button Styles */ .button { /* Layout */ display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; /* Typography */ font-family: inherit; font-weight: 500; text-decoration: none; white-space: nowrap; /* Interaction */ cursor: pointer; transition: all 0.2s ease; border: 1px solid transparent; /* Appearance */ border-radius: 0.375rem; outline: none; } .button:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: var(--focus-ring-offset); } .button:disabled { opacity: 0.6; cursor: not-allowed; pointer-events: none; } /* Size Variants */ .button-small { padding: 0.375rem 0.75rem; font-size: 0.75rem; border-radius: 0.25rem; } .button-medium { padding: 0.5rem 1rem; font-size: 0.875rem; } .button-large { padding: 0.75rem 1.5rem; font-size: 1rem; font-weight: 600; } /* Primary Variant */ .button-primary { background: var(--btn-primary-bg); color: var(--btn-primary-text); border-color: var(--btn-primary-border); } .button-primary:hover:not(:disabled) { background: var(--btn-primary-bg-hover); border-color: var(--btn-primary-border-hover); } .button-primary:active:not(:disabled) { background: var(--btn-primary-bg-active); border-color: var(--btn-primary-bg-active); } /* Secondary Variant */ .button-secondary { background: var(--btn-secondary-bg); color: var(--btn-secondary-text); border-color: var(--btn-secondary-border); } .button-secondary:hover:not(:disabled) { background: var(--btn-secondary-bg-hover); color: var(--btn-secondary-text-hover); border-color: var(--btn-secondary-border-hover); } .button-secondary:active:not(:disabled) { background: var(--btn-secondary-bg-active); color: var(--btn-secondary-text-active); } /* Danger Variant */ .button-danger { background: var(--btn-danger-bg); color: var(--btn-danger-text); border-color: var(--btn-danger-border); } .button-danger:hover:not(:disabled) { background: var(--btn-danger-bg-hover); border-color: var(--btn-danger-border-hover); } .button-danger:active:not(:disabled) { background: var(--btn-danger-bg-active); border-color: var(--btn-danger-bg-active); } /* Link Variant */ .button-link { background: none; color: var(--text-secondary); border: none; text-decoration: underline; padding: 0.25rem 0.5rem; } .button-link:hover:not(:disabled) { color: var(--text-primary); } .button-link:active:not(:disabled) { color: var(--text-primary); } /* Loading State */ .button-loading { position: relative; color: transparent; } .button-loading::after { content: ''; position: absolute; width: 1rem; height: 1rem; border: 2px solid transparent; border-top: 2px solid currentColor; border-radius: 50%; animation: button-spin 1s linear infinite; color: inherit; } @keyframes button-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }