[data-component="button"] { display: inline-flex; align-items: center; justify-content: center; border-style: solid; border-width: 1px; border-radius: var(--radius-md); text-decoration: none; user-select: none; cursor: default; outline: none; padding: 4px 8px; white-space: nowrap; transition-property: background-color, border-color, color, box-shadow; transition-duration: 200ms; transition-timing-function: cubic-bezier(0.25, 0, 0.5, 1); &[data-variant="primary"] { background-color: var(--icon-strong-base); border-color: var(--border-weaker-base); color: var(--icon-invert-base); [data-slot="icon-svg"] { color: var(--icon-invert-base); } &:hover:not(:disabled) { background-color: var(--icon-strong-hover); } &:focus:not(:disabled) { background-color: var(--icon-strong-focus); } &:active:not(:disabled) { background-color: var(--icon-strong-active); } &:disabled { background-color: var(--icon-strong-disabled); [data-slot="icon-svg"] { color: var(--icon-invert-base); } } } &[data-variant="ghost"] { border-color: transparent; background-color: transparent; color: var(--text-strong); &:hover:not(:disabled) { background-color: var(--surface-raised-base-hover); } &:focus:not(:disabled) { background-color: var(--surface-raised-base-hover); } &:active:not(:disabled) { background-color: var(--surface-raised-base-active); } &:disabled { color: var(--text-weak); opacity: 0.7; cursor: not-allowed; } &[data-selected="true"]:not(:disabled) { background-color: var(--surface-raised-base-hover); } &[data-active="true"] { background-color: var(--surface-raised-base-active); } } &[data-variant="secondary"] { border: transparent; background-color: var(--button-secondary-base); color: var(--text-strong); box-shadow: var(--shadow-xs-border); &:hover:not(:disabled) { background-color: var(--button-secondary-hover); } &:focus:not(:disabled) { background-color: var(--button-secondary-base); } &:focus-visible:not(:active) { background-color: var(--button-secondary-base); box-shadow: var(--shadow-xs-border-focus); } &:focus-visible:active { box-shadow: none; } &:active:not(:disabled) { background-color: var(--button-secondary-base); scale: 0.99; transition: all 150ms ease-out; } &:disabled { border-color: var(--border-disabled); background-color: var(--surface-disabled); color: var(--text-weak); cursor: not-allowed; } [data-slot="icon-svg"] { color: var(--icon-strong-base); } } &[data-size="small"] { padding: 2px 10px; &[data-icon] { padding: 0 12px 0 4px; } gap: 4px; /* text-12-medium */ font-family: var(--font-family-sans); font-size: var(--font-size-base); font-style: normal; font-weight: var(--font-weight-medium); line-height: var(--line-height-large); /* 166.667% */ letter-spacing: var(--letter-spacing-normal); } &[data-size="normal"] { height: 24px; line-height: 24px; padding: 0 6px; &[data-icon] { padding: 0 12px 0 4px; } font-size: var(--font-size-small); gap: 6px; /* text-12-medium */ font-family: var(--font-family-sans); font-size: var(--font-size-small); font-style: normal; font-weight: var(--font-weight-medium); letter-spacing: var(--letter-spacing-normal); } &[data-size="large"] { height: 32px; padding: 6px 12px; &[data-icon] { padding: 0 12px 0 8px; } gap: 8px; /* text-14-medium */ font-family: var(--font-family-sans); font-size: 14px; font-style: normal; font-weight: var(--font-weight-medium); line-height: var(--line-height-large); /* 142.857% */ letter-spacing: var(--letter-spacing-normal); } &:focus { outline: none; } } [data-slot="cycle-text"] { display: inline-flex; perspective: 400px; overflow: hidden; [data-slot="char"] { display: inline-block; transform-style: preserve-3d; transform-origin: 50% 100%; transform: rotateX(0deg); opacity: 1; transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1); transition-delay: calc(var(--i, 0) * 40ms); /* Entry animation using @starting-style */ @starting-style { transform: rotateX(90deg); opacity: 0; } } /* Exit animation when animating */ &[data-animating="true"] [data-slot="char"] { transform: rotateX(-90deg); opacity: 0; } /* Preserve spaces */ [data-slot="space"] { display: inline-block; width: 0.25em; } }