/* 2026-10-30 — split sign-up / sign-in layout (onboarding refactor, step 2).
   2026-10-31: Destrier brand — navy pitch panel, sky accents (DESIGN.md "Brand").
   Left: what Destrier does (a hero: dark ink, one glow).
   Right: the form, on the app's own theme tokens.
   DESIGN.md Register 2: one primary action per screen; whitespace divides. */

/* Scrolls by itself: global.css locks html/body (overflow: hidden). */
._page_a64iu_8 {
  height: 100vh;
  height: 100dvh;
  overflow-y: auto;
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
  background: var(--bg);
  font-family: var(--font-body);
}

._pitch_a64iu_18 {
  position: relative;
  overflow: hidden;
  background: var(--brand-navy);
  color: #fafafa;
  padding: 40px 48px;
  display: flex;
  flex-direction: column;
  gap: 40px;
}

._glow_a64iu_29 {
  position: absolute;
  right: -30%;
  top: -20%;
  width: 800px;
  height: 640px;
  background: radial-gradient(
    50% 50% at 50% 50%,
    rgba(24, 90, 189, 0.32) 0%,
    rgba(11, 27, 51, 0) 100%
  );
  pointer-events: none;
}

._brand_a64iu_43 {
  position: relative;
  align-self: flex-start;
  color: inherit;
  text-decoration: none;
}

._pitchBody_a64iu_50 {
  position: relative;
  margin: auto 0;
  max-width: 440px;
}

._headline_a64iu_56 {
  font-family: 'DM Serif Display', Georgia, serif;
  font-weight: 400;
  font-size: 32px;
  line-height: 1.15;
  margin: 0 0 32px;
}

