:root {
  --interaction-accent-hover: #c84f22;
  --interaction-secondary: #4b5d63;
  --interaction-secondary-hover: #3f5055;
  --interaction-soft: #f3ede2;
  --interaction-focus: #b94720;
  --interaction-duration: 150ms;
}

/* Primary actions keep their existing geometry. The inner line is painted
   with box-shadow so it cannot alter button dimensions or surrounding layout. */
:is(.button, button):not(:where(
  .secondary,
  .danger,
  .link,
  .nav-menu__trigger,
  .account-group__toggle,
  .resource-management-group__toggle,
  .member-toggle,
  .activity-carousel__arrow,
  .activity-carousel__dot,
  .category-tree__toggle,
  .folder-node,
  .resource-file-row,
  .resource-file-group__toggle,
  .resource-attachment-row,
  .resource-folder-item,
  .resource-recovery h2 button,
  .resource-workflow button,
  .resource-attachment-tabs button,
  .preview-attachment-gallery__tabs button,
  .resource-detail-action
)) {
  box-shadow: inset 0 0 0 1px transparent;
  transition:
    background-color var(--interaction-duration) ease,
    border-color var(--interaction-duration) ease,
    box-shadow var(--interaction-duration) ease,
    color var(--interaction-duration) ease,
    transform 100ms ease;
}

:is(.button.secondary, button.secondary):not(.resource-detail-action) {
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .24);
  transition:
    background-color var(--interaction-duration) ease,
    box-shadow var(--interaction-duration) ease,
    color var(--interaction-duration) ease,
    transform 100ms ease;
}

:is(.button.danger, button.danger) {
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .2);
  transition:
    background-color var(--interaction-duration) ease,
    box-shadow var(--interaction-duration) ease,
    transform 100ms ease;
}

:is(.button, button):not(:where(.link, .nav-menu__trigger, .account-group__toggle, .resource-management-group__toggle, .member-toggle, .activity-carousel__arrow, .activity-carousel__dot, .category-tree__toggle, .folder-node, .resource-file-row, .resource-file-group__toggle, .resource-attachment-row, .resource-folder-item, .resource-recovery h2 button, .resource-workflow button, .resource-attachment-tabs button, .preview-attachment-gallery__tabs button, .resource-detail-action)):active:not(:disabled):not([aria-disabled="true"]) {
  transform: scale(.98);
}

/* Header navigation uses a painted bottom edge and never changes box size. */
header.site-header > nav > :is(a, .nav-menu) {
  transition: background-color var(--interaction-duration) ease, box-shadow var(--interaction-duration) ease, color var(--interaction-duration) ease;
}

header.site-header > nav > a,
header.site-header .nav-menu__trigger {
  box-shadow: inset 0 -2px transparent;
  transition: background-color var(--interaction-duration) ease, box-shadow var(--interaction-duration) ease, color var(--interaction-duration) ease;
}

header.site-header > nav > :is(a, .nav-menu__trigger):active {
  background: var(--interaction-soft);
  box-shadow: inset 0 -2px var(--accent);
}

/* Side navigation keeps the established straight edge and gains a left trace. */
.module-sidebar a {
  box-shadow: inset 3px 0 transparent;
  transition: background-color var(--interaction-duration) ease, box-shadow var(--interaction-duration) ease, color var(--interaction-duration) ease;
}

.module-sidebar a:active,
.module-sidebar a[aria-current="page"] {
  background: var(--interaction-soft);
  box-shadow: inset 3px 0 var(--accent);
}

/* Return and ordinary text links use color/underline feedback without moving. */
:where(.site-return, main a:not(.button):not(.card):not(.resource-card):not(.folder-filter):not(.folder-node):not(.brand-button):not(.text-link)) {
  text-decoration-color: transparent;
  text-decoration-line: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: .2em;
  transition: color var(--interaction-duration) ease, text-decoration-color var(--interaction-duration) ease, background-color var(--interaction-duration) ease, box-shadow var(--interaction-duration) ease;
}

