/* FedM8 design 003: shared component library (contract: UI contract, layer 2).
 * Reads ONLY --fm-* tokens from assets/design-003-app.css. No colour, font-size, radius, shadow or font-family literals
 * (qc/d3-no-literals.spec.cjs). Lengths are var(--fm-space-*) / var(--fm-radius-*) / var(--fm-border-width) / var(--fm-tap-min)
 * or a calc() of one. State lives in ARIA / data attributes, not extra classes.
 * Scope: everything sits under body.fd-design (the signed-in workspace body class) so public pages are untouched.
 * Shell components (AppHeader, PillNav, NavPill, IconButton, WorkspaceSwitcher, mobile nav) live in assets/d3/shell.css.
 * Style guide (every component, every state, all four presets): /design/003/components.html */

/* ---------- 0. Derived sizes (all computed from tokens, so density / text size / corners follow) ---------- */
body.fd-design {
  --fc-hair: var(--fm-border-width);
  --fc-bold: calc(var(--fm-border-width) * 2);
  --fc-ring: calc(var(--fm-border-width) * 2);
  --fc-icon: calc(var(--fm-space-4) + var(--fm-space-1));
  --fc-avatar: calc(var(--fm-space-6) + var(--fm-space-2));
  --fc-avatar-lg: var(--fm-tap-min);
  --fc-dot: var(--fm-space-2);
  --fc-chev: var(--fm-space-3);
  --fc-vote: var(--fm-tap-min);
}
body.fd-design :is([class^="fm-"], [class*=" fm-"]),
body.fd-design :is([class^="fm-"], [class*=" fm-"])::before,
body.fd-design :is([class^="fm-"], [class*=" fm-"])::after { box-sizing: border-box; }
/* Resets sit at zero specificity (:where) so every component rule below can set its own margin and padding. */
:where(body.fd-design) :where(h1, h2, h3, h4, p, ul, ol, dl, dd, figure):where([class^="fm-"], [class*=" fm-"]) { margin: 0; }
:where(body.fd-design) :where(ul, ol):where(.fm-list, .fm-thread, .fm-thread__children, .fm-checklist, .fm-chatlist, .fm-kanban__cards, .fm-stepper, .fm-avatar-stack) { list-style: none; padding: 0; }
body.fd-design .fm-icon,
body.fd-design :is(.fm-btn, .fm-chip, .fm-badge, .fm-lock, .fm-urgency, .fm-countdown, .fm-reaction, .fm-search, .fm-empty__icon, .fm-summary__label) > svg { width: var(--fc-icon); height: var(--fc-icon); flex: none; }
body.fd-design .fm-visually-hidden { position: absolute; width: var(--fc-hair); height: var(--fc-hair); margin: calc(var(--fc-hair) * -1); padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }

/* ---------- 1. Focus (every interactive component) ---------- */
body.fd-design :is(a, button, input, select, textarea, summary, [tabindex]):is([class^="fm-"], [class*=" fm-"]):focus-visible,
body.fd-design .fm-field :is(input, select, textarea):focus-visible,
body.fd-design :is(.fm-search, .fm-composer):focus-within {
  outline: var(--fc-ring) solid var(--fm-focus-ring);
  outline-offset: var(--fc-ring);
}
body.fd-design :is(.fm-search, .fm-composer) :is(input, textarea):focus-visible { outline: 0; }
body.fd-design :is(.fm-crumbs a, .fm-stepper button, .fm-stepper a):focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: calc(var(--fc-ring) * -1); }

/* ---------- 2. Page frame and headings ---------- */
body.fd-design .fm-page { max-width: var(--fm-page-max); margin: 0 auto; padding: var(--fm-space-4) var(--fm-gutter-mobile); color: var(--fm-ink); font-family: var(--fm-font-sans); font-size: var(--fm-text-md); line-height: 1.5; }
@media (min-width: 761px) { body.fd-design .fm-page { padding-inline: var(--fm-gutter); } }
body.fd-design .fm-page__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--fm-space-3); margin-block: var(--fm-space-3) var(--fm-space-5); }
body.fd-design .fm-page__title { font-size: var(--fm-text-2xl); line-height: 1.2; font-weight: var(--fm-weight-bold); color: var(--fm-ink); overflow-wrap: anywhere; }
body.fd-design .fm-page__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2); }
body.fd-design .fm-section { display: grid; gap: var(--fm-space-3); }
body.fd-design .fm-section__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--fm-space-2) var(--fm-space-3); }
body.fd-design .fm-section__title { font-size: var(--fm-text-xl); line-height: 1.25; font-weight: var(--fm-weight-semibold); color: var(--fm-ink); }
body.fd-design .fm-section__meta { font-size: var(--fm-text-md); color: var(--fm-ink-3); }

/* ---------- 3. Actions ---------- */
body.fd-design .fm-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--fm-space-2);
  min-height: var(--fm-tap-min); max-width: 100%; padding: var(--fm-space-2) var(--fm-space-5);
  border: var(--fc-bold) solid transparent; border-radius: var(--fm-radius-pill);
  background: transparent; color: var(--fm-ink);
  font-family: var(--fm-font-sans); font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); line-height: 1.25;
  text-align: center; text-decoration: none; cursor: pointer;
  transition: background var(--fm-motion-fast) var(--fm-ease), border-color var(--fm-motion-fast) var(--fm-ease), color var(--fm-motion-fast) var(--fm-ease), box-shadow var(--fm-motion-fast) var(--fm-ease);
}
body.fd-design .fm-btn--primary { background: var(--fm-action); border-color: var(--fm-action); color: var(--fm-action-ink); }
body.fd-design .fm-btn--primary:hover { background: var(--fm-action-hover); border-color: var(--fm-action-hover); color: var(--fm-action-ink); text-decoration: none; }
body.fd-design .fm-btn--secondary { background: var(--fm-surface); border-color: var(--fm-ink); color: var(--fm-ink); }
body.fd-design .fm-btn--secondary:hover { background: var(--fm-surface-alt); text-decoration: none; }
body.fd-design .fm-btn--text { padding-inline: var(--fm-space-3); border-color: transparent; background: transparent; color: var(--fm-ink); }
body.fd-design .fm-btn--text:hover { background: var(--fm-surface-alt); text-decoration: underline; }
body.fd-design .fm-btn--danger { background: var(--fm-surface); border-color: var(--fm-urgent); color: var(--fm-urgent); }
body.fd-design .fm-btn--danger:hover { background: var(--fm-urgent-soft); }
body.fd-design .fm-btn--sm { padding: var(--fm-space-1) var(--fm-space-3); font-size: var(--fm-text-sm); }
body.fd-design .fm-btn--block { display: flex; width: 100%; }
body.fd-design .fm-btn:is(:disabled, [aria-disabled="true"]) { cursor: not-allowed; background: var(--fm-surface-alt); border-color: var(--fm-line); color: var(--fm-ink-3); box-shadow: none; text-decoration: none; }
body.fd-design .fm-btn--text:is(:disabled, [aria-disabled="true"]) { background: transparent; border-color: transparent; }
body.fd-design .fm-btn[aria-busy="true"] { cursor: progress; }

/* ---------- 4. Avatars and presence ---------- */
body.fd-design .fm-avatar {
  position: relative; display: inline-grid; place-items: center; flex: none;
  width: var(--fc-avatar); height: var(--fc-avatar); border-radius: var(--fm-radius-pill);
  background: var(--fm-ink); color: var(--fm-on-dark);
  font-size: var(--fm-text-xs); font-weight: var(--fm-weight-bold); line-height: 1; text-transform: uppercase;
}
body.fd-design .fm-avatar[data-size="lg"] { width: var(--fc-avatar-lg); height: var(--fc-avatar-lg); font-size: var(--fm-text-sm); }
body.fd-design .fm-avatar[data-tone="2"] { background: var(--fm-success); }
body.fd-design .fm-avatar[data-tone="3"] { background: var(--fm-pro); }
body.fd-design .fm-avatar[data-tone="4"] { background: var(--fm-urgent); }
body.fd-design .fm-avatar[data-tone="5"] { background: var(--fm-warn); }
body.fd-design .fm-avatar > img { width: 100%; height: 100%; border-radius: inherit; object-fit: cover; }
body.fd-design .fm-avatar > .fm-presence { position: absolute; right: calc(var(--fc-hair) * -1); bottom: calc(var(--fc-hair) * -1); }
body.fd-design .fm-avatar-stack { display: inline-flex; align-items: center; margin: 0; padding: 0; }
body.fd-design .fm-avatar-stack > li { display: inline-flex; margin: 0; }
body.fd-design .fm-avatar-stack > li + li { margin-inline-start: calc(var(--fm-space-1) * -1.5); }
body.fd-design .fm-avatar-stack .fm-avatar { border: var(--fc-bold) solid var(--fm-surface); }
body.fd-design .fm-avatar-stack .fm-avatar[data-more] { background: var(--fm-info-soft); color: var(--fm-ink); }
body.fd-design .fm-presence { display: inline-block; flex: none; width: var(--fc-dot); height: var(--fc-dot); border-radius: var(--fm-radius-pill); background: var(--fm-line-strong); outline: var(--fc-bold) solid var(--fm-surface); }
body.fd-design .fm-presence[data-status="online"] { background: var(--fm-success); }
body.fd-design .fm-presence[data-status="away"] { background: var(--fm-warn); }
body.fd-design .fm-presence-text { display: inline-flex; align-items: center; gap: var(--fm-space-1); color: var(--fm-success); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); }
body.fd-design .fm-presence-text .fm-presence { outline: 0; }

/* ---------- 5. Chevron breadcrumb and stepper (arrow-segment bars) ---------- */
body.fd-design :is(.fm-crumbs > ol, ol.fm-stepper) { display: flex; flex-wrap: wrap; gap: var(--fc-bold) 0; margin: 0; padding: 0; list-style: none; }
body.fd-design :is(.fm-crumbs > ol, ol.fm-stepper) > li {
  position: relative; display: inline-flex; align-items: center; min-height: var(--fm-tap-min); margin: 0;
  padding-inline: calc(var(--fm-space-3) + var(--fc-chev));
  background: var(--fm-info-soft); color: var(--fm-ink);
  font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); line-height: 1.2; white-space: nowrap;
  clip-path: polygon(0 0, calc(100% - var(--fc-chev)) 0, 100% 50%, calc(100% - var(--fc-chev)) 100%, 0 100%, var(--fc-chev) 50%);
}
body.fd-design :is(.fm-crumbs > ol, ol.fm-stepper) > li + li { margin-inline-start: calc(var(--fc-chev) * -1 + var(--fc-bold)); }
body.fd-design :is(.fm-crumbs > ol, ol.fm-stepper) > li:first-child {
  padding-inline-start: var(--fm-space-4);
  clip-path: polygon(0 0, calc(100% - var(--fc-chev)) 0, 100% 50%, calc(100% - var(--fc-chev)) 100%, 0 100%);
  border-start-start-radius: var(--fm-radius-sm); border-end-start-radius: var(--fm-radius-sm);
}
body.fd-design .fm-crumbs > ol > li:not(:first-child):not([aria-current]),
body.fd-design ol.fm-stepper > li[data-state="done"] { background: var(--fm-accent-soft); color: var(--fm-chip-selected-ink); }
body.fd-design :is(.fm-crumbs > ol, ol.fm-stepper) > li:is([aria-current="page"], [aria-current="step"]) { background: var(--fm-nav-active-bg); color: var(--fm-nav-active-ink); }
body.fd-design :is(.fm-crumbs > ol, ol.fm-stepper) > li > :is(a, button) { display: inline-flex; align-items: center; align-self: stretch; min-height: var(--fm-tap-min); margin-inline: calc(var(--fm-space-3) * -1); padding-inline: var(--fm-space-3); border: 0; background: none; color: inherit; font: inherit; text-decoration: none; cursor: pointer; }
body.fd-design :is(.fm-crumbs > ol, ol.fm-stepper) > li > :is(a, button):hover { text-decoration: underline; }
body.fd-design :is(.fm-crumbs, .fm-stepper) { max-width: 100%; }

