.button {
    --icon-size: 16px;
    --state-colour: var(--colour-on-primary);
    align-items: center;
    background-color: var(--colour-primary);
    border: 0;
    border-radius: var(--medium-radius);
    box-sizing: border-box;
    color: var(--colour-on-primary);
    display: flex;
    font: var(--label-large);
    gap: 8px;
    justify-content: center;
    overflow: hidden;
    padding: 12px 16px;
    text-decoration: none;
    transition:
        color var(--small-transition-effect),
        background-color var(--small-transition-effect);

    &.button--full {
        width: 100%;
    }

    &.button--secondary {
        --state-colour: var(--colour-on-secondary-container);
        background-color: var(--colour-secondary-container);
        color: var(--colour-on-secondary-container);
    }

    &.button--text {
        --state-colour: var(--colour-on-surface);
        background-color: transparent;
        color: var(--colour-primary);
    }

    &.button--icon {
        --icon-size: 20px;
        --state-colour: var(--colour-on-surface-variant);
        background-color: transparent;
        border-radius: 50%;
        color: var(--colour-on-surface-variant);
        flex-shrink: 0;
        height: 44px;
        padding: 12px;
        right: -6px;
        width: 44px;

        &::before {
            border-radius: 50%;
            bottom: 6px;
            left: 6px;
            right: 6px;
            top: 6px;
        }
    }

    &.button--small {
        padding: 8px 12px;
    }

    &.button--destructive {
        color: var(--colour-error);
    }

    &.button--disabled,
    &:disabled {
        background-color: oklch(from var(--colour-on-surface) l c h / 0.1);
        color: oklch(from var(--colour-on-surface) l c h / 0.38);
        cursor: default;
    }
}
