/* Shared contrast and emphasis. Theme-specific portal colours stay in client-design.css. */
:root {
  --green:#15563f;
  --ink:#193b2e;
  --muted:#506457;
  --line:#c7d3cb;
  --bg:#f3f6f3;
  --mint:#e1f1e7;
  --ui-control-border:#788d80;
  --ui-focus:#1769aa;
  --ui-success:#17613c;
  --ui-success-bg:#dcf3e4;
  --ui-warning:#805000;
  --ui-warning-bg:#fff0c7;
  --ui-danger:#9c3026;
  --ui-danger-bg:#ffe5e0;
  --ui-info:#175d99;
  --ui-info-bg:#e1efff;
}
@media screen {
  body:not(.client-experience) .primary { background:var(--green);color:#fff;border:1px solid var(--green);box-shadow:0 3px 8px #15563f1c }
  body:not(.client-experience) .primary:hover { background:#10452f;border-color:#10452f }
  body:not(.client-experience) .secondary { background:#e4efe7;color:#174d35;border-color:#829c8b }
  body:not(.client-experience) .secondary:hover:not(:disabled) { background:#cfe6d8;border-color:#346b4e }
  body:not(.client-experience) :is(.text-button,.guide-link,.row-button) { color:#205e43 }
  body:not(.client-experience) .text-button:hover { color:#123e2a;text-decoration:underline;text-underline-offset:3px }
  body:not(.client-experience) :is(.nav-item.active,.subnav button.active) { background:#15563f;color:#fff;border-color:#15563f }
  body:not(.client-experience) .nav-item:not(.active):hover { color:#174b34;background:#e2f0e6 }
  body:not(.client-experience) :is(.card,.metric,.work-action,.workspace-setting-card,.public-content-card,.public-share-card) { border-color:#c7d3cb;box-shadow:0 3px 12px #193b2e08 }
  body:not(.client-experience) .metric { border-top:3px solid #29734e }
  body:not(.client-experience) :is(th,thead) { background:#e9f1eb;color:#244d36 }
  body:not(.client-experience) tbody tr:hover { background:#edf5ef }
  body:not(.client-experience) .member-avatar { background:#f4e6ca;color:#6d4924 }
  body:not(.client-experience) .avatar { background:#dfede3;color:#245938 }
  body:not(.client-experience) .notice { background:#e7f3eb;color:#274f37;border:1px solid #9ebea9 }
  body:not(.client-experience) :is(.safe-note,.inline-error,.reconcile-ok) { border:1px solid }
  body:not(.client-experience) .safe-note { background:#fff1d5;color:#77500b;border-color:#ba8a31 }
  body:not(.client-experience) .inline-error { background:var(--ui-danger-bg);color:#8c281f;border-color:#bc5749 }
  body:not(.client-experience) .reconcile-ok { background:var(--ui-success-bg);color:#195c35;border-color:#5a9970 }
  body:not(.client-experience) :is(.search,.filter-group select,.subnav button,.workspace-switch) { border-color:var(--ui-control-border) }
  body:not(.client-experience) .search:focus-within { outline:2px solid var(--ui-focus);outline-offset:2px }
  body:not(.client-experience) :is(input,textarea,select):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=hidden]):not(.search input):not(.workspace-switch select) { border-color:var(--ui-field-border,var(--ui-control-border)) }
  body:not(.client-experience) :is(input,textarea)::placeholder { color:#627365;opacity:1 }
  body:not(.client-experience) :is(input[type=checkbox],input[type=radio],input[type=range]) { accent-color:#17613c }
  body:not(.client-experience) :is(.primary,.secondary,button):disabled { opacity:1;color:#627065;background:#edf0ed;border-color:#aebbb1;box-shadow:none;cursor:not-allowed }
  body:not(.client-experience) .donut-hole small { color:#506457 }
  body:not(.client-experience) .accounting-basis { color:#506457 }
  body:not(.client-experience) .badge { background:#e1f1e5;color:#225f3b;border:1px solid #9bbda7 }
  body:not(.client-experience) .public-publish-state.is-published { background:#def1d8;color:#2c6424;border-color:#6b995f }
  body:not(.client-experience) .public-publish-state.is-offline { background:#e8edeb;color:#465c50;border-color:#859b8e }
  body:not(.client-experience) .mail-recovery-label { color:#795000;background:#ffedba;border:1px solid #bd8b2d }
  body:not(.client-experience) .builder-device-buttons button[aria-pressed=true] { color:#fff;background:#15563f }
  body:not(.client-experience) .public-template-option[aria-pressed=true] { border-color:#287444;box-shadow:0 0 0 2px #287444;background:#edf6ed }
  :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible { outline:3px solid var(--ui-focus);outline-offset:3px }
  .client-designed :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible { outline-color:var(--cd-accent) }
  /* Semantic colours are explicit, so labels retain their meaning inside dialogs too. */
  body .status:not(.job-status):not(.payment-status):not([data-policy-state]) { background:var(--ui-success-bg);color:var(--ui-success);border:1px solid #71a285 }
  body .status.warn:not(.job-status):not(.payment-status):not([data-policy-state]) { background:var(--ui-warning-bg);color:var(--ui-warning);border-color:#af7f1e }
  body .status.danger:not(.job-status):not(.payment-status):not([data-policy-state]) { background:var(--ui-danger-bg);color:var(--ui-danger);border-color:#b75b4f }
  body .status.muted:not(.job-status):not(.payment-status):not([data-policy-state]) { background:#e8edef;color:#435760;border-color:#879ba3 }
  body .status.job-status { color:var(--job-ink);background:var(--job-fill);border-color:var(--job-border) }
  body .status.payment-status--unpaid { color:#852c1c;background:#ffe5df;border-color:#ab3d2b }
  body .status.payment-status--partial { color:#77500b;background:#ffedbe;border-color:#a47411 }
  body .status.payment-status--paid { color:#195d32;background:#d9f0df;border-color:#3f8050 }
}
@media screen {
  body:not(.client-experience) form :is(input,select,textarea):required:not(:user-invalid):not([aria-invalid=true]) { --ui-field-border:#9b650c }
  body:not(.client-experience) form :is(input,select,textarea):required:valid:not(:user-invalid):not([aria-invalid=true]) { --ui-field-border:#507b60 }
  body:not(.client-experience) form :is(input,select,textarea):is(:user-invalid,[aria-invalid=true]) { --ui-field-border:#ab2f24;box-shadow:0 0 0 1px #ab2f24 }
  form :is(input,select,textarea):focus-visible { outline-color:var(--ui-focus) }
}
@media screen {
  [data-policy-state="Active"] { --policy-ink:#17613c;--policy-tint:#dcf3e4 }
  [data-policy-state="Waiting period"] { --policy-ink:#805000;--policy-tint:#fff0c7 }
  [data-policy-state="Lapsed"] { --policy-ink:#9c3026;--policy-tint:#ffe5e0 }
  [data-policy-state="Cancelled"] { --policy-ink:#435760;--policy-tint:#e8edef }
  [data-policy-state="Deceased"] { --policy-ink:#693d90;--policy-tint:#f0e3fc }
  body .status[data-policy-state] { color:var(--policy-ink);background:var(--policy-tint);border:1px solid currentColor }
  .job-status--unassigned { --job-ink:#805000;--job-fill:#ffedbe;--job-border:#a47411 }
  .job-status--scheduled { --job-ink:#663c89;--job-fill:#ece1fa;--job-border:#8859ad }
  .job-status--progress { --job-ink:#184e80;--job-fill:#dceeff;--job-border:#3676ad }
  .job-status--completed { --job-ink:#195d32;--job-fill:#daf0df;--job-border:#3f8050 }
  .job-status--cancelled { --job-ink:#435760;--job-fill:#e7ecef;--job-border:#879ba3 }
}
