// Touch browsers can retain :hover and :focus after a tap. Keep that // highlight for mouse pointers, while preserving keyboard focus everywhere. @mixin text-button-highlight { &:focus-visible { @content; } @media (hover: hover) and (pointer: fine) { &:focus, &:hover { @content; } } } .tp__text-button { display: flex; justify-content: center; align-items: center; fill: var(--menu-icon-color); background-color: var(--text-button-background-color); color: var(--text-button-color); border: 1px solid var(--text-button-border-color); border-radius: var(--border-radius); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); cursor: pointer; box-sizing: border-box; max-height: 3rem; min-height: 2.5rem; gap: var(--gap-default); padding: 0 var(--padding-default); font-weight: bold; font-size: var(--font-size-norm); position: relative; overflow: hidden; svg { min-width: 1.5rem; width: 1.5rem; } span { pointer-events: none; } @include text-button-highlight { background-color: var(--text-button-hover-background-color); color: var(--text-button-hover-color); outline: none; } @media (prefers-reduced-motion: no-preference) { transition: background-color 160ms ease, color 160ms ease, transform 120ms ease; &::after { content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit; background-image: radial-gradient(circle, currentColor 10%, transparent 10.5%); background-position: center; background-repeat: no-repeat; opacity: 0; transform: scale(12); transition: transform 0.5s ease, opacity 0.8s ease; } &:active:not(.disabled) { transform: scale(0.98); &::after { opacity: 0.18; transform: scale(0); transition: 0s; } } } } .tp__text-button.primary:not(.active) { background-color: var(--text-button-primary-background-color); border-color: var(--text-button-primary-border-color); color: var(--text-button-primary-color); fill: var(--text-button-primary-color); @include text-button-highlight { background-color: var(--text-button-primary-hover-background-color); color: var(--text-button-primary-hover-color); fill: var(--text-button-primary-hover-color); outline: none; } } .tp__text-button.secondary:not(.active) { background-color: var(--text-button-secondary-background-color); border-color: var(--text-button-secondary-border-color); color: var(--text-button-secondary-color); fill: var(--text-button-secondary-color); @include text-button-highlight { background-color: var(--text-button-secondary-hover-background-color); color: var(--text-button-secondary-hover-color); fill: var(--text-button-secondary-hover-color); outline: none; } } .tp__text-button.tertiary:not(.active) { background-color: var(--text-button-tertiary-background-color); border-color: var(--text-button-tertiary-border-color); color: var(--text-button-tertiary-color); fill: var(--text-button-tertiary-color); @include text-button-highlight { background-color: var(--text-button-tertiary-hover-background-color); color: var(--text-button-tertiary-hover-color); fill: var(--text-button-tertiary-hover-color); outline: none; } } .tp__text-button.active, .tp__text-button.primary.active, .tp__text-button.secondary.active, .tp__text-button.tertiary.active { background-color: var(--text-button-active-background-color); border-color: var(--text-button-active-border-color); color: var(--text-button-active-color); fill: var(--text-button-active-color); @include text-button-highlight { background-color: var(--text-button-active-hover-background-color); border-color: var(--text-button-active-border-color); color: var(--text-button-active-hover-color); fill: var(--text-button-active-hover-color); outline: none; } } .tp__text-button.primary.disabled, .tp__text-button.secondary.disabled, .tp__text-button.disabled { border-color: var(--text-button-disabled-border-color); background-color: var(--text-button-disabled-background-color); color: var(--text-button-disabled-color); fill: var(--text-button-disabled-color); }