/* ---------- 6. Surfaces ---------- */
body.fd-design .fm-card { display: block; min-width: 0; padding: var(--fm-space-5); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-lg); box-shadow: var(--fm-shadow-1); }
body.fd-design .fm-card--alt { background: var(--fm-surface-alt); }
body.fd-design .fm-card--dashed { background: var(--fm-surface-alt); border-style: dashed; border-color: var(--fm-line-strong); box-shadow: none; }
body.fd-design .fm-card--flat { box-shadow: none; }
body.fd-design .fm-card--interactive { cursor: pointer; text-decoration: none; transition: box-shadow var(--fm-motion-base) var(--fm-ease), border-color var(--fm-motion-base) var(--fm-ease); }
body.fd-design .fm-card--interactive:hover { box-shadow: var(--fm-shadow-2); border-color: var(--fm-line-strong); }
body.fd-design .fm-card__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--fm-space-2) var(--fm-space-3); margin-bottom: var(--fm-space-3); }
body.fd-design .fm-card__title { font-size: var(--fm-text-lg); line-height: 1.3; font-weight: var(--fm-weight-semibold); color: var(--fm-ink); }
body.fd-design .fm-card__meta { font-size: var(--fm-text-sm); line-height: 1.4; color: var(--fm-ink-3); }
body.fd-design .fm-card__body { color: var(--fm-ink-2); font-size: var(--fm-text-md); line-height: 1.5; }
body.fd-design .fm-card__foot { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2) var(--fm-space-3); margin-top: var(--fm-space-4); }

/* ChoiceCard: label first, count second (R6). aria-pressed="true" = selected, navy (R1). */
body.fd-design .fm-choice { display: grid; align-content: start; gap: var(--fm-space-3); min-width: 0; padding: var(--fm-space-4); text-align: start; font: inherit; color: var(--fm-ink); background: var(--fm-surface); border: var(--fc-bold) solid var(--fm-line); border-radius: var(--fm-radius-xl); box-shadow: var(--fm-shadow-1); cursor: pointer; text-decoration: none; transition: box-shadow var(--fm-motion-base) var(--fm-ease), border-color var(--fm-motion-base) var(--fm-ease); }
body.fd-design .fm-choice:hover { box-shadow: var(--fm-shadow-2); border-color: var(--fm-line-strong); }
body.fd-design .fm-choice__media { display: grid; place-items: center; min-height: calc(var(--fm-space-8) * 2); border-radius: var(--fm-radius-lg); background: var(--fm-accent-soft); color: var(--fm-accent-ink); }
body.fd-design .fm-choice__media > svg { width: var(--fm-space-8); height: var(--fm-space-8); }
body.fd-design .fm-choice__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--fm-space-1) var(--fm-space-3); }
body.fd-design .fm-choice__label { font-size: var(--fm-text-lg); line-height: 1.25; font-weight: var(--fm-weight-bold); }
body.fd-design .fm-choice__count { font-size: var(--fm-text-md); color: var(--fm-ink-3); }
body.fd-design .fm-choice__sub { font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-choice__foot { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); }
body.fd-design .fm-choice__tag { display: inline-flex; padding: 0 var(--fm-space-2); border-radius: var(--fm-radius-pill); background: var(--fm-accent-soft); color: var(--fm-accent-ink); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-bold); }
body.fd-design .fm-choice[data-next="true"] { border-color: var(--fm-action); background: var(--fm-surface-alt); }
body.fd-design .fm-choice:is([aria-pressed="true"], [aria-selected="true"], [aria-current="true"]) { background: var(--fm-selected-bg); border-color: var(--fm-selected-bg); color: var(--fm-selected-ink); }
body.fd-design .fm-choice:is([aria-pressed="true"], [aria-selected="true"], [aria-current="true"]) :is(.fm-choice__count, .fm-choice__sub) { color: var(--fm-selected-ink); }
body.fd-design .fm-choice:is(:disabled, [aria-disabled="true"]) { cursor: not-allowed; background: var(--fm-surface-alt); color: var(--fm-ink-3); box-shadow: none; }

/* StatCard: big numbers on Home only (R6). */
body.fd-design .fm-stat { display: grid; gap: var(--fm-space-1); min-width: 0; padding: var(--fm-space-5); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-lg); box-shadow: var(--fm-shadow-1); text-decoration: none; }
body.fd-design :is(a, button).fm-stat:hover { box-shadow: var(--fm-shadow-2); border-color: var(--fm-line-strong); }
body.fd-design .fm-stat__label { font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); color: var(--fm-ink-2); }
body.fd-design .fm-stat__value { font-size: var(--fm-text-stat); line-height: 1.1; font-weight: var(--fm-weight-bold); color: var(--fm-ink); font-variant-numeric: tabular-nums; }
body.fd-design .fm-stat__hint { font-size: var(--fm-text-sm); color: var(--fm-ink-3); }

/* Drawer (side detail panel; data-placement="overlay" makes it a fixed sheet) and Dialog. */
body.fd-design .fm-drawer { display: block; min-width: 0; padding: var(--fm-space-5); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-bold) solid var(--fm-line-strong); border-radius: var(--fm-radius-xl); box-shadow: var(--fm-shadow-2); }
body.fd-design .fm-drawer:is([hidden], [data-open="false"]) { display: none; }
body.fd-design .fm-drawer[data-placement="overlay"] { position: fixed; inset-block: var(--fm-space-3); inset-inline-end: var(--fm-space-3); z-index: 90; width: min(100% - var(--fm-space-6), calc(var(--fm-rail-right) + var(--fm-space-8) * 2)); overflow: auto; }
body.fd-design .fm-drawer__head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--fm-space-3); margin-bottom: var(--fm-space-4); }
body.fd-design .fm-drawer__title { font-size: var(--fm-text-xl); line-height: 1.25; font-weight: var(--fm-weight-bold); }
body.fd-design .fm-drawer__body { display: grid; gap: var(--fm-space-4); }
body.fd-design .fm-drawer__close { display: inline-grid; place-items: center; flex: none; width: var(--fm-tap-min); height: var(--fm-tap-min); padding: 0; border: var(--fc-hair) solid var(--fm-line-strong); border-radius: var(--fm-radius-pill); background: var(--fm-surface); color: var(--fm-ink); cursor: pointer; }
body.fd-design .fm-drawer__close > svg { width: var(--fc-icon); height: var(--fc-icon); }
body.fd-design .fm-dialog { width: min(100% - var(--fm-space-6), calc(var(--fm-rail-left) + var(--fm-space-8) * 3)); max-height: 85dvh; margin: auto; padding: var(--fm-space-6); overflow: auto; background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-hair) solid var(--fm-line-strong); border-radius: var(--fm-radius-xl); box-shadow: var(--fm-shadow-2); }
body.fd-design .fm-dialog::backdrop { background: color-mix(in srgb, var(--fm-ink) 45%, transparent); }
body.fd-design .fm-dialog__title { font-size: var(--fm-text-xl); line-height: 1.25; font-weight: var(--fm-weight-bold); margin-bottom: var(--fm-space-3); }
body.fd-design .fm-dialog__body { color: var(--fm-ink-2); margin-bottom: var(--fm-space-5); }
body.fd-design .fm-dialog__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--fm-space-2); }

/* ---------- 7. Inputs ---------- */
body.fd-design .fm-field { display: grid; gap: var(--fm-space-1); min-width: 0; }
body.fd-design .fm-field__label { font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); color: var(--fm-ink-2); }
body.fd-design .fm-field :is(input:not([type="checkbox"], [type="radio"]), select, textarea), body.fd-design .fm-field__control {
  width: 100%; min-height: var(--fm-tap-min); padding: var(--fm-space-2) var(--fm-space-4);
  font-family: var(--fm-font-sans); font-size: var(--fm-text-md); color: var(--fm-ink);
  background: var(--fm-surface); border: var(--fc-hair) solid var(--fm-line-strong); border-radius: var(--fm-radius-md);
}
body.fd-design .fm-field textarea { min-height: calc(var(--fm-tap-min) * 2); resize: vertical; }
body.fd-design .fm-field ::placeholder { color: var(--fm-ink-3); opacity: 1; }
body.fd-design .fm-field__hint { font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-field__error { font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); color: var(--fm-urgent); }
body.fd-design .fm-field__error:empty { display: none; }
body.fd-design .fm-field :is(input, select, textarea)[aria-invalid="true"] { border-color: var(--fm-urgent); border-width: var(--fc-bold); }
body.fd-design .fm-field :is(input, select, textarea):disabled { background: var(--fm-surface-alt); color: var(--fm-ink-3); cursor: not-allowed; }

body.fd-design .fm-search, body.fd-design .fm-composer__field { display: flex; align-items: center; gap: var(--fm-space-2); min-width: 0; min-height: var(--fm-tap-min); padding: 0 var(--fm-space-4); background: var(--fm-surface); color: var(--fm-ink-3); border: var(--fc-bold) solid var(--fm-line); border-radius: var(--fm-radius-pill); }
body.fd-design .fm-search:hover, body.fd-design .fm-composer__field:hover { border-color: var(--fm-line-strong); }
body.fd-design :is(.fm-search, .fm-composer__field) :is(input, textarea) { flex: 1; min-width: 0; min-height: var(--fm-tap-min); padding: 0; border: 0; background: transparent; color: var(--fm-ink); font-family: var(--fm-font-sans); font-size: var(--fm-text-md); }
body.fd-design :is(.fm-search, .fm-composer__field) ::placeholder { color: var(--fm-ink-3); opacity: 1; }

/* FilterChip (aria-pressed; two states only, R7) and SavedSearchChip. */
body.fd-design .fm-chip { display: inline-flex; align-items: center; gap: var(--fm-space-2); min-height: var(--fm-tap-min); padding: var(--fm-space-1) var(--fm-space-4); font-family: var(--fm-font-sans); font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); line-height: 1.2; color: var(--fm-ink); background: var(--fm-surface); border: var(--fc-bold) solid var(--fm-line-strong); border-radius: var(--fm-radius-pill); cursor: pointer; text-decoration: none; transition: background var(--fm-motion-fast) var(--fm-ease), border-color var(--fm-motion-fast) var(--fm-ease); }
body.fd-design .fm-chip:hover { background: var(--fm-surface-alt); text-decoration: none; }
body.fd-design .fm-chip[aria-pressed="true"] { background: var(--fm-chip-selected-bg); border-color: var(--fm-ink); color: var(--fm-chip-selected-ink); }
body.fd-design .fm-chip--saved { background: var(--fm-surface-alt); border-color: var(--fm-line); }
body.fd-design .fm-chip--saved[aria-pressed="true"] { background: var(--fm-chip-selected-bg); border-color: var(--fm-ink); }
body.fd-design .fm-chip--add { background: transparent; border-style: dashed; color: var(--fm-ink-2); }
body.fd-design .fm-chip__count { display: inline-flex; align-items: center; padding: 0 var(--fm-space-2); border-radius: var(--fm-radius-pill); background: var(--fm-accent-soft); color: var(--fm-accent-ink); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-bold); }
body.fd-design .fm-chip:is(:disabled, [aria-disabled="true"]) { cursor: not-allowed; color: var(--fm-ink-3); border-color: var(--fm-line); background: var(--fm-surface-alt); }
body.fd-design .fm-chips { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2); }

