/* Single button system. Named classes are preferred for new markup.
   The legacy branch covers padded rectangular action links/buttons, including
   dynamically generated controls. Navigation, filters, tabs and pickers retain
   their own geometry. A summary must opt in explicitly (e.g. settlement menu). */
:where(body:is(.app-shell,.app-auth) :is(
  .btn-primary,.btn-soft,.btn-neutral,.btn-back,.btn-validate,
  .btn-success,.btn-warning,.btn-danger,
  :where(a,button):where(.rounded,.rounded-md,.rounded-lg,.rounded-xl):where([class*="px-"],[class*="py-"]):where([class*="bg-"],.border):where(:not(.sidebar-shell *,.app-topbar *,.filter-btn,[role=tab],
      [class*="-tab"],[class*="tab-"],[aria-pressed],[data-active]))
)) { display: inline-flex; }
body:is(.app-shell,.app-auth) :is(
  .btn-primary,.btn-soft,.btn-neutral,.btn-back,.btn-validate,
  .btn-success,.btn-warning,.btn-danger,
  :where(a,button):where(.rounded,.rounded-md,.rounded-lg,.rounded-xl):where([class*="px-"],[class*="py-"]):where([class*="bg-"],.border):where(:not(.sidebar-shell *,.app-topbar *,.filter-btn,[role=tab],
      [class*="-tab"],[class*="tab-"],[aria-pressed],[data-active]))
) {
  align-items: center; justify-content: center; gap: 6px;
  box-sizing: border-box; min-height: 34px; padding: 7px 12px;
  border: 1px solid var(--button-border,#dce3ed); border-radius: 10px;
  background: var(--button-bg,#fff);
  color: var(--button-ink,#435570);
  font-family: inherit; font-size: 12px; font-weight: 600; line-height: 18px;
  vertical-align: middle; white-space: nowrap; text-decoration: none;
  box-shadow: 0 1px 2px #21324b08; cursor: pointer;
  transition: background-color .15s, border-color .15s, color .15s;
}

body:is(.app-shell,.app-auth) :is(.btn-primary,.btn-soft,.btn-neutral,.btn-back,.btn-validate,.btn-success,.btn-warning,.btn-danger,
  :where(a,button):where(.rounded,.rounded-md,.rounded-lg,.rounded-xl):where([class*="px-"],[class*="py-"]):where([class*="bg-"],.border):where(:not(.sidebar-shell *,.app-topbar *,.filter-btn,[role=tab],[class*="-tab"],[class*="tab-"],[aria-pressed],[data-active]))):where(:hover):not(:disabled):not([aria-disabled=true]) {
  background: var(--button-hover,var(--ui-primary-hover,#dce9ff));
  color: var(--button-ink,#435570);
  border-color: var(--button-border,#dce3ed); text-decoration: none;
}

/* Neutral legacy actions; only controls consume these variables. */
body :is(a,button,summary):is(.bg-white,.bg-gray-50,.bg-gray-100,.bg-gray-200,.bg-gray-700,.bg-gray-800,.bg-gray-900) {
  --button-bg: #fff; --button-ink: #586982; --button-border: #dce3ed; --button-hover: #f5f8fc;
}
body :is(a,button,summary):is(.bg-red-50,.bg-red-100,.bg-red-500,.bg-red-600) {
  --button-bg: #fff1ed; --button-ink: #b65e46; --button-border: #f5ddd4; --button-hover: #fbe4dc;
}
body :is(a,button,summary):is(.bg-orange-500,.bg-amber-500,.bg-amber-50,.bg-yellow-100) {
  --button-bg: #fff9e9; --button-ink: #977019; --button-border: #f5e9c4; --button-hover: #f5e9c4;
}
body :is(a,button,summary):is(.bg-green-50,.bg-green-100,.bg-green-600,.bg-emerald-50,.bg-emerald-600) {
  --button-bg: #edf8f2; --button-ink: #3d8060; --button-border: #d9eee2; --button-hover: #d9eee2;
}
body :is(a,button,summary):is(.bg-blue-50,.bg-blue-600,.bg-violet-600,.bg-indigo-50,.bg-indigo-600,.bg-purple-600,.bg-teal-600) {
  --button-bg: #fff; --button-ink: #435570; --button-border: #dce3ed; --button-hover: #f5f8fc;
}
body:is(.app-shell,.app-auth) .btn-primary { --button-bg: #2563eb; --button-ink: #fff; --button-border: transparent; --button-hover: #1d4ed8; }
body:is(.app-shell,.app-auth) :is(.btn-soft,.btn-validate) { --button-bg: #fff; --button-ink: #435570; --button-border: #dce3ed; --button-hover: #f5f8fc; }
body:is(.app-shell,.app-auth) :is(.btn-neutral,.btn-back) { --button-bg: #fff; --button-ink: #586982; --button-border: #dce3ed; --button-hover: #f5f8fc; }
body:is(.app-shell,.app-auth) .btn-success { --button-bg: #edf8f2; --button-ink: #3d8060; --button-border: #d9eee2; --button-hover: #d9eee2; }
body:is(.app-shell,.app-auth) .btn-warning { --button-bg: #fff9e9; --button-ink: #977019; --button-border: #f5e9c4; --button-hover: #f5e9c4; }
body:is(.app-shell,.app-auth) .btn-danger { --button-bg: #fff1ed; --button-ink: #b65e46; --button-border: #f5ddd4; --button-hover: #fbe4dc; }
body:is(.app-shell,.app-auth) .btn-sm { min-height: 30px; padding: 5px 10px; align-self: center; }
body:is(.app-shell,.app-auth) .btn-block { width: 100%; }
.btn-back::before { content: '\2190'; font-weight: 700; }
summary:is(.btn-soft,.btn-primary) { list-style: none; }
summary:is(.btn-soft,.btn-primary)::-webkit-details-marker { display: none; }
body:is(.app-shell,.app-auth) :where(a,button,summary):focus-visible { outline: 2px solid #2563eb; outline-offset: 3px; }
body:is(.app-shell,.app-auth) :is(button:disabled,[aria-disabled=true]) { opacity: .45; cursor: not-allowed; box-shadow: none; }
.del-link { color: #b65e46; font-weight: 600; cursor: pointer; }
.del-link:hover { color: #9f4530; }
@media (prefers-reduced-motion: reduce) {
  body:is(.app-shell,.app-auth) :is(button,a,summary) { transition: none; }
}
