/* source-serif-pro-cyrillic-ext-400-normal */
@font-face {
  font-family: 'Source Serif Pro';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/source-serif-pro-cyrillic-ext-400-normal-Bu9Y9EsI.woff2) format('woff2'), url(/assets/source-serif-pro-cyrillic-ext-400-normal-2ydvPDRD.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* source-serif-pro-cyrillic-400-normal */
@font-face {
  font-family: 'Source Serif Pro';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/source-serif-pro-cyrillic-400-normal-KDUmws6P.woff2) format('woff2'), url(/assets/source-serif-pro-cyrillic-400-normal-23c9XcZ9.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* source-serif-pro-greek-400-normal */
@font-face {
  font-family: 'Source Serif Pro';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/source-serif-pro-greek-400-normal-CnNeOVe_.woff2) format('woff2'), url(/assets/source-serif-pro-greek-400-normal-Lj7LgoZd.woff) format('woff');
  unicode-range: U+0370-03FF;
}

/* source-serif-pro-vietnamese-400-normal */
@font-face {
  font-family: 'Source Serif Pro';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/source-serif-pro-vietnamese-400-normal-CfuOscx8.woff2) format('woff2'), url(/assets/source-serif-pro-vietnamese-400-normal-BnlVvZF5.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* source-serif-pro-latin-ext-400-normal */
@font-face {
  font-family: 'Source Serif Pro';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/source-serif-pro-latin-ext-400-normal-S2aRHAtc.woff2) format('woff2'), url(/assets/source-serif-pro-latin-ext-400-normal-Cbi_pmIN.woff) format('woff');
  unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* source-serif-pro-latin-400-normal */
@font-face {
  font-family: 'Source Serif Pro';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/source-serif-pro-latin-400-normal-unTwOnjS.woff2) format('woff2'), url(/assets/source-serif-pro-latin-400-normal-CtaTzvhf.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}/* Phase 9c: Tailwind base + shadcn CSS variables.
 *
 * Imported BEFORE the existing global.css in main.tsx so the existing
 * CSS-in-JS chrome takes precedence over Tailwind defaults.
 *
 * The CSS variables below are shadcn's default "slate" theme. Components
 * installed via `npx shadcn add` consume these variables.
 *
 * REGISTER DISCIPLINE:
 *   - Tailwind classes ONLY on Register 2 chrome (buttons, modals,
 *     dropdowns via shadcn). NEVER on Register 1 canvases (NeuralCanvas,
 *     WiringCanvas, RMv4, ColumnDotGrid, bezier rendering).
 */

*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

/* ! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
 */

/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/

dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/

:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */

[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}

:root {
    --background: 0 0% 100%;
    --foreground: 222.2 84% 4.9%;
    --card: 0 0% 100%;
    --card-foreground: 222.2 84% 4.9%;
    --popover: 0 0% 100%;
    --popover-foreground: 222.2 84% 4.9%;
    --primary: 222.2 47.4% 11.2%;
    --primary-foreground: 210 40% 98%;
    --secondary: 210 40% 96.1%;
    --secondary-foreground: 222.2 47.4% 11.2%;
    --muted: 210 40% 96.1%;
    --muted-foreground: 215.4 16.3% 46.9%;
    --accent: 210 40% 96.1%;
    --accent-foreground: 222.2 47.4% 11.2%;
    --destructive: 0 84.2% 60.2%;
    --destructive-foreground: 210 40% 98%;
    --border: 214.3 31.8% 91.4%;
    --input: 214.3 31.8% 91.4%;
    --ring: 222.2 84% 4.9%;
    --radius: 0.5rem;
  }

.dark {
    --background: 222.2 84% 4.9%;
    --foreground: 210 40% 98%;
    --card: 222.2 84% 4.9%;
    --card-foreground: 210 40% 98%;
    --popover: 222.2 84% 4.9%;
    --popover-foreground: 210 40% 98%;
    --primary: 210 40% 98%;
    --primary-foreground: 222.2 47.4% 11.2%;
    --secondary: 217.2 32.6% 17.5%;
    --secondary-foreground: 210 40% 98%;
    --muted: 217.2 32.6% 17.5%;
    --muted-foreground: 215 20.2% 65.1%;
    --accent: 217.2 32.6% 17.5%;
    --accent-foreground: 210 40% 98%;
    --destructive: 0 62.8% 30.6%;
    --destructive-foreground: 210 40% 98%;
    --border: 217.2 32.6% 17.5%;
    --input: 217.2 32.6% 17.5%;
    --ring: 212.7 26.8% 83.9%;
  }
.container {
  width: 100%;
}
@media (min-width: 640px) {

  .container {
    max-width: 640px;
  }
}
@media (min-width: 768px) {

  .container {
    max-width: 768px;
  }
}
@media (min-width: 1024px) {

  .container {
    max-width: 1024px;
  }
}
@media (min-width: 1280px) {

  .container {
    max-width: 1280px;
  }
}
@media (min-width: 1536px) {

  .container {
    max-width: 1536px;
  }
}
.visible {
  visibility: visible;
}
.collapse {
  visibility: collapse;
}
.static {
  position: static;
}
.fixed {
  position: fixed;
}
.absolute {
  position: absolute;
}
.relative {
  position: relative;
}
.sticky {
  position: sticky;
}
.block {
  display: block;
}
.\!inline {
  display: inline !important;
}
.inline {
  display: inline;
}
.flex {
  display: flex;
}
.inline-flex {
  display: inline-flex;
}
.table {
  display: table;
}
.grid {
  display: grid;
}
.hidden {
  display: none;
}
.shrink {
  flex-shrink: 1;
}
.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.resize {
  resize: both;
}
.rounded {
  border-radius: 0.25rem;
}
.border {
  border-width: 1px;
}
.uppercase {
  text-transform: uppercase;
}
.lowercase {
  text-transform: lowercase;
}
.tabular-nums {
  --tw-numeric-spacing: tabular-nums;
  font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
}
.underline {
  text-decoration-line: underline;
}
.outline {
  outline-style: solid;
}
.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
/* Google Fonts: loaded from index.html without blocking first paint (2026-10-14). */

/* Theme tokens.
 *
 * Every component-side color resolves through these CSS variables so
 * theme switching is a single data-theme attribute swap, no component
 * edits. Naming mirrors the standalone reference HTML (line 9-39).
 *
 * Two registers ship today:
 *  - Default :root (dark "run" register) — robot/spaceship vibe, mono
 *    font, dot-glow halos. The pipeline operates here.
 *  - [data-theme="light"] (cream/paper "review" register) — JORF + Le
 *    Monde inspiration per DESIGN.md, serif body font, flat ink (no
 *    glow). The lawyer reads findings here. Severity + bucket palette
 *    re-tuned for legibility on paper.
 */
:root {
  /* Brand (2026-10-31) — Destrier. Blue in the family of the tools lawyers use
     every day (Word, DocuSign); replaces the Theillac greens. Shared by both
     registers; Register 2 surfaces (landing, sign-in, account pages, legal)
     use them directly. See DESIGN.md "Brand". */
  --brand-navy: #0b1b33; /* dark surfaces: landing hero, sign-in pitch panel */
  --brand-navy-2: #132a4d; /* raised surface on navy */
  --brand-blue: #185abd; /* THE accent — one primary action per screen (6.5:1 on white) */
  --brand-blue-deep: #103f91; /* hover / pressed */
  --brand-sky: #8db8f7; /* accent text on navy (8.5:1 on --brand-navy) */
  --brand-blue-100: #dce8f8; /* tint: selected, focus ring */
  --brand-blue-50: #f2f6fc; /* tint: alternate sections */
  --brand-paper: #fafafa; /* light page background */
  --brand-paper-2: #f5f5f5; /* light secondary surface */
  --brand-ink: #0b1b33; /* text on light (= navy) */
  --brand-line: #e3e8ef; /* hairlines on light */
  --brand-muted: #5b6575; /* secondary text on light */
  --font-brand: 'DM Serif Display', Georgia, serif; /* wordmark + landing headlines */
  --font-display: 'Outfit', 'DM Sans', system-ui, sans-serif;
  --font-ui: 'DM Sans', 'Inter', system-ui, sans-serif;
  /* Surface tones (darkest -> lightest) */
  --bg: #08090d;
  --bg-soft: #0b0c11;
  --bg-row: #0e1015;
  --bg-row-hi: #1a1e28;
  --grid-line: #12141a;
  --chassis: #2a2d35;

  /* Foreground tones (dim -> brightest) */
  --dim: #4a4d55;
  --mid: #8a8d95;
  --bright: #b0b3bb;
  --almost-white: #e8e8ec;
  --white: #ffffff;

  /* Severity */
  --sev-crit: #ff5555;
  --sev-major: #ff9838;
  --sev-info: #5596e8;
  --sev-ok: #33db85;
  --sev-recovered: #ffb833;

  /* Bucket palette (matches reference --c-* names) */
  --c-definitions: #ff5555;
  --c-financial_definitions: #ff7a42;
  --c-credit_mechanics: #ff9838;
  --c-repayment: #ffb833;
  --c-interest_margins: #ffda33;
  --c-commissions: #e8e433;
  --c-reps_warranties: #33db85;
  --c-undertakings: #33dbc4;
  --c-events_of_default: #5596e8;
  --c-security: #7a6de8;
  --c-lender_transfers: #a35be8;
  --c-annexe_cps: #cc52db;
  --c-annexe_commitments: #e045a8;
  --c-annexe_templates: #f472b6;
  --c-boilerplate: #a0e033;
  --c-skip: #3a3d45;
  --c-unclassified: #3a3d45;

  /* Selection / highlights / pulse halos.
     rgba versions of the severity colors used for soft washes (row tints,
     box shadows). Kept here so V5.6 can re-pick wash strengths to suit a
     paper background. */
  --wash-error: rgba(255, 85, 85, 0.06);
  --wash-error-hi: rgba(255, 85, 85, 0.12);
  --wash-partial: rgba(255, 152, 56, 0.05);
  --wash-recovered: rgba(255, 184, 51, 0.05);
  --wash-active: rgba(255, 255, 255, 0.06);
  --wash-done: rgba(255, 255, 255, 0.04);
  --wash-row-hover: rgba(255, 255, 255, 0.03);
  --wash-row-idle: rgba(255, 255, 255, 0.02);
  --selection: rgba(167, 139, 250, 0.3);

  /* V5.5 plumbing: reading-mode register flag. JS reads this to toggle
     contextual visuals that don't fit a CSS-only swap (e.g. font choice).
     V5.6 will flip it on the light theme. */
  --register: 'run';

  /* V5.6.1h: dot-glow multiplier. 1 = full halo (dark register suits
     luminescence), 0 = flat (paper register doesn't). Components
     scale their boxShadow by this. */
  --dot-glow: 1;

  /* V5.6.1i: per-theme font. Dark register = mono (robot/spaceship
     vibe). Light register = serif (Claude-style elegant + serious).
     Mono stays for paragraph IDs / cost values via explicit
     `font-family: var(--font-mono)` at those callsites. */
  /* 2026-10-12 design pass (DESIGN.md: "Wizard chrome stays sans-serif";
     "More than two font families" is an anti-pattern): the app default is
     now a sans (DM Sans) for chrome, wizard, modals and pages. The run
     canvas and the reader keep their established look through
     --font-canvas (mono in dark, serif in light — the former --font-body). */
  --font-body: 'DM Sans', 'Inter', system-ui, sans-serif;
  /* 2026-10-12 (Arnaud: "robot fonts everywhere"): one family across the
     app. --font-mono / --font-canvas keep their names (130+ call sites) but
     resolve to DM Sans; digits stay column-aligned through tabular figures
     (body font-variant-numeric). --font-code is the real mono if ever needed. */
  --font-canvas: 'DM Sans', 'Inter', system-ui, sans-serif;
  --font-mono: 'DM Sans', 'Inter', system-ui, sans-serif;
  --font-code: 'IBM Plex Mono', 'Consolas', monospace;

  /* REFACTOR Phase 7d — register-2 typography utilities.
     Reading surfaces (Reader, FindingsPanel, RMv4 finding/definition
     bodies, Audit table) opt in via the `.text-serif` class so they
     pick the juridical-content typeface independently of the active
     theme. Source Serif Pro is self-hosted via @fontsource (see main.jsx)
     — Source Serif 4 stays first in the chain for dark-theme parity
     with styles/global.css's --font-body. */
  --font-serif:
    'Source Serif 4', 'Source Serif Pro', 'Charter', 'Georgia', 'Times New Roman', serif;
}

.text-serif {
  font-family: var(--font-serif);
}
.text-mono {
  font-family: var(--font-mono);
}

/* V5.6.1h: kill dot-grid glow halos in light register — flat ink only.
   The component still sets box-shadow inline; this overrides via
   higher-specificity CSS. Same for finding card glow / step row halos. */
[data-theme='light'] [data-ct-pid] {
  box-shadow: none !important;
}

[data-theme='light'] {
  /* V5.6.1 — review register, rebuilt after audit revealed the first
     pass was unreadable. Mini Metro inspiration STAYS but with real
     contrast values:
       - bucket palette: full saturation, calibrated lightness so a
         single 4×4 dot reads on cream
       - foreground ramp: deep ink for body, BLACK for emphasis (the
         previous "almost-white = #1C1A17" worked but components
         using `t.white` for emphasis printed white-on-cream
         (invisible). `--white` is now actual black so those calls
         flip correctly.)
       - severity: preserved from first pass (already readable). */

  /* Surfaces — 2026-10-12: cool neutrals (white / blue-grey), replacing the
     warm cream that read as Claude-inspired. Dots, wires, severity untouched. */
  /* Surfaces */
  --bg: #e9ecf0;
  --bg-soft: #e1e5ea;
  --bg-row: #f3f5f7;
  --bg-row-hi: #d9dee5;
  --grid-line: #cdd3db;
  --chassis: #a5acb7;

  /* Foreground: warm ink ramp. white→black flip is intentional
     so `t.white` (used for emphasis throughout) reads correctly. */
  --dim: #7b8390;
  --mid: #3f4753;
  --bright: #111827;
  --almost-white: #000000;
  --white: #000000;

  /* Severity — readable on cream, distinguishable from each other */
  --sev-crit: #b91c1c;
  --sev-major: #c2570a;
  --sev-info: #1e5c99;
  --sev-ok: #15803d;
  --sev-recovered: #92660a;

  /* Bucket palette: reset to full-saturation values that read as
     INK on cream. Calibrated against a 4×4 dot — each must be
     distinguishable in a grid + on a small severity chip. */
  --c-definitions: #b91c1c; /* crimson */
  --c-financial_definitions: #c04a1c; /* burnt orange */
  --c-credit_mechanics: #cc6610; /* deep orange */
  --c-repayment: #b8810a; /* mustard */
  --c-interest_margins: #94860a; /* olive-yellow */
  --c-commissions: #6a6510; /* olive */
  --c-reps_warranties: #15803d; /* forest green */
  --c-undertakings: #0f766e; /* deep teal */
  --c-events_of_default: #1e5c99; /* steel blue */
  --c-security: #3730a3; /* indigo */
  --c-lender_transfers: #6b21a8; /* deep violet */
  --c-annexe_cps: #86198f; /* magenta */
  --c-annexe_commitments: #9f1853; /* berry */
  --c-annexe_templates: #be185d; /* pink-red */
  --c-boilerplate: #4d7c0f; /* moss */
  --c-skip: #9aa1ac;
  --c-unclassified: #9aa1ac;

  /* Washes: subtle, paper-friendly */
  --wash-error: rgba(185, 28, 28, 0.07);
  --wash-error-hi: rgba(185, 28, 28, 0.14);
  --wash-partial: rgba(194, 87, 10, 0.07);
  --wash-recovered: rgba(146, 102, 10, 0.07);
  --wash-active: rgba(17, 24, 39, 0.06);
  --wash-done: rgba(17, 24, 39, 0.04);
  --wash-row-hover: rgba(17, 24, 39, 0.03);
  --wash-row-idle: rgba(17, 24, 39, 0.02);
  --selection: rgba(59, 130, 246, 0.22);

  --register: 'review';
  /* V5.6.1h: kill dot glow in light/paper register. Flat ink-on-cream. */
  --dot-glow: 0;
  /* V5.6.1i: serif body for the review register. Mono kept for
     paragraph IDs / cost values. */
  --font-body: 'DM Sans', 'Inter', system-ui, sans-serif;
  --font-canvas: 'DM Sans', 'Inter', system-ui, sans-serif;
  --font-mono: 'DM Sans', 'Inter', system-ui, sans-serif;
}

/* W112 (2026-05-29) — light-mode reading-mode finding-card parity with
   the dark register. Walk-16 audit: cream card + heavy sepia hairlines
   + outlined sev pill = Word-1997-comment-bubble feel. Per DESIGN.md
   Register 2 ("flat surface, hierarchy through space and weight, not
   color and borders"): hairlines fade to chassis-tint, the sev pill
   swaps its outline for a soft tinted background (discreet severity
   token), card edges soften to grid-line so the card lifts via tone
   not a stark outline. Inline styles on FindingCard stay verbatim;
   these overrides ride on data-* selectors specific to the card so the
   rules can't bleed into other surfaces. */
/* Card border left alone — inline style picks bg-row-hi (already soft)
   for inactive + bright for active; both read well on cream. */
[data-theme='light'] [data-finding-id] [data-fnd-action] {
  /* Button hairlines: drop the sepia tint, blend into the card surface.
     The button is still identifiable by hover + text label; the
     1px separator was over-built. */
  border-color: var(--grid-line) !important;
  color: var(--mid);
}
[data-theme='light'] [data-finding-id] [data-fnd-actions] {
  border-top-color: var(--grid-line) !important;
}
[data-theme='light'] [data-finding-id] [data-fnd-sev-pill] {
  /* Discreet severity token: drop the hard outline, render the chip as
     a soft tinted background (currentColor at ~12% opacity via
     color-mix). Text + tint share the same severity hue, which keeps
     the semantic colour intact while removing the heavy 1px border
     that read as a Word-1997 comment bubble. color-mix is in CSS Color
     Level 5, supported by all current evergreen browsers (Chrome 111+,
     Firefox 113+, Safari 16.2+). */
  border-color: transparent !important;
  background: color-mix(in srgb, currentColor 12%, transparent);
}

/* V5.6.2 polish: bezier alignment-line shimmer — subtle stroke-dashoffset
   crawl that suggests "active wire carrying signal" without distracting.
   Applied only to the straight horizontal line of the active finding. */
@keyframes rmv4-bezier-shimmer-anim {
  0% {
    stroke-dashoffset: 0;
  }
  100% {
    stroke-dashoffset: -24;
  }
}
.rmv4-bezier-shimmer {
  stroke-dasharray: 6 6;
  animation: rmv4-bezier-shimmer-anim 1.6s linear infinite;
}

/* V5.6.2: Canopée constellation logo — stars pulse gently, lines fade in. */
@keyframes canopee-star-pulse {
  0%,
  100% {
    opacity: 0.4;
  }
  50% {
    opacity: 0.85;
  }
}
@keyframes canopee-line-fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 0.25;
  }
}
.canopee-logo-star {
  opacity: 0.4;
  animation: canopee-star-pulse 2.5s ease-in-out infinite;
}
.canopee-logo-line {
  opacity: 0;
  animation: canopee-line-fade-in 0.5s ease-out forwards;
}

@keyframes banner-cursor-blink {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
}

/* StepRow progress bar — indeterminate animated stripe per finding 8.21.
   Used while a step is running. V5.5 will replace with determinate bar
   once duration estimation is added. */
@keyframes step-progress-stripe-scroll {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: 32px 0;
  }
}
.step-progress-stripe {
  background-image: repeating-linear-gradient(
    -45deg,
    rgba(255, 255, 255, 0.35) 0px,
    rgba(255, 255, 255, 0.35) 4px,
    rgba(255, 255, 255, 0.1) 4px,
    rgba(255, 255, 255, 0.1) 8px
  );
  background-size: 32px 100%;
  animation: step-progress-stripe-scroll 0.8s linear infinite;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html,
body,
#root {
  height: 100%;
  width: 100%;
  overflow: hidden;
}

body {
  font-family: var(--font-body);
  font-variant-numeric: tabular-nums;
  background: var(--bg);
  color: var(--bright);
  font-size: 13px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Scrollbar styling */
::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

::-webkit-scrollbar-track {
  background: transparent;
}

::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.1);
  border-radius: 3px;
}

::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 255, 255, 0.2);
}

/* Animations */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes pulse {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
  100% {
    opacity: 1;
  }
}

@keyframes pulseHighlight {
  0% {
    border-left-color: currentColor;
  }
  50% {
    border-left-color: transparent;
  }
  100% {
    border-left-color: currentColor;
  }
}

