/* Shared approved button contract, 2026-10-10. Native adapters retain business handlers. */
body.admin-standard :is(#app,#admin-app,.drawer,.login-view,#password-change-view,.confirm-modal,.wb-dialog,.wm-dialog) :is(.primary-button,.primary-action,.secondary-button,.positive-button){display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;height:auto;padding:8px 12px;border:1px solid var(--adm-border);border-radius:6px;background:white;color:var(--adm-button-neutral-ink);font-family:inherit;line-height:20px;font-size:14px;font-weight:400;text-align:center;box-shadow:none;cursor:pointer;white-space:normal;transition:background-color .16s,color .16s,border-color .16s}
body.admin-standard :is(#app,#admin-app,.drawer,.login-view,#password-change-view,.confirm-modal,.wb-dialog,.wm-dialog) :is(.primary-button,.primary-action){background:var(--adm-brand);border-color:var(--adm-brand);color:white;font-weight:600}
body.admin-standard :is(#app,#admin-app,.drawer,.login-view,#password-change-view,.confirm-modal,.wb-dialog,.wm-dialog) :is(.primary-button,.primary-action):hover:not(:disabled){background:var(--adm-accent);border-color:var(--adm-accent)}
body.admin-standard :is(#app,#admin-app,.drawer,.login-view,#password-change-view,.confirm-modal,.wb-dialog,.wm-dialog) :is(.primary-button,.primary-action):active:not(:disabled){background:var(--adm-brand-active);border-color:var(--adm-brand-active)}
body.admin-standard :is(#app,#admin-app,.drawer,.confirm-modal,.wb-dialog,.wm-dialog) .secondary-button:hover:not(:disabled){background:var(--adm-button-neutral-hover-bg);border-color:var(--adm-button-neutral-hover-border);color:var(--adm-ink)}
body.admin-standard :is(#app,#admin-app,.drawer,.confirm-modal,.wb-dialog,.wm-dialog) .secondary-button:active:not(:disabled){background:var(--adm-button-neutral-active-bg);border-color:var(--adm-button-neutral-ink);color:var(--adm-ink)}
/* Secondary positive actions are explicit, including query areas with a primary result action. */
body.admin-standard :is(#app,#admin-app,.drawer,.confirm-modal,.wb-dialog,.wm-dialog) .positive-button,
body.admin-standard :is(#app,#admin-app) :is(.filter-bar,.registration-query,.reservation-admin-filters) :is(.primary-button,button[type=submit]),
body.admin-standard #admin-app #lottery-lifecycle-actions .primary-button{background:white;border-color:var(--adm-brand);color:var(--adm-brand);font-weight:400}
body.admin-standard :is(#app,#admin-app,.drawer,.confirm-modal,.wb-dialog,.wm-dialog) .positive-button:hover:not(:disabled),
body.admin-standard :is(#app,#admin-app) :is(.filter-bar,.registration-query,.reservation-admin-filters) :is(.primary-button,button[type=submit]):hover:not(:disabled),
body.admin-standard #admin-app #lottery-lifecycle-actions .primary-button:hover:not(:disabled){background:var(--adm-button-positive-hover-bg);border-color:var(--adm-accent);color:var(--adm-accent)}
body.admin-standard :is(#app,#admin-app,.drawer,.confirm-modal,.wb-dialog,.wm-dialog) .positive-button:active:not(:disabled),
body.admin-standard :is(#app,#admin-app) :is(.filter-bar,.registration-query,.reservation-admin-filters) :is(.primary-button,button[type=submit]):active:not(:disabled),
body.admin-standard #admin-app #lottery-lifecycle-actions .primary-button:active:not(:disabled){background:var(--adm-button-positive-active-bg);border-color:var(--adm-brand-active);color:var(--adm-brand-active)}
body.admin-standard :is(#app,#admin-app,.drawer,.confirm-modal,.wb-dialog,.wm-dialog) :is(.table-action,.link-button){color:var(--adm-link)}
body.admin-standard :is(#app,#admin-app,.drawer,.confirm-modal,.wb-dialog,.wm-dialog) :is(.table-action,.link-button):hover:not(:disabled){text-decoration:underline;background:var(--adm-button-link-hover-bg)}
body.admin-standard :is(#app,#admin-app,.drawer,.confirm-modal,.wb-dialog,.wm-dialog) :is(.table-action,.link-button):active:not(:disabled){background:var(--adm-button-link-active-bg)}
body.admin-standard :is(#app,#admin-app,.drawer,.confirm-modal,.wb-dialog,.wm-dialog) :is(.danger-action,.danger){color:var(--adm-brand)}
body.admin-standard :is(#app,#admin-app,.drawer,.login-view,#password-change-view,.confirm-modal,.wb-dialog,.wm-dialog) button:focus-visible{outline:2px solid var(--adm-link);outline-offset:3px}
body.admin-standard :is(#app,#admin-app,.drawer,.login-view,#password-change-view,.confirm-modal,.wb-dialog,.wm-dialog) button[aria-busy=true]{cursor:wait}
body.admin-standard :is(#app,#admin-app,.drawer,.login-view,#password-change-view,.confirm-modal,.wb-dialog,.wm-dialog) button[aria-busy=true]::before{content:'';display:inline-block;flex:none;width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:adm-button-spin .75s linear infinite}
body.admin-standard :is(#app,#admin-app,.drawer,.login-view,#password-change-view,.confirm-modal,.wb-dialog,.wm-dialog) button:disabled:not([aria-busy=true]){background:var(--adm-button-disabled-bg);color:var(--adm-button-disabled-ink);border-color:var(--adm-button-disabled-border);opacity:1;font-weight:400;cursor:not-allowed;text-decoration:none;box-shadow:none}
body.admin-standard :is(#app,#admin-app,.drawer,.login-view,#password-change-view,.confirm-modal,.wb-dialog,.wm-dialog) button[aria-busy=true]:disabled{opacity:1}
@keyframes adm-button-spin{to{transform:rotate(360deg)}}
@media(pointer:coarse){body.admin-standard :is(#app,#admin-app,.drawer,.login-view,.confirm-modal,.wb-dialog,.wm-dialog) :is(.primary-button,.primary-action,.secondary-button){min-height:44px}}
@media(prefers-reduced-motion:reduce){body.admin-standard button[aria-busy=true]::before{animation:none}}
