/* Shared focus treatment, loaded after page styles so brand accents do not
   turn ordinary keyboard/text focus into an error-like red outline. */
:root {
  --focus-border: #929ca9;
  --focus-indicator: #a8b3c2;
}
:root[data-admin-theme="light"], :root:has(body.quick-start) {
  --focus-border: #737e8b;
  --focus-indicator: #687584;
}

/* These overrides deliberately beat older component-specific accent rings. */
:is(a, button, input, select, textarea, summary, [tabindex], [role="button"]):focus-visible {
  outline: 2px solid var(--focus-indicator) !important;
  outline-offset: 3px;
}
/* A single, continuous 2px edge: existing 1px border plus 1px inward.
   No outer halo, second frame or layout shift. Enhanced selects share it. */
:is(input:not([type="checkbox"], [type="radio"], [type="range"], [type="color"], [type="file"], [type="hidden"], [type="submit"], [type="button"], [type="image"], [type="reset"]), select, textarea, .lp-select-toggle):focus {
  border-color: var(--focus-border) !important;
  outline: none !important;
  outline-offset: 0;
  box-shadow: inset 0 0 0 1px var(--focus-border) !important;
}
:is(input, select, textarea, .lp-select-toggle)[aria-invalid="true"] { --focus-border: #ee796f; }
:is(.appearance-option, .document-review-check, .payment > label, .permission-preset):has(input:focus-visible),
:is(.processing-option, .file-label, .qs-payer-choice, .qs-confirm-check):focus-within {
  outline: 2px solid var(--focus-indicator) !important;
  outline-offset: 3px;
}
.appearance-option input:focus-visible { outline: none !important; }
.inbox-alias-input:focus-within {
  outline: none !important;
  border-color: var(--focus-border) !important;
  box-shadow: inset 0 0 0 1px var(--focus-border) !important;
}
.inbox-alias-input input:focus { box-shadow: none !important; }

@media (forced-colors: active) {
  :root :is(a, button, input, select, textarea, summary, [tabindex], [role="button"]):focus-visible {
    outline: 2px solid Highlight !important;
    outline-offset: 3px;
    box-shadow: none !important;
  }
}
