/* === Session Notification Banner === */ .session-notification-banner { --session-notification-banner-max-height: min(60vh, calc(var(--space-2xl) * 13)); --session-notification-list-max-height: min(48vh, calc(var(--space-2xl) * 9)); --session-notification-touch-size: calc(var(--space-xl) + var(--space-md)); position: sticky; top: 0; z-index: 30; display: flex; flex-direction: column; gap: var(--space-sm); padding: var(--space-sm) var(--space-lg); border-bottom: var(--btn-border-width) solid var(--border); border-left: var(--space-xs) solid var(--triage); background: var(--surface); box-sizing: border-box; max-height: var(--session-notification-banner-max-height); opacity: 1; transition: opacity var(--transition-fast), max-height var(--transition-fast); animation: session-notification-banner-enter var(--transition-fast); } @keyframes session-notification-banner-enter { from { opacity: 0; max-height: 0; } to { opacity: 1; max-height: var(--session-notification-banner-max-height); } } .session-notification-banner__header { display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); } .session-notification-banner__headline { display: inline-flex; align-items: center; gap: var(--space-xs); font-weight: 600; color: var(--text); } .session-notification-banner__headline svg { color: var(--triage); flex-shrink: 0; } .session-notification-banner__dismiss-all { display: inline-flex; align-items: center; gap: var(--space-sm); min-height: var(--session-notification-touch-size); border: var(--btn-border-width) solid transparent; background: transparent; color: var(--text-muted); font-size: 0.75rem; font-weight: 600; border-radius: var(--radius-sm); padding: var(--space-xs) var(--space-sm); cursor: pointer; transition: background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast); } .session-notification-banner__dismiss-all:hover { color: var(--text); background: var(--card-hover); border-color: var(--border); } .session-notification-banner__dismiss-all:focus-visible, .session-notification-banner__resume:focus-visible, .session-notification-banner__dismiss:focus-visible { outline: none; box-shadow: var(--focus-ring-strong); } .session-notification-banner__list { display: flex; flex-direction: column; gap: var(--space-sm); overflow-y: auto; max-height: var(--session-notification-list-max-height); } .session-notification-banner__item { display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); padding: var(--space-sm) var(--space-md); border: var(--btn-border-width) solid var(--border); border-radius: var(--radius-sm); background: color-mix(in srgb, var(--triage) 8%, var(--surface)); } .session-notification-banner__item--error { border-color: color-mix(in srgb, var(--color-error) 35%, var(--border)); background: var(--status-error-bg, color-mix(in srgb, var(--color-error) 12%, var(--surface))); } .session-notification-banner__item-main { display: flex; align-items: center; gap: var(--space-sm); min-width: 0; flex: 1; } .session-notification-banner__type-icon { color: var(--triage); flex-shrink: 0; } .session-notification-banner__type-icon--error { color: var(--color-error); } .session-notification-banner__text { min-width: 0; } .session-notification-banner__title { margin: 0; font-size: 0.8125rem; font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .session-notification-banner__meta { margin: var(--space-xs) 0 0; font-size: 0.75rem; color: var(--text-muted); } .session-notification-banner__actions { display: inline-flex; align-items: center; gap: var(--space-sm); } .session-notification-banner__resume { min-height: var(--session-notification-touch-size); border: var(--btn-border-width) solid color-mix(in srgb, var(--triage) 60%, var(--border)); background: transparent; color: var(--triage); border-radius: var(--radius-sm); font-size: 0.75rem; font-weight: 600; padding: var(--space-xs) var(--space-md); cursor: pointer; transition: background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast); } .session-notification-banner__resume:hover { background: color-mix(in srgb, var(--triage) 14%, transparent); border-color: var(--triage); } .session-notification-banner__item--error .session-notification-banner__resume { border-color: color-mix(in srgb, var(--color-error) 60%, var(--border)); color: var(--color-error); } .session-notification-banner__item--error .session-notification-banner__resume:hover { background: color-mix(in srgb, var(--color-error) 14%, transparent); border-color: var(--color-error); } .session-notification-banner__dismiss { display: inline-flex; align-items: center; justify-content: center; width: var(--session-notification-touch-size); height: var(--session-notification-touch-size); border-radius: var(--radius-sm); border: var(--btn-border-width) solid transparent; background: transparent; color: var(--text-muted); cursor: pointer; transition: background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast); } .session-notification-banner__dismiss:hover { color: var(--text); background: var(--card-hover); border-color: var(--border); } @media (max-width: 768px) { .session-notification-banner { padding: var(--space-sm) var(--space-md); gap: var(--space-sm); } .session-notification-banner__header { flex-direction: column; align-items: flex-start; } .session-notification-banner__item { flex-direction: column; align-items: flex-start; } .session-notification-banner__item-main { width: 100%; } .session-notification-banner__title { max-width: 100%; } .session-notification-banner__actions { width: 100%; justify-content: flex-end; } }