._points_a64iu_64 {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

._point_a64iu_64 {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: 8px;
  font-size: 15px;
  line-height: 1.5;
  color: #d4d4d4;
}

._pointMark_a64iu_82 {
  color: var(--brand-sky);
  font-weight: 600;
}

._legal_a64iu_87 {
  position: relative;
  display: flex;
  gap: 16px;
  font-size: 13px;
  color: #737373;
}

._legal_a64iu_87 a {
  color: inherit;
}

._formSide_a64iu_99 {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 24px;
}

._formCol_a64iu_106 {
  width: 100%;
  max-width: 380px;
  color: var(--bright);
}

@media (max-width: 860px) {
  ._page_a64iu_8 {
    grid-template-columns: 1fr;
  }
  ._pitch_a64iu_18 {
    padding: 24px 16px 32px;
    gap: 24px;
  }
  ._headline_a64iu_56 {
    font-size: 26px;
    margin-bottom: 16px;
  }
  ._points_a64iu_64,
  ._legal_a64iu_87 {
    display: none;
  }
  ._formSide_a64iu_99 {
    padding: 32px 16px;
  }
}

/* Form vocabulary shared by the auth screens (was two copies of inline styles). */
._title_a64iu_134 {
  font-weight: 600;
  font-size: 28px;
  letter-spacing: -0.01em;
  margin: 0 0 8px;
  color: var(--almost-white);
}

._lead_a64iu_142 {
  font-size: 15px;
  line-height: 1.55;
  color: var(--mid);
  margin: 0 0 32px;
}

._form_a64iu_99 {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

._label_a64iu_155 {
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 13px;
  font-weight: 500;
  color: var(--mid);
}

._input_a64iu_164 {
  font: inherit;
  font-size: 15px;
  padding: 10px 12px;
  border: 1px solid var(--chassis);
  background: var(--bg-row);
  color: var(--almost-white);
  border-radius: 6px;
}

._check_a64iu_174 {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  font-size: 13px;
  line-height: 1.5;
  color: var(--mid);
}

._check_a64iu_174 input {
  margin-top: 3px;
}

._check_a64iu_174 a {
  color: var(--almost-white);
}

._primary_a64iu_191 {
  font: inherit;
  font-size: 15px;
  font-weight: 600;
  padding: 12px 16px;
  margin-top: 8px;
  border: none;
  border-radius: 6px;
  background: var(--almost-white);
  color: var(--bg);
  cursor: pointer;
}

._primary_a64iu_191:disabled {
  opacity: 0.5;
  cursor: default;
}

._textBtn_a64iu_209 {
  font: inherit;
  font-size: 13px;
  background: none;
  border: none;
  padding: 0;
  color: var(--mid);
  text-decoration: underline;
  cursor: pointer;
  align-self: flex-start;
}

._err_a64iu_221 {
  font-size: 13px;
  color: var(--sev-crit);
  margin: 0;
}

._ok_a64iu_227 {
  font-size: 13px;
  color: var(--sev-ok);
  margin: 0;
}

._small_a64iu_233 {
  font-size: 13px;
  color: var(--dim);
  margin-top: 24px;
}

/* 2026-11-01 (Arnaud's first visit): "Try a free review" must read as a link. */
._small_a64iu_233 a {
  color: var(--bright);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* 2026-11-01 — "Continue with Google / LinkedIn": secondary to the email form. */
._providers_a64iu_247 {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

._provider_a64iu_247 {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font: inherit;
  font-size: 15px;
  font-weight: 500;
  padding: 11px 16px;
  border: 1px solid var(--grid-line);
  border-radius: 6px;
  background: transparent;
  color: var(--bright);
  cursor: pointer;
}

._provider_a64iu_247:hover {
  border-color: var(--mid);
}

._or_a64iu_273 {
  font-size: 13px;
  color: var(--dim);
  text-align: center;
  margin: 4px 0 0;
}
/* 2026-10-30 — onboarding refactor: shared styles for the new app surfaces
   (dashboard, setup progress, project overview). DESIGN.md Register 2:
   neutral 90% of the time, one primary action per screen, whitespace divides,
   8px grid, one radius (6px), four type sizes (28 / 18 / 15 / 13). */

/* The page scrolls inside the shell: global.css locks html/body/#root
   (overflow: hidden, a run-canvas leftover), so a screen taller than the
   window was cut off (2026-10-31: Continue unreachable on "New review"). */
/* 2026-10-31 (Arnaud: "when I scroll, the top bar disappears"): the shell no
   longer scrolls. The top bar stays put; the area under it (.main here,
   setup's .layout, overview's .scroller) is the full-width scroll area. */
._shell_9ztbn_12 {
  height: 100vh;
  height: 100dvh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  color: var(--bright);
  font-family: var(--font-body);
}

/* ---- top bar ---- */
._header_9ztbn_24 {
  display: flex;
  align-items: center;
  gap: 16px;
  height: 56px;
  padding: 0 24px;
  border-bottom: 1px solid var(--grid-line);
  flex-shrink: 0;
  /* view-transition-name (AppHeader) makes the header its own stacking context,
     so its dropdowns (Export, account) only stack inside it: without a z-index
     the page's positioned layers (the reader's columns, z 2; wires, z 5) paint
     over them and take the clicks. Above those, below the overlays (hover
     card 40, drop overlay / selection Comment 50). */
  position: relative;
  z-index: 35;
}

/* A quiet icon button in the header, like ThemeToggle (Cookie settings). */
._headerIconBtn_9ztbn_42 {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  border: none;
  background: transparent;
  color: var(--mid);
  cursor: pointer;
}

._brand_9ztbn_55 {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-brand);
  font-size: 20px;
  color: var(--almost-white);
  text-decoration: none;
}

._crumbs_9ztbn_65 {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  font-size: 15px;
  color: var(--mid);
}

._crumbs_9ztbn_65 a {
  color: var(--mid);
  text-decoration: none;
}

._crumbs_9ztbn_65 a:hover {
  color: var(--almost-white);
}

._crumbSep_9ztbn_83 {
  color: var(--dim);
}

._crumbCurrent_9ztbn_87 {
  color: var(--almost-white);
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

._headerSpacer_9ztbn_95 {
  flex: 1;
}

._headerRight_9ztbn_99 {
  display: flex;
  align-items: center;
  gap: 16px;
}

/* ---- page ---- */
._main_9ztbn_10 {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  width: 100%;
  /* same 992 px content column as before, centred by padding so the scroll
     bar sits at the window edge rather than beside the column */
  padding: 40px max(24px, calc((100% - 992px) / 2)) 64px;
  box-sizing: border-box;
}

._titleRow_9ztbn_117 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 32px;
}

._title_9ztbn_117 {
  font-size: 28px;
  font-weight: 600;
  letter-spacing: -0.01em;
  margin: 0;
  color: var(--almost-white);
}

._lead_9ztbn_133 {
  font-size: 15px;
  line-height: 1.55;
  color: var(--mid);
  margin: 8px 0 0;
}

/* ---- buttons ---- */
._primary_9ztbn_141,
._secondary_9ztbn_142 {
  font: inherit;
  font-size: 15px;
  font-weight: 600;
  padding: 10px 20px;
  border-radius: 6px;
  cursor: pointer;
  white-space: nowrap;
}

._primary_9ztbn_141 {
  border: 1px solid var(--almost-white);
  background: var(--almost-white);
  color: var(--bg);
}

._secondary_9ztbn_142 {
  border: 1px solid var(--chassis);
  background: transparent;
  color: var(--almost-white);
}

._primary_9ztbn_141:disabled,
._secondary_9ztbn_142:disabled {
  opacity: 0.5;
  cursor: default;
}

._textBtn_9ztbn_170 {
  font: inherit;
  font-size: 13px;
  background: none;
  border: none;
  padding: 0;
  color: var(--mid);
  cursor: pointer;
  text-decoration: underline;
}

._textBtn_9ztbn_170:hover {
  color: var(--almost-white);
}

._input_9ztbn_185 {
  font: inherit;
  font-size: 15px;
  padding: 10px 12px;
  border: 1px solid var(--chassis);
  background: var(--bg-row);
  color: var(--almost-white);
  border-radius: 6px;
  box-sizing: border-box;
}

._err_9ztbn_196 {
  font-size: 13px;
  color: var(--sev-crit);
  margin: 16px 0 0;
}

/* ---- dropzone ---- */
._drop_9ztbn_203 {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  min-height: 360px;
  padding: 40px 24px;
  border: 1.5px dashed var(--chassis);
  border-radius: 6px;
  text-align: center;
  transition: border-color 150ms, background 150ms;
}

._dropActive_9ztbn_217 {
  border-color: var(--almost-white);
  background: var(--bg-row);
}

._dropIcon_9ztbn_222 {
  color: var(--dim);
}

._dropTitle_9ztbn_226 {
  font-size: 18px;
  font-weight: 600;
  color: var(--almost-white);
  margin: 0;
}

._dropHint_9ztbn_233 {
  font-size: 15px;
  color: var(--mid);
  margin: 0;
}

._sampleLine_9ztbn_239 {
  margin-top: 24px;
  text-align: center;
  font-size: 13px;
  color: var(--mid);
}

/* full-page drop overlay (when projects already exist) */
._dropOverlay_9ztbn_247 {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  border: 2px dashed var(--almost-white);
  font-size: 18px;
  font-weight: 600;
  color: var(--almost-white);
  pointer-events: none;
}

/* ---- staged documents grid (choose the reference) ---- */
._nameField_9ztbn_263 {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-width: 480px;
  margin-bottom: 32px;
  font-size: 13px;
  font-weight: 500;
  color: var(--mid);
}

._docGrid_9ztbn_274 {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 24px;
}

._docCard_9ztbn_280 {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 0;
  border: none;
  background: none;
  font: inherit;
  text-align: left;
  color: inherit;
  cursor: pointer;
}

._docCard_9ztbn_280:disabled {
  cursor: default;
}

._page_9ztbn_298 {
  position: relative;
  aspect-ratio: 210 / 297;
  border-radius: 6px;
  background: var(--bg-row);
  border: 1px solid var(--grid-line);
  padding: 16px 14px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: 6px;
  overflow: hidden;
  transition: border-color 150ms, box-shadow 150ms;
}

._docCard_9ztbn_280:hover ._page_9ztbn_298 {
  border-color: var(--chassis);
}

._pageRef_9ztbn_317 {
  border-color: var(--almost-white);
  box-shadow: 0 0 0 1px var(--almost-white);
}

._docCard_9ztbn_280:hover ._pageRef_9ztbn_317 {
  border-color: var(--almost-white);
}

._sketch_9ztbn_326 {
  position: absolute;
  inset: 0;
  padding: 16px 14px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

._fileType_9ztbn_335,
._refBadge_9ztbn_336,
._removeBtn_9ztbn_337 {
  z-index: 1;
}

._line_9ztbn_341 {
  height: 3px;
  border-radius: 2px;
  background: var(--grid-line);
}

._fileType_9ztbn_335 {
  position: absolute;
  left: 12px;
  bottom: 12px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 2px 6px;
  border-radius: 4px;
  background: var(--bg-soft);
  color: var(--mid);
}

._refBadge_9ztbn_336 {
  position: absolute;
  top: 8px;
  left: 8px;
  font-size: 11px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 4px;
  background: var(--almost-white);
  color: var(--bg);
}

._removeBtn_9ztbn_337 {
  position: absolute;
  top: 6px;
  right: 6px;
  width: 24px;
  height: 24px;
  display: none;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  border: none;
  background: var(--bg-soft);
  color: var(--mid);
  cursor: pointer;
}

._docCard_9ztbn_280:hover ._removeBtn_9ztbn_337 {
  display: flex;
}

._docName_9ztbn_392 {
  font-size: 13px;
  font-weight: 500;
  color: var(--almost-white);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

._docMeta_9ztbn_401 {
  font-size: 13px;
  color: var(--dim);
  margin-top: -4px;
}

._addTile_9ztbn_407 {
  aspect-ratio: 210 / 297;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 1.5px dashed var(--chassis);
  border-radius: 6px;
  color: var(--mid);
  font-size: 13px;
  cursor: pointer;
}

._addTile_9ztbn_407:hover {
  color: var(--almost-white);
  border-color: var(--almost-white);
}

._footerBar_9ztbn_426 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 40px;
  padding-top: 24px;
  border-top: 1px solid var(--grid-line);
}

._footerHint_9ztbn_436 {
  font-size: 13px;
  color: var(--mid);
}

/* ---- projects list ---- */
._projects_9ztbn_442 {
  display: flex;
  flex-direction: column;
}

._projectRow_9ztbn_447 {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 96px 160px 112px 72px;
  align-items: center;
  gap: 16px;
  padding: 16px 8px;
  border-bottom: 1px solid var(--grid-line);
  font-size: 15px;
  color: var(--bright);
  text-decoration: none;
  cursor: pointer;
}

._projectRow_9ztbn_447:hover {
  background: var(--bg-row);
}

._projectHead_9ztbn_464 {
  cursor: default;
  font-size: 13px;
  color: var(--dim);
  padding-top: 0;
}

._projectHead_9ztbn_464:hover {
  background: none;
}

._projectName_9ztbn_475 {
  font-weight: 500;
  color: var(--almost-white);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

._muted_9ztbn_483 {
  color: var(--mid);
  font-size: 13px;
}

._num_9ztbn_488 {
  font-variant-numeric: tabular-nums;
  text-align: right;
}

._status_9ztbn_493 {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--mid);
}

._statusDot_9ztbn_501 {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--chassis);
}

._statusDone_9ztbn_508 {
  background: var(--sev-ok);
}

._statusRunning_9ztbn_512 {
  background: var(--sev-info);
}

._tag_9ztbn_516 {
  margin-left: 8px;
  font-size: 11px;
  font-weight: 600;
  padding: 2px 6px;
  border-radius: 4px;
  background: var(--bg-soft);
  color: var(--mid);
}

._rowActions_9ztbn_526 {
  display: flex;
  justify-content: flex-end;
  gap: 4px;
  opacity: 0;
}

._projectRow_9ztbn_447:hover ._rowActions_9ztbn_526,
._rowActions_9ztbn_526:focus-within {
  opacity: 1;
}

._iconBtn_9ztbn_538 {
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: none;
  border-radius: 6px;
  background: none;
  color: var(--mid);
  cursor: pointer;
}

._iconBtn_9ztbn_538:hover {
  background: var(--bg-soft);
  color: var(--almost-white);
}

._renameInput_9ztbn_556 {
  font: inherit;
  font-size: 15px;
  padding: 4px 8px;
  border: 1px solid var(--chassis);
  background: var(--bg-row);
  color: var(--almost-white);
  border-radius: 6px;
  width: 100%;
  box-sizing: border-box;
}

@media (max-width: 720px) {
  ._header_9ztbn_24 {
    padding: 0 16px;
  }
  ._main_9ztbn_10 {
    padding: 24px 16px 48px;
  }
  ._projectRow_9ztbn_447 {
    grid-template-columns: minmax(0, 1fr) 112px;
  }
  ._hideSm_9ztbn_578 {
    display: none;
  }
  ._rowActions_9ztbn_526 {
    display: none;
  }
}

._focusInput_9ztbn_586 {
  resize: vertical;
  min-height: 56px;
  line-height: 1.5;
}

/* Example text must not read as a value (dark mode made it near-white). */
._input_9ztbn_185::-moz-placeholder {
  color: var(--dim);
  opacity: 1;
}
._input_9ztbn_185::placeholder {
  color: var(--dim);
  opacity: 1;
}

/* 2026-10-31 — "Anonymize names before the review" (New review, accounts) */
._checkField_9ztbn_599 {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  max-width: 480px;
  margin-bottom: 32px;
  font-size: 13px;
  font-weight: 500;
  color: var(--bright);
  cursor: pointer;
}

._checkField_9ztbn_599 input {
  margin-top: 2px;
  accent-color: var(--brand-blue);
}

._checkHint_9ztbn_616 {
  display: block;
  margin-top: 4px;
  font-weight: 400;
  color: var(--mid);
  line-height: 1.45;
}

/* The header's EN / FR switch (2026-11-02, i18n.ts): two letters in the icon button. */
._langSwitch_9ztbn_625 {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
}
/* 2026-10-30 — onboarding refactor, step 4: the project progress screen
   (Stripe-onboarding shape). Left: the progress rail. Right: the current
   step's panel, its one action bottom-right with the price next to it.
   DESIGN.md Register 2 — one primary action per screen; motion is feedback. */

/* 2026-10-31: .layout is the page's scroll area (the top bar above it stays
   put); the rail stays in view while the panel scrolls; the panel's sticky
   .footer pins to the bottom of this area. */
._layout_5vj3p_6 {
  flex: 1;
  display: grid;
  grid-template-columns: 320px minmax(0, 1fr);
  width: 100%;
  min-height: 0;
  overflow-y: auto;
  padding-inline: max(0px, calc((100% - 1200px) / 2));
  box-sizing: border-box;
}

/* ---- rail ---- */
._rail_5vj3p_21 {
  position: sticky;
  top: 0;
  align-self: start;
  padding: 40px 32px 40px 24px;
}

._railTitle_5vj3p_28 {
  font-size: 18px;
  font-weight: 600;
  color: var(--almost-white);
  margin: 0 0 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

._railSub_5vj3p_38 {
  font-size: 13px;
  color: var(--mid);
  margin: 0 0 32px;
}

._steps_5vj3p_44 {
  list-style: none;
  margin: 0;
  padding: 0;
}

/* "Something wrong? Tell us" (2026-11-02): quiet, under the steps. */
._railFoot_5vj3p_51 {
  margin: 28px 0 0;
  font-size: 13px;
}

._step_5vj3p_44 {
  position: relative;
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr) auto;
  gap: 12px;
  padding-bottom: 24px;
}

/* the connecting line between markers */
._step_5vj3p_44:not(:last-child)::before {
  content: '';
  position: absolute;
  left: 11px;
  top: 26px;
  bottom: 2px;
  width: 2px;
  background: var(--grid-line);
}

._stepDone_5vj3p_75:not(:last-child)::before {
  background: var(--almost-white);
}

._marker_5vj3p_79 {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  border: 2px solid var(--chassis);
  background: var(--bg);
  color: var(--bg);
  position: relative;
  z-index: 1;
}

._markerDone_5vj3p_94 {
  border-color: var(--almost-white);
  background: var(--almost-white);
}

._markerAction_5vj3p_99 {
  border-color: var(--almost-white);
}

._markerAction_5vj3p_99::after {
  content: '';
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--almost-white);
}

._markerError_5vj3p_111 {
  border-color: var(--sev-crit);
  background: var(--sev-crit);
}

._spinner_5vj3p_116 {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  box-sizing: border-box;
  border: 2px solid var(--grid-line);
  border-top-color: var(--almost-white);
  animation: _spin_5vj3p_116 900ms linear infinite;
  position: relative;
  z-index: 1;
  background: var(--bg);
}

._spinnerSm_5vj3p_129 {
  width: 14px;
  height: 14px;
  border-width: 2px;
}

@keyframes _spin_5vj3p_116 {
  to {
    transform: rotate(360deg);
  }
}

._stepLabel_5vj3p_141 {
  font-size: 15px;
  line-height: 24px;
  color: var(--mid);
}

._stepLabelActive_5vj3p_147 {
  color: var(--almost-white);
  font-weight: 600;
}

._stepLabelDone_5vj3p_152 {
  color: var(--bright);
}

._stepCost_5vj3p_156 {
  font-size: 13px;
  line-height: 24px;
  color: var(--dim);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

._subSteps_5vj3p_164 {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

._subStep_5vj3p_164 {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--dim);
}

._subDone_5vj3p_181 {
  color: var(--mid);
}

._subActive_5vj3p_185 {
  color: var(--almost-white);
}

._subIcon_5vj3p_189 {
  width: 14px;
  height: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

._subDot_5vj3p_198 {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--chassis);
}

/* ---- panel ---- */
._panel_5vj3p_206 {
  display: flex;
  flex-direction: column;
  min-width: 0;
  border-left: 1px solid var(--grid-line); /* was the rail's right border; the rail no longer spans the page height */
}

._panelBody_5vj3p_213 {
  flex: 1;
  padding: 40px 48px 32px;
  max-width: 760px;
}

._eyebrow_5vj3p_219 {
  font-size: 13px;
  color: var(--mid);
  margin: 0 0 8px;
}

._panelTitle_5vj3p_225 {
  font-size: 28px;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--almost-white);
  margin: 0 0 8px;
}

._panelLead_5vj3p_233 {
  font-size: 15px;
  line-height: 1.55;
  color: var(--mid);
  margin: 0 0 32px;
  max-width: 600px;
}

._section_5vj3p_241 {
  margin-bottom: 32px;
}

._sectionTitle_5vj3p_245 {
  font-size: 13px;
  font-weight: 600;
  color: var(--mid);
  margin: 0 0 12px;
}

/* A plan rewrite running: the lawyer's own text, as typed. */
._planText_5vj3p_253 {
  font-size: 14px;
  line-height: 1.6;
  color: var(--mid);
  white-space: pre-wrap;
  margin: 0;
}

._docLine_5vj3p_261 {
  display: flex;
  align-items: baseline;
  gap: 12px;
  font-size: 15px;
  color: var(--bright);
  padding: 4px 0;
}

._docRole_5vj3p_270 {
  font-size: 13px;
  color: var(--dim);
  width: 88px;
  flex-shrink: 0;
}

/* A document's description once it has been read (2026-11-02): under its name,
   in the name's column, fading in as "Read the documents" ends. */
._docAbout_5vj3p_279 {
  margin: 2px 0 14px 100px;
  max-width: 68ch;
  font-size: 14px;
  line-height: 1.55;
  color: var(--mid);
  animation: _docAboutIn_5vj3p_1 0.5s ease-out;
}

@keyframes _docAboutIn_5vj3p_1 {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
}

@media (prefers-reduced-motion: reduce) {
  ._docAbout_5vj3p_279 {
    animation: none;
  }
}

._chip_5vj3p_301 {
  font-size: 13px;
  padding: 4px 10px;
  border-radius: 6px;
  background: var(--bg-row);
  border: 1px solid var(--grid-line);
  color: var(--bright);
}

._stepList_5vj3p_310 {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}

._stepItem_5vj3p_318 {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr) auto;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--grid-line);
}

