/* ABA Velocity Dash design system v1.0 (Sloane, DASH_DESIGN_SYSTEM.md; built by Forge, UX pass Oct 23 2026).
   Tokens (§2-4), one shell (§5), page header + breadcrumbs (§5.3), buttons (§6), KPI grid (§9), tables (§10),
   empty/loading/error (§11), toasts (§12), motion (§14). Shared by every /q page that loads /q/vd/nav.js. */
@font-face{font-family:"Montserrat";src:url("/aba-assets/fonts/montserrat-var.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"Lato";src:url("/aba-assets/fonts/lato-regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Lato";src:url("/aba-assets/fonts/lato-bold.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
:root{
  --vd-navy-950:#0B0F1A;--vd-navy-900:#0B1F3A;--vd-navy-700:#1C2A4E;--vd-red-600:#D22B2B;--vd-red-700:#A51C1C;--vd-red-300:#FF6B6B;--vd-sky-300:#B9C7E4;--vd-mut-400:#8C99B5;
  --vd-bg:#F5F7FB;--vd-surface:#FFFFFF;--vd-surface-2:#EEF2FA;--vd-border:#DFE5F0;--vd-border-strong:#C9D3E6;
  --vd-text:#0B1F3A;--vd-text-2:#475569;--vd-text-3:#5A6A8A;--vd-link:#0B1F3A;--vd-focus:#1D4ED8;
  --vd-ok-fg:#17663A;--vd-ok-bg:#E1F4E6;--vd-warn-fg:#8A5A00;--vd-warn-bg:#FFF7E8;--vd-warn-bd:#E9A23B;--vd-err-fg:#A51C1C;--vd-err-bg:#FDECEC;--vd-info-fg:#1D4ED8;--vd-info-bg:#EAF0FE;--vd-scrim:rgba(11,15,26,.55);
  --vd-font-head:"Montserrat",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;--vd-font-body:"Lato",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;--vd-font-mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --vd-fs-display:32px;--vd-lh-display:40px;--vd-fs-h1:24px;--vd-lh-h1:32px;--vd-fs-h2:20px;--vd-lh-h2:28px;--vd-fs-h3:16px;--vd-lh-h3:24px;
  --vd-fs-body:15px;--vd-lh-body:24px;--vd-fs-sm:13px;--vd-lh-sm:20px;--vd-fs-xs:12px;--vd-lh-xs:16px;--vd-fs-kpi:28px;--vd-lh-kpi:36px;
  --vd-fw-reg:400;--vd-fw-semi:600;--vd-fw-bold:700;--vd-fw-black:800;
  --vd-sp-0:0;--vd-sp-1:4px;--vd-sp-2:8px;--vd-sp-3:12px;--vd-sp-4:16px;--vd-sp-5:20px;--vd-sp-6:24px;--vd-sp-8:32px;--vd-sp-10:40px;--vd-sp-12:48px;--vd-sp-16:64px;
  --vd-radius-sm:6px;--vd-radius:8px;--vd-radius-lg:12px;--vd-radius-pill:999px;
  --vd-shadow-1:0 1px 2px rgba(11,31,68,.06),0 1px 3px rgba(11,31,68,.08);--vd-shadow-2:0 4px 12px rgba(11,31,68,.10);--vd-shadow-3:0 12px 32px rgba(11,15,26,.24);
  --vd-z-header:900;--vd-z-nav:890;--vd-z-sticky:10;--vd-z-drawer:950;--vd-z-modal:960;--vd-z-toast:980;
  --vd-dur-fast:120ms;--vd-dur-base:200ms;--vd-dur-slow:280ms;--vd-ease:cubic-bezier(.2,0,0,1);--vd-ease-out:cubic-bezier(0,0,.2,1);--vd-ease-in:cubic-bezier(.4,0,1,1);
  --vd-header-h:56px;--vd-nav-w:240px;--vd-nav-w-rail:64px;--vd-content-max:1440px;--vd-page-pad:var(--vd-sp-6);--vd-mobile-nav-h:0px
}
/* §5 shell: only the app header is fixed; its height is reserved at EVERY width (§5.1) */
html{scroll-padding-top:calc(var(--vd-header-h) + var(--vd-sp-4));scrollbar-gutter:stable}
body.vd{margin:0;padding-top:var(--vd-header-h);background:var(--vd-bg);color:var(--vd-text);font:var(--vd-fw-reg) var(--vd-fs-body)/var(--vd-lh-body) var(--vd-font-body)}
body.vd *,body.vd *::before,body.vd *::after{box-sizing:border-box}
.vd-skip{position:absolute;left:var(--vd-sp-2);top:-100px;z-index:999;background:var(--vd-surface);color:var(--vd-text);padding:var(--vd-sp-2) var(--vd-sp-3);border-radius:var(--vd-radius)}.vd-skip:focus{top:var(--vd-sp-2)}
.vd-header{position:fixed;inset:0 0 auto 0;height:var(--vd-header-h);z-index:var(--vd-z-header);display:flex;align-items:center;gap:var(--vd-sp-4);padding:0 var(--vd-sp-4);background:var(--vd-navy-950);color:#EEF2FA;overflow:hidden;contain:layout paint}
.vd-header .vd-brand{display:flex;align-items:center;gap:var(--vd-sp-3);color:#EEF2FA;text-decoration:none;font:var(--vd-fw-black) 16px/1 var(--vd-font-head);white-space:nowrap}
.vd-header .vd-brand .logo{height:32px;width:112px;flex:none;display:block}
.vd-header .vd-brand b{color:var(--vd-red-300);font-weight:var(--vd-fw-black)}
.vd-header .sp{flex:1}
.vd-header a.vd-hlink{color:var(--vd-sky-300);text-decoration:none;font:var(--vd-fw-semi) 13px/1 var(--vd-font-head);padding:var(--vd-sp-2) var(--vd-sp-3);border-radius:var(--vd-radius)}
.vd-header a.vd-hlink:hover{background:var(--vd-navy-700);color:#fff}
.vd-nav{position:fixed;top:var(--vd-header-h);bottom:0;left:0;width:var(--vd-nav-w);z-index:var(--vd-z-nav);background:var(--vd-navy-900);overflow-y:auto;overscroll-behavior:contain;padding:var(--vd-sp-3) var(--vd-sp-2)}
.vd-nav ul{list-style:none;margin:0;padding:0}
.vd-nav a{display:flex;align-items:center;gap:var(--vd-sp-3);height:40px;padding:0 var(--vd-sp-3);border-radius:var(--vd-radius);color:#C9D4EA;font:var(--vd-fw-semi) 14px/1 var(--vd-font-head);text-decoration:none}
.vd-nav a:hover{background:var(--vd-navy-700);color:#fff}
.vd-nav a[aria-current="page"]{background:rgba(210,43,43,.16);color:#fff;box-shadow:inset 3px 0 0 var(--vd-red-600)}
.vd-nav .dept{margin-top:var(--vd-sp-2)}
.vd-nav .dept>button{display:flex;align-items:center;gap:var(--vd-sp-3);width:100%;height:40px;background:none;border:0;color:#EEF2FA;text-align:left;font:var(--vd-fw-bold) 13px/1 var(--vd-font-head);letter-spacing:.04em;text-transform:uppercase;padding:0 var(--vd-sp-3);border-radius:var(--vd-radius);cursor:pointer}
.vd-nav .dept>button:hover{background:var(--vd-navy-700)}
.vd-nav .dept>button .chev{margin-left:auto;transition:transform var(--vd-dur-fast) var(--vd-ease)}.vd-nav .dept>button[aria-expanded="false"] .chev{transform:rotate(-90deg)}
.vd-nav .sub a{padding-left:var(--vd-sp-10);height:36px;font-size:13px}
.vd-nav .sub[hidden]{display:none}
.vd-nav .vd-nav-foot{margin-top:var(--vd-sp-4);padding-top:var(--vd-sp-3);border-top:1px solid rgba(185,199,228,.18)}
.vd-main{margin-left:var(--vd-nav-w);min-height:calc(100dvh - var(--vd-header-h))}
.vd-page{max-width:var(--vd-content-max);margin:0 auto;padding:var(--vd-sp-6) var(--vd-page-pad) var(--vd-sp-16)}
.vd-i{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.vd-i--16{width:16px;height:16px}.vd-i--24{width:24px;height:24px}
/* §5.3 page header + breadcrumbs (in flow, NOT sticky) */
.vd-ph{min-height:64px;margin-bottom:var(--vd-sp-6)}
.vd-ph-row{display:flex;align-items:center;justify-content:space-between;gap:var(--vd-sp-4);flex-wrap:wrap}
.vd-ph-actions{display:flex;gap:var(--vd-sp-2);margin-left:auto}
.vd-ph-sub{margin:var(--vd-sp-1) 0 0;color:var(--vd-text-2);font-size:var(--vd-fs-sm)}
.vd-bc ol{display:flex;flex-wrap:wrap;gap:var(--vd-sp-2);list-style:none;margin:0 0 var(--vd-sp-2);padding:0;font-size:var(--vd-fs-sm);color:var(--vd-text-2)}
.vd-bc li+li::before{content:"›";margin-right:var(--vd-sp-2);color:var(--vd-text-3)}
.vd-bc a{color:var(--vd-text-2);text-decoration:none}.vd-bc a:hover{text-decoration:underline;color:var(--vd-text)}
.vd h1{font:var(--vd-fw-black) var(--vd-fs-h1)/var(--vd-lh-h1) var(--vd-font-head);letter-spacing:-.01em;margin:0 0 var(--vd-sp-3)}
.vd h2{font:var(--vd-fw-bold) var(--vd-fs-h2)/var(--vd-lh-h2) var(--vd-font-head);margin:var(--vd-sp-6) 0 var(--vd-sp-3)}
.vd h3{font:var(--vd-fw-bold) var(--vd-fs-h3)/var(--vd-lh-h3) var(--vd-font-head);margin:0}
.vd .num{font-family:var(--vd-font-head);font-variant-numeric:tabular-nums}
.vd .overline{font:var(--vd-fw-bold) var(--vd-fs-xs)/var(--vd-lh-xs) var(--vd-font-head);letter-spacing:.08em;text-transform:uppercase;color:var(--vd-text-2)}
/* §6 buttons */
.vd-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--vd-sp-2);height:40px;padding:0 var(--vd-sp-4);border-radius:var(--vd-radius);border:1px solid var(--vd-border-strong);background:var(--vd-surface);color:var(--vd-text);font:var(--vd-fw-semi) 14px/1 var(--vd-font-head);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background var(--vd-dur-fast) var(--vd-ease),border-color var(--vd-dur-fast) var(--vd-ease)}
.vd-btn:hover{background:var(--vd-surface-2)}
.vd-btn--primary{background:var(--vd-red-600);border-color:var(--vd-red-600);color:#fff}.vd-btn--primary:hover{background:#B82424}
.vd-btn--danger{background:var(--vd-red-700);border-color:var(--vd-red-700);color:#fff}
.vd-btn--ghost{border-color:transparent;background:transparent}
.vd-btn--sm{height:32px;padding:0 var(--vd-sp-3);font-size:13px}
.vd-btn:disabled,.vd-btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed}
@media (pointer:coarse){.vd-btn{min-height:44px}}
/* pills */
.vd-pill{display:inline-flex;align-items:center;height:20px;padding:0 var(--vd-sp-2);border-radius:var(--vd-radius-pill);background:var(--vd-surface-2);color:var(--vd-text-2);font:var(--vd-fw-bold) var(--vd-fs-xs)/1 var(--vd-font-head)}
/* §5.5 grid + §9 KPI grid: explicit columns, never auto-fill (no-holes rule is enforced in nav.js) */
.vd-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--vd-sp-6)}
.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-6{grid-column:span 6}.span-12{grid-column:1/-1}
.vd-kpis{display:grid;gap:var(--vd-sp-4);grid-template-columns:repeat(var(--vd-kpi-cols,4),minmax(0,1fr))}
@media (max-width:1279px){.vd-kpis{--vd-kpi-cols:3}}@media (max-width:1023px){.vd-kpis{--vd-kpi-cols:2}}@media (max-width:479px){.vd-kpis{--vd-kpi-cols:1}}
/* §10 table header (light, sticky only inside its own scroll box) */
.vd-table-wrap{position:relative;overflow:auto;border:1px solid var(--vd-border);border-radius:var(--vd-radius-lg);background:var(--vd-surface)}
/* §11 states */
.vd-skel{background:linear-gradient(90deg,var(--vd-surface-2) 0,#F8FAFD 40%,var(--vd-surface-2) 80%);background-size:200% 100%;border-radius:var(--vd-radius-sm);animation:vd-shimmer 1.2s linear infinite}
.vd-skel--text{height:12px;margin:6px 0}.vd-skel--h1{height:28px;width:40%;margin:var(--vd-sp-1) 0 var(--vd-sp-4)}.vd-skel--kpi{height:120px;border-radius:var(--vd-radius-lg)}.vd-skel--row{height:48px;margin-bottom:1px}
@keyframes vd-shimmer{to{background-position:-200% 0}}
.vd-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--vd-sp-3);padding:var(--vd-sp-12) var(--vd-sp-6);color:var(--vd-text-2)}
.vd-empty h3{color:var(--vd-text)}.vd-empty .vd-i{width:48px;height:48px;color:var(--vd-text-3)}
.vd-error{display:flex;gap:var(--vd-sp-3);align-items:flex-start;padding:var(--vd-sp-4);border-radius:var(--vd-radius);background:var(--vd-err-bg);color:var(--vd-err-fg);border:1px solid #F3C4C4;margin:var(--vd-sp-3) 0}
.vd-error .vd-error-b{flex:1;min-width:0}.vd-error p{margin:0 0 var(--vd-sp-2)}.vd-error details{font-size:var(--vd-fs-sm);color:var(--vd-text-2)}
/* §12 one toast region */
#vd-toasts{position:fixed;left:50%;bottom:calc(var(--vd-sp-6) + env(safe-area-inset-bottom) + var(--vd-mobile-nav-h,0px));transform:translateX(-50%);z-index:var(--vd-z-toast);display:flex;flex-direction:column;gap:var(--vd-sp-2);width:min(480px,calc(100vw - 32px));pointer-events:none}
.vd-toast{pointer-events:auto;display:flex;gap:var(--vd-sp-3);align-items:flex-start;padding:var(--vd-sp-3) var(--vd-sp-4);border-radius:var(--vd-radius);background:var(--vd-navy-900);color:#fff;box-shadow:var(--vd-shadow-3);font:var(--vd-fs-body)/var(--vd-lh-sm) var(--vd-font-body);font-size:14px;animation:vd-toast-in var(--vd-dur-base) var(--vd-ease-out)}
.vd-toast .msg{flex:1;min-width:0;white-space:pre-wrap}
.vd-toast button{all:unset;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--vd-radius-sm)}
.vd-toast button:focus-visible{outline:2px solid #fff}
.vd-toast--error{background:var(--vd-red-700)}
@keyframes vd-toast-in{from{opacity:0;transform:translateY(8px)}}
/* §19 focus */
body.vd :focus-visible{outline:2px solid var(--vd-focus);outline-offset:2px}
/* §18 responsive: rail under 1280, bottom nav under 768 */
.vd-bottomnav,.vd-sheet{display:none}
@media (max-width:1279px){.vd-nav{width:var(--vd-nav-w-rail);padding:var(--vd-sp-3) var(--vd-sp-1)}.vd-nav .label,.vd-nav .chev{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.vd-nav .sub,.vd-nav .home-sub{display:none}.vd-nav a,.vd-nav .dept>button{justify-content:center;padding:0}.vd-main{margin-left:var(--vd-nav-w-rail)}}
@media (max-width:767px){
  :root{--vd-page-pad:var(--vd-sp-4);--vd-mobile-nav-h:56px}
  .vd-nav{display:none}.vd-main{margin-left:0;padding-bottom:calc(var(--vd-mobile-nav-h) + env(safe-area-inset-bottom))}
  .vd-header .vd-hlink{display:none}
  .vd-bottomnav{position:fixed;left:0;right:0;bottom:0;height:calc(var(--vd-mobile-nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:flex;background:var(--vd-navy-900);z-index:var(--vd-z-nav);border-top:1px solid rgba(185,199,228,.25)}
  .vd-bottomnav a,.vd-bottomnav button{flex:1;min-height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--vd-sky-300);text-decoration:none;font:var(--vd-fw-semi) var(--vd-fs-xs)/1 var(--vd-font-head);background:none;border:0;cursor:pointer}
  .vd-bottomnav [aria-current="page"],.vd-bottomnav .on{color:#fff}.vd-bottomnav [aria-current="page"] .vd-i,.vd-bottomnav .on .vd-i{color:var(--vd-red-600)}
  .vd-sheet{position:fixed;left:0;right:0;bottom:calc(var(--vd-mobile-nav-h) + env(safe-area-inset-bottom));z-index:var(--vd-z-nav);background:var(--vd-navy-900);border-top:1px solid rgba(185,199,228,.25);padding:var(--vd-sp-2);display:grid;grid-template-columns:1fr 1fr;gap:var(--vd-sp-1);max-height:70dvh;overflow:auto}
  .vd-sheet[hidden]{display:none}
  .vd-sheet h4{grid-column:1/-1;margin:var(--vd-sp-2) var(--vd-sp-3) 0;color:var(--vd-mut-400);font:var(--vd-fw-bold) var(--vd-fs-xs)/var(--vd-lh-xs) var(--vd-font-head);letter-spacing:.08em;text-transform:uppercase}
  .vd-sheet a{display:flex;align-items:center;gap:var(--vd-sp-3);min-height:44px;padding:0 var(--vd-sp-3);color:#EEF2FA;text-decoration:none;font:var(--vd-fw-semi) 14px/1.2 var(--vd-font-head);border-radius:var(--vd-radius)}
  .vd-sheet a[aria-current="page"]{background:rgba(210,43,43,.18)}
  .vd-ph-actions .vd-btn:not(.vd-btn--primary){display:none}
}
/* §14 motion */
@keyframes vd-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}.vd-skel{animation:none}}
/* compat mode for pages not converted yet (Quotes): reserve the header, push their own sticky bars below it */
body.vd-compat{padding-top:var(--vd-header-h)}
body.vd-compat .appbar{top:var(--vd-header-h)}body.vd-compat .tabs{top:calc(var(--vd-header-h) + var(--barh,58px))}body.vd-compat .side{top:calc(var(--vd-header-h) + var(--barh,58px) + 64px)}

/* In-app dialog (§13) — VD.prompt/confirm/alert */
.vd-modal{border:0;padding:0;border-radius:var(--vd-radius-lg);box-shadow:var(--vd-shadow-3);width:min(560px,calc(100vw - 32px));max-height:min(88dvh,800px);color:var(--vd-text);background:var(--vd-surface)}
.vd-modal--sm{width:min(400px,calc(100vw - 32px))}
.vd-modal::backdrop{background:var(--vd-scrim)}
.vd-modal header,.vd-modal footer{padding:var(--vd-sp-4) var(--vd-sp-6)}.vd-modal .body{padding:0 var(--vd-sp-6) var(--vd-sp-4);overflow:auto}
.vd-modal footer{display:flex;justify-content:flex-end;gap:var(--vd-sp-2);border-top:1px solid var(--vd-border)}
.vd-dlg-t{margin:0;font:var(--vd-fw-semi) 18px/1.3 var(--vd-font-head);color:var(--vd-text)}
.vd-dlg-b{margin:0 0 var(--vd-sp-3);white-space:pre-line;color:var(--vd-text-2)}
.vd-dlg-l{display:grid;gap:var(--vd-sp-2);font-size:14px;color:var(--vd-text-2);white-space:pre-line}
.vd-dlg-in{height:40px;padding:0 var(--vd-sp-3);border:1px solid var(--vd-border-strong);border-radius:var(--vd-radius);font:inherit;color:var(--vd-text)}
.vd-dlg-in:focus{outline:2px solid var(--vd-focus);outline-offset:1px}
.vd-wm-b{color:var(--vd-red-600)}
.vd-preview [data-live-only]{display:none!important}
