/* City construction for the canonical [AppButton]. Root-scoped under
   :root[data-style="city"] so Classic stays untouched. The `.app-button*`
   hooks come from [AppButton.classesFor]; City re-tints and outlines each
   variant without changing any caller markup. */
:root[data-style="city"] .app-button {
  border: var(--fp-outline-width) solid var(--fp-ink);
  border-radius: var(--fp-card-radius);
  box-shadow: 3px 4px 0 color-mix(in srgb, var(--fp-ink) 22%, transparent);
  transition: transform 160ms ease, box-shadow 160ms ease, background-color 160ms ease;
  translate: none;
}

:root[data-style="city"] .app-button--primary {
  background: var(--color-secondary);
  color: var(--color-on-secondary);
}

:root[data-style="city"] .app-button--navy {
  background: var(--color-primary);
  color: var(--color-on-primary);
}

:root[data-style="city"] .app-button--secondary {
  background: var(--color-surface-container-highest);
  color: var(--color-on-surface);
}

:root[data-style="city"] .app-button--outline {
  background: var(--color-surface);
  color: var(--color-on-surface);
}

:root[data-style="city"] .app-button:not(.app-button--disabled):hover,
:root[data-style="city"] .app-button:not(.app-button--disabled):focus-visible {
  box-shadow: var(--fp-hard-shadow-hover);
  transform: translate(-1px, -2px);
}

:root[data-style="city"] .app-button:not(.app-button--disabled):active {
  box-shadow: 1px 1px 0 color-mix(in srgb, var(--fp-ink) 22%, transparent);
  transform: translate(2px, 2px);
}

:root[data-style="city"] .app-button--disabled {
  box-shadow: none;
  transform: none;
  translate: none;
}

@media (prefers-reduced-motion: reduce) {
  :root[data-style="city"] .app-button,
  :root[data-style="city"] .app-button:not(.app-button--disabled):hover,
  :root[data-style="city"] .app-button:not(.app-button--disabled):focus-visible,
  :root[data-style="city"] .app-button:not(.app-button--disabled):active {
    transition: none;
    transform: none;
    translate: none;
  }
}
