/* 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;
}

/* High-visibility, severity-specific campaign bars; theme accent gently tints each semantic hue. */
.forge-announcement {
    --notice-bg: color-mix(in srgb, #087bfa 94%, var(--forge-accent, #087bfa));
    --notice-fg: #fff;
    --notice-cta: rgba(0, 30, 85, .28);
    display: flex;
    align-items: center;
    gap: clamp(.65rem, 1.5vw, 1.5rem);
    min-height: 76px;
    padding: .9rem clamp(1rem, 3vw, 2.75rem);
    background: linear-gradient(105deg, var(--notice-bg), color-mix(in srgb, var(--notice-bg) 88%, #091a35));
    color: var(--notice-fg);
    border: 0;
    border-bottom: 1px solid color-mix(in srgb, var(--notice-bg) 70%, #000);
    font-size: .9rem;
    line-height: 1.45;
}
.forge-announcement[data-severity="success"] { --notice-bg: color-mix(in srgb, #0dae5b 94%, var(--forge-accent, #0dae5b)); --notice-cta: rgba(0, 70, 39, .32); }
.forge-announcement[data-severity="warning"] { --notice-bg: color-mix(in srgb, #ffbf2f 95%, var(--forge-accent, #ffbf2f)); --notice-fg: #241900; --notice-cta: rgba(104, 68, 0, .23); }
.forge-announcement[data-severity="critical"] { --notice-bg: color-mix(in srgb, #ed2939 94%, var(--forge-accent, #ed2939)); --notice-cta: rgba(122, 9, 23, .38); }
.forge-announcement[data-severity="announcement"] { --notice-bg: color-mix(in srgb, #692bfa 94%, var(--forge-accent, #692bfa)); --notice-cta: rgba(43, 9, 118, .35); }
.forge-announcement-icon {
    display: inline-flex;
    flex: 0 0 2.5rem;
    width: 2.5rem;
    height: 2.5rem;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 50%;
    background: var(--notice-fg);
    color: var(--notice-bg);
    font-size: 1.35rem;
    font-weight: 850;
}
.forge-announcement[data-severity="warning"] .forge-announcement-icon { background: transparent; color: #392600; font-size: 2rem; }
.forge-announcement-copy { display: flex; flex: 1 1 240px; flex-direction: column; min-width: 0; overflow-wrap: anywhere; }
.forge-announcement-severity { display: block; font-size: 1.03rem; font-weight: 750; color: inherit; }
.forge-announcement-message { display: block; white-space: pre-wrap; }
.forge-announcement-link {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    max-width: min(100%, 250px);
    padding: .65rem 1.15rem;
    border: 1px solid rgba(255,255,255,.15);
    border-radius: .4rem;
    background: var(--notice-cta);
    color: var(--notice-fg);
    font-size: .84rem;
    font-weight: 750;
    text-align: center;
    text-decoration: none;
    overflow-wrap: anywhere;
}
.forge-announcement-link[hidden] { display: none; }
.forge-announcement-link:hover { background: color-mix(in srgb, var(--notice-cta) 80%, #000); color: var(--notice-fg); text-decoration: none; }
.forge-announcement-dismiss {
    flex: 0 0 34px;
    width: 34px;
    height: 34px;
    border: 1px solid transparent;
    border-radius: 6px;
    background: transparent;
    color: var(--notice-fg);
    font-size: 1.6rem;
    line-height: 1;
    cursor: pointer;
}
.forge-announcement-dismiss:hover { background: var(--notice-cta); border-color: color-mix(in srgb, var(--notice-fg) 35%, transparent); }
.forge-announcement-dismiss:focus-visible, .forge-announcement-link:focus-visible {
    outline: 3px solid var(--notice-fg);
    outline-offset: 2px;
}
@media(max-width: 575px) {
    .forge-announcement { align-items: center; flex-wrap: wrap; gap: .6rem; padding: .75rem .8rem; }
    .forge-announcement-icon { flex-basis: 2rem; width: 2rem; height: 2rem; font-size: 1.1rem; }
    .forge-announcement-copy { flex: 1 1 calc(100% - 94px); }
    .forge-announcement-link { margin-inline-start: 2.6rem; max-width: calc(100% - 5rem); }
    .forge-announcement-dismiss { margin-inline-start: auto; }
}
@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; }
