/* Recipient-specific semantic colors: existing Forge theme manager owns these variables. */
/* Keep the campaign bar above Forge's fixed header and desktop sidebar, but beneath
   opened dialogs/mobile navigation and the operational maintenance overlay.
   JS measures actual stacked heights after content updates and responsive wrapping. */
.forge-announcements {
    position: fixed;
    inset-inline: 0;
    top: calc(env(safe-area-inset-top, 0px) + var(--forge-maintenance-fixed-height, 0px));
    z-index: 1041; /* header 1030; dialogs/offcanvas and mobile nav remain interactive */
    width: 100%;
    max-height: min(42dvh, 260px);
    overflow-y: auto;
    overscroll-behavior: contain;
    background: var(--forge-surface-background, var(--forge-card-bg, #fff));
}
.forge-announcements:not(.has-items) { display: none; }

/* Only shift the authenticated shell when at least one visible notice exists.
   No padding hacks: Forge's navigation/header are fixed and main uses top: 80px. */
body.forge-has-active-announcements .nxl-header {
    top: calc(env(safe-area-inset-top, 0px) + var(--forge-banner-stack-height, 0px)) !important;
}
body.forge-has-active-announcements .nxl-navigation {
    top: calc(env(safe-area-inset-top, 0px) + var(--forge-banner-stack-height, 0px)) !important;
    height: calc(100dvh - env(safe-area-inset-top, 0px) - var(--forge-banner-stack-height, 0px)) !important;
    bottom: auto;
}
body.forge-has-active-announcements .nxl-navigation .navbar-content {
    height: calc(100dvh - 80px - env(safe-area-inset-top, 0px) - var(--forge-banner-stack-height, 0px));
}
body.forge-has-active-announcements .nxl-container {
    top: calc(80px + var(--forge-banner-stack-height, 0px));
}

/* Maintenance remains a separate, higher-priority system. Its warning bar sits
   above ordinary communications; the existing blocking overlay (1080) wins. */
body.forge-has-active-announcements .forge-maintenance-banner {
    position: fixed;
    inset-inline: 0;
    top: env(safe-area-inset-top, 0px);
    margin: 0;
    z-index: 1042;
}

.forge-announcement { --notice-accent: var(--forge-accent, currentColor); display:flex; align-items:center; flex-wrap:wrap; gap:clamp(.45rem, 1vw, 1rem); padding: .55rem clamp(.8rem, 2vw, 1.4rem); min-height:44px; background:var(--forge-card-bg, #fff); color:var(--forge-text, #1e293b); border-bottom:1px solid var(--forge-card-border, #cbd5e1); border-inline-start:3px solid var(--notice-accent); font-size: .84rem; line-height:1.5; }
.forge-announcement[data-severity="critical"] { border-inline-start-width:6px; font-weight:600; }
.forge-announcement[data-severity="warning"] { border-inline-start-width:4px; }
.forge-announcement-icon { display:inline-flex; justify-content:center; align-items:center; font-size:.8rem; font-weight:800; flex:0 0 1.5rem; height:1.5rem; border:1px solid var(--forge-card-border, #cbd5e1); border-radius:50%; color:var(--forge-text, #1e293b); }
.forge-announcement-copy { min-width:0; flex: 1 1 200px; overflow-wrap:anywhere; }
.forge-announcement-severity { font-weight:750; margin-inline-end:.3rem; }
.forge-announcement-message { white-space:pre-wrap; }
.forge-announcement-link { color:var(--forge-link, var(--forge-text, #1e293b)); font-weight:700; border-bottom:1px solid currentColor; text-decoration:none; overflow-wrap:anywhere; }
.forge-announcement-link:hover { text-decoration:underline; color:var(--forge-link, var(--forge-text, #1e293b)); }
.forge-announcement-dismiss { flex:0 0 32px; height:32px; margin-inline-start:auto; border:1px solid transparent; border-radius:6px; background:transparent; color:var(--forge-text, #1e293b); font-size:1.35rem; line-height:1; cursor:pointer; }
.forge-announcement-dismiss:hover { background:var(--forge-accent-soft, var(--forge-surface-background, #f1f5f9)); border-color:var(--forge-card-border, #cbd5e1); }
.forge-announcement-dismiss:focus-visible, .forge-announcement-link:focus-visible { outline:3px solid var(--forge-focus-ring, var(--forge-accent, currentColor)); outline-offset:2px; }
@media(max-width: 575px) { .forge-announcement { align-items:flex-start; gap:.45rem; padding:.55rem .7rem; } .forge-announcement-copy { flex:1 1 calc(100% - 84px); } .forge-announcement-link { margin-inline-start:2rem; } }
@media(prefers-reduced-motion: reduce) { .forge-announcement * { transition:none !important; animation:none !important; } }

.forge-announcements-more > summary { list-style-position:inside; cursor:pointer; padding:.45rem 1rem; color:var(--forge-text, #1e293b); background:var(--forge-card-bg, #fff); border-bottom:1px solid var(--forge-card-border, #cbd5e1); font-weight:650; font-size:.8rem; }
.forge-announcements-more > summary:focus-visible { outline:3px solid var(--forge-focus-ring, var(--forge-accent, currentColor)); outline-offset:-3px; }