@keyframes drawLine {
  from {
    stroke-dashoffset: 1000;
  }
  to {
    stroke-dashoffset: 0;
  }
}

.fade-in-up {
  animation: fadeInUp 400ms ease-out forwards;
  opacity: 0;
}

.pulse-highlight {
  animation: pulseHighlight 500ms ease 3;
}

/* Toast */
.toast {
  position: fixed;
  bottom: 80px;
  left: 50%;
  transform: translateX(-50%);
  background: #1a1e28;
  border: 1px solid rgba(255, 255, 255, 0.15);
  color: #e8e8ec;
  padding: 10px 20px;
  border-radius: 8px;
  font-size: 13px;
  z-index: 1000;
  animation: fadeInUp 300ms ease-out;
  pointer-events: none;
}

/* Panel resize handle */
.resize-handle {
  width: 4px;
  cursor: col-resize;
  background: transparent;
  transition: background 200ms ease;
  flex-shrink: 0;
  position: relative;
  z-index: 10;
}

.resize-handle:hover,
.resize-handle.active {
  background: rgba(167, 139, 250, 0.4);
}

/* Selection */
::-moz-selection {
  background: var(--selection);
  color: var(--almost-white);
}
::selection {
  background: var(--selection);
  color: var(--almost-white);
}

/* RMv4 slice 17d: edge-shake animation when sev-up/sev-down hits the chain edge.
   Per reference's .fnd-action.is-edge animation. */
