/* Global physical-control contract, loaded after each page stylesheet. */
html body :is(button, .btn):where(:not(.royal-control, .imperial-text-control)):not(.section-disclosure__control):not(:disabled):not(.disabled):not([aria-disabled="true"]):hover {
  box-shadow: var(--imperial-control-shadow-hover);
  transform: translateY(-1px);
}

html body .imperial-segmented-button:where(:not(.royal-control)):not([aria-pressed="true"]):not(.is-active):not(:disabled):not([aria-disabled="true"]):is(:hover, :focus-visible),
html body .imperial-utility-button:where(:not(.royal-control)):not(:disabled):not(.disabled):not([aria-disabled="true"]):is(:hover, :focus-visible) {
  border-color: var(--imperial-auxiliary-control-border);
  background: var(--imperial-auxiliary-control-background-hover);
  color: var(--imperial-text);
  text-shadow: none;
}

html body .imperial-segmented-button:where(:not(.royal-control)):is([aria-pressed="true"], .is-active):not(:disabled):not([aria-disabled="true"]):is(:hover, :focus-visible) {
  border-color: var(--imperial-auxiliary-control-border);
  background: var(--imperial-auxiliary-control-active-hover);
  color: #fff8e9;
  text-shadow: 0 1px 0 rgba(64, 44, 32, .3);
}

html body :is(button, .btn):where(:not(.royal-control, .imperial-text-control)):not(.section-disclosure__control):not(:disabled):not(.disabled):not([aria-disabled="true"]):active {
  background: var(--imperial-control-press-background);
  box-shadow: var(--imperial-control-shadow-active);
  transform: translateY(1px);
}

html body :is(.imperial-segmented-button, .imperial-utility-button):where(:not(.royal-control)):not(:disabled):not(.disabled):not([aria-disabled="true"]):active {
  border-color: var(--imperial-auxiliary-control-border);
  background: var(--imperial-control-press-background);
  color: var(--imperial-text);
  text-shadow: none;
}

html body :is(button, .btn, .scan-change-log__list):focus-visible {
  outline: 3px solid rgba(185, 130, 50, .48);
  outline-offset: 2px;
}

html body :is(button, .btn):where(:not(.royal-control)):is(:disabled, .disabled, [aria-disabled="true"]) {
  box-shadow: none;
  cursor: not-allowed;
  opacity: .55;
  transform: none;
}

/* One state rule for all real controls, including the shared segmented ones. */
html body .royal-control:not(:disabled):not(.disabled):not([aria-disabled="true"]):is(:hover, :focus-visible) {
  background: var(--royal-control-hover);
  border-color: #a98b55;
  color: var(--royal-control-ink);
  box-shadow: var(--imperial-control-shadow-hover);
  text-shadow: none;
  transform: translateY(var(--royal-hover-y)) rotate(var(--royal-rotation, 0deg));
}
html body .royal-control:is(.is-active, [aria-pressed="true"], [aria-current="page"]):not(:disabled):not(.disabled):not([aria-disabled="true"]):is(:hover, :focus-visible) {
  background: var(--royal-control-selected);
  color: var(--royal-control-selected-ink);
  box-shadow: var(--royal-control-inset), inset 0 -2px 0 #c8a969;
}
html body .royal-control:not(:disabled):not(.disabled):not([aria-disabled="true"]):active {
  background: var(--royal-control-pressed);
  color: var(--royal-control-ink);
  border-color: #a98b55;
  box-shadow: var(--royal-control-inset);
  text-shadow: none;
  transform: translateY(1px) rotate(var(--royal-rotation, 0deg));
}
html body .royal-control:focus-visible {
  outline: 2px solid var(--royal-control-focus);
  outline-offset: 3px;
}
html body .royal-control:is(:disabled, .disabled, [aria-disabled="true"]) {
  background: var(--royal-control-face);
  border-color: var(--royal-control-line);
  color: var(--royal-control-ink);
  box-shadow: none;
  opacity: .48;
  cursor: not-allowed;
  transform: none;
}

.settings-toggle .form-check-input:focus-visible,
.imperial-segmented-control .btn-check:focus-visible + .imperial-segmented-button,
.settings-history > summary:focus-visible {
  outline: 2px solid var(--royal-control-focus);
  outline-offset: 3px;
  box-shadow: none;
}

@media (prefers-reduced-motion: reduce) {
  body .royal-control { transition: none; }
}