/* SegmentedControl / SortTabs (selected = "where you are", navy). */
body.fd-design :is(.fm-segmented, .fm-sorttabs) { display: inline-flex; flex-wrap: wrap; gap: var(--fm-space-1); max-width: 100%; padding: var(--fm-space-1); background: var(--fm-surface); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-xl); }
body.fd-design :is(.fm-segmented, .fm-sorttabs) > :is(button, a, label) { position: relative; display: inline-flex; align-items: center; justify-content: center; min-height: var(--fm-tap-min); min-width: var(--fm-tap-min); padding: var(--fm-space-1) var(--fm-space-4); border: 0; border-radius: var(--fm-radius-pill); background: transparent; color: var(--fm-ink-2); font-family: var(--fm-font-sans); font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); text-decoration: none; cursor: pointer; transition: background var(--fm-motion-fast) var(--fm-ease), color var(--fm-motion-fast) var(--fm-ease); }
body.fd-design :is(.fm-segmented, .fm-sorttabs) > :is(button, a, label):hover { background: var(--fm-surface-alt); color: var(--fm-ink); }
body.fd-design :is(.fm-segmented, .fm-sorttabs) > :is([aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"], [aria-current="page"]) { background: var(--fm-chip-selected-bg); color: var(--fm-chip-selected-ink); font-weight: var(--fm-weight-bold); }
body.fd-design :is(.fm-segmented, .fm-sorttabs) > label:has(input:checked) { background: var(--fm-chip-selected-bg); color: var(--fm-chip-selected-ink); font-weight: var(--fm-weight-bold); }
body.fd-design :is(.fm-segmented, .fm-sorttabs) > label:has(input:focus-visible) { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: var(--fc-ring); }
body.fd-design :is(.fm-segmented, .fm-sorttabs) > label > input { position: absolute; opacity: 0; width: var(--fc-hair); height: var(--fc-hair); }

/* Tabs (underline). */
body.fd-design .fm-tabs { display: flex; flex-wrap: wrap; gap: var(--fm-space-1) var(--fm-space-5); border-bottom: var(--fc-hair) solid var(--fm-line); }
body.fd-design .fm-tab { display: inline-flex; align-items: center; gap: var(--fm-space-2); min-height: var(--fm-tap-min); padding: var(--fm-space-2) 0; margin-bottom: calc(var(--fc-bold) * -1); border: 0; border-bottom: var(--fc-bold) solid transparent; background: transparent; color: var(--fm-ink-2); font-family: var(--fm-font-sans); font-size: var(--fm-text-md); font-weight: var(--fm-weight-medium); text-decoration: none; cursor: pointer; }
body.fd-design .fm-tab:hover { color: var(--fm-ink); border-bottom-color: var(--fm-line-strong); }
body.fd-design .fm-tab:is([aria-selected="true"], [aria-current="page"]) { color: var(--fm-ink); font-weight: var(--fm-weight-bold); border-bottom-color: var(--fm-ink); }

/* RequirementToggle ("I can do this"), Checklist item and Switch. Checkbox look is shared. */
body.fd-design :is(.fm-toggle__input, .fm-checklist__input) { appearance: none; -webkit-appearance: none; display: inline-grid; place-content: center; flex: none; width: var(--fc-icon); height: var(--fc-icon); margin: 0; background: var(--fm-surface); border: var(--fc-bold) solid var(--fm-line-strong); border-radius: var(--fm-radius-sm); cursor: pointer; }
body.fd-design :is(.fm-toggle__input, .fm-checklist__input)::after { content: ""; width: calc(var(--fc-icon) * .6); height: calc(var(--fc-icon) * .6); background: var(--fm-on-dark); clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%); transform: scale(0); transition: transform var(--fm-motion-fast) var(--fm-ease); }
body.fd-design :is(.fm-toggle__input, .fm-checklist__input):checked { background: var(--fm-success); border-color: var(--fm-success); }
body.fd-design :is(.fm-toggle__input, .fm-checklist__input):checked::after { transform: scale(1); }
body.fd-design :is(.fm-toggle__input, .fm-checklist__input):focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: var(--fc-ring); }
body.fd-design :is(.fm-toggle__input, .fm-checklist__input):disabled { cursor: not-allowed; opacity: .6; }
body.fd-design :is(.fm-toggle__input, .fm-checklist__input):disabled:not(:checked) { background: var(--fm-surface-alt); border-color: var(--fm-line); }
body.fd-design .fm-toggle { display: flex; align-items: center; gap: var(--fm-space-3); min-height: var(--fm-tap-min); min-width: 0; padding: var(--fm-space-3) var(--fm-space-4); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-bold) solid var(--fm-line); border-radius: var(--fm-radius-lg); cursor: pointer; }
body.fd-design .fm-toggle:hover { border-color: var(--fm-line-strong); }
body.fd-design .fm-toggle:is(:has(.fm-toggle__input:checked), [aria-checked="true"]) { background: var(--fm-surface-alt); border-color: var(--fm-ink); }
body.fd-design .fm-toggle__text { display: grid; min-width: 0; }
body.fd-design .fm-toggle__title { font-size: var(--fm-text-lg); line-height: 1.25; font-weight: var(--fm-weight-bold); overflow-wrap: anywhere; }
body.fd-design .fm-toggle__hint { font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-switch { display: flex; align-items: center; justify-content: space-between; gap: var(--fm-space-4); min-height: var(--fm-tap-min); cursor: pointer; }
body.fd-design .fm-switch__text { display: grid; min-width: 0; }
body.fd-design .fm-switch__title { font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); }
body.fd-design .fm-switch__hint { font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-switch__input { appearance: none; -webkit-appearance: none; position: relative; flex: none; width: calc(var(--fm-space-7) + var(--fm-space-2)); height: calc(var(--fm-space-6) + var(--fm-space-1)); margin: 0; border-radius: var(--fm-radius-pill); background: var(--fm-line-strong); cursor: pointer; transition: background var(--fm-motion-fast) var(--fm-ease); }
body.fd-design .fm-switch__input::after { content: ""; position: absolute; inset-block: var(--fm-space-1); inset-inline-start: var(--fm-space-1); width: calc(var(--fm-space-6) - var(--fm-space-1)); border-radius: var(--fm-radius-pill); background: var(--fm-surface); transition: transform var(--fm-motion-fast) var(--fm-ease); }
body.fd-design .fm-switch__input:checked { background: var(--fm-success); }
body.fd-design .fm-switch__input:checked::after { transform: translateX(calc(var(--fm-space-5) - var(--fm-space-1))); }
body.fd-design .fm-switch__input:focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: var(--fc-ring); }
body.fd-design .fm-switch__input:disabled { cursor: not-allowed; opacity: .5; }

/* ---------- 8. Lists ---------- */
body.fd-design .fm-list { display: grid; gap: var(--fm-space-1); margin: 0; padding: 0; }
body.fd-design .fm-list > li { margin: 0; }
body.fd-design .fm-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: var(--fm-space-1) var(--fm-space-4); width: 100%; min-height: var(--fm-tap-min); padding: var(--fm-space-3) var(--fm-space-4); margin: 0; text-align: start; font: inherit; color: var(--fm-ink); background: transparent; border: 0; border-radius: var(--fm-radius-md); text-decoration: none; cursor: default; }
body.fd-design :is(a, button).fm-row, body.fd-design .fm-row[tabindex] { cursor: pointer; }
body.fd-design :is(a, button).fm-row:hover, body.fd-design .fm-row[tabindex]:hover { background: var(--fm-surface-alt); text-decoration: none; }
body.fd-design .fm-row:is([aria-selected="true"], [aria-current="true"]) { background: var(--fm-row-selected-bg); color: var(--fm-row-selected-ink); }
body.fd-design .fm-row:is([aria-selected="true"], [aria-current="true"]) .fm-row__title { font-weight: var(--fm-weight-bold); }
body.fd-design .fm-row__main { display: grid; gap: var(--fm-space-1); min-width: 0; }
body.fd-design .fm-row__title { font-size: var(--fm-text-md); line-height: 1.35; font-weight: var(--fm-weight-semibold); color: inherit; overflow-wrap: anywhere; }
body.fd-design .fm-row__meta { font-size: var(--fm-text-sm); line-height: 1.4; color: var(--fm-ink-3); overflow-wrap: anywhere; }
body.fd-design .fm-row:is([aria-selected="true"], [aria-current="true"]) .fm-row__meta { color: var(--fm-ink-2); }
body.fd-design .fm-row__aside { display: inline-flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--fm-space-2); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); }
body.fd-design .fm-row__counts { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-1) var(--fm-space-4); font-size: var(--fm-text-sm); color: var(--fm-ink-2); }
body.fd-design .fm-row__counts > span { display: inline-flex; align-items: center; gap: var(--fm-space-1); }
body.fd-design .fm-row__counts svg { width: var(--fc-icon); height: var(--fc-icon); flex: none; }
body.fd-design .fm-list--divided > li + li, body.fd-design .fm-list--divided > .fm-row + .fm-row { border-top: var(--fc-hair) solid var(--fm-line); }

/* Badges: TypeBadge, RoleBadge, CertBadge, ProTag. justify-self keeps chips from stretching when a card is a grid. */
body.fd-design :is(.fm-badge, .fm-urgency, .fm-typing, .fm-lock, .fm-presence-text) { justify-self: start; }
body.fd-design .fm-badge { display: inline-flex; align-items: center; gap: var(--fm-space-1); padding: 0 var(--fm-space-2); border-radius: var(--fm-radius-pill); background: var(--fm-info-soft); color: var(--fm-ink); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); line-height: 1.6; white-space: nowrap; }
body.fd-design .fm-badge--type { background: var(--fm-info-soft); color: var(--fm-ink); }
body.fd-design .fm-badge--role { background: var(--fm-accent-soft); color: var(--fm-accent-ink); }
body.fd-design .fm-badge--role[data-role="prime"] { background: var(--fm-action); color: var(--fm-action-ink); }
body.fd-design .fm-badge--role[data-role="sub"] { background: var(--fm-info-soft); color: var(--fm-ink); }
body.fd-design .fm-badge--cert { background: var(--fm-success-soft); color: var(--fm-success); }
body.fd-design .fm-badge--pro { background: var(--fm-pro-soft); color: var(--fm-pro); }
body.fd-design .fm-badge--success { background: var(--fm-success-soft); color: var(--fm-success); }
body.fd-design .fm-badge--urgent { background: var(--fm-urgent-soft); color: var(--fm-urgent); }
body.fd-design .fm-badge--warn { background: var(--fm-warn-soft); color: var(--fm-warn); }

/* UrgencyChip (R5: <=48h urgent, <=7 days warn, later neutral). */
body.fd-design .fm-urgency { display: inline-flex; align-items: center; gap: var(--fm-space-1); padding: 0 var(--fm-space-2); border: var(--fc-hair) solid transparent; border-radius: var(--fm-radius-pill); background: transparent; color: var(--fm-ink-3); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); line-height: 1.6; white-space: nowrap; }
body.fd-design .fm-urgency[data-level="urgent"] { background: var(--fm-urgent-soft); color: var(--fm-urgent); }
body.fd-design .fm-urgency[data-level="warn"] { background: var(--fm-warn-soft); color: var(--fm-warn); }
body.fd-design .fm-urgency[data-level="none"] { border-color: var(--fm-line); color: var(--fm-ink-2); }

/* ---------- 9. Content blocks ---------- */
body.fd-design .fm-factline { display: flex; flex-wrap: wrap; gap: var(--fm-space-1) var(--fm-space-5); margin: 0; padding: var(--fm-space-3) var(--fm-space-4); background: var(--fm-surface-alt); border-radius: var(--fm-radius-md); font-size: var(--fm-text-sm); color: var(--fm-ink-2); }
body.fd-design .fm-factline__item { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: var(--fm-space-1); margin: 0; min-width: 0; }
body.fd-design .fm-factline__label { color: var(--fm-ink-3); font-weight: var(--fm-weight-regular); }
body.fd-design .fm-factline__value { margin: 0; color: var(--fm-ink); font-weight: var(--fm-weight-semibold); overflow-wrap: anywhere; }
body.fd-design .fm-countdown { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2); padding: var(--fm-space-2) var(--fm-space-4); border-radius: var(--fm-radius-md); background: var(--fm-info-soft); color: var(--fm-ink); font-size: var(--fm-text-md); font-weight: var(--fm-weight-bold); }
body.fd-design .fm-countdown[data-level="urgent"] { background: var(--fm-urgent-soft); color: var(--fm-urgent); }
body.fd-design .fm-countdown[data-level="warn"] { background: var(--fm-warn-soft); color: var(--fm-warn); }
body.fd-design .fm-countdown__time { font-weight: var(--fm-weight-medium); }