@keyframes rmv4-edge-shake {
  0%,
  100% {
    transform: translateX(0);
  }
  25% {
    transform: translateX(-2px);
  }
  75% {
    transform: translateX(2px);
  }
}

/* V5.1 polish: cascade currently-running pass pulses to surface the
   "live" sub-call. Subtle so it doesn't compete with the running
   progress stripe at the bottom of the row. */
@keyframes rmv4-cascade-pulse-anim {
  0%,
  100% {
    box-shadow: 0 0 0 rgba(255, 255, 255, 0);
  }
  50% {
    box-shadow: 0 0 8px rgba(255, 255, 255, 0.55);
  }
}
.rmv4-cascade-pulse {
  animation: rmv4-cascade-pulse-anim 1.4s ease-in-out infinite;
}

/* V5.1 polish: consolidation cell dot pulse — subtle scale-up while the
   group is actively consolidating findings. */
@keyframes rmv4-conso-pulse-anim {
  0%,
  100% {
    transform: scale(1);
    opacity: 1;
  }
  50% {
    transform: scale(1.18);
    opacity: 0.7;
  }
}
.rmv4-conso-pulse {
  animation: rmv4-conso-pulse-anim 1s ease-in-out infinite;
}

/* V5.1 polish: dedup spin — slow rotation on the final-conso disc while
   the cross-thematic merge is in progress. */
@keyframes rmv4-dedup-spin-anim {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.rmv4-dedup-spin {
  animation: rmv4-dedup-spin-anim 2.4s linear infinite;
  transform-origin: center;
}

/* W139 (2026-05-30 walk-20-bis) — frozen sections (behind the unfurl
 * frontier) drop their sticky footers so their Modifier button rides
 * inline at the section's end instead of stacking at viewport bottom.
 * Only the active/frontier section keeps the sticky Suivant footer.
 * Targets descendant elements with position:sticky inside a frozen
 * <section data-frozen="true">. Use !important to override the inline
 * style position:'sticky' set in Wizard.jsx S.sectionFooter. */
section[data-frozen='true'] [style*='position: sticky'],
section[data-frozen='true'] [style*='position:sticky'] {
  position: static !important;
}

/* 2026-06-25 (Arnaud): reader Ctrl+F search highlight. <mark class="readerSearchHit">
   wraps matched words in paragraph text. Theme-aware via the existing severity vars;
   subtle but clearly visible, doesn't fight the defined-term red brackets. */
mark.readerSearchHit {
  background: var(--sev-major, #e0a020);
  color: var(--bg, #0b0b0e);
  border-radius: 2px;
  padding: 0 1px;
}

/* 2026-10-13 — step status badges in the light theme: the dark theme's 1px
   neon outline reads as a hard stamp on paper. Tint instead of outline.
   DESIGN.md Register 2: "lines, not boxes"; Register 1 (dark canvas) unchanged. */
[data-theme='light'] .step-badge {
  border-color: transparent !important;
  background: color-mix(in srgb, currentColor 12%, transparent);
  border-radius: 3px;
  font-weight: 600;
}

/* 2026-10-14 (Arnaud: "in light mode the grey rectangle findings in steps are
   ugly"). StepFindingsList hard-codes dark-canvas colours (a black wash behind
   the list, near-black card borders). Light review mode: no boxes — the list
   sits on the page, findings separated by hairlines (DESIGN.md #2: whitespace
   as the divider; "if you can remove a border and the layout still reads,
   remove it"). Dark (Register 1) unchanged. */
[data-theme='light'] [data-step-findings] {
  background: transparent !important;
}
[data-theme='light'] [data-step-finding] {
  background: transparent !important;
  border: none !important;
  border-bottom: 1px solid var(--grid-line) !important;
  box-shadow: none !important;
  padding: 10px 4px !important;
}
[data-theme='light'] [data-step-finding]:last-child {
  border-bottom: none !important;
}
[data-theme='light'] [data-step-finding]:hover,
[data-theme='light'] [data-step-finding='matched'] {
  background: var(--wash-row-hover) !important;
}

/* 2026-10-14 — header secondary controls: buttons keep their size (no
   two-line labels); only the dropdowns give way when the bar is narrow. The
   primary action is pinned outside this group (Chrome.tsx primaryStyle). */
[data-chrome-secondary] > button {
  white-space: nowrap;
  flex-shrink: 0;
}
[data-chrome-secondary] > select {
  flex-shrink: 1;
  min-width: 80px;
}
@media (max-width: 1500px) {
  [data-chrome-resume-label] {
    display: none;
  }
}
/* Page transitions (2026-10-31). The router wraps each navigation in a view
   transition (main.tsx `defaultViewTransition`): the old page cross-fades into
   the new one. DESIGN.md rule 7 — motion confirms a state change, 150-250 ms,
   never longer. The app header (view-transition-name: app-header) does not
   fade: its breadcrumb switches at once while the page body cross-fades. */
::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 180ms;
  animation-timing-function: ease-out;
}

/* Switch, not fade: drop the old header snapshot (it would otherwise stay
   visible under the new one — a doubled breadcrumb) and show the new one as is. */
::view-transition-old(app-header) {
  display: none;
}
::view-transition-new(app-header) {
  animation: none;
}

@media (prefers-reduced-motion: reduce) {
  ::view-transition-group(*),
  ::view-transition-old(*),
  ::view-transition-new(*) {
    animation: none !important;
  }
}
/* "Can you sign it as is?" (SignVerdict.tsx). Register 2: no box, no banner —
   a kicker, the verdict in one line, then two short lists and a quiet footnote. */

._block_1gz9o_4 {
  margin: 0 0 28px;
  padding: 0 0 24px;
  border-bottom: 1px solid var(--grid-line);
  max-width: 720px;
}

._kicker_1gz9o_11 {
  margin: 0 0 6px;
  font-size: 13px;
  color: var(--dim);
}

._verdict_1gz9o_17 {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 8px;
  font-size: 20px;
  font-weight: 600;
}

._verdictDot_1gz9o_26 {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex: none;
}

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

._part_1gz9o_40 {
  margin-top: 18px;
}

._partTitle_1gz9o_44 {
  margin: 0 0 6px;
  font-size: 13px;
  font-weight: 600;
}

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

._item_1gz9o_56 {
  display: flex;
  align-items: baseline;
  gap: 10px;
  width: 100%;
  padding: 5px 8px;
  margin: 0 -8px;
  border: none;
  border-radius: 6px;
  background: none;
  font: inherit;
  font-size: 14px;
  color: inherit;
  text-align: left;
  cursor: pointer;
}

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

._dot_1gz9o_77 {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex: none;
  transform: translateY(-1px);
}

._point_1gz9o_85 {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 6px 0;
}

._pointName_1gz9o_92 {
  padding: 0;
  border: none;
  background: none;
  font: inherit;
  font-size: 14px;
  font-weight: 500;
  color: inherit;
  text-align: left;
}

button._pointName_1gz9o_92 {
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: var(--grid-line);
  text-underline-offset: 3px;
}

._suggestion_1gz9o_110 {
  font-size: 14px;
  line-height: 1.5;
  color: var(--mid);
}

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

._disclaimer_1gz9o_125 {
  margin: 16px 0 0;
  font-size: 12px;
  color: var(--dim);
}

._link_1gz9o_131 {
  padding: 0;
  border: none;
  background: none;
  font: inherit;
  color: inherit;
  text-decoration: underline;
  cursor: pointer;
}

._spinner_1gz9o_141 {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 2px solid var(--grid-line);
  border-top-color: var(--mid);
  animation: _verdictSpin_1gz9o_1 900ms linear infinite;
}

@keyframes _verdictSpin_1gz9o_1 {
  to {
    transform: rotate(360deg);
  }
}
/* 2026-10-31 — Destrier phase 3: the Plans page (DESIGN.md Register 2: one
   primary action per screen, whitespace divides, numbers aligned). */

._grid_1dxgz_4 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-top: 8px;
}

@media (max-width: 900px) {
  ._grid_1dxgz_4 {
    grid-template-columns: 1fr;
  }
}

._card_1dxgz_17 {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--grid-line);
  border-radius: 8px;
  padding: 24px;
  background: var(--bg-row);
}