._stepItem_5vj3p_318:last-child {
  border-bottom: none;
}

._stepNum_5vj3p_330 {
  font-size: 13px;
  color: var(--dim);
  font-variant-numeric: tabular-nums;
  line-height: 22px;
}

._stepName_5vj3p_337 {
  font-size: 15px;
  font-weight: 500;
  color: var(--almost-white);
}

._stepGoal_5vj3p_343 {
  font-size: 13px;
  line-height: 1.5;
  color: var(--mid);
  margin-top: 4px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

._stepState_5vj3p_354 {
  font-size: 13px;
  color: var(--mid);
  display: flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  line-height: 22px;
}

._bar_5vj3p_364 {
  height: 4px;
  border-radius: 2px;
  background: var(--grid-line);
  overflow: hidden;
  margin: 0 0 24px;
}

._barFill_5vj3p_372 {
  height: 100%;
  background: var(--almost-white);
  transition: width 250ms ease;
}

._select_5vj3p_378 {
  font: inherit;
  font-size: 15px;
  padding: 8px 12px;
  border: 1px solid var(--chassis);
  border-radius: 6px;
  background: var(--bg-row);
  color: var(--almost-white);
  max-width: 100%;
}

._hint_5vj3p_389 {
  font-size: 13px;
  color: var(--dim);
  margin-top: 8px;
}

._sevRow_5vj3p_395 {
  display: flex;
  gap: 32px;
  flex-wrap: wrap;
}

._sevCount_5vj3p_401 {
  font-size: 28px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--almost-white);
}

._sevLabel_5vj3p_408 {
  font-size: 13px;
  color: var(--mid);
  display: flex;
  align-items: center;
  gap: 8px;
}

._sevDot_5vj3p_416 {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

._notice_5vj3p_422 {
  font-size: 15px;
  line-height: 1.55;
  color: var(--bright);
  padding: 12px 16px;
  border-radius: 6px;
  background: var(--bg-row);
  border-left: 3px solid var(--sev-major);
  margin-bottom: 24px;
}

._noticeErr_5vj3p_433 {
  border-left-color: var(--sev-crit);
}

._choice_5vj3p_437 {
  display: flex;
  gap: 8px;
}

._choiceBtn_5vj3p_442 {
  font: inherit;
  font-size: 13px;
  padding: 4px 10px;
  border-radius: 6px;
  border: 1px solid var(--chassis);
  background: none;
  color: var(--mid);
  cursor: pointer;
}

._choiceOn_5vj3p_453 {
  border-color: var(--almost-white);
  color: var(--almost-white);
  font-weight: 600;
}

/* ---- footer: status left, price + the one action right ---- */
._footer_5vj3p_8 {
  position: sticky;
  bottom: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 48px;
  border-top: 1px solid var(--grid-line);
  background: var(--bg);
}

._footerStatus_5vj3p_472 {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--mid);
  min-width: 0;
}

._footerRight_5vj3p_481 {
  display: flex;
  align-items: center;
  gap: 16px;
}