/* SummaryCard: data-state pending | loading | ready | failed. */
body.fd-design .fm-summary { display: grid; gap: var(--fm-space-2); padding: var(--fm-space-4) var(--fm-space-5); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-lg); }
body.fd-design .fm-summary__label { display: inline-flex; align-items: center; gap: var(--fm-space-2); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-bold); color: var(--fm-pro); }
body.fd-design .fm-summary__body { color: var(--fm-ink-2); line-height: 1.55; }
body.fd-design .fm-summary[data-state="pending"] { background: var(--fm-surface-alt); border-style: dashed; border-color: var(--fm-line-strong); }
body.fd-design .fm-summary[data-state="loading"] { background: var(--fm-surface-alt); }
body.fd-design .fm-summary[data-state="ready"] { border-color: var(--fm-pro); }
body.fd-design .fm-summary[data-state="failed"] { background: var(--fm-urgent-soft); border-color: var(--fm-urgent); }
body.fd-design .fm-summary[data-state="failed"] .fm-summary__body { color: var(--fm-ink); }

/* EmptyState (title + one line + optional action). */
body.fd-design .fm-empty { display: grid; justify-items: center; gap: var(--fm-space-2); padding: var(--fm-space-6) var(--fm-space-5); text-align: center; background: var(--fm-surface); color: var(--fm-ink-2); border: var(--fc-bold) dashed var(--fm-line-strong); border-radius: var(--fm-radius-lg); }
body.fd-design .fm-empty__icon { display: grid; place-items: center; width: var(--fc-avatar-lg); height: var(--fc-avatar-lg); border-radius: var(--fm-radius-pill); background: var(--fm-accent-soft); color: var(--fm-accent-ink); }
body.fd-design .fm-empty__title { font-size: var(--fm-text-lg); font-weight: var(--fm-weight-semibold); color: var(--fm-ink); }
body.fd-design .fm-empty__text { max-width: 48ch; font-size: var(--fm-text-md); color: var(--fm-ink-2); }
body.fd-design .fm-empty__action { margin-top: var(--fm-space-2); }
body.fd-design .fm-empty[data-tone="error"] { border-color: var(--fm-urgent); background: var(--fm-urgent-soft); }

/* SourceRow (C8): where each fact came from. Notice, attachments and amendments, each with its official link. */
body.fd-design .fm-sources { padding: var(--fm-space-4) var(--fm-space-5); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-lg); }
body.fd-design .fm-sources__title { font-size: var(--fm-text-md); font-weight: var(--fm-weight-bold); color: var(--fm-ink); }
body.fd-design .fm-sources__label { font-size: var(--fm-text-sm); font-weight: var(--fm-weight-bold); color: var(--fm-ink-2); }
body.fd-design .fm-sources__item { font-size: var(--fm-text-md); color: var(--fm-ink); overflow-wrap: anywhere; }
body.fd-design .fm-sources__name { font-weight: var(--fm-weight-semibold); color: var(--fm-ink); }
body.fd-design .fm-sources__meta { font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-sources__item:focus { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: var(--fc-ring); }

/* LoadingSkeleton. */
body.fd-design .fm-skeleton { display: block; min-height: var(--fm-space-4); border-radius: var(--fm-radius-sm); background: var(--fm-line); animation: fm-pulse calc(var(--fm-motion-base) * 8) var(--fm-ease) infinite alternate; }
body.fd-design .fm-skeleton--title { min-height: var(--fm-space-5); width: 60%; }
body.fd-design .fm-skeleton--text { width: 100%; }
body.fd-design .fm-skeleton--short { width: 40%; }
body.fd-design .fm-skeleton--circle { width: var(--fc-avatar); height: var(--fc-avatar); border-radius: var(--fm-radius-pill); }
body.fd-design .fm-skeleton--block { min-height: calc(var(--fm-space-8) * 2); border-radius: var(--fm-radius-lg); }
body.fd-design .fm-skeleton-group { display: grid; gap: var(--fm-space-2); }
@keyframes fm-pulse { from { opacity: 1; } to { opacity: .45; } }

/* Progress (native <progress>) and CoverageMeter (native <meter>). */
body.fd-design :is(progress.fm-progress, meter.fm-meter) { appearance: none; -webkit-appearance: none; display: block; width: 100%; height: var(--fm-space-2); border: 0; border-radius: var(--fm-radius-pill); background: var(--fm-line); overflow: hidden; }
body.fd-design progress.fm-progress::-webkit-progress-bar, body.fd-design meter.fm-meter::-webkit-meter-bar { background: var(--fm-line); border: 0; border-radius: var(--fm-radius-pill); }
body.fd-design progress.fm-progress::-webkit-progress-value { background: var(--fm-action); border-radius: var(--fm-radius-pill); }
body.fd-design progress.fm-progress::-moz-progress-bar { background: var(--fm-action); border-radius: var(--fm-radius-pill); }
body.fd-design meter.fm-meter::-webkit-meter-optimum-value, body.fd-design meter.fm-meter::-webkit-meter-suboptimum-value, body.fd-design meter.fm-meter::-webkit-meter-even-less-good-value { background: var(--fm-action); border-radius: var(--fm-radius-pill); }
body.fd-design meter.fm-meter::-moz-meter-bar { background: var(--fm-action); border-radius: var(--fm-radius-pill); }
body.fd-design .fm-meter-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2) var(--fm-space-3); }
body.fd-design .fm-meter-row > :is(progress, meter) { flex: 1 1 calc(var(--fm-space-8) * 2); width: auto; }
body.fd-design .fm-meter-row__label { font-size: var(--fm-text-md); color: var(--fm-ink-2); }

/* Checklist (Before you submit). */
body.fd-design .fm-checklist { display: grid; gap: var(--fm-space-2); margin: 0; padding: 0; }
body.fd-design .fm-checklist > li { margin: 0; }
body.fd-design .fm-checklist__item { display: flex; align-items: center; gap: var(--fm-space-3); min-height: var(--fm-tap-min); padding: var(--fm-space-2) var(--fm-space-4); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-bold) solid var(--fm-line); border-radius: var(--fm-radius-md); font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); cursor: pointer; }
body.fd-design .fm-checklist__item:has(.fm-checklist__input:checked) { background: var(--fm-surface-alt); border-color: var(--fm-ink); }

/* ProLock (gated action). */
body.fd-design .fm-lock { display: inline-flex; align-items: center; gap: var(--fm-space-2); min-height: var(--fm-tap-min); padding: var(--fm-space-1) var(--fm-space-4); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-bold) dashed var(--fm-pro); border-radius: var(--fm-radius-pill); font-family: var(--fm-font-sans); font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); text-decoration: none; cursor: pointer; }
body.fd-design .fm-lock:hover { background: var(--fm-pro-soft); text-decoration: none; }
body.fd-design .fm-lock[aria-disabled="true"] { cursor: not-allowed; }

/* PlanCard / plan tile. Names come from tier.js only. aria-current="true" = your plan. */
body.fd-design .fm-plan-tile { display: grid; align-content: start; gap: var(--fm-space-2); min-width: 0; padding: var(--fm-space-5); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-bold) solid var(--fm-line); border-radius: var(--fm-radius-xl); box-shadow: var(--fm-shadow-1); }
body.fd-design .fm-plan-tile__name { font-size: var(--fm-text-xl); font-weight: var(--fm-weight-bold); }
body.fd-design .fm-plan-tile__text { font-size: var(--fm-text-md); color: var(--fm-ink-2); }
body.fd-design .fm-plan-tile__price { font-size: var(--fm-text-lg); font-weight: var(--fm-weight-bold); }
body.fd-design .fm-plan-tile[data-plan="basic"] { background: var(--fm-accent-soft); border-color: var(--fm-accent-ink); color: var(--fm-chip-selected-ink); }
body.fd-design .fm-plan-tile[data-plan="basic"] .fm-plan-tile__text { color: var(--fm-chip-selected-ink); }
body.fd-design .fm-plan-tile[data-plan="pro"] { background: var(--fm-pro-soft); border-color: var(--fm-pro); }
body.fd-design .fm-plan-tile[data-plan="pro-ai"] { background: var(--fm-pro-soft); border-color: var(--fm-pro); border-style: dashed; }
body.fd-design .fm-plan-tile:is([data-plan="pro"], [data-plan="pro-ai"]) .fm-plan-tile__name { color: var(--fm-pro); }
body.fd-design .fm-plan-tile[aria-current="true"] { background: var(--fm-selected-bg); border-color: var(--fm-selected-bg); border-style: solid; color: var(--fm-selected-ink); }
body.fd-design .fm-plan-tile[aria-current="true"] :is(.fm-plan-tile__name, .fm-plan-tile__text, .fm-plan-tile__price) { color: var(--fm-selected-ink); }
body.fd-design .fm-plan-tile__list { margin: 0; padding-inline-start: var(--fm-space-5); display: grid; gap: var(--fm-space-1); font-size: var(--fm-text-sm); }
body.fd-design .fm-plan-tile__foot { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2); margin-top: var(--fm-space-2); }
body.fd-design .fm-plan-tile__note { margin: 0; font-size: var(--fm-text-sm); }
body.fd-design .fm-plan-tile__sub { margin: 0; font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-plan-tile[aria-current="true"] :is(.fm-plan-tile__list, .fm-plan-tile__note, .fm-plan-tile__sub, .fm-plan-tile__price small, .fm-plan-tile__list li) { color: var(--fm-selected-ink); }
body.fd-design .fm-plan-tile[aria-current="true"] .fm-btn--secondary { background: var(--fm-surface); color: var(--fm-ink); }

/* ---------- 10. Social ---------- */
body.fd-design .fm-thread { display: grid; gap: var(--fm-space-3); margin: 0; padding: 0; }
body.fd-design .fm-thread > li { margin: 0; }
body.fd-design .fm-thread__children { display: grid; gap: var(--fm-space-3); margin: var(--fm-space-3) 0 0 var(--fm-space-5); padding: 0 0 0 var(--fm-space-4); border-inline-start: var(--fc-bold) solid var(--fm-line-strong); list-style: none; }
body.fd-design .fm-thread__children > li { margin: 0; }
body.fd-design .fm-post { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--fm-space-3); min-width: 0; padding: var(--fm-space-4); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-lg); }
body.fd-design .fm-post:not(:has(> .fm-vote)) { grid-template-columns: minmax(0, 1fr); }
body.fd-design .fm-post--bot { background: var(--fm-pro-soft); border: var(--fc-bold) dashed var(--fm-pro); }
body.fd-design .fm-post[data-accepted="true"] { background: var(--fm-success-soft); border-color: var(--fm-success); }
body.fd-design .fm-post[data-highlight="true"] { background: var(--fm-surface-alt); border-color: var(--fm-action); border-width: var(--fc-bold); }
body.fd-design .fm-post__main { display: grid; gap: var(--fm-space-2); min-width: 0; }
body.fd-design .fm-post__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-1) var(--fm-space-2); font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-post__author { font-weight: var(--fm-weight-bold); color: var(--fm-ink); font-size: var(--fm-text-md); }
body.fd-design .fm-post__title { font-size: var(--fm-text-lg); line-height: 1.3; font-weight: var(--fm-weight-bold); overflow-wrap: anywhere; }
body.fd-design .fm-post__body { color: var(--fm-ink-2); line-height: 1.55; overflow-wrap: anywhere; }
body.fd-design .fm-post__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-1) var(--fm-space-2); font-size: var(--fm-text-sm); }
body.fd-design .fm-vote { display: inline-flex; flex-direction: column; align-items: center; align-self: start; gap: 0; }
body.fd-design .fm-vote__btn { display: inline-grid; place-items: center; width: var(--fc-vote); height: var(--fc-vote); padding: 0; border: 0; border-radius: var(--fm-radius-pill); background: transparent; color: var(--fm-ink-2); cursor: pointer; }
body.fd-design .fm-vote__btn:hover { background: var(--fm-surface-alt); color: var(--fm-ink); }
body.fd-design .fm-vote__btn[aria-pressed="true"] { background: var(--fm-accent-soft); color: var(--fm-accent-ink); }
body.fd-design .fm-vote__btn > svg { width: var(--fc-icon); height: var(--fc-icon); }
body.fd-design .fm-vote__count { font-size: var(--fm-text-md); font-weight: var(--fm-weight-bold); font-variant-numeric: tabular-nums; }