._cardCurrent_1dxgz_26 {
  border-color: var(--brand-blue);
}

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

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

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

._for_1dxgz_51 {
  margin: 8px 0 0;
  font-size: 13px;
  color: var(--mid);
  line-height: 1.45;
}

._lines_1dxgz_58 {
  list-style: none;
  margin: 20px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 13px;
  color: var(--bright);
  line-height: 1.45;
  flex: 1;
}

._lines_1dxgz_58 li::before {
  content: '·';
  margin-right: 8px;
  color: var(--dim);
}

._action_1dxgz_77 {
  margin-top: 24px;
  min-height: 36px;
  display: flex;
  align-items: center;
}

._choose_1dxgz_84 {
  border: 1px solid var(--dim);
  background: none;
  color: var(--almost-white);
  border-radius: 6px;
  padding: 8px 14px;
  font: inherit;
  font-size: 13px;
  cursor: pointer;
}

a._choose_1dxgz_84 {
  display: inline-block;
  text-decoration: none;
}

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

._choose_1dxgz_84:disabled {
  opacity: 0.55;
  cursor: default;
}

._currentTag_1dxgz_109 {
  font-size: 13px;
  font-weight: 500;
  color: var(--brand-blue);
}

._current_1dxgz_109 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  border: 1px solid var(--grid-line);
  border-radius: 8px;
  padding: 16px 20px;
  margin-bottom: 24px;
}

._currentName_1dxgz_126 {
  font-size: 15px;
  font-weight: 600;
  color: var(--almost-white);
  display: flex;
  align-items: center;
  gap: 8px;
}

._currentMeta_1dxgz_135 {
  margin-top: 4px;
  font-size: 13px;
  color: var(--mid);
  font-variant-numeric: tabular-nums;
}

._badge_1dxgz_142 {
  font-size: 11px;
  font-weight: 500;
  color: var(--mid);
  border: 1px solid var(--grid-line);
  border-radius: 4px;
  padding: 1px 6px;
}

._notice_1dxgz_151 {
  font-size: 13px;
  color: var(--bright);
  margin: 0 0 16px;
}

._note_1dxgz_157 {
  font-size: 13px;
  color: var(--mid);
  margin-top: 16px;
}

/* 2026-11-01 — extra pages (Starter / Professional) */
._packs_1dxgz_164 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  border: 1px solid var(--grid-line);
  border-radius: 8px;
  padding: 20px 24px;
  margin-top: 24px;
}

._packs_1dxgz_164 ._for_1dxgz_51 {
  margin-top: 4px;
}

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

/* 2026-11-01 — usage this month: the higher of pages reviewed and AI use */
._bar_1dxgz_187 {
  margin-top: 10px;
  width: 320px;
  max-width: 100%;
  height: 6px;
  border-radius: 3px;
  background: var(--grid-line);
  overflow: hidden;
}

._barFill_1dxgz_197 {
  height: 100%;
  background: var(--brand-blue);
  border-radius: 3px;
}

._barFull_1dxgz_203 {
  background: var(--sev-crit);
}

/* 2026-11-01 — Monthly / Yearly switch (yearly = 12 months for the price of 10) */
._intervalRow_1dxgz_208 {
  display: inline-flex;
  border: 1px solid var(--grid-line);
  border-radius: 8px;
  padding: 3px;
  margin-bottom: 16px;
}

._intervalBtn_1dxgz_216 {
  border: none;
  background: none;
  color: var(--mid);
  font: inherit;
  font-size: 13px;
  padding: 6px 12px;
  border-radius: 6px;
  cursor: pointer;
}

._intervalOn_1dxgz_227 {
  background: var(--bg-row);
  color: var(--almost-white);
  font-weight: 500;
}
/* 2026-10-31 — Destrier landing page.
   DESIGN.md "Marketing register (landing page only)": display sizes 44-64 px,
   one decorative motion (the hero knight), a navy hero with one glow. Everything
   else Register 2: one filled blue button per screen, one 8 px radius, Lucide
   icons, whitespace over boxes. Colours only from the --brand-* tokens. */

._page_iyvhm_7 {
  height: 100vh;
  overflow-y: auto;
  background: #fff;
  color: var(--brand-ink);
  font-family: var(--font-ui);
  font-size: 17px;
  line-height: 1.6;
  --pad: max(16px, calc((100% - 1200px) / 2));
  scroll-behavior: smooth;
}

._page_iyvhm_7 *:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
}

/* ---------- nav ---------- */
._nav_iyvhm_25 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 20px var(--pad);
  background: #fff;
  color: var(--brand-ink);
  border-bottom: 1px solid var(--brand-line);
}
._navLinks_iyvhm_35 {
  display: flex;
  align-items: center;
  gap: 28px;
  font-size: 15px;
}
._navLink_iyvhm_35 {
  color: var(--brand-muted);
  text-decoration: none;
}
._navLink_iyvhm_35:hover {
  color: var(--brand-ink);
}
._lang_iyvhm_48 {
  display: flex;
  gap: 4px;
  font-size: 13px;
}
._langBtn_iyvhm_53 {
  font: inherit;
  background: none;
  border: none;
  padding: 4px 6px;
  color: var(--brand-muted);
  cursor: pointer;
  border-radius: 8px;
}
._langOn_iyvhm_62 {
  color: var(--brand-ink);
  font-weight: 600;
}
._signIn_iyvhm_66 {
  color: var(--brand-blue);
  font-weight: 600;
  text-decoration: none;
}
._brandLink_iyvhm_71 {
  text-decoration: none;
}

/* ---------- hero ---------- */
._hero_iyvhm_76 {
  position: relative;
  overflow: hidden;
  background: #fff;
  color: var(--brand-ink);
  min-height: calc(100vh - 76px);
  padding: clamp(32px, 7vh, 88px) var(--pad) 0;
  display: flex;
  flex-direction: column;
}
._glow_iyvhm_86 {
  position: absolute;
  right: -12%;
  top: -10%;
  width: 900px;
  height: 900px;
  background: radial-gradient(50% 50% at 50% 50%, rgba(24, 90, 189, 0.10) 0%, rgba(255, 255, 255, 0) 100%);
  pointer-events: none;
}
._heroGrid_iyvhm_95 {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  gap: 48px;
  align-items: center;
  flex: 1;
}
._eyebrow_iyvhm_103 {
  margin: 0 0 16px;
  font-size: 15px;
  font-weight: 600;
  color: var(--brand-blue);
}
._h1_iyvhm_109 {
  font-family: var(--font-brand);
  font-weight: 400;
  font-size: clamp(40px, 5vw, 64px);
  line-height: 1.05;
  letter-spacing: -0.01em;
  margin: 0 0 20px;
  text-wrap: balance;
}
._lead_iyvhm_118 {
  margin: 0 0 32px;
  max-width: 600px;
  font-size: 18px;
  color: var(--brand-muted);
}
._heroArt_iyvhm_124 {
  display: flex;
  justify-content: center;
}

