@font-face { font-family: "DM Sans"; src: url("fonts/DMSans-Regular.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "DM Sans"; src: url("fonts/DMSans-Medium.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: "DM Sans"; src: url("fonts/DMSans-SemiBold.woff2") format("woff2"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "DM Sans"; src: url("fonts/DMSans-Bold.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }
:root {
  --ao-font: "DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  /* Primary / Brand */
  --ao-brand-25:#F6FFFD; --ao-brand-50:#E9FEF9; --ao-brand-100:#C5FBED; --ao-brand-200:#5FCEB1; --ao-brand-300:#31C09A;
  --ao-brand-400:#00B081; --ao-brand-500:#009170; --ao-brand-600:#007460; --ao-brand-700:#00574F; --ao-brand-800:#00393F; --ao-brand-900:#001C2F;
  /* Grayscale */
  --ao-gray-25:#FCFCFD; --ao-gray-50:#F9FAFB; --ao-gray-100:#F2F4F7; --ao-gray-200:#E4E7EC; --ao-gray-300:#D0D5DD;
  --ao-gray-400:#98A2B3; --ao-gray-500:#667085; --ao-gray-600:#475467; --ao-gray-700:#344054; --ao-gray-800:#1D2939; --ao-gray-900:#101828;
  /* Error */
  --ao-error-25:#FFFBFA; --ao-error-50:#FEF3F2; --ao-error-100:#FEE4E2; --ao-error-200:#FECDCA; --ao-error-300:#FDA29B;
  --ao-error-400:#F97066; --ao-error-500:#F04438; --ao-error-600:#D92D20; --ao-error-700:#B42318; --ao-error-800:#912018; --ao-error-900:#7A271A;
  /* Warning */
  --ao-warning-25:#FFFCF5; --ao-warning-50:#FFFAEB; --ao-warning-100:#FEF0C7; --ao-warning-200:#FEDF89; --ao-warning-300:#FEC84B;
  --ao-warning-400:#FDB022; --ao-warning-500:#F79009; --ao-warning-600:#DC6803; --ao-warning-700:#B54708; --ao-warning-800:#93370D; --ao-warning-900:#7A2E0E;
  /* Success */
  --ao-success-25:#F5FFFC; --ao-success-50:#EBFFF8; --ao-success-100:#D0FFEE; --ao-success-200:#A2F7DD; --ao-success-300:#51E5B9;
  --ao-success-400:#00D0A3; --ao-success-500:#00AC87; --ao-success-600:#00896B; --ao-success-700:#006650; --ao-success-800:#004435; --ao-success-900:#00211A;
  /* Semantic aliases used by forms.css / admin.css.
     Surface palette aligned to the AO Sourcing applicant intake (apps/application-form/assets/
     annotator-intake.css) so the two products read as one family: slate text, hairline slate
     borders, a soft mint page wash, 14px radii and a large teal-tinted shadow.
     ONE DELIBERATE DIVERGENCE: Sourcing's --primary #0F9A8C measures 3.49:1 on white and it
     uses that as a button background with white text, which fails WCAG AA for normal text.
     --ao-primary is therefore bound to Sourcing's OWN --primary-dark #006145 (7.51:1), which
     keeps the D20 contrast decision intact. #0F9A8C survives as --ao-accent for borders, focus
     rings and large text — the uses where Sourcing itself applies it safely. */
  --ao-primary:#006145; --ao-primary-hover:#00503A; --ao-primary-soft:#ECFDF5;
  --ao-accent:#0F9A8C; --ao-accent-soft:#F0FDFA;
  --ao-ink:#1E293B; --ao-muted:#64748B; --ao-border:#E2E8F0; --ao-surface:#FFFFFF;
  --ao-page:linear-gradient(135deg,#F0FDFA 0%,#ECFDF5 100%);
  --ao-danger:var(--ao-error-600); --ao-danger-soft:var(--ao-error-50); --ao-ok:var(--ao-success-600); --ao-warn:var(--ao-warning-600);
  --ao-radius:14px; --ao-shadow:0 20px 60px rgba(15,118,110,.12);
  --ao-focus:0 0 0 2px var(--ao-surface), 0 0 0 4px var(--ao-accent);
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; min-height: 100vh; font-family: var(--ao-font); color: var(--ao-ink); background: var(--ao-page); background-attachment: fixed; font-size: 16px; line-height: 1.55; }
a { color: var(--ao-primary); }
:focus-visible { outline: none; box-shadow: var(--ao-focus); border-radius: 4px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; } }

/* ==== ao-ledger additions begin (issue #26, UI-01) ==== */
/* Primitives (opt-in via .ao-ledger) */
:root {
  --ao-fs-12:12px; --ao-lh-12:16px;
  --ao-fs-14:14px; --ao-lh-14:20px;
  --ao-fs-16:16px; --ao-lh-16:26px;
  --ao-fs-18:18px; --ao-lh-18:26px;
  --ao-fs-20:20px; --ao-lh-20:28px;
  --ao-fs-24:24px; --ao-lh-24:32px;
  --ao-fs-30:30px; --ao-lh-30:38px;
  --ao-fs-44:44px; --ao-lh-44:48px;
  --ao-fw-body:400; --ao-fw-label:500; --ao-fw-heading:600; --ao-fw-display:700;
  --ao-s-1:4px; --ao-s-2:8px; --ao-s-3:12px; --ao-s-4:16px; --ao-s-5:20px;
  --ao-s-6:24px; --ao-s-7:32px; --ao-s-8:40px; --ao-s-9:48px; --ao-s-10:64px;
  --ao-r-sm:6px; --ao-r-md:8px; --ao-r-lg:10px;
  --ao-control-h:44px;
  --ao-bg:var(--ao-gray-50);
  --ao-surface-1:var(--ao-surface);
  --ao-surface-2:var(--ao-gray-50);
  /* Hover fill token */
  --ao-surface-hover:var(--ao-gray-100);
  --ao-surface-inverse:var(--ao-brand-900);
  --ao-text:var(--ao-ink);
  --ao-text-2:var(--ao-muted);
  --ao-text-inverse:#FFFFFF;
  --ao-text-inverse-2:var(--ao-gray-200);
  --ao-line:var(--ao-border);
  --ao-line-strong:var(--ao-gray-300);
  --ao-line-control:var(--ao-gray-500);
  --ao-danger-text:var(--ao-error-700);
  --ao-ok-fg:var(--ao-success-700); --ao-ok-bg:var(--ao-success-50); --ao-ok-line:var(--ao-success-300);
  --ao-warn-fg:var(--ao-warning-700); --ao-warn-bg:var(--ao-warning-50); --ao-warn-line:var(--ao-warning-300);
  --ao-danger-fg:var(--ao-error-700); --ao-danger-bg:var(--ao-error-50); --ao-danger-line:var(--ao-error-300);
  /* Danger control border (contrast) */
  --ao-danger-control:var(--ao-error-600);
  --ao-info-fg:var(--ao-brand-700); --ao-info-bg:var(--ao-brand-50); --ao-info-line:var(--ao-brand-300);
  --ao-neutral-fg:var(--ao-gray-700); --ao-neutral-bg:var(--ao-gray-100); --ao-neutral-line:var(--ao-gray-400);
  --ao-elev-overlay:0 12px 28px rgba(16,24,40,.18);
  --ao-logo-mark:var(--ao-success-400);
  --ao-motion:180ms; --ao-motion-fast:120ms; --ao-ease:ease;
}
@media (min-width:768px) { :root { --ao-fs-44:56px; --ao-lh-44:60px; } }
@media (forced-colors:active) { :focus-visible { outline:2px solid CanvasText; } }

body { background:var(--ao-bg); }

.ao-ledger main { display:block; }
.ao-ledger img { max-width:100%; display:block; }
.ao-ledger ul,.ao-ledger ol { margin:0; padding:0; list-style:none; }
.ao-ledger button { font:inherit; color:inherit; background:none; border:0; }
.ao-ledger table { border-collapse:collapse; width:100%; }
.ao-ledger a { text-decoration-thickness: 1px; }
.ao-ledger h1,.ao-ledger h2,.ao-ledger h3 { margin:0; font-weight:var(--ao-fw-heading); color:var(--ao-text); font-family:var(--ao-font); }
.ao-ledger h1 { font-size:var(--ao-fs-30); line-height:var(--ao-lh-30); }
.ao-ledger h2 { font-size:var(--ao-fs-24); line-height:var(--ao-lh-24); }
.ao-ledger h3 { font-size:var(--ao-fs-18); line-height:var(--ao-lh-18); }
.ao-vh { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.ao-ledger .ao-hairline { border:0; border-top:1px solid var(--ao-line); margin:0; }
.ao-ledger .ao-eyebrow { display:block; font-size:var(--ao-fs-12); line-height:var(--ao-lh-12); font-weight:var(--ao-fw-heading); letter-spacing:.06em; text-transform:uppercase; color:var(--ao-text-2); margin:0 0 var(--ao-s-2); }

.ao-skip { position:absolute; left:var(--ao-s-3); top:var(--ao-s-3); z-index:100; background:var(--ao-surface-1); color:var(--ao-text); padding:10px var(--ao-s-4); border-radius:var(--ao-r-md); font-weight:var(--ao-fw-heading); text-decoration:none; transform:translateY(-160%); transition:transform var(--ao-motion) var(--ao-ease); }
.ao-skip:focus { transform:translateY(0); outline:none; box-shadow:var(--ao-focus); }

/* Inline form reset (also in admin.css LEGACY) */
.ao-ledger .ao-inline-form { margin:0; }

.ao-ledger .ao-btn { display:inline-flex; align-items:center; justify-content:center; gap:var(--ao-s-2); min-height:var(--ao-control-h); padding:0 var(--ao-s-5); border-radius:var(--ao-r-md); font-family:var(--ao-font); font-size:var(--ao-fs-14); line-height:var(--ao-lh-14); font-weight:var(--ao-fw-heading); text-decoration:none; white-space:nowrap; cursor:pointer; border:1.5px solid transparent; transition:background var(--ao-motion) var(--ao-ease), border-color var(--ao-motion) var(--ao-ease), color var(--ao-motion) var(--ao-ease); }
.ao-ledger .ao-btn svg { width:16px; height:16px; flex:none; }
.ao-ledger .ao-btn-primary { background:var(--ao-primary); color:var(--ao-text-inverse); }
.ao-ledger .ao-btn-primary:hover { background:var(--ao-primary-hover); }
.ao-ledger .ao-btn-secondary { background:var(--ao-surface-1); color:var(--ao-text); border-color:var(--ao-line-control); }
.ao-ledger .ao-btn-secondary:hover { border-color:var(--ao-text); }
.ao-ledger .ao-btn-quiet { background:transparent; color:var(--ao-text); padding-inline:var(--ao-s-3); }
.ao-ledger .ao-btn-quiet:hover { text-decoration:underline; }
.ao-ledger .ao-btn-danger { background:var(--ao-surface-1); color:var(--ao-danger-fg); border-color:var(--ao-danger-control); }
.ao-ledger .ao-btn-danger:hover { background:var(--ao-danger-fg); color:var(--ao-text-inverse); border-color:var(--ao-danger-fg); }
.ao-ledger .ao-btn-danger-quiet { background:transparent; color:var(--ao-danger-fg); padding-inline:var(--ao-s-3); }
.ao-ledger .ao-btn-danger-quiet:hover { background:var(--ao-danger-bg); }
.ao-ledger .ao-btn-inverse { background:var(--ao-logo-mark); color:var(--ao-brand-900); }
.ao-ledger .ao-btn-inverse:hover { background:var(--ao-success-300); }
.ao-ledger .ao-btn-sm { padding:0 var(--ao-s-3); }
.ao-ledger .ao-btn[disabled],.ao-ledger .ao-btn[aria-disabled="true"] { opacity:.45; cursor:not-allowed; }
.ao-ledger .ao-btn[disabled]:hover,.ao-ledger .ao-btn[aria-disabled="true"]:hover { background:inherit; text-decoration:none; }

.ao-ledger .ao-field { display:block; margin-block:var(--ao-s-6); }
.ao-ledger .ao-label { display:block; font-size:var(--ao-fs-14); line-height:var(--ao-lh-14); font-weight:var(--ao-fw-label); color:var(--ao-text); margin-bottom:var(--ao-s-2); }
.ao-ledger .ao-hint { font-size:var(--ao-fs-14); line-height:var(--ao-lh-14); color:var(--ao-text-2); margin:var(--ao-s-1) 0 0; }
.ao-ledger .ao-field-error { display:flex; gap:var(--ao-s-1); align-items:flex-start; font-size:var(--ao-fs-14); line-height:var(--ao-lh-14); font-weight:var(--ao-fw-heading); color:var(--ao-danger-text); margin:var(--ao-s-2) 0 0; }
.ao-ledger .ao-field-error svg { width:16px; height:16px; flex:none; margin-top:2px; }
.ao-ledger .ao-required { color:var(--ao-danger-fg); margin-left:2px; }
.ao-ledger .ao-input,.ao-ledger .ao-textarea,.ao-ledger .ao-select select { width:100%; min-height:var(--ao-control-h); padding:10px 14px; font:var(--ao-fw-body) 16px/1.3 var(--ao-font); color:var(--ao-text); background:var(--ao-surface-1); border:1.5px solid var(--ao-line-control); border-radius:var(--ao-r-md); appearance:none; transition:border-color var(--ao-motion) var(--ao-ease); }
.ao-ledger .ao-textarea { min-height:96px; resize:vertical; }
.ao-ledger .ao-input:hover,.ao-ledger .ao-textarea:hover,.ao-ledger .ao-select select:hover { border-color:var(--ao-text); }
.ao-ledger .ao-input::placeholder,.ao-ledger .ao-textarea::placeholder { color:var(--ao-text-2); opacity:1; }
.ao-ledger .has-error .ao-input,.ao-ledger .has-error .ao-textarea,.ao-ledger .has-error .ao-select select { border-color:var(--ao-danger-control); background:var(--ao-danger-bg); }
.ao-ledger .ao-select { position:relative; display:block; }
.ao-ledger .ao-select select { padding-right:var(--ao-s-8); background-image:url("img/chevron.svg"); background-repeat:no-repeat; background-position:right var(--ao-s-3) center; background-size:16px 16px; }
.ao-ledger .ao-check,.ao-ledger .ao-radio { width:24px; height:24px; flex:none; accent-color:var(--ao-primary); }
.ao-ledger .ao-check-row { display:flex; align-items:flex-start; gap:var(--ao-s-3); }
.ao-ledger .ao-check-row label { min-height:var(--ao-control-h); display:flex; align-items:center; flex:1 1 auto; }

.ao-ledger .ao-badge { display:inline-flex; align-items:center; gap:var(--ao-s-1); height:24px; padding:0 var(--ao-s-2); border-radius:var(--ao-r-sm); border:1px solid; font-size:var(--ao-fs-12); line-height:var(--ao-lh-12); font-weight:var(--ao-fw-heading); white-space:nowrap; }
.ao-ledger .ao-badge svg { width:13px; height:13px; flex:none; }
.ao-ledger .ao-badge-ok { color:var(--ao-ok-fg); background:var(--ao-ok-bg); border-color:var(--ao-ok-line); }
.ao-ledger .ao-badge-warn { color:var(--ao-warn-fg); background:var(--ao-warn-bg); border-color:var(--ao-warn-line); }
.ao-ledger .ao-badge-danger { color:var(--ao-danger-fg); background:var(--ao-danger-bg); border-color:var(--ao-danger-line); }
.ao-ledger .ao-badge-info { color:var(--ao-info-fg); background:var(--ao-info-bg); border-color:var(--ao-info-line); }
.ao-ledger .ao-badge-neutral { color:var(--ao-neutral-fg); background:var(--ao-neutral-bg); border-color:var(--ao-neutral-line); }

.ao-ledger .ao-card { background:var(--ao-surface-1); border:1px solid var(--ao-line); border-radius:var(--ao-r-lg); padding:var(--ao-s-6); }

.ao-ledger .ao-errors { border:1.5px solid var(--ao-danger-line); border-left:4px solid var(--ao-danger-fg); background:var(--ao-danger-bg); border-radius:var(--ao-r-lg); padding:var(--ao-s-5); margin-bottom:var(--ao-s-6); }
.ao-ledger .ao-errors.is-empty { display:none; }
.ao-ledger .ao-errors__title { margin:0 0 var(--ao-s-2); font-weight:var(--ao-fw-heading); color:var(--ao-danger-text); display:flex; align-items:center; gap:var(--ao-s-2); }
.ao-ledger .ao-errors__title svg { width:20px; height:20px; flex:none; }
.ao-ledger .ao-errors__list { margin:0; padding-left:var(--ao-s-6); }
.ao-ledger .ao-errors__list li { color:var(--ao-danger-text); font-size:var(--ao-fs-14); margin-bottom:var(--ao-s-1); }
.ao-ledger .ao-errors__list a { color:var(--ao-danger-text); font-weight:var(--ao-fw-heading); }

.ao-ledger .ao-empty { text-align:center; padding:var(--ao-s-9) var(--ao-s-4); }
.ao-ledger .ao-empty__mark { width:32px; height:32px; margin:0 auto var(--ao-s-4); background-image:radial-gradient(3px 3px at center, var(--ao-line-strong) 99%, transparent 100%); background-size:11px 11px; }
.ao-ledger .ao-empty h2,.ao-ledger .ao-empty h3 { margin-bottom:var(--ao-s-2); }
.ao-ledger .ao-empty p { margin:0 0 var(--ao-s-4); color:var(--ao-text-2); }

.ao-ledger .ao-num { display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; flex:none; border-radius:3px; background:var(--ao-text); color:var(--ao-text-inverse); font-size:13px; font-weight:var(--ao-fw-heading); }
.ao-ledger .ao-tabular { font-variant-numeric:tabular-nums; }

.ao-ledger .ao-dots { display:inline-flex; align-items:center; gap:var(--ao-s-1); }
.ao-ledger .ao-dots__meter { position:relative; width:96px; height:6px; border-radius:3px; overflow:hidden; background-image:repeating-linear-gradient(90deg, var(--ao-line-strong) 0 3px, transparent 3px 7px); }
.ao-ledger .ao-dots__fill { position:absolute; inset:0; background-image:repeating-linear-gradient(90deg, var(--ao-primary) 0 3px, transparent 3px 7px); }
.ao-ledger .ao-dots__fill--3of30 { width:10%; }
.ao-ledger .ao-dots i { width:6px; height:6px; border-radius:50%; background:var(--ao-line-control); display:inline-block; font-style:normal; }
.ao-ledger .ao-dots i.is-current { background:var(--ao-primary); width:8px; height:8px; }

.ao-ledger .ao-standalone { min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:var(--ao-s-6) var(--ao-s-4); gap:var(--ao-s-6); }
.ao-ledger .ao-standalone__logo img { height:26px; width:auto; }
.ao-ledger .ao-standalone__logo a { display:inline-flex; align-items:center; min-height:var(--ao-control-h); }
.ao-ledger .ao-standalone .ao-card { max-width:440px; width:100%; text-align:center; }

/* Admin page ground override */
html body.ao-admin { background:var(--ao-bg); }

/* Banners */
.ao-ledger .ao-banner { display:flex; gap:var(--ao-s-3); align-items:flex-start; border:1px solid var(--ao-line); background:var(--ao-surface-2); color:var(--ao-text); border-radius:var(--ao-r-lg); padding:var(--ao-s-4) var(--ao-s-5); flex-wrap:wrap; }
.ao-ledger .ao-banner svg { width:20px; height:20px; flex:none; margin-top:1px; }
.ao-ledger .ao-banner p { margin:0; font-size:var(--ao-fs-14); line-height:var(--ao-lh-14); flex:1 1 240px; }
.ao-ledger .ao-banner strong { font-weight:var(--ao-fw-heading); }
.ao-ledger .ao-banner-ok { border-color:var(--ao-ok-line); background:var(--ao-ok-bg); }
.ao-ledger .ao-banner-ok svg,.ao-ledger .ao-banner-ok strong { color:var(--ao-ok-fg); }
.ao-ledger .ao-banner-warn { border-color:var(--ao-warn-line); background:var(--ao-warn-bg); }
.ao-ledger .ao-banner-warn svg,.ao-ledger .ao-banner-warn strong { color:var(--ao-warn-fg); }
.ao-ledger .ao-banner-danger { border-color:var(--ao-danger-line); background:var(--ao-danger-bg); }
.ao-ledger .ao-banner-danger svg,.ao-ledger .ao-banner-danger strong { color:var(--ao-danger-fg); }

/* Segment control */
.ao-ledger .ao-segment { display:grid; grid-template-columns:repeat(var(--ao-cols,4), minmax(min-content,1fr)); gap:6px; }
.ao-ledger .ao-segment__opt { position:relative; display:flex; }
.ao-ledger .ao-segment__opt input { position:absolute; width:1px; height:1px; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); }
.ao-ledger .ao-segment__opt label { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; text-align:center; flex:1; min-height:48px; padding:6px; border:1.5px solid var(--ao-line-control); border-radius:var(--ao-r-md); font-size:clamp(12px, 3.3vw, 13px); line-height:15px; font-weight:var(--ao-fw-label); color:var(--ao-text); background:var(--ao-surface-1); cursor:pointer; overflow-wrap:normal; hyphens:manual; hyphens:auto; transition:border-color var(--ao-motion) var(--ao-ease), background var(--ao-motion) var(--ao-ease); }
.ao-ledger .ao-segment__opt svg { display:none; width:14px; height:14px; flex:none; opacity:0; color:var(--ao-primary); }
.ao-ledger .ao-segment__opt input:checked+label { border-color:var(--ao-primary); border-width:2px; background:var(--ao-primary-soft); color:var(--ao-primary-hover); font-weight:var(--ao-fw-heading); }
.ao-ledger .ao-segment__opt input:checked+label svg { opacity:1; }
.ao-ledger .ao-segment__opt input:focus-visible+label { box-shadow:var(--ao-focus); outline:none; }

.ao-ledger.ao-header { padding:0; border-bottom:1px solid var(--ao-line); }
.ao-ledger.ao-header.ao-header--hero { border-bottom-color:rgba(255,255,255,.14); }
.ao-ledger.ao-header .ao-container { display:flex; align-items:center; min-height:72px; width:100%; }
.ao-ledger.ao-header .ao-header__logo { display:inline-flex; align-items:center; min-height:var(--ao-control-h); }
.ao-ledger.ao-header .ao-header__logo img { height:26px; width:auto; }
.ao-ledger.ao-footer { max-width:none; margin:var(--ao-s-10) 0 0; padding:0; border-top:1px solid var(--ao-line); }
.ao-ledger.ao-footer .ao-container { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--ao-s-3); min-height:72px; font-size:var(--ao-fs-14); color:var(--ao-text-2); }
.ao-ledger.ao-footer a { display:inline-flex; align-items:center; min-height:44px; color:var(--ao-text-2); }
.ao-ledger .has-error .ao-segment__opt label { border-color:var(--ao-danger-control); }
