/* Girass action hierarchy. Existing routes, native controls and permission gates remain authoritative. */
:root { --action-radius: 10px; --action-height: 44px; --action-danger: #a52834; --action-success: #226b3d; }
:is(.admin-button,.btn,.lang-btn,.ui-button,:where(.pos-body) button) {
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem; min-height:var(--action-height);
  padding:.6rem 1rem; border:1px solid #b8c8bf; border-radius:var(--action-radius); background:#fff;
  color:#234b42; font:inherit; font-size:.875rem; font-weight:700; line-height:1.4; text-decoration:none;
  cursor:pointer; vertical-align:middle; transition:background .15s,box-shadow .15s;
}
:is(.admin-button.primary,.btn-primary,.ui-primary,[data-ui-action="save"],[data-ui-action="create"]) { background:var(--primary,#0f6b5f); border-color:var(--primary,#0f6b5f); color:#fff; }
:is(.category-danger,.btn-danger,.ui-danger,:is(.admin-button,.btn,.ui-button)[data-ui-action="delete"],:is(.admin-button,.btn,.ui-button)[data-ui-action="reject"]) { background:#fff2f3; border-color:#d9929b; color:#92222e; }
:is(.ui-success,.btn-success,:is(.admin-button,.btn,.ui-button)[data-ui-action="approve"],:is(.admin-button,.btn,.ui-button)[data-ui-action="confirm"]) { background:#226b3d; border-color:#226b3d; color:#fff; }
:is(.ui-warning,.btn-warning,:is(.admin-button,.btn,.ui-button)[data-ui-action="archive"]) { background:#fff3db; border-color:#c49a53; color:#714814; }
:is(.ui-outline,.btn-outline-primary) { background:transparent; color:var(--primary,#0f6b5f); border-color:currentColor; }
:is(:is(.admin-button,.btn,.ui-button)[data-ui-action="edit"],:is(.admin-button,.btn,.ui-button)[data-ui-action="view"],:is(.admin-button,.btn,.ui-button)[data-ui-action="back"],:is(.admin-button,.btn,.ui-button)[data-ui-action="cancel"],.btn-secondary) { background:#f0f5f2; color:#234b42; border-color:#b8c8bf; }
:is(.admin-button,.btn,.lang-btn,.ui-button,:where(.pos-body) button):hover:not(:disabled):not([aria-disabled="true"]) { box-shadow:0 2px 0 #153c3526; filter:brightness(.96); }
:is(a,button,summary,input,select,textarea):focus-visible { outline:3px solid #9c631e; outline-offset:3px; }
:is(.admin-button,.btn,.ui-button,:where(.pos-body) button):is(:disabled,[aria-disabled="true"]) { opacity:.55; cursor:not-allowed; box-shadow:none; }
.ui-sm,.btn-sm { min-height:36px; padding:.4rem .7rem; font-size:.8rem; }
/* Action colours stay consistent across admin pages, even when buttons share a row. */
.admin-body :is(.admin-button,.btn)[data-ui-action="edit"] { background:#fff4dc; color:#854b0d; border-color:#e3be72; }
.admin-body :is(.admin-button,.btn)[data-ui-action="view"] { background:#eaf2ff; color:#2457a5; border-color:#afc8ed; }
.admin-body :is(.admin-button,.btn):is([data-ui-action="back"],[data-ui-action="cancel"]) { background:#eef1f5; color:#4b5669; border-color:#c5ced9; }
.admin-body .admin-button[data-ui-action="refresh"] { background:#146c86; color:#fff; border-color:#146c86; }
.admin-body .admin-button[data-ui-action="security"] { background:#f2ecff; color:#684299; border-color:#cdb7e8; }
.admin-body .admin-button[data-ui-action="language"] { background:#eaf2ff; color:#2457a5; border-color:#afc8ed; }
.admin-body .admin-button[data-ui-action="logout"] { background:#fff0f1; color:#a33345; border-color:#e6adb6; }
.admin-body .admin-button[data-ui-action="login"] { background:#e8f5ed; color:#246040; border-color:#acd3ba; }
.ui-lg,.btn-lg { min-height:52px; padding:.85rem 1.4rem; font-size:1rem; }
.ui-icon { width:44px; padding:.6rem; aspect-ratio:1; }
:is(.admin-button,.btn,.ui-button) svg { width:18px; height:18px; flex:none; }
[aria-busy="true"].admin-button::after,[aria-busy="true"].btn::after { content:''; width:1em; height:1em; border:2px solid currentColor; border-inline-end-color:transparent; border-radius:50%; animation:girass-busy .8s linear infinite; }
.category-actions,.category-row-actions,.admin-actions { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem; }
.admin-table-wrap { border:1px solid var(--line); border-radius:14px; }
.admin-table-wrap th { background:#f2f6f3; font-size:.8rem; letter-spacing:.01em; }
.admin-table-wrap :is(th,td) { padding:.85rem 1rem; vertical-align:middle; }
.admin-table-wrap tbody tr:hover { background:#f7faf8; }
.admin-nav-group { border-bottom:1px solid #ffffff1f; padding-block:.5rem; }
.admin-nav-group > summary { display:flex; align-items:center; justify-content:space-between; min-height:44px; padding:.5rem .85rem; cursor:pointer; color:inherit; font-size:.8rem; font-weight:800; list-style:none; }
.admin-nav-group > summary::-webkit-details-marker { display:none; }
.admin-nav-group > summary::after { content:'+'; font-size:1.15rem; }
.admin-nav-group[open] > summary::after { content:'−'; }
.admin-nav-group .admin-link { margin-inline:.4rem; border-inline-start:3px solid transparent; border-radius:8px; }
.admin-nav-group .admin-link.active { border-inline-start-color:#e7be83; background:#ffffff1f; }
.ui-row-more { display:inline-block; }
.ui-row-more > summary { list-style:none; }
.ui-row-more[open] { display:grid; gap:.4rem; padding:.35rem; border:1px solid var(--line); border-radius:12px; }
.ui-row-more form { margin:0; }
.page-loading { position:fixed; inset:0; z-index:3000; display:grid; place-content:start center; padding-top:15vh; background:#f4efe680; pointer-events:none; }
.page-loading[hidden] { display:none; }
.page-loading > span { padding:1rem 1.5rem; border:1px solid var(--line); border-radius:14px; background:white; box-shadow:var(--shadow-sm); font-weight:700; }
@keyframes girass-busy { to { transform:rotate(360deg); } }
@media (pointer:coarse) { .ui-sm,.btn-sm { min-height:44px; } }
@media (max-width:600px) { .admin-topbar { flex-wrap:wrap; gap:.75rem; } .admin-main { padding:1rem; } .category-actions > .primary { flex:1; } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { scroll-behavior:auto!important; } [aria-busy="true"]::after { animation:none!important; } :is(.admin-button,.btn,.ui-button) { transition:none; } }

[hidden] { display:none!important; }
