/* Design 003 (Card hub + social) app layer. Loaded last in os.html.
 * Source of truth: https://fedm8.com/design/003/ (spec.json, tokens.json).
 * 1) Semantic --fm-* tokens with presets (card-hub, high-contrast, dark, compact) set on <html> by assets/design-003-theme.js.
 * 2) Design 002 core variables re-pointed at 003 tokens, so every screen built on them takes the 003 look.
 * Components should read --fm-* tokens directly as screens are rebuilt to spec. */
/* FedM8 design 003 — generated from tokens.json. Do not edit by hand. */
:root{
  --fm-font-sans:"Plus Jakarta Sans", ui-sans-serif, system-ui, sans-serif;
  --fm-font-mono:"JetBrains Mono", ui-monospace, monospace;
  --fm-text-xs:calc(12px * var(--fm-type-scale));
  --fm-text-sm:calc(13px * var(--fm-type-scale));
  --fm-text-md:calc(15px * var(--fm-type-scale));
  --fm-text-lg:calc(18px * var(--fm-type-scale));
  --fm-text-xl:calc(22px * var(--fm-type-scale));
  --fm-text-2xl:calc(28px * var(--fm-type-scale));
  --fm-text-3xl:calc(34px * var(--fm-type-scale));
  --fm-text-stat:calc(40px * var(--fm-type-scale));
  --fm-weight-regular:400;
  --fm-weight-medium:500;
  --fm-weight-semibold:600;
  --fm-weight-bold:700;
  --fm-space-1:calc(4px * var(--fm-density));
  --fm-space-2:calc(8px * var(--fm-density));
  --fm-space-3:calc(12px * var(--fm-density));
  --fm-space-4:calc(16px * var(--fm-density));
  --fm-space-5:calc(20px * var(--fm-density));
  --fm-space-6:calc(24px * var(--fm-density));
  --fm-space-7:calc(32px * var(--fm-density));
  --fm-space-8:calc(48px * var(--fm-density));
  --fm-radius-sm:calc(8px * var(--fm-radius-scale));
  --fm-radius-md:calc(12px * var(--fm-radius-scale));
  --fm-radius-lg:calc(16px * var(--fm-radius-scale));
  --fm-radius-xl:calc(20px * var(--fm-radius-scale));
  --fm-radius-pill:999px;
  --fm-border-width:1px;
  --fm-shadow-1:0 1px 2px rgba(20,40,75,.06);
  --fm-shadow-2:0 6px 20px rgba(20,40,75,.10);
  --fm-motion-fast:120ms;
  --fm-motion-base:200ms;
  --fm-ease:cubic-bezier(.2,.7,.2,1);
  --fm-page-max:1440px;
  --fm-gutter:24px;
  --fm-gutter-mobile:16px;
  --fm-rail-left:320px;
  --fm-rail-right:320px;
  --fm-tap-min:44px;
  --fm-header-h:64px;
  --fm-density:1;
  --fm-type-scale:1;
  --fm-radius-scale:1;
  --fm-bg:#f3f1ec;
  --fm-surface:#ffffff;
  --fm-surface-alt:#fffaf0;
  --fm-line:#e0dccf;
  --fm-line-strong:#8b8676;
  --fm-ink:#14284b;
  --fm-ink-2:#3d4f6e;
  --fm-ink-3:#4a5b78;
  --fm-on-dark:#ffffff;
  --fm-nav-active-bg:#14284b;
  --fm-nav-active-ink:#ffffff;
  --fm-selected-bg:#14284b;
  --fm-selected-ink:#ffffff;
  --fm-row-selected-bg:#fdf3dc;
  --fm-row-selected-ink:#14284b;
  --fm-action:#f5a524;
  --fm-action-ink:#14284b;
  --fm-action-hover:#e0951a;
  --fm-accent-soft:#fde3b0;
  --fm-accent-ink:#8a4b00;
  --fm-chip-selected-bg:#fde3b0;
  --fm-chip-selected-ink:#14284b;
  --fm-success:#1f6b4a;
  --fm-success-soft:#e3f1ea;
  --fm-pro:#5b3a8a;
  --fm-pro-soft:#efe8f7;
  --fm-urgent:#a3262a;
  --fm-urgent-soft:#fbe3e3;
  --fm-warn:#8a4b00;
  --fm-warn-soft:#fde3b0;
  --fm-info-soft:#eaf0fb;
  --fm-focus-ring:#1d4ed8;
}
:root[data-theme="card-hub"]{--fm-bg:#f3f1ec;--fm-surface:#ffffff;--fm-surface-alt:#fffaf0;--fm-line:#e0dccf;--fm-line-strong:#8b8676;--fm-ink:#14284b;--fm-ink-2:#3d4f6e;--fm-ink-3:#4a5b78;--fm-on-dark:#ffffff;--fm-nav-active-bg:#14284b;--fm-nav-active-ink:#ffffff;--fm-selected-bg:#14284b;--fm-selected-ink:#ffffff;--fm-row-selected-bg:#fdf3dc;--fm-row-selected-ink:#14284b;--fm-action:#f5a524;--fm-action-ink:#14284b;--fm-action-hover:#e0951a;--fm-accent-soft:#fde3b0;--fm-accent-ink:#8a4b00;--fm-chip-selected-bg:#fde3b0;--fm-chip-selected-ink:#14284b;--fm-success:#1f6b4a;--fm-success-soft:#e3f1ea;--fm-pro:#5b3a8a;--fm-pro-soft:#efe8f7;--fm-urgent:#a3262a;--fm-urgent-soft:#fbe3e3;--fm-warn:#8a4b00;--fm-warn-soft:#fde3b0;--fm-info-soft:#eaf0fb;--fm-focus-ring:#1d4ed8;--fm-density:1;--fm-type-scale:1;--fm-radius-scale:1;}
:root[data-theme="high-contrast"]{--fm-bg:#ffffff;--fm-surface:#ffffff;--fm-surface-alt:#fff6e0;--fm-line:#5b6475;--fm-line-strong:#3a4152;--fm-ink:#000814;--fm-ink-2:#1b2a44;--fm-ink-3:#26334d;--fm-on-dark:#ffffff;--fm-nav-active-bg:#000814;--fm-nav-active-ink:#ffffff;--fm-selected-bg:#000814;--fm-selected-ink:#ffffff;--fm-row-selected-bg:#ffe7a8;--fm-row-selected-ink:#000814;--fm-action:#ffb020;--fm-action-ink:#000814;--fm-action-hover:#e89a00;--fm-accent-soft:#ffe7a8;--fm-accent-ink:#5a3000;--fm-chip-selected-bg:#ffe7a8;--fm-chip-selected-ink:#000814;--fm-success:#0b4d31;--fm-success-soft:#d4f0e2;--fm-pro:#3f1f70;--fm-pro-soft:#ebe0fa;--fm-urgent:#7a0a0f;--fm-urgent-soft:#ffd9d9;--fm-warn:#5a3000;--fm-warn-soft:#ffe7a8;--fm-info-soft:#dde8ff;--fm-focus-ring:#0033cc;--fm-density:1;--fm-type-scale:1.1;--fm-radius-scale:1;}
:root[data-theme="dark"]{--fm-bg:#0f1726;--fm-surface:#172238;--fm-surface-alt:#1d2a44;--fm-line:#2c3c5c;--fm-line-strong:#7085ad;--fm-ink:#eef2f8;--fm-ink-2:#c6d0e2;--fm-ink-3:#a9b6cd;--fm-on-dark:#0f1726;--fm-nav-active-bg:#e8edf6;--fm-nav-active-ink:#14284b;--fm-selected-bg:#e8edf6;--fm-selected-ink:#14284b;--fm-row-selected-bg:#26365a;--fm-row-selected-ink:#eef2f8;--fm-action:#f5a524;--fm-action-ink:#14284b;--fm-action-hover:#ffb948;--fm-accent-soft:#3a2e16;--fm-accent-ink:#f5c46b;--fm-chip-selected-bg:#3a2e16;--fm-chip-selected-ink:#f5c46b;--fm-success:#6fd3a3;--fm-success-soft:#163328;--fm-pro:#c7a8f0;--fm-pro-soft:#2a2140;--fm-urgent:#ff9a9a;--fm-urgent-soft:#3a1d22;--fm-warn:#f5c46b;--fm-warn-soft:#3a2e16;--fm-info-soft:#1f2d4a;--fm-focus-ring:#8fb4ff;--fm-density:1;--fm-type-scale:1;--fm-radius-scale:1;}
:root[data-density="compact"]{--fm-density:.85}:root[data-density="roomy"]{--fm-density:1.15}
:root[data-corners="square"]{--fm-radius-scale:.25}:root[data-corners="extra-round"]{--fm-radius-scale:1.5}
@media (prefers-reduced-motion: reduce){:root{--fm-motion-fast:0ms;--fm-motion-base:0ms}}:root[data-reduce-motion="true"]{--fm-motion-fast:0ms;--fm-motion-base:0ms}

body.fd-design {
  --fd-bg:var(--fm-bg); --fd-paper:var(--fm-surface); --fd-soft:var(--fm-surface-alt);
  --fd-ink:var(--fm-ink); --fd-muted:var(--fm-ink-2); --fd-line:var(--fm-line);
  --fd-green:var(--fm-selected-bg); --fd-green-dark:var(--fm-nav-active-bg); --fd-mint:var(--fm-success-soft);
  --line-2:var(--fm-line-strong); --navy:var(--fm-nav-active-bg); --navy-2:var(--fm-nav-active-bg); --navy-3:var(--fm-nav-active-bg);
  --gold:var(--fm-action); --gold-dim:var(--fm-accent-soft); --radius:var(--fm-radius-md);
  --ss-mint-2:var(--fm-surface-alt); --ss-teal-d:var(--fm-ink); --ss-teal-soft:var(--fm-accent-soft);
  --ss-serif:var(--fm-font-sans); --font-serif:var(--fm-font-sans); --font-sans:var(--fm-font-sans);
  --pc-surface:var(--fm-surface); --pc-ink:var(--fm-ink); --pc-muted:var(--fm-ink-3); --pc-line:var(--fm-line);
  --pc-accent:var(--fm-action); --pc-accent-ink:var(--fm-action-ink); --pc-soft:var(--fm-surface-alt);
  --pc-radius:var(--fm-radius-md); --pc-font:var(--fm-font-sans);
  --plan-p-ink:var(--fm-pro); --plan-p-bg:var(--fm-pro-soft); --plan-p-line:var(--fm-pro);
  --plan-b-ink:var(--fm-accent-ink); --plan-b-bg:var(--fm-accent-soft); --plan-b-line:var(--fm-accent-ink);
  background:var(--fm-bg); color:var(--fm-ink); font-family:var(--fm-font-sans);
}
:root[data-theme="dark"] { color-scheme:dark; }
:root[data-theme="dark"] body.fd-design { color-scheme:dark; }
body.fd-design h1, body.fd-design h2, body.fd-design h3, body.fd-design h4 { font-family:var(--fm-font-sans); letter-spacing:-0.01em; }
/* R2: the one primary action is amber with navy words. */
body.fd-design .btn:not(.ghost):not(.danger):not(:disabled) { background:var(--fm-action); border-color:var(--fm-action); color:var(--fm-action-ink); }
body.fd-design .btn:not(.ghost):not(.danger):not(:disabled):hover { background:var(--fm-action-hover); border-color:var(--fm-action-hover); color:var(--fm-action-ink); }
body.fd-design .btn.ghost { background:var(--fm-surface); border-color:var(--fm-line-strong); color:var(--fm-ink); }
body.fd-design :focus-visible { outline:2px solid var(--fm-focus-ring); outline-offset:2px; }
/* Text size: scales through the --fm-text-* tokens only (they multiply by --fm-type-scale above). No zoom, so text never scales twice;
   legacy screens follow because assets/d3/legacy.css aliases their text onto the same tokens. */
/* Team Up "Ask Jev": confidence chip on each suggested NAICS code. The words (High 92%, Medium 61%, Low 30%, Not scored)
 * carry the meaning; success, warn and neutral colours only back them up. */
body.fd-design .fx-lvl { display:inline-flex; align-items:center; flex:0 0 auto; margin-left:auto; padding:3px 10px; border:1px solid var(--fm-line-strong); border-radius:var(--fm-radius-pill); background:var(--fm-surface-alt); color:var(--fm-ink-2); font-size:var(--fm-text-xs); font-weight:var(--fm-weight-semibold); line-height:1.3; white-space:nowrap; }
body.fd-design .fx-lvl.high { border-color:var(--fm-success); background:var(--fm-success-soft); color:var(--fm-success); }
body.fd-design .fx-lvl.med { border-color:var(--fm-warn); background:var(--fm-warn-soft); color:var(--fm-warn); }
