/* NTIMA OS v10.12.3 — slow negative-state pulse.
 * Negative operational states remain visually identical and keep their current
 * semantic colours. Only a slow opacity/brightness pulse is added.
 */

:root{
  --genesis-negative-pulse-speed:3.8s;
  --genesis-negative-surface-speed:4.4s;
}

/* Compact warning signals, status pills, counters and negative text. */
.wfms-danger-siren,
.wfms-unpaid-alert,
.wfms-pill.unpaid,
.wfms-nav-badge,
.wfms-bell b,
.wfms-v1089-chip-badge,
.genesis-admin-alert-item.severity-critical .genesis-admin-alert-dot,
.severity-critical .genesis-admin-alert-dot,
.calendar-legend i.urgent,
.workspace-due.overdue,
.wfms-status-text.non-paye,
.wfms-inline-unpaid,
.wfms-live-status.inactive,
.wfms-live-status.unpaid,
.wfms-live-status.danger,
.wfms-month-premium.unpaid .wfms-month-premium-head b,
.wfms-credit-badge.late,
.wfms-installment-status.late,
.genesis-status-pill.is-overdue,
.wtfms-decision-status.rejected,
.genesis-fraud-severity.severity-critical,
.genesis-device-status.is-blocked,
.event-login_failed,
.is-danger,
.genesis-eligibility-check.bad b,
.wtfms-check.bad strong,
.genesis-penalty{
  animation:genesis-negative-slow-signal var(--genesis-negative-pulse-speed) ease-in-out infinite!important;
  will-change:opacity,filter;
}

/* Larger negative surfaces pulse gently without changing their border, fill,
 * shape, spacing or module colour. */
.wfms-payment-alert,
.wfms-month-premium.unpaid,
.calendar-event.priority-urgent,
.workspace-task.priority-urgent,
.genesis-alert.critical,
.genesis-alert-strip.has-critical,
.genesis-admin-alert-item.severity-critical,
.wfms-request-item.rejected,
.genesis-collections-kpi.is-negative,
.wfms-credit-kpi.is-negative,
.notice.notice-error,
.genesis-eligibility-error,
.genesis-eligibility-check.bad,
.wtfms-check.bad{
  animation:genesis-negative-slow-surface var(--genesis-negative-surface-speed) ease-in-out infinite!important;
  will-change:opacity,filter;
}

@keyframes genesis-negative-slow-signal{
  0%,100%{opacity:1;filter:brightness(1) saturate(1)}
  44%{opacity:.58;filter:brightness(.96) saturate(.96)}
  62%{opacity:1;filter:brightness(1.08) saturate(1.08)}
}

@keyframes genesis-negative-slow-surface{
  0%,100%{opacity:1;filter:brightness(1) saturate(1)}
  46%{opacity:.78;filter:brightness(.98) saturate(.98)}
  66%{opacity:1;filter:brightness(1.035) saturate(1.06)}
}

/* Keep controls completely stable while the user is reading or interacting. */
.genesis-alert.critical:hover,
.genesis-alert.critical:focus-within,
.genesis-alert-strip.has-critical:hover,
.genesis-alert-strip.has-critical:focus-within,
.genesis-admin-alert-item.severity-critical:hover,
.genesis-admin-alert-item.severity-critical:focus-within,
.workspace-task.priority-urgent:hover,
.workspace-task.priority-urgent:focus-within,
.calendar-event.priority-urgent:hover,
.calendar-event.priority-urgent:focus-within,
.wfms-request-item.rejected:hover,
.wfms-request-item.rejected:focus-within{
  animation-play-state:paused!important;
  opacity:1!important;
  filter:none!important;
}

/* The member notification counter remains green by design and is not treated
 * as a negative state. */
.wfms-v1082-header-actions .wfms-bell b{
  animation:none!important;
  opacity:1!important;
  filter:none!important;
}

/* Accessibility: users who request less motion receive the same static design. */
@media(prefers-reduced-motion:reduce){
  .wfms-danger-siren,
  .wfms-unpaid-alert,
  .wfms-pill.unpaid,
  .wfms-nav-badge,
  .wfms-bell b,
  .wfms-v1089-chip-badge,
  .genesis-admin-alert-item.severity-critical,
  .genesis-admin-alert-item.severity-critical .genesis-admin-alert-dot,
  .severity-critical .genesis-admin-alert-dot,
  .calendar-legend i.urgent,
  .calendar-event.priority-urgent,
  .workspace-due.overdue,
  .workspace-task.priority-urgent,
  .wfms-status-text.non-paye,
  .wfms-inline-unpaid,
  .wfms-live-status.inactive,
  .wfms-live-status.unpaid,
  .wfms-live-status.danger,
  .wfms-month-premium.unpaid,
  .wfms-month-premium.unpaid .wfms-month-premium-head b,
  .wfms-payment-alert,
  .wfms-credit-badge.late,
  .wfms-installment-status.late,
  .genesis-status-pill.is-overdue,
  .genesis-collections-kpi.is-negative,
  .wfms-credit-kpi.is-negative,
  .genesis-alert.critical,
  .genesis-alert-strip.has-critical,
  .wfms-request-item.rejected,
  .wtfms-decision-status.rejected,
  .genesis-fraud-severity.severity-critical,
  .genesis-device-status.is-blocked,
  .event-login_failed,
  .is-danger,
  .notice.notice-error,
  .genesis-eligibility-error,
  .genesis-eligibility-check.bad,
  .genesis-eligibility-check.bad b,
  .wtfms-check.bad,
  .wtfms-check.bad strong,
  .genesis-penalty{
    animation:none!important;
    opacity:1!important;
    filter:none!important;
  }
}

@media print{
  .wfms-danger-siren,
  .wfms-unpaid-alert,
  .wfms-pill.unpaid,
  .wfms-nav-badge,
  .wfms-bell b,
  .wfms-v1089-chip-badge,
  .genesis-admin-alert-item.severity-critical,
  .calendar-event.priority-urgent,
  .workspace-due.overdue,
  .workspace-task.priority-urgent,
  .wfms-status-text.non-paye,
  .wfms-inline-unpaid,
  .wfms-live-status.inactive,
  .wfms-live-status.unpaid,
  .wfms-live-status.danger,
  .wfms-month-premium.unpaid,
  .wfms-payment-alert,
  .wfms-credit-badge.late,
  .wfms-installment-status.late,
  .genesis-status-pill.is-overdue,
  .genesis-collections-kpi.is-negative,
  .wfms-credit-kpi.is-negative,
  .notice.notice-error,
  .genesis-alert.critical,
  .genesis-alert-strip.has-critical,
  .wfms-request-item.rejected,
  .wtfms-decision-status.rejected,
  .genesis-fraud-severity.severity-critical,
  .genesis-device-status.is-blocked,
  .event-login_failed,
  .is-danger,
  .notice.notice-error,
  .genesis-eligibility-error,
  .genesis-eligibility-check.bad,
  .wtfms-check.bad,
  .genesis-penalty{
    animation:none!important;
    opacity:1!important;
    filter:none!important;
  }
}
