.event-village-button {
    --village-button-size: 44px;
    --village-button-color: #365349;
    --village-button-border: #d9dfd9;
    --village-button-background: #fff;
    --village-button-hover: #edf4e9;
    --village-tooltip-background: #173b35;
    --village-tooltip-color: #fff;

    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 var(--village-button-size);
    width: var(--village-button-size);
    height: var(--village-button-size);
    box-sizing: border-box;
    padding: 0;
    border: 1px solid var(--village-button-border);
    border-radius: 50%;
    background: var(--village-button-background);
    color: var(--village-button-color);
    text-decoration: none;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background-color 160ms ease, border-color 160ms ease,
        box-shadow 160ms ease, transform 160ms ease;
}

.event-village-button::after {
    content: attr(data-tooltip);
    position: absolute;
    z-index: 50;
    bottom: calc(100% + 10px);
    left: 50%;
    padding: 8px 12px;
    border-radius: 8px;
    background: var(--village-tooltip-background);
    color: var(--village-tooltip-color);
    box-shadow: 0 4px 14px rgb(15 40 30 / 18%);
    font: 500 12px/1.4 Arial, sans-serif;
    white-space: nowrap;
    text-align: center;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate(-50%, 4px);
    transition: opacity 140ms ease, transform 140ms ease, visibility 140ms;
}

.event-village-button::before {
    content: "";
    position: absolute;
    z-index: 50;
    bottom: calc(100% + 5px);
    left: 50%;
    border: 5px solid transparent;
    border-bottom: 0;
    border-top-color: var(--village-tooltip-background);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate(-50%, 4px);
    transition: opacity 140ms ease, transform 140ms ease, visibility 140ms;
}

.event-village-button:focus-visible::before,
.event-village-button:focus-visible::after {
    opacity: 1;
    visibility: visible;
    transform: translate(-50%, 0);
}

@media (hover: hover) {
    .event-village-button:hover::before,
    .event-village-button:hover::after {
        opacity: 1;
        visibility: visible;
        transform: translate(-50%, 0);
    }
}

.event-village-button svg {
    display: block;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    pointer-events: none;
}

@media (hover: hover) {
    .event-village-button:hover {
        background: var(--village-button-hover);
        border-color: #8ca98d;
        color: var(--village-button-color);
        box-shadow: 0 3px 8px rgb(32 65 46 / 10%);
        transform: translateY(-1px);
    }
}

.event-village-button:focus-visible {
    outline: 3px solid #789e70;
    outline-offset: 3px;
}

.event-village-button:active {
    background: var(--village-button-hover);
    transform: scale(.96);
    box-shadow: none;
}

.dark .event-village-button {
    --village-button-color: #d9e9d6;
    --village-button-border: #46564b;
    --village-button-background: #202d27;
    --village-button-hover: #304437;
    --village-tooltip-background: #e2edde;
    --village-tooltip-color: #173b35;
}

@media (prefers-reduced-motion: reduce) {
    .event-village-button,
    .event-village-button::before,
    .event-village-button::after {
        transition: none;
    }

    .event-village-button:hover,
    .event-village-button:active {
        transform: none;
    }
}
