.icon-link {
    --hover-background-color: none;
    --hover-icon-color: currentColor;
    --hover-opacity: initial;
    --transition-speed: .3s;
    text-decoration: none;
    color: inherit;
    font-weight: inherit;
    transition: opacity var(--transition-speed);
}

.icon-link:not(.pos) {
    position: relative;
}

.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: .9em;
    --pad-tb: .9em;
    padding: var(--pad-tb) var(--pad-lr);
    /* border-radius: 2em; */
    font-weight: 500;
    letter-spacing: .48px;
    border-radius: 4px;
}

.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.appearance--button.small {
    --pad-lr: .4em;
    --pad-tb: .25em;
}

.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;
    }
}

.icon-wrap {
    line-height: 0px;
}

.icon-link .icon-wrap {
    overflow: hidden;
    position: relative;
    display: flex;
    text-indent: 0;
}

.icon-link .icon-wrap :is(.icon-hover, .icon-normal) {
    transition: transform var(--transition-speed);
}

.icon-link .icon-wrap .icon-hover {
    position: absolute;
    left: 0;
    top: 0;
}

/* .icon-link.has-hover-icon-color .icon-wrap .icon-hover {
    color: var(--hover-icon-color)
} */

.icon-link:not(:hover) .icon-wrap .icon-normal,
.icon-link:hover .icon-wrap .icon-hover {
    transition-delay: var(--transition-speed);
}

.icon-link:not(:hover) .icon-wrap .icon-hover {
    transform: translate(-100%);
}

.icon-link:hover .icon-wrap .icon-normal {
    transform: translate(100%);
}

/* .icon-link.appearance--button:hover {
    letter-spacing: .3px;
}

.icon-link:hover {
    font-style: italic;
} */



/* Trigga knappens hover-effekt när link-wrap hovras */
.link-wrap:hover a.icon-link.has-hover-background-color {
    background-color: var(--hover-background-color) !important;
}

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

.link-wrap:hover a.icon-link.appearance--button {
    letter-spacing: .34px;
}

.link-wrap:hover a.icon-link {
    font-style: italic;
    /* opacity: 0.7; */
}

.link-wrap:hover a.icon-link .icon-wrap .icon-hover {
    transform: translate(0);
    transition-delay: var(--transition-speed);
}

.link-wrap:hover a.icon-link .icon-wrap .icon-normal {
    transform: translate(100%);
    transition-delay: 0s;
}

/* .link-wrap:hover a.icon-link.has-hover-icon-color .icon-wrap .icon-hover {
    color: var(--hover-icon-color);
} */


.icon-link .title-hover {
    position: absolute;
    font-style: italic;
}

.icon-link :is(.title-normal, .title-hover) {
    transition: opacity var(--transition-speed);
}

.icon-link:not(:hover) .title-hover,
.icon-link:hover .title-normal {
    opacity: 0;
}