  * {
    scrollbar-width: thin;
  }
  /* width */
  ::-webkit-scrollbar {
    width: 10px;
    height: 10px;
  }

  /* Track */
  ::-webkit-scrollbar-track {
    border-radius: 6px;
  }

  /* Handle */
  ::-webkit-scrollbar-thumb {
    background: #d9d9d9;
    border-radius: 6px;
  }

  /* Handle on hover */
  ::-webkit-scrollbar-thumb:hover {
    background: #000000;
  }

/* =============================================================
 * @backstage/ui Component Fixes
 * The announcements plugin v2.3.0 uses @backstage/ui components
 * (CSS-layer based new design system) within an old Backstage
 * MUI v4 app. These unlayered rules win over @layer components
 * to fix broken borders, invisible overlays, and plain tables.
 * bui-* class names are stable (non-hashed) identifiers applied
 * by every @backstage/ui component alongside the hashed classes.
 * ============================================================= */

/* --- Dialog Overlay ---
   Default: color-mix(rgba(0,0,0,0.06) 80%, transparent) ≈ 5% opacity
   Fix: proper semi-transparent dark backdrop, raised z-index above
   Backstage sidebar (MUI Drawer z-index: 1200) */
.bui-DialogOverlay {
  background: rgba(0, 0, 0, 0.5);
  z-index: 1400;
}

/* --- Dialog Box --- */
.bui-Dialog {
  border: 1px solid #d0d0d0;
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);
  background: #ffffff;
}

/* --- Dialog Header/Footer separators --- */
.bui-DialogHeader {
  border-bottom: 1px solid #e0e0e0;
  background: #ffffff;
}

.bui-DialogFooter {
  border-top: 1px solid #e0e0e0;
  background: #ffffff;
}

.bui-DialogBody {
  background: #ffffff;
}

/* --- TextField input border ---
   Input uses var(--bui-border-2) which can be invisible if
   CSS variable resolution fails in layered context */
.bui-Input {
  border: 1px solid #bababa;
  background-color: #ffffff;
}

.bui-Input:hover,
.bui-Input:focus {
  border-color: #666666;
}

/* --- Card ---
   @backstage/ui Card has NO border by design — add one
   to match the MUI Paper style used throughout the app */
.bui-Card {
  border: 1px solid #e0e0e0;
  border-radius: 10px;
  background: #ffffff;
  box-shadow: 0px 0px 3px 1px rgba(0, 0, 0, 0.1);
}

.bui-CardHeader {
  border-bottom: 1px solid #f0f0f0;
  padding-bottom: 8px;
}

/* --- Table ---
   Row/header borders use CSS variables inside @layer components.
   Provide explicit values so the table never looks unstyled. */
.bui-TableHeader {
  border-bottom: 2px solid #d5d5d5;
  background-color: #fafafa;
}

.bui-TableHead {
  font-weight: 600;
  color: #212d38;
  font-size: 0.875rem;
}

.bui-TableRow {
  border-bottom: 1px solid #eeeeee;
}

.bui-TableRow:hover {
  background-color: #f6f6f6;
}

.bui-TableCell {
  font-size: 0.875rem;
  color: #212d38;
}

/* --- HeaderPage (admin page title bar) ---
   Rendered inside Backstage's content area (not as a full-page
   header). Give it a light background + bottom border to visually
   separate it from content, similar to Backstage's Header style. */
.bui-HeaderPage {
  background: #f8f8f8;
  border-bottom: 1px solid #e0e0e0;
  border-radius: 6px 6px 0 0;
  padding: 0 16px;
  margin-top: 0;
  margin-bottom: 16px;
}

/* --- NewAnnouncementBanner ---
   The plugin's blockPositioning style applies marginTop: theme.spacing(3)
   (24px) which creates a gap above the banner. Remove it so the banner
   sits flush at the top of the content area. */
.announcement-banner-wrapper {
  z-index: 1000;
  position: absolute;
  width: 100%;
}

.announcement-banner-wrapper .MuiSnackbar-root {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* --- Announcements Filter Dropdown Fix --- */
.bui-Popover,
.bui-SelectPopover,
.bui-MenuPopover {
  z-index: 1500 !important;
  background: #ffffff !important;
}

/* --- Starred Entities list text spacing --- */
.starred-entities-wrapper .MuiListItemText-root.MuiListItemText-dense.MuiListItemText-multiline {
  margin-left: 20px !important;
}

/* --- Announcements Home Widget Fix --- */
.announcements-home-wrapper .MuiListItem-root {
  padding-left: 16px !important;
  border-bottom: 1px solid #E4E4E4;
}
.announcements-home-wrapper .MuiListItem-root:last-child {
  border-bottom: none;
}
.announcements-home-wrapper .MuiListItemText-root {
  margin-left: 0 !important;
  padding-left: 0 !important;
  text-align: left !important;
}
.announcements-home-wrapper .MuiListItemAvatar-root {
  min-width: 0 !important;
  margin-right: 0 !important;
  display: none !important;
}

/* =============================================================
 * Announcements Page — Card Enhancements
 * Fixes: title truncation, full-card click, hover state,
 * severity badge positioning, and skeleton loading.
 * Applied globally to bui-Card elements on announcements page.
 * ============================================================= */

/* --- Title wrapping: prevent truncation ---
   The plugin's Link uses truncate: true which adds
   text-overflow: ellipsis + white-space: nowrap.
   Override in card headers to let long CVE titles wrap. */
.bui-CardHeader .bui-Link,
.bui-CardHeader a[class*="Link"] {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: unset !important;
  display: inline !important;
  -webkit-line-clamp: unset !important;
  -webkit-box-orient: unset !important;
  word-break: break-word;
  line-height: 1.4;
}

/* --- Full card clickable ---
   Cards get a pointer cursor and a subtle hover lift.
   The actual click is handled by JS (delegated to title link). */
.bui-Card {
  cursor: pointer;
  transition: box-shadow 0.15s ease, transform 0.15s ease;
}

.bui-Card:hover {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.14);
  transform: translateY(-2px);
}

/* Let tags/buttons keep their own cursor */
.bui-Card .bui-Tag,
.bui-Card .bui-Button {
  cursor: pointer;
  position: relative;
  z-index: 2;
}

/* --- Severity badge alignment --- */
.bui-CardHeader .bui-Flex {
  flex-wrap: wrap;
  align-items: flex-start;
}

/* --- Skeleton loading enhancement ---
   The plugin renders a single <Skeleton /> element.
   Enhance it with a pulsing gradient animation. */
.bui-Skeleton {
  min-height: 280px;
  border-radius: 10px;
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 37%, #f0f0f0 63%) !important;
  background-size: 400% 100% !important;
  animation: skeleton-pulse 1.4s ease infinite !important;
}

@keyframes skeleton-pulse {
  0% { background-position: 100% 50%; }
  100% { background-position: 0 50%; }
}

/* --- Card footer tags: visual separation --- */
.bui-CardFooter {
  border-top: 1px solid #f0f0f0;
  padding-top: 8px;
}

/* --- Card body excerpt text --- */
.bui-CardBody .bui-Text {
  color: #555;
  font-size: 0.875rem;
  line-height: 1.5;
}

/* --- The plugin's HeaderPage is hidden by JS in the AnnouncementsEnhancer
   when category tabs are injected. No CSS sibling selector needed. */


/*# sourceMappingURL=main.f773e12e.css.map*/