/* Shared final theme layer for public, authentication, customer and admin pages. */
:root, html[data-theme="light"] {
  --text-primary: #263449;
  --text-secondary: #3b5740;
  --text-muted: #546e59;
  --text-disabled: #526c57;
  --border: #768f79;
  --border-strong: #547258;
  --border-focus: #1a860c;
  --contrast-control-bg: #ffffff;
  --contrast-control-text: #263449;
  --contrast-disabled-bg: #edf3ec;
  --contrast-disabled-text: #435f49;
  --contrast-on-primary: #ffffff;
  --contrast-on-danger: #ffffff;
  --theme-on-primary: var(--contrast-on-primary);
}
html[data-theme="dark"] {
  --text-primary: #f4f7f2;
  --text-secondary: #e2ecdf;
  --text-muted: #c4d7be;
  --text-disabled: #b1c9ab;
  --border: #8da989;
  --border-strong: #a8c6a1;
  --border-focus: #a5e39b;
  --contrast-control-bg: #151922;
  --contrast-control-text: #f4f7f2;
  --contrast-disabled-bg: #202632;
  --contrast-disabled-text: #e2ecdf;
  --contrast-on-primary: #0b0d0f;
  --contrast-on-danger: #0b0d0f;
  --theme-on-primary: var(--contrast-on-primary);
}
body :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="submit"]):not([type="button"]), select, textarea) {
  color: var(--contrast-control-text);
  background-color: var(--contrast-control-bg);
  border-color: var(--border);
  caret-color: var(--contrast-control-text);
  -webkit-text-fill-color: var(--contrast-control-text);
}
body :is(input, textarea)::placeholder {
  color: var(--text-muted);
  opacity: 1;
  -webkit-text-fill-color: var(--text-muted);
}
body :is(input, select, textarea):disabled,
body :is(button, .ui-button, .backoffice-button, .catalogue-button):disabled {
  opacity: 1;
  color: var(--contrast-disabled-text);
  -webkit-text-fill-color: var(--contrast-disabled-text);
  background: var(--contrast-disabled-bg);
  border-color: var(--border);
}
body :is(input[type="checkbox"], input[type="radio"]) {
  accent-color: var(--primary);
  outline-color: var(--border);
}
body :is(a, button, input, select, textarea):focus-visible {
  outline: 3px solid var(--border-focus);
  outline-offset: 3px;
}
body :is(.ui-button--primary, .backoffice-button-primary, .backoffice-button--primary, .catalogue-button.is-primary, .pf-primary) {
  background: var(--primary);
  color: var(--contrast-on-primary);
}
body :is(.ui-button--danger, .backoffice-button-danger, .backoffice-button--danger) {
  background: var(--danger);
  color: var(--contrast-on-danger);
}
body .bo-autosave-status {
  color: var(--text-primary);
  background: var(--surface-muted);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 16px;
  line-height: 1.5;
}
body .ui-button:disabled,
body .ui-button[aria-disabled="true"],
body .ui-button.is-disabled,
body .auth-primary-button:disabled,
body .auth-secondary-button:disabled {
  --ui-button-bg: var(--contrast-disabled-bg);
  --ui-button-text: var(--contrast-disabled-text);
  --ui-button-border: var(--border);
  --ui-button-hover: var(--contrast-disabled-bg);
  opacity: 1;
  background: var(--contrast-disabled-bg);
  color: var(--contrast-disabled-text);
  border-color: var(--border);
}
body :is(.errorlist, .field-error, .form-error) {
  color: var(--danger-text);
}
@media (forced-colors: active) {
  body :is(input, select, textarea, button) { border: 1px solid ButtonText; }
}

/* Customer surfaces share the Back Office's quiet structural borders.
   Interactive focus keeps the separate high-contrast --border-focus token. */
body.dashboard-body {
  --border: #dce5d9;
}
html[data-theme="dark"] body.dashboard-body {
  --border: #303740;
  --border-strong: #47515c;
}