body.fd-design .fm-composer { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2) var(--fm-space-3); padding: var(--fm-space-3); background: var(--fm-surface); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-xl); }
body.fd-design .fm-composer__field { flex: 1 1 calc(var(--fm-space-8) * 3); }
body.fd-design .fm-composer__field:focus-within { outline: 0; }
body.fd-design .fm-composer__actions { display: inline-flex; align-items: center; gap: var(--fm-space-2); }

body.fd-design .fm-feed-item { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: start; gap: var(--fm-space-3); padding: var(--fm-space-3) 0; color: var(--fm-ink); }
body.fd-design .fm-feed-item__text { min-width: 0; font-size: var(--fm-text-md); line-height: 1.4; overflow-wrap: anywhere; }
body.fd-design .fm-feed-item__text strong { font-weight: var(--fm-weight-bold); }
body.fd-design .fm-feed-item__time { font-size: var(--fm-text-sm); color: var(--fm-ink-3); white-space: nowrap; }

body.fd-design .fm-tracking { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2) var(--fm-space-4); padding: var(--fm-space-3) var(--fm-space-4); background: var(--fm-surface-alt); border-radius: var(--fm-radius-md); color: var(--fm-ink); font-size: var(--fm-text-md); }
body.fd-design .fm-tracking__count { font-weight: var(--fm-weight-bold); }
body.fd-design .fm-tracking__action { margin-inline-start: auto; }

body.fd-design .fm-chatlist { display: grid; gap: var(--fm-space-1); margin: 0; padding: 0; }
body.fd-design .fm-chatlist > li { margin: 0; }
body.fd-design .fm-chatlist__item { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--fm-space-1) var(--fm-space-3); width: 100%; min-height: var(--fm-tap-min); padding: var(--fm-space-3) var(--fm-space-4); text-align: start; font: inherit; color: var(--fm-ink); background: transparent; border: 0; border-radius: var(--fm-radius-md); cursor: pointer; }
body.fd-design .fm-chatlist__item:hover { background: var(--fm-surface-alt); }
body.fd-design .fm-chatlist__item:is([aria-selected="true"], [aria-current="true"]) { background: var(--fm-row-selected-bg); color: var(--fm-row-selected-ink); }
body.fd-design .fm-chatlist__text { display: grid; min-width: 0; }
body.fd-design .fm-chatlist__name { font-size: var(--fm-text-md); font-weight: var(--fm-weight-bold); overflow-wrap: anywhere; }
body.fd-design .fm-chatlist__preview { font-size: var(--fm-text-sm); color: var(--fm-ink-3); overflow-wrap: anywhere; }
body.fd-design .fm-chatlist__item:is([aria-selected="true"], [aria-current="true"]) .fm-chatlist__preview { color: var(--fm-ink-2); }
body.fd-design .fm-chatlist__side { display: grid; justify-items: end; gap: var(--fm-space-1); font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-chatlist__unread { display: inline-grid; place-items: center; min-width: var(--fm-space-5); padding: 0 var(--fm-space-1); border-radius: var(--fm-radius-pill); background: var(--fm-action); color: var(--fm-action-ink); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-bold); }

body.fd-design .fm-bubble { display: grid; gap: var(--fm-space-1); width: fit-content; max-width: min(100%, calc(var(--fm-rail-left) + var(--fm-space-8) * 5)); padding: var(--fm-space-3) var(--fm-space-4); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-lg); line-height: 1.45; overflow-wrap: anywhere; }
body.fd-design .fm-bubble[data-from="me"] { margin-inline-start: auto; background: var(--fm-accent-soft); border-color: var(--fm-accent-soft); color: var(--fm-chip-selected-ink); }
body.fd-design .fm-bubble__meta { font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-bubble[data-from="me"] .fm-bubble__meta { color: var(--fm-chip-selected-ink); }
body.fd-design .fm-typing { display: inline-flex; align-items: center; gap: var(--fm-space-1); padding: var(--fm-space-2) var(--fm-space-3); border-radius: var(--fm-radius-pill); background: var(--fm-info-soft); }
body.fd-design .fm-typing > span { width: var(--fc-dot); height: var(--fc-dot); border-radius: var(--fm-radius-pill); background: var(--fm-ink-3); animation: fm-pulse var(--fm-motion-base) var(--fm-ease) infinite alternate; }
body.fd-design .fm-typing > span:nth-child(2) { animation-delay: var(--fm-motion-fast); }
body.fd-design .fm-typing > span:nth-child(3) { animation-delay: var(--fm-motion-base); }

body.fd-design .fm-embed { display: grid; gap: var(--fm-space-2); min-width: 0; max-width: 100%; padding: var(--fm-space-4); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-bold) solid var(--fm-ink); border-radius: var(--fm-radius-lg); text-decoration: none; }
body.fd-design a.fm-embed:hover { background: var(--fm-surface-alt); }
body.fd-design .fm-embed__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2); }
body.fd-design .fm-embed__title { font-size: var(--fm-text-lg); line-height: 1.3; font-weight: var(--fm-weight-bold); overflow-wrap: anywhere; }
body.fd-design .fm-embed__meta { font-size: var(--fm-text-sm); color: var(--fm-ink-3); overflow-wrap: anywhere; }
body.fd-design .fm-embed__code { font-family: var(--fm-font-mono); font-size: var(--fm-text-sm); color: var(--fm-ink-2); }
body.fd-design .fm-file { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--fm-space-3); max-width: 100%; padding: var(--fm-space-3) var(--fm-space-4); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-bold) solid var(--fm-line); border-radius: var(--fm-radius-lg); }
body.fd-design .fm-file__icon { display: grid; place-items: center; width: var(--fc-avatar-lg); height: var(--fc-avatar-lg); border-radius: var(--fm-radius-md); background: var(--fm-accent-soft); color: var(--fm-accent-ink); }
body.fd-design .fm-file__icon > svg { width: var(--fc-icon); height: var(--fc-icon); }
body.fd-design .fm-file__name { font-size: var(--fm-text-md); font-weight: var(--fm-weight-bold); overflow-wrap: anywhere; }
body.fd-design .fm-file__meta { font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-reaction { display: inline-flex; align-items: center; gap: var(--fm-space-1); min-height: var(--fm-tap-min); padding: 0 var(--fm-space-3); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-bold) solid var(--fm-line-strong); border-radius: var(--fm-radius-pill); font-family: var(--fm-font-sans); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-bold); cursor: pointer; }
body.fd-design .fm-reaction:hover { background: var(--fm-surface-alt); }
body.fd-design .fm-reaction[aria-pressed="true"] { background: var(--fm-chip-selected-bg); border-color: var(--fm-ink); color: var(--fm-chip-selected-ink); }

/* ---------- 11. Pipeline ---------- */
body.fd-design .fm-kanban { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(calc(var(--fm-rail-left) - var(--fm-space-6)), 1fr); gap: var(--fm-space-4); align-items: start; max-width: 100%; padding-bottom: var(--fm-space-2); overflow-x: auto; }
body.fd-design .fm-kanban__col { display: grid; gap: var(--fm-space-3); min-width: 0; padding: var(--fm-space-3); background: var(--fm-surface); border: var(--fc-bold) solid var(--fm-line); border-radius: var(--fm-radius-xl); }
body.fd-design .fm-kanban__col[aria-current="true"] { background: var(--fm-surface-alt); border-color: var(--fm-ink); }
body.fd-design .fm-kanban__head { display: flex; align-items: center; justify-content: space-between; gap: var(--fm-space-2); }
body.fd-design .fm-kanban__title { display: inline-flex; align-items: center; gap: var(--fm-space-2); font-size: var(--fm-text-lg); font-weight: var(--fm-weight-bold); }
body.fd-design .fm-kanban__title > svg { width: var(--fc-icon); height: var(--fc-icon); flex: none; }
body.fd-design .fm-kanban__count { font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); color: var(--fm-ink-3); font-variant-numeric: tabular-nums; }
body.fd-design .fm-kanban__cards { display: grid; gap: var(--fm-space-2); margin: 0; padding: 0; }
body.fd-design .fm-kanban__cards > li { margin: 0; }
body.fd-design .fm-kanban__card { display: grid; gap: var(--fm-space-2); width: 100%; min-width: 0; padding: var(--fm-space-3); text-align: start; font: inherit; color: var(--fm-ink); background: var(--fm-surface-alt); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-md); text-decoration: none; cursor: pointer; }
body.fd-design .fm-kanban__card:hover { border-color: var(--fm-line-strong); }
body.fd-design .fm-kanban__card:is([aria-selected="true"], [aria-pressed="true"]) { background: var(--fm-row-selected-bg); color: var(--fm-row-selected-ink); border-color: var(--fm-ink); border-width: var(--fc-bold); }
body.fd-design .fm-kanban__card-title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; font-size: var(--fm-text-md); line-height: 1.3; font-weight: var(--fm-weight-semibold); overflow-wrap: anywhere; }
body.fd-design .fm-kanban__card .fm-urgency { justify-self: start; }
body.fd-design .fm-kanban__card:is([aria-selected="true"], [aria-pressed="true"]) .fm-kanban__card-title { font-weight: var(--fm-weight-bold); }
body.fd-design .fm-kanban__card-meta { font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-kanban__empty { padding: var(--fm-space-4); text-align: center; border: var(--fc-bold) dashed var(--fm-line-strong); border-radius: var(--fm-radius-md); font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
/* Calendar: a month grid of due dates. fm-cal__day[data-has="true"] marks a day with items. */
body.fd-design .fm-cal { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: var(--fm-space-1); }
body.fd-design .fm-cal__dow { padding: var(--fm-space-1) 0; text-align: center; font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); color: var(--fm-ink-2); }
body.fd-design .fm-cal__day { display: grid; align-content: start; gap: var(--fm-space-1); min-width: 0; min-height: calc(var(--fm-tap-min) * 2); padding: var(--fm-space-1); background: var(--fm-surface); border: var(--fm-border-width) solid var(--fm-line); border-radius: var(--fm-radius-md); }
body.fd-design .fm-cal__day[data-has="true"] { background: var(--fm-warn-soft); border-color: var(--fm-warn); }
body.fd-design .fm-cal__blank { min-height: calc(var(--fm-tap-min) * 2); border: var(--fm-border-width) dashed var(--fm-line); border-radius: var(--fm-radius-md); opacity: .5; }
body.fd-design .fm-cal__num { font-size: var(--fm-text-sm); color: var(--fm-ink-2); }
body.fd-design .fm-cal__evt { display: block; width: 100%; min-height: var(--fm-tap-min); padding: var(--fm-space-1); text-align: start; font-family: var(--fm-font-sans); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); color: var(--fm-ink); background: var(--fm-surface); border: var(--fm-border-width) solid var(--fm-line-strong); border-radius: var(--fm-radius-sm); overflow-wrap: anywhere; cursor: pointer; } /* wraps, never clips: a calendar event title is read in full (a11y: no truncation without a way to the rest) */
body.fd-design .fm-cal__evt:hover { background: var(--fm-surface-alt); }
body.fd-design .fm-cal__evt:focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: var(--fc-ring); }