._price_5vj3p_487 {
  font-size: 15px;
  color: var(--bright);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

._priceBlock_5vj3p_494 {
  color: var(--sev-crit);
}

@media (max-width: 860px) {
  ._layout_5vj3p_6 {
    grid-template-columns: 1fr;
  }
  ._rail_5vj3p_21 {
    border-right: none;
    border-bottom: 1px solid var(--grid-line);
    padding: 24px 16px 8px;
  }
  ._panelBody_5vj3p_213 {
    padding: 24px 16px;
  }
  ._footer_5vj3p_8 {
    padding: 12px 16px;
  }
  ._docAbout_5vj3p_279 {
    margin-left: 0;
  }
}

/* Rewrite the plan (#5): secondary to Launch, under the step list. */
._rewriteLink_5vj3p_519 {
  margin: 16px 0 0;
}

._rewrite_5vj3p_519 {
  margin-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

._rewriteText_5vj3p_530 {
  width: 100%;
  resize: vertical;
  font-size: 13px;
  line-height: 1.6;
}

._rewriteActions_5vj3p_537 {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 16px;
}

._rewriteActions_5vj3p_537 > :first-child {
  margin-right: auto;
}

/* Plan check, short and to the point (2026-10-31): one-line goals, categories
   as one line instead of a block of chips. */
._stepGoal_5vj3p_343 {
  -webkit-line-clamp: 1 !important;
}


/* The developers' Stripe TEST checkout (2026-11-02, whoami.payments_test). */
._testRow_5vj3p_556 {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

._testNote_5vj3p_562 {
  margin: 8px 0 0;
  font-size: 12px;
  color: var(--sev-major);
}
/* 2026-10-30 — onboarding refactor, step 5: project overview. Every page of
   every document, findings drawn as highlighter strokes (colour = severity).
   DESIGN.md: colour only on status; the page sketch stays neutral grey. */

._wrap_ud5ak_5 {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  width: 100%;
  max-width: 1440px;
  margin: 0 auto;
  padding: 32px 24px 0;
  box-sizing: border-box;
}

._top_ud5ak_17 {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
  margin-bottom: 24px;
}

/* Share and Export (quiet), then the one primary action. */
._topActions_ud5ak_27 {
  display: flex;
  align-items: center;
  gap: 12px;
}

._versionLine_ud5ak_33 {
  margin: -4px 0 12px;
  font-size: 13px;
  color: var(--mid);
}

._versionSelect_ud5ak_39 {
  font: inherit;
  font-size: 13px;
  color: var(--almost-white);
  background: var(--bg);
  border: 1px solid var(--grid-line);
  border-radius: 6px;
  padding: 4px 8px;
}

._fixedNote_ud5ak_49 {
  margin: 0 0 12px;
  font-size: 13px;
  color: var(--mid);
}

._fixLocked_ud5ak_55 {
  opacity: 0.45;
}

/* Arnaud 2026-11-03: "a bit close to the page": raised off the thumbnails
   (the wrapper carries the placement, the hover card wraps the button). */
._readTip_ud5ak_61 {
  margin-left: auto;
  align-self: flex-start;
  margin-top: -10px;
  font-weight: 400;
}

._readBtn_ud5ak_68 {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 12px;
  font-size: 14px;
}

._shareBtn_ud5ak_76 {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
}

._title_ud5ak_83 {
  font-size: 28px;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--almost-white);
  margin: 0 0 8px;
}

._legend_ud5ak_91 {
  display: flex;
  gap: 24px;
  flex-wrap: wrap;
  font-size: 13px;
  color: var(--mid);
}

._legendItem_ud5ak_99 {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-variant-numeric: tabular-nums;
  /* a toggle: click hides / shows that severity on the pages */
  padding: 4px 8px;
  margin: -4px -8px;
  border: none;
  border-radius: 6px;
  background: none;
  font: inherit;
  font-size: 13px;
  color: var(--mid);
  cursor: pointer;
}

._legendItem_ud5ak_99:hover {
  background: var(--bg-row);
  color: var(--almost-white);
}

._legendOff_ud5ak_121 {
  color: var(--dim);
}

._legendOff_ud5ak_121 ._swatch_ud5ak_125 {
  opacity: 0.2 !important;
}

._swatch_ud5ak_125 {
  width: 16px;
  height: 8px;
  border-radius: 2px;
}

._scroller_ud5ak_135 {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding-bottom: 32px;
}

._docHead_ud5ak_142 {
  display: flex;
  align-items: baseline;
  gap: 12px;
  height: 40px;
  font-size: 15px;
  font-weight: 600;
  color: var(--almost-white);
}

._docMeta_ud5ak_152 {
  font-size: 13px;
  font-weight: 400;
  color: var(--dim);
}

._pages_ud5ak_158 {
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  margin-bottom: 16px;
}

._page_ud5ak_158 {
  --page-line: var(--chassis);
  position: relative;
  box-sizing: border-box;
  background: var(--bg-row);
  border: 1px solid var(--grid-line);
  border-radius: 3px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  cursor: pointer;
  transition: border-color 150ms, transform 150ms;
}

._page_ud5ak_158:hover,
._pageActive_ud5ak_180 {
  border-color: var(--almost-white);
}

/* grey text texture: horizontal lines, like a page seen from afar */
._text_ud5ak_185 {
  position: absolute;
  inset: 0;
  opacity: 0.55;
}

/* the highlighter stroke over a paragraph with findings */
._mark_ud5ak_192 {
  position: absolute;
  inset: -1px -3% -1px -3%;
  border-radius: 2px 6px 3px 7px;
  opacity: 0.42;
  mix-blend-mode: multiply;
}

:root:not([data-theme='light']) ._mark_ud5ak_192 {
  mix-blend-mode: screen;
  opacity: 0.5;
}

._pageNum_ud5ak_205 {
  position: absolute;
  right: 4px;
  bottom: 2px;
  font-size: 11px;
  color: var(--dim);
  font-variant-numeric: tabular-nums;
}

/* hover card */
._card_ud5ak_215 {
  position: fixed;
  z-index: 40;
  width: 340px;
  max-width: calc(100vw - 32px);
  padding: 16px;
  border-radius: 6px;
  background: var(--bg);
  border: 1px solid var(--chassis);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
  pointer-events: none;
}

._cardHead_ud5ak_228 {
  font-size: 13px;
  color: var(--mid);
  margin-bottom: 12px;
}

._cardItem_ud5ak_234 {
  display: grid;
  grid-template-columns: 8px 1fr;
  gap: 8px;
  align-items: baseline;
  font-size: 13px;
  line-height: 1.45;
  color: var(--bright);
  margin-bottom: 8px;
}

._cardDot_ud5ak_245 {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  transform: translateY(1px);
}

._cardMore_ud5ak_252 {
  font-size: 13px;
  color: var(--dim);
}

@media (max-width: 720px) {
  ._wrap_ud5ak_5 {
    padding: 24px 16px 0;
  }
}

/* 2026-10-30 — a highlight is its own target: hover = its finding, click = open it */
._mark_ud5ak_192 {
  cursor: pointer;
  transition: opacity 150ms;
}

/* hovered highlight: a lighter, brighter stroke (the finding the card shows) */
._mark_ud5ak_192:hover {
  filter: brightness(1.45) saturate(1.15);
}

._cardTitle_ud5ak_274 {
  display: block;
  font-weight: 600;
  color: var(--almost-white);
  margin-top: 2px;
}

/* 2026-10-30 — dark mode: the pages sat almost black on black. A lifted page
   surface, a visible edge and lighter text lines, like paper under a lamp. */
:root:not([data-theme='light']) ._page_ud5ak_158 {
  --page-line: var(--mid);
  background: var(--bg-row-hi);
  border-color: var(--chassis);
}

:root:not([data-theme='light']) ._page_ud5ak_158:hover,
:root:not([data-theme='light']) ._pageActive_ud5ak_180 {
  border-color: var(--almost-white);
}

/* Legend filter: the selected severity reads as pressed, the others recede. */
._legendOn_ud5ak_295 {
  background: var(--bg-row);
  color: var(--almost-white);
  font-weight: 600;
}

/* Hovering a highlight: every anchor of that finding lights up (lighter,
   brighter), on every page of every document; the other highlights fade and
   the pages that carry the finding are outlined. */
._markHot_ud5ak_304 {
  filter: brightness(1.45) saturate(1.15);
  opacity: 0.85 !important;
}

._markCold_ud5ak_309 {
  opacity: 0.12 !important;
}

._pageHot_ud5ak_313 {
  border-color: var(--almost-white);
  box-shadow: 0 0 0 1px var(--almost-white);
}

/* 2026-10-31 — each highlight's hit area reaches a few px past its stroke, so
   the 2px gap between two stacked highlights still belongs to a finding (it
   fell through to the page, which listed every finding on it). */
._mark_ud5ak_192::before {
  content: '';
  position: absolute;
  inset: -3px -2px;
}

/* The card holds titles only: one weight, no label line. */
._card_ud5ak_215 ._cardTitle_ud5ak_274 {
  margin-top: 0;
  font-weight: 500;
}

._card_ud5ak_215 ._cardItem_ud5ak_234:last-child {
  margin-bottom: 0;
}

/* 2026-10-31 — real miniature pages (Arnaud: "real content of the pages"):
   an A4 sheet (794 x 1123 px) with the real text, scaled into the thumbnail. */
._page_ud5ak_158 {
  padding: 0;
}

._paper_ud5ak_343 {
  position: absolute;
  top: 0;
  left: 0;
  width: 794px;
  height: 1123px;
  padding: 76px 84px;
  box-sizing: border-box;
  transform-origin: top left;
  overflow: hidden;
}

._paperText_ud5ak_355 {
  font-family: var(--font-serif, 'Source Serif 4', Georgia, serif);
  line-height: 1.38;
  color: var(--bright);
  text-align: justify;
}

._pp_ud5ak_362 {
  position: relative;
  margin: 0 0 0.55em;
  overflow-wrap: anywhere;
}

._ppH1_ud5ak_368 {
  font-size: 1.35em;
  font-weight: 600;
  margin: 0.4em 0 0.6em;
  text-align: left;
}

._ppH2_ud5ak_375 {
  font-size: 1.15em;
  font-weight: 600;
  text-align: left;
}

._ppBold_ud5ak_381 {
  font-weight: 600;
  text-align: left;
}

._ppCenter_ud5ak_386 {
  text-align: center;
}

._ppRow_ud5ak_390 {
  display: flex;
  gap: 0;
  margin: 0;
  font-size: 0.85em;
  border-bottom: 1px solid var(--chassis);
}

._cell_ud5ak_398 {
  flex: 1;
  padding: 0.2em 0.4em;
  border-left: 1px solid var(--chassis);
}

._cell_ud5ak_398:first-child {
  border-left: none;
}

/* the paragraph's severity stroke, over its real text */
._pp_ud5ak_362 ._mark_ud5ak_192 {
  inset: -0.1em -0.6em;
  min-height: var(--minmark, 3px);
}

/* its hit area: a few screen px past the stroke at any zoom */
._pp_ud5ak_362 ._mark_ud5ak_192::before {
  inset: calc(-1 * var(--hit, 3px)) -2px;
}

/* the exact passage a finding is about, stronger than the stroke */
._qmark_ud5ak_420 {
  color: inherit;
  border-radius: 2px;
  padding: 0 0.1em;
  opacity: 0.85;
}

/* #9 — findings that cite no passage, above the documents */
._general_ud5ak_428 {
  margin-bottom: 16px;
}

/* A finding marked reviewed in reading mode: a small green tick after its title. */
._reviewedTick_ud5ak_433 {
  display: inline-flex;
  margin-left: 6px;
  color: var(--sev-ok);
  vertical-align: -1px;
}

/* Free-review page cap: one quiet line under the legend (ReviewScopeNote). */
._scopeNote_ud5ak_441 {
  margin: 10px 0 0;
  font-size: 13px;
  color: var(--dim);
}

/* Guest trial: the claim card keeps a form width (the scroller is full-bleed). */
._claim_ud5ak_448 {
  max-width: 560px;
  margin-bottom: 32px;
}

._generalList_ud5ak_453 {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

._generalItem_ud5ak_462 {
  display: grid;
  grid-template-columns: 8px 1fr;
  gap: 8px;
  align-items: baseline;
  width: 100%;
  max-width: 760px;
  padding: 4px 8px;
  margin-left: -8px;
  border: none;
  border-radius: 6px;
  background: none;
  font: inherit;
  font-size: 13px;
  line-height: 1.45;
  text-align: left;
  color: var(--bright);
  cursor: pointer;
}

._generalItem_ud5ak_462:hover {
  background: var(--bg-row);
}

/* 2026-10-31 — PDF pages: the real page image, the strokes on each paragraph's
   exact box (placed in page fractions by Overview.PdfSheet). */
._sheet_ud5ak_488 {
  position: absolute;
}

._sheetImg_ud5ak_492 {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

/* dark mode: the paper turns dark like the Word pages (and the screen-blended
   strokes stay visible on it) */
:root:not([data-theme='light']) ._sheetImg_ud5ak_492 {
  filter: invert(0.9) hue-rotate(180deg);
}

._sheet_ud5ak_488 ._mark_ud5ak_192 {
  min-height: 3px;
}

/* 2026-11-01 — the uploaded Word file's own comments and tracked changes: the
   reader's indigo-blue (reader.module.css --user-ink), so a user item looks the
   same in both views and never reads as an INFO finding. */
._inkRoot_ud5ak_514 {
  --user-ink: #8ea2ff;
}

[data-theme='light'] ._inkRoot_ud5ak_514 {
  --user-ink: #3f4fc4;
}

._cardKind_ud5ak_522 {
  color: var(--user-ink);
  font-weight: 500;
}

/* A lawyer's comment on a passage (reading mode): grey, as in the reader. */
._cardKindComment_ud5ak_528 {
  color: var(--mid);
  font-weight: 500;
}

/* "Add a document" under the documents (Arnaud 2026-11-01): a quiet text action,
   the hint and what was already added on one line. */
._addDoc_ud5ak_535 {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 16px;
  margin-top: 8px;
}

._addDoc_ud5ak_535 p {
  flex-basis: 100%;
  margin: 2px 0 0;
}

._addDocErr_ud5ak_548 {
  font-size: 13px;
  color: var(--sev-crit);
}

/* "Something wrong? Tell us" (2026-11-02): the last line under the documents. */
._reportLine_ud5ak_554 {
  display: flex;
  gap: 24px;
  margin: 24px 0 8px;
  font-size: 13px;
}
/* 2026-10-13 — one type family in the reader (Arnaud: "why 10 different fonts"):
 * DM Sans everywhere, sentence-case headings, three sizes (15 text / 14 findings /
 * 12-13 chrome). Only the severity labels stay small caps.
 * 2026-10-13 — Arnaud: "boxes in boxes in boxes" in reading mode. Frames removed:
 * findings are hairline-separated rows, severities/refs are plain coloured text,
 * toolbar controls are frameless (fields keep an underline).
 * DESIGN.md Register 2: "lines, not boxes"; hierarchy through space and weight. */
/* reader.module.css — Register 2 (chrome + reading surface). Calm, restrained,
 * deletion-is-design. Serif justified body (the lawyer layer), numbers mono
 * right-aligned. Light/dark entirely via the existing global.css CSS vars —
 * no component reads the theme directly. 8px spacing base. */

._shell_3a805_13 {
  position: fixed;
  inset: 0;
  /* below the cookie banner (1000, cookieBanner.module.css): a visitor must be
     able to accept or refuse on the reader too (was 9999, 2026-11-01) */
  z-index: 900;
  background: var(--bg);
  color: var(--bright);
  display: flex;
  flex-direction: column;
  font-family: var(--font-body);
}

/* The wire stage — position:relative so the SVG overlays anchor to it. */
._stage_3a805_27 {
  position: relative;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

._columns_3a805_34 {
  position: relative;
  z-index: 2; /* panes ABOVE the behind-wires layer */
  display: grid;
  height: 100%;
  gap: 0; /* the 8px gutters are now the resize handles */
  background: var(--bg-soft);
}

/* ---- Document column (annex or principal) ---- */
._docColumn_3a805_44 {
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: var(--bg); /* opaque: occludes the behind-wires under text */
}

._colHeader_3a805_51 {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding: 10px 16px;
  border-bottom: 1px solid var(--chassis);
  flex-shrink: 0;
}
._colTitle_3a805_59 {
  font-size: 13px;
  font-weight: 600;
  color: var(--bright);
}
._colCount_3a805_64 {
  font-family: var(--font-body);
  font-variant-numeric: tabular-nums;
  font-size: 10px;
  color: var(--dim);
}

._colBody_3a805_71 {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 12px 16px 40vh; /* bottom pad so the last clause can reach center */
}

/* ---- Annex tab strip (left) ---- */
._annexStrip_3a805_79 {
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: var(--bg);
}
._tabRow_3a805_85 {
  display: flex;
  gap: 2px;
  padding: 8px 10px 0;
  border-bottom: 1px solid var(--chassis);
  flex-shrink: 0;
}
._tab_3a805_85 {
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  color: var(--mid);
  padding: 6px 12px;
  font-size: 13px;
  cursor: pointer;
  font-family: inherit;
  max-width: 160px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
._tabActive_3a805_107 {
  color: var(--bright);
  border-bottom-color: var(--bright);
}

/* ---- Paragraph row ---- */
._paragraphRow_3a805_113 {
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.7;
  text-align: left;
  color: var(--bright);
  padding: 4px 8px;
  margin: 2px 0;
  border-left: 2px solid transparent;
  cursor: default;
  background: var(--bg); /* opaque so behind-wires never bleed through text */
}
._paragraphRow_3a805_113:hover {
  background: var(--wash-row-hover);
}
/* Table-origin rows: subtle tabular cue (the [TABLE] marker is stripped). */
._rowTable_3a805_129 {
  color: var(--bright);
} /* table rows: same type as prose (was mono 12px grey) */
._rowEmphasized_3a805_132 {
  border-left-color: var(--sev-info);
  background: var(--wash-active);
}
._rowFocused_3a805_136 {
  border-left-color: var(--sev-crit);
  background: var(--wash-active);
}
/* Focus / filter cut marker between non-adjacent paragraphs. */
._gap_3a805_141 {
  font-family: var(--font-body);
  font-size: 12px;
  color: var(--dim);
  text-align: center;
  padding: 6px 0;
  margin: 6px 8px;
  border-top: 1px dashed var(--grid-line);
  border-bottom: 1px dashed var(--grid-line);
}
._rowPid_3a805_151 {
  font-family: var(--font-body);
  font-variant-numeric: tabular-nums;
  font-size: 10px;
  color: var(--dim);
  margin-right: 8px;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

/* ---- Findings panel (right) ---- */
._findingsPanel_3a805_161 {
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: var(--bg);
  border-left: 1px solid var(--chassis);
}
._findingsHead_3a805_168 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  border-bottom: 1px solid var(--chassis);
  flex-shrink: 0;
}
._findingsTitle_3a805_176 {
  font-size: 13px;
  font-weight: 600;
  color: var(--bright);
}
._findingsCount_3a805_181 {
  font-family: var(--font-body);
  font-variant-numeric: tabular-nums;
  font-size: 10px;
  color: var(--dim);
}
._findingsList_3a805_187 {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 0;
  display: flex;
  flex-direction: column;
}

/* ---- Finding card ---- */
._findingCard_3a805_197 {
  border: none;
  border-bottom: 1px solid var(--grid-line);
  border-left: 2px solid transparent;
  background: transparent;
  padding: 14px 16px 14px 14px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
._findingCard_3a805_197:hover {
  background: var(--wash-row-hover);
}
._findingCardActive_3a805_211 {
  border-left-color: var(--sev-crit);
  background: var(--wash-active);
}

._cardHead_3a805_216 {
  display: flex;
  align-items: center;
  gap: 8px;
}
._sevPill_3a805_221 {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 0;
  border: none;
  text-transform: uppercase;
  flex-shrink: 0;
}
._sevCritical_3a805_231 {
  color: var(--sev-crit);
  border-color: var(--sev-crit);
}
._sevMajor_3a805_235 {
  color: var(--sev-major);
  border-color: var(--sev-major);
}
._sevInfo_3a805_239 {
  color: var(--sev-info);
  border-color: var(--sev-info);
}
._sevOk_3a805_243 {
  color: var(--sev-ok);
  border-color: var(--sev-ok);
}

._cardTitle_3a805_248 {
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.55;
  color: var(--bright);
}
._cardChips_3a805_254 {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
._chip_3a805_259 {
  font-family: var(--font-body);
  font-variant-numeric: tabular-nums;
  font-size: 12px;
  color: var(--dim);
  border: none;
  padding: 0;
}

/* ---- Empty / loading ---- */
._empty_3a805_269 {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--dim);
  font-family: var(--font-body);
  font-size: 14px;
}

/* Column resize handle (Obsidian-style): the gutter itself; a line on hover. */
._resizer_3a805_280 {
  cursor: col-resize;
  position: relative;
  touch-action: none;
}
._resizer_3a805_280::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 3px;
  width: 2px;
  background: transparent;
  transition: background 120ms;
}
._resizer_3a805_280:hover::after,
._resizer_3a805_280:active::after {
  background: var(--mid);
}

/* 2026-10-31 — the stabilo: the exact passages a finding is about, in its
   severity colour (findingQuotes.ts). The overview's highlighter stroke
   (uneven 2px 6px 3px 7px ends) brought down to the words. Translucent fill,
   so findings that overlap stack like two passes of the pen and the text keeps
   its colour. --hl-a is raised for the active / hovered finding and lowered
   for the others by the rule ReaderShell injects. */
._shell_3a805_13 {
  --hl-a-rest: 30%;
  --hl-a-hot: 55%;
  --hl-a-cold: 10%;
}

:root:not([data-theme='light']) ._shell_3a805_13 {
  --hl-a-rest: 34%;
  --hl-a-hot: 60%;
  --hl-a-cold: 12%;
}

._paragraphRow_3a805_113 mark[data-hl] {
  --hl: var(--sev-info);
  --hl-a: var(--hl-a-rest);
  color: inherit;
  background-color: color-mix(in srgb, var(--hl) var(--hl-a), transparent);
  padding: 1px 0;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
  cursor: pointer;
  transition: background-color 150ms;
}

._paragraphRow_3a805_113 mark[data-hl-sev='CRITICAL'] {
  --hl: var(--sev-crit);
}

._paragraphRow_3a805_113 mark[data-hl-sev='MAJOR'] {
  --hl: var(--sev-major);
}

._paragraphRow_3a805_113 mark[data-hl-sev='OK'] {
  --hl: var(--sev-ok);
}

/* a stroke's true ends: rounded, overhanging the word a little (no reflow) */
._paragraphRow_3a805_113 mark[data-hl][data-hl-s] {
  padding-left: 2px;
  margin-left: -2px;
  border-top-left-radius: 2px;
  border-bottom-left-radius: 7px;
}

._paragraphRow_3a805_113 mark[data-hl][data-hl-e] {
  padding-right: 2px;
  margin-right: -2px;
  border-top-right-radius: 6px;
  border-bottom-right-radius: 3px;
}

._paragraphRow_3a805_113 mark[data-hl-sev='REJECTED'] {
  --hl: var(--dim);
}

/* Every finding's passages are thin underlines in the severity colour; only
   the finding clicked into focus mode gets its stroke (ReaderShell's injected
   rule; Arnaud 2026-11-02). --hl-a still drives the colour, so hovering a card
   darkens its underlines and fades the others. */
._shell_3a805_13[data-hl-mode='underline'] ._paragraphRow_3a805_113 mark[data-hl] {
  background-color: transparent;
  text-decoration-line: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  -webkit-text-decoration-skip-ink: none;
          text-decoration-skip-ink: none; /* a pen line runs through descenders */
  text-decoration-color: color-mix(in srgb, var(--hl) calc(var(--hl-a) * 2.4), transparent);
}

/* 2026-10-31 — the findings as a working file: OK / strike out on each card,
   a thread under the selected finding, a composer docked under the list.
   DESIGN.md Register 2: neutral chrome; colour only on status (the pressed ✓
   is the reviewed status); one primary action (Ask). */
._cardActions_3a805_378 {
  margin-left: auto;
  display: inline-flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 150ms;
}

._findingCard_3a805_197:hover ._cardActions_3a805_378,
._findingCardActive_3a805_211 ._cardActions_3a805_378,
._cardActions_3a805_378:focus-within {
  opacity: 1;
}

._cardAction_3a805_378 {
  width: 24px;
  height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid transparent;
  border-radius: 6px;
  background: none;
  color: var(--dim);
  cursor: pointer;
}

._cardAction_3a805_378:hover {
  background: var(--bg-soft);
  color: var(--almost-white);
}

._cardActionOk_3a805_410,
._cardActionOn_3a805_411 {
  border-color: var(--chassis);
}

._cardActionOk_3a805_410 {
  color: var(--sev-ok);
}

._cardActionOn_3a805_411 {
  color: var(--almost-white);
}

/* a set verdict stays visible even when the card isn't hovered */
._findingCard_3a805_197:has(._cardActionOk_3a805_410) ._cardActions_3a805_378,
._findingCard_3a805_197:has(._cardActionOn_3a805_411) ._cardActions_3a805_378 {
  opacity: 1;
}

/* struck out: the pen through the finding — greyed, title crossed */
._findingCardStruck_3a805_430 ._sevPill_3a805_221,
._findingCardStruck_3a805_430 ._chip_3a805_259 {
  color: var(--dim);
}

._findingCardStruck_3a805_430 ._cardTitle_3a805_248 {
  color: var(--dim);
  text-decoration: line-through;
  text-decoration-color: var(--mid);
}

._threadCount_3a805_441 {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--dim);
  font-variant-numeric: tabular-nums;
}

._thread_3a805_441 {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 8px;
  padding-top: 12px;
  border-top: 1px solid var(--grid-line);
  cursor: default;
}

._msg_3a805_460 {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

._msgAgent_3a805_466 {
  padding-left: 12px;
  border-left: 2px solid var(--chassis);
}

._msgMeta_3a805_471 {
  font-size: 12px;
  color: var(--dim);
}

._msgText_3a805_476 {
  font-size: 14px;
  line-height: 1.55;
  color: var(--bright);
  white-space: pre-wrap;
}

._msgError_3a805_483,
._msgPending_3a805_484 {
  font-size: 13px;
  color: var(--mid);
}

._msgRefs_3a805_489 {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 8px;
}

._refChip_3a805_495 {
  font: inherit;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--mid);
  background: none;
  border: none;
  padding: 0;
  text-decoration: underline;
  text-decoration-color: var(--chassis);
  cursor: pointer;
}

._refChip_3a805_495:hover {
  color: var(--almost-white);
}

._proposal_3a805_512 {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--mid);
}

._proposalBtn_3a805_521 {
  flex-shrink: 0;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  padding: 2px 8px;
  border: 1px solid var(--chassis);
  border-radius: 6px;
  background: none;
  color: var(--almost-white);
  cursor: pointer;
}


._composer_3a805_535 {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px 16px 16px;
  border-top: 1px solid var(--chassis);
  background: var(--bg);
}

/* 2026-11-02 — Explain / Reverify / Propose edits (Arnaud): small, quiet, one row */
._quickRow_3a805_545 {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

._quick_3a805_545 {
  font: inherit;
  font-size: 12px;
  padding: 4px 8px;
  border: 1px solid var(--grid-line);
  border-radius: 6px;
  background: none;
  color: var(--mid);
  cursor: pointer;
}

._quick_3a805_545:hover:not(:disabled) {
  color: var(--almost-white);
  border-color: var(--chassis);
}

._quick_3a805_545:disabled {
  opacity: 0.5;
  cursor: default;
}

._composerInput_3a805_572 {
  font: inherit;
  font-size: 14px;
  line-height: 1.5;
  resize: vertical;
  min-height: 48px;
  max-height: 200px;
  padding: 8px;
  border: 1px solid var(--chassis);
  border-radius: 6px;
  background: var(--bg);
  color: var(--bright);
}

._composerInput_3a805_572:focus {
  outline: none;
  border-color: var(--mid);
}

._composerFoot_3a805_591 {
  display: flex;
  align-items: center;
  gap: 8px;
}

._composerError_3a805_597 {
  flex: 1;
  font-size: 12px;
  color: var(--sev-crit);
}

/* two classes: must beat app.module.css .primary / .secondary whatever the
   stylesheet order */
._composerFoot_3a805_591 ._composerBtn_3a805_605 {
  font-size: 13px;
  padding: 4px 12px;
}

/* 2026-10-31 — free-review page cap: one quiet line under the toolbar
   (ReviewScopeNote renders nothing when the whole document was reviewed). */
._scopeNote_3a805_612 {
  margin: 0;
  padding: 8px 16px;
  font-size: 13px;
  color: var(--mid);
  border-bottom: 1px solid var(--grid-line);
}

/* 2026-11-01 — cross-references are links (xrefs.ts): a quiet dotted line in
   the text colour until hovered, like a pencil mark in the margin. */
._paragraphRow_3a805_113 a[data-xref-to] {
  color: inherit;
  text-decoration-line: underline;
  text-decoration-style: dotted;
  text-decoration-color: var(--mid);
  text-underline-offset: 3px;
  cursor: pointer;
}

._paragraphRow_3a805_113 a[data-xref-to]:hover {
  color: var(--almost-white);
  text-decoration-style: solid;
}

/* View → links between clauses not underlined: plain text, a double click
   jumps (definedTerms.tsx). */
._shell_3a805_13[data-xref-mode='quiet'] ._paragraphRow_3a805_113 a[data-xref-to],
._shell_3a805_13[data-xref-mode='quiet'] ._paragraphRow_3a805_113 a[data-xref-to]:hover {
  color: inherit;
  text-decoration-line: none;
  cursor: text;
}

/* After following one: back to where the lawyer was. */
._xrefBack_3a805_646 {
  position: absolute;
  left: 16px;
  bottom: 16px;
  z-index: 30;
  font: inherit;
  font-size: 13px;
  padding: 4px 12px;
  border: 1px solid var(--chassis);
  border-radius: 6px;
  background: var(--bg);
  color: var(--almost-white);
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

._xrefBack_3a805_646:hover {
  background: var(--bg-soft);
}

/* 2026-11-01 (Arnaud) — a struck finding folds to one line (less room for
   what the lawyer set aside; click opens it again); a reviewed one is edged
   in green with a faint green wash (status colour on a status). */
/* folded: a struck card not selected, a reviewed (✓) card until opened. The
   head (severity, chips, ✓ ✗) and one line of text; the rest waits for a click. */
._findingCardFolded_3a805_671 {
  padding-top: 8px;
  padding-bottom: 8px;
  gap: 2px;
}

._findingCardFolded_3a805_671 ._cardTitle_3a805_248 {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

._findingCardFolded_3a805_671 > :not(._cardHead_3a805_216):not(._cardTitle_3a805_248) {
  display: none;
}

._findingCardOk_3a805_687:not(._findingCardActive_3a805_211) {
  border-left-color: var(--sev-ok);
  background: color-mix(in srgb, var(--sev-ok) 6%, transparent);
}

/* 2026-11-01 — a proposed change drawn as tracked changes: what goes is
   struck in red, what comes underlined in blue (Word's convention); Accept
   turns into a green "Accepted" that undoes on a second click. */
._proposalBody_3a805_695 {
  flex: 1;
  min-width: 0;
}

._proposalReason_3a805_700 {
  margin-top: 4px;
  font-size: 12px;
  color: var(--dim);
}

._redDel_3a805_706 {
  color: var(--sev-crit);
  text-decoration: line-through;
}

._redIns_3a805_711 {
  color: var(--sev-info);
  text-decoration: underline;
  text-underline-offset: 2px;
}

._proposalBtn_3a805_521 {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

._proposalAccepted_3a805_723 {
  color: var(--sev-ok);
  border-color: var(--sev-ok);
}

/* 2026-11-01 — "Linked clauses" under the selected finding, closed until
   asked for: each line says where and why. */
._linked_3a805_730 {
  margin-top: 4px;
}

._linkedToggle_3a805_734 {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font: inherit;
  font-size: 12px;
  color: var(--mid);
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
}

._linkedToggle_3a805_734:hover {
  color: var(--almost-white);
}

._linkedList_3a805_751 {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 8px;
}

._linkedItem_3a805_758 {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  font: inherit;
  text-align: left;
  background: none;
  border: none;
  border-radius: 6px;
  padding: 4px 8px;
  margin: 0 -8px;
  cursor: pointer;
}

._linkedItem_3a805_758:hover {
  background: var(--bg-soft);
}

._linkedWhere_3a805_777 {
  font-size: 13px;
  color: var(--bright);
  font-variant-numeric: tabular-nums;
}

._linkedWhy_3a805_783,
._linkedEmpty_3a805_784 {
  font-size: 12px;
  color: var(--dim);
}

/* 2026-11-01 — comments on passages (Word-style): a neutral label, the
   quoted words, a grey stroke on the passage; the floating button over a
   selection; the composer's "New comment" head. */
._sevComment_3a805_792 {
  color: var(--mid);
}

._cardQuote_3a805_796 {
  font-size: 13px;
  font-style: italic;
  color: var(--mid);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

._listLabel_3a805_806 {
  padding: 12px 16px 4px 14px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--dim);
}

._paragraphRow_3a805_113 mark[data-hl-sev='COMMENT'] {
  --hl: var(--mid);
}

._selComment_3a805_819 {
  position: fixed;
  z-index: 50;
  transform: translate(-50%, calc(-100% - 8px));
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font: inherit;
  font-size: 13px;
  padding: 4px 12px;
  border: 1px solid var(--chassis);
  border-radius: 6px;
  background: var(--bg);
  color: var(--almost-white);
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

._selComment_3a805_819:hover {
  background: var(--bg-soft);
}

._draftHead_3a805_841 {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 8px;
  font-size: 12px;
}

._draftWhere_3a805_849 {
  color: var(--mid);
  font-weight: 600;
}

._draftQuote_3a805_854 {
  flex: 1;
  min-width: 0;
  font-style: italic;
  color: var(--mid);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 2026-11-02 (Arnaud, launch mode) — a paid button the account can't use yet:
   greyed, still clickable (it opens the Plans page), "Paid feature" on hover.
   Two classes, to beat app.module.css's .primary / .secondary. */
._quick_3a805_545._locked_3a805_867,
._composerFoot_3a805_591 ._locked_3a805_867,
._locked_3a805_867 {
  opacity: 0.45;
  cursor: pointer;
}

/* 2026-11-03 — a project with several versions (Arnaud's loop: Review / Fix it /
   Analyze again): one quiet line under the top bar, the version, a selector,
   and the way to what changed (or, on an older version, to the newest). */
._versionBar_3a805_877 {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 6px 16px;
  font-size: 13px;
  color: var(--mid);
  background: var(--bg-soft);
  border-bottom: 1px solid var(--grid-line);
  flex-shrink: 0;
}

._versionBar_3a805_877 strong {
  font-weight: 600;
  color: var(--almost-white);
}

._versionSelect_3a805_894 {
  font: inherit;
  font-size: 13px;
  padding: 2px 6px;
  border-radius: 6px;
  border: 1px solid var(--grid-line);
  background: var(--bg);
  color: var(--bright);
}

/* 2026-11-03 — "Rewrite the document" (RewriteDialog): the paywall card's frame,
   a little wider for the questions */
._rewriteCard_3a805_906 {
  width: min(520px, 100%);
}

._rewriteTick_3a805_910 {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: -8px 0 16px;
  font-size: 14px;
  color: var(--almost-white);
}

._rewriteCost_3a805_919 {
  margin: -8px 0 16px;
  font-size: 13px;
  color: var(--mid);
}

._rewriteQuestions_3a805_925 {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: -8px 0 24px;
  max-height: 50vh;
  overflow-y: auto;
}

._rewriteQuestion_3a805_925 {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 14px;
  color: var(--almost-white);
}

/* "Estimated cost: N pages", the line that matters (the overview's card says it the same way) */
._rewriteCostLine_3a805_943 {
  margin: -8px 0 16px;
  font-size: 14px;
  font-weight: 600;
  color: var(--bright);
}

/* 2026-11-03 — the draft email (EmailDialog): its own fields, never cut by a
   scrolling box (Landing page: the hint was cut in half at 1000x625); the card
   scrolls whole on a short screen */
._emailCard_3a805_953 {
  max-height: calc(100vh - 32px);
  overflow-y: auto;
}

._emailFields_3a805_958 {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 16px 0 24px;
}

._emailHint_3a805_965 {
  font-size: 13px;
  color: var(--mid);
}

/* 2026-11-03 — the email's language, when the document is in another one */
._emailLang_3a805_971 {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  color: var(--almost-white);
  cursor: pointer;
}

._emailBody_3a805_980 {
  min-height: min(220px, 34vh);
  resize: vertical;
  line-height: 1.5;
}

._rewriteInput_3a805_986 {
  font: inherit;
  font-size: 14px;
  padding: 6px 10px;
  border-radius: 6px;
  border: 1px solid var(--grid-line);
  background: var(--bg-row);
  color: var(--almost-white);
}

/* 2026-11-02 — "Still answering on another finding": a quiet link back, not an error */
._composerElsewhere_3a805_997 {
  font: inherit;
  font-size: 12px;
  color: var(--mid);
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  text-align: left;
  text-decoration: underline;
}

._draftCancel_3a805_1009 {
  font: inherit;
  font-size: 12px;
  color: var(--dim);
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  text-decoration: underline;
}

/* 2026-11-01 (Arnaud, #8) — the OK findings' checklist group: a quiet label
   that opens like a disclosure, under the issues. */
._okGroup_3a805_1022 {
  display: flex;
  align-items: center;
  gap: 4px;
  width: 100%;
  padding: 16px 16px 8px 12px;
  font: inherit;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--dim);
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
}

._okGroup_3a805_1022:hover {
  color: var(--mid);
}

/* 2026-11-01 — the paywall card (a paid action refused): one small card over the reader,
   one primary action ("See plans", "Add credit", "Add credit or upgrade"), and a way back to reading. */
._unlockBackdrop_3a805_1046 {
  position: fixed;
  inset: 0;
  z-index: 60;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background: rgba(0, 0, 0, 0.32);
}

._unlockCard_3a805_1057 {
  width: min(440px, 100%);
  padding: 24px;
  border-radius: 8px;
  background: var(--bg);
  border: 1px solid var(--chassis);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.16);
}

._unlockTitle_3a805_1066 {
  font-size: 17px;
  font-weight: 600;
  color: var(--almost-white);
}

._unlockText_3a805_1072 {
  margin: 8px 0 24px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--mid);
}

._unlockActions_3a805_1079 {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

._unlockActions_3a805_1079 a {
  text-decoration: none;
}

/* 2026-11-01 (Arnaud) — the comments and tracked changes the uploaded Word file
   already had: "a blue outline to show they were user generated (no severity
   pills)". An indigo-blue of their own, so they never read as an INFO finding. */
._shell_3a805_13 {
  --user-ink: #8ea2ff;
}

[data-theme='light'] ._shell_3a805_13 {
  --user-ink: #3f4fc4;
}

._findingCardUser_3a805_1100 {
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--user-ink) 60%, transparent);
}

._sevUser_3a805_1104 {
  color: var(--user-ink);
}

._cardMeta_3a805_1108 {
  font-size: 12px;
  color: var(--dim);
}

._userReplies_3a805_1113 {
  margin-top: 8px;
  padding-left: 12px;
  border-left: 2px solid color-mix(in srgb, var(--user-ink) 40%, transparent);
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 13px;
}

._paragraphRow_3a805_113 mark[data-hl-sev='USER'] {
  --hl: var(--user-ink);
}

._userReply_3a805_1127 {
  display: flex;
  flex-direction: column;
  gap: 2px;
  color: var(--almost-white);
}

/* 2026-11-01 (Arnaud: "speak to a paragraph ... more intuitive"): "Ask" on a
   hovered paragraph, top right, quiet until the row is hovered. */
._paragraphRow_3a805_113 {
  position: relative;
}

._rowAsk_3a805_1140 {
  position: absolute;
  top: 2px;
  right: 4px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  font: inherit;
  font-family: var(--font-ui, inherit);
  font-size: 12px;
  line-height: 1.6;
  color: var(--mid);
  background: var(--bg);
  border: 1px solid var(--chassis);
  border-radius: 6px;
  cursor: pointer;
  opacity: 0;
  transition: opacity 150ms ease-out;
}

._paragraphRow_3a805_113:hover ._rowAsk_3a805_1140,
._rowAsk_3a805_1140:focus-visible {
  opacity: 1;
}

._rowAsk_3a805_1140:hover {
  color: var(--almost-white);
}

/* 2026-11-01 (Arnaud: "edit the contract and update the finding") — the edit a
   proposal makes, the redline in the text, the edited card. */
._editHead_3a805_1172 {
  font-weight: 600;
  margin-bottom: 4px;
}

._editLine_3a805_1177 {
  margin: 2px 0;
}

._editWhere_3a805_1181 {
  font-size: 12px;
  font-weight: 600;
  color: var(--mid);
}

._editNote_3a805_1187 {
  margin-top: 8px;
  font-style: italic;
  color: var(--mid);
}

._textEdit_3a805_1193 {
  border-radius: 2px;
}

._rowEditedMark_3a805_1197 {
  color: var(--mid);
}

._chipEdited_3a805_1201 {
  color: var(--almost-white);
  font-weight: 600;
}

._cardEdits_3a805_1206 {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 8px;
}

._cardEdit_3a805_1206 {
  font: inherit;
  font-size: 13px;
  line-height: 1.5;
  text-align: left;
  padding: 4px 8px;
  border: 1px solid var(--chassis);
  border-radius: 6px;
  background: var(--bg);
  color: var(--bright);
  cursor: pointer;
}

._cardEdit_3a805_1206:hover {
  border-color: var(--mid);
}

._threadToggle_3a805_1230 {
  margin-top: 8px;
  padding: 0;
  font: inherit;
  font-size: 12px;
  color: var(--dim);
  background: none;
  border: none;
  text-decoration: underline;
  cursor: pointer;
}

/* 2026-11-01 — a document added after the review: its tab says so */
._tabTag_3a805_1243 {
  font-weight: 400;
  color: var(--dim);
}

/* 2026-11-01 — the quiet second look at CRITICAL findings: shown only when the
   agent, re-reading the text, disagrees. */
._chipLook_3a805_1250 {
  color: var(--sev-major);
  font-weight: 600;
}

._recheckNote_3a805_1255 {
  margin-top: 8px;
  padding-left: 12px;
  border-left: 2px solid var(--sev-major);
  font-size: 13px;
  color: var(--mid);
}

/* 2026-11-01 — the verdict above the reader's findings (app/SignVerdict, folded) */
._verdictTop_3a805_1264 {
  padding: 8px 16px 4px 14px;
  border-bottom: 1px solid var(--grid-line);
}

/* 2026-11-01 (Arnaud: the middle dot is banned site-wide) — labels and their
   counts, and a message's author / kind / time, are separate elements, spaced. */
._listLabel_3a805_806 {
  display: flex;
  gap: 8px;
}

._msgMeta_3a805_471 {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* 2026-11-02 — the end of a cut document's reviewed pages (DocColumn endNote):
   a quiet line, like the "paragraphs hidden" markers, a little more present. */
._endNote_3a805_1284 {
  margin: 24px 16px 32px;
  padding: 12px 0 0;
  border-top: 1px solid var(--grid-line);
  font-size: 13px;
  color: var(--mid);
  text-align: center;
}

/* 2026-11-03 (Arnaud: after a fix, "a review mode with the redline where user can
   accept reject comment or chat for the edits, paragraph per paragraph or section
   per section, like in Word") — the panel's two tabs, the changes by section */
._panelTab_3a805_1296 {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  padding: 2px 0 4px;
  border: none;
  border-bottom: 2px solid transparent;
  background: none;
  font: inherit;
  cursor: pointer;
}

._panelTab_3a805_1296 ._findingsTitle_3a805_176 {
  color: var(--mid);
  font-weight: 500;
}

._panelTabOn_3a805_1313 {
  border-bottom-color: var(--almost-white);
}

._panelTabOn_3a805_1313 ._findingsTitle_3a805_176 {
  color: var(--bright);
  font-weight: 600;
}

._findingsHead_3a805_168[role='tablist'] {
  justify-content: flex-start;
  gap: 20px;
  padding-bottom: 6px;
}

._changesSummary_3a805_1328 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 12px 16px 0 14px;
  font-size: 13px;
  font-weight: 600;
  color: var(--bright);
}

._changeSection_3a805_1339 {
  display: flex;
  flex-direction: column;
}

._changesHint_3a805_1344 {
  margin: 4px 16px 4px 14px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--dim);
}

._listLabel_3a805_806 ._sectionName_3a805_1351 {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

._sectionActions_3a805_1359 {
  display: inline-flex;
  gap: 10px;
  flex-shrink: 0;
}

._sectionActions_3a805_1359 button {
  padding: 0;
  border: none;
  background: none;
  font: inherit;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--mid);
  text-decoration: underline;
  cursor: pointer;
}

._sectionActions_3a805_1359 button:hover {
  color: var(--bright);
}

._decisionPending_3a805_1383 {
  color: var(--bright);
}

._decisionRejected_3a805_1387 {
  color: var(--dim);
}

._changeFixes_3a805_1391 {
  margin-top: 8px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--dim);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

._changeActions_3a805_1402 {
  display: flex;
  gap: 8px;
  margin-top: 10px;
}

._changeBtn_3a805_1408 {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 6px;
  border: 1px solid var(--chassis);
  background: none;
  font: inherit;
  font-size: 13px;
  color: var(--almost-white);
  cursor: pointer;
}

._changeBtn_3a805_1408:hover {
  border-color: var(--mid);
}

._changeBtnMain_3a805_1426 {
  border-color: var(--almost-white);
  background: var(--almost-white);
  color: var(--bg);
}

._changeBtnMain_3a805_1426:hover {
  border-color: var(--almost-white);
  opacity: 0.9;
}
/* 2026-10-30 — reading-mode top bar (onboarding refactor, step 6).
   Row 1 = the app header (where am I + Export). Row 2 = how I look at the
   findings, left to right: move through findings · filter · search · view.
   DESIGN.md Register 2: whitespace divides, colour only on status. */

._toolbar_1pvf6_6 {
  display: flex;
  align-items: center;
  gap: 24px;
  height: 48px;
  padding: 0 24px;
  border-bottom: 1px solid var(--grid-line);
  background: var(--bg);
  font-family: var(--font-body);
  font-size: 13px;
  color: var(--mid);
  flex-shrink: 0;
  min-width: 0;
}

._group_1pvf6_21 {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
}

._spacer_1pvf6_28 {
  flex: 1;
}

._navBtn_1pvf6_32 {
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  border: 1px solid var(--chassis);
  background: none;
  color: var(--almost-white);
  cursor: pointer;
}

._navBtn_1pvf6_32:disabled {
  opacity: 0.4;
  cursor: default;
}

._count_1pvf6_50 {
  font-variant-numeric: tabular-nums;
  color: var(--bright);
  min-width: 48px;
  text-align: center;
  white-space: nowrap; /* "2 of 32" on one line (DESIGN.md: numbers never wrap) */
}

/* 2026-11-02 — a passing line ("Verdict updated: …", up to ~90 characters for a
   client): shortens with an ellipsis rather than push the View menu out */
._toolNote_1pvf6_60 {
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--bright);
}

._chip_1pvf6_69 {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 6px;
  border: 1px solid var(--grid-line);
  background: none;
  font: inherit;
  font-size: 13px;
  color: var(--bright);
  cursor: pointer;
  font-variant-numeric: tabular-nums;
}

._chipOff_1pvf6_84 {
  color: var(--dim);
  border-style: dashed;
}

._chipOff_1pvf6_84 ._dot_1pvf6_89 {
  opacity: 0.35;
}

._dot_1pvf6_89 {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

._select_1pvf6_99 {
  font: inherit;
  font-size: 13px;
  padding: 4px 8px;
  border-radius: 6px;
  border: 1px solid var(--grid-line);
  background: var(--bg);
  color: var(--bright);
  max-width: 220px;
  /* 2026-11-02 — narrows (to 136px, "All documents" whole) before the bar
     overflows: with "Update the verdict" the View menu was cut off at 1440px and below */
  min-width: 136px;
  flex: 0 1 auto;
  text-overflow: ellipsis;
}

._search_1pvf6_115 {
  font: inherit;
  font-size: 13px;
  width: 200px;
  min-width: 156px; /* its placeholder whole */
  flex: 0 1 auto;
  padding: 5px 10px;
  border-radius: 6px;
  border: 1px solid var(--grid-line);
  background: var(--bg-row);
  color: var(--almost-white);
}

/* the search box and its document scope may narrow too, never below what its
   parts need (input 156, scope 136, result stepper 128, gaps 8) */
._searchGroup_1pvf6_130 {
  flex-shrink: 1;
  min-width: 156px;
}

._searchGroup_1pvf6_130:has(> select) {
  min-width: 300px;
}

._searchGroup_1pvf6_130:has(> ._navBtn_1pvf6_32) {
  min-width: 284px;
}

._searchGroup_1pvf6_130:has(> select):has(> ._navBtn_1pvf6_32) {
  min-width: 428px;
}

._searchMiss_1pvf6_147 {
  border-color: var(--sev-crit);
}

._menuWrap_1pvf6_151 {
  position: relative;
}

._menuBtn_1pvf6_155 {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 6px;
  border: 1px solid var(--grid-line);
  background: none;
  font: inherit;
  font-size: 13px;
  color: var(--bright);
  cursor: pointer;
  white-space: nowrap; /* "Update the verdict" on one line */
  flex-shrink: 0;
}

._menu_1pvf6_151 {
  position: absolute;
  right: 0;
  top: calc(100% + 8px);
  z-index: 60;
  width: 280px;
  padding: 8px;
  border-radius: 6px;
  background: var(--bg);
  border: 1px solid var(--chassis);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

._menuItem_1pvf6_184 {
  display: grid;
  grid-template-columns: 16px 1fr;
  gap: 8px;
  align-items: start;
  width: 100%;
  padding: 8px;
  border: none;
  border-radius: 6px;
  background: none;
  text-align: left;
  font: inherit;
  font-size: 13px;
  color: var(--almost-white);
  cursor: pointer;
}

._menuItem_1pvf6_184:hover:not(:disabled) {
  background: var(--bg-row);
}

._menuItem_1pvf6_184:disabled {
  color: var(--dim);
  cursor: default;
}

._menuHint_1pvf6_210 {
  display: block;
  color: var(--mid);
  margin-top: 2px;
}

/* a laptop screen: closer items before anything narrows (the French words are
   the longest: "Actualiser la synthèse", "Toutes les catégories") */
@media (max-width: 1400px) {
  ._toolbar_1pvf6_6 {
    gap: 10px;
    padding: 0 12px;
  }

  /* 2026-11-03: Export moved into the bar (Arnaud); "Update the verdict" keeps its icon */
  ._wideOnly_1pvf6_225 {
    display: none;
  }
}

@media (max-width: 1100px) {
  ._hideMd_1pvf6_231 {
    display: none;
  }
}

/* 2026-11-01 — the admin's read-only support view: one slim, quiet line under
   the header, so nobody mistakes a firm's project for their own. */
._supportBar_1pvf6_238 {
  padding: 4px 16px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--almost-white);
  background: var(--bg-soft);
  border-bottom: 1px solid var(--grid-line);
}
/* Loading skeletons (2026-10-31). DESIGN.md Register 2, rule 8: the waiting
   state is part of the design — each screen shows its own shape while its data
   arrives, instead of a line of "Loading…" text. Calm on purpose: flat blocks,
   a slow breathing pulse, nothing moves sideways. */

._bone_1r2yr_6 {
  display: block;
  background: color-mix(in srgb, var(--mid) 16%, transparent);
  border-radius: 4px;
  animation: _breathe_1r2yr_1 1.6s ease-in-out infinite;
}

._round_1r2yr_13 {
  border-radius: 50%;
}

/* Appear only if the wait is real: a cached screen renders before this shows,
   so a fast load never flashes a skeleton (150 ms fade, rule 7). */
._root_1r2yr_19 {
  animation: _appear_1r2yr_1 150ms ease-out 120ms both;
}

@keyframes _appear_1r2yr_1 {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes _breathe_1r2yr_1 {
  50% {
    opacity: 0.55;
  }
}

@media (prefers-reduced-motion: reduce) {
  ._bone_1r2yr_6,
  ._root_1r2yr_19 {
    animation: none;
  }
}

._stack_1r2yr_45 {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

._row_1r2yr_51 {
  display: flex;
  align-items: center;
  gap: 16px;
}

/* Overview: A4 page placeholders */
._pageGrid_1r2yr_58 {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 24px;
}

._page_1r2yr_58 {
  width: 85px;
  height: 120px;
  border-radius: 2px;
}

/* Reader: document column + findings panel */
._readerBody_1r2yr_72 {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  background: var(--bg-soft);
}

._readerDoc_1r2yr_80 {
  padding: 40px 48px;
  max-width: 760px;
  width: 100%;
  margin: 0 auto;
  box-sizing: border-box;
}

._readerSide_1r2yr_88 {
  padding: 24px;
  border-left: 1px solid var(--grid-line);
  background: var(--bg);
}

._card_1r2yr_94 {
  padding: 16px;
  border: 1px solid var(--grid-line);
  border-radius: 6px;
  margin-bottom: 16px;
}

/* Sign-in gate, session restoring: a bare app header (no account menu yet). */
._bareHeader_1r2yr_102 {
  display: flex;
  align-items: center;
  gap: 16px;
  height: 56px;
  padding: 0 24px;
  border-bottom: 1px solid var(--grid-line);
}

@media (max-width: 860px) {
  ._readerBody_1r2yr_72 {
    grid-template-columns: minmax(0, 1fr);
  }
  ._readerSide_1r2yr_88 {
    display: none;
  }
}
