/* Shared interaction feedback, loaded after every module's styles. */
:root {
  --interaction-green: #23634d;
  --interaction-tint: #edf5f0;
  --interaction-hover-ring: #719d88;
}

:is(a[href], button, summary, select, input[type="submit"], input[type="button"],
    input[type="reset"], input[type="checkbox"], input[type="radio"],
    input[type="file"], [role="button"], [data-open-url]):not(:disabled):not([aria-disabled="true"]):not(.disabled) {
  cursor: pointer;
  -webkit-tap-highlight-color: #23634d26;
  transition: background-color .15s ease, border-color .15s ease,
              color .15s ease, outline-color .15s ease, filter .15s ease;
}

/* Hover feedback is reserved for devices with a real hover pointer. */
/* Desktop actions are recognizable before hovering; keep semantic button colors. */
.surface-desktop :is(main, .management-topbar) :is(a[href], button, summary,
    input[type="submit"], input[type="button"], input[type="reset"], [role="button"]):not(:disabled):not([aria-disabled="true"]):not(.disabled):not(:is(.admin-primary, .account-primary, .btn-primary, .btn-success, .btn-danger, .btn-warning, .btn-dark, .btn-outline-danger, .cloud-menu-danger, .active, .selected, [aria-current])) {
  color: #1f6593;
}

@media (min-width: 701px) and (hover: hover) and (pointer: fine) {
  .surface-desktop :is(main, .management-topbar) :is(a[href], button, summary,
      input[type="submit"], input[type="button"], input[type="reset"], [role="button"]):not(:disabled):not([aria-disabled="true"]):not(.disabled):not(:is(.admin-primary, .account-primary, .btn-primary, .btn-success, .btn-danger, .btn-warning, .btn-dark, .btn-outline-danger, .cloud-menu-danger, .active, .selected, [aria-current])):hover {
    color: #124a71;
    background-color: #eaf3fa;
  }
  :is(a[href], button, summary, select, input[type="submit"], input[type="button"],
      input[type="reset"], [role="button"], [data-open-url]):not(:disabled):not([aria-disabled="true"]):not(.disabled):hover {
    outline: 1px solid var(--interaction-hover-ring);
    outline-offset: 1px;
  }

  /* Filtering a row changes the containing block of its fixed action menu. */
  :is(a[href], button, summary, select, input[type="submit"], input[type="button"],
      input[type="reset"], [role="button"], [data-open-url]):not(:disabled):not([aria-disabled="true"]):not(.disabled):not(.cloud-row):hover {
    filter: brightness(.94);
  }

  a[href]:not([aria-disabled="true"]):not(.disabled):hover {
    text-decoration: underline;
    text-underline-offset: 3px;
  }

  :is(summary, [data-open-url]):hover {
    background-color: var(--interaction-tint);
  }
}

/* Touch actions use color, not borders; keep dimensions and keyboard focus. */
@media (max-width: 700px), (pointer: coarse) {
  :is(a[href], button, summary, select, input[type="submit"], input[type="button"],
      input[type="reset"], [role="button"], [data-open-url]):not(:disabled):not([aria-disabled="true"]):not(.disabled) {
    outline: none;
    border-color: transparent;
    box-shadow: none;
  }

  a[href]:not(.btn):not(.nav-item):not(.bottom-item):not(.brand):not(.module-card):not(.mobile-card-main):not(.active):not(.selected):not([aria-current="page"]):not([aria-disabled="true"]):not(.disabled) {
    color: var(--interaction-green);
    background-color: var(--interaction-tint);
    border-radius: 4px;
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
  }

  :is(button:not(.btn):not(.official-card), summary, select, [data-open-url],
      .btn-outline-secondary, .btn-outline-primary, .btn-outline-success):not(:disabled):not([aria-disabled="true"]):not(.disabled) {
    color: var(--interaction-green);
    background-color: var(--interaction-tint);
  }

  .btn-outline-danger:not(:disabled):not([aria-disabled="true"]):not(.disabled) {
    color: #a23e35;
    background-color: #fbecea;
  }

  :is(.bottom-item.active, .module-tab.active, .surface-switch .selected,
      button.market-card[aria-pressed="true"], button.official-village[aria-pressed="true"],
      [aria-current="page"]):not(:disabled):not([aria-disabled="true"]):not(.disabled) {
    color: #174f3b;
    background-color: #d9ebe1;
  }
}

:is(a[href], button, summary, select, input[type="submit"], input[type="button"],
    input[type="reset"], [role="button"], [data-open-url]):not(:disabled):not([aria-disabled="true"]):not(.disabled):not(.cloud-row):active {
  filter: brightness(.87);
}

:is(a[href], button, summary, select, input, textarea, [role="button"],
    [data-open-url]):not(:disabled):not([aria-disabled="true"]):focus-visible {
  outline: 3px solid #d8a640;
  outline-offset: 2px;
}

:is(button, input, select, [role="button"], a):is(:disabled, [aria-disabled="true"], .disabled) {
  cursor: not-allowed;
}

@media (prefers-reduced-motion: reduce) {
  :is(a[href], button, summary, select, input, [role="button"], [data-open-url]) {
    transition: none;
  }
}

/* Management mobile lists highlight explicit actions, never their whole rows. */
.surface-mobile main :is(.cloud-row, [data-open-url]):not(:disabled):not([aria-disabled="true"]):not(.disabled),
.surface-mobile main .mobile-card-main,
.surface-mobile main .mobile-card-main:hover {
  color: inherit;
  background-color: transparent;
}

.surface-mobile main a[href]:not(:where(.btn, .mobile-card-main, .active, .selected, [aria-current], .cloud-menu-danger, .disabled, [aria-disabled="true"])),
.surface-mobile main .mobile-card-main .mobile-card-name {
  color: var(--interaction-green);
  background-color: var(--interaction-tint);
  border-radius: 4px;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