/* ---------- 11b. Additions from the page rebuilds (Home, Find work, Contract detail). One definition each, no per-page copies. ---------- */
/* Inline text link. */
body.fd-design .fm-link { color: var(--fm-ink); font-weight: var(--fm-weight-semibold); text-underline-offset: var(--fm-space-1); }
body.fd-design .fm-link:hover { color: var(--fm-accent-ink); }
/* A row whose main block is the link: reads as text, not default link blue. */
body.fd-design a.fm-row__main { color: inherit; text-decoration: none; }
body.fd-design a.fm-row__main:hover .fm-row__title { text-decoration: underline; }
/* Count inside a segmented option. */
body.fd-design :is(.fm-segmented, .fm-sorttabs) > :is(button, a) { gap: var(--fm-space-2); }
/* StatCard with a leading icon: icon left, number right, label and hint across the bottom. */
body.fd-design .fm-stat__icon { display: grid; place-items: center; width: var(--fm-tap-min); height: var(--fm-tap-min); border-radius: var(--fm-radius-pill); background: var(--fm-accent-soft); color: var(--fm-accent-ink); }
body.fd-design .fm-stat__icon > svg { width: 55%; height: 55%; }
body.fd-design .fm-stat:has(> .fm-stat__icon) { grid-template-columns: auto minmax(0, 1fr); align-items: center; column-gap: var(--fm-space-3); }
body.fd-design .fm-stat:has(> .fm-stat__icon) > .fm-stat__value { justify-self: end; text-align: end; }
body.fd-design .fm-stat:has(> .fm-stat__icon) > :is(.fm-stat__label, .fm-stat__hint) { grid-column: 1 / -1; }
/* Feed item without a leading avatar: text and time only. */
body.fd-design .fm-feed-item:not(:has(> .fm-avatar)) { grid-template-columns: minmax(0, 1fr) auto; }
body.fd-design .fm-feed-item__text:is(a) { color: inherit; text-decoration: none; }
/* Read-only checklist (stages): mark + label; data-done and aria-current="step" carry the state. */
body.fd-design .fm-checklist__item:not(:has(.fm-checklist__input)) { cursor: default; }
body.fd-design .fm-checklist__item[aria-current="step"] { background: var(--fm-row-selected-bg); color: var(--fm-row-selected-ink); }
body.fd-design .fm-checklist__mark { display: grid; place-items: center; flex: none; width: var(--fc-icon); height: var(--fc-icon); border: var(--fc-bold) solid var(--fm-line-strong); border-radius: var(--fm-radius-pill); color: var(--fm-on-dark); }
body.fd-design .fm-checklist__mark > svg { width: 70%; height: 70%; }
body.fd-design .fm-checklist__item[data-done="true"] .fm-checklist__mark { background: var(--fm-success); border-color: var(--fm-success); }
/* Requirement toggle as a button (aria-pressed) with a check box, title and state hint. */
body.fd-design button.fm-toggle { width: 100%; text-align: start; font: inherit; }
body.fd-design .fm-toggle[aria-pressed="true"] { background: var(--fm-surface-alt); border-color: var(--fm-ink); }
body.fd-design .fm-toggle:disabled { cursor: progress; }
body.fd-design .fm-toggle__check { display: grid; place-items: center; flex: none; width: var(--fc-icon); height: var(--fc-icon); padding: var(--fm-space-1); color: transparent; border: var(--fc-bold) solid var(--fm-line-strong); border-radius: var(--fm-radius-sm); }
body.fd-design .fm-toggle[aria-pressed="true"] .fm-toggle__check { color: var(--fm-on-dark); background: var(--fm-success); border-color: var(--fm-success); }
body.fd-design .fm-toggle[aria-pressed="true"] .fm-toggle__hint { color: var(--fm-success); font-weight: var(--fm-weight-semibold); }
/* Countdown for a closed or missing date: neutral. */
body.fd-design .fm-countdown:is([data-state="closed"], [data-state="empty"], [data-state="error"]) { background: var(--fm-surface-alt); color: var(--fm-ink-3); font-weight: var(--fm-weight-medium); }
body.fd-design .fm-skeleton[hidden] { display: none; }
/* Summary footnote and inline action. */
body.fd-design .fm-summary__note { font-size: var(--fm-text-sm); color: var(--fm-ink-3); }
body.fd-design .fm-summary__body > p { margin: 0; }
/* Lock shown as a note with a link (inline variant of ProLock). */
body.fd-design .fm-lock > a { color: var(--fm-pro); font-weight: var(--fm-weight-semibold); }

/* ---------- 10b. Social extras (spaces rail, rail card, divider, FAB, nested reply, muted meta) ---------- */
body.fd-design .fm-meta { margin: 0; color: var(--fm-ink-3); font-size: var(--fm-text-sm); line-height: 1.4; overflow-wrap: anywhere; }
body.fd-design .fm-meta:empty { display: none; }
/* Code: a work code or id that reads best in a fixed-width face (NAICS codes on a profile). A link or a span. */
body.fd-design .fm-code { display: inline-block; padding: 0 var(--fm-space-2); border-radius: var(--fm-radius-sm); background: var(--fm-surface-alt); color: var(--fm-ink); font-family: var(--fm-font-mono); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); line-height: 1.6; text-decoration: none; }
body.fd-design a.fm-code { min-height: var(--fm-tap-min); display: inline-flex; align-items: center; }
body.fd-design a.fm-code:hover { background: var(--fm-info-soft); text-decoration: underline; }
body.fd-design a.fm-code:focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: var(--fc-ring); }
/* NameButton: a person's name as a button that opens their card. */
body.fd-design .fm-namebtn { display: inline; min-height: var(--fm-tap-min); padding: 0; margin: 0; font: inherit; font-weight: var(--fm-weight-semibold); color: var(--fm-ink); text-align: start; text-decoration: underline; text-underline-offset: var(--fm-space-1); background: none; border: 0; cursor: pointer; }
body.fd-design .fm-namebtn:hover { color: var(--fm-action); }
body.fd-design .fm-namebtn:focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: var(--fc-ring); }
/* SettingsNav: a vertical list of section links; a scrollable row on narrow screens. */
body.fd-design .fm-sidenav { display: flex; flex-direction: column; gap: var(--fm-space-1); padding: var(--fm-space-2); background: var(--fm-surface); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-lg); font-family: var(--fm-font-sans); }
body.fd-design .fm-sidenav__item { display: flex; align-items: center; min-height: var(--fm-tap-min); padding-inline: var(--fm-space-4); border-radius: var(--fm-radius-md); color: var(--fm-ink-2); font-size: var(--fm-text-md); font-weight: var(--fm-weight-medium); text-decoration: none; background: transparent; border: 0; font-family: inherit; cursor: pointer; text-align: start; transition: background var(--fm-motion-fast) var(--fm-ease); }
body.fd-design .fm-sidenav__item:hover { background: var(--fm-surface-alt); color: var(--fm-ink); }
body.fd-design .fm-sidenav__item[aria-current="true"] { background: var(--fm-nav-active-bg); color: var(--fm-nav-active-ink); font-weight: var(--fm-weight-semibold); }
body.fd-design .fm-sidenav__item:focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: var(--fc-ring); }
@media (max-width: 1024px) {
  body.fd-design .fm-sidenav { flex-direction: row; overflow-x: auto; }
  body.fd-design .fm-sidenav__item { flex: none; white-space: nowrap; }
}
body.fd-design .fm-composer--stack { flex-direction: column; align-items: stretch; flex-wrap: nowrap; }
body.fd-design .fm-composer__title { margin: 0; font-size: var(--fm-text-lg); font-weight: var(--fm-weight-bold); color: var(--fm-ink); }
body.fd-design .fm-composer__input { width: 100%; min-height: calc(var(--fm-tap-min) * 1.5); padding: var(--fm-space-3); box-sizing: border-box; border: var(--fc-hair) solid var(--fm-line-strong); border-radius: var(--fm-radius-md); background: var(--fm-surface); color: var(--fm-ink); font-family: var(--fm-font-sans); font-size: var(--fm-text-md); line-height: 1.5; resize: vertical; }
body.fd-design .fm-composer__dest, body.fd-design .fm-composer__rules { margin: 0; color: var(--fm-ink-2); font-size: var(--fm-text-sm); }
body.fd-design .fm-composer__status { margin: 0; color: var(--fm-ink); font-size: var(--fm-text-sm); }
body.fd-design .fm-composer__status:empty { display: none; }
body.fd-design .fm-composer__gate { margin: 0; padding: var(--fm-space-3); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-md); background: var(--fm-surface-alt); font-size: var(--fm-text-sm); color: var(--fm-ink); }
body.fd-design .fm-composer--stack .fm-composer__actions { justify-content: flex-end; flex-wrap: wrap; }
body.fd-design .fm-nested { margin: var(--fm-space-3) 0 0 var(--fm-space-4); border-inline-start: var(--fc-bold) solid var(--fm-line-strong); }
body.fd-design .fm-embed__actions { display: flex; flex-wrap: wrap; gap: var(--fm-space-2); margin-top: var(--fm-space-2); }
body.fd-design .fm-bubbles { display: grid; gap: var(--fm-space-3); }
body.fd-design .fm-divider { display: flex; align-items: center; gap: var(--fm-space-3); color: var(--fm-ink-3); font-size: var(--fm-text-sm); }
body.fd-design .fm-divider::before, body.fd-design .fm-divider::after { content: ""; flex: 1; border-top: var(--fc-hair) solid var(--fm-line); }
body.fd-design .fm-spaces { padding: var(--fm-space-4); background: var(--fm-surface); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-lg); }
body.fd-design .fm-spaces ul { margin: 0; padding: 0; list-style: none; }
body.fd-design .fm-spaces__title { margin: 0 0 var(--fm-space-2); font-size: var(--fm-text-lg); font-weight: var(--fm-weight-bold); color: var(--fm-ink); }
body.fd-design .fm-spaces__group { margin: 0 0 var(--fm-space-3); padding: 0; }
body.fd-design .fm-spaces__group-title { margin: var(--fm-space-3) 0 var(--fm-space-1); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); color: var(--fm-ink-3); }
body.fd-design .fm-space { display: flex; align-items: center; justify-content: space-between; gap: var(--fm-space-2); width: 100%; min-height: var(--fm-tap-min); margin: 0; padding: var(--fm-space-2) var(--fm-space-3); border: 0; border-radius: var(--fm-radius-md); background: transparent; color: var(--fm-ink); font-family: var(--fm-font-sans); font-size: var(--fm-text-md); text-align: start; text-decoration: none; cursor: pointer; }
body.fd-design .fm-space:hover { background: var(--fm-surface-alt); }
body.fd-design .fm-space:is([aria-current="true"], [aria-current="page"]) { background: var(--fm-row-selected-bg); color: var(--fm-row-selected-ink); font-weight: var(--fm-weight-bold); }
body.fd-design .fm-space:focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: calc(var(--fc-ring) * -1); }
body.fd-design .fm-space__label { min-width: 0; overflow-wrap: anywhere; }
body.fd-design .fm-space__new { flex: none; padding: 0 var(--fm-space-2); border-radius: var(--fm-radius-pill); background: var(--fm-accent-soft); color: var(--fm-accent-ink); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-bold); }
/* R8 (13px minimum for meta text): the room action buttons and the newcomer card hint keep the library size on design 003 pages. */
body.fd-design .fr-act, body.fd-design .hello-hint, body.fd-design .hello-btn.small { font-size: var(--fm-text-sm); }
body.fd-design .fm-space__dot { flex: none; width: var(--fm-space-2); height: var(--fm-space-2); border-radius: var(--fm-radius-pill); background: var(--fm-urgent); }
body.fd-design .fm-railcard { padding: var(--fm-space-4); background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-lg); }
body.fd-design .fm-railcard[data-variant="dashed"] { border-style: dashed; border-color: var(--fm-line-strong); }
body.fd-design .fm-railcard__title { margin: 0 0 var(--fm-space-2); font-size: var(--fm-text-lg); font-weight: var(--fm-weight-bold); color: var(--fm-ink); }
body.fd-design .fm-railcard__list { display: grid; gap: var(--fm-space-1); margin: 0; padding: 0; list-style: none; }
body.fd-design .fm-railcard__rules { display: grid; gap: var(--fm-space-1); margin: 0; padding-inline-start: var(--fm-space-5); font-size: var(--fm-text-md); }
body.fd-design .fm-railcard__foot { display: flex; align-items: center; justify-content: space-between; gap: var(--fm-space-2); margin-top: var(--fm-space-2); color: var(--fm-ink-3); font-size: var(--fm-text-sm); }
body.fd-design .fm-fab { position: fixed; right: var(--fm-space-4); bottom: calc(var(--fm-space-8) + var(--fm-space-6) + env(safe-area-inset-bottom, 0px)); z-index: 20; display: none; align-items: center; justify-content: center; width: calc(var(--fm-tap-min) + var(--fm-space-3)); height: calc(var(--fm-tap-min) + var(--fm-space-3)); border: 0; border-radius: var(--fm-radius-pill); background: var(--fm-action); color: var(--fm-action-ink); box-shadow: var(--fm-shadow-2); cursor: pointer; }
body.fd-design .fm-fab:is(:hover, [aria-expanded="true"]) { background: var(--fm-action-hover); }
body.fd-design .fm-fab:focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: var(--fc-ring); }
body.fd-design :is(.fm-post__actions, .fm-embed__head, .fm-embed__actions, .fm-railcard, .fm-composer__dest, .fm-empty) a.fm-link { display: inline-flex; align-items: center; min-height: var(--fm-tap-min); }
body.fd-design button.fm-post__author { min-height: var(--fm-tap-min); padding: 0; border: 0; background: none; font-family: inherit; text-align: start; text-decoration: underline; text-decoration-color: var(--fm-line-strong); text-underline-offset: var(--fc-bold); cursor: pointer; }
body.fd-design .fm-post__author:focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: var(--fc-ring); }

