.icon-link {
    --hover-background-color: none;
    --hover-opacity: initial;
    text-decoration: none;
    color: inherit;
    font-weight: inherit;
}

.icon-link.has-hover-background-color:hover {
    background-color: var(--hover-background-color) !important;
}

.icon-link.has-hover-opacity:hover {
    opacity: var(--hover-opacity);
}

.icon-link.display--flex {
    display: flex;
}

.icon-link:not(.--circular).display--flex:not(.appearance--button) {
    height: 3em
}

.icon-link.display--inline-flex {
    display: inline-flex;
}

.icon-link:is(.display--flex, .display--inline-flex, 
.appearance--button:not(:is(.display--flex, .display--inline-flex))),
.icon-link.--circular {
    align-items: center;
}

.icon-link:not(.--circular):not(.text--hidden):has(img, svg) {
    gap: 2em
}

.icon-link:not(.--circular).justify--space-between:is(.display--flex, .display--inline-flex, .appearance--button:not(:is(.display--flex, .display--inline-flex))) {
    justify-content: space-between;
}

.icon-link.justify--center:is(.display--flex, .display--inline-flex, .appearance--button:not(:is(.display--flex, .display--inline-flex))),
.icon-link.--circular {
    justify-content: center;
}

.icon-link:not(.--circular).justify--center.justify--space-between:is(.display--flex, .display--inline-flex, .appearance--button:not(:is(.display--flex, .display--inline-flex))):not(.text--hidden),
.icon-link.--circular:not(.pos) {
    position: relative;
}

.icon-link.justify--center.justify--space-between:is(.display--flex, .display--inline-flex, .appearance--button:not(:is(.display--flex, .display--inline-flex))):not(.text--hidden) svg,
.icon-link.justify--center.justify--space-between:is(.display--flex, .display--inline-flex, .appearance--button:not(:is(.display--flex, .display--inline-flex))):not(.text--hidden) img {
    position: absolute;
}

.icon-link.justify--center.justify--space-between:is(.display--flex, .display--inline-flex):not(.text--hidden):not(.appearance--button) svg,
.icon-link.justify--center.justify--space-between:is(.display--flex, .display--inline-flex):not(.text--hidden):not(.appearance--button) img {
    right: 0;
}

.icon-link.justify--center.justify--space-between:not(.text--hidden).appearance--button svg,
.icon-link.justify--center.justify--space-between:not(.text--hidden).appearance--button img {
    right: var(--pad-lr);
}

.icon-link svg, .icon-link img {
    max-width: 1em;
    height: auto;
}

.icon-link svg {
    min-width: 1em;
}

.icon-link svg path, 
.icon-link svg rect,
.icon-link svg polygon {
    fill: currentColor;
}

.icon-link.appearance--button {
    --pad-lr: .6em;
    padding: 1em var(--pad-lr);
    /* border-radius: 2em; */
    font-weight: 500;
}

.icon-link.--circular.appearance--button {
    padding: 1.5em
}

.icon-link:not(.--circular).appearance--button:not(.text--hidden) {
    --pad-lr: 1.6em;
}

.icon-link.appearance--button:not(:is(.display--flex, .display--inline-flex)) {
    display: flex;
}

.icon-link.text--hidden {
    line-height: 1;
    text-indent: -999em;
}


button.icon-link {
    border: none;
    border-radius: 0;
    text-transform: none;
    letter-spacing: 0;
    font-weight: 700;
}

.icon-link.--circular.appearance--button {
    --size: clamp(7em, 25vw, 10em);
    --gap: 1em;
    border-radius: 50%;
    flex-direction: column;
    gap: var(--gap);
    width: var(--size);
    height: var(--size);
    text-align: center;
}

@media (min-width: 782px) {
    .icon-link.--circular.appearance--button:is(.--offset-, .--offset-r-) {
        top: calc(-1 * var(--size)/2);
    }

    .icon-link.--circular.appearance--button:is(.--offset-, .--offset-b-) {
        left: calc(-1 * var(--size)/2);
    }

    .icon-link.--circular.appearance--button.--offset-r- {
        right: calc(-1 * var(--size)/2);
        left: auto;
    }

    .icon-link.--circular.appearance--button.--offset-b- {
        bottom: calc(-1 * var(--size)/2);
        top: auto;
    }
}