/* Shared action controls. Worker cards and screenshot thumbnails keep their content layout. */
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot) {
  box-sizing: border-box;
  min-height: 30px;
  padding: 4px 10px;
  border: 1px solid var(--line);
  border-radius: 999px !important;
  background: var(--panel);
  color: var(--text);
  font: 500 12px/1.35 var(--font);
  text-decoration: none;
  cursor: pointer;
  vertical-align: middle;
  transition: background-color .12s, border-color .12s;
}
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot):hover:not(:disabled) {
  background: var(--hover);
  border-color: var(--line-strong);
}
body :is(button, .button-link, .nav-link, .task-link):focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot):disabled {
  opacity: 1;
  color: var(--faint);
  background: var(--card);
  border-color: var(--line-soft);
  cursor: not-allowed;
}
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot):is(.primary, .primary-btn, .active):not(:disabled) {
  color: var(--on-accent);
  background: var(--accent);
  border-color: var(--accent);
}
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot):is(.primary, .primary-btn, .active):hover:not(:disabled) {
  background: var(--accent-hover);
  border-color: var(--accent-hover);
}
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot):is(.danger-btn, .request-changes, .stop-task, #cancelTask):not(:disabled) {
  color: var(--red);
  border-color: var(--red-line);
}
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot):is(.danger-btn, .request-changes, .stop-task, #cancelTask):hover:not(:disabled) {
  background: var(--red-soft);
  border-color: var(--red);
}
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot).approve:not(:disabled) { color: var(--green); border-color: var(--green-line); }
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot).approve:hover:not(:disabled) { background: var(--green-soft); border-color: var(--green); }
body .approved :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot).approve:not(:disabled) { color: var(--on-color); background: var(--green); border-color: var(--green); }
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot).layer.selected:not(:disabled) { background: var(--green-soft); border-color: var(--green); }
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot).locale-quick.selected:not(:disabled) { color: var(--green); background: var(--green-soft); border-color: var(--green-line); }
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot).locale-quick.selected:hover:not(:disabled) { background: var(--green-pill); border-color: var(--green); }
body button.layer { text-align: left; }
body select:has(option:checked:not([value=""])):not(:disabled):not([aria-invalid="true"]):not(.required-missing),
body summary.selected { border-color: var(--green); }
/* One selection style for menus, segments, layers and chat choices, including hover. */
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot):is(.selected, .active, [aria-pressed="true"], [aria-selected="true"], [aria-current="page"]):not(:disabled),
body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot):is(.selected, .active, [aria-pressed="true"], [aria-selected="true"], [aria-current="page"]):hover:not(:disabled) {
  color: var(--text);
  background: var(--green-soft);
  border-color: var(--green);
}
@media(prefers-reduced-motion:reduce) { body button { transition: none; } }

/* One compact action shape; list rows, previews and canvas markers keep their geometry. */
@media (min-width: 821px) and (pointer: fine) {
  body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot):not([data-contact]):not(.layer):not(.object-layer):not(.object-note):not(.object-pin):not(.object-tree-toggle):not(#send):not(#cancelTurn) {
    min-height: 30px !important;
    height: auto !important;
    padding-block: 4px !important;
    font-weight: 500 !important;
  }
}
/* A 36 px painted surface inside a 44 px touch target. No overlapping hit boxes. */
@media (max-width: 820px), (pointer: coarse) {
  body :is(button, .button-link, .nav-link, .task-link):not(.worker-select):not(.control-shot):not([data-contact]):not(.layer):not(.object-layer):not(.object-note):not(.object-pin):not(.object-tree-toggle) {
    min-height: 44px !important;
    min-width: 44px;
    border: 4px solid transparent !important;
    background-clip: padding-box !important;
    box-shadow: inset 0 0 0 1px var(--button-outline, var(--line));
    padding-block: 4px;
    font-weight: 500;
    touch-action: manipulation;
  }
  body :is(button, .button-link, .nav-link, .task-link):disabled { --button-outline: var(--line-soft); }
  body :is(button, .button-link, .nav-link, .task-link):is(.primary, .primary-btn):not(:disabled) { --button-outline: transparent; }
  body :is(button, .button-link, .nav-link, .task-link):is(.danger-btn, .request-changes, .stop-task, #cancelTask):not(:disabled) { --button-outline: var(--red-line); }
  body :is(button, .button-link, .nav-link, .task-link):is(.approve, .selected, .active, [aria-pressed="true"], [aria-selected="true"]):not(:disabled) { --button-outline: var(--green); }
  body :is(.object-icon, .object-fit, .object-quiet) { --button-outline: transparent; }
}
