button,
a,
.client-open,
.clickable-record-row,
.plan-item,
.calendar-event,
.dashboard-task,
.sheet-download,
.primary-link,
.generated-document-links a {
  transition:
    background-color .16s ease,
    border-color .16s ease,
    color .16s ease,
    box-shadow .16s ease,
    transform .16s ease,
    opacity .16s ease;
}

button:not(:disabled),
a[href],
.client-open,
.clickable-record-row,
.plan-item,
.calendar-event,
.dashboard-task,
.sheet-download,
.primary-link,
.generated-document-links a {
  cursor: pointer;
}

button:not(:disabled):hover,
.primary:not(:disabled):hover,
form > button[type=submit]:not(:disabled):hover {
  transform: translateY(-1px);
  box-shadow: 0 9px 20px #007cbf2b;
  filter: brightness(1.03);
}

.secondary:not(:disabled):hover,
.close:not(:disabled):hover,
.modal-close:not(:disabled):hover,
.modal-cancel:not(:disabled):hover {
  background: #eef8fd;
  border-color: #9bd6ee;
  color: var(--blue);
  transform: translateY(-1px);
  box-shadow: 0 7px 16px #1f374b14;
}

.text-action:hover,
.primary-link:hover,
.sheet-download:hover,
.generated-document-links a:hover,
.job-actions a:hover {
  color: #005f93;
  background: #eef8fd;
  border-color: #9bd6ee;
  text-decoration: none;
}

.text-action:hover {
  border-radius: 7px;
  box-shadow: inset 0 0 0 1px #c7e8f6;
}

.client-open:hover,
.clickable-record-row:hover,
.dashboard-task:hover,
.compact-row:hover,
.budget-row:hover,
.sub-row:hover {
  background: #f2f9fd;
  box-shadow: inset 3px 0 0 var(--blue);
}

.calendar-event:not(.done):not(.locked):hover,
.mobile-job:hover,
.document-card:hover {
  border-color: #9bd6ee;
  box-shadow: 0 10px 24px #1f374b18;
  transform: translateY(-1px);
}

button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
.client-open:focus-visible,
.clickable-record-row:focus-visible,
.plan-item:focus-visible,
.calendar-event:focus-visible {
  outline: 3px solid #bce6f8;
  outline-offset: 2px;
}

button:disabled,
.primary:disabled,
.secondary:disabled {
  cursor: not-allowed;
  opacity: .58;
  transform: none;
  box-shadow: none;
}

.close:hover {
  background: #e8f6fc;
}

@media (prefers-reduced-motion: reduce) {
  button,
  a,
  .client-open,
  .clickable-record-row,
  .plan-item,
  .calendar-event,
  .dashboard-task,
  .sheet-download,
  .primary-link,
  .generated-document-links a {
    transition: none;
  }

  button:not(:disabled):hover,
  .primary:not(:disabled):hover,
  .secondary:not(:disabled):hover,
  .calendar-event:not(.done):not(.locked):hover,
  .mobile-job:hover,
  .document-card:hover {
    transform: none;
  }
}
