/* ── Generic anchored popover menu ──────────────────────────────────────────
 * Reusable dropdown/menu shell for native [popover] elements anchored to a
 * trigger via CSS anchor positioning (position-anchor set inline per instance,
 * matched against an anchor-name set on the trigger element).
 *
 * Usage:
 *   <button popovertarget="popover-x" style="anchor-name: --x">...</button>
 *   <div id="popover-x" popover class="popover-menu" style="position-anchor: --x">
 *       <button type="button" class="popover-menu-item">...</button>
 *       <hr class="popover-menu-divider" />
 *       <button type="button" class="popover-menu-item popover-menu-item--danger">...</button>
 *   </div>
 *
 * Override --_popover-menu-width inline (style="--_popover-menu-width: 16rem")
 * for instances that need a different width than the 14rem default.
 * ────────────────────────────────────────────────────────────────────────── */
.popover-menu {
    --_pm-radius: 1rem;
    --_pm-shadow: var(--shadow-lg);

    /* position: fixed; */
    position: absolute;
    inset: auto;
    top: anchor(bottom);
    right: anchor(right);
    position-try-fallbacks: flip-block;
    margin: var(--_pm-margin, 0.375rem 0 0);
    padding: 0.625rem;
    border: 1px solid var(--gray-clr-200);
    border-radius: var(--_pm-radius);
    background-color: var(--white-clr);
    box-shadow: var(--_pm-shadow);
    width: var(--_popover-menu-width, 14rem);

    &:popover-open {
        display: flex;
        flex-direction: column;
        gap: 0.125rem;
    }
}

.popover-menu-text {
    --line-clamp: 1;
    font-size: var(--fs-200);
    font-weight: var(--fw-500);
    color: var(--midnight-blue-clr-300);
    margin-bottom: 0.25rem;
    padding-inline: 0.75rem;
}

.popover-menu-item {
    --_pmi-clr: var(--midnight-blue-clr-500);
    --_pmi-hover-bg: var(--gray-clr-50);

    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.5rem 0.75rem;
    border: none;
    border-radius: 0.625rem;
    background: none;
    color: var(--_pmi-clr);
    font-size: var(--fs-300, 0.875rem);
    text-align: left;
    text-decoration: none;
    cursor: pointer;

    .iconify {
        font-size: 1.125rem;
        flex-shrink: 0;
    }

    &:not(:disabled):hover {
        color: var(--_pmi-hover-clr, var(--_pmi-clr));
        background-color: var(--_pmi-hover-bg);
        outline: 1px solid var(--_pmi-hover-border-clr, var(--gray-clr-200));
    }

    &.is-selected {
        background-color: var(--gray-clr-100);
        font-weight: var(--fw-500);
    }

    &:disabled,
    &[disabled] {
        color: var(--gray-clr-300);
        cursor: not-allowed;

        &:hover {
            background-color: transparent;
        }
    }
}

.popover-menu-item--danger {
    --_pmi-clr: var(--red-clr-600);
    --_pmi-hover-bg: var(--red-clr-50);
    --_pmi-hover-border-clr: var(--red-clr-100);
}

.popover-menu-divider {
    margin-block: 0.25rem;
    border: none;
    border-top: 1px solid var(--gray-clr-200);
}
