/* Global announcement banner (admin-managed, Settings > Announcement).
   Fixed strip above all chrome. Linked from BOTH the app layout and the
   login page, which loads none of the app's other stylesheets.

   When the banner is present, the app's fixed theme chrome is pushed down
   by the strip height via body:has() (theme values: header 5.5rem tall,
   sidebar top 5.5rem / height calc(100% - 88px), content padding 5.5rem). */

:root {
    --orbit-banner-h: 2.5rem;
}

.orbit-global-banner {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: var(--orbit-banner-h);
    z-index: 10001;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 16px;
    font-family: 'Inter', sans-serif;
    font-size: 13.5px;
    font-weight: 600;
}

.orbit-global-banner-text {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.orbit-global-banner--info {
    background: #4f46e5;
    color: #fff;
}

.orbit-global-banner--warning {
    background: #f59e0b;
    color: #1f2937;
}

.orbit-global-banner--critical {
    background: #dc2626;
    color: #fff;
}

/* Push the fixed app chrome down while a banner is showing. No effect on the
   login page, which has none of these elements. */
body:has(.orbit-global-banner) .nav-header,
body:has(.orbit-global-banner) .header {
    top: var(--orbit-banner-h) !important;
}

body:has(.orbit-global-banner) .deznav {
    top: calc(5.5rem + var(--orbit-banner-h)) !important;
    height: calc(100% - 88px - var(--orbit-banner-h)) !important;
}

body:has(.orbit-global-banner) .content-body {
    padding-top: calc(5.5rem + var(--orbit-banner-h)) !important;
}