/* Fixed vertical stack on the far edge (right on LTR, left on RTL).
   Three identical 44×44 icon-only pills — house, envelope, speaker. */

.site-side {
    position: fixed;
    inset-inline-end: var(--site-side-inset);
    inset-block-start: 50%;
    transform: translateY(-50%);
    z-index: calc(var(--z-header) - 2);
    display: flex;
    flex-direction: column;
    gap: 8px;
    pointer-events: none;
}

.site-side > * {
    pointer-events: auto;
}

.site-side__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    background: rgba(250, 247, 242, 0.92);
    color: var(--color-text);
    border: 1px solid var(--color-border);
    border-radius: 2px;
    padding: 0;
    text-decoration: none;
    transition: background var(--dur-fast) var(--ease-out),
                color var(--dur-fast) var(--ease-out),
                transform var(--dur-fast) var(--ease-out);
    box-shadow: var(--shadow-xs);
}

.site-side__btn:hover,
.site-side__btn:focus-visible {
    background: var(--color-text);
    color: var(--color-bg);
    transform: translateY(-1px);
    outline: none;
}

.site-side__icon {
    display: block;
    width: 22px;
    height: 22px;
    flex-shrink: 0;
}

/* The mute button holds two SVGs (muted + unmuted) and toggles the [hidden]
   attribute via JS. Without this override, `display: block` above wins over
   the browser default `[hidden] { display: none }`, so both SVGs stack. */
.site-side__icon[hidden] {
    display: none;
}

/* Small horizontal breather so the mute button feels grouped separately. */
.site-side__btn--mute {
    margin-block-start: 16px;
}

@media (max-width: 720px) {
    .site-side {
        inset-block-start: auto;
        inset-block-end: var(--space-4);
        inset-inline-end: var(--space-4);
        transform: none;
        flex-direction: row;
        gap: var(--space-2);
    }
    .site-side__btn--mute { margin-block-start: 0; }
}