/* The hero's sample page (SamplePage.tsx): a reviewed agreement as the Word
   file comes back. Severity colours = the app's light-mode --sev-* values. */
._paper_iyvhm_131 {
  width: 100%;
  max-width: 580px;
  margin: 0;
  background: #fff;
  border: 1px solid var(--brand-line);
  border-radius: 8px;
  box-shadow:
    0 1px 2px rgba(11, 27, 51, 0.06),
    0 28px 64px -16px rgba(11, 27, 51, 0.2);
  overflow: hidden;
}
._sevCritical_iyvhm_143 {
  --c: #b91c1c;
}
._sevMajor_iyvhm_146 {
  --c: #c2570a;
}
._sevOk_iyvhm_149 {
  --c: #15803d;
}
._paperBar_iyvhm_152 {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  background: var(--brand-blue-50);
  border-bottom: 1px solid var(--brand-line);
  font-size: 12px;
  color: var(--brand-muted);
}
._paperFile_iyvhm_162 {
  color: var(--brand-ink);
  font-weight: 500;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
._paperAgainst_iyvhm_170 {
  margin-left: auto;
  white-space: nowrap;
}
/* The page, with Word's comment pane on the right (pane = gap/2 + note + padding). */
._paperPage_iyvhm_175 {
  --note: 184px;
  --gap: 28px;
  --pane: calc(var(--note) + 16px + var(--gap) / 2);
  padding: 26px 16px 18px 28px;
  background: linear-gradient(
    to left,
    #f6f8fb 0 var(--pane),
    var(--brand-line) var(--pane) calc(var(--pane) + 1px),
    #fff calc(var(--pane) + 1px)
  );
}
._paperTitle_iyvhm_187 {
  margin: 0 calc(var(--pane) - 16px) 20px 0;
  font-family: var(--font-serif);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  text-align: center;
  color: var(--brand-ink);
}
._paperRow_iyvhm_197 {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--note);
  -moz-column-gap: var(--gap);
       column-gap: var(--gap);
  align-items: start;
  margin-bottom: 16px;
}
._paperRow_iyvhm_197:last-child {
  margin-bottom: 0;
}
._paperText_iyvhm_207 p {
  margin: 0;
  font-family: var(--font-serif);
  font-size: 13px;
  line-height: 1.55;
  color: #2a3340;
}
._paperText_iyvhm_207 ._paperHeading_iyvhm_214 {
  font-weight: 600;
  color: var(--brand-ink);
  margin-bottom: 2px;
}
._paper_iyvhm_131 mark {
  color: inherit;
  background: color-mix(in srgb, var(--c) 14%, transparent);
  border-bottom: 2px solid var(--c);
  padding: 0 1px;
}
._paperNote_iyvhm_225 {
  position: relative;
  padding: 8px 10px;
  background: #fff;
  border: 1px solid var(--brand-line);
  border-left: 3px solid var(--c);
  border-radius: 8px;
  font-size: 11.5px;
  line-height: 1.45;
  color: #2a3340;
}
/* The dashed lead from the comment to its paragraph, as in Word. */
._paperNote_iyvhm_225::before {
  content: '';
  position: absolute;
  right: calc(100% + 3px);
  top: 15px;
  width: calc(var(--gap) - 3px);
  border-top: 1px dashed var(--c);
}
._paperSev_iyvhm_245 {
  display: block;
  margin-bottom: 3px;
  font-size: 11px;
  font-weight: 600;
  color: var(--c);
}
/* "Can you sign it as is?" on top of the page (the app's verdict, app/SignVerdict.tsx). */
._paperVerdict_iyvhm_253 {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 10px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--brand-line);
  border-left: 4px solid var(--c);
  background: color-mix(in srgb, var(--c) 7%, #fff);
}
._paperKicker_iyvhm_263 {
  font-size: 12px;
  color: var(--brand-muted);
}
._paperVerdictLabel_iyvhm_267 {
  font-size: 15px;
  font-weight: 700;
  color: var(--c);
}
._paperVerdictNote_iyvhm_272 {
  flex-basis: 100%;
  font-size: 13px;
  color: var(--brand-ink);
}

/* ---------- a real deal's figures ---------- */
._proofGrid_iyvhm_279 {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 24px;
}
._statValue_iyvhm_284 {
  font-family: var(--font-brand);
  font-size: 40px;
  line-height: 1;
  color: var(--brand-ink);
}
._statUnit_iyvhm_290 {
  margin-left: 8px;
  font-size: 15px;
  color: var(--brand-blue);
}
._statNote_iyvhm_295 {
  margin-top: 8px;
  font-size: 14px;
  line-height: 1.45;
  color: var(--brand-muted);
}