:where(.site-return, main a:not(.button):not(.card):not(.resource-card):not(.folder-filter):not(.folder-node):not(.brand-button):not(.text-link)):active {
  color: var(--accent);
  text-decoration-color: currentColor;
}

/* Clickable cards reinforce the boundary only; no bounce or large translation. */
:is(a.card, .resource-card, .activity-card, .resource-upload-history__item) {
  transition:
    border-color var(--interaction-duration) ease,
    box-shadow var(--interaction-duration) ease,
    background-color var(--interaction-duration) ease,
    color var(--interaction-duration) ease,
    transform 100ms ease;
}

:is(a.card, .resource-card, .activity-card, .resource-upload-history__item):active {
  border-color: var(--accent);
  box-shadow: inset 0 0 0 1px rgba(216, 90, 42, .28);
  transform: scale(.995);
}

/* One consistent keyboard focus ring across native and custom controls. */
:where(a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"])):focus-visible {
  outline: 2px solid var(--interaction-focus) !important;
  outline-offset: 3px !important;
}

:is(button, .button):disabled,
:is(button, .button)[aria-disabled="true"],
:is(button, .button)[aria-busy="true"],
:is(button, .button)[data-loading="true"],
:is(button, .button).is-loading {
  cursor: not-allowed;
  opacity: .55;
  pointer-events: none;
  transform: none !important;
}

@media (hover: hover) and (pointer: fine) {
  :is(.button, button):not(:where(
    .secondary,
    .danger,
    .link,
    .nav-menu__trigger,
    .account-group__toggle,
    .resource-management-group__toggle,
    .member-toggle,
    .activity-carousel__arrow,
    .activity-carousel__dot,
    .category-tree__toggle,
    .folder-node,
    .resource-file-row,
    .resource-file-group__toggle,
    .resource-attachment-row,
    .resource-folder-item,
    .resource-recovery h2 button,
    .resource-workflow button,
    .resource-attachment-tabs button,
    .preview-attachment-gallery__tabs button,
    .resource-detail-action
  )):hover:not(:disabled):not([aria-disabled="true"]) {
    background-color: var(--interaction-accent-hover);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .62);
  }

  :is(.button.secondary, button.secondary):not(.resource-detail-action):hover:not(:disabled):not([aria-disabled="true"]) {
    background-color: var(--interaction-secondary-hover);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .58);
  }

  :is(.button.danger, button.danger):hover:not(:disabled):not([aria-disabled="true"]) {
    background-color: #8f261d;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .5);
  }

  header.site-header > nav > a:hover,
  header.site-header .nav-menu__trigger:hover {
    background: rgba(216, 90, 42, .06);
    box-shadow: inset 0 -2px var(--accent);
    color: var(--accent);
  }

  .module-sidebar a:hover {
    background: var(--interaction-soft);
    box-shadow: inset 3px 0 var(--accent);
    color: var(--accent);
  }

  :where(.site-return, main a:not(.button):not(.card):not(.resource-card):not(.folder-filter):not(.folder-node):not(.brand-button):not(.text-link)):hover {
    color: var(--accent);
    text-decoration-color: currentColor;
  }

  :is(a.card, .resource-card, .activity-card, .resource-upload-history__item):hover {
    border-color: var(--accent);
    box-shadow: inset 0 0 0 1px rgba(216, 90, 42, .18);
    transform: none;
  }
}

@media (hover: none) {
  /* Neutralize legacy hover translations on touch-first devices. */
  :is(a.card, .resource-card, .activity-card, .brand-button):hover {
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  :is(
    .button,
    button,
    .site-return,
    .module-sidebar a,
    header.site-header > nav > a,
    header.site-header .nav-menu__trigger,
    a.card,
    .resource-card,
    .activity-card,
    .resource-upload-history__item
  ) {
    transition-duration: 1ms !important;
  }

  :is(.button, button, a.card, .resource-card, .activity-card, .resource-upload-history__item):active {
    transform: none !important;
  }
}