/* ---------- 14. Additions from the wave 4 rebuilds (Find tools, My Bids tools, My Firm, Inbox, Veterans and Learn tools). One definition each. ---------- */
body.fd-design .fm-lead { margin: 0; max-width: 72ch; font-size: var(--fm-text-md); line-height: 1.5; color: var(--fm-ink-2); }
body.fd-design .fm-note { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-1) var(--fm-space-3); margin: 0; padding: var(--fm-space-3) var(--fm-space-4); background: var(--fm-info-soft); color: var(--fm-ink); border: var(--fm-border-width) solid var(--fm-line); border-radius: var(--fm-radius-md); font-size: var(--fm-text-md); line-height: 1.45; overflow-wrap: anywhere; }
body.fd-design .fm-note[data-tone="warn"] { background: var(--fm-warn-soft); border-color: var(--fm-warn); }
body.fd-design .fm-note[data-tone="error"] { background: var(--fm-urgent-soft); border-color: var(--fm-urgent); }
body.fd-design .fm-note a { color: var(--fm-ink); font-weight: var(--fm-weight-semibold); text-underline-offset: var(--fm-space-1); }
body.fd-design .fm-note a:hover { color: var(--fm-accent-ink); }

/* fm-select: a compact pill select (filter bars) with its icon. data-on marks a select that holds a value.
   fm-selectwrap: the label that holds the icon and the select. */
body.fd-design .fm-selectwrap { display: inline-flex; align-items: center; gap: var(--fm-space-2); min-width: 0; color: var(--fm-ink-2); font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); }
body.fd-design .fm-selectwrap > .fx-fl-ic { display: inline-flex; flex: none; }
body.fd-design .fm-selectwrap svg { width: var(--fm-text-lg); height: var(--fm-text-lg); flex: none; }
body.fd-design .fm-select { min-height: var(--fm-tap-min); max-width: 100%; padding: var(--fm-space-1) var(--fm-space-4); font-family: var(--fm-font-sans); font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); color: var(--fm-ink); background: var(--fm-surface); border: var(--fm-border-width) solid var(--fm-line-strong); border-radius: var(--fm-radius-pill); }
body.fd-design .fm-select:hover { background: var(--fm-surface-alt); }
body.fd-design .fm-select[data-on] { background: var(--fm-chip-selected-bg); border-color: var(--fm-ink); color: var(--fm-chip-selected-ink); font-weight: var(--fm-weight-bold); }
body.fd-design .fm-select:focus-visible { outline: calc(var(--fm-border-width) * 2) solid var(--fm-focus-ring); outline-offset: calc(var(--fm-border-width) * 2); }

/* A chip that opens a panel (aria-expanded) or holds a value (data-on) reads as selected, like aria-pressed (R7: two states). */
body.fd-design .fm-chip:is([aria-expanded="true"], [data-on]) { background: var(--fm-chip-selected-bg); border-color: var(--fm-ink); color: var(--fm-chip-selected-ink); }
/* fm-chip--removable: an active filter shown as a selected chip with its own remove button. */
body.fd-design .fm-chip--removable { background: var(--fm-chip-selected-bg); border-color: var(--fm-ink); color: var(--fm-chip-selected-ink); padding-inline-end: var(--fm-space-1); }
body.fd-design .fm-chip--removable > button { display: inline-grid; place-items: center; width: var(--fm-tap-min); height: var(--fm-tap-min); margin-block: calc(var(--fm-space-1) * -1); padding: 0; border: 0; border-radius: var(--fm-radius-pill); background: transparent; color: inherit; font-size: var(--fm-text-lg); line-height: 1; cursor: pointer; }
body.fd-design .fm-chip--removable > button:hover { background: var(--fm-surface-alt); }

/* fm-note--quiet: the same note as plain text, one sentence under a page header or stepper (what this step is for). */
body.fd-design .fm-note--quiet { display: block; padding: 0; background: none; border: 0; border-radius: 0; margin: 0 0 var(--fm-space-4); color: var(--fm-ink-2); max-width: 60ch; line-height: 1.5; }

/* fm-disclosure: a <details> whose summary opens more. As a card (<details class="fm-card fm-disclosure">) the summary is the padded
   header, the body is .fm-disclosure__body (or any direct child) and the open state is the native [open] attribute. The marker is drawn
   by ::before; the last item in the summary (a badge or count) sits at the far end. */
body.fd-design .fm-disclosure > summary { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2) var(--fm-space-3); min-height: var(--fm-tap-min); font-size: var(--fm-text-lg); font-weight: var(--fm-weight-semibold); color: var(--fm-ink); cursor: pointer; list-style: none; }
body.fd-design .fm-disclosure > summary::-webkit-details-marker { display: none; }
body.fd-design .fm-disclosure > summary::before { content: "\25B8"; color: var(--fm-ink-3); }
body.fd-design .fm-disclosure[open] > summary::before { content: "\25BE"; }
body.fd-design .fm-disclosure > summary > :last-child:not(:first-child) { margin-inline-start: auto; }
body.fd-design .fm-disclosure > :not(summary, .fm-disclosure__body) { margin-top: var(--fm-space-3); }
body.fd-design .fm-card.fm-disclosure { padding: 0; }
body.fd-design .fm-card.fm-disclosure > summary { padding: var(--fm-space-3) var(--fm-space-5); }
body.fd-design .fm-card.fm-disclosure > summary:hover { background: var(--fm-surface-alt); }
body.fd-design .fm-card.fm-disclosure[open] > summary { border-bottom: var(--fm-border-width) solid var(--fm-line); }
body.fd-design .fm-card.fm-disclosure > :not(summary, .fm-disclosure__body) { margin: var(--fm-space-3) var(--fm-space-5) var(--fm-space-4); }
body.fd-design .fm-disclosure__body { display: grid; gap: var(--fm-space-2); padding: var(--fm-space-4) var(--fm-space-5); }
body.fd-design .fm-disclosure__body > .fm-card__foot { margin-top: var(--fm-space-2); }

/* fm-status: the inline result line under a form. data-tone "ok" | "error". */
body.fd-design .fm-status { font-size: var(--fm-text-sm); line-height: 1.4; color: var(--fm-ink-2); }
body.fd-design .fm-status:empty { display: none; }
body.fd-design .fm-status[data-tone="ok"] { color: var(--fm-success); font-weight: var(--fm-weight-semibold); }
body.fd-design .fm-status[data-tone="error"] { color: var(--fm-urgent); font-weight: var(--fm-weight-semibold); }

/* fm-inbox: the two-pane inbox frame (list left, message right; one pane at a time on a phone). Rows are fm-notice-row. */
body.fd-design .fm-inbox { display: flex; flex-direction: column; padding: 0; overflow: hidden; min-height: calc(var(--fm-space-8) * 8); }
body.fd-design .fm-inbox__bar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2) var(--fm-space-3); padding: var(--fm-space-3) var(--fm-space-4); border-bottom: var(--fc-hair) solid var(--fm-line); }
body.fd-design .fm-inbox__bar .fm-card__meta { margin-inline-start: auto; }
body.fd-design .fm-inbox__mail { flex: 1; display: grid; grid-template-columns: minmax(calc(var(--fm-space-8) * 4), 36%) minmax(0, 1fr); min-height: calc(var(--fm-space-8) * 6); }
body.fd-design .fm-inbox__list { overflow: auto; max-height: calc(100vh - var(--fm-space-8) * 4); border-inline-end: var(--fc-hair) solid var(--fm-line); }
body.fd-design .fm-inbox__read { display: grid; align-content: start; gap: var(--fm-space-3); overflow: auto; max-height: calc(100vh - var(--fm-space-8) * 4); padding: var(--fm-space-5); min-width: 0; }
body.fd-design .fm-inbox__read > * { margin: 0; }
body.fd-design .fm-inbox__read .inbox-body { overflow-wrap: anywhere; }
body.fd-design .fm-inbox__read .inbox-body a { text-decoration: underline; }
body.fd-design .fm-inbox__read .inbox-said { white-space: pre-wrap; }
body.fd-design .fm-inbox__list .fm-empty__text { padding: var(--fm-space-5) var(--fm-space-4); margin: 0; }
body.fd-design .fm-inbox .inbox-back { display: none; justify-self: start; }
@media (max-width: 800px) {
  body.fd-design .fm-inbox { min-height: 0; }
  body.fd-design .fm-inbox__mail { grid-template-columns: minmax(0, 1fr); min-height: 0; }
  body.fd-design .fm-inbox__mail.is-open .fm-inbox__list { display: none; }
  body.fd-design .fm-inbox__mail:not(.is-open) .fm-inbox__read { display: none; }
  body.fd-design .fm-inbox .inbox-back { display: inline-flex; }
  body.fd-design .fm-inbox__list, body.fd-design .fm-inbox__read { max-height: none; border-inline-end: 0; }
  body.fd-design .fm-inbox__bar .fm-segmented { width: 100%; }
  body.fd-design .fm-inbox__bar .fm-segmented > * { flex: 1 1 auto; }
}

/* fm-notice-row: one inbox message. data-unread "true" shows the dot and a bold title; data-selected "true" is the cream selected row (R1).
   The full-row open button sits behind the words (z-index -1 inside the row's own stacking context), so a click anywhere opens it. */
