/* Error channels stay available to controllers but never consume layout space. */
#error, #session-error, #detail-error, #task-error, .view-error, .account-error,
.nb-message.error, .nb-message.warn, .resource-notice[data-state="error"] { display: none !important; }
.console-notifications {
  position: fixed; z-index: 10000; top: 54px; right: 16px;
  width: min(420px, calc(100vw - 32px)); max-height: calc(100dvh - 80px);
  display: flex; flex-direction: column; gap: 8px; overflow-y: auto;
  pointer-events: none; margin: 0; padding: 0;
}
.console-notification {
  display: flex; align-items: flex-start; gap: 12px; pointer-events: auto;
  padding: 12px 12px 12px 16px; border: 1px solid var(--line);
  border-left: 3px solid var(--danger); border-radius: 8px;
  background: var(--panel, var(--bg)); color: var(--fg);
  box-shadow: 0 8px 28px rgb(0 0 0 / 16%); font-size: 12px; line-height: 1.6;
}
.notification-content { min-width: 0; flex: 1; overflow-wrap: anywhere; }
.notification-content strong { display: block; font-size: 11px; color: var(--muted); margin-bottom: 3px; }
.notification-content p { margin: 0; white-space: pre-wrap; max-height: 180px; overflow-y: auto; }
.notification-close { flex: none; width: 24px; height: 24px; padding: 0; border: 0; background: transparent; color: var(--muted); font-size: 20px; line-height: 1; cursor: pointer; }
.notification-close:hover { background: var(--hover); color: var(--fg); }
.notification-close:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
/* Polling/loading feedback belongs in the reserved status line, never above editors. */
.view-message { display: none; }
.resource-notice:not([data-state="error"]) { position: absolute; bottom: 28px; right: 12px; z-index: 2; background: var(--bg); }
@media (max-width: 760px) { .console-notifications { top: 48px; right: 8px; width: calc(100vw - 16px); } }