/* ---------- dropzone ---------- */
._drop_iyvhm_303 {
  max-width: 600px;
  background: #fff;
  color: var(--brand-ink);
  border-radius: 8px;
  border: 1px solid var(--brand-line);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
  padding: 20px;
}
._dropArea_iyvhm_312 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 28px 16px;
  border: 1.5px dashed var(--brand-blue-100);
  border-radius: 8px;
  text-align: center;
  transition: background 150ms, border-color 150ms;
}
._dragging_iyvhm_323 {
  background: var(--brand-blue-50);
  border-color: var(--brand-blue);
}
._dropOr_iyvhm_327 {
  font-size: 14px;
  color: var(--brand-muted);
}
._primary_iyvhm_331 {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font: inherit;
  font-size: 16px;
  font-weight: 600;
  padding: 12px 20px;
  border: none;
  border-radius: 8px;
  background: var(--brand-blue);
  color: #fff;
  cursor: pointer;
  text-decoration: none;
  transition: background 150ms;
}
._primary_iyvhm_331:hover {
  background: var(--brand-blue-deep);
}
._primary_iyvhm_331:disabled {
  opacity: 0.6;
  cursor: default;
}
._fileRow_iyvhm_354 {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid var(--brand-line);
  font-size: 15px;
}
._fileRole_iyvhm_363 {
  font-size: 12px;
  font-weight: 600;
  color: var(--brand-muted);
}
._fileName_iyvhm_368 {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
._fileMeta_iyvhm_373 {
  color: var(--brand-muted);
  font-size: 13px;
  margin-left: 8px;
}
._textBtn_iyvhm_378 {
  font: inherit;
  font-size: 14px;
  background: none;
  border: none;
  padding: 0;
  color: var(--brand-blue);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
}
._dropActions_iyvhm_389 {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 16px;
}
._dropErr_iyvhm_397 {
  margin: 12px 0 0;
  font-size: 14px;
  color: var(--sev-crit);
}
._facts_iyvhm_402 {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
  font-size: 13px;
  color: var(--brand-muted);
}
._facts_iyvhm_402 li {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
._facts_iyvhm_402 svg {
  color: var(--brand-blue);
}
/* Under the drop area: the test document (button) and the anonymize tick, one row. */
._dropExtras_iyvhm_421 {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 20px;
  margin-top: 14px;
}
._dropExtras_iyvhm_421 ._secondary_iyvhm_428 {
  gap: 8px;
  align-items: center;
  font-size: 14px;
  padding: 9px 14px;
}
._anonymize_iyvhm_434 {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
}
._anonymize_iyvhm_434 input {
  accent-color: var(--brand-blue);
}
._anonymizeLabel_iyvhm_443 {
  font-size: 14px;
  font-weight: 600;
}
._anonymizeHint_iyvhm_447 {
  margin: 8px 0 0;
  font-size: 12px;
  line-height: 1.45;
  color: var(--brand-muted);
}
._consent_iyvhm_453 {
  margin: 8px 0 0;
  font-size: 12px;
  color: var(--brand-muted);
}
._consent_iyvhm_453 a {
  color: var(--brand-ink);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* ---------- sections ---------- */
._section_iyvhm_465 {
  padding: 96px var(--pad);
}
._tint_iyvhm_468 {
  background: var(--brand-blue-50);
}
._dark_iyvhm_471 {
  background: var(--brand-blue-50);
  color: var(--brand-ink);
}
._h2_iyvhm_475 {
  font-family: var(--font-brand);
  font-weight: 400;
  font-size: clamp(32px, 3.6vw, 48px);
  line-height: 1.1;
  letter-spacing: -0.01em;
  margin: 0 0 16px;
  text-wrap: balance;
}
._sectionLead_iyvhm_484 {
  margin: 0 0 56px;
  max-width: 640px;
  color: var(--brand-muted);
}
._dark_iyvhm_471 ._sectionLead_iyvhm_484 {
  color: var(--brand-muted);
}
._h3_iyvhm_492 {
  font-size: 18px;
  font-weight: 600;
  line-height: 1.35;
  margin: 0 0 8px;
}
._body_iyvhm_498 {
  margin: 0;
  color: var(--brand-muted);
}

/* method: five numbered steps in a row */
._steps_iyvhm_504 {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 32px;
  margin: 0;
  padding: 0;
  list-style: none;
}
._stepNum_iyvhm_512 {
  display: block;
  font-family: var(--font-brand);
  font-size: 40px;
  line-height: 1;
  color: var(--brand-blue);
  margin-bottom: 16px;
}

/* deliverable: text + picture */
._split_iyvhm_522 {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 56px;
  align-items: center;
}
._items_iyvhm_528 {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
/* Each item shows its screen: the chosen one is marked, the others invite a click. */
._item_iyvhm_528 {
  padding: 16px 18px;
  border-left: 3px solid transparent;
  border-radius: 8px;
  cursor: pointer;
}
._item_iyvhm_528:hover {
  background: rgba(255, 255, 255, 0.6);
}
._itemOn_iyvhm_543,
._itemOn_iyvhm_543:hover {
  background: #fff;
  border-left-color: var(--brand-blue);
  box-shadow: 0 1px 3px rgba(11, 27, 51, 0.06);
}
._itemBtn_iyvhm_549 {
  font: inherit;
  color: inherit;
  text-align: left;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
}
._itemOn_iyvhm_543 ._itemBtn_iyvhm_549 {
  color: var(--brand-blue);
}
._shot_iyvhm_561 {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 10;
  -o-object-fit: cover;
     object-fit: cover;
  -o-object-position: left top;
     object-position: left top;
  border: 1px solid var(--brand-line);
  border-radius: 8px;
  box-shadow: 0 24px 60px -20px rgba(11, 27, 51, 0.22);
}

/* why */
._whyGrid_iyvhm_573 {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 56px;
}
._whyBody_iyvhm_578 {
  margin: 0;
  font-size: 19px;
  line-height: 1.6;
}
._commitments_iyvhm_583 {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
._commitment_iyvhm_583 {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: 12px;
  font-weight: 500;
}
._commitment_iyvhm_583 svg {
  margin-top: 4px;
  color: var(--brand-blue);
}
._aside_iyvhm_601 {
  margin: 56px 0 0;
  font-family: var(--font-brand);
  font-size: 26px;
  line-height: 1.3;
  color: var(--brand-blue-deep);
}

/* compare table */
._tableWrap_iyvhm_610 {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
._table_iyvhm_610 {
  width: 100%;
  min-width: 860px;
  table-layout: fixed; /* the five vendor columns share the width evenly */
  border-collapse: collapse;
  font-size: 14px;
}
._table_iyvhm_610 th,
._table_iyvhm_610 td {
  text-align: left;
  vertical-align: top;
  padding: 14px 12px;
  border-bottom: 1px solid var(--brand-line);
}
._table_iyvhm_610 thead th {
  font-size: 13px;
  font-weight: 600;
  color: var(--brand-muted);
}
._table_iyvhm_610 thead th._us_iyvhm_633 {
  color: var(--brand-blue);
}
._table_iyvhm_610 thead th:first-child {
  width: 24%;
}
._table_iyvhm_610 tbody th {
  font-weight: 500;
}
._table_iyvhm_610 td._us_iyvhm_633 {
  background: #fff;
}
._cell_iyvhm_645 {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  line-height: 1.4;
}
._cell_iyvhm_645 svg {
  flex: none;
  margin-top: 1px;
}
._yes_iyvhm_655 {
  color: var(--brand-blue);
}
._partial_iyvhm_658 {
  color: #8a9ab3;
}
._no_iyvhm_661 {
  color: #b8c0cc;
}
._cellNote_iyvhm_664 {
  color: var(--brand-ink);
}
._no_iyvhm_661 + ._cellNote_iyvhm_664 {
  color: var(--brand-muted);
}
._tableNote_iyvhm_670 {
  margin: 20px 0 0;
  font-size: 13px;
  color: var(--brand-muted);
}

/* pricing */
._tiers_iyvhm_677 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}
._tier_iyvhm_677 {
  display: flex;
  flex-direction: column;
  padding: 28px;
  background: #fff;
  border: 1px solid var(--brand-line);
  border-radius: 8px;
}
._tierName_iyvhm_690 {
  font-size: 15px;
  font-weight: 600;
  color: var(--brand-blue);
}
._tierPrice_iyvhm_695 {
  margin: 12px 0 4px;
  font-family: var(--font-brand);
  font-size: 44px;
  line-height: 1;
}
._tierUnit_iyvhm_701 {
  font-family: var(--font-ui);
  font-size: 15px;
  color: var(--brand-muted);
  margin-left: 6px;
}
._tierFor_iyvhm_707 {
  margin: 8px 0 20px;
  font-size: 15px;
  color: var(--brand-muted);
}
._tierLines_iyvhm_712 {
  margin: 0 0 24px;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
  font-size: 15px;
  flex: 1;
}
._tierLines_iyvhm_712 li {
  display: grid;
  grid-template-columns: 18px 1fr;
  gap: 10px;
}
._tierLines_iyvhm_712 svg {
  margin-top: 4px;
  color: var(--brand-blue);
}
._secondary_iyvhm_428 {
  display: inline-flex;
  justify-content: center;
  font: inherit;
  font-size: 15px;
  font-weight: 600;
  padding: 11px 16px;
  border: 1px solid var(--brand-line);
  border-radius: 8px;
  background: #fff;
  color: var(--brand-ink);
  cursor: pointer;
  text-decoration: none;
}
._secondary_iyvhm_428:hover {
  border-color: var(--brand-blue);
}
._footnote_iyvhm_748 {
  margin: 24px 0 0;
  font-size: 13px;
  color: var(--brand-muted);
}
._footnote_iyvhm_748 a {
  color: var(--brand-blue);
  white-space: nowrap;
}

/* faq */
._faq_iyvhm_759 {
  max-width: 800px;
}
._faq_iyvhm_759 details {
  border-bottom: 1px solid var(--brand-line);
  padding: 18px 0;
}
._faq_iyvhm_759 summary {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  cursor: pointer;
  font-weight: 600;
  list-style: none;
}
._faq_iyvhm_759 summary::-webkit-details-marker {
  display: none;
}
._faq_iyvhm_759 summary::after {
  content: '+';
  font-weight: 400;
  color: var(--brand-blue);
}
._faq_iyvhm_759 details[open] summary::after {
  content: '−';
}
._faq_iyvhm_759 details p {
  margin: 10px 0 0;
  color: var(--brand-muted);
}

/* security */
._points_iyvhm_791 {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 32px;
}
._dark_iyvhm_471 ._body_iyvhm_498 {
  color: var(--brand-muted);
}

/* final band */
._final_iyvhm_801 {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 48px;
  align-items: center;
}

/* footer */
._footer_iyvhm_809 {
  padding: 56px var(--pad) 32px;
  background: #fff;
  border-top: 1px solid var(--brand-line);
  color: var(--brand-muted);
  font-size: 14px;
}
._footCols_iyvhm_816 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 32px;
}
._footCols_iyvhm_816 > div {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
._footCols_iyvhm_816 a {
  color: var(--brand-muted);
  text-decoration: none;
}
._footCols_iyvhm_816 a:hover,
._footBtn_iyvhm_831:hover {
  color: var(--brand-blue);
}
/* "Cookie settings" (reopens the banner): a button that looks like the footer links. */
._footBtn_iyvhm_831 {
  display: block;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  text-align: left;
  color: var(--brand-muted);
  cursor: pointer;
}
._footTitle_iyvhm_845 {
  margin: 0 0 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--brand-ink);
}
._disclaimer_iyvhm_851 {
  margin: 40px 0 0;
  padding-top: 20px;
  border-top: 1px solid var(--brand-line);
  font-size: 13px;
  line-height: 1.5;
}
._copyright_iyvhm_858 {
  margin: 8px 0 0;
  font-size: 13px;
}

/* nav menus: "Who it's for", "Use cases" */
._menu_iyvhm_864 {
  position: relative;
}
._menuBtn_iyvhm_867 {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font: inherit;
  font-size: 15px;
  background: none;
  border: none;
  padding: 0;
  color: var(--brand-muted);
  cursor: pointer;
}
._menuBtn_iyvhm_867:hover,
._menuBtn_iyvhm_867[aria-expanded='true'] {
  color: var(--brand-ink);
}
._menuPanel_iyvhm_883 {
  position: absolute;
  top: 100%;
  left: -12px;
  z-index: 20;
  min-width: 260px;
  margin-top: 0;
  padding: 16px 8px 8px;
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--brand-line);
  border-radius: 8px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}
._menuItem_iyvhm_898 {
  padding: 8px 12px;
  border-radius: 8px;
  color: var(--brand-ink);
  text-decoration: none;
  font-size: 15px;
}
._menuItem_iyvhm_898:hover {
  background: var(--brand-blue-50);
  color: var(--brand-blue);
}

/* use-case pages: links to the other pages of the same kind */
._related_iyvhm_911 {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 16px;
}
._relatedLink_iyvhm_917 {
  padding: 8px 14px;
  border: 1px solid var(--brand-line);
  border-radius: 8px;
  color: var(--brand-ink);
  text-decoration: none;
  font-size: 15px;
}
._relatedLink_iyvhm_917:hover {
  border-color: var(--brand-blue);
  color: var(--brand-blue);
}

/* ---------- responsive ---------- */
@media (max-width: 1100px) {
  ._steps_iyvhm_504 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  ._points_iyvhm_791 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 860px) {
  ._heroGrid_iyvhm_95,
  ._split_iyvhm_522,
  ._whyGrid_iyvhm_573,
  ._final_iyvhm_801,
  ._tiers_iyvhm_677 {
    grid-template-columns: minmax(0, 1fr);
  }
  ._heroArt_iyvhm_124 {
    justify-content: flex-start;
  }
  ._proofGrid_iyvhm_279 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  ._navLinks_iyvhm_35 ._navLink_iyvhm_35,
  ._navLinks_iyvhm_35 ._menu_iyvhm_864 {
    display: none;
  }
  ._section_iyvhm_465 {
    padding: 64px var(--pad);
  }
  ._footCols_iyvhm_816 {
    grid-template-columns: minmax(0, 1fr);
  }
}
@media (max-width: 560px) {
  ._steps_iyvhm_504,
  ._points_iyvhm_791 {
    grid-template-columns: minmax(0, 1fr);
  }
  /* Phone: each comment under its paragraph, no side pane. */
  ._paperPage_iyvhm_175 {
    padding: 20px 16px;
    background: #fff;
  }
  ._paperTitle_iyvhm_187 {
    margin-right: 0;
  }
  ._paperRow_iyvhm_197 {
    grid-template-columns: minmax(0, 1fr);
    row-gap: 8px;
  }
  ._paperNote_iyvhm_225::before {
    display: none;
  }
  ._statValue_iyvhm_284 {
    font-size: 32px;
  }
}
@media (prefers-reduced-motion: reduce) {
  ._page_iyvhm_7 {
    scroll-behavior: auto;
  }
}

/* Comparison: one competitor at a time (as on ivo.ai); pricing: monthly / yearly. */
._rivals_iyvhm_995,
._billing_iyvhm_996 {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0 0 24px;
}
._rivalsLabel_iyvhm_1003 {
  margin-right: 4px;
  font-size: 14px;
  color: var(--brand-muted);
}
._rival_iyvhm_995 {
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  padding: 8px 14px;
  border: 1px solid var(--brand-line);
  border-radius: 8px;
  background: #fff;
  color: var(--brand-ink);
  cursor: pointer;
}
._rival_iyvhm_995:hover {
  border-color: var(--brand-blue);
}
._rivalOn_iyvhm_1022 {
  border-color: var(--brand-blue);
  background: var(--brand-blue-50);
  color: var(--brand-blue);
}
._billingNote_iyvhm_1027 {
  font-size: 14px;
  font-weight: 600;
  color: var(--brand-blue);
}
/* The cookie banner (CookieBanner.tsx): a small card on every page, bottom right on
   the public website (clear of the dropzone), bottom left in the app (clear of the
   footer's primary button).
   Register 2: white, one 8 px radius, two buttons of equal weight (CNIL). */
._banner_1ho0v_5 {
  position: fixed;
  right: 16px;
  bottom: 16px;
  z-index: 1000;
  max-width: 420px;
  padding: 16px 18px;
  background: #fff;
  color: #0b1b33;
  border: 1px solid #e3e8ef;
  border-radius: 8px;
  box-shadow: 0 12px 40px -12px rgba(11, 27, 51, 0.25);
  font-family: 'DM Sans', 'Inter', system-ui, sans-serif;
  font-size: 13px;
  line-height: 1.5;
}
._left_1ho0v_21 {
  right: auto;
  left: 16px;
}
._text_1ho0v_25 {
  margin: 0 0 12px;
}
._text_1ho0v_25 a {
  color: #185abd;
}
._actions_1ho0v_31 {
  display: flex;
  gap: 8px;
}
._btn_1ho0v_35 {
  flex: 1;
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  padding: 9px 14px;
  border: 1px solid #c9d3e0;
  border-radius: 8px;
  background: #fff;
  color: #0b1b33;
  cursor: pointer;
}
._btn_1ho0v_35:hover {
  border-color: #185abd;
  color: #185abd;
}
@media (max-width: 560px) {
  ._banner_1ho0v_5 {
    left: 16px;
    max-width: none;
  }
}