body.fd-design .fm-notice-row { position: relative; z-index: 0; display: grid; grid-template-columns: var(--fm-space-3) minmax(0, 1fr) auto; align-items: start; gap: var(--fm-space-2); min-height: var(--fm-tap-min); padding: var(--fm-space-3) var(--fm-space-4); background: var(--fm-surface); color: var(--fm-ink); border-bottom: var(--fc-hair) solid var(--fm-line); cursor: pointer; }
body.fd-design .fm-notice-row:hover { background: var(--fm-surface-alt); }
body.fd-design .fm-notice-row[data-selected="true"] { background: var(--fm-row-selected-bg); color: var(--fm-row-selected-ink); box-shadow: inset calc(var(--fc-ring) * 2) 0 0 var(--fm-row-selected-ink); }
body.fd-design .fm-notice-row__open { position: absolute; inset: 0; z-index: -1; width: 100%; height: 100%; margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; color: inherit; font: inherit; cursor: pointer; }
body.fd-design .fm-notice-row__open:focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: calc(var(--fc-ring) * -1); }
body.fd-design .fm-notice-row__dot { width: var(--fc-dot); height: var(--fc-dot); margin-top: var(--fm-space-2); border-radius: var(--fm-radius-pill); background: transparent; }
body.fd-design .fm-notice-row[data-unread="true"] .fm-notice-row__dot { background: var(--fm-action); }
body.fd-design .fm-notice-row__text { min-width: 0; }
body.fd-design .fm-notice-row__title { font-size: var(--fm-text-md); line-height: 1.3; font-weight: var(--fm-weight-medium); color: inherit; overflow-wrap: anywhere; }
body.fd-design .fm-notice-row[data-unread="true"] .fm-notice-row__title { font-weight: var(--fm-weight-bold); }
body.fd-design .fm-notice-row__meta { margin-top: var(--fm-space-1); font-size: var(--fm-text-sm); color: var(--fm-ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body.fd-design .fm-notice-row[data-selected="true"] .fm-notice-row__meta { color: var(--fm-ink-2); }
body.fd-design .fm-notice-row__when { padding-top: var(--fm-space-1); font-size: var(--fm-text-sm); color: var(--fm-ink-3); white-space: nowrap; }
body.fd-design .fm-notice-row .ssp-dm-open { grid-column: 2 / -1; justify-self: start; }

/* fm-hexmap / fm-hex: clickable hex map of the United States (VA help state picker). State lives in aria-pressed. */
body.fd-design .fm-hexmap { display: block; width: 100%; max-width: calc(var(--fm-space-8) * 12); height: auto; }
body.fd-design .fm-hex { cursor: pointer; }
body.fd-design .fm-hex polygon { fill: var(--fm-surface-alt); stroke: var(--fm-line-strong); stroke-width: var(--fc-bold); transition: fill var(--fm-motion-fast) var(--fm-ease); }
body.fd-design .fm-hex text { fill: var(--fm-ink); font-family: var(--fm-font-sans); font-size: var(--fm-text-md); font-weight: var(--fm-weight-bold); pointer-events: none; }
body.fd-design .fm-hex:hover polygon { fill: var(--fm-accent-soft); }
body.fd-design .fm-hex[aria-pressed="true"] polygon { fill: var(--fm-selected-bg); stroke: var(--fm-selected-bg); }
body.fd-design .fm-hex[aria-pressed="true"] text { fill: var(--fm-selected-ink); }
body.fd-design .fm-hex:focus-visible polygon { stroke: var(--fm-focus-ring); stroke-width: calc(var(--fc-bold) * 2); }

/* fm-choice as a radio: the selected state of a radio group of ChoiceCards (walk-through answers). */
body.fd-design .fm-choice[role="radio"][aria-checked="true"] { background: var(--fm-selected-bg); border-color: var(--fm-selected-bg); color: var(--fm-selected-ink); }
body.fd-design .fm-choice[role="radio"][aria-checked="true"] :is(.fm-choice__count, .fm-choice__sub) { color: var(--fm-selected-ink); }

/* ---------- Certifications and Learn components: fm-question (one question per screen), fm-choices (ChoiceCard group), fm-statusline (autosave line),
   fm-videoslot (honest empty state until a checked video exists), fm-lessonrow (expandable lesson), fm-prose (lesson text), stepper open state. ---------- */
/* QuestionCard */
body.fd-design .fm-question { display: grid; gap: var(--fm-space-4); align-content: start; }
body.fd-design .fm-question__meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--fm-space-2) var(--fm-space-3); margin: 0; font-size: var(--fm-text-sm); font-weight: var(--fm-weight-semibold); color: var(--fm-ink-2); }
body.fd-design .fm-question__title { margin: 0; font-size: var(--fm-text-xl); line-height: 1.25; font-weight: var(--fm-weight-bold); color: var(--fm-ink); overflow-wrap: anywhere; }
body.fd-design .fm-question__help { margin: 0; font-size: var(--fm-text-md); line-height: 1.5; color: var(--fm-ink-2); }
body.fd-design .fm-question__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--fm-space-3); padding-top: var(--fm-space-4); border-top: var(--fc-hair) solid var(--fm-line); }
body.fd-design .fm-question__foot > .fm-statusline { flex: 1 1 auto; text-align: center; }

/* ---------- Choice group ---------- */
body.fd-design .fm-choices { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, calc(var(--fm-space-8) * 3)), 1fr)); gap: var(--fm-space-3); margin: 0; padding: 0; border: 0; }
body.fd-design .fm-choices .fm-choice { align-content: center; min-height: var(--fm-tap-min); }
body.fd-design a.fm-choice { text-decoration: none; }

/* ---------- Status line ---------- */
body.fd-design .fm-statusline { margin: 0; font-size: var(--fm-text-sm); line-height: 1.4; color: var(--fm-ink-2); }

/* ---------- Video slot (lesson video; empty state is the honest default while videos are not produced) ---------- */
body.fd-design .fm-videoslot { margin: 0; padding: 0; }
body.fd-design .fm-videoslot[data-state="empty"] { display: grid; grid-template-columns: auto 1fr; column-gap: var(--fm-space-3); align-items: center; padding: var(--fm-space-3) var(--fm-space-4); background: var(--fm-surface-alt); color: var(--fm-ink); border: var(--fc-hair) dashed var(--fm-line-strong); border-radius: var(--fm-radius-md); }
body.fd-design .fm-videoslot[data-state="empty"]::before { content: "\25B6"; grid-row: 1 / span 2; font-size: var(--fm-text-lg); color: var(--fm-ink-2); }
body.fd-design .fm-videoslot__title { margin: 0; font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); }
body.fd-design .fm-videoslot__note { margin: 0; font-size: var(--fm-text-sm); color: var(--fm-ink-2); }
body.fd-design .fm-videoslot video { display: block; width: 100%; max-width: 100%; height: auto; aspect-ratio: 16 / 9; background: var(--fm-ink); border-radius: var(--fm-radius-md); }
body.fd-design .fm-videoslot video:focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: var(--fc-ring); }

/* ---------- Lesson row (expandable: toggle button + body; the body is hidden until opened) ---------- */
body.fd-design .fm-lessonrow { background: var(--fm-surface); color: var(--fm-ink); border: var(--fc-hair) solid var(--fm-line); border-radius: var(--fm-radius-md); }
body.fd-design .fm-lessonrow + .fm-lessonrow { margin-top: var(--fm-space-2); }
body.fd-design .fm-lessonrow__toggle { display: flex; align-items: center; justify-content: space-between; gap: var(--fm-space-3); width: 100%; min-height: var(--fm-tap-min); padding: var(--fm-space-2) var(--fm-space-4); background: none; color: inherit; border: 0; border-radius: var(--fm-radius-md); font: inherit; font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); text-align: start; cursor: pointer; }
body.fd-design .fm-lessonrow__toggle:hover { background: var(--fm-surface-alt); }
body.fd-design .fm-lessonrow__toggle:focus-visible { outline: var(--fc-ring) solid var(--fm-focus-ring); outline-offset: calc(var(--fc-ring) * -1); }
body.fd-design .fm-lessonrow__action { flex: none; font-size: var(--fm-text-sm); font-weight: var(--fm-weight-regular); color: var(--fm-ink-2); }
body.fd-design .fm-lessonrow__body { padding: var(--fm-space-4); border-top: var(--fc-hair) solid var(--fm-line); }
body.fd-design .fm-lessonrow__body[hidden] { display: none; }
body.fd-design .fm-lessonrow:has(> .fm-lessonrow__toggle[aria-expanded="true"]) { background: var(--fm-row-selected-bg); color: var(--fm-row-selected-ink); }
body.fd-design .fm-lessonrow:has(> .fm-lessonrow__toggle[aria-expanded="true"]) > .fm-lessonrow__toggle { font-weight: var(--fm-weight-bold); }

/* ---------- Prose (lesson body) ---------- */
body.fd-design .fm-prose { display: grid; gap: var(--fm-space-3); font-size: var(--fm-text-md); line-height: 1.5; color: var(--fm-ink); overflow-wrap: anywhere; }
body.fd-design .fm-prose > * { margin: 0; }
body.fd-design .fm-prose h4 { font-size: var(--fm-text-sm); font-weight: var(--fm-weight-bold); color: var(--fm-ink-2); }
body.fd-design .fm-prose ul { padding-inline-start: var(--fm-space-5); }
body.fd-design .fm-prose a { color: var(--fm-ink); text-decoration: underline; }

/* ---------- Stepper: answered but not finished ---------- */
body.fd-design ol.fm-stepper > li[data-state="open"] { background: var(--fm-warn-soft); color: var(--fm-ink); }
body.fd-design ol.fm-stepper > li[data-state="open"]:is([aria-current="step"]) { background: var(--fm-nav-active-bg); color: var(--fm-nav-active-ink); }

/* ---------- 12. Motion: off under the reduce-motion setting and the OS preference ---------- */
@media (prefers-reduced-motion: reduce) {
  body.fd-design :is([class^="fm-"], [class*=" fm-"]),
  body.fd-design :is([class^="fm-"], [class*=" fm-"])::before,
  body.fd-design :is([class^="fm-"], [class*=" fm-"])::after { transition: none; animation: none; }
}
:root[data-reduce-motion="true"] body.fd-design :is([class^="fm-"], [class*=" fm-"]),
:root[data-reduce-motion="true"] body.fd-design :is([class^="fm-"], [class*=" fm-"])::before,
:root[data-reduce-motion="true"] body.fd-design :is([class^="fm-"], [class*=" fm-"])::after { transition: none; animation: none; }

/* ---------- 13. Narrow screens ---------- */
@media (max-width: 760px) {
  body.fd-design .fm-row { grid-template-columns: minmax(0, 1fr); }
  body.fd-design .fm-row__aside { justify-content: flex-start; }
  body.fd-design .fm-post { padding: var(--fm-space-3); }
  body.fd-design .fm-thread__children { margin-inline-start: var(--fm-space-2); padding-inline-start: var(--fm-space-3); }
  body.fd-design .fm-kanban { grid-auto-columns: minmax(calc(var(--fm-rail-left) - var(--fm-space-8)), 80%); }
  body.fd-design .fm-tracking__action { margin-inline-start: 0; }
  body.fd-design .fm-drawer[data-placement="overlay"] { inset-inline: var(--fm-space-2); width: auto; }
}

/* ---------- 14. Contract detail: agency path, Join as faces and the role list (C6, C9) ---------- */
body.fd-design .fm-detail__agency { margin: 0; font-size: var(--fm-text-md); color: var(--fm-ink-2); overflow-wrap: anywhere; }
body.fd-design .fm-detail__names { display: flex; flex-direction: column; gap: var(--fm-space-1); font-size: var(--fm-text-sm); color: var(--fm-ink-3); overflow-wrap: anywhere; }
body.fd-design .fm-detail__name { font-weight: var(--fm-weight-semibold); }
body.fd-design .fm-choice:is([aria-pressed="true"], [aria-selected="true"], [aria-current="true"]) .fm-detail__names { color: var(--fm-selected-ink); }
body.fd-design .fm-detail__lane { padding: var(--fm-space-4); border: var(--fm-border-width) solid var(--fm-line); border-radius: var(--fm-radius-lg); background: var(--fm-surface-alt); }
body.fd-design .fm-detail__lane > h4 { margin: 0; font-size: var(--fm-text-md); font-weight: var(--fm-weight-semibold); }
body.fd-design .fm-detail__person .fm-detail__meta { color: var(--fm-ink-3); font-size: var(--fm-text-sm); }
