/* Portaled once per page; no hidden menu controls occupy space in their targets. */
#openproject-context-menu {
    position: fixed;
    inset: auto;
    z-index: 1090;
    width: max-content;
    min-width: min(15rem, calc(100vw - 16px));
    max-width: min(23rem, calc(100vw - 16px));
    margin: 0;
    padding: .35rem;
    box-sizing: border-box;
    border: 1px solid var(--border, #dbe2ed);
    border-radius: .7rem;
    background: var(--bg-elevated, #fff);
    background: color-mix(in srgb, var(--bg-elevated, #fff) 96%, transparent);
    color: var(--text, #111827);
    box-shadow: 0 8px 32px rgb(15 23 42 / .18), 0 2px 6px rgb(15 23 42 / .06);
    backdrop-filter: blur(18px);
    font: 400 .875rem/1.4 var(--bs-body-font-family, system-ui, sans-serif);
    text-align: start;
    overflow: auto;
    overscroll-behavior: contain;
    outline: none;
    animation: context-menu-enter .1s ease-out;
}
#openproject-context-menu[hidden], #openproject-context-menu-status[hidden] { display: none !important; }
#openproject-context-menu::backdrop { background: transparent; pointer-events: none; }
#openproject-context-menu > button {
    display: flex;
    align-items: center;
    gap: .7rem;
    width: 100%;
    min-height: 2.25rem;
    margin: 0;
    padding: .45rem .65rem;
    border: 0;
    border-radius: .4rem;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: start;
    cursor: pointer;
    outline: none;
}
#openproject-context-menu > button > span { overflow-wrap: anywhere; min-width: 0; }
#openproject-context-menu > button > svg {
    width: 1rem;
    height: 1rem;
    flex: 0 0 1rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.7;
    stroke-linecap: round;
    stroke-linejoin: round;
    opacity: .8;
}
#openproject-context-menu > button:enabled:hover,
#openproject-context-menu > button:enabled:focus { background: var(--accent-soft, #eef2f7); }
#openproject-context-menu > button:focus-visible { box-shadow: inset 0 0 0 2px var(--accent, #2563eb); }
#openproject-context-menu > button:disabled { opacity: .45; cursor: default; }
#openproject-context-menu > [role="separator"] { height: 1px; margin: .3rem .35rem; background: var(--border, #dbe2ed); }
#openproject-context-menu-status {
    position: fixed;
    inset-inline-end: 1rem;
    bottom: 1rem;
    z-index: 1091;
    max-width: min(25rem, calc(100vw - 2rem));
    padding: .8rem 1rem;
    border-radius: .75rem;
    background: var(--feedback-surface, var(--bg-elevated, #fff));
    color: var(--feedback-text, var(--text, #111827));
    box-shadow: 0 4px 24px rgb(15 23 42 / .14);
    backdrop-filter: blur(16px);
    font: .875rem/1.5 system-ui, sans-serif;
}
@keyframes context-menu-enter { from { opacity: 0; } to { opacity: 1; } }
@media (pointer: coarse) { #openproject-context-menu > button { min-height: 2.75rem; } }
@media (prefers-reduced-motion: reduce) { #openproject-context-menu { animation: none; } }
@media (forced-colors: active) {
    #openproject-context-menu { background: Canvas; color: CanvasText; border-color: CanvasText; }
    #openproject-context-menu > button:enabled:hover,
    #openproject-context-menu > button:enabled:focus { background: Highlight; color: HighlightText; }
}
@media print { #openproject-context-menu, #openproject-context-menu-status { display: none !important; } }
