/* ===========================================================================
   Ledger Clear — "Register" identity layer
   ---------------------------------------------------------------------------
   A scoped visual system. Everything lives under `.lc` so it cannot collide
   with app.css, which is not token-driven (621 hardcoded colours against 464
   token usages) and therefore cannot be restyled by swapping :root.

   Concept: the interface as a modern civic register. Authority comes from
   structure and typography, not from shadows, gradients or floating cards.
   Colour is reserved almost entirely for state, so that state actually reads.

   Type: IBM Plex Sans carries everything readable and covers Greek.
         IBM Plex Mono has NO Greek coverage and is therefore restricted to
         identifiers, hashes, timestamps and numerals — never to translated
         strings.
   =========================================================================== */

.lc {
  /* -- ground ------------------------------------------------------------- */
  --lc-ink: #141a19;           /* near-black, faint green cast */
  --lc-ink-2: #46524f;         /* secondary prose */
  --lc-ink-3: #6d7975;         /* metadata; AA on paper at >=13px */
  --lc-paper: #f1f2ee;         /* off-white, green-grey bias */
  --lc-vellum: #fff;           /* raised surfaces */
  --lc-sunk: #e7e9e3;          /* recessed surfaces */

  /* -- rules -------------------------------------------------------------- */
  --lc-rule: #d3d7d0;          /* hairline */
  --lc-rule-2: #b4bcb5;        /* emphasised hairline */
  --lc-rule-ink: #141a19;      /* structural rule */

  /* -- the single brand hue ----------------------------------------------- */
  --lc-petrol: #0a4b57;        /* primary action, links */
  --lc-petrol-deep: #063740;
  --lc-petrol-bright: #0c7286; /* the only place saturation appears */
  --lc-petrol-wash: #e2eaea;

  /* -- state: the only other colour in the system ------------------------- */
  --lc-pass: #17603e;
  --lc-hold: #7d5200;
  --lc-fail: #94152c;
  --lc-pass-wash: #e2ece6;
  --lc-hold-wash: #f3ead9;
  --lc-fail-wash: #f4e2e5;

  /* -- type --------------------------------------------------------------- */
  --lc-sans: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --lc-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;

  --lc-t-micro: .75rem;    /* 12 */
  --lc-t-small: .8125rem;  /* 13 */
  --lc-t-base: .9375rem;   /* 15 */
  --lc-t-body: 1.0625rem;  /* 17 */
  --lc-t-lead: 1.3125rem;  /* 21 */
  --lc-t-title: 1.6875rem; /* 27 */
  --lc-t-display: 2.125rem;/* 34 */

  /* -- depth -------------------------------------------------------------- */
  --lc-shadow-xs: 0 1px 2px rgb(20 26 25 / .04);
  --lc-shadow-sm: 0 1px 3px rgb(20 26 25 / .06), 0 1px 2px rgb(20 26 25 / .04);
  --lc-shadow-md: 0 4px 12px rgb(20 26 25 / .07), 0 1px 3px rgb(20 26 25 / .04);
  --lc-shadow-lg: 0 8px 24px rgb(20 26 25 / .08), 0 2px 6px rgb(20 26 25 / .04);
  --lc-ring: 0 0 0 3px var(--lc-petrol-wash);

  /* -- measure & rhythm --------------------------------------------------- */
  --lc-measure: 34rem;
  --lc-gut: 1.5rem;
  --lc-tap: 2.75rem;

  /*
   * app.css line ~3470 forces Manrope with `!important` on .applicant-channel
   * and .operator-channel, which the register pages still carry as their
   * channel marker. Overriding a legacy !important is the one case that
   * justifies another; it applies to this element only, and descendants
   * inherit, so no other rule in this file needs it.
   */
  /* The register layer is the only stylesheet on these pages, so it owns the
     document reset. Without this the browser's default 8px body margin adds
     16px to every page height and pushes the footer out of view. */
  margin: 0;
  min-width: 20rem;

  font-family: var(--lc-sans) !important;
  font-size: var(--lc-t-body);
  line-height: 1.6;
  color: var(--lc-ink);
  background: var(--lc-paper);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-variant-numeric: tabular-nums;

  /* Every register page is a full-height column so the colophon sits on the
     bottom edge of the window rather than floating halfway up a short page.
     The landing already did this; it just was never generalised. */
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  min-height: 100dvh;
}

.lc > main { flex: 1 0 auto; }
.lc > .lc-foot { margin-top: auto; }

.lc *,
.lc *::before,
.lc *::after { box-sizing: border-box; }

.lc :focus-visible {
  outline: 2px solid var(--lc-petrol-bright);
  outline-offset: 2px;
  border-radius: 1px;
}

/* ---------------------------------------------------------------------------
   Typography
   --------------------------------------------------------------------------- */

.lc h1, .lc h2, .lc h3, .lc h4 {
  margin: 0;
  font-weight: 600;
  letter-spacing: -.021em;
  line-height: 1.14;
  text-wrap: balance;
}

.lc p { margin: 0; }

.lc-display { font-size: clamp(1.75rem, 1.2rem + 2.2vw, var(--lc-t-display)); }
.lc-title   { font-size: var(--lc-t-title); }
.lc-heading { font-size: var(--lc-t-lead); letter-spacing: -.014em; }

.lc-lede {
  max-width: 32rem;
  color: var(--lc-ink-2);
  font-size: var(--lc-t-lead);
  line-height: 1.5;
  letter-spacing: -.006em;
}

.lc-prose { max-width: var(--lc-measure); color: var(--lc-ink-2); }

/* Eyebrows are Plex Sans, never mono — they carry translated Greek. */
.lc-eyebrow {
  font-size: var(--lc-t-micro);
  font-weight: 600;
  letter-spacing: .11em;
  text-transform: uppercase;
  color: var(--lc-ink-3);
}
.lc-eyebrow--brand { color: var(--lc-petrol); }

/* Mono is for identifiers and numerals only — it has no Greek glyphs. */
.lc-id {
  font-family: var(--lc-mono);
  font-size: .9em;
  font-weight: 500;
  letter-spacing: .01em;
  font-variant-numeric: tabular-nums;
}

/*
 * Link colour is scoped to prose rather than applied to every `a`. A blanket
 * `.lc a` rule outranks single-class component rules like `.lc-btn` and
 * silently repaints their text.
 */
.lc-prose a,
.lc-lede a,
.lc-note a,
.lc-disclose__body a,
.lc-foot a,
.lc-facts a {
  color: var(--lc-petrol);
  text-decoration-thickness: 1px;
  text-underline-offset: .16em;
}
.lc-prose a:hover,
.lc-lede a:hover,
.lc-note a:hover,
.lc-disclose__body a:hover,
.lc-foot a:hover,
.lc-facts a:hover { color: var(--lc-petrol-bright); }

/* ---------------------------------------------------------------------------
   Layout
   --------------------------------------------------------------------------- */

.lc-shell {
  width: min(74rem, calc(100% - 2.5rem));
  margin-inline: auto;
}
.lc-shell--wide { width: calc(100% - 2.5rem); max-width: 120rem; }

/*
 * Spacing is `gap` on the container, never margins on children: a child rule
 * like `.lc p { margin: 0 }` outranks a `> * + *` margin and silently
 * collapses the rhythm.
 */
.lc-stack { display: flex; flex-direction: column; gap: var(--lc-gut); }
.lc-stack--tight { gap: .5rem; }
.lc-stack--loose { gap: 2.5rem; }

.lc-rule      { height: 1px; border: 0; background: var(--lc-rule); margin: 0; }
.lc-rule--ink { height: 2px; background: var(--lc-rule-ink); }

.lc-visually-hidden {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}

.lc-skip {
  position: absolute; left: -9999px;
  padding: .7rem 1rem; background: var(--lc-ink); color: var(--lc-paper);
}
.lc-skip:focus { left: 1rem; top: 1rem; z-index: 20; }

/* ---------------------------------------------------------------------------
   Masthead — a ruled band, not a floating bar
   --------------------------------------------------------------------------- */

.lc-mast {
  border-bottom: 2px solid var(--lc-rule-ink);
  background: var(--lc-vellum);
}
.lc-mast__inner {
  display: flex; align-items: center; gap: 1.25rem;
  min-height: 3.75rem;
}
.lc-mast__brand {
  /* The mark is a graphic, not a glyph — baseline alignment leaves it floating
     above the wordmark. Centre the row and align the text parts to each other. */
  display: flex; align-items: center; gap: .55rem;
  text-decoration: none; color: var(--lc-ink);
}

/* Brand mark sizing. components/brand_mark.html.twig sets --brand-mark-size
   inline and relied on app.css to consume it; the register layer owns it now. */
.lc .brand__mark {
  display: flex;
  flex: none;
  width: var(--brand-mark-size, 1.45rem);
  height: var(--brand-mark-size, 1.45rem);
}
.lc .brand__mark svg { display: block; width: 100%; height: 100%; }
.lc-mast__name { font-size: var(--lc-t-base); font-weight: 600; letter-spacing: -.012em; }
.lc-mast__sep { color: var(--lc-rule-2); }
.lc-mast__sys { font-size: var(--lc-t-micro); font-weight: 600; letter-spacing: .11em; text-transform: uppercase; color: var(--lc-ink-3); }
.lc-mast__end { margin-left: auto; display: flex; align-items: center; gap: 1rem; }

/*
 * Language switch — a segmented control, not two links with a slash.
 *
 * Still real navigation (two <a>s, `aria-current` on the active one) so it
 * works without JavaScript and reads correctly to assistive tech; the segment
 * styling only makes the choice look like the toggle it is.
 */
.lc-lang {
  display: inline-flex;
  align-items: stretch;
  border: 1px solid var(--lc-rule-2);
  border-radius: 3px;
  overflow: hidden;
  background: var(--lc-vellum);
  font-size: var(--lc-t-small);
  white-space: nowrap;
}
.lc-lang__short { display: none; }
.lc-lang a {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 2.25rem; padding: .25rem .8rem;
  font-weight: 500; text-decoration: none; color: var(--lc-ink-2);
  transition: color 140ms ease, background 140ms ease;
}
.lc-lang a + a { border-left: 1px solid var(--lc-rule-2); }
.lc-lang a:hover { background: var(--lc-sunk); color: var(--lc-ink); }
.lc-lang a[aria-current="page"] {
  background: var(--lc-petrol);
  color: #fff;
  font-weight: 600;
}
.lc-lang a[aria-current="page"]:hover { background: var(--lc-petrol-deep); color: #fff; }
.lc-lang a:focus-visible { outline: 2px solid var(--lc-petrol-bright); outline-offset: -2px; }

.lc-env {
  font-size: var(--lc-t-micro); font-weight: 600; letter-spacing: .11em; text-transform: uppercase;
  color: var(--lc-hold); padding: .2rem .45rem; border: 1px solid currentcolor; border-radius: 2px;
}

.lc-foot {
  /* One line of colophon does not need a skirt under it. Height is a tight
     clamp on viewport height so the strip never eats the page on short
     screens and never stretches on tall ones. */
  flex: 0 0 auto;
  min-height: clamp(2.25rem, 4.5vh, 2.9rem);
  margin-top: 2.75rem; border-top: 1px solid var(--lc-rule);
  padding-block: .45rem;
  font-size: var(--lc-t-small); color: var(--lc-ink-3);
}
.lc-foot__inner {
  display: flex; flex-wrap: wrap; gap: .4rem 1.5rem;
  align-items: center; justify-content: center;
  text-align: center;
  min-height: calc(clamp(2.25rem, 4.5vh, 2.9rem) - .9rem);
}

/* ---------------------------------------------------------------------------
   Controls
   --------------------------------------------------------------------------- */

.lc-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .55rem;
  min-height: var(--lc-tap); padding: .6rem 1.4rem;
  border: 1px solid var(--lc-petrol); border-radius: 10px;
  background: var(--lc-petrol); color: #fff;
  font: inherit; font-size: var(--lc-t-base); font-weight: 600; letter-spacing: -.004em;
  text-decoration: none; cursor: pointer;
  box-shadow: 0 1px 2px rgb(10 75 87 / .18), 0 6px 14px -8px rgb(10 75 87 / .4);
  transition: background 120ms ease, border-color 120ms ease, transform 140ms ease, box-shadow 140ms ease;
}
.lc-btn:hover {
  background: var(--lc-petrol-deep); border-color: var(--lc-petrol-deep); color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgb(10 75 87 / .2), 0 10px 20px -8px rgb(10 75 87 / .45);
}
.lc-btn:active { transform: none; box-shadow: 0 1px 2px rgb(10 75 87 / .18); }
.lc-btn:disabled,
.lc-btn[aria-disabled="true"] {
  opacity: .45; cursor: not-allowed; transform: none;
  box-shadow: none; pointer-events: none;
}
.lc-btn__arrow { font-size: 1.05em; line-height: 1; }

/* Hero CTA on the landing: the one action the page exists for, so it gets a
   touch more presence than a regular button without breaking the quiet skin. */
.lc-btn--hero {
  min-height: 3.25rem;
  padding: .8rem 1.7rem;
  font-size: var(--lc-t-lead);
  letter-spacing: -.01em;
  box-shadow: 0 8px 20px -10px rgb(12 114 134 / 45%);
}
.lc-btn--hero:hover { transform: translateY(-1px); }
.lc-btn--hero:active { transform: none; }

.lc-btn--quiet { background: transparent; color: var(--lc-petrol); border-color: var(--lc-rule-2); box-shadow: none; }
.lc-btn--quiet:hover { background: var(--lc-sunk); color: var(--lc-petrol-deep); border-color: var(--lc-ink-3); box-shadow: none; transform: none; }

.lc-btn--small { min-height: 2rem; padding: .25rem .7rem; font-size: var(--lc-t-small); }

.lc-link-quiet { color: var(--lc-ink-2); text-decoration-color: var(--lc-rule-2); }

/* Choice rows: ruled, not boxed. The rule moves to the left edge on selection. */
.lc-choices { display: flex; flex-direction: column; max-width: var(--lc-measure); }
.lc-choice {
  display: grid; grid-template-columns: 1.5rem minmax(0, 1fr) auto;
  gap: .85rem; align-items: start;
  padding: 1.05rem .9rem 1.05rem .75rem;
  border-top: 1px solid var(--lc-rule);
  border-left: 3px solid transparent;
  cursor: pointer;
}
.lc-choice:last-child { border-bottom: 1px solid var(--lc-rule); }
.lc-choice:hover { background: var(--lc-vellum); }
.lc-choice__mark {
  width: 1.05rem; height: 1.05rem; margin-top: .28rem; border-radius: 50%;
  border: 1.5px solid var(--lc-rule-2); background: var(--lc-vellum); flex: none;
}
.lc-choice__label { font-size: var(--lc-t-body); font-weight: 600; letter-spacing: -.008em; }
.lc-choice__meta  { display: block; margin-top: .18rem; font-size: var(--lc-t-small); font-weight: 400; color: var(--lc-ink-3); }
.lc-choice__aside { font-size: var(--lc-t-small); color: var(--lc-ink-3); white-space: nowrap; padding-top: .2rem; }

.lc-choice input { position: absolute; opacity: 0; pointer-events: none; }
.lc-choice:has(input:checked) { border-left-color: var(--lc-petrol); background: var(--lc-vellum); }
.lc-choice:has(input:checked) .lc-choice__mark { border: .32rem solid var(--lc-petrol); }
.lc-choice:has(input:focus-visible) { outline: 2px solid var(--lc-petrol-bright); outline-offset: -2px; }

/* ---------------------------------------------------------------------------
   Ruled fact lists — the register motif
   --------------------------------------------------------------------------- */

.lc-facts { border-top: 1px solid var(--lc-rule); max-width: var(--lc-measure); }
.lc-facts__row {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 1rem;
  padding: .8rem 0; border-bottom: 1px solid var(--lc-rule);
  font-size: var(--lc-t-base);
}
.lc-facts__row dt, .lc-facts__k { color: var(--lc-ink-2); margin: 0; }
.lc-facts__row dd, .lc-facts__v { margin: 0; font-weight: 500; text-align: right; }

/* Numbered sequence — used only where order is genuinely load-bearing. */
.lc-seq { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--lc-rule); max-width: var(--lc-measure); }
.lc-seq li {
  display: grid; grid-template-columns: 1.9rem minmax(0, 1fr); gap: .9rem;
  padding: .85rem 0; border-bottom: 1px solid var(--lc-rule);
}
.lc-seq__n {
  font-family: var(--lc-mono); font-size: var(--lc-t-small); font-weight: 500;
  color: var(--lc-ink-3); padding-top: .16rem;
}
.lc-seq__t { font-size: var(--lc-t-base); font-weight: 600; }
.lc-seq__d { display: block; margin-top: .1rem; font-size: var(--lc-t-small); font-weight: 400; color: var(--lc-ink-3); }
.lc-seq li[data-state="done"] .lc-seq__n { color: var(--lc-pass); }
.lc-seq li[data-state="current"] { border-left: 3px solid var(--lc-petrol); padding-left: .75rem; margin-left: -.78rem; }
.lc-seq li[data-state="current"] .lc-seq__n { color: var(--lc-petrol); }

/* Disclosure — "why we ask" */
.lc-disclose { border-top: 1px solid var(--lc-rule); max-width: var(--lc-measure); }
.lc-disclose > summary {
  list-style: none; cursor: pointer;
  min-height: var(--lc-tap); display: flex; align-items: center; gap: .5rem;
  font-size: var(--lc-t-base); font-weight: 600; color: var(--lc-petrol);
}
.lc-disclose > summary::-webkit-details-marker { display: none; }
.lc-disclose > summary::after { content: "+"; font-family: var(--lc-mono); font-weight: 400; color: var(--lc-ink-3); }
.lc-disclose[open] > summary::after { content: "\2212"; }
.lc-disclose__body { padding-bottom: 1.1rem; font-size: var(--lc-t-base); color: var(--lc-ink-2); }

/* Status marks. Colour appears here and almost nowhere else. */
.lc-mark {
  display: inline-flex; align-items: center; gap: .35rem;
  font-size: var(--lc-t-small); font-weight: 600; letter-spacing: -.002em;
  padding: .2rem .55rem; border-radius: 6px; white-space: nowrap;
  transition: background 150ms ease;
}
.lc-mark--pass { background: var(--lc-pass-wash); color: var(--lc-pass); }
.lc-mark--hold { background: var(--lc-hold-wash); color: var(--lc-hold); }
.lc-mark--fail { background: var(--lc-fail-wash); color: var(--lc-fail); }
.lc-mark--flat { background: var(--lc-sunk); color: var(--lc-ink-2); }
.lc-mark--live { background: var(--lc-petrol-wash); color: var(--lc-petrol); }
.lc-mark--live .lc-mark__dot { animation: lc-pulse 2s ease-in-out infinite; }

.lc-note {
  border-left: 3px solid var(--lc-rule-2);
  padding: .1rem 0 .1rem 1rem;
  font-size: var(--lc-t-base); color: var(--lc-ink-2);
  max-width: var(--lc-measure);
}
.lc-note--live { border-left-color: var(--lc-petrol); }
.lc-note--hold { border-left-color: var(--lc-hold); }

/* ---------------------------------------------------------------------------
   Applicant landing
   --------------------------------------------------------------------------- */

/*
 * The landing page is the one surface that gets warmth and motion. Everything
 * behind the login stays quiet — an investigator staring at a queue all day
 * does not want ambient light behind the data.
 *
 * The ground is two very low-alpha washes drawn from the palette that already
 * exists (petrol and the success green), not a new accent and not a hero
 * gradient. They drift slowly enough to read as light rather than as an
 * effect, and stop entirely under prefers-reduced-motion.
 */
.lc.applicant-channel {
  position: relative;
  /* A touch warmer and lighter than the working paper, so the washes have
     somewhere to sit. Still a chosen neutral, not a default grey. */
  background-color: #f4f5f0;
  /*
   * app.css already paints an animated cyan atmosphere on .applicant-channel
   * (`ledger-atmosphere`, ~line 3159). The register pages still carry that
   * class as their channel marker, so both systems were compositing at once.
   * Switch the legacy one off; this layer owns the ground.
   */
  background-image: none;
  animation: none;
}

/*
 * Every applicant page shares one ground so the world is consistent, but the
 * amount of light is tiered: full and slowly drifting on the landing, a third
 * of it and perfectly still on the working steps, where it must never pull
 * attention off the question being asked.
 */
.lc.applicant-channel::before,
.lc.applicant-channel::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: .3;
}

.lc.applicant-channel::before {
  background-image:
    radial-gradient(58% 48% at 78% 2%, rgb(12 114 134 / 42%), transparent 64%),
    radial-gradient(54% 46% at 2% 96%, rgb(23 96 62 / 28%), transparent 64%),
    radial-gradient(48% 42% at 99% 94%, rgb(125 82 0 / 20%), transparent 66%);
}

/*
 * A second layer moving on its own, longer cycle and in the opposite
 * direction. Two crossing fields make the light genuinely change over time;
 * a single drifting layer only ever slides.
 */
.lc.applicant-channel::after {
  background-image:
    radial-gradient(50% 44% at 22% 8%, rgb(39 168 188 / 26%), transparent 66%),
    radial-gradient(46% 40% at 88% 62%, rgb(10 75 87 / 20%), transparent 66%);
}

.lc.applicant-home::before {
  opacity: 1;
  /* Scaled past the edges so the slow drift never exposes a seam. */
  animation: lc-drift 26s ease-in-out infinite alternate;
  will-change: transform;
}

.lc.applicant-home::after {
  opacity: .85;
  animation: lc-drift-alt 38s ease-in-out infinite alternate;
  will-change: transform;
}

/*
 * The washes sit behind the page, not behind the canvas. Scoped to the page
 * landmarks on purpose — a blanket `> *` would override the skip link's own
 * `position: absolute` and drop it into the layout above the masthead.
 */
.lc.applicant-channel > header,
.lc.applicant-channel > main,
.lc.applicant-channel > footer { position: relative; z-index: 1; }

/* A hairline of light along the very top, so the masthead sits on something. */
.lc.applicant-channel .lc-mast {
  background: linear-gradient(to bottom, rgb(255 255 255 / 72%), rgb(255 255 255 / 26%));
  backdrop-filter: saturate(1.2) blur(6px);
}

@keyframes lc-drift {
  from { transform: scale(1.1) translate3d(0, 0, 0); }
  to   { transform: scale(1.2) translate3d(-3.2%, 2.4%, 0); }
}

@keyframes lc-drift-alt {
  from { transform: scale(1.16) translate3d(2.6%, 1.4%, 0); }
  to   { transform: scale(1.08) translate3d(-1.8%, -2.2%, 0); }
}

/*
 * The landing is composed as a screen, not a scroll: the page is a column, the
 * main region takes the slack, and the footer rides at the bottom of the
 * viewport. Vertical rhythm is tied to viewport height as well as width, so a
 * laptop at 1440x800 sees the whole thing — footer included — without
 * scrolling, and a short window simply tightens up instead of overflowing.
 */
.lc.applicant-home {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  min-height: 100dvh;
}
.lc.applicant-home > main { flex: 1 1 auto; display: flex; flex-direction: column; }
.lc.applicant-home .lc-foot { margin-top: 0; }

.lc-home {
  display: grid;
  /* Auto block margins centre the content without the clipping a flex
     `justify-content: center` causes once the content outgrows the viewport. */
  margin-block: auto;
  gap: clamp(1.75rem, 4vh, 3rem);
  padding-block: clamp(1.5rem, 5vh, 3.5rem) clamp(1.5rem, 4vh, 3rem);
  align-items: start;
}
/* The `.lc` prefix out-specifies the `.lc h1` `text-wrap: balance` base rule —
   without it the nowrap half of the shorthand silently loses and the title
   can still wrap. */
.lc .lc-home__title {
  margin-top: .4rem;
  /* One line, always: the size is keyed to the longest translation
     (Greek, ~21em em-width) fitting the narrowest lead column (~440px at
     64rem) and the smallest shell (292px at 20rem). Ellipsis is only the
     font-fallback safety net — with Plex Sans loaded it never engages. */
  font-size: clamp(0.8rem, 4.3vw, 1.28rem);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lc-home__lede  { margin-top: .9rem; font-size: clamp(1rem, .95rem + .35vw, 1.25rem); }
.lc-home__act {
  display: flex; flex-wrap: wrap; align-items: center; gap: .8rem .9rem;
}
.lc-home__act > .lc-home__sec { flex: 0 0 100%; margin: 0; }
.lc-home__sec   { letter-spacing: .09em; }
/* The security line is prose, not a control — it keeps its own line. */
.lc-home__invite { font-size: var(--lc-t-small); }

/* Trust strip: the three one-line reasons, ruled on top. Reuses the
   long-standing value_* copy that was never rendered before. */
.lc-values {
  list-style: none; margin: .25rem 0 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: .4rem 1.6rem;
  border-top: 1px solid var(--lc-rule);
}
.lc-values__item {
  display: flex; align-items: center; gap: .45rem;
  padding-top: .7rem;
  font-size: var(--lc-t-small); color: var(--lc-ink-2);
}
.lc-values__mark {
  width: .95rem; height: .95rem; flex: none; color: var(--lc-petrol);
}
.lc-values__mark svg {
  width: 100%; height: 100%; display: block;
  fill: none; stroke: currentColor; stroke-width: 2.2;
  stroke-linecap: round; stroke-linejoin: round;
}
.lc-home__seq   { margin-top: .5rem; }
.lc-home__lead  { gap: clamp(1.25rem, 3.5vh, 2.5rem); }
.lc-home__register { gap: clamp(1.25rem, 3.5vh, 2.5rem); }

/* ---- "What you will need" — a checklist, not a data table ---------------- */

.lc-needs { list-style: none; margin: .5rem 0 0; padding: 0; display: flex; flex-direction: column; }
.lc-needs__row {
  display: grid;
  grid-template-columns: 1.15rem minmax(0, 1fr);
  gap: .8rem;
  padding: .7rem 0;
  border-bottom: 1px solid var(--lc-rule);
}
.lc-needs__row:first-child { border-top: 1px solid var(--lc-rule); }
/* An icon per item, not a tick. A pre-ticked checkbox reads as "you have already
   done this" — these are things to fetch before you start, so a tick was telling
   the applicant the opposite of the truth. */
.lc-needs__icon {
  width: 1.25rem; height: 1.25rem; margin-top: .1rem;
  color: var(--lc-petrol); flex: none;
}
.lc-needs__icon svg {
  width: 100%; height: 100%; display: block;
  fill: none; stroke: currentColor; stroke-width: 1.5;
  stroke-linecap: round; stroke-linejoin: round;
}
.lc-needs__label { display: block; font-size: var(--lc-t-base); font-weight: 600; }
.lc-needs__note  { display: block; margin-top: .1rem; font-size: var(--lc-t-small); color: var(--lc-ink-2); }

/* ---- the rule that walks the steps -------------------------------------- */

.lc-seq--walk { position: relative; }
.lc-seq__marker {
  position: absolute;
  left: -3px;
  top: 0;
  width: 3px;
  background: var(--lc-petrol);
  border-radius: 1px;
  transition: transform 620ms cubic-bezier(.65, 0, .35, 1), height 620ms cubic-bezier(.65, 0, .35, 1);
  will-change: transform, height;
}
/* Static fallback: with no JS the rule simply rests on the first step. */
.lc-seq--walk:not(.is-walking) > li:first-of-type {
  border-left: 3px solid var(--lc-petrol);
  padding-left: .75rem;
  margin-left: -.78rem;
}
/* The active row lifts on a soft petrol wash that fades out to the right, so
   the highlight reads as light spreading from the rule rather than as a block. */
.lc-seq--walk > li {
  transition: background-image 520ms ease, color 320ms ease;
  background-image: linear-gradient(90deg, rgb(12 114 134 / 0%), rgb(12 114 134 / 0%));
}
.lc-seq--walk > li .lc-seq__n,
.lc-seq--walk > li .lc-seq__t,
.lc-seq--walk > li .lc-seq__d { transition: color 320ms ease; }
.lc-seq--walk > li[data-walk-active] {
  background-image: linear-gradient(90deg, rgb(12 114 134 / 13%), rgb(12 114 134 / 5%) 55%, rgb(12 114 134 / 0%));
}
.lc-seq--walk > li[data-walk-active] .lc-seq__n { color: var(--lc-petrol); }
.lc-seq--walk > li[data-walk-active] .lc-seq__t { color: var(--lc-ink); }
.lc-seq--walk > li[data-walk-active] .lc-seq__d { color: var(--lc-ink-2); }
.lc-seq--walk > li:not([data-walk-active]) .lc-seq__t { color: var(--lc-ink-2); }

/*
 * Height budget. On a short window the landing compresses rather than pushing
 * the footer out of view: row padding, section gaps and the type scale all
 * step down together so the composition stays proportional instead of merely
 * cropped. Below ~640px tall there is nothing sensible left to give and the
 * page simply scrolls.
 */
@media (min-width: 64rem) and (max-height: 60rem) {
  .lc-home { padding-block: 1.35rem 1.1rem; gap: 2rem; }
  .lc-home__lead,
  .lc-home__register { gap: 1.35rem; }
  .lc-home__title { margin-top: .2rem; }
  .lc-home__lede { margin-top: .6rem; }
  .lc-home__act { gap: .7rem; }
  .lc-needs { margin-top: .3rem; }
  .lc-needs__row { padding-block: .42rem; }
  .lc-home__seq { margin-top: .3rem; }
  .lc-home .lc-seq > li { padding-block: .46rem; }
  .lc-disclose > summary { min-height: 2.25rem; }
  .lc.applicant-home .lc-mast__inner { min-height: 3.25rem; }
}

@media (min-width: 64rem) and (max-height: 50rem) {
  .lc-home { padding-block: .8rem .7rem; gap: 1.4rem; }
  .lc-home__lead,
  .lc-home__register { gap: .95rem; }
  .lc-home__title { font-size: clamp(0.8rem, 4vw, 1.1rem); }
  .lc-home__lede { margin-top: .45rem; }
  .lc-needs__row { padding-block: .28rem; }
  .lc-home .lc-seq > li { padding-block: .32rem; }
  .lc-needs__note,
  .lc-home .lc-seq__d { font-size: var(--lc-t-micro); }
  .lc-disclose > summary { min-height: 1.9rem; }
  .lc.applicant-home .lc-mast__inner { min-height: 2.9rem; }
}

/* ---- one page-load sequence, then the page is still ---------------------- */

@keyframes lc-enter {
  from { opacity: 0; transform: translate3d(0, 12px, 0); }
  to   { opacity: 1; transform: none; }
}

@keyframes lc-enter-row {
  from { opacity: 0; transform: translate3d(0, 8px, 0); }
  to   { opacity: 1; transform: none; }
}

.lc-home__lead > *,
.lc-home__register > * {
  animation: lc-enter 700ms cubic-bezier(.22, 1, .36, 1) both;
}
.lc-home__lead     > *:nth-child(1) { animation-delay: 60ms; }
.lc-home__lead     > *:nth-child(2) { animation-delay: 170ms; }
.lc-home__register > *:nth-child(1) { animation-delay: 240ms; }
.lc-home__register > *:nth-child(2) { animation-delay: 330ms; }
.lc-home__register > *:nth-child(3) { animation-delay: 420ms; }

/* The rows cascade behind their own heading, so the register fills in like a
   list being written rather than appearing as one block. */
.lc-home .lc-needs__row,
.lc-home .lc-seq > li {
  animation: lc-enter-row 560ms cubic-bezier(.22, 1, .36, 1) both;
}
.lc-home .lc-needs__row:nth-child(1) { animation-delay: 300ms; }
.lc-home .lc-needs__row:nth-child(2) { animation-delay: 355ms; }
.lc-home .lc-needs__row:nth-child(3) { animation-delay: 410ms; }
.lc-home .lc-needs__row:nth-child(4) { animation-delay: 465ms; }
.lc-home .lc-seq > li:nth-of-type(1) { animation-delay: 480ms; }
.lc-home .lc-seq > li:nth-of-type(2) { animation-delay: 535ms; }
.lc-home .lc-seq > li:nth-of-type(3) { animation-delay: 590ms; }
.lc-home .lc-seq > li:nth-of-type(4) { animation-delay: 645ms; }

/*
 * The walking rule fades in once the rows have settled, so it does not race
 * the entrance. Opacity only — `lc-enter` also animates `transform`, and with
 * `fill: both` its final `transform: none` would permanently outrank the
 * inline translate the script uses to move the marker.
 */
@keyframes lc-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.lc-home .lc-seq__marker { animation: lc-fade-in 420ms ease 900ms both; }

/*
 * The primary call to action. This is the one dominant element on the page, so
 * it is sized up and given a slow outward pulse. The pulse rides on a
 * pseudo-element ring rather than the button's own box-shadow, so it never
 * fights the hover state for the same property.
 */
.lc-home .lc-btn {
  position: relative;
  min-height: 3.4rem;
  /* Wide enough to read as the page's one dominant action, capped so it never
     stretches past the measure of the text above it. */
  min-width: min(18rem, 100%);
  padding: .9rem 2.4rem;
  font-size: 1.0625rem;
  letter-spacing: -.006em;
  border-radius: 10px;
  transition: background 160ms ease, border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}
.lc-home .lc-btn .lc-btn__arrow { font-size: 1.15em; }

/* Expanding ring for primary CTAs. Keep this name distinct from lc-pulse
   (opacity blink used by status marks) so later keyframes cannot clobber it. */
@keyframes lc-cta-pulse {
  0%   { box-shadow: 0 0 0 0 rgb(10 75 87 / 34%); }
  70%  { box-shadow: 0 0 0 15px rgb(10 75 87 / 0%); }
  100% { box-shadow: 0 0 0 0 rgb(10 75 87 / 0%); }
}
.lc-home .lc-btn::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  animation: lc-cta-pulse 2.8s ease-out 1.5s infinite;
}
/* Once someone is on it, the invitation has done its job. */
.lc-home .lc-btn:hover::after,
.lc-home .lc-btn:focus-visible::after { animation: none; }

@media (max-height: 50rem) {
  .lc-home .lc-btn { min-height: 3rem; min-width: min(16rem, 100%); padding: .7rem 2rem; font-size: 1rem; }
}
.lc-home .lc-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgb(10 75 87 / 22%);
}
.lc-home .lc-btn:active { transform: translateY(0); box-shadow: none; }
.lc-home .lc-btn .lc-btn__arrow { transition: transform 200ms cubic-bezier(.22, 1, .36, 1); }
.lc-home .lc-btn:hover .lc-btn__arrow { transform: translateX(3px); }

/* background-color, not the `background` shorthand — the shorthand would reset
   background-image and wipe the active row's wash on hover. */
.lc-home .lc-needs__row { transition: background-color 160ms ease; }
.lc-home .lc-needs__row:hover,
.lc-home .lc-seq > li:hover { background-color: rgb(255 255 255 / 45%); }

/* Two columns once there is genuinely room: the pitch on the left, the
   register of what this actually involves on the right. */
@media (min-width: 64rem) {
  .lc-home {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: clamp(3rem, 7vw, 6rem);
  }
  .lc-home__lead { position: sticky; top: 3rem; padding-right: 1rem; }
  .lc-home__register { padding-top: .35rem; }
  .lc-home .lc-facts,
  .lc-home .lc-seq,
  .lc-home .lc-disclose { max-width: none; }
}

/* ---------------------------------------------------------------------------
   Applicant step screen — rail beside a single measure
   --------------------------------------------------------------------------- */

/* A step asks exactly one thing. Three columns: the thread says where you are,
   the measure carries the question, and the aside answers "why do you need
   this?" in place. The previous layout capped the step at 58rem and left the
   right third of the shell empty — the aside now earns that space instead. */

.lc-step {
  display: grid; gap: 2.5rem; align-items: start;
  padding-block: clamp(2rem, 5vw, 3.5rem) 0;
}
.lc-step__main { min-width: 0; max-width: var(--lc-measure); }

/* The header is one line: the step position runs inline with the question,
   baseline-aligned, instead of a stacked display hero that pushed the form
   below the fold. The lede drops to a compact supporting line (collapses when
   empty — see the scaffold rules below). */
.lc-step__head {
  display: flex; flex-wrap: wrap; align-items: baseline;
  column-gap: .9rem;
}
.lc-step__head > .lc-eyebrow { flex: 0 0 auto; }
/* One line, always: a long title drops to its own flex line and the clamp is
   keyed to the longest Greek heading (~27em wide) fitting the 34rem measure
   and the smallest shell (292px at 20rem). Ellipsis only covers font-fallback. */
.lc .lc-step__title {
  margin: 0;
  font-size: clamp(0.67rem, 3.35vw, 1.25rem);
  line-height: 1.15;
  letter-spacing: -.028em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lc-step__lede  { flex: 1 1 100%; margin: .35rem 0 0; max-width: 42ch; color: var(--lc-ink-2); }
.lc-step__facts { margin-top: .65rem; }
/* Actions sit side by side. Stacking them made the primary and secondary read
   as two separate decisions rather than one choice, and pushed the fold down.
   Anything that is not a control (the save note) is forced onto its own line. */
.lc-step__act {
  display: flex; flex-direction: row; flex-wrap: wrap;
  align-items: center; gap: .7rem .8rem;
}
.lc-step__act > .lc-step__save,
.lc-step__act > .lc-eyebrow,
.lc-step__act > .notice {
  /* flex-basis alone still shrinks to fit beside the button; shrink:0 is what
     actually forces the note onto its own line. */
  flex: 0 0 100%; margin: 0;
}
/* Reassurance, not a label: a whole sentence in letterspaced caps is slow to
   read, and Greek runs long enough to wrap onto two shouting lines. */
.lc-step__save  { font-size: var(--lc-t-small); color: var(--lc-ink-3); max-width: 42ch; }

/* Progress as a thread, not a boxed table of contents. A rule runs behind the
   dots and the travelled portion fills green (the template sets --lc-rail-fill
   inline). Completed steps take a tick; the current step lifts onto its own
   card with a breathing ring, so "you are here" reads at a glance. */
.lc-rail__label { margin-bottom: .7rem; }
.lc-rail__seq { list-style: none; margin: 0; padding: 0; border: 0; position: relative; }
.lc-rail__seq::before,
.lc-rail__seq::after {
  content: ""; position: absolute; left: .42rem; top: 1.05rem;
  width: 2px; margin-left: -1px; border-radius: 1px;
}
.lc-rail__seq::before { bottom: 1.05rem; background: var(--lc-rule); }
.lc-rail__seq::after {
  height: calc((100% - 2.1rem) * var(--lc-rail-fill, 0));
  background: var(--lc-pass);
  transition: height 600ms cubic-bezier(.22, 1, .36, 1);
}
.lc-rail__seq > li {
  display: block; position: relative; margin: 0; border: 0; border-radius: 6px;
  padding: .52rem .6rem .52rem 1.7rem;
}
/* The generic .lc-seq current-state rule pulls the row left onto its own
   border; on the thread that dragged the label under the dot. */
.lc-rail__seq > li[data-state="current"] {
  border-left: 0; margin-left: 0;
  background: var(--lc-vellum);
  box-shadow:
    0 1px 2px rgb(20 26 25 / .06),
    0 10px 22px -16px rgb(20 26 25 / .35),
    inset 0 0 0 1px var(--lc-rule);
}
.lc-rail__dot {
  position: absolute; left: 0; top: .68rem; width: .85rem; height: .85rem;
  border-radius: 50%; background: var(--lc-paper);
  border: 1.5px solid var(--lc-rule-2); box-sizing: border-box;
}
.lc-rail__seq > li[data-state="done"] .lc-rail__dot {
  background: var(--lc-pass) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.2 6.4 4.8 9 9.8 3.2' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / .55rem no-repeat;
  border-color: var(--lc-pass);
}
/* A ring that breathes: a static halo fixes the position, the animated ring
   draws the eye without moving the layout. Reduced-motion users get neither. */
.lc-rail__seq > li[data-state="current"] .lc-rail__dot {
  background: var(--lc-petrol); border-color: var(--lc-petrol);
  box-shadow: 0 0 0 3px rgb(10 75 87 / 16%);
}
.lc-rail__seq > li[data-state="current"] .lc-rail__dot::after {
  content: ""; position: absolute; inset: -3px; border-radius: 50%;
  animation: lc-rail-pulse 2.4s cubic-bezier(.22, 1, .36, 1) infinite;
}
@keyframes lc-rail-pulse {
  0%   { box-shadow: 0 0 0 0 rgb(10 75 87 / 32%); }
  70%  { box-shadow: 0 0 0 11px rgb(10 75 87 / 0%); }
  100% { box-shadow: 0 0 0 0 rgb(10 75 87 / 0%); }
}
.lc-rail .lc-seq__t { font-size: var(--lc-t-small); font-weight: 500; color: var(--lc-ink-3); }
.lc-rail__seq > li[data-state="done"] .lc-seq__t { color: var(--lc-ink-2); }
.lc-rail__seq > li[data-state="current"] .lc-seq__t {
  font-size: var(--lc-t-base); font-weight: 700; color: var(--lc-ink);
}
.lc-rail .lc-seq__d { font-size: var(--lc-t-micro); color: var(--lc-petrol); }

/* Segmented progress for narrow widths — one bar per chapter, and only the
   active chapter is named. Completed segments rest green; the active one
   draws its fill on entry, a small moment of forward motion on every step.
   Wide screens keep the dotted thread above and never see this. */
.lc-track { display: none; }
.lc-track__seq { list-style: none; margin: 0; padding: 0; display: flex; gap: .35rem; }
.lc-track__seg {
  position: relative; overflow: hidden;
  flex: 1 1 0; height: .3rem; border-radius: 2px;
  background: var(--lc-rule);
}
.lc-track__seg::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit;
  background: var(--lc-petrol);
  transform: scaleX(0); transform-origin: left;
}
.lc-track__seg[data-state="done"]::after { background: var(--lc-pass); transform: scaleX(1); }
.lc-track__seg[data-state="current"] {
  animation: lc-track-seg-pulse 2.4s ease-in-out 1.2s infinite;
}
.lc-track__seg[data-state="current"]::after {
  animation: lc-track-draw .8s cubic-bezier(.22, 1, .36, 1) .15s forwards;
}
@keyframes lc-track-draw { to { transform: scaleX(1); } }
@keyframes lc-track-seg-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgb(10 75 87 / 28%); }
  50%      { box-shadow: 0 0 0 5px rgb(10 75 87 / 0%); }
}
/* The chapter name lands just after the bar finishes drawing. */
.lc-track__now {
  margin-top: .55rem;
  font-size: var(--lc-t-small); font-weight: 650; color: var(--lc-ink);
  animation: lc-track-now .5s ease .55s both;
}
@keyframes lc-track-now { from { opacity: 0; transform: translateY(3px); } }

/* The aside is quiet by default — it must never compete with the question.
   A soft panel keeps it present without shouting. */
.lc-step__aside { min-width: 0; }
.lc-aside {
  padding: 1.1rem 1.2rem;
  border: 1px solid var(--lc-rule); border-radius: 6px;
  background: var(--lc-vellum);
  box-shadow: 0 1px 2px rgb(20 26 25 / .04);
  display: flex; flex-direction: column; gap: 1.4rem;
}
.lc-aside__t {
  font-size: var(--lc-t-micro); font-weight: 600; text-transform: uppercase;
  letter-spacing: .09em; color: var(--lc-ink-3); margin-bottom: .4rem;
}
.lc-aside__p { font-size: var(--lc-t-small); line-height: 1.55; color: var(--lc-ink-2); }
.lc-aside__list { list-style: none; margin: .1rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.lc-aside__list li {
  font-size: var(--lc-t-small); color: var(--lc-ink-2);
  padding-left: 1.05rem; position: relative; line-height: 1.5;
}
.lc-aside__list li::before {
  content: ""; position: absolute; left: 0; top: .5rem;
  width: .3rem; height: .3rem; border-radius: 50%; background: var(--lc-rule-2);
}

.lc-form { margin: 0; }

/* Below the grid breakpoint the thread collapses into the segmented bar: the
   rail would otherwise stack as a full table of contents above the question
   and push the task under the fold. The list is clipped, not dropped, so
   assistive tech keeps the whole sequence; the KYB desk's two-column grid
   would squeeze the bar into a side column, so it flattens too. */
@media (max-width: 59.99rem) {
  .lc-step { gap: 1.75rem; }
  .lc .kyb-chapter { grid-template-columns: minmax(0, 1fr); }
  .lc-rail__label { display: none; }
  .lc-rail__seq {
    position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
    overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
  }
  .lc-track { display: block; }
}

@media (min-width: 60rem) {
  .lc-step {
    grid-template-columns: 13rem minmax(0, var(--lc-measure)) minmax(0, 17rem);
    column-gap: clamp(2rem, 4.5vw, 4rem);
  }
  .lc-rail, .lc-step__aside { position: sticky; top: 2.5rem; }
}
/* Between the two breakpoints the aside would squeeze the measure, so it drops
   under the question rather than shrinking it. */
@media (min-width: 60rem) and (max-width: 78rem) {
  .lc-step { grid-template-columns: 13rem minmax(0, 1fr); }
  .lc-step__aside { grid-column: 2; position: static; padding-top: .5rem; }
}

/* ---------------------------------------------------------------------------
   Form fields
   --------------------------------------------------------------------------- */

.lc-field { display: grid; gap: .35rem; }
.lc-field label { font-size: var(--lc-t-base); font-weight: 600; }
/* Fields are raised vellum on the card, bounded by a hairline rule: the
   edge darkens on hover and turns petrol on focus. */
.lc-field input,
.lc-field select,
.lc-field textarea {
  width: 100%;
  min-height: var(--lc-tap);
  padding: .65rem .8rem;
  border: 1px solid var(--lc-rule-2);
  border-radius: 3px;
  background: var(--lc-vellum);
  color: var(--lc-ink);
  font: inherit;
  font-size: var(--lc-t-base);
  transition: border-color 140ms ease, box-shadow 140ms ease;
}
.lc-field input::placeholder { color: var(--lc-ink-3); }
.lc-field input:hover,
.lc-field select:hover,
.lc-field textarea:hover {
  border-color: color-mix(in srgb, var(--lc-petrol) 45%, var(--lc-rule-2));
}
.lc-field input:focus,
.lc-field select:focus,
.lc-field textarea:focus {
  border-color: var(--lc-petrol);
  box-shadow: inset 0 0 0 1px var(--lc-petrol), 0 0 0 3px rgb(12 114 134 / 14%);
  outline: none;
}
.lc-field input[aria-invalid="true"] { border-color: var(--lc-fail); }
/* The native file button would otherwise paint its own grey box inside the
   field — restyle it to the register so it reads as part of the field. */
.lc-field input[type="file"]::file-selector-button {
  font: inherit;
  font-size: var(--lc-t-small);
  font-weight: 600;
  color: var(--lc-petrol);
  background: transparent;
  border: 1px solid var(--lc-petrol);
  border-radius: 3px;
  padding: .35rem .7rem;
  margin-right: .7rem;
  cursor: pointer;
}
.lc-field__hint { font-size: var(--lc-t-small); color: var(--lc-ink-3); }

/* The identifier the whole journey hangs on gets a field to match: digits at
   display size and spaced, so a nine-digit number can be read back aloud and
   checked against a card without counting with a finger. */
.lc-field--key input {
  font-family: var(--lc-mono); font-size: 1.375rem;
  letter-spacing: .18em; padding-block: .8rem;
}
.lc-field--key input::placeholder { letter-spacing: .06em; font-size: 1.0625rem; }

/* Live digit count. Mirrors the server rule exactly (nine digits, not all
   zeros) — it must never reject something the domain would accept. */
.lc-field__meter {
  display: flex; align-items: center; gap: .45rem;
  font-size: var(--lc-t-small); color: var(--lc-ink-3);
}
/* display:flex would otherwise beat the hidden attribute the script sets. */
.lc-field__meter[hidden] { display: none; }
.lc-field__count { font-family: var(--lc-mono); font-variant-numeric: tabular-nums; }
.lc-field__meter[data-state="ok"] { color: var(--lc-pass); font-weight: 600; }
.lc-field__meter[data-state="ok"] .lc-field__tick { opacity: 1; }
.lc-field__tick { opacity: 0; transition: opacity 180ms ease; }

.lc-note--fail { border-left-color: var(--lc-fail); }
.lc-note--fail strong { display: block; color: var(--lc-fail); }

/* ---------------------------------------------------------------------------
   Sign in
   --------------------------------------------------------------------------- */

/*
 * Sign in is a single centred column: one task, nothing beside it. The ground
 * and the entrance sequence match the landing so the two read as one product.
 */
.lc-auth {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 25rem;
  margin-inline: auto;
  margin-block: auto;
  padding-block: clamp(2rem, 8vh, 4.5rem);
}
.lc-auth__form { width: 100%; max-width: none; gap: 1.6rem; }
.lc .lc-auth__title {
  margin-top: .35rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lc-auth__lede { margin-top: .6rem; font-size: var(--lc-t-body); }
.lc-auth__submit { margin-top: .55rem; }
.lc-auth__submit .lc-btn {
  width: 100%;
  min-height: 3.25rem;
  font-size: 1.0625rem;
  border-radius: 10px;
  transition: background 160ms ease, border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}
.lc-auth__submit .lc-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgb(10 75 87 / 22%); }
.lc-auth__submit .lc-btn:active { transform: translateY(0); box-shadow: none; }
.lc-auth__submit .lc-btn__arrow { transition: transform 200ms cubic-bezier(.22, 1, .36, 1); }
.lc-auth__submit .lc-btn:hover .lc-btn__arrow { transform: translateX(3px); }

.lc-auth__alt { border-top: 1px solid var(--lc-rule); padding-top: 1.1rem; }
.lc-auth__or { margin-bottom: .7rem; }
.lc-auth__providers { display: flex; flex-wrap: wrap; gap: .6rem; }
.lc-auth__providers .lc-btn { flex: 1 1 8rem; }

.lc.auth-channel { display: flex; flex-direction: column; min-height: 100vh; min-height: 100dvh; }
.lc.auth-channel > main { flex: 1 1 auto; display: flex; flex-direction: column; }
.lc.auth-channel .lc-foot { margin-top: 0; }

/* Sign in gets the landing's ground: full-strength washes, slowly drifting. */
.lc.auth-channel::before { opacity: 1; animation: lc-drift 26s ease-in-out infinite alternate; will-change: transform; }
.lc.auth-channel::after { opacity: .85; animation: lc-drift-alt 38s ease-in-out infinite alternate; will-change: transform; }

/* The same short entrance as the landing, then stillness. */
.lc-auth__form > * { animation: lc-enter 700ms cubic-bezier(.22, 1, .36, 1) both; }
.lc-auth__form > *:nth-child(1) { animation-delay: 60ms; }
.lc-auth__form > *:nth-child(2) { animation-delay: 150ms; }
.lc-auth__form > *:nth-child(3) { animation-delay: 240ms; }
.lc-auth__form > *:nth-child(4) { animation-delay: 330ms; }

/* ===========================================================================
   Operator channel — same system, higher density, zero radius on data
   =========================================================================== */

.lc-op {
  font-size: var(--lc-t-small);
  line-height: 1.5;
  background: var(--lc-vellum);
}

.lc-op .lc-mast { background: var(--lc-vellum); }

/* Bucket bar: the queue's primary navigation. Counts are the point. */
.lc-buckets {
  display: flex; gap: 0; overflow-x: auto;
  border-bottom: 1px solid var(--lc-rule);
  background: var(--lc-vellum);
  scrollbar-width: thin;
}
.lc-bucket {
  display: flex; align-items: baseline; gap: .5rem; white-space: nowrap;
  padding: .85rem 1.15rem;
  border-bottom: 2px solid transparent; margin-bottom: -1px;
  font-size: var(--lc-t-base); font-weight: 500; color: var(--lc-ink-2);
  text-decoration: none;
}
.lc-bucket:hover { background: var(--lc-sunk); color: var(--lc-ink); }
.lc-bucket__n {
  font-family: var(--lc-mono); font-size: var(--lc-t-small); font-weight: 500;
  color: var(--lc-ink-3); font-variant-numeric: tabular-nums;
}
.lc-bucket[aria-current="page"] {
  border-bottom-color: var(--lc-ink); color: var(--lc-ink); font-weight: 600;
}
.lc-bucket[aria-current="page"] .lc-bucket__n { color: var(--lc-ink); }
.lc-bucket--alert .lc-bucket__n { color: var(--lc-fail); font-weight: 600; }

/* Work surface: filter rail + table */
.lc-work { display: grid; grid-template-columns: 13.5rem minmax(0, 1fr); align-items: start; }
.lc-work__rail {
  position: sticky; top: 0;
  padding: 1.15rem 1.15rem 2rem;
  border-right: 1px solid var(--lc-rule);
  background: var(--lc-paper);
  min-height: 60vh;
}
.lc-work__main { min-width: 0; }

.lc-fgroup { margin-bottom: 1.4rem; }
.lc-fgroup__t {
  font-size: var(--lc-t-micro); font-weight: 600; letter-spacing: .11em; text-transform: uppercase;
  color: var(--lc-ink-3); margin-bottom: .45rem;
}
.lc-fopt {
  display: flex; align-items: center; gap: .5rem;
  min-height: 1.85rem; padding: .1rem .25rem; margin-inline: -.25rem;
  border-radius: 2px;
  font-size: var(--lc-t-small); color: var(--lc-ink-2); text-decoration: none;
}
.lc-fopt:hover { background: var(--lc-sunk); color: var(--lc-ink); }
.lc-fopt__n { margin-left: auto; font-family: var(--lc-mono); font-size: var(--lc-t-micro); color: var(--lc-ink-3); }
.lc-fopt__box {
  width: .8rem; height: .8rem; flex: none; border-radius: 2px;
  border: 1.5px solid var(--lc-rule-2); background: var(--lc-vellum);
}
.lc-fopt[aria-pressed="true"] { color: var(--lc-ink); font-weight: 600; }
.lc-fopt[aria-pressed="true"] .lc-fopt__box { background: var(--lc-petrol); border-color: var(--lc-petrol); }
.lc-fopt[aria-pressed="true"] .lc-fopt__n { color: var(--lc-ink); }

/* The register table */
.lc-tablewrap { overflow-x: auto; }
.lc-table {
  width: 100%; border-collapse: collapse;
  font-size: var(--lc-t-small); font-variant-numeric: tabular-nums;
}
.lc-table caption { text-align: left; padding: 1rem 1.15rem .35rem; }
.lc-table thead th {
  position: sticky; top: 0; z-index: 1;
  text-align: left; white-space: nowrap;
  padding: .55rem .7rem;
  background: var(--lc-vellum);
  border-bottom: 2px solid var(--lc-rule-ink);
  font-size: var(--lc-t-micro); font-weight: 600; letter-spacing: .09em; text-transform: uppercase;
  color: var(--lc-ink-3);
}
.lc-table thead th a { color: inherit; text-decoration: none; }
.lc-table thead th a:hover { color: var(--lc-ink); text-decoration: underline; }
.lc-table td {
  padding: .6rem .7rem; border-bottom: 1px solid var(--lc-rule); vertical-align: top;
}
.lc-table tbody tr:hover td { background: var(--lc-paper); }
.lc-table__num { text-align: right; }

/* Severity is carried by a rule, not a chip — it belongs to the row. */
.lc-table__sev { width: 3px; padding: 0 !important; }
.lc-table__sev span { display: block; width: 3px; height: 100%; min-height: 2.4rem; background: transparent; }
.lc-table tr[data-sev="fail"] .lc-table__sev span { background: var(--lc-fail); }
.lc-table tr[data-sev="hold"] .lc-table__sev span { background: var(--lc-hold); }
.lc-table tr[data-sev="pass"] .lc-table__sev span { background: var(--lc-pass); }

.lc-ref { display: flex; flex-direction: column; gap: .1rem; }
.lc-ref a { font-family: var(--lc-mono); font-size: var(--lc-t-small); font-weight: 500; text-decoration: none; }
.lc-ref a:hover { text-decoration: underline; }
.lc-ref small { font-size: var(--lc-t-micro); color: var(--lc-ink-3); }

.lc-sla { font-family: var(--lc-mono); font-weight: 500; white-space: nowrap; }
.lc-sla--over { color: var(--lc-fail); font-weight: 600; }
.lc-sla--near { color: var(--lc-hold); }
.lc-sla--ok   { color: var(--lc-ink-3); }

.lc-meter { display: flex; align-items: center; gap: .45rem; }
.lc-meter__bar { width: 2.6rem; height: .28rem; background: var(--lc-sunk); border-radius: 1px; overflow: hidden; flex: none; }
.lc-meter__bar i { display: block; height: 100%; background: var(--lc-ink-3); }
.lc-meter--fail .lc-meter__bar i { background: var(--lc-fail); }
.lc-meter--hold .lc-meter__bar i { background: var(--lc-hold); }
.lc-meter__v { font-family: var(--lc-mono); font-weight: 500; }

.lc-empty { padding: 3.5rem 1.15rem; color: var(--lc-ink-3); font-size: var(--lc-t-base); }

/* Keyboard legend */
.lc-keys {
  display: flex; flex-wrap: wrap; gap: .3rem 1.35rem;
  padding: .6rem 1.15rem;
  border-top: 1px solid var(--lc-rule);
  background: var(--lc-paper);
  font-size: var(--lc-t-micro); color: var(--lc-ink-3);
}
.lc-keys span { display: inline-flex; align-items: center; gap: .35rem; }
.lc-keys kbd {
  font-family: var(--lc-mono); font-size: .6875rem; line-height: 1.4;
  padding: .05rem .3rem; border: 1px solid var(--lc-rule-2); border-bottom-width: 2px;
  border-radius: 2px; color: var(--lc-ink-2); background: var(--lc-vellum);
}

.lc-table tr[data-cursor="true"] td { background: var(--lc-petrol-wash) !important; }

/* Summary band above the table */
.lc-tally { display: flex; flex-wrap: wrap; gap: 0; border-bottom: 1px solid var(--lc-rule); }
.lc-tally__c { padding: .9rem 1.15rem; min-width: 9rem; }
.lc-tally__c + .lc-tally__c { border-left: 1px solid var(--lc-rule); }
.lc-tally__k { display: block; font-size: var(--lc-t-micro); font-weight: 600; letter-spacing: .09em; text-transform: uppercase; color: var(--lc-ink-3); }
.lc-tally__v { display: block; margin-top: .2rem; font-size: 1.5rem; font-weight: 600; letter-spacing: -.026em; line-height: 1.1; }
.lc-tally__c--alert .lc-tally__v { color: var(--lc-fail); }

/* ---------------------------------------------------------------------------
   Responsive
   --------------------------------------------------------------------------- */

@media (max-width: 62rem) {
  .lc-work { grid-template-columns: 1fr; }
  .lc-work__rail { position: static; min-height: 0; border-right: 0; border-bottom: 1px solid var(--lc-rule); }
  .lc-fgroup { margin-bottom: 1rem; }
}

@media (max-width: 46rem) {
  /* The masthead is identity + language + environment. Below this width the
     product name is the first thing to go — the wordmark already identifies
     the service, and a three-line wrapping subtitle pushes the bar off-screen. */
  .lc-mast__sys,
  .lc-mast__sep { display: none; }
  .lc-mast__inner { gap: .75rem; min-height: 3.25rem; }
  .lc-mast__end { gap: .7rem; }
  .lc-lang__long { display: none; }
  .lc-lang__short { display: inline; }
  .lc-lang a { padding-inline: .6rem; }
}

@media (max-width: 40rem) {
  .lc { --lc-gut: 1.15rem; }
  .lc-shell { width: calc(100% - 1.75rem); }
  .lc-mast__name { font-size: var(--lc-t-small); }
  .lc-facts__row { grid-template-columns: 1fr; gap: .1rem; }
  .lc-facts__row dd, .lc-facts__v { text-align: left; }
  .lc-choice { grid-template-columns: 1.5rem minmax(0, 1fr); }
  .lc-choice__aside { grid-column: 2; white-space: normal; padding-top: 0; }
  /* Action buttons stay on one row: primary and secondary are two halves of
     one decision, not two stacked decisions. A zero flex-basis lets the row
     shrink past the label length — the label wraps inside the button instead
     of the button wrapping onto its own line. */
  .lc .lc-step__act, .lc .lc-outcome__act, .lc .lc-step__alt,
  .lc .form-actions, .lc .button-group { align-items: stretch; }
  .lc .lc-step__act > .lc-step__alt { flex: 1 1 0; min-width: 0; }
  .lc .lc-step__act > .lc-btn, .lc .lc-step__act > .button,
  .lc .lc-outcome__act > .lc-btn, .lc .lc-outcome__act > .button,
  .lc .lc-step__alt > .lc-btn, .lc .lc-step__alt > .button,
  .lc .form-actions > .button, .lc .button-group > .button {
    flex: 1 1 0; min-width: 0; padding-inline: .8rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .lc, .lc::before, .lc::after,
  .lc *, .lc *::before, .lc *::after {
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
  /* The ambient wash holds a single still position rather than drifting, the
     call to action stops pulsing, and the rule beside the steps stays put. */
  .lc.applicant-home::before,
  .lc.applicant-home::after,
  .lc.auth-channel::before,
  .lc.auth-channel::after { animation: none !important; }
  .lc-auth__submit .lc-btn:hover { transform: none; }
  .lc-home .lc-btn::after,
  .lc.applicant-home .lc-portal-hero__cta > .lc-portal-btn--primary::after {
    animation: none !important; box-shadow: none;
  }
  .lc-seq__marker { transition: none !important; }
  .lc-home .lc-btn:hover { transform: none; }
}

/* ---------------------------------------------------------------------------
   Print — the register, on paper
   ---------------------------------------------------------------------------
   A case file printed for an audit binder should read as a record, not as a
   screenshot of a web page. Everything interactive is dropped, everything
   *evidential* is expanded: collapsed panels open, elided hashes print in full,
   and the sheet carries its own provenance line.
   --------------------------------------------------------------------------- */

@page {
  margin: 18mm 16mm;
}

@media print {
  /* Ink economy: the ambient washes and vellum panels exist to separate
     surfaces on screen. On paper the rules do that job on their own. */
  .lc,
  .lc .lc-ws,
  .lc .card,
  .lc .kyb-section,
  .lc .op-panel,
  .lc .lc-note {
    background: #fff !important;
    box-shadow: none !important;
  }
  .lc::before, .lc::after { display: none !important; }

  .lc { color: #000; font-size: 10.5pt; }

  /* Anything you cannot do with a sheet of paper. */
  .lc-mast__end, .lc-keys, .lc-work__rail, .lc-skip, .lc-buckets,
  .lc-opnav, .lc-langs, .lc-rail, .lc-step__aside,
  .lc form, .lc .button, .lc .lc-btn, .lc-ws__actions,
  .lc .pagination, .lc .lc-fgroup {
    display: none !important;
  }

  /* A record must not hide half of itself: panels that are collapsed on screen
     print open, otherwise the printed file is silently incomplete. */
  .lc details { display: block !important; }
  .lc details > summary { list-style: none; font-weight: 600; }
  .lc details > *:not(summary) { display: revert !important; }

  /* Screen elides a 64-character digest to keep the row readable. On paper the
     full value is the point of the record, so print what the title carries. */
  .lc .hash-inline[title] > code { display: none; }
  .lc .hash-inline[title]::after {
    content: attr(title);
    font-family: var(--lc-mono); font-size: 8.5pt; word-break: break-all;
  }

  /* Status survives losing its colour: a mark keeps a rule around it so the
     distinction still reads in monochrome. */
  .lc .lc-mark, .lc .state-pill {
    border: 1pt solid #000 !important; color: #000 !important;
    background: none !important; padding: .05rem .3rem;
  }

  /* The workspace is two columns because a screen is wide; a page is not. */
  .lc .lc-ws__panes, .lc .lc-step, .lc .kyb-chapter,
  .lc .kyb-chapter__sections, .lc .lc-work {
    display: block !important;
  }
  .lc .lc-ws__decision, .lc .lc-step__main { position: static !important; max-width: none !important; }

  /* Never split a single fact or row across a page. Whole panels *may* break —
     forbidding that left half-empty pages whenever a long panel would not fit. */
  .lc .data-list > div, .lc tr { break-inside: avoid; }
  .lc h1, .lc h2, .lc h3 { break-after: avoid; }

  /* The collapse affordance is meaningless on paper. */
  .lc .op-panel > summary::after, .lc-disclose > summary::after { content: "" !important; }

  /* Tables scroll sideways on screen. Paper has no sideways, so they are forced
     to the page width and cells wrap instead of running off the edge. */
  .lc .queue-table-wrap, .lc .table-wrap, .lc .lc-tablewrap { overflow: visible !important; }
  /* Fixed layout guarantees every column stays on the page: with auto layout the
     right-most column ran off the edge, and losing a column from an audit record
     is worse than an awkwardly wrapped header. Headers break only when a word
     genuinely will not fit; data cells may break anywhere. */
  .lc table { width: 100% !important; table-layout: fixed; font-size: 8pt !important; }
  .lc table th { white-space: normal !important; overflow-wrap: break-word; }
  .lc table td { white-space: normal !important; overflow-wrap: anywhere; }

  .lc a { color: #000; text-decoration: none; }

  /* Provenance: an unattributed printout is not evidence of anything. */
  .lc-print-slug { display: block !important; }
}

/* Hidden on screen; the print block above reveals it. */
.lc-print-slug { display: none; }

/* ===========================================================================
   Compatibility layer
   ---------------------------------------------------------------------------
   The 66 screens that have not been rewritten still use the legacy class
   vocabulary. Rather than edit every template, those class names are restyled
   here in the register idiom. This is what lets the whole product change
   identity at once; templates are then rewritten for *structure* where the
   structure is actually wrong, not merely to change how it looks.

   Everything is scoped under `.lc` so it only applies on register layouts.
   =========================================================================== */

/* ---- page scaffolding ---------------------------------------------------- */

.lc .shell { width: min(74rem, calc(100% - 2.5rem)); margin-inline: auto; }
.lc .app-main { display: block; }
.lc .skip-link {
  position: absolute; left: -9999px;
  padding: .7rem 1rem; background: var(--lc-ink); color: var(--lc-paper);
}
.lc .skip-link:focus { left: 1rem; top: 1rem; z-index: 20; }

.lc .page-stack { display: flex; flex-direction: column; gap: var(--lc-gut); padding-block: clamp(1.5rem, 4vh, 2.75rem) 0; }
.lc .page-stack--narrow { max-width: 46rem; }
.lc .page-stack--flush { padding-block: 0; }
.lc .page-stack--journey { display: grid; gap: clamp(1.75rem, 5vw, 3.5rem); align-items: start; }
@media (min-width: 58rem) {
  .lc .page-stack--journey { grid-template-columns: 13.5rem minmax(0, 1fr); }
}

.lc .page-heading { max-width: 44rem; }
.lc .page-heading h1 { font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.1rem); letter-spacing: -.022em; }
.lc .page-heading .lead,
.lc .lead { margin-top: .7rem; color: var(--lc-ink-2); font-size: var(--lc-t-lead); line-height: 1.5; max-width: 34rem; }
.lc .eyebrow {
  margin: 0; font-size: var(--lc-t-micro); font-weight: 600;
  letter-spacing: .11em; text-transform: uppercase; color: var(--lc-petrol);
}
.lc .supporting-text { color: var(--lc-ink-2); font-size: var(--lc-t-base); }
.lc .visually-hidden {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}

/* ---- surfaces ------------------------------------------------------------ */

/* Cards are ruled panels with a whisper of elevation: enough to read as a
   surface against the paper, never enough to float. */
.lc .card {
  padding: clamp(1.1rem, 2.5vw, 1.6rem);
  border: 1px solid var(--lc-rule);
  border-radius: 6px;
  background: var(--lc-vellum);
  box-shadow: 0 1px 2px rgb(20 26 25 / .05), 0 10px 24px -18px rgb(20 26 25 / .25);
}
.lc .card__title { margin-top: 0; font-size: var(--lc-t-lead); letter-spacing: -.014em; }
.lc .card-kicker,
.lc .card-heading-row .card-kicker {
  margin: 0 0 .2rem; font-size: var(--lc-t-micro); font-weight: 600;
  letter-spacing: .11em; text-transform: uppercase; color: var(--lc-ink-3);
}
.lc .card-heading-row { display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-end; justify-content: space-between; margin-bottom: 1rem; }

/* Notices: a state-tinted wash behind the rule, so state reads from the
   periphery without turning the page into a traffic light. */
.lc .notice,
.lc .error-summary {
  padding: .55rem .9rem .55rem 1rem;
  border: 0;
  border-left: 3px solid var(--lc-rule-2);
  border-radius: 0 4px 4px 0;
  background: rgb(255 255 255 / .55);
  color: var(--lc-ink-2);
  font-size: var(--lc-t-base);
  font-weight: 400;
}
.lc .notice--info { border-left-color: var(--lc-petrol); background: var(--lc-petrol-wash); }
.lc .notice--success { border-left-color: var(--lc-pass); background: var(--lc-pass-wash); }
.lc .notice--warning { border-left-color: var(--lc-hold); background: var(--lc-hold-wash); }
.lc .notice--danger,
.lc .error-summary { border-left-color: var(--lc-fail); background: var(--lc-fail-wash); }
.lc .error-summary h2 { margin: 0 0 .25rem; font-size: var(--lc-t-base); color: var(--lc-fail); }
.lc .error-summary ul { margin: .25rem 0 0; padding-left: 1.1rem; }

.lc .empty-state { padding: 2.5rem 1.5rem; color: var(--lc-ink-3); font-size: var(--lc-t-base); text-align: center; }
.lc .empty-state--slim { padding: 1.25rem 1.5rem; }
.lc .empty-state strong { display: block; font-size: var(--lc-t-lead); color: var(--lc-ink-2); margin-bottom: .35rem; }

/* ---- controls ------------------------------------------------------------ */

.lc .button,
.lc a.button,
.lc button.button {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  min-height: var(--lc-tap); padding: .6rem 1.3rem;
  border: 1px solid var(--lc-petrol); border-radius: 10px;
  background: var(--lc-petrol); color: #fff;
  font: inherit; font-size: var(--lc-t-base); font-weight: 600;
  text-decoration: none; cursor: pointer;
  box-shadow: 0 1px 2px rgb(10 75 87 / .18), 0 6px 14px -8px rgb(10 75 87 / .4);
  transition: background 140ms ease, border-color 140ms ease, color 140ms ease, transform 140ms ease, box-shadow 140ms ease;
}
.lc .button:hover {
  background: var(--lc-petrol-deep); border-color: var(--lc-petrol-deep); color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgb(10 75 87 / .2), 0 10px 20px -8px rgb(10 75 87 / .45);
}
.lc .button:active { transform: none; box-shadow: 0 1px 2px rgb(10 75 87 / .18); }
.lc .button--secondary,
.lc a.button--secondary {
  background: transparent; color: var(--lc-petrol); border-color: var(--lc-rule-2);
  box-shadow: none;
}
.lc .button--secondary:hover { background: var(--lc-sunk); color: var(--lc-petrol-deep); border-color: var(--lc-ink-3); box-shadow: none; transform: none; }
.lc .button--destructive,
.lc a.button--destructive { background: transparent; color: var(--lc-fail); border-color: var(--lc-fail); }
.lc .button--destructive:hover { background: var(--lc-fail-wash); color: var(--lc-fail); }
.lc .button[disabled],
.lc .button[aria-disabled="true"] { opacity: .5; cursor: not-allowed; }

.lc .form-actions { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin-top: 1rem; }

.lc .form-field { display: grid; gap: .35rem; }
.lc .form-field label { font-size: var(--lc-t-base); font-weight: 600; }
.lc .form-field input,
.lc .form-field select,
.lc .form-field textarea,
.lc form input:not([type="radio"]):not([type="checkbox"]):not([type="hidden"]),
.lc form select,
.lc form textarea {
  width: 100%; min-height: var(--lc-tap);
  padding: .65rem .8rem;
  border: 1px solid var(--lc-rule-2); border-radius: 3px;
  background: var(--lc-vellum); color: var(--lc-ink);
  font: inherit; font-size: var(--lc-t-base);
  box-shadow: none;
  transition: border-color 140ms ease, box-shadow 140ms ease;
}
.lc form input:focus,
.lc form select:focus,
.lc form textarea:focus {
  border-color: var(--lc-petrol);
  box-shadow: inset 0 0 0 1px var(--lc-petrol), 0 0 0 3px rgb(12 114 134 / 14%);
  outline: none;
}
.lc .form-field input[aria-invalid="true"] { border-color: var(--lc-fail); }
.lc .form-hint,
.lc .journey-field-hint { font-size: var(--lc-t-small); color: var(--lc-ink-3); }

.lc fieldset { border: 0; margin: 0; padding: 0; }
.lc legend { padding: 0; font-size: var(--lc-t-base); font-weight: 600; }

/* ---- data ---------------------------------------------------------------- */

.lc .data-list { display: grid; gap: 0; border-top: 1px solid var(--lc-rule); margin: 0; }
.lc .data-list > div {
  /* Cap the label track so long Greek labels cannot starve the value column
     (which used to wrap UUIDs and enums character-by-character). */
  display: grid; grid-template-columns: minmax(6rem, 12rem) minmax(0, 1fr); gap: 1rem;
  padding: .7rem 0; border-bottom: 1px solid var(--lc-rule);
}
.lc .data-list dt { margin: 0; color: var(--lc-ink-2); font-size: var(--lc-t-base); overflow-wrap: break-word; }
.lc .data-list dd {
  margin: 0; text-align: right; font-weight: 500; font-size: var(--lc-t-base);
  min-width: 0; overflow-wrap: break-word; word-break: break-word;
}
.lc .data-list dd code { word-break: break-all; overflow-wrap: anywhere; }
.lc .data-list--compact > div { padding: .5rem 0; }

.lc .mono-quiet,
.lc .hash-inline,
.lc code {
  font-family: var(--lc-mono); font-size: .92em; font-variant-numeric: tabular-nums;
  color: var(--lc-ink-2);
}
.lc .ref-chip { display: inline-flex; flex-direction: column; gap: .1rem; }
.lc .ref-chip small { font-size: var(--lc-t-micro); color: var(--lc-ink-3); }
.lc .records-inline { font-size: var(--lc-t-small); color: var(--lc-ink-3); }

.lc .state-pill {
  display: inline-flex; align-items: center; gap: .3rem;
  padding: .12rem .45rem; border-radius: 2px;
  background: var(--lc-sunk); color: var(--lc-ink-2);
  font-size: var(--lc-t-small); font-weight: 600; white-space: nowrap;
}
.lc .state-pill--success { background: var(--lc-pass-wash); color: var(--lc-pass); }
.lc .state-pill--warning { background: var(--lc-hold-wash); color: var(--lc-hold); }
.lc .state-pill--danger { background: var(--lc-fail-wash); color: var(--lc-fail); }
.lc .state-pill--current { background: var(--lc-petrol-wash); color: var(--lc-petrol); }

.lc .queue-table-wrap,
.lc .table-wrap { overflow-x: auto; }
.lc table.queue-table,
.lc table.table {
  width: 100%; border-collapse: collapse;
  font-size: var(--lc-t-small); font-variant-numeric: tabular-nums;
}
.lc .queue-table th,
.lc .table th {
  text-align: left; white-space: nowrap; padding: .5rem .65rem;
  border-bottom: 2px solid var(--lc-rule-ink);
  font-size: var(--lc-t-micro); font-weight: 600; letter-spacing: .09em;
  text-transform: uppercase; color: var(--lc-ink-3);
}
.lc .queue-table td,
.lc .table td { padding: .6rem .65rem; border-bottom: 1px solid var(--lc-rule); vertical-align: top; }
.lc .queue-table tbody tr:hover td { background: var(--lc-paper); }

.lc .pagination { display: flex; align-items: center; gap: .75rem; font-size: var(--lc-t-small); }
.lc .pagination__control { color: var(--lc-petrol); text-decoration: none; font-weight: 600; }
.lc .pagination__status { color: var(--lc-ink-3); font-variant-numeric: tabular-nums; }
.lc .pagination {
  justify-content: space-between;
  flex-wrap: wrap;
  width: 100%;
  margin-top: .75rem;
  padding-top: .75rem;
  border-top: 1px solid var(--lc-rule);
}
.lc .pagination__pages { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem; }
.lc .pagination__control {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2rem;
  padding: .35rem .55rem;
  border: 1px solid var(--lc-rule-2);
  border-radius: 4px;
  background: var(--lc-vellum);
  color: var(--lc-petrol);
  font: inherit;
  line-height: 1;
}
.lc .pagination__control--page { min-width: 2rem; }
.lc .pagination__control:hover:not(:disabled):not(.is-disabled) { border-color: var(--lc-petrol); background: var(--lc-petrol-wash); }
.lc .pagination__control.is-current,
.lc .pagination__control[aria-current="page"] { border-color: var(--lc-petrol); background: var(--lc-petrol); color: #fff; }
.lc .pagination__control.is-disabled,
.lc .pagination__control:disabled { cursor: not-allowed; opacity: .38; }
.lc .pagination__ellipsis { padding-inline: .1rem; color: var(--lc-ink-3); }
@media (max-width: 40rem) {
  .lc .pagination__status,
  .lc .pagination__pages { width: 100%; }
  .lc .pagination__control--direction { flex: 1 1 auto; }
}

/* Pager pins to the bottom of the viewport on short pages and flows after
   the table on long ones: the operator column is stretched to screen height
   and the pager's auto top margin absorbs whatever slack remains. Scoped
   with :has() so pages without a pager keep their natural flow. */
.lc-op-main { min-height: 100vh; min-height: 100dvh; }
.lc-op-content:has(.lc-ws__pager) { display: flex; flex-direction: column; }
.lc-op-content:has(.lc-ws__pager) .lc-ws__wide { flex: 1 0 auto; display: flex; flex-direction: column; }
.lc .lc-ws__pager { margin-top: auto; }

/* ---- navigation ---------------------------------------------------------- */

.lc .breadcrumb-nav,
.lc .breadcrumb { font-size: var(--lc-t-small); color: var(--lc-ink-3); }
.lc .breadcrumb ol { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; padding: 0; list-style: none; }
.lc .breadcrumb li + li::before { content: "/"; margin-right: .4rem; color: var(--lc-rule-2); }
.lc .breadcrumb a { color: var(--lc-ink-2); text-decoration: none; }
.lc .breadcrumb a:hover { color: var(--lc-petrol); text-decoration: underline; }

/* Operator navigation band, under the masthead. */
.lc-opnav { border-bottom: 1px solid var(--lc-rule); background: var(--lc-vellum); }
.lc-opnav__inner { display: flex; gap: 0; overflow-x: auto; scrollbar-width: thin; }
.lc-opnav a {
  padding: .7rem .95rem; white-space: nowrap; text-decoration: none;
  font-size: var(--lc-t-base); font-weight: 500; color: var(--lc-ink-2);
  border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.lc-opnav a:hover { background: var(--lc-sunk); color: var(--lc-ink); }
.lc-opnav a[aria-current="page"] { color: var(--lc-ink); font-weight: 600; border-bottom-color: var(--lc-ink); }

/* Operator pages that still use the legacy scaffolding get room to breathe. */
.lc-op main > .page-stack,
.lc-op main > .shell > .page-stack { padding-inline: 0; }
.lc-op .shell { width: min(100rem, calc(100% - 2.5rem)); }
.lc-op .page-stack--narrow { max-width: 52rem; }

/* ---- legacy content defaults --------------------------------------------
   Not every legacy template wraps its content in `.page-stack`; some drop a
   bare <section> into main. Those need a measure, top padding and ordinary
   paragraph flow — `.lc p { margin: 0 }` removes the browser default that
   they were relying on. Scoped to legacy containers so the register
   components, which space themselves with flex `gap`, are untouched.
   ------------------------------------------------------------------------- */

.lc.applicant-channel:not(.applicant-home):not(.auth-channel) > main > section,
.lc.applicant-channel:not(.applicant-home):not(.auth-channel) > main > div:not([class]) {
  display: block;
  max-width: 46rem;
  padding-block: clamp(1.75rem, 4vh, 2.75rem) 0;
}

.lc .page-stack :is(h1, h2, h3, h4) + p,
.lc .page-stack p + p,
.lc .page-stack p + ul,
.lc .page-stack ul + p,
.lc main > section :is(h1, h2, h3, h4) + p,
.lc main > section p + p,
.lc main > section p + ul,
.lc main > section ul + p { margin-top: .7rem; }

.lc main > section > h1 { font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.1rem); }
.lc main ul, .lc main ol { padding-left: 1.15rem; }
.lc .page-stack li + li, .lc main > section li + li { margin-top: .3rem; }

/* ===========================================================================
   Legacy skin neutraliser
   ---------------------------------------------------------------------------
   The 58 screens not yet rewritten still load app.css so they are never
   unstyled. This block overrides only the traits that date them — rounded
   floating cards, drop shadows, gradient panels, pill buttons, the old
   typeface — while leaving app.css to handle everything structural it still
   owns. Selectors carry the `.lc` prefix so they out-rank the originals by one
   class rather than by `!important`.
   =========================================================================== */

.lc.applicant-channel,
.lc.operator-channel {
  background-image: none;
  animation: none;
}

/* Surfaces: flatten and rule them. */
.lc.applicant-channel .card,
.lc.operator-channel .card,
.lc.applicant-channel .op-panel,
.lc.operator-channel .op-panel,
.lc.applicant-channel .ops-card,
.lc.operator-channel .ops-card,
.lc.applicant-channel .journey-task-card,
.lc.applicant-channel .journey-table-card,
.lc.operator-channel .journey-table-card,
.lc.applicant-channel .chapter-panel,
.lc.applicant-channel .status-chapter,
.lc.applicant-channel .source-boundary,
.lc.operator-channel .source-boundary,
.lc.applicant-channel .page-stack--narrow,
.lc.operator-channel .operator-summary {
  border-radius: 4px !important;
  box-shadow: none !important;
  background-image: none !important;
  backdrop-filter: none !important;
}

/* Controls: square them off and drop the lift. */
.lc.applicant-channel .button,
.lc.operator-channel .button,
.lc.applicant-channel .button--primary,
.lc.operator-channel .button--primary,
.lc.applicant-channel .button--secondary,
.lc.operator-channel .button--secondary {
  border-radius: 3px !important;
  box-shadow: none !important;
  background-image: none !important;
  letter-spacing: -.004em;
}
.lc.applicant-channel .button--primary:hover,
.lc.operator-channel .button--primary:hover { transform: none !important; }

/* Fields: square, quiet, and consistent with the register. */
.lc.applicant-channel .form-field input,
.lc.applicant-channel form input:not([type="radio"]):not([type="checkbox"]):not([type="hidden"]),
.lc.applicant-channel form select,
.lc.applicant-channel form textarea,
.lc.operator-channel .form-field input,
.lc.operator-channel form input:not([type="radio"]):not([type="checkbox"]):not([type="hidden"]),
.lc.operator-channel form select,
.lc.operator-channel form textarea {
  border-radius: 3px !important;
  box-shadow: none !important;
  background-image: none !important;
}

/* Choice tiles and segmented pickers: rule them instead of floating them. */
.lc.applicant-channel .applicant-type-card,
.lc.applicant-channel .choice-row,
.lc.applicant-channel .choice-row--tile,
.lc.applicant-channel .segmented-options label {
  border-radius: 3px !important;
  box-shadow: none !important;
  background-image: none !important;
}

/* The operator channel shipped an inverted, saturated summary band. Bring it
   back to paper so the data is the loudest thing on the page. */
.lc.operator-channel .operator-summary,
.lc.operator-channel .operator-topbar {
  background: var(--lc-vellum) !important;
  color: var(--lc-ink) !important;
  border: 1px solid var(--lc-rule) !important;
}
.lc.operator-channel .operator-summary span,
.lc.operator-channel .operator-summary__label { color: var(--lc-ink-3) !important; }
.lc.operator-channel .operator-summary strong { color: var(--lc-ink) !important; }

/* Pills and chips. */
.lc.applicant-channel .state-pill,
.lc.operator-channel .state-pill,
.lc.operator-channel .sla-chip,
.lc.operator-channel .badge,
.lc.applicant-channel .badge { border-radius: 2px !important; box-shadow: none !important; }

/* The legacy chapter rail becomes the register's journey rail. */
.lc.applicant-channel .chapter-rail li { border-radius: 3px !important; box-shadow: none !important; }
.lc.applicant-channel .chapter-panel { border: 0 !important; background: transparent !important; padding: 0 !important; }
.lc.applicant-channel .chapter-panel__label {
  font-size: var(--lc-t-micro) !important; font-weight: 600 !important;
  letter-spacing: .11em !important; color: var(--lc-ink-3) !important;
}

/* ---- start form extras --------------------------------------------------- */

.lc-start__legend { padding: 0; margin-bottom: .25rem; }
.lc-field__legend { padding: 0; font-size: var(--lc-t-base); font-weight: 600; margin-bottom: .35rem; }
.lc-field__errors { margin: .3rem 0 0; padding-left: 1.05rem; color: var(--lc-fail); font-size: var(--lc-t-small); }
.lc-note--fail ul { margin: .35rem 0 0; padding-left: 1.05rem; }
.lc-note--fail a { color: var(--lc-fail); }

.lc-segmented { display: flex; flex-wrap: wrap; gap: .4rem; }
.lc-segmented label { position: relative; }
.lc-segmented input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.lc-segmented span {
  display: inline-flex; align-items: center; min-height: 2.4rem; padding: .35rem .85rem;
  border: 1px solid var(--lc-rule-2); border-radius: 3px;
  font-size: var(--lc-t-base); font-weight: 500; color: var(--lc-ink-2); background: var(--lc-vellum);
}
.lc-segmented label:hover span { border-color: var(--lc-ink-3); color: var(--lc-ink); }
.lc-segmented input:checked + span {
  border-color: var(--lc-petrol); color: var(--lc-petrol); font-weight: 600;
  box-shadow: inset 0 0 0 1px var(--lc-petrol);
}
.lc-segmented input:focus-visible + span { outline: 2px solid var(--lc-petrol-bright); outline-offset: 2px; }

/* Company-only fields collapse while the individual option is selected. Stated
   as a negative so that a browser without :has() leaves them visible and the
   form stays complete. */
.lc-form:has([data-applicant-type][value="PERSON"]:checked) [data-company-fields] { display: none; }

/* ===========================================================================
   Journey scaffolds — step, outcome, operator workspace
   =========================================================================== */

.lc-step__lede:empty,
.lc-outcome__lede:empty { display: none; }

/* ---- outcome ------------------------------------------------------------- */

.lc-outcome {
  display: flex; flex-direction: column; gap: 1.15rem;
  padding-block: clamp(1.25rem, 4vh, 2.5rem) 0;
  margin-block: auto; align-self: center;
  width: 100%; max-width: 46rem;
  min-height: min(100%, calc(100dvh - 8.5rem));
}
.lc-outcome__main { gap: 1rem; flex: 1 1 auto; }
.lc-outcome__mark { align-self: flex-start; }
/* One line, always: the clamp is keyed to the longest Greek outcome heading
   (~25em wide) fitting the 46rem outcome column and the smallest shell.
   Ellipsis only covers font-fallback. */
.lc .lc-outcome__title {
  margin-top: .4rem;
  font-size: clamp(1.05rem, 3.2vw, var(--lc-t-title));
  line-height: 1.25; letter-spacing: -.02em;
  text-align: left;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lc-outcome__lede { margin-top: .45rem; font-size: var(--lc-t-body); text-align: left; }
.lc-outcome__act {
  display: flex; flex-wrap: wrap; gap: .7rem; align-items: center; justify-content: flex-start;
  flex: 0 0 auto; margin-top: auto;
  position: sticky; bottom: 0; z-index: 3;
  padding: .85rem 0 calc(.75rem + env(safe-area-inset-bottom, 0px));
  background: linear-gradient(to top, var(--lc-paper) 68%, transparent);
}
.lc-outcome__act:empty { display: none; }
.lc-outcome__act > .lc-btn { min-width: min(100%, 14rem); }
.lc-outcome .lc-status-note { margin: 0; max-width: none; }
.lc-outcome .data-list { max-width: none; }

@media (max-width: 46rem) {
  .lc.applicant-channel:not(.applicant-home) > main.lc-shell:has(.lc-outcome) {
    width: 100%;
    max-width: none;
    padding-inline: .5rem;
    box-sizing: border-box;
  }
  .lc-outcome { max-width: none; gap: .9rem; padding-block: 1rem 0; }
  .lc-outcome__lede { font-size: var(--lc-t-small); }
  .lc-outcome__act > .lc-btn {
    width: 100%;
    justify-content: center;
  }
}

.lc.applicant-channel > main { display: flex; flex-direction: column; }

/* ---- operator workspace -------------------------------------------------- */

.lc-ws__head { border-bottom: 1px solid var(--lc-rule); background: var(--lc-vellum); box-shadow: 0 1px 3px rgb(20 26 25 / .03); }
.lc-ws__head-inner {
  display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; align-items: flex-end;
  padding-block: .75rem;
}
.lc-ws__id { min-width: 0; }
/* Title + meta on one row — meta tracks the heading, not the eyebrow. */
.lc-ws__title-row {
  display: flex; flex-wrap: wrap; gap: .35rem 1rem; align-items: center;
  min-width: 0;
}
/* One line, always: keyed to the longest Greek workspace heading (~36em wide)
   fitting the wide shell down to small laptops; ellipsis covers the rest. */
.lc .lc-ws__title {
  font-size: clamp(0.7rem, 2.4vw, 1.25rem);
  letter-spacing: -.02em;
  margin-top: .1rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lc-ws__id > .lc-eyebrow + .lc-ws__title-row .lc-ws__title { margin-top: 0; }
.lc-ws__meta { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }
.lc-ws__meta:empty { display: none; }
.lc-ws__actions { margin-left: auto; display: flex; flex-wrap: wrap; gap: .4rem; }
.lc-ws__actions:empty { display: none; }

.lc-ws__panes { display: grid; gap: 0; align-items: start; }
.lc-ws__main { padding-block: 1.25rem; gap: 1.5rem; min-width: 0; }
.lc-ws__decision:empty { display: none; }
.lc-ws__decision {
  padding: 1.5rem 0 1.5rem 1.75rem;
  border-left: 1px solid var(--lc-rule);
  margin-left: 1.75rem;
}

@media (min-width: 72rem) {
  .lc-ws__panes { grid-template-columns: minmax(0, 1fr) 22rem; }
  .lc-ws__panes:has(.lc-ws__decision:empty) { grid-template-columns: minmax(0, 1fr); }
  .lc-ws__decision { position: sticky; top: 0; }
}
@media (max-width: 71.99rem) {
  .lc-ws__decision { border-left: 0; margin-left: 0; padding-left: 0; border-top: 1px solid var(--lc-rule); }
}

/* Section headings inside a workspace column. */
.lc-sec { display: flex; flex-direction: column; gap: .4rem; }
.lc-sec__head { display: flex; flex-wrap: wrap; gap: .35rem .8rem; align-items: baseline; justify-content: space-between; }
/* One line, always: keyed to the longest translation (Greek "next" section,
   25.8em em-width) fitting the narrowest shells (292px at 20rem, 362px at
   24.4rem). The `.lc` prefix out-specifies the `.lc h2` `text-wrap: balance`
   base rule; ellipsis is only the font-fallback safety net. */
.lc .lc-sec__t {
  font-size: clamp(0.85rem, 2.4vw, 1.125rem);
  letter-spacing: -.014em;
  line-height: 1.25;
  text-align: left;
  text-wrap: balance;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lc-sec__n { font-family: var(--lc-mono); font-size: var(--lc-t-micro); color: var(--lc-ink-3); }

/* Evidence / audit rows. */
.lc-rows { border-top: 1px solid var(--lc-rule); }
.lc-op-panel__body .lc-rows { border-top: none; }
.lc-rows__r {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .5rem 1rem;
  padding: .65rem 0; border-bottom: 1px solid var(--lc-rule); align-items: baseline;
}
.lc-rows__r:last-child { border-bottom: none; }
.lc-rows__t { font-size: var(--lc-t-base); font-weight: 600; }
.lc-rows__d { display: block; margin-top: .15rem; font-size: var(--lc-t-small); color: var(--lc-ink-3); }
.lc-rows__meta { font-family: var(--lc-mono); font-size: var(--lc-t-micro); color: var(--lc-ink-3); white-space: nowrap; }

/* Decision panel. */
.lc-dec { display: flex; flex-direction: column; gap: .6rem; }
.lc-dec__t { font-size: var(--lc-t-small); font-weight: 600; }
.lc-dec__note { font-size: var(--lc-t-micro); color: var(--lc-ink-3); }
.lc-dec .lc-btn { width: 100%; }

/* Chip list — category tags and similar short enumerations. */
.lc-chips { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; margin: 0; padding: 0; }
.lc-field--code input { max-width: 11rem; font-family: var(--lc-mono); font-size: 1.25rem; letter-spacing: .28em; border-radius: 10px; border: 1.5px solid var(--lc-rule); }
.lc-outcome__refs { max-width: none; }

/* ---- outcome entrance -------------------------------------------------------
   The result writes itself top to bottom — mark pops, then the header, card
   and panel rise in sequence — then the page rests. One pass, no loop; the
   global reduced-motion rule still collapses everything to a still page. */

.lc-outcome__main > * { animation: lc-enter 700ms cubic-bezier(.22, 1, .36, 1) both; }
.lc-outcome__main > *:nth-child(1) { animation-delay: 60ms; }
.lc-outcome__main > *:nth-child(2) { animation-delay: 160ms; }
.lc-outcome__main > *:nth-child(3) { animation-delay: 260ms; }
.lc-outcome__main > *:nth-child(4) { animation-delay: 360ms; }
.lc-outcome__main > *:nth-child(5) { animation-delay: 460ms; }

@keyframes lc-mark-pop {
  from { opacity: 0; transform: scale(.72); }
  to   { opacity: 1; transform: none; }
}
.lc .lc-outcome__mark { animation: lc-mark-pop 520ms cubic-bezier(.22, 1, .36, 1) 40ms both; }

/* ---- verified contact card --------------------------------------------------
   One ruled row stating what was just proven: the channel, a pass tick, and
   the state word. Rules instead of a floating card, per the register skin. */

.lc-vcard { border-block: 1px solid var(--lc-rule); }
.lc-vcard__row {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .2rem 1rem;
  padding: .85rem 0;
}
.lc-vcard__label { font-size: var(--lc-t-small); color: var(--lc-ink-3); }
.lc-vcard__state { font-size: var(--lc-t-micro); font-weight: 600; color: var(--lc-pass); padding-top: .15rem; }
.lc-vcard__value {
  grid-column: 1 / -1;
  display: flex; align-items: center; gap: .55rem;
  font-size: var(--lc-t-base); font-weight: 650; color: var(--lc-ink);
}
.lc-vcard__tick {
  width: 1.15rem; height: 1.15rem; border-radius: 50%; flex: none;
  background: var(--lc-pass) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.2 6.4 4.8 9 9.8 3.2' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / .6rem no-repeat;
}

/* ---- "how it fits" panel ----------------------------------------------------
   Three rows mapping this receipt to the rest of the journey: done, next,
   later. The next row wears the same breathing ring as the journey rail so
   the two always agree about where the applicant stands. */

.lc-fits { display: flex; flex-direction: column; gap: .55rem; }
.lc-fits__title { margin: 0; font-size: var(--lc-t-small); font-weight: 650; letter-spacing: .04em; color: var(--lc-ink-2); }
.lc-fits__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--lc-rule); }
.lc-fits__row {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: .7rem;
  padding: .7rem 0 .7rem .6rem; margin-left: -.6rem;
  border-bottom: 1px solid var(--lc-rule); align-items: center;
  animation: lc-enter-row 560ms cubic-bezier(.22, 1, .36, 1) both;
}
.lc-fits__row:nth-child(1) { animation-delay: 340ms; }
.lc-fits__row:nth-child(2) { animation-delay: 430ms; }
.lc-fits__row:nth-child(3) { animation-delay: 520ms; }
.lc-fits__icon {
  position: relative; flex: none;
  width: 1.35rem; height: 1.35rem; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: var(--lc-t-micro); font-weight: 700; color: var(--lc-ink-3);
  border: 1.5px solid var(--lc-rule-2);
}
.lc-fits__row--done .lc-fits__icon {
  color: transparent; border-color: var(--lc-pass);
  background: var(--lc-pass) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.2 6.4 4.8 9 9.8 3.2' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / .6rem no-repeat;
}
.lc-fits__row--next { box-shadow: inset 2px 0 0 var(--lc-petrol); }
.lc-fits__row--next .lc-fits__icon { color: transparent; background: var(--lc-petrol); border-color: var(--lc-petrol); }
.lc-fits__row--next .lc-fits__icon::after {
  content: ""; position: absolute; inset: -3px; border-radius: 50%;
  animation: lc-rail-pulse 2.4s cubic-bezier(.22, 1, .36, 1) infinite;
}
.lc-fits__name { display: block; font-size: var(--lc-t-base); font-weight: 650; color: var(--lc-ink); }
.lc-fits__row--next .lc-fits__name { color: var(--lc-petrol); }
.lc-fits__body { display: block; margin-top: .1rem; font-size: var(--lc-t-small); color: var(--lc-ink-3); }
.lc-fits__tag { font-size: var(--lc-t-micro); font-weight: 600; color: var(--lc-ink-3); white-space: nowrap; }
.lc-fits__row--done .lc-fits__tag { color: var(--lc-pass); }
.lc-fits__row--next .lc-fits__tag { color: var(--lc-petrol); font-weight: 700; }

.lc-outcome__save { flex-basis: 100%; margin: .2rem 0 0; font-size: var(--lc-t-small); color: var(--lc-ink-3); }

/* Journey progress — a ruled bar, not a candy meter. */
.lc .progress { display: flex; flex-direction: column; gap: .35rem; }
.lc .progress label { font-size: var(--lc-t-small); color: var(--lc-ink-3); }
.lc .progress progress { appearance: none; width: 100%; max-width: 22rem; height: .35rem; border: 0; background: var(--lc-sunk); border-radius: 1px; }
.lc .progress progress::-webkit-progress-bar { background: var(--lc-sunk); border-radius: 1px; }
.lc .progress progress::-webkit-progress-value { background: var(--lc-petrol); border-radius: 1px; }
.lc .progress progress::-moz-progress-bar { background: var(--lc-petrol); border-radius: 1px; }

/* ---- checkbox choices (authorisation categories, confirmations) ---------- */

.lc-choices--check .lc-choice,
.lc-choice--confirm { align-items: start; }
.lc-choice__mark--box { border-radius: 2px; }
.lc-choice:has(input[type="checkbox"]:checked) .lc-choice__mark--box {
  border: 1px solid var(--lc-petrol);
  background: var(--lc-petrol);
  position: relative;
}
.lc-choice:has(input[type="checkbox"]:checked) .lc-choice__mark--box::after {
  content: "";
  position: absolute; left: .34rem; top: .13rem;
  width: .26rem; height: .52rem;
  border: solid #fff; border-width: 0 1.5px 1.5px 0;
  transform: rotate(42deg);
}
.lc-choice--confirm {
  display: grid; grid-template-columns: 1.5rem minmax(0, 1fr); gap: .85rem;
  padding: 1rem .9rem 1rem .75rem;
  border: 1px solid var(--lc-rule); border-radius: 3px; background: var(--lc-vellum);
  cursor: pointer;
}
.lc-choice--confirm:has(input:checked) { border-color: var(--lc-petrol); }

/* The legal notice the applicant is agreeing to. */
.lc-notice {
  border-left: 3px solid var(--lc-petrol);
  padding: .1rem 0 .1rem 1.1rem;
}

.lc-status__mark { align-self: flex-start; }
.lc-step__alt { display: flex; flex-wrap: wrap; gap: .5rem; }
.lc-step__act { align-items: center; }
.lc-note strong { display: block; color: var(--lc-ink); }

/* A plain numbered list — sequence without the "you are here" rule. */
.lc-seq--plain li { border-bottom: 1px solid var(--lc-rule); }
.lc-seq--plain .lc-seq__t { font-weight: 500; }

/* Source-data review: government values, visibly not editable here. */
.lc-source__t { margin-top: .3rem; }
.lc-source__cat { margin-top: 1.1rem; margin-bottom: .2rem; color: var(--lc-petrol); }
.source-data__category:first-of-type .lc-source__cat { margin-top: .5rem; }

/* Mismatch rows — compact stacked layout lives under .lc-mismatch--compact. */
.lc-mismatch { border-top: 1px solid var(--lc-rule); }
.lc-choice--inline { border: 0; padding: 0; }
.lc-choice--inline:hover { background: none; }

/* Extracted-field cards. */
.lc-extract {
  display: flex; flex-direction: column; gap: .75rem;
  padding: 1rem 1.1rem; border: 1px solid var(--lc-rule); border-radius: 4px;
  background: var(--lc-vellum);
}
.lc-extract__head { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center; justify-content: space-between; }
.lc-extract__t { font-size: var(--lc-t-base); font-weight: 600; }
.lc-notice__v { display: block; margin-bottom: .3rem; }

/* Full-width operator surfaces (queues, dashboards). */
.lc-ws__wide { padding-block: 1rem 1.5rem; display: flex; flex-direction: column; gap: 1rem; }
.lc-ws__lede { max-width: 46rem; font-size: var(--lc-t-small); color: var(--lc-ink-2); }
.lc-ws__pager { margin-top: .5rem; }
.lc-op .lc-table tr[data-href] { cursor: pointer; }

/* ---- operator case file --------------------------------------------------- */

.lc-ws__ref { font-size: var(--lc-t-small); font-weight: 500; color: var(--lc-ink-2); }
.lc-op .lc-ws__meta .operator-summary { border: 0 !important; background: none !important; padding: 0; }

/* Collapsible record panels. Open by default: an investigator should see the
   record, not have to hunt for it. */
.lc-op .op-panel { border-top: 1px solid var(--lc-rule); }
.lc-op .op-panel > summary {
  list-style: none; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: .75rem;
  padding: .8rem 0;
  font-size: var(--lc-t-base); font-weight: 600; color: var(--lc-ink);
}
.lc-op .op-panel > summary::-webkit-details-marker { display: none; }
.lc-op .op-panel > summary::after { content: "\2212"; font-family: var(--lc-mono); color: var(--lc-ink-3); }
.lc-op .op-panel:not([open]) > summary::after { content: "+"; }
.lc-op .op-panel__body { padding-bottom: 1.1rem; display: flex; flex-direction: column; gap: .9rem; }
.lc-op .op-panel__body h3 { font-size: var(--lc-t-base); font-weight: 600; margin-top: .35rem; }
.lc-op .data-list--bordered { border-top: 1px solid var(--lc-rule); }
.lc-op .op-empty-rail { display: flex; flex-wrap: wrap; gap: .35rem; }
.lc-op .op-empty-rail span {
  font-size: var(--lc-t-micro); color: var(--lc-ink-3);
  border: 1px dashed var(--lc-rule-2); border-radius: 2px; padding: .15rem .45rem;
}

/* Journey flow — compact state machine rail, read left to right. */
.lc-flow { display: flex; flex-wrap: wrap; gap: .3rem; list-style: none; margin: 0; padding: 0; }
.lc-flow__i {
  display: inline-flex; align-items: center; gap: .35rem;
  padding: .25rem .6rem; border: 1px solid var(--lc-rule); border-radius: 6px;
  font-size: var(--lc-t-micro); color: var(--lc-ink-3); background: var(--lc-vellum);
  line-height: 1.4; white-space: nowrap;
}
.lc-flow__n { font-family: var(--lc-mono); font-size: .625rem; opacity: .6; }
.lc-flow__i[data-state="done"] { color: var(--lc-ink-2); border-color: var(--lc-rule); background: var(--lc-sunk); }
.lc-flow__i[data-state="done"] .lc-flow__n { color: var(--lc-pass); opacity: 1; }
.lc-flow__i[data-state="current"] {
  border-color: var(--lc-petrol); color: var(--lc-ink); font-weight: 600;
  background: var(--lc-petrol-wash);
  box-shadow: inset 0 -2px 0 var(--lc-petrol);
}
.lc-flow__i[data-state="current"] .lc-flow__n { opacity: 1; color: var(--lc-petrol); }
.lc-flow__i[data-state="skipped"] { opacity: .35; }

/* Vertical flow rail — used in the decision sidebar. */
.lc-flow--vertical { flex-direction: column; gap: .2rem; }
.lc-flow--vertical .lc-flow__i { white-space: normal; width: 100%; }
.lc-flow--vertical .lc-flow__n { min-width: 1.4rem; }

/* Decision-column checklist. */
.lc-checks { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .4rem; }
.lc-checks__i { display: grid; grid-template-columns: 1rem 1fr; gap: .5rem; align-items: start; font-size: var(--lc-t-small); color: var(--lc-ink-2); }
.lc-checks__m { width: 1rem; height: 1rem; margin-top: .12rem; border: 1.5px solid var(--lc-rule-2); border-radius: 4px; position: relative; }
.lc-checks__i[data-done="true"] { color: var(--lc-ink); }
.lc-checks__i[data-done="true"] .lc-checks__m { background: var(--lc-pass); border-color: var(--lc-pass); }
.lc-checks__i[data-done="true"] .lc-checks__m::after {
  content: ''; position: absolute; left: 3px; top: 1px; width: 4px; height: 7px;
  border: solid #fff; border-width: 0 1.5px 1.5px 0; transform: rotate(45deg);
}
.lc-ws__summary { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; }

/* Case sidebar — vertical flow + checklist + provider in the decision column. */
.lc-case-sidebar { gap: 1.25rem; }
.lc-case-sidebar__flow,
.lc-case-sidebar__checks,
.lc-case-sidebar__provider,
.lc-case-sidebar__risk {
  display: flex; flex-direction: column; gap: .5rem;
}
.lc-case-sidebar__flow { padding-bottom: 1rem; border-bottom: 1px solid var(--lc-rule); }
.lc-case-sidebar__checks { padding-bottom: 1rem; border-bottom: 1px solid var(--lc-rule); }
.lc-case-sidebar__risk { padding-bottom: 1rem; border-bottom: 1px solid var(--lc-rule); }

/* Group label above panel clusters. */
.lc-case-group {
  margin: 0 0 .5rem; font-size: .625rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .08em; color: var(--lc-ink-3);
}
.lc-case-group--label { margin-top: 1.25rem; }
.lc-case-group--label:first-child { margin-top: 0; }

.lc-blockers { margin: 0; padding-left: 1.05rem; color: var(--lc-fail); font-size: var(--lc-t-small); display: flex; flex-direction: column; gap: .25rem; }
.lc-note--pass { border-left-color: var(--lc-pass); }
.lc-btn--danger { background: transparent; color: var(--lc-fail); border-color: var(--lc-fail); }
.lc-btn--danger:hover { background: var(--lc-fail-wash); color: var(--lc-fail); border-color: var(--lc-fail); }
.lc-dec form.lc-dec { gap: .6rem; }

/* Audit chain integrity band. */
.lc-op .audit-integrity {
  display: flex; flex-wrap: wrap; gap: 1rem 2rem; align-items: flex-start; justify-content: space-between;
  padding: 1rem 1.1rem; border: 1px solid var(--lc-rule); border-radius: 8px; background: var(--lc-vellum);
  border-left: 3px solid var(--lc-pass); box-shadow: var(--lc-shadow-xs);
}
.lc-op .audit-integrity--failed { border-left-color: var(--lc-fail); }
.lc-op .audit-integrity__status { display: flex; gap: .7rem; align-items: flex-start; }
.lc-op .audit-integrity__icon { color: var(--lc-pass); font-weight: 700; }
.lc-op .audit-integrity--failed .audit-integrity__icon { color: var(--lc-fail); }
.lc-op .audit-integrity__label { display: block; font-size: var(--lc-t-micro); letter-spacing: .11em; text-transform: uppercase; color: var(--lc-ink-3); }
.lc-op .audit-integrity__metrics { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; margin: 0; }
.lc-op .audit-integrity__metrics dt { font-size: var(--lc-t-micro); color: var(--lc-ink-3); }
.lc-op .audit-integrity__metrics dd { margin: 0; font-family: var(--lc-mono); font-weight: 500; }
.lc-op .audit-head { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; align-items: baseline; justify-content: space-between; padding: .8rem 0; border-bottom: 1px solid var(--lc-rule); }
.lc-op .audit-head code { word-break: break-all; font-size: var(--lc-t-small); }
.lc-op .audit-head__label { font-size: var(--lc-t-micro); letter-spacing: .11em; text-transform: uppercase; color: var(--lc-ink-3); }
.lc-op .audit-empty { padding: 2.5rem 0; color: var(--lc-ink-3); }

/* Dashboard tiles and cards. */
.lc-op .kpi-grid { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); }
.lc-op .kpi-tile {
  display: flex; align-items: center; gap: .8rem;
  padding: .9rem 1rem; border: 1px solid var(--lc-rule); border-radius: 4px;
  background: var(--lc-vellum); text-decoration: none; color: var(--lc-ink);
}
.lc-op a.kpi-tile:hover { border-color: var(--lc-ink-3); }
.lc-op .kpi-tile__copy { display: flex; flex-direction: column; gap: .1rem; }
.lc-op .kpi-tile__copy strong { font-size: 1.6rem; font-weight: 600; letter-spacing: -.03em; line-height: 1.1; }
.lc-op .kpi-tile__copy > span { font-size: var(--lc-t-small); color: var(--lc-ink-3); }
.lc-op .kpi-tile--attention .kpi-tile__copy strong { color: var(--lc-fail); }
.lc-op .kpi-tile__delta { font-size: var(--lc-t-micro); font-family: var(--lc-mono); color: var(--lc-ink-3); }
.lc-op .kpi-tile__delta--up { color: var(--lc-pass); }
.lc-op .ops-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(22rem, 1fr)); align-items: start; }
.lc-op .ops-card { display: flex; flex-direction: column; gap: .8rem; padding: 1rem 1.1rem; border: 1px solid var(--lc-rule); border-radius: 4px; background: var(--lc-vellum); }
.lc-op .ops-card__head { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: flex-start; justify-content: space-between; }
.lc-op .overview-distribution__intro { font-size: var(--lc-t-small); color: var(--lc-ink-3); margin-top: .15rem; }
.lc-op .state-bar { display: flex; height: .4rem; border-radius: 1px; overflow: hidden; background: var(--lc-sunk); }
.lc-op .state-bar__segment { width: var(--w); }
.lc-op .state-bar__segment--in_progress { background: var(--lc-petrol); }
.lc-op .state-bar__segment--attention { background: var(--lc-hold); }
.lc-op .state-bar__segment--closed { background: var(--lc-pass); }
.lc-op .state-legend { display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; list-style: none; margin: .5rem 0 0; padding: 0; font-size: var(--lc-t-small); }
.lc-op .state-legend__item { display: flex; align-items: center; gap: .35rem; color: var(--lc-ink-2); }
.lc-op .state-legend__dot { width: .5rem; height: .5rem; border-radius: 50%; background: var(--lc-rule-2); }
.lc-op .state-legend__item--in_progress .state-legend__dot { background: var(--lc-petrol); }
.lc-op .state-legend__item--attention .state-legend__dot { background: var(--lc-hold); }
.lc-op .state-legend__item--closed .state-legend__dot { background: var(--lc-pass); }
.lc-op .metric-icon { font-family: var(--lc-mono); color: var(--lc-ink-3); }
.lc-op .sla-chip { font-size: var(--lc-t-micro); font-family: var(--lc-mono); }
.lc-provider { min-height: 40rem; width: 100%; border: 1px solid var(--lc-rule); border-radius: 4px; background: var(--lc-vellum); }

/* Company KYB desk sections. */
/* The KYB desk is a workspace, not a question. It borrows the step scaffold for
   its rail and heading, but eight dense sections must not be squeezed into the
   one-question measure with an empty aside beside them — so it overrides the
   grid and lets the sections tile across the full width. */
.lc .kyb-chapter { grid-template-columns: 13rem minmax(0, 1fr); }
.lc .kyb-chapter > .lc-step__main { max-width: none; }

/* Wizard-hosted KYB desk: the default 560px question measure crushes section
   cards into ~250px halves, so UUIDs and Greek labels wrap character-by-
   character. Widen the shell and keep facts readable. */
.lc-wizard:has(.kyb-chapter__sections) {
  max-width: min(72rem, calc(100vw - 2rem));
  align-items: stretch;
}
.lc-wizard:has(.kyb-chapter__sections) .lc-wizard__header {
  max-width: 40rem; margin-left: auto; margin-right: auto;
}
.lc-wizard:has(.kyb-chapter__sections) .lc-wizard__card {
  max-width: none; width: 100%; padding: 1.5rem 1.5rem 1.75rem;
}
.lc .kyb-chapter__sections {
  display: grid; grid-template-columns: minmax(0, 1fr);
  gap: 1.1rem; align-items: start;
}
@media (min-width: 64rem) {
  .lc .kyb-chapter__sections {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem;
  }
  .lc .kyb-chapter__sections > .kyb-section:has(.queue-table-wrap),
  .lc .kyb-chapter__sections > .kyb-section:has(.lc-table-wrap),
  .lc .kyb-chapter__sections > .kyb-section:has(.lc-form) { grid-column: auto; }
  /* Full-bleed only for wide table sections. */
  .lc .kyb-chapter__sections > .kyb-section:has(.queue-table-wrap),
  .lc .kyb-chapter__sections > .kyb-section:has(.lc-table-wrap) { grid-column: 1 / -1; }
}

/* In a desk card, label+value side-by-side with long Greek labels starves the
   value track (minmax(7rem, auto) wins). Stack facts so UUIDs and names read. */
.lc .kyb-section .data-list > div {
  grid-template-columns: minmax(0, 1fr);
  gap: .2rem;
  padding: .65rem 0;
}
.lc .kyb-section .data-list dt {
  font-size: .72rem; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; color: var(--lc-ink-3);
}
.lc .kyb-section .data-list dd {
  text-align: left; font-weight: 600; overflow-wrap: break-word; word-break: break-word;
}
.lc .kyb-section .data-list dd code {
  display: inline-block; max-width: 100%;
  word-break: break-all; overflow-wrap: anywhere;
}

/* Operator tables keep headers on one line because they have the width for it.
   In a desk column they do not: nowrap pushed the table past its wrapper, so
   the last column sat half-cut and read as broken rather than as scrollable. */
/* These tables live in a desk column, not across an operator's screen, so they
   are set tighter and allowed to wrap their headers. Identifiers keep their
   integrity — breaking `party:company:self` mid-token to save a few pixels
   makes it unreadable — and the wrapper scrolls if a row still will not fit. */
.lc .kyb-section .queue-table,
.lc .kyb-section .lc-data-table { font-size: var(--lc-t-micro); }
.lc .kyb-section .queue-table th,
.lc .kyb-section .lc-data-table th { white-space: normal; padding: .4rem .45rem; }
.lc .kyb-section .queue-table td,
.lc .kyb-section .lc-data-table td { padding: .45rem .45rem; }
.lc .kyb-section .queue-table td .button,
.lc .kyb-section .lc-data-table td .lc-btn { white-space: nowrap; }

.lc .kyb-section { display: flex; flex-direction: column; gap: .7rem; padding: 1rem 1.1rem; border: 1px solid var(--lc-rule); border-radius: 4px; background: var(--lc-vellum); }
.lc .kyb-section .card__title,
.lc .kyb-section .lc-ref-card__title { display: flex; align-items: baseline; gap: .5rem; font-size: var(--lc-t-base); }
.lc .kyb-section .card__title span:first-child,
.lc .kyb-section .lc-ref-card__title span:first-child { font-family: var(--lc-mono); font-size: var(--lc-t-micro); color: var(--lc-ink-3); }

/* Collapsed help copy on dense applicant desks (company KYB chapters). */
.lc-help-fold { margin: 0; }
.lc-help-fold > summary {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  cursor: pointer;
  list-style: none;
  font-size: var(--lc-t-small);
  font-weight: 600;
  letter-spacing: .01em;
  color: var(--lc-ink-3);
  user-select: none;
}
.lc-help-fold > summary::-webkit-details-marker { display: none; }
.lc-help-fold > summary::before {
  content: '+';
  display: inline-grid;
  place-items: center;
  width: 1.1rem;
  height: 1.1rem;
  border: 1px solid var(--lc-rule);
  border-radius: 3px;
  font-family: var(--lc-mono);
  font-size: .75rem;
  line-height: 1;
  color: var(--lc-ink-2);
  background: var(--lc-sunk);
}
.lc-help-fold[open] > summary::before { content: '−'; }
.lc-help-fold > summary:hover { color: var(--lc-ink); }
.lc-help-fold__label--open { display: none; }
.lc-help-fold[open] > summary .lc-help-fold__label--closed { display: none; }
.lc-help-fold[open] > summary .lc-help-fold__label--open { display: inline; }
.lc-help-fold__body {
  margin-top: .55rem;
  font-size: var(--lc-t-small);
  line-height: 1.45;
  color: var(--lc-ink-2);
}
.lc-wizard__header .lc-help-fold { margin-top: .35rem; }
.lc .button-group { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.lc .stack-form, .lc .stack { display: flex; flex-direction: column; gap: .7rem; }
.lc .summary-list { display: grid; gap: 0; border-top: 1px solid var(--lc-rule); margin: 0; }
.lc .summary-list > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 1rem; padding: .5rem 0; border-bottom: 1px solid var(--lc-rule); font-size: var(--lc-t-small); }
.lc .summary-list dt { margin: 0; color: var(--lc-ink-2); }
.lc .summary-list dd { margin: 0; text-align: right; font-weight: 500; }

/* Sign in fits the viewport on a phone, footer included. */
@media (max-width: 40rem), (max-height: 52rem) {
  .lc-auth { padding-block: clamp(1.25rem, 4vh, 2.25rem); gap: 1.1rem; }
  .lc-auth__form { gap: 1.15rem; }
  .lc-auth__lede { margin-top: .45rem; font-size: var(--lc-t-base); }
  .lc-auth__submit { margin-top: .3rem; }
  .lc-auth__submit .lc-btn { min-height: 3rem; }
  .lc-auth__alt { padding-top: .85rem; }
  .lc.auth-channel .lc-foot { min-height: 2.1rem; }
}
.lc-ws__id .lc-eyebrow:empty { display: none; }

/* ===========================================================================
   Remaining legacy components
   ---------------------------------------------------------------------------
   Dropping app.css left these classes unstyled. They are redrawn here in the
   register idiom rather than reinstated from the old skin.
   =========================================================================== */

/* ---- brand and legacy chrome --------------------------------------------- */
.lc .brand__mark--svg { display: flex; }
.lc .brand__copy { display: flex; flex-direction: column; }
.lc .site-header { border-bottom: 2px solid var(--lc-rule-ink); background: var(--lc-paper); }
.lc .auth-layout, .lc .auth-panel { width: 100%; }
.lc .auth-panel__heading { margin-bottom: 1rem; }
.lc-mast__who { color: var(--lc-ink-3); font-size: var(--lc-t-small); }
.lc-outcome__main { width: 100%; }
.lc-flow__t { white-space: nowrap; }

/* ---- icons ---------------------------------------------------------------- */
.lc .op-icon { display: inline-flex; flex: none; width: 1.35rem; height: 1.35rem; color: var(--lc-ink-3); }
.lc .op-icon svg { width: 100%; height: 100%; display: block; }
.lc .op-icon--alert { color: var(--lc-fail); }
.lc .op-icon--check { color: var(--lc-pass); }
.lc .op-icon--shield, .lc .op-icon--layers, .lc .op-icon--pulse { color: var(--lc-petrol); }

/* ---- small text and controls ---------------------------------------------- */
/* Symfony puts `.required` on the label of every required field — it marks
   obligation, not an error. Painting it with --lc-fail made a pristine form
   look like it had already failed validation. */
.lc .required { color: inherit; }
.lc .lead--compact { font-size: var(--lc-t-base); margin-top: .4rem; }
.lc .card--focus { border-color: var(--lc-rule-2); }
.lc .form-help { font-size: var(--lc-t-small); color: var(--lc-ink-3); }

/* Subtext alignment normalization — every field-level hint/help/meter/meta
   sits flush-left with its label and control, even when the surrounding
   container (wizard header, choice grid, status hero) centers its own text.
   A centered hint under a left-aligned label reads as a bug, not a design. */
.lc .form-help,
.lc .form-hint,
.lc .journey-field-hint,
.lc-field__hint,
.lc-wizard__field-hint,
.lc-field__meter,
.lc-field__legend,
.lc-wizard__section-label,
.lc-choice-card__meta,
.lc-path-hint,
.lc-portal-ubo__hint,
.lc-op-hint,
.lc-verify-note,
.lc-dec__note {
  text-align: left;
  margin-inline: 0;
}
.lc .form-actions--split { justify-content: space-between; }
.lc .checkbox { display: flex; align-items: flex-start; gap: .6rem; }
.lc .badge, .lc .badge--neutral { display: inline-flex; align-items: center; padding: .12rem .45rem; border-radius: 2px; background: var(--lc-sunk); color: var(--lc-ink-2); font-size: var(--lc-t-small); font-weight: 600; }
.lc .button--danger { background: transparent; color: var(--lc-fail); border-color: var(--lc-fail); }
.lc .button--danger:hover { background: var(--lc-fail-wash); color: var(--lc-fail); border-color: var(--lc-fail); }
.lc .aml-kind { font-weight: 600; }
.lc .table-scroll, .lc .audit-table-wrap { overflow-x: auto; }
.lc .data-list--review dd { font-weight: 600; }
.lc .source-data--review { display: flex; flex-direction: column; gap: .6rem; }
.lc .journey-acknowledgement { display: flex; flex-direction: column; gap: 1rem; }
.lc .contact-form { display: flex; flex-direction: column; gap: 1rem; }
.lc .mismatch-report-form { display: flex; flex-direction: column; gap: 1.25rem; }
.lc .mismatch-field-list { border: 0; margin: 0; padding: 0; }
.lc .ubo-invite { width: 100%; }
.lc .sumsub-websdk-container { min-height: 40rem; }
.lc .kyb-chapter__footer-actions { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: .5rem; }

/* ---- timeline -------------------------------------------------------------- */
.lc .timeline { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--lc-rule); }
.lc .timeline__event {
  display: grid; grid-template-columns: 10rem minmax(0, 1fr); gap: .25rem 1rem;
  padding: .55rem 0; border-bottom: 1px solid var(--lc-rule); font-size: var(--lc-t-small);
}
.lc .timeline__event time { font-family: var(--lc-mono); font-size: var(--lc-t-micro); color: var(--lc-ink-3); }
.lc .timeline__event--completed span { color: var(--lc-ink-2); }
.lc .timeline__empty { padding: 1.5rem 0; color: var(--lc-ink-3); list-style: none; }

/* ---- disposition drawer ---------------------------------------------------- */
.lc .op-drawer { border: 0; padding: 0; background: none; max-width: 34rem; width: calc(100% - 2rem); }
.lc .op-drawer::backdrop { background: rgb(20 26 25 / 45%); }
.lc .op-drawer__panel { border: 1px solid var(--lc-rule-2); border-radius: 4px; background: var(--lc-vellum); padding: 1.25rem; display: flex; flex-direction: column; gap: 1rem; }
.lc .op-drawer__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.lc .op-drawer__header h2 { font-size: var(--lc-t-lead); }
.lc .op-drawer__meta { display: flex; flex-wrap: wrap; gap: .35rem .8rem; margin-top: .35rem; font-size: var(--lc-t-small); color: var(--lc-ink-3); }
.lc .op-drawer__close { border: 0; background: none; font-size: 1.35rem; line-height: 1; cursor: pointer; color: var(--lc-ink-3); padding: .2rem .4rem; }
.lc .op-drawer__close:hover { color: var(--lc-ink); }

/* ---- audit ledger ---------------------------------------------------------- */
.lc .audit-chain-reference { display: flex; align-items: baseline; gap: .4rem; }
.lc .audit-integrity--verified { border-left-color: var(--lc-pass); }
.lc .audit-ledger { display: flex; flex-direction: column; gap: .6rem; }
.lc .audit-ledger__header { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: baseline; justify-content: space-between; }
.lc table.audit-table { width: 100%; border-collapse: collapse; font-size: var(--lc-t-small); font-variant-numeric: tabular-nums; }
.lc .audit-table th { text-align: left; padding: .5rem .65rem; border-bottom: 2px solid var(--lc-rule-ink); font-size: var(--lc-t-micro); letter-spacing: .09em; text-transform: uppercase; color: var(--lc-ink-3); }
.lc .audit-table td { padding: .55rem .65rem; border-bottom: 1px solid var(--lc-rule); vertical-align: top; }
.lc .audit-sequence { font-family: var(--lc-mono); color: var(--lc-ink-3); }
.lc .audit-digest { font-family: var(--lc-mono); font-size: var(--lc-t-micro); word-break: break-all; }
.lc .audit-digest--previous { color: var(--lc-ink-3); }

/* ---- audit timeline (redesigned) -------------------------------------------- */
.lc .audit-timeline__hero {
  display: flex; flex-wrap: wrap; gap: 1rem 2rem; align-items: flex-start; justify-content: space-between;
  padding: 1.1rem 1.25rem; border: 1px solid var(--lc-rule); border-radius: 12px; background: var(--lc-vellum);
  border-left: 3px solid var(--lc-pass); box-shadow: var(--lc-shadow-xs); margin-bottom: 1rem;
}
.lc .audit-timeline__hero--failed { border-left-color: var(--lc-fail); }
.lc .audit-timeline__hero-status { display: flex; gap: .8rem; align-items: flex-start; }
.lc .audit-timeline__hero-icon { color: var(--lc-pass); flex-shrink: 0; padding-top: .1rem; }
.lc .audit-timeline__hero--failed .audit-timeline__hero-icon { color: var(--lc-fail); }
.lc .audit-timeline__hero-label { display: block; font-size: var(--lc-t-micro); letter-spacing: .11em; text-transform: uppercase; color: var(--lc-ink-3); }
.lc .audit-timeline__hero-status strong { font-size: 1.05rem; font-weight: 750; }
.lc .audit-timeline__hero-status p { margin: .25rem 0 0; font-size: var(--lc-t-small); color: var(--lc-ink-2); max-width: 32rem; }
.lc .audit-timeline__hero-metrics { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; margin: 0; }
.lc .audit-timeline__hero-metrics > div { display: grid; gap: .1rem; }
.lc .audit-timeline__hero-metrics dt { font-size: var(--lc-t-micro); color: var(--lc-ink-3); letter-spacing: .06em; text-transform: uppercase; }
.lc .audit-timeline__hero-metrics dd { margin: 0; font-family: var(--lc-mono); font-weight: 600; font-size: .95rem; }

.lc .audit-timeline__summary {
  display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(14rem, .8fr);
  gap: 1rem; margin-bottom: 1rem;
}
@media (max-width: 52rem) { .lc .audit-timeline__summary { grid-template-columns: 1fr; } }
.lc .audit-timeline__head-digest {
  padding: .85rem 1rem; border: 1px solid var(--lc-rule); border-radius: 10px; background: var(--lc-sunk);
}
.lc .audit-timeline__head-label { font-size: var(--lc-t-micro); letter-spacing: .11em; text-transform: uppercase; color: var(--lc-ink-3); display: block; margin-bottom: .35rem; }
.lc .audit-timeline__head-digest code { word-break: break-all; font-size: .82rem; font-family: var(--lc-mono); }
.lc .audit-timeline__head-body { margin: .4rem 0 0; font-size: var(--lc-t-small); color: var(--lc-ink-3); }

.lc .audit-timeline__events {
  padding: .85rem 1rem; border: 1px solid var(--lc-rule); border-radius: 10px; background: var(--lc-vellum);
}
.lc .audit-timeline__events-label { font-size: var(--lc-t-micro); letter-spacing: .11em; text-transform: uppercase; color: var(--lc-ink-3); display: block; margin-bottom: .5rem; }
.lc .audit-timeline__event-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .35rem; }
.lc .audit-timeline__event-item { display: flex; align-items: center; gap: .5rem; font-size: var(--lc-t-small); }
.lc .audit-timeline__event-dot { width: .55rem; height: .55rem; border-radius: 50%; flex-shrink: 0; background: var(--lc-petrol); }
.lc .audit-timeline__event-dot--journey-created { background: var(--lc-petrol); }
.lc .audit-timeline__event-dot--state-transition { background: var(--lc-sky); }
.lc .audit-timeline__event-dot--evidence-recorded { background: var(--lc-pass); }
.lc .audit-timeline__event-dot--decision-recorded { background: var(--lc-amber); }
.lc .audit-timeline__event-dot--pep-hold-placed { background: var(--lc-hold); }
.lc .audit-timeline__event-name { flex: 1; min-width: 0; color: var(--lc-ink-2); }
.lc .audit-timeline__event-count { font-family: var(--lc-mono); font-weight: 700; color: var(--lc-ink); }

.lc .audit-timeline__panel { margin-bottom: 1rem; }
.lc .audit-timeline__table { width: 100%; border-collapse: collapse; font-size: var(--lc-t-small); font-variant-numeric: tabular-nums; }
.lc .audit-timeline__table th { text-align: left; padding: .55rem .65rem; border-bottom: 2px solid var(--lc-rule-ink); font-size: var(--lc-t-micro); letter-spacing: .09em; text-transform: uppercase; color: var(--lc-ink-3); white-space: nowrap; }
.lc .audit-timeline__table td { padding: .5rem .65rem; border-bottom: 1px solid var(--lc-rule); vertical-align: top; }
.lc .audit-timeline__table tr:hover td { background: var(--lc-sunk); }
.lc .audit-col-seq { width: 3.5rem; }
.lc .audit-col-event { width: 10rem; }
.lc .audit-col-actor { width: 11rem; }
.lc .audit-col-recorded { width: 11rem; white-space: nowrap; }
.lc .audit-col-hash { width: 8rem; }
.lc .audit-timeline__seq { font-family: var(--lc-mono); font-weight: 700; color: var(--lc-ink-3); }
.lc .audit-timeline__event-badge {
  display: inline-block; padding: .15rem .45rem; border-radius: 4px; font-size: .68rem; font-weight: 650;
  letter-spacing: .03em; white-space: nowrap; border: 1px solid var(--lc-rule); background: var(--lc-vellum); color: var(--lc-ink-2);
}
.lc .audit-event--journey-created .audit-timeline__event-badge { border-color: var(--lc-petrol); color: var(--lc-petrol); background: var(--lc-petrol-wash); }
.lc .audit-event--state-transition .audit-timeline__event-badge { border-color: var(--lc-sky); color: var(--lc-sky); background: rgba(76, 175, 234, .08); }
.lc .audit-event--evidence-recorded .audit-timeline__event-badge { border-color: var(--lc-pass); color: var(--lc-pass); background: rgba(40, 167, 69, .08); }
.lc .audit-event--decision-recorded .audit-timeline__event-badge { border-color: var(--lc-amber); color: var(--lc-amber); background: rgba(255, 193, 7, .08); }
.lc .audit-event--pep-hold-placed .audit-timeline__event-badge { border-color: var(--lc-hold); color: var(--lc-hold); background: rgba(255, 159, 64, .08); }
.lc .audit-timeline__desc { display: block; line-height: 1.35; }
.lc .audit-timeline__journey-id { display: inline-block; margin-top: .15rem; font-family: var(--lc-mono); font-size: .68rem; color: var(--lc-ink-3); }
.lc .audit-timeline__actor { font-family: var(--lc-mono); font-size: .75rem; color: var(--lc-ink-2); }
.lc .audit-timeline__hash { font-family: var(--lc-mono); font-size: .72rem; color: var(--lc-ink-3); }
.lc .audit-timeline__table time { font-size: .78rem; color: var(--lc-ink-2); }
.lc .audit-ledger__more { padding: .6rem .65rem; font-size: var(--lc-t-small); color: var(--lc-ink-3); text-align: center; border-top: 1px solid var(--lc-rule); }

/* ---- dashboards: tiles, donut, trend --------------------------------------- */
.lc .kpi-grid--duo { grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); }
.lc .kpi-tile--total .kpi-tile__copy strong { color: var(--lc-ink); }
.lc .kpi-tile--active .kpi-tile__copy strong { color: var(--lc-petrol); }
.lc .kpi-tile--success .kpi-tile__copy strong { color: var(--lc-pass); }
.lc .kpi-tile__delta--warn { color: var(--lc-hold); }
.lc .analytics-card { display: flex; flex-direction: column; gap: 1rem; }
.lc .overview-distribution__head { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; align-items: flex-start; justify-content: space-between; }
.lc .analytics-grid { display: grid; gap: 1.5rem; align-items: start; }
@media (min-width: 60rem) { .lc .analytics-grid { grid-template-columns: minmax(0, 18rem) minmax(0, 1fr); } }

.lc .analytics-donut { display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem; }
/* The donut carried no intrinsic size; without it the SVG filled the card and
   its centred total rendered at display size. */
.lc svg.donut { width: 9rem; height: 9rem; flex: none; transform: rotate(-90deg); }
.lc .donut__track { stroke: var(--lc-sunk); }
.lc .donut__seg { stroke: var(--lc-rule-2); }
.lc .donut__seg--in_progress { stroke: var(--lc-petrol); }
.lc .donut__seg--attention { stroke: var(--lc-hold); }
.lc .donut__seg--onboarded { stroke: var(--lc-pass); }
.lc .donut__seg--closed { stroke: var(--lc-rule-2); }
.lc .donut__total { font-size: 7px; font-weight: 600; fill: var(--lc-ink); transform: rotate(90deg); transform-origin: 21px 21px; }
.lc .donut__caption { font-size: 2.6px; letter-spacing: .12em; text-transform: uppercase; fill: var(--lc-ink-3); transform: rotate(90deg); transform-origin: 21px 21px; }

.lc .state-legend--donut { flex-direction: column; gap: .35rem; align-items: stretch; }
.lc .state-legend--donut .state-legend__item { display: grid; grid-template-columns: .6rem minmax(0, 1fr) auto auto; gap: .5rem; align-items: baseline; }
.lc .state-legend__label { color: var(--lc-ink-2); }
.lc .state-legend__pct { font-family: var(--lc-mono); font-size: var(--lc-t-micro); color: var(--lc-ink-3); }
.lc .state-legend__item--onboarded .state-legend__dot { background: var(--lc-pass); }

.lc .analytics-trend { display: flex; flex-direction: column; gap: .6rem; min-width: 0; }
.lc .analytics-trend__head { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: baseline; justify-content: space-between; }
.lc .analytics-trend__title { font-size: var(--lc-t-base); font-weight: 600; }
.lc .trend-legend { display: flex; flex-wrap: wrap; gap: .4rem 1rem; list-style: none; margin: 0; padding: 0; font-size: var(--lc-t-small); color: var(--lc-ink-2); }
.lc .trend-legend li { display: flex; align-items: center; gap: .35rem; }
.lc .trend-legend__dot { width: .5rem; height: .5rem; border-radius: 1px; background: var(--lc-rule-2); }
.lc .trend-legend__dot--created { background: var(--lc-petrol); }
.lc .trend-legend__dot--completed { background: var(--lc-pass); }
.lc .trend-chart { display: flex; align-items: flex-end; gap: .5rem; height: 8rem; padding-top: .5rem; border-bottom: 1px solid var(--lc-rule); }
.lc .trend-chart__col { display: flex; align-items: flex-end; gap: 2px; flex: 1; height: 100%; }
.lc .trend-chart__bar { flex: 1; height: var(--h); min-height: 2px; border-radius: 1px 1px 0 0; background: var(--lc-rule-2); }
.lc .trend-chart__bar--created { background: var(--lc-petrol); }
.lc .trend-chart__bar--completed { background: var(--lc-pass); }
.lc .trend-chart__axis { display: flex; justify-content: space-between; font-family: var(--lc-mono); font-size: var(--lc-t-micro); color: var(--lc-ink-3); }

/* ---- Chart.js canvas containers ------------------------------------------- */
.lc .analytics-donut__chart-wrap {
  position: relative; width: 9rem; height: 9rem; flex: none;
}
.lc .analytics-donut__chart-wrap canvas { width: 100% !important; height: 100% !important; }
.lc .analytics-donut__center {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  text-align: center; pointer-events: none;
}
.lc .analytics-donut__total {
  display: block; font-size: 1.1rem; font-weight: 700; color: var(--lc-ink); line-height: 1;
}
.lc .analytics-donut__caption {
  display: block; font-size: .5rem; letter-spacing: .12em; text-transform: uppercase;
  color: var(--lc-ink-3); margin-top: .15rem;
}
.lc .trend-chart-canvas-wrap {
  position: relative; height: 8rem; padding-top: .5rem;
  border-bottom: 1px solid var(--lc-rule);
}
.lc .trend-chart-canvas-wrap canvas { width: 100% !important; }

/* ---- monitoring ops cards --------------------------------------------------- */
.lc .ops-card__badge { font-size: var(--lc-t-micro); font-weight: 600; padding: .12rem .45rem; border-radius: 2px; background: var(--lc-sunk); color: var(--lc-ink-2); }
.lc .ops-card__badge--attention { background: var(--lc-hold-wash); color: var(--lc-hold); }
.lc .ops-card__foot { margin-top: .35rem; display: flex; flex-wrap: wrap; gap: .5rem; }
.lc table.ops-table { width: 100%; border-collapse: collapse; font-size: var(--lc-t-small); }
.lc .ops-table th { text-align: left; padding: .45rem .6rem; border-bottom: 2px solid var(--lc-rule-ink); font-size: var(--lc-t-micro); letter-spacing: .09em; text-transform: uppercase; color: var(--lc-ink-3); }
.lc .ops-table td { padding: .5rem .6rem; border-bottom: 1px solid var(--lc-rule); }
.lc .op-col-action { text-align: right; white-space: nowrap; }
.lc .monitor-note { display: flex; flex-direction: column; gap: .4rem; font-size: var(--lc-t-small); color: var(--lc-ink-2); }
.lc .monitor-note__rows { display: flex; flex-direction: column; gap: .25rem; }

/* ---- sign-out dialog ------------------------------------------------------
   The one destructive control in the masthead gets a real confirmation: a
   centred card over a dimmed page, never a bare link. */
.lc-dialog {
  border: 0; padding: 0; background: transparent;
  /* Wide enough for Greek cancel + confirm on one row without wrapping. */
  max-width: min(28rem, calc(100vw - 2rem));
}
.lc-dialog::backdrop { background: rgb(20 26 25 / .45); }
.lc-dialog[open] { animation: lc-dialog-in 220ms cubic-bezier(.22, 1, .36, 1); }
@keyframes lc-dialog-in {
  from { opacity: 0; transform: translate3d(0, 10px, 0) scale(.98); }
  to   { opacity: 1; transform: none; }
}
.lc-dialog__card {
  background: var(--lc-vellum);
  border: 1px solid var(--lc-rule); border-radius: 8px;
  padding: 1.4rem 1.5rem;
  box-shadow: 0 24px 48px -24px rgb(20 26 25 / .45);
}
.lc-dialog__title { font-size: var(--lc-t-lead); }
.lc-dialog__body { margin-top: .55rem; color: var(--lc-ink-2); font-size: var(--lc-t-base); line-height: 1.55; }
.lc-dialog__actions {
  display: flex; flex-wrap: nowrap; gap: .6rem;
  justify-content: flex-end; align-items: center;
  margin-top: 1.3rem;
}
.lc-dialog__actions .lc-btn {
  min-height: 2.5rem; flex: 0 1 auto; white-space: nowrap;
  box-sizing: border-box;
}
@media (max-width: 30rem) {
  /* Narrow viewports: full-width stack, shared edges. Confirm stays last. */
  .lc-dialog__actions {
    flex-direction: column; flex-wrap: nowrap;
    align-items: stretch; justify-content: stretch;
  }
  .lc-dialog__actions .lc-btn {
    width: 100%; justify-content: center; min-height: 2.75rem;
  }
}

/* A solid danger button: the dialog's confirm must read as the consequential
   choice, not as another ghost. */
.lc-btn--danger-solid {
  background: var(--lc-fail); border-color: var(--lc-fail); color: #fff;
  box-shadow: 0 1px 2px rgb(148 21 44 / .25), 0 6px 14px -8px rgb(148 21 44 / .5);
}
.lc-btn--danger-solid:hover {
  background: #7d1125; border-color: #7d1125; color: #fff;
  transform: translateY(-1px);
}

/* ===========================================================================
   Operator portal — sidebar + topbar chrome
   ---------------------------------------------------------------------------
   From the operator-ledgerclear mockup.  The old masthead + horizontal nav
   bar is replaced by a fixed sidebar and a sticky topbar.  All new classes
   are prefixed lc-op- and scoped under .lc so they cannot leak.
   Dark theme is driven by [data-theme="dark"] on <html>.
   =========================================================================== */

/* ---- derived layout tokens ----------------------------------------------- */

.lc-op {
  --lc-op-sidebar-w: 220px;
  --lc-op-topbar-h: 52px;
  --lc-op-sidebar-bg: #0f1413;
  --lc-op-sidebar-fg: #8a948f;
  --lc-op-sidebar-hover: #1a201f;
  --lc-op-sidebar-active: var(--lc-petrol);
  /* Dark chrome must not use the light paper hairline — it bleeds as a white
     seam at the sidebar/topbar join. */
  --lc-op-sidebar-rule: rgb(255 255 255 / .08);
  --lc-op-topbar-bg: var(--lc-vellum);
  --lc-op-card-bg: var(--lc-vellum);
}

/* ---- dark theme variable overrides (operator only) ----------------------- */

html[data-theme="dark"] .lc-op {
  --lc-ink: #dfe2dc;
  --lc-ink-2: #9ba39e;
  --lc-ink-3: #6d7975;
  --lc-paper: #0f1413;
  --lc-vellum: #181f1d;
  --lc-sunk: #1e2624;
  --lc-rule: #2a322f;
  --lc-rule-2: #3a443f;
  --lc-rule-ink: #dfe2dc;
  --lc-petrol: #0c7286;
  --lc-petrol-deep: #0a4b57;
  --lc-petrol-bright: #27a8c0;
  --lc-petrol-wash: #0e2a30;
  --lc-pass: #2d9e5f;
  --lc-hold: #c9962e;
  --lc-fail: #d63852;
  --lc-pass-wash: #122a1e;
  --lc-hold-wash: #2a2110;
  --lc-fail-wash: #2a1015;
  --lc-shadow-xs: 0 1px 2px rgb(0 0 0 / .2);
  --lc-shadow-sm: 0 1px 3px rgb(0 0 0 / .25), 0 1px 2px rgb(0 0 0 / .15);
  --lc-shadow-md: 0 4px 12px rgb(0 0 0 / .25), 0 1px 3px rgb(0 0 0 / .15);
  --lc-shadow-lg: 0 8px 24px rgb(0 0 0 / .3), 0 2px 6px rgb(0 0 0 / .15);
  --lc-op-sidebar-bg: #0a0e0d;
  --lc-op-sidebar-fg: #6d7975;
  --lc-op-sidebar-hover: #161c1a;
  --lc-op-topbar-bg: #181f1d;
  --lc-op-card-bg: #181f1d;
}

/* ---- app shell ----------------------------------------------------------- */

.lc-op-app {
  flex: 1; display: flex; align-items: stretch;
  min-height: 100vh; min-height: 100dvh;
  width: 100%;
}

/* ---- sidebar ------------------------------------------------------------- */

.lc-op-sidebar {
  width: var(--lc-op-sidebar-w); flex-shrink: 0;
  background: var(--lc-op-sidebar-bg); color: var(--lc-op-sidebar-fg);
  display: flex; flex-direction: column;
  position: fixed; top: 0; bottom: 0; left: 0; z-index: 100;
  border-right: 1px solid var(--lc-op-sidebar-rule);
  box-shadow: var(--lc-shadow-md);
}
.lc-op-sidebar__brand {
  height: var(--lc-op-topbar-h); min-height: var(--lc-op-topbar-h);
  padding: 0 1.25rem; font-size: .9375rem; font-weight: 700;
  color: #dfe2dc; letter-spacing: -.012em;
  border-bottom: 1px solid var(--lc-op-sidebar-rule);
  display: flex; align-items: center; gap: .5rem;
  box-sizing: border-box;
  background: linear-gradient(180deg, rgb(255 255 255 / .03) 0%, transparent 100%);
}
.lc-op-sidebar__brand .brand__mark { color: var(--lc-petrol-bright); }
.lc-op-sidebar__brand-name { color: #dfe2dc; }
.lc-op-sidebar__brand-name span { color: var(--lc-petrol-bright); }

.lc-op-sidebar__nav { flex: 1; padding: .75rem .5rem; overflow-y: auto; }
.lc-op-sidebar__nav-section { margin-bottom: .5rem; }
.lc-op-sidebar__nav-label {
  font-size: .5625rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .1em; color: var(--lc-op-sidebar-fg); opacity: .5;
  padding: .5rem .7rem .25rem; margin-bottom: 2px;
}
.lc-op-sidebar__nav a {
  display: flex; align-items: center; gap: .55rem;
  padding: .5rem .7rem; border-radius: 4px;
  font-size: .8125rem; font-weight: 500; color: var(--lc-op-sidebar-fg);
  transition: background 150ms ease, color 150ms ease, box-shadow 150ms ease;
  margin-bottom: 1px; text-decoration: none; position: relative;
}
.lc-op-sidebar__nav a:hover { background: var(--lc-op-sidebar-hover); color: #dfe2dc; }
.lc-op-sidebar__nav a.active {
  background: var(--lc-op-sidebar-active); color: #fff;
  box-shadow: 0 2px 8px rgb(10 75 87 / .3);
}
.lc-op-sidebar__nav a.active::before {
  content: ''; position: absolute; left: -5px; top: 50%; transform: translateY(-50%);
  width: 3px; height: 60%; border-radius: 0 2px 2px 0; background: var(--lc-petrol-bright);
}
.lc-op-sidebar__nav .op-icon { width: 16px; height: 16px; color: inherit; flex-shrink: 0; }
.lc-op-sidebar__nav .op-icon svg { width: 16px; height: 16px; }

.lc-op-sidebar__footer {
  padding: .75rem 1.25rem; border-top: 1px solid var(--lc-op-sidebar-rule);
  font-size: .6875rem; color: var(--lc-op-sidebar-fg);
}
.lc-op-sidebar__env {
  display: inline-block; padding: .1rem .35rem;
  border: 1px solid var(--lc-hold); border-radius: 2px;
  color: var(--lc-hold); font-weight: 600; font-size: .625rem;
  letter-spacing: .08em; text-transform: uppercase;
}

/* ---- main area + topbar -------------------------------------------------- */

.lc-op-main {
  flex: 1; margin-left: var(--lc-op-sidebar-w);
  display: flex; flex-direction: column; min-width: 0;
  background: var(--lc-paper);
}
.lc-op-app:not(:has(.lc-op-sidebar)) .lc-op-main { margin-left: 0; }

.lc-op-topbar {
  height: var(--lc-op-topbar-h); min-height: var(--lc-op-topbar-h);
  background: var(--lc-op-topbar-bg);
  border-bottom: 1px solid var(--lc-rule);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 1.25rem; position: sticky; top: 0; z-index: 50;
  box-sizing: border-box; width: 100%; margin: 0;
  box-shadow: 0 1px 3px rgb(20 26 25 / .04);
}
.lc-op-topbar__left { display: flex; align-items: center; gap: .85rem; min-width: 0; }
.lc-op-topbar__right { display: flex; align-items: center; gap: .6rem; margin-left: auto; }
.lc-op-topbar__btn {
  height: 30px; padding: 0 .65rem; border: 1px solid var(--lc-rule); border-radius: 3px;
  background: transparent; font-size: .75rem; font-weight: 500; color: var(--lc-ink-2);
  cursor: pointer; display: flex; align-items: center; gap: .35rem;
  transition: border-color 120ms ease; text-decoration: none;
}
.lc-op-topbar__btn:hover { border-color: var(--lc-rule-2); color: var(--lc-ink); }
.lc-op-topbar__theme { width: 30px; padding: 0; justify-content: center; }
.lc-op-topbar .lc-lang a { min-height: 1.75rem; padding: .2rem .5rem; }
.lc-op-topbar__user-wrap { display: flex; align-items: center; gap: .4rem; }
.lc-op-topbar__avatar {
  width: 28px; height: 28px; border-radius: 50%; background: var(--lc-petrol);
  color: #fff; font-size: .6875rem; font-weight: 600;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--lc-mono); box-shadow: var(--lc-shadow-xs);
}
.lc-op-topbar__user { font-size: .75rem; font-weight: 600; }

/* ---- content area -------------------------------------------------------- */

.lc-op-content {
  flex: 1; padding: 1.25rem;
  background: var(--lc-paper);
  min-width: 0;
}
/* Workspace title band is a full-bleed strip under the topbar — not a floating
   card inset from the sidebar (that left a paper gap / broken banner seam). */
.lc-op-content:has(> .lc-ws__head),
.lc-op-content:has(> .lc-print-slug + .lc-ws__head) {
  padding: 0 0 1.5rem;
}
.lc-op-content .lc-ws__head {
  border-radius: 0;
  margin: 0;
  border-bottom: 1px solid var(--lc-rule);
  background: var(--lc-op-topbar-bg);
  width: 100%;
}
.lc-op-content .lc-ws__head-inner {
  padding-inline: 1.25rem;
  padding-block: .7rem;
  width: 100%;
  max-width: none;
}
.lc-op-content:has(.lc-ws__head) .lc-ws__wide,
.lc-op-content:has(.lc-ws__head) .lc-ws__panes,
.lc-op-content:has(.lc-ws__head) > .lc-shell {
  padding-inline: 1.25rem;
  margin-top: 1.25rem;
}
.lc-op-content .lc-shell--wide { width: 100%; max-width: none; }
.lc-op-content .lc-ws__wide { padding-block: 0 1.5rem; }

/* ---- KPI cards ----------------------------------------------------------- */

.lc-op-kpi-row {
  display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .75rem;
  margin-bottom: 1.25rem;
  width: 100%;
}
.lc-op-kpi-row--cols-1 { grid-template-columns: minmax(0, 1fr); }
.lc-op-kpi-row--cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.lc-op-kpi-row--cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.lc-op-kpi-row--cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.lc-op-kpi-row--queue-cards { max-width: 56rem; }
.lc-op-kpi-row--queue-cards.lc-op-kpi-row--cols-1 { max-width: 22rem; }
@media (max-width: 80rem) {
  .lc-op-kpi-row:not([class*="lc-op-kpi-row--cols-"]) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 40rem) {
  .lc-op-kpi-row:not([class*="lc-op-kpi-row--cols-"]) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.lc-op-kpi-card {
  background: var(--lc-op-card-bg); padding: 1rem 1.1rem;
  transition: transform 150ms ease, box-shadow 150ms ease; text-decoration: none; color: inherit;
  border: 1px solid var(--lc-rule); border-radius: 8px;
  box-shadow: var(--lc-shadow-xs);
  position: relative; overflow: hidden;
}
.lc-op-kpi-card::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: var(--lc-petrol); opacity: .7;
}
.lc-op-kpi-card--pass::before { background: var(--lc-pass); }
.lc-op-kpi-card--hold::before { background: var(--lc-hold); }
.lc-op-kpi-card--fail::before { background: var(--lc-fail); }
.lc-op-kpi-card--live::before { background: var(--lc-petrol-bright); }
.lc-op-kpi-card--attention::before { background: var(--lc-hold); }
.lc-op-kpi-card:hover {
  transform: translateY(-2px); box-shadow: var(--lc-shadow-md);
}
.lc-op-kpi-card__label {
  font-size: .625rem; font-weight: 600; color: var(--lc-ink-3);
  text-transform: uppercase; letter-spacing: .08em; margin-bottom: .5rem;
}
.lc-op-kpi-card__value {
  font-size: 1.75rem; font-weight: 700; letter-spacing: -.025em;
  line-height: 1; font-family: var(--lc-mono);
}
.lc-op-kpi-card__delta {
  display: inline-flex; align-items: center; gap: .2rem;
  margin-top: .4rem; font-size: .6875rem; font-weight: 500;
}
.lc-op-kpi-card__delta--up { color: var(--lc-pass); }
.lc-op-kpi-card__delta--warn { color: var(--lc-hold); }
.lc-op-kpi-card__delta--down { color: var(--lc-fail); }
.lc-op-kpi-card__delta--muted { color: var(--lc-ink-3); }

/* ---- overview hero band ---------------------------------------------------- */
.lc .ov-hero {
  display: flex; flex-wrap: wrap; align-items: stretch; gap: 0;
  padding: 1.1rem 1.25rem; border: 1px solid var(--lc-rule); border-radius: 12px;
  background: var(--lc-vellum); box-shadow: var(--lc-shadow-xs); margin-bottom: 1rem;
  position: relative; overflow: hidden;
}
.lc .ov-hero::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, var(--lc-petrol), var(--lc-pass));
  opacity: .8;
}
.lc .ov-hero__item {
  display: flex; flex-direction: column; gap: .15rem; padding: .2rem 1.5rem; flex: 1; min-width: 8rem;
}
.lc .ov-hero__item--primary { padding-left: 0; }
.lc .ov-hero__divider { width: 1px; background: var(--lc-rule); align-self: stretch; }
.lc .ov-hero__label {
  font-size: .6rem; font-weight: 600; text-transform: uppercase; letter-spacing: .1em;
  color: var(--lc-ink-3);
}
.lc .ov-hero__value {
  font-size: 1.6rem; font-weight: 750; font-family: var(--lc-mono);
  letter-spacing: -.02em; line-height: 1.1; color: var(--lc-ink);
}
.lc .ov-hero__unit { font-size: .9rem; font-weight: 600; color: var(--lc-ink-2); margin-left: .1rem; }
.lc .ov-hero__delta {
  font-size: .68rem; font-weight: 600; display: inline-flex; align-items: center; gap: .2rem;
}
.lc .ov-hero__delta--up { color: var(--lc-pass); }
.lc .ov-hero__sub { font-size: .68rem; color: var(--lc-ink-3); }
.lc .ov-hero__badge {
  display: inline-flex; align-items: center; gap: .2rem; font-size: .62rem; font-weight: 600;
  color: var(--lc-pass); margin-top: .1rem;
}
.lc .ov-hero__item--verified .ov-hero__value { color: var(--lc-pass); }
.lc .ov-hero__item--flat .ov-hero__value { color: var(--lc-ink); }
@media (max-width: 52rem) {
  .lc .ov-hero { flex-direction: column; gap: .75rem; }
  .lc .ov-hero__divider { width: 100%; height: 1px; }
  .lc .ov-hero__item { padding: .2rem 0; }
}

/* ---- overview quick actions ------------------------------------------------ */
.lc .ov-actions {
  display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem;
}
.lc .ov-actions__btn {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .5rem .85rem; border: 1px solid var(--lc-rule); border-radius: 8px;
  background: var(--lc-vellum); color: var(--lc-ink-2); text-decoration: none;
  font-size: .78rem; font-weight: 600; transition: all 150ms ease;
}
.lc .ov-actions__btn:hover {
  border-color: var(--lc-petrol); color: var(--lc-petrol);
  transform: translateY(-1px); box-shadow: var(--lc-shadow-xs);
}
.lc .ov-actions__btn svg { flex-shrink: 0; opacity: .7; }
.lc .ov-actions__btn:hover svg { opacity: 1; }
.lc .ov-actions__badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 1.1rem; height: 1.1rem; padding: 0 .3rem; border-radius: 10px;
  background: var(--lc-petrol); color: var(--lc-vellum); font-size: .62rem; font-weight: 700;
}
.lc .ov-actions__badge--hold { background: var(--lc-hold); }

/* ---- overview two-column layout -------------------------------------------- */
.lc .ov-cols {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(16.5rem, 22rem);
  gap: 1.15rem;
  margin-bottom: 1.25rem;
  align-items: start;
  width: 100%;
}
@media (max-width: 72rem) {
  .lc .ov-cols { grid-template-columns: minmax(0, 1fr) minmax(15rem, 19rem); }
}
@media (max-width: 64rem) { .lc .ov-cols { grid-template-columns: 1fr; } }
.lc .ov-cols__main { margin-bottom: 0; min-width: 0; }
.lc .ov-cols__side { display: flex; flex-direction: column; gap: 1rem; min-width: 0; }
.lc .ov-cols__side > .lc-op-panel { margin-bottom: 0; }

/* ---- compliance snapshot list ---------------------------------------------- */
.lc .ov-compliance-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.lc .ov-compliance-item { display: flex; align-items: center; gap: .6rem; }
.lc .ov-compliance-item__icon {
  display: flex; align-items: center; justify-content: center; width: 1.75rem; height: 1.75rem;
  border-radius: 6px; background: var(--lc-sunk); color: var(--lc-ink-3); flex-shrink: 0;
}
.lc .ov-compliance-item__icon--hold { background: var(--lc-hold-wash); color: var(--lc-hold); }
.lc .ov-compliance-item__icon--warn { background: var(--lc-hold-wash); color: var(--lc-hold); }
.lc .ov-compliance-item__label { flex: 1; font-size: .8rem; color: var(--lc-ink-2); }
.lc .ov-compliance-item__value {
  font-family: var(--lc-mono); font-weight: 700; font-size: .95rem; color: var(--lc-ink);
}

/* ---- evidence counts list -------------------------------------------------- */
.lc .ov-evidence-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.lc .ov-evidence-item {
  display: flex; align-items: baseline; justify-content: space-between;
  padding: .35rem 0; border-bottom: 1px solid var(--lc-rule);
}
.lc .ov-evidence-item:last-child { border-bottom: none; }
.lc .ov-evidence-item__label { font-size: .78rem; color: var(--lc-ink-2); }
.lc .ov-evidence-item__value {
  font-family: var(--lc-mono); font-weight: 700; font-size: .9rem; color: var(--lc-ink);
}

/* ---- panels -------------------------------------------------------------- */

.lc-op-panel {
  background: var(--lc-op-card-bg); border: 1px solid var(--lc-rule);
  margin-bottom: 1.25rem; border-radius: 10px; overflow: hidden;
  box-shadow: var(--lc-shadow-sm);
  transition: box-shadow 200ms ease;
}
.lc-op-panel:hover { box-shadow: var(--lc-shadow-md); }
.lc-op-panel__header {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: .65rem 1rem; border-bottom: 1px solid var(--lc-rule);
  background: linear-gradient(180deg, var(--lc-sunk) 0%, var(--lc-vellum) 100%);
}
.lc-op-panel__header--split { align-items: flex-start; padding: .85rem 1.1rem; }
.lc-op-panel__heading { min-width: 0; flex: 1 1 auto; }
.lc-op-panel__title { font-size: .8125rem; font-weight: 650; letter-spacing: -.01em; }
.lc-op-panel__title span { color: var(--lc-ink-3); font-weight: 400; font-size: .625rem; margin-left: .35rem; }
.lc-op-panel__lede {
  margin: .25rem 0 0; font-size: .72rem; line-height: 1.4; color: var(--lc-ink-3);
  max-width: 42rem; text-wrap: pretty;
}
.lc-op-panel__header--split .lc-op-btn { flex: 0 0 auto; margin-top: .1rem; white-space: nowrap; }
.lc-op-panel__body { padding: 0; }

/* ---- filter bar ---------------------------------------------------------- */

.lc-op-filter-bar {
  display: flex; align-items: center; gap: .35rem; padding: .5rem .85rem;
  border-bottom: 1px solid var(--lc-rule); flex-wrap: wrap; background: var(--lc-sunk);
}
.lc-op-filter-chip {
  display: inline-flex; align-items: center; gap: .3rem; padding: .25rem .6rem;
  border: 1px solid var(--lc-rule); border-radius: 6px;
  font-size: .6875rem; font-weight: 500; color: var(--lc-ink-2);
  cursor: pointer; transition: all 150ms ease; background: var(--lc-vellum);
  text-decoration: none;
}
.lc-op-filter-chip:hover { border-color: var(--lc-rule-2); color: var(--lc-ink); box-shadow: var(--lc-shadow-xs); }
.lc-op-filter-chip.active { background: var(--lc-petrol-wash); border-color: var(--lc-petrol); color: var(--lc-petrol); font-weight: 600; }
.lc-op-filter-chip__count { font-family: var(--lc-mono); font-size: .625rem; color: var(--lc-ink-3); }
.lc-op-filter-chip.active .lc-op-filter-chip__count { color: var(--lc-petrol); }

/* ---- data table ---------------------------------------------------------- */

.lc-op-table-scroll { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.lc-op-data-table {
  width: 100%; border-collapse: collapse; table-layout: fixed; font-size: .75rem;
}
.lc-op-data-table--attention { min-width: 44rem; }
.lc-op-data-table--attention .lc-op-data-table__col-ref { width: 16%; }
.lc-op-data-table--attention .lc-op-data-table__col-state { width: 20%; }
.lc-op-data-table--attention .lc-op-data-table__col-idv { width: 30%; }
.lc-op-data-table--attention .lc-op-data-table__col-sla { width: 12%; }
.lc-op-data-table--attention .lc-op-data-table__col-wait { width: 10%; }
.lc-op-data-table--attention .lc-op-data-table__col-action { width: 12%; }
.lc-op-data-table__action { text-align: right; }
.lc .ov-row-open {
  display: inline-flex; align-items: center; gap: .2rem;
  color: var(--lc-petrol); font-weight: 650; font-size: .72rem; white-space: nowrap;
}
.lc .ov-idv-ref {
  display: inline-block; max-width: 100%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom;
}
.lc-op-data-table thead th {
  text-align: left; padding: .6rem .9rem; font-size: .625rem; font-weight: 700;
  color: var(--lc-ink-3); text-transform: uppercase; letter-spacing: .06em;
  border-bottom: 2px solid var(--lc-rule-2); background: var(--lc-sunk);
  white-space: normal; font-family: var(--lc-sans); vertical-align: bottom;
  line-height: 1.3;
}
.lc-op-data-table thead th:first-child { border-top-left-radius: 10px; }
.lc-op-data-table thead th:last-child { border-top-right-radius: 10px; }
.lc-op-data-table tbody td {
  padding: .6rem .85rem; border-bottom: 1px solid var(--lc-rule);
  vertical-align: middle; text-align: left;
  overflow-wrap: anywhere;
}
.lc-op-data-table tbody tr[data-href] { cursor: pointer; transition: background 100ms ease; }
.lc-op-data-table tbody tr:hover { background: var(--lc-sunk); }
.lc-op-data-table tbody tr[data-sev="hold"]:hover { background: var(--lc-hold-wash); }
.lc-op-data-table tbody tr[data-sev="pass"]:hover { background: var(--lc-pass-wash); }
.lc-op-data-table tbody tr:last-child td { border-bottom: 0; }
.lc-op-data-table code { font-family: var(--lc-mono); font-size: .82em; }

/* PEP / reference queues — keep headers and cells on the same left edge. */
.lc-op-data-table--pep .lc-op-data-table__col-ref { width: 32%; }
.lc-op-data-table--pep .lc-op-data-table__col-case { width: 28%; }
.lc-op-data-table--pep .lc-op-data-table__col-ver { width: 14%; }
.lc-op-data-table--pep .lc-op-data-table__col-time { width: 26%; }
.lc-op-ref-link {
  display: inline-flex; align-items: center; gap: .45rem;
  text-decoration: none; color: var(--lc-petrol); font-weight: 600; min-width: 0;
}
.lc-op-ref-link:hover { text-decoration: underline; }
.lc-op-ref-link code { color: inherit; }
.lc-op-sev-dot {
  width: 8px; height: 8px; border-radius: 50%; flex: none;
  background: var(--lc-ink-3);
}
.lc-op-sev-dot--hold { background: var(--lc-hold); }
.lc-op-sev-dot--pass { background: var(--lc-pass); }
.lc-op-sev-dot--fail { background: var(--lc-fail); }
.lc-op-mono { font-family: var(--lc-mono); font-variant-numeric: tabular-nums; }

/* ---- applicant cell ------------------------------------------------------ */

.lc-op-applicant-cell { display: flex; align-items: center; gap: .5rem; }
.lc-op-applicant-cell__avatar {
  width: 28px; height: 28px; border-radius: 2px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: .625rem; font-weight: 600; color: #fff; font-family: var(--lc-mono);
}
.lc-op-applicant-cell__name { font-weight: 600; font-size: .75rem; }
.lc-op-applicant-cell__sub { font-size: .625rem; color: var(--lc-ink-3); }

/* ---- risk pill ----------------------------------------------------------- */

.lc-op-risk-pill { display: inline-flex; align-items: center; gap: .25rem; font-size: .6875rem; font-weight: 600; }
.lc-op-risk-pill--low { color: var(--lc-pass); }
.lc-op-risk-pill--medium { color: var(--lc-hold); }
.lc-op-risk-pill--high { color: var(--lc-fail); }
.lc-op-risk-pill__dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }

/* ---- mark dot (used inside .lc-mark in operator panels) ------------------ */

.lc-mark__dot { width: 5px; height: 5px; border-radius: 50%; background: currentColor; flex-shrink: 0; }

/* ---- pagination ---------------------------------------------------------- */

.lc-op-pagination {
  display: flex; align-items: center; justify-content: space-between;
  padding: .5rem .75rem; border-top: 1px solid var(--lc-rule);
}
.lc-op-pagination__info { font-size: .6875rem; color: var(--lc-ink-3); }
.lc-op-pagination__pages { display: flex; gap: .15rem; }
.lc-op-pagination__pages button {
  min-width: 26px; height: 26px; border: 1px solid var(--lc-rule); border-radius: 2px;
  background: transparent; font-size: .6875rem; font-weight: 500; cursor: pointer;
  color: var(--lc-ink-2); font-family: var(--lc-mono);
}
.lc-op-pagination__pages button.active { background: var(--lc-petrol); border-color: var(--lc-petrol); color: #fff; }
.lc-op-pagination__pages button:hover:not(.active) { border-color: var(--lc-rule-2); color: var(--lc-ink); }

/* ---- operator buttons ---------------------------------------------------- */

.lc-op-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
  min-height: 2rem; padding: .4rem .9rem; border: 1px solid var(--lc-petrol); border-radius: 4px;
  background: var(--lc-petrol); color: #fff; font: inherit; font-size: .75rem; font-weight: 600;
  cursor: pointer; transition: background 150ms ease, border-color 150ms ease, box-shadow 150ms ease, transform 80ms ease;
  text-decoration: none; box-shadow: var(--lc-shadow-xs);
}
.lc-op-btn:hover { background: var(--lc-petrol-deep); border-color: var(--lc-petrol-deep); color: #fff; box-shadow: var(--lc-shadow-sm); }
.lc-op-btn:active { transform: translateY(1px); box-shadow: none; }
.lc-op-btn--quiet { background: transparent; color: var(--lc-petrol); border-color: var(--lc-rule-2); }
.lc-op-btn--quiet:hover { background: var(--lc-sunk); color: var(--lc-petrol-deep); border-color: var(--lc-ink-3); }
.lc-op-btn--danger { background: var(--lc-fail); border-color: var(--lc-fail); }
.lc-op-btn--danger:hover { background: #6f0f22; border-color: #6f0f22; }
.lc-op-btn--pass { background: var(--lc-pass); border-color: var(--lc-pass); }
.lc-op-btn--pass:hover { background: #104a2e; border-color: #104a2e; }
.lc-op-btn--sm { min-height: 1.75rem; padding: .25rem .55rem; font-size: .6875rem; }

/* ---- timeline ------------------------------------------------------------ */

.lc-op-timeline { list-style: none; padding: 0; margin: 0; }
.lc-op-timeline__item { display: flex; gap: .85rem; padding-bottom: 1rem; position: relative; }
.lc-op-timeline__item:last-child { padding-bottom: 0; }
.lc-op-timeline__item::before { content: ''; position: absolute; left: 13px; top: 28px; bottom: 0; width: 1px; background: var(--lc-rule); }
.lc-op-timeline__item:last-child::before { display: none; }
.lc-op-timeline__dot {
  width: 27px; height: 27px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; font-size: .75rem; z-index: 1;
  border: 1.5px solid;
}
.lc-op-timeline__dot--done { border-color: var(--lc-pass); color: var(--lc-pass); background: var(--lc-pass-wash); }
.lc-op-timeline__dot--active { border-color: var(--lc-petrol-bright); color: var(--lc-petrol-bright); background: var(--lc-petrol-wash); }
.lc-op-timeline__dot--pending { border-color: var(--lc-rule-2); color: var(--lc-ink-3); background: transparent; }
.lc-op-timeline__dot--rejected { border-color: var(--lc-fail); color: var(--lc-fail); background: var(--lc-fail-wash); }
.lc-op-timeline__title { font-weight: 600; font-size: .75rem; }
.lc-op-timeline__time { font-size: .625rem; color: var(--lc-ink-3); margin-top: .1rem; font-family: var(--lc-mono); }
.lc-op-timeline__detail { font-size: .6875rem; color: var(--lc-ink-2); margin-top: .25rem; line-height: 1.5; }

/* ---- document row -------------------------------------------------------- */

.lc-op-doc-row { display: flex; gap: .85rem; padding: .75rem 0; border-bottom: 1px solid var(--lc-rule); }
.lc-op-doc-row:last-child { border-bottom: 0; }
.lc-op-doc-row__thumb {
  width: 80px; height: 56px; border-radius: 2px; flex-shrink: 0;
  border: 1px solid var(--lc-rule); display: flex; align-items: center; justify-content: center;
  font-size: .5625rem; color: var(--lc-ink-3); background: var(--lc-sunk);
}
.lc-op-doc-row__info { flex: 1; }
.lc-op-doc-row__type { font-weight: 600; font-size: .75rem; }
.lc-op-doc-row__meta { font-size: .625rem; color: var(--lc-ink-3); margin-top: .15rem; font-family: var(--lc-mono); }
.lc-op-doc-row__checks { display: flex; gap: .35rem; margin-top: .4rem; flex-wrap: wrap; }

/* ---- check tag ----------------------------------------------------------- */

.lc-op-check-tag {
  display: inline-flex; align-items: center; gap: .2rem; padding: .1rem .35rem;
  border-radius: 2px; font-size: .625rem; font-weight: 600;
}
.lc-op-check-tag--pass { background: var(--lc-pass-wash); color: var(--lc-pass); }
.lc-op-check-tag--fail { background: var(--lc-fail-wash); color: var(--lc-fail); }
.lc-op-check-tag--warn { background: var(--lc-hold-wash); color: var(--lc-hold); }

/* ---- side panel + info rows ---------------------------------------------- */

.lc-op-side-panel { position: sticky; top: 64px; }
.lc-op-info-row { display: flex; justify-content: space-between; padding: .5rem 0; border-bottom: 1px solid var(--lc-rule); font-size: .75rem; }
.lc-op-info-row:last-child { border-bottom: 0; }
.lc-op-info-row__label { color: var(--lc-ink-3); }
.lc-op-info-row__value { font-weight: 600; }

/* ---- mismatch box -------------------------------------------------------- */

.lc-op-mismatch-box { padding: .65rem .75rem; border: 1px solid var(--lc-hold); border-left: 3px solid var(--lc-hold); border-radius: 2px; background: var(--lc-hold-wash); margin-bottom: .75rem; }
.lc-op-mismatch-box__field { font-weight: 600; font-size: .75rem; color: var(--lc-hold); margin-bottom: .2rem; }
.lc-op-mismatch-box__detail { font-size: .6875rem; color: var(--lc-ink-2); }

/* ---- detail layout ------------------------------------------------------- */

.lc-op-detail-layout { display: grid; grid-template-columns: 1fr 340px; gap: 1.25rem; }
.lc-op-detail-header { display: flex; align-items: center; gap: .85rem; margin-bottom: 1.25rem; }
.lc-op-detail-header__avatar {
  width: 44px; height: 44px; border-radius: 3px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: .875rem; font-weight: 600; color: #fff; font-family: var(--lc-mono);
}
.lc-op-detail-header__name { font-size: 1.125rem; font-weight: 700; letter-spacing: -.015em; }
.lc-op-detail-header__meta { display: flex; gap: .85rem; margin-top: .15rem; font-size: .6875rem; color: var(--lc-ink-3); flex-wrap: wrap; }
.lc-op-detail-header__meta span { display: flex; align-items: center; gap: .25rem; }
.lc-op-detail-header__actions { margin-left: auto; display: flex; gap: .4rem; }

/* ---- text utilities ------------------------------------------------------ */

.lc-op .text-muted { color: var(--lc-ink-2); }
.lc-op .text-light { color: var(--lc-ink-3); }
.lc-op .mono { font-family: var(--lc-mono); font-size: .82em; letter-spacing: .01em; }

/* ---- filter chip alert --------------------------------------------------- */

.lc-op-filter-chip--alert { border-color: var(--lc-hold-bright); color: var(--lc-hold); }
.lc-op-filter-chip--alert:hover { border-color: var(--lc-hold); color: var(--lc-hold); }

/* ---- queue layout (desk) ------------------------------------------------- */

.lc-op-queue-layout { display: grid; grid-template-columns: 15rem minmax(0, 1fr); gap: 1.25rem; align-items: start; }
.lc-op-queue-filters { display: flex; flex-direction: column; gap: 1rem; position: sticky; top: 4rem; }
.lc-op-queue-filters__group { display: flex; flex-direction: column; gap: .3rem; }
.lc-op-queue-filters__t { font-size: .625rem; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--lc-ink-3); margin-bottom: .25rem; }
.lc-op-queue-filters__none { font-size: .75rem; color: var(--lc-ink-3); padding: .25rem 0; }
.lc-op-filter-opt {
  display: flex; align-items: center; gap: .4rem; padding: .25rem .4rem;
  font-size: .75rem; color: var(--lc-ink-2); cursor: pointer;
  text-decoration: none; border-radius: 2px; transition: background 80ms ease;
}
.lc-op-filter-opt:hover { background: var(--lc-sunk); color: var(--lc-ink); }
.lc-op-filter-opt.active { color: var(--lc-petrol); font-weight: 500; }
.lc-op-filter-opt__box {
  width: 12px; height: 12px; border: 1px solid var(--lc-rule-2); border-radius: 2px;
  flex-shrink: 0; transition: all 120ms ease;
}
.lc-op-filter-opt.active .lc-op-filter-opt__box { background: var(--lc-petrol); border-color: var(--lc-petrol); }
.lc-op-filter-opt__n { margin-left: auto; font-family: var(--lc-mono); font-size: .625rem; color: var(--lc-ink-3); }
.lc-op-queue-main { min-width: 0; display: flex; flex-direction: column; gap: .75rem; }

@media (max-width: 72rem) {
  .lc-op-queue-layout { grid-template-columns: 1fr; }
  .lc-op-queue-filters { position: static; flex-direction: row; flex-wrap: wrap; gap: .5rem 1rem; }
}

/* ---- ref cell (case id) -------------------------------------------------- */

.lc-op-ref { display: inline-flex; flex-direction: column; gap: 0; }
.lc-op-ref a { font-family: var(--lc-mono); font-size: .75rem; font-weight: 500; color: var(--lc-petrol); text-decoration: none; }
.lc-op-ref a:hover { text-decoration: underline; }
.lc-op-ref small { font-size: .625rem; color: var(--lc-ink-3); }

/* ---- SLA badge ----------------------------------------------------------- */

.lc-op-sla { font-family: var(--lc-mono); font-size: .6875rem; font-weight: 500; white-space: nowrap; }
.lc-op-sla--ok { color: var(--lc-pass); }
.lc-op-sla--warn { color: var(--lc-hold); }
.lc-op-sla--over { color: var(--lc-fail); font-weight: 600; }

/* ---- data table severity + num ------------------------------------------- */

.lc-op-data-table__sev { width: 4px; padding: 0 !important; }
.lc-op-data-table__sev span { display: block; width: 3px; height: 28px; border-radius: 1px; }
.lc-op-data-table tbody tr[data-sev="hold"] .lc-op-data-table__sev span { background: var(--lc-hold-bright); }
.lc-op-data-table tbody tr[data-sev="pass"] .lc-op-data-table__sev span { background: var(--lc-pass); }
.lc-op-data-table tbody tr[data-sev="fail"] .lc-op-data-table__sev span { background: var(--lc-fail); }
.lc-op-data-table__num { text-align: right; font-family: var(--lc-mono); font-size: .75rem; }

/* ---- fact list (replaces data-list) -------------------------------------- */

.lc-op-fact-list { margin: 0; display: flex; flex-direction: column; gap: .6rem; }
.lc-op-fact-list > div { display: flex; gap: 1rem; align-items: baseline; }
.lc-op-fact-list dt { font-size: .6875rem; font-weight: 600; color: var(--lc-ink-3); text-transform: uppercase; letter-spacing: .04em; min-width: 10rem; flex-shrink: 0; }
.lc-op-fact-list dd { font-size: .8125rem; margin: 0; min-width: 0; line-height: 1.5; }
.lc-op-fact-list code { font-family: var(--lc-mono); font-size: .82em; }
.lc-op-fact-list--bordered > div { padding-bottom: .6rem; border-bottom: 1px solid var(--lc-rule); }
.lc-op-fact-list--bordered > div:last-child { border-bottom: 0; padding-bottom: 0; }
.lc-op-fact-list--compact > div { gap: .5rem; }
.lc-op-fact-list--compact dt { min-width: 7rem; }

/* ---- collapsible panel --------------------------------------------------- */

.lc-op-panel--collapsible { margin-bottom: .75rem; }
.lc-op-panel--collapsible > summary {
  display: flex; align-items: center; gap: .4rem; padding: .65rem 1rem;
  font-size: .75rem; font-weight: 600; cursor: pointer; list-style: none;
  user-select: none; transition: background 150ms ease;
}
.lc-op-panel--collapsible > summary::-webkit-details-marker { display: none; }
.lc-op-panel--collapsible > summary::before {
  content: '▸'; font-size: .625rem; color: var(--lc-ink-3); transition: transform 150ms ease; flex-shrink: 0;
}
.lc-op-panel--collapsible[open] > summary::before { transform: rotate(90deg); }
.lc-op-panel--collapsible > summary:hover { background: var(--lc-sunk); }
.lc-op-panel--collapsible[open] > summary { border-bottom: 1px solid var(--lc-rule); }
.lc-op-panel--collapsible > .lc-op-panel__body { padding: 1rem; }
.lc-op-panel__count {
  font-size: .625rem; font-weight: 600; color: var(--lc-ink-3);
  background: var(--lc-sunk); border-radius: 4px; padding: .1rem .4rem;
  margin-left: .25rem; flex-shrink: 0;
}
.lc-op-panel--attention { border-color: var(--lc-hold); }
.lc-op-panel--attention > summary { color: var(--lc-hold); }
.lc-op-panel--attention > summary::before { color: var(--lc-hold); }
.lc-op-panel--attention .lc-op-panel__count { background: var(--lc-hold-wash); color: var(--lc-hold); }

/* ---- empty rail ---------------------------------------------------------- */

.lc-op-empty-rail { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .5rem; }
.lc-op-empty-rail span {
  font-size: .625rem; color: var(--lc-ink-3); padding: .2rem .5rem;
  border: 1px solid var(--lc-rule); border-radius: 6px; background: var(--lc-sunk);
}
.lc-op-empty-note { margin-top: .5rem; }

/* ---- case flow band ------------------------------------------------------- */

.lc-case-flow {
  background: var(--lc-sunk); border: 1px solid var(--lc-rule); border-radius: 8px;
  padding: .85rem 1.1rem; margin-bottom: 1rem; box-shadow: var(--lc-shadow-xs);
}
.lc-case-flow .lc-flow { margin-top: .35rem; }

/* ---- evidence stats band (legacy compact) -------------------------------- */

.lc-evidence-stats {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); gap: .75rem; margin-top: .5rem;
}
.lc-evidence-stats__item {
  display: flex; flex-direction: column; gap: .2rem;
  padding: .85rem 1rem; border: 1px solid var(--lc-rule); border-radius: 8px;
  background: var(--lc-vellum); box-shadow: var(--lc-shadow-xs);
}
.lc-evidence-stats__label {
  font-size: .625rem; font-weight: 600; color: var(--lc-ink-3);
  text-transform: uppercase; letter-spacing: .04em;
}
.lc-evidence-stats__value {
  font-size: 1.125rem; font-weight: 700; color: var(--lc-ink); line-height: 1.2;
}
.lc-evidence-stats__value--mono {
  font-family: var(--lc-mono); font-size: .8125rem; font-weight: 600;
}

/* ---- Evidence room (full-width) ------------------------------------------ */

.lc .lc-evidence-room {
  display: flex; flex-direction: column; gap: 1.15rem;
  width: 100%;
  max-width: none;
}
.lc .lc-evidence-hero {
  display: grid; gap: 1rem; padding: 1.1rem 1.25rem;
  border: 1px solid var(--lc-rule); border-radius: 14px;
  background:
    linear-gradient(135deg, rgb(14 84 91 / .06), transparent 42%),
    var(--lc-vellum);
}
.lc .lc-evidence-tab__count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 1.35rem; height: 1.35rem; margin-left: .35rem;
  padding: 0 .35rem; border-radius: 999px;
  border: 1px solid var(--lc-rule); background: var(--lc-sunk);
  font-family: var(--lc-mono); font-size: .68rem; font-weight: 700;
  color: var(--lc-ink-3); vertical-align: middle;
}
.lc .lc-case-tabs__tab.is-active .lc-evidence-tab__count {
  color: var(--lc-petrol); border-color: rgb(14 84 91 / .28);
  background: rgb(14 84 91 / .08);
}
.lc .lc-evidence-hero__eyebrow {
  margin: 0 0 .25rem; font-size: .68rem; font-weight: 700;
  letter-spacing: .07em; text-transform: uppercase; color: var(--lc-ink-3);
}
.lc .lc-evidence-hero__lede {
  margin: 0; max-width: 42rem; font-size: var(--lc-t-small);
  color: var(--lc-ink-2); line-height: 1.5;
}
.lc .lc-evidence-kpis {
  margin: 0; display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .65rem;
}
.lc .lc-evidence-kpi {
  display: grid; gap: .25rem; padding: .85rem .95rem;
  border: 1px solid var(--lc-rule); border-radius: 12px; background: var(--lc-sunk);
}
.lc .lc-evidence-kpi--wide { grid-column: 1 / -1; }
.lc .lc-evidence-kpi dt {
  margin: 0; font-size: .68rem; font-weight: 650;
  letter-spacing: .04em; text-transform: uppercase; color: var(--lc-ink-3);
}
.lc .lc-evidence-kpi dd {
  margin: 0; font-size: 1.45rem; font-weight: 750; color: var(--lc-ink); line-height: 1.15;
}
.lc .lc-evidence-kpi__mono {
  font-family: var(--lc-mono); font-size: .78rem !important; font-weight: 600 !important;
  word-break: break-all; color: var(--lc-ink-2) !important;
}
.lc .lc-evidence-section {
  border: 1px solid var(--lc-rule); border-radius: 14px; background: var(--lc-vellum);
  padding: 1.1rem 1.2rem 1.2rem; display: grid; gap: .9rem;
}
.lc .lc-evidence-section__head {
  display: flex; flex-wrap: wrap; gap: .65rem 1rem;
  align-items: flex-start; justify-content: space-between;
}
.lc .lc-evidence-section__title {
  margin: 0 0 .2rem; font-size: 1.05rem; font-weight: 750; letter-spacing: -.01em;
}
.lc .lc-evidence-section__sub {
  margin: 0; font-size: var(--lc-t-small); color: var(--lc-ink-3); line-height: 1.4;
}
.lc .lc-evidence-section__count {
  min-width: 2rem; height: 2rem; padding: 0 .55rem;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 999px; border: 1px solid var(--lc-rule);
  background: var(--lc-sunk); font-family: var(--lc-mono);
  font-size: .78rem; font-weight: 700; color: var(--lc-ink-2);
}
.lc .lc-evidence-table-wrap { overflow-x: auto; border-radius: 10px; border: 1px solid var(--lc-rule); }
.lc .lc-evidence-table {
  width: 100%; border-collapse: collapse; min-width: 40rem; background: var(--lc-sunk);
}
.lc .lc-evidence-table th,
.lc .lc-evidence-table td {
  padding: .75rem .85rem; text-align: left; vertical-align: top;
  border-bottom: 1px solid var(--lc-rule); font-size: var(--lc-t-small);
}
.lc .lc-evidence-table th {
  font-size: .68rem; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; color: var(--lc-ink-3); background: rgb(14 84 91 / .04);
}
.lc .lc-evidence-table tbody tr:last-child td { border-bottom: 0; }
.lc .lc-evidence-table tbody tr:hover td { background: rgb(14 84 91 / .03); }
.lc .lc-evidence-type {
  font-family: var(--lc-mono); font-size: .78rem; font-weight: 650;
  color: var(--lc-ink); word-break: break-word;
}
.lc .lc-evidence-when { color: var(--lc-ink-2); white-space: nowrap; }
.lc .lc-evidence-hash {
  font-family: var(--lc-mono); font-size: .72rem; color: var(--lc-ink-2);
  word-break: break-all;
}
.lc .lc-evidence-digest-list {
  list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem;
}
.lc .lc-evidence-digest {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(12rem, 1.2fr);
  gap: .75rem 1rem; align-items: start; padding: .85rem .95rem;
  border: 1px solid var(--lc-rule); border-radius: 12px; background: var(--lc-sunk);
}
.lc .lc-evidence-digest__main { display: grid; grid-template-columns: 1.6rem 1fr; gap: .55rem; }
.lc .lc-evidence-digest__n {
  font-family: var(--lc-mono); font-size: .72rem; color: var(--lc-petrol); font-weight: 700; padding-top: .15rem;
}
.lc .lc-evidence-digest__type {
  margin: 0 0 .15rem; font-family: var(--lc-mono); font-size: .8rem; font-weight: 650; color: var(--lc-ink);
  word-break: break-word;
}
.lc .lc-evidence-digest__label {
  margin: 0; font-size: .68rem; color: var(--lc-ink-3); text-transform: uppercase; letter-spacing: .04em;
}
.lc .lc-evidence-empty {
  margin: 0; padding: 1.25rem; border: 1px dashed var(--lc-rule-2); border-radius: 12px;
  text-align: center; color: var(--lc-ink-3); font-size: var(--lc-t-small);
}
@media (min-width: 52rem) {
  .lc .lc-evidence-kpis { grid-template-columns: 11rem 13rem minmax(0, 1fr); }
  .lc .lc-evidence-kpi--wide { grid-column: auto; }
}
@media (min-width: 72rem) {
  .lc .lc-evidence-hero {
    grid-template-columns: minmax(16rem, 22rem) minmax(0, 1fr);
    align-items: stretch;
  }
  .lc .lc-evidence-hero__lede { max-width: none; }
  .lc .lc-evidence-kpis { align-content: start; }
}
@media (max-width: 52rem) {
  .lc .lc-evidence-digest { grid-template-columns: 1fr; }
}

/* ---- case detail header --------------------------------------------------- */

.lc-case-head {
  display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; align-items: flex-start;
  padding: 1.25rem 1.5rem; border: 1px solid var(--lc-rule); border-radius: 10px;
  background: var(--lc-vellum); margin-bottom: 1.25rem; box-shadow: var(--lc-shadow-sm);
}
.lc-case-head__id { flex: 1 1 260px; min-width: 0; display: flex; flex-direction: column; gap: .4rem; }
.lc-case-head__ref {
  font-family: var(--lc-mono); font-size: .8125rem; font-weight: 600;
  color: var(--lc-ink); word-break: break-all; line-height: 1.4;
}
.lc-case-head__state-row { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.lc-case-head__meta {
  display: flex; flex-wrap: wrap; gap: .35rem 1rem;
  font-size: .6875rem; color: var(--lc-ink-3); margin-top: .15rem;
}
.lc-case-head__meta span { display: inline-flex; align-items: center; gap: .25rem; }
.lc-case-head__actions {
  flex: 0 0 auto; display: flex; flex-direction: column; gap: .4rem; align-items: flex-end;
}
.lc-case-head__actions .lc-op-btn { white-space: nowrap; }

/* ---- case quick stats ----------------------------------------------------- */

.lc-case-stats {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr));
  gap: .75rem; margin-bottom: 1.25rem;
}
.lc-case-stat {
  padding: .85rem 1rem; border: 1px solid var(--lc-rule); border-radius: 8px;
  background: var(--lc-vellum); display: flex; flex-direction: column; gap: .15rem;
  box-shadow: var(--lc-shadow-xs); transition: box-shadow 150ms ease;
}
.lc-case-stat:hover { box-shadow: var(--lc-shadow-sm); }
.lc-case-stat__label {
  font-size: .625rem; font-weight: 600; color: var(--lc-ink-3);
  text-transform: uppercase; letter-spacing: .04em;
}
.lc-case-stat__value { font-size: 1.25rem; font-weight: 700; color: var(--lc-ink); line-height: 1.2; }
.lc-case-stat__value--mono { font-family: var(--lc-mono); font-size: .875rem; font-weight: 600; }
.lc-case-stat__value--pass { color: var(--lc-pass); }
.lc-case-stat__value--hold { color: var(--lc-hold); }
.lc-case-stat__value--fail { color: var(--lc-fail); }
.lc-case-stat__sub { font-size: .625rem; color: var(--lc-ink-3); font-family: var(--lc-mono); }

/* ---- case panel group ----------------------------------------------------- */

.lc-case-group + .lc-op-panel--collapsible { margin-top: 0; }

/* ---- government data profile (Sumsub-style applicant profile) ------------- */

.lc-gov-meta {
  display: flex; flex-wrap: wrap; gap: .35rem .75rem; align-items: center;
  padding: .6rem .8rem; background: var(--lc-sunk); border-radius: 6px;
  margin-bottom: .75rem; font-size: var(--lc-t-small);
}
.lc-gov-cat { margin-bottom: .75rem; }
.lc-gov-cat:last-child { margin-bottom: 0; }
.lc-gov-cat__title {
  margin: 0 0 .35rem; font-size: .625rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .06em; color: var(--lc-ink-3);
}
.lc-gov-fields {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));
  gap: .5rem .75rem; margin: 0;
}
.lc-gov-field { display: flex; flex-direction: column; gap: .1rem; }
.lc-gov-field dt {
  font-size: .625rem; font-weight: 600; color: var(--lc-ink-3);
  text-transform: uppercase; letter-spacing: .03em;
}
.lc-gov-field dd {
  margin: 0; font-size: var(--lc-t-base); color: var(--lc-ink);
  line-height: 1.4; word-break: break-word;
}

/* ---- verification check badges -------------------------------------------- */

.lc-checks--detailed .lc-checks__i {
  display: flex; align-items: center; gap: .4rem; flex-wrap: wrap;
}
.lc-checks__badge {
  font-size: .5625rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em; padding: .1rem .35rem; border-radius: 3px;
  margin-left: auto;
}
.lc-checks__badge--pass { background: var(--lc-pass-wash); color: var(--lc-pass); }
.lc-checks__badge--pending { background: var(--lc-hold-wash); color: var(--lc-hold); }
.lc-checks__badge--fail { background: var(--lc-fail-wash); color: var(--lc-fail); }

/* ---- flat panel (empty state container) ----------------------------------- */

.lc-op-panel--flat {
  padding: .75rem .9rem; border: 1px solid var(--lc-rule); border-radius: 8px;
  background: var(--lc-vellum);
}
.lc-op-panel--flat .empty-state { margin: 0; color: var(--lc-ink-3); font-size: var(--lc-t-small); }

/* ---- responsive ---------------------------------------------------------- */

@media (max-width: 1100px) {
  .lc-op-detail-layout { grid-template-columns: 1fr; }
  .lc-op-kpi-row,
  .lc-op-kpi-row--cols-4 { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 768px) {
  .lc-op-sidebar { display: none; }
  .lc-op-main { margin-left: 0; }
  .lc-op-kpi-row,
  .lc-op-kpi-row--cols-3,
  .lc-op-kpi-row--cols-4 { grid-template-columns: repeat(2, 1fr); }
  .lc-op-content:has(> .lc-ws__head),
  .lc-op-content:has(> .lc-print-slug + .lc-ws__head) {
    padding: 0 0 1.25rem;
  }
}

/* ---- print --------------------------------------------------------------- */

@media print {
  .lc-op-sidebar, .lc-op-topbar { display: none !important; }
  .lc-op-main { margin-left: 0 !important; }
  .lc-op-content { padding: 0 !important; }
}

/* ===========================================================================
   Applicant portal — dark theme, animated background, verify card
   Extends the register identity with the landing-final design language.
   =========================================================================== */

/* ---- dark theme variable overrides (applicant channel) ------------------- */

html[data-theme="dark"] .lc.applicant-channel,
html[data-theme="dark"] .lc.auth-channel {
  --lc-ink: #e8ece4;
  --lc-ink-2: #b0baae;
  --lc-ink-3: #8a9690;
  --lc-paper: #0a0f0e;
  --lc-vellum: #17211e;
  --lc-sunk: #1e2826;
  --lc-rule: #2e3833;
  --lc-rule-2: #4a5751;
  --lc-rule-ink: #e8ece4;
  --lc-petrol: #0c7286;
  --lc-petrol-deep: #0a4b57;
  --lc-petrol-bright: #27a8c0;
  --lc-petrol-wash: #0e2a30;
  --lc-pass: #2d9e5f;
  --lc-hold: #c9962e;
  --lc-fail: #d63852;
  --lc-pass-wash: #122a1e;
  --lc-hold-wash: #2a2110;
  --lc-fail-wash: #2a1015;
}

/* Dark elevation: the light-mode shadow is invisible on paper, so the card
   needs a real black shadow and a stronger hairline to lift off the page. */
html[data-theme="dark"] .lc.applicant-channel .lc-wizard__card,
html[data-theme="dark"] .lc.auth-channel .lc-wizard__card {
  border-color: var(--lc-rule-2);
  box-shadow: 0 16px 48px rgb(0 0 0 / .55), 0 2px 8px rgb(0 0 0 / .35);
}

/* Dark fields read as inset wells — darker than the card, not the same
   surface — otherwise the control boundary disappears. */
html[data-theme="dark"] .lc.applicant-channel .lc-field input,
html[data-theme="dark"] .lc.applicant-channel .lc-field select,
html[data-theme="dark"] .lc.applicant-channel .lc-field textarea,
html[data-theme="dark"] .lc.auth-channel .lc-field input,
html[data-theme="dark"] .lc.auth-channel .lc-field select,
html[data-theme="dark"] .lc.auth-channel .lc-field textarea,
html[data-theme="dark"] .lc.applicant-channel .lc-wizard__card .lc-field input,
html[data-theme="dark"] .lc.applicant-channel .lc-wizard__card .lc-field select,
html[data-theme="dark"] .lc.applicant-channel .lc-wizard__card .lc-field textarea,
html[data-theme="dark"] .lc.auth-channel .lc-portal-auth__field input,
html[data-theme="dark"] .lc.applicant-channel .lc-portal-ubo__field input {
  background: var(--lc-paper);
  border-color: var(--lc-rule-2);
}
html[data-theme="dark"] .lc.applicant-channel .lc-field input:focus,
html[data-theme="dark"] .lc.applicant-channel .lc-field select:focus,
html[data-theme="dark"] .lc.applicant-channel .lc-field textarea:focus,
html[data-theme="dark"] .lc.auth-channel .lc-field input:focus,
html[data-theme="dark"] .lc.auth-channel .lc-portal-auth__field input:focus,
html[data-theme="dark"] .lc.applicant-channel .lc-portal-ubo__field input:focus {
  border-color: var(--lc-petrol-bright);
}

/* Choice tiles and segmented pills sit on the card too — same inset well,
   and the selected wash must out-specify the well or the highlight dies. */
html[data-theme="dark"] .lc.applicant-channel .lc-choice-card,
html[data-theme="dark"] .lc.applicant-channel .lc-wizard__card .lc-choice--confirm,
html[data-theme="dark"] .lc.applicant-channel .lc-wizard__card .lc-choices--check .lc-choice,
html[data-theme="dark"] .lc.applicant-channel .lc-segmented span {
  background: var(--lc-paper);
}
html[data-theme="dark"] .lc.applicant-channel .lc-choice-card:has(input:checked),
html[data-theme="dark"] .lc.applicant-channel .lc-choice-card--selected,
html[data-theme="dark"] .lc.applicant-channel .lc-wizard__card .lc-choice--confirm:has(input:checked),
html[data-theme="dark"] .lc.applicant-channel .lc-wizard__card .lc-choices--check .lc-choice:has(input:checked),
html[data-theme="dark"] .lc.applicant-channel .lc-segmented input:checked + span {
  background: var(--lc-petrol-wash);
}

html[data-theme="dark"] .lc.applicant-channel .lc-mast,
html[data-theme="dark"] .lc.auth-channel .lc-mast {
  background: rgba(14,20,18,.88);
  backdrop-filter: blur(14px) saturate(1.5);
}

html[data-theme="dark"] .lc.applicant-channel .lc-foot,
html[data-theme="dark"] .lc.auth-channel .lc-foot {
  border-color: var(--lc-rule);
}

/* ---- animated background -------------------------------------------------- */

.lc-app-bg {
  position: fixed; inset: 0; z-index: 0; pointer-events: none; overflow: hidden;
}
/* No grid layer: a fixed full-page grid can never align with the content
   grid, so its verticals read as misplaced section dividers crossing the
   masthead and footer rules. The orbs alone carry the warmth. */

.lc-app-bg__orb {
  position: absolute; border-radius: 50%; filter: blur(78px); opacity: .38;
  will-change: transform;
}
.lc-app-bg__orb--1 {
  width: 540px; height: 540px;
  background: radial-gradient(circle, color-mix(in srgb, var(--lc-petrol-bright) 72%, transparent) 0%, transparent 68%);
  top: -120px; right: -100px;
  animation: lc-orb-1 22s ease-in-out infinite;
}
.lc-app-bg__orb--2 {
  width: 440px; height: 440px;
  background: radial-gradient(circle, color-mix(in srgb, var(--lc-pass) 68%, transparent) 0%, transparent 68%);
  bottom: -80px; left: -80px;
  animation: lc-orb-2 28s ease-in-out infinite;
}
.lc-app-bg__orb--3 {
  width: 380px; height: 380px;
  background: radial-gradient(circle, color-mix(in srgb, var(--lc-petrol-bright) 55%, var(--lc-pass)) 0%, transparent 70%);
  top: 40%; left: 50%;
  animation: lc-orb-3 25s ease-in-out infinite;
  opacity: .2;
}
/* Dark: the orbs must be a faint warmth, not a neon glow — at light-theme
   opacity the green orb reads as a rendering artifact on the dark ground. */
html[data-theme="dark"] .lc-app-bg__orb { opacity: .06; }
html[data-theme="dark"] .lc-app-bg__orb--3 { opacity: .04; }

@keyframes lc-orb-1 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(-40px, 60px) scale(1.08); }
  66% { transform: translate(30px, 30px) scale(.95); }
}
@keyframes lc-orb-2 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(50px, -40px) scale(1.1); }
  66% { transform: translate(-20px, -20px) scale(.92); }
}
@keyframes lc-orb-3 {
  0%, 100% { transform: translate(-50%, 0) scale(1); }
  50% { transform: translate(-50%, -60px) scale(1.15); }
}

.lc.applicant-home .lc-mast,
.lc.applicant-home > main,
.lc.applicant-home .lc-foot,
.lc.auth-channel .lc-mast,
.lc.auth-channel > main,
.lc.auth-channel .lc-foot { position: relative; z-index: 1; }

/* ---- animated gradient body background ------------------------------------ */

.lc.applicant-home,
.lc.auth-channel {
  background: var(--lc-paper);
  background-image: linear-gradient(
    135deg,
    var(--lc-paper) 0%,
    color-mix(in srgb, var(--lc-petrol-wash) 88%, var(--lc-petrol-bright) 12%) 45%,
    color-mix(in srgb, var(--lc-pass-wash) 90%, var(--lc-pass) 10%) 72%,
    var(--lc-paper) 100%
  );
  background-size: 200% 200%;
  animation: lc-bg-shift 18s ease-in-out infinite;
}
@keyframes lc-bg-shift {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}
html[data-theme="dark"] .lc.applicant-home,
html[data-theme="dark"] .lc.auth-channel {
  background-image: linear-gradient(
    135deg,
    var(--lc-paper) 0%,
    #0e1a18 45%,
    #0f1d1b 70%,
    var(--lc-paper) 100%
  );
}

/* ---- portal verify card (hero right) -------------------------------------- */

.lc-verify-card {
  background: var(--lc-vellum); border: 1px solid var(--lc-rule); border-radius: 16px;
  box-shadow: 0 16px 48px rgba(15,26,24,.10), 0 4px 16px rgba(15,26,24,.06);
  padding: 1.5rem; position: relative; overflow: hidden;
}
.lc-verify-card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px;
  background: linear-gradient(90deg, var(--lc-petrol), var(--lc-petrol-bright), var(--lc-pass));
}
html[data-theme="dark"] .lc-verify-card {
  box-shadow: 0 16px 48px rgba(0,0,0,.5), 0 4px 16px rgba(0,0,0,.25);
}
.lc-verify-card__head { display: flex; align-items: center; gap: .65rem; margin-bottom: 1.25rem; }
.lc-verify-card__avatar {
  width: 42px; height: 42px; border-radius: 10px;
  background: linear-gradient(135deg, var(--lc-petrol), var(--lc-petrol-bright));
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: .8rem; font-family: var(--lc-mono);
}
.lc-verify-card__name { font-weight: 600; font-size: .875rem; }
.lc-verify-card__sub { font-size: .75rem; color: var(--lc-ink-3); }
.lc-verify-card__status { margin-left: auto; }

.lc-badge {
  display: inline-flex; align-items: center; gap: .3rem;
  padding: .25rem .6rem; border-radius: 100px; font-size: .72rem; font-weight: 600; white-space: nowrap;
}
.lc-badge--live { background: var(--lc-petrol-wash); color: var(--lc-petrol); border: 1px solid var(--lc-petrol-bright); }
.lc-badge__dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.lc-badge--pulse .lc-badge__dot { animation: lc-pulse-dot 2s ease-in-out infinite; }
@keyframes lc-pulse-dot { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .5; transform: scale(.8); } }

.lc-verify-card__steps { display: flex; flex-direction: column; gap: .85rem; }
.lc-vc-step { display: flex; align-items: center; gap: .65rem; }
.lc-vc-step__icon {
  width: 30px; height: 30px; border-radius: 8px; flex: none;
  display: flex; align-items: center; justify-content: center;
  font-size: .75rem; font-weight: 700;
}
.lc-vc-step__icon--done { background: var(--lc-pass-wash); color: var(--lc-pass); }
.lc-vc-step__icon--active { background: var(--lc-petrol-wash); color: var(--lc-petrol-bright); }
.lc-vc-step__icon--pending { background: var(--lc-sunk); color: var(--lc-ink-3); border: 1px solid var(--lc-rule); }
.lc-vc-step__label { font-size: .8125rem; font-weight: 500; }
.lc-vc-step__label--pending { color: var(--lc-ink-3); }
.lc-vc-step__time { margin-left: auto; font-size: .6875rem; color: var(--lc-ink-3); font-family: var(--lc-mono); }

.lc-verify-card__progress { margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--lc-rule); }
.lc-verify-card__progress-bar { height: 6px; background: var(--lc-sunk); border-radius: 3px; overflow: hidden; }
.lc-verify-card__progress-fill {
  height: 100%; border-radius: 3px;
  background: linear-gradient(90deg, var(--lc-petrol), var(--lc-petrol-bright), var(--lc-pass), var(--lc-petrol-bright));
  background-size: 200% 100%;
  animation: lc-fill-progress 1.8s cubic-bezier(.22,1,.36,1) 500ms both, lc-bar-shimmer 3s linear infinite 1.8s;
}
@keyframes lc-fill-progress { from { width: 0; } to { width: 60%; } }
@keyframes lc-bar-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.lc-verify-card__progress-label {
  font-size: .6875rem; color: var(--lc-ink-3); margin-top: .4rem;
  display: flex; justify-content: space-between;
}

/* ---- portal step cards (how it works) ------------------------------------- */

.lc-portal-steps {
  display: grid; grid-template-columns: 1fr; gap: 1rem;
  margin-top: 2rem;
}
@media (min-width: 600px) { .lc-portal-steps { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px) { .lc-portal-steps { grid-template-columns: repeat(4, 1fr); } }

.lc-portal-step {
  background: var(--lc-vellum); border: 1px solid var(--lc-rule); border-radius: 16px;
  padding: 1.5rem 1.25rem; box-shadow: 0 1px 2px rgba(15,26,24,.04);
  position: relative; display: flex; flex-direction: column; gap: .75rem;
  transition: box-shadow 320ms ease, transform 320ms ease, border-color 320ms ease, opacity 320ms ease;
  animation: lc-fade-up 640ms cubic-bezier(.22,1,.36,1) both;
}
.lc-portal-steps > .lc-portal-step:nth-child(1) { animation-delay: 360ms; }
.lc-portal-steps > .lc-portal-step:nth-child(2) { animation-delay: 460ms; }
.lc-portal-steps > .lc-portal-step:nth-child(3) { animation-delay: 560ms; }
.lc-portal-steps > .lc-portal-step:nth-child(4) { animation-delay: 660ms; }
.lc-portal-step:hover { box-shadow: 0 2px 8px rgba(15,26,24,.06), 0 1px 3px rgba(15,26,24,.04); transform: translateY(-2px); }
/* LOCKED: cycling walk highlight driven by applicant-home.js */
.lc-portal-steps.is-walking .lc-portal-step:not([data-walk-active]):not(.is-active) {
  opacity: .72;
}
.lc-portal-steps.is-walking .lc-portal-step[data-walk-active],
.lc-portal-steps.is-walking .lc-portal-step.is-active {
  opacity: 1;
  background:
    linear-gradient(
      165deg,
      color-mix(in srgb, var(--lc-petrol-wash) 88%, var(--lc-petrol-bright) 12%) 0%,
      color-mix(in srgb, var(--lc-vellum) 82%, var(--lc-petrol-wash) 18%) 100%
    );
  border-color: color-mix(in srgb, var(--lc-petrol) 55%, var(--lc-rule));
  box-shadow: 0 10px 28px rgba(10,75,87,.14), 0 2px 8px rgba(10,75,87,.08);
  transform: translateY(-4px);
}
.lc-portal-steps.is-walking .lc-portal-step[data-walk-active] .lc-portal-step__num,
.lc-portal-steps.is-walking .lc-portal-step.is-active .lc-portal-step__num {
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--lc-petrol) 18%, transparent), 0 2px 8px rgba(10,75,87,.22);
}
html[data-theme="dark"] .lc-portal-step { box-shadow: 0 1px 3px rgba(0,0,0,.3); }
html[data-theme="dark"] .lc-portal-steps.is-walking .lc-portal-step[data-walk-active],
html[data-theme="dark"] .lc-portal-steps.is-walking .lc-portal-step.is-active {
  background:
    linear-gradient(
      165deg,
      color-mix(in srgb, var(--lc-petrol-wash) 70%, var(--lc-petrol) 30%) 0%,
      color-mix(in srgb, var(--lc-vellum) 78%, var(--lc-petrol-wash) 22%) 100%
    );
}
.lc-portal-step__num {
  width: 34px; height: 34px; border-radius: 9px; background: var(--lc-petrol); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: .8125rem; font-family: var(--lc-mono);
  box-shadow: 0 2px 8px rgba(10,75,87,.2);
  transition: box-shadow 320ms ease;
}
.lc-portal-step__title { font-size: .9375rem; font-weight: 700; }
.lc-portal-step__body { font-size: .8125rem; color: var(--lc-ink-2); line-height: 1.5; }

/* ---- applicant dashboard (signed-in home) ---------------------------------
   Natural stacked flow: header, card grid, how-it-works. No flex spacers and
   no min-height tricks — the page ends when the content ends, so there is no
   dead band between the cards and the steps on any viewport. */

.lc-dash {
  display: flex; flex-direction: column; gap: 2rem;
  padding: 2.5rem 0 2rem;
}

.lc-dash__header { display: flex; flex-direction: column; gap: .9rem; }
.lc-dash__title {
  font-size: clamp(1.5rem, 1.1rem + 2.6vw, 2.35rem); font-weight: 700;
  letter-spacing: -.03em; line-height: 1.12;
}
.lc-dash__lede { font-size: 1.0625rem; color: var(--lc-ink-2); line-height: 1.55; max-width: 34rem; }

.lc-dash__grid {
  display: grid; grid-template-columns: 1fr; gap: 1.25rem;
  align-items: stretch;
}
@media (min-width: 900px) {
  .lc-dash__grid { grid-template-columns: 1.25fr 1fr; gap: 1.5rem; }
}

.lc-dash-card {
  background: var(--lc-vellum); border: 1px solid var(--lc-rule); border-radius: 18px;
  padding: 1.5rem 1.5rem 1.4rem; box-shadow: 0 1px 2px rgba(15,26,24,.04);
  display: flex; flex-direction: column; gap: 1.15rem;
  animation: lc-fade-up 640ms cubic-bezier(.22,1,.36,1) both;
}
.lc-dash-card--status {
  border-color: color-mix(in srgb, var(--lc-petrol) 32%, var(--lc-rule));
  box-shadow: 0 10px 28px rgba(10,75,87,.10), 0 2px 6px rgba(10,75,87,.06);
}
.lc-dash__grid > .lc-dash-card:nth-child(2) { animation-delay: 120ms; }

.lc-dash-card__head {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  flex-wrap: wrap;
}
.lc-dash-card__title { font-size: 1.0625rem; font-weight: 700; letter-spacing: -.01em; }

.lc-dash-badge {
  display: inline-flex; align-items: center; gap: .4rem;
  font-size: .6875rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  padding: .32rem .7rem; border-radius: 999px; white-space: nowrap;
}
.lc-dash-badge--live { background: var(--lc-petrol-wash); color: var(--lc-petrol); border: 1px solid var(--lc-petrol-bright); }
.lc-dash-badge--live .lc-badge__dot { animation: lc-pulse-dot 2s ease-in-out infinite; }
.lc-dash-badge--hold { background: var(--lc-hold-wash); color: var(--lc-hold); border: 1px solid var(--lc-hold-bright); }
.lc-dash-badge--pass { background: var(--lc-pass-wash); color: var(--lc-pass); border: 1px solid var(--lc-pass); }
.lc-dash-badge--fail { background: var(--lc-fail-wash); color: var(--lc-fail); border: 1px solid var(--lc-fail); }

.lc-dash-facts { display: flex; flex-direction: column; margin: 0; }
.lc-dash-facts__row {
  display: flex; align-items: baseline; justify-content: space-between; gap: 1.25rem;
  padding: .55rem 0; border-bottom: 1px dashed var(--lc-rule);
}
.lc-dash-facts__row:last-child { border-bottom: 0; }
.lc-dash-facts__row dt {
  font-size: .6875rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--lc-ink-3); flex: 0 0 auto;
}
.lc-dash-facts__row dd {
  margin: 0; font-size: .875rem; color: var(--lc-ink); text-align: right;
  overflow-wrap: anywhere;
}
.lc-dash-facts__mono { font-family: var(--lc-mono); font-size: .78rem; }

.lc-dash-progress { display: flex; flex-direction: column; gap: .4rem; }
.lc-dash-progress__bar {
  height: 6px; border-radius: 3px; overflow: hidden;
  background: color-mix(in srgb, var(--lc-petrol-wash) 65%, var(--lc-vellum));
}
.lc-dash-progress__fill {
  height: 100%; border-radius: 3px;
  background: linear-gradient(90deg, var(--lc-petrol), var(--lc-petrol-bright));
  transition: width 600ms cubic-bezier(.22,1,.36,1);
}
.lc-dash-progress__label {
  display: flex; justify-content: space-between;
  font-size: .6875rem; color: var(--lc-ink-3);
}

.lc-dash-card__cta { margin-top: auto; justify-content: center; }
.lc-dash-card__note { font-size: .78rem; color: var(--lc-ink-3); line-height: 1.5; margin: 0; }

.lc-dash__steps { display: flex; flex-direction: column; }
.lc-dash__steps-title { font-size: 1.0625rem; font-weight: 700; letter-spacing: -.01em; }
.lc-dash__steps .lc-portal-steps { margin-top: 1rem; }

/* ---- portal hero layout --------------------------------------------------- */

.lc-portal-hero {
  display: grid; grid-template-columns: 1fr; gap: 2.5rem;
  padding: 3rem 0 2rem; align-items: center;
}
@media (min-width: 900px) {
  .lc-portal-hero { grid-template-columns: 1.1fr .9fr; gap: 3.5rem; padding: 4rem 0 2.5rem; }
}
.lc-portal-hero__left { display: flex; flex-direction: column; gap: 1.4rem; }
.lc-portal-hero__title {
  font-size: clamp(1.35rem, 1rem + 2.4vw, 2.5rem); font-weight: 700;
  letter-spacing: -.03em; line-height: 1.15;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lc-portal-hero__lede {
  font-size: 1.0625rem; color: var(--lc-ink-2); line-height: 1.55; max-width: 30rem;
}
/* LOCKED: Start CTA stacks vertically — primary full-width, UBO invite below (not side-by-side). */
.lc.applicant-home .lc-portal-hero__cta,
.lc-portal-hero__cta {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  align-items: stretch;
  gap: .75rem;
  max-width: 22rem;
  width: 100%;
}
.lc.applicant-home .lc-portal-hero__cta > .lc-portal-btn--primary,
.lc-portal-hero__cta > .lc-portal-btn--primary {
  width: 100%;
  min-width: 0;
  justify-content: center;
}
.lc.applicant-home .lc-portal-hero__cta > .lc-portal-btn--ghost,
.lc-portal-hero__cta > .lc-portal-btn--ghost {
  width: 100%;
  justify-content: center;
  text-align: center;
  white-space: normal;
  line-height: 1.35;
}
.lc-portal-hero__trust { display: flex; flex-wrap: wrap; gap: 1.25rem; }
.lc-portal-hero__trust-item {
  display: flex; align-items: center; gap: .4rem;
  font-size: .8125rem; color: var(--lc-ink-3); font-weight: 500;
}
.lc-portal-hero__trust-icon { width: 18px; height: 18px; color: var(--lc-pass); flex: none; }
.lc-portal-hero__trust-icon svg {
  width: 100%; height: 100%; fill: none; stroke: currentColor;
  stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round;
}

.lc-portal-kicker {
  display: inline-flex; align-items: center; gap: .45rem; align-self: flex-start;
  padding: .35rem .8rem; background: var(--lc-petrol-wash); border: 1px solid var(--lc-petrol-bright);
  border-radius: 100px; font-size: .72rem; font-weight: 600;
  color: var(--lc-petrol); letter-spacing: .02em;
}
.lc-portal-kicker__dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--lc-petrol-bright); animation: lc-pulse-dot 2s ease-in-out infinite;
}

/* ---- portal buttons ------------------------------------------------------- */

.lc-portal-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .7rem 1.5rem; border: none; border-radius: 10px;
  font: inherit; font-size: .9375rem; font-weight: 600; cursor: pointer;
  text-decoration: none; transition: transform 140ms ease, box-shadow 200ms ease, background 140ms ease;
}
.lc-portal-btn--primary {
  position: relative;
  background: var(--lc-petrol); color: #fff;
  box-shadow: 0 8px 28px rgba(10,75,87,.20), 0 2px 10px rgba(10,75,87,.10);
}
.lc-portal-btn--primary:hover {
  transform: translateY(-2px); background: var(--lc-petrol-deep);
  box-shadow: 0 14px 36px rgba(10,75,87,.28), 0 4px 14px rgba(10,75,87,.14);
}
.lc-portal-btn--primary:active {
  transform: translateY(0);
  box-shadow: 0 4px 14px rgba(10,75,87,.16);
}
/* LOCKED: soft invitation pulse on the home Start CTA (same idea as .lc-home .lc-btn). */
.lc.applicant-home .lc-portal-hero__cta > .lc-portal-btn--primary::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  animation: lc-cta-pulse 2.8s ease-out 1.2s infinite;
}
.lc.applicant-home .lc-portal-hero__cta > .lc-portal-btn--primary:hover::after,
.lc.applicant-home .lc-portal-hero__cta > .lc-portal-btn--primary:focus-visible::after {
  animation: none;
}
.lc-portal-btn--ghost {
  background: transparent; color: var(--lc-ink-2);
  border: 1px solid var(--lc-rule-2); box-shadow: none;
}
.lc-portal-btn--ghost:hover { background: var(--lc-vellum); border-color: var(--lc-ink-3); color: var(--lc-ink); }
.lc-portal-btn--sm { padding: .4rem .8rem; font-size: .8125rem; }
.lc-portal-btn--lg { padding: .85rem 1.75rem; font-size: 1.0625rem; }
.lc-portal-btn__arrow { font-size: 1.1em; line-height: 1; transition: transform 220ms ease; }
.lc-portal-btn--primary:hover .lc-portal-btn__arrow { transform: translateX(4px); }

/* ---- portal theme toggle (ripple switcher) -------------------------------- */

.lc-portal-theme {
  position: relative; width: 34px; height: 34px;
  border: 1px solid var(--lc-rule); border-radius: 8px;
  background: var(--lc-vellum); color: var(--lc-ink-2); cursor: pointer;
  display: grid; place-items: center; overflow: hidden;
  transition: border-color 160ms ease, color 160ms ease;
}
.lc-portal-theme:hover { border-color: var(--lc-rule-2); color: var(--lc-ink); }
.lc-portal-theme:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(12,114,134,.18); }

.lc-portal-theme__icon {
  position: absolute; width: 18px; height: 18px;
  transition: transform 700ms cubic-bezier(.16,1,.3,1), opacity 700ms cubic-bezier(.16,1,.3,1);
}
.lc-portal-theme__icon svg { width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

html[data-theme="light"] .lc-portal-theme__icon--sun { transform: rotate(0) scale(1); opacity: 1; color: var(--lc-hold); }
html[data-theme="light"] .lc-portal-theme__icon--moon { transform: rotate(-90deg) scale(0); opacity: 0; }
html[data-theme="dark"] .lc-portal-theme__icon--sun { transform: rotate(90deg) scale(0); opacity: 0; }
html[data-theme="dark"] .lc-portal-theme__icon--moon { transform: rotate(0) scale(1); opacity: 1; color: var(--lc-petrol-bright); }

/* View Transitions: circular ripple reveal from click coordinates */
::view-transition-old(root),
::view-transition-new(root) { animation: none; mix-blend-mode: normal; }
::view-transition-old(root) { z-index: 1; }
::view-transition-new(root) {
  z-index: 2;
  animation: lc-ripple-reveal .7s cubic-bezier(.16,1,.3,1);
}
@keyframes lc-ripple-reveal {
  from { clip-path: circle(0% at var(--ripple-vt-x, 50%) var(--ripple-vt-y, 50%)); }
  to   { clip-path: circle(var(--ripple-vt-r, 150%) at var(--ripple-vt-x, 50%) var(--ripple-vt-y, 50%)); }
}

/* Fallback for browsers without View Transitions: brief global crossfade */
html.theme-anim,
html.theme-anim * {
  transition: background-color .65s ease, border-color .65s ease, color .65s ease,
              fill .65s ease, stroke .65s ease, box-shadow .65s ease !important;
}

@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root), ::view-transition-new(root) { animation: none !important; }
  html.theme-anim, html.theme-anim * { transition: none !important; }
  .lc-portal-theme__icon { transition: none !important; }
}

/* ---- language switcher animation ------------------------------------------ */

/* Assign view-transition-names so the API can animate regions independently */
.lc-mast { view-transition-name: header; }
.lc-foot { view-transition-name: footer; }
#main { view-transition-name: main; }

/* When a language switch triggers a View Transition, animate the main content
   with a subtle slide + fade while the nav crossfades smoothly. */
::view-transition-group(main) {
  animation-duration: .4s;
  animation-timing-function: cubic-bezier(.22, 1, .36, 1);
}
::view-transition-old(main) {
  animation: lc-lang-out .3s cubic-bezier(.4, 0, 1, 1) both;
}
::view-transition-new(main) {
  animation: lc-lang-in .4s cubic-bezier(.22, 1, .36, 1) both;
}
@keyframes lc-lang-out {
  to { opacity: 0; transform: translateX(-12px); }
}
@keyframes lc-lang-in {
  from { opacity: 0; transform: translateX(12px); }
  to { opacity: 1; transform: translateX(0); }
}

/* Nav and footer: gentle crossfade (no slide) */
::view-transition-group(header),
::view-transition-group(footer) {
  animation: lc-lang-fade .35s ease both;
}
@keyframes lc-lang-fade {
  from { opacity: .3; }
  to { opacity: 1; }
}

/* Language toggle pill: animated sliding indicator */
.lc-lang {
  position: relative;
}
.lc-lang__pill {
  position: absolute; top: 0; bottom: 0;
  background: var(--lc-petrol);
  border-radius: inherit;
  transition: transform 350ms cubic-bezier(.22, 1, .36, 1), width 350ms cubic-bezier(.22, 1, .36, 1);
  z-index: 0; pointer-events: none;
}
.lc-lang a { position: relative; z-index: 1; }
.lc-lang a[aria-current="page"] {
  background: transparent;
  color: #fff;
}
.lc-lang a[aria-current="page"]:hover { background: transparent; color: #fff; }
.lc-lang a:not([aria-current="page"]):hover { background: var(--lc-sunk); }

/* Fallback for browsers without View Transitions: fade the body */
html.lang-anim { animation: lc-lang-fade-fallback .4s ease; }
@keyframes lc-lang-fade-fallback {
  from { opacity: .6; }
  to { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  ::view-transition-group(main),
  ::view-transition-old(main), ::view-transition-new(main),
  ::view-transition-group(header), ::view-transition-group(footer) {
    animation: none !important;
  }
  .lc-lang__pill { transition: none !important; }
  html.lang-anim { animation: none !important; }
}

/* ---- portal auth card (login redesign) ------------------------------------ */

.lc-portal-auth {
  display: flex; flex-direction: column;
  width: 100%; max-width: 32rem;
  margin-block: auto; align-self: center;
  padding-block: clamp(2rem, 8vh, 4.5rem);
}
.lc-portal-auth__card {
  background: var(--lc-vellum); border: 1px solid var(--lc-rule); border-radius: 16px;
  box-shadow: 0 16px 48px rgba(15,26,24,.10), 0 4px 16px rgba(15,26,24,.06);
  padding: 2rem; position: relative; overflow: hidden;
}
.lc-portal-auth__card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px;
  background: linear-gradient(90deg, var(--lc-petrol), var(--lc-petrol-bright), var(--lc-pass));
}
html[data-theme="dark"] .lc-portal-auth__card {
  box-shadow: 0 16px 48px rgba(0,0,0,.5), 0 4px 16px rgba(0,0,0,.25);
}
/* One line in EL and EN — clamp tracks the longest Greek portal heading. */
.lc-portal-auth__title {
  font-size: clamp(1.05rem, 2.6vw + .45rem, 1.5rem); font-weight: 700;
  letter-spacing: -.025em; line-height: 1.2;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lc-portal-auth__lede { font-size: .9375rem; color: var(--lc-ink-2); margin-top: .5rem; line-height: 1.5; }
.lc-portal-auth__form { display: flex; flex-direction: column; gap: 1.1rem; margin-top: 1.5rem; }
.lc-portal-auth__field { display: flex; flex-direction: column; gap: .35rem; }
.lc-portal-auth__field label { font-size: .8125rem; font-weight: 600; color: var(--lc-ink-2); }
.lc-portal-auth__field input {
  padding: .7rem .85rem; border: 1px solid var(--lc-rule); border-radius: 8px;
  font: inherit; font-size: .9375rem; background: var(--lc-vellum);
  color: var(--lc-ink); transition: border-color 160ms ease, box-shadow 160ms ease;
}
.lc-portal-auth__field input:focus {
  outline: none; border-color: var(--lc-petrol-bright);
  box-shadow: 0 0 0 3px rgba(12,114,134,.12);
}
.lc-portal-auth__submit { margin-top: .3rem; }
.lc-portal-auth__alt { border-top: 1px solid var(--lc-rule); padding-top: 1.1rem; margin-top: 1.5rem; }
.lc-portal-auth__or { font-size: .72rem; font-weight: 600; letter-spacing: .11em; text-transform: uppercase; color: var(--lc-ink-3); margin-bottom: .7rem; }
.lc-portal-auth__providers { display: flex; flex-wrap: wrap; gap: .6rem; }
.lc-portal-auth__providers .lc-portal-btn { flex: 1 1 8rem; }

/* ---- portal UBO invite card ----------------------------------------------- */

.lc-portal-ubo {
  display: flex; flex-direction: column;
  width: 100%; max-width: 28rem;
  margin-block: auto; align-self: center;
  padding-block: clamp(2rem, 8vh, 4.5rem);
}
.lc-portal-ubo__card {
  position: relative; overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--lc-petrol) 18%, var(--lc-rule));
  border-radius: 18px;
  padding: 0;
  background:
    radial-gradient(120% 80% at 100% 0%, color-mix(in srgb, var(--lc-petrol-bright) 16%, transparent), transparent 55%),
    radial-gradient(90% 70% at 0% 100%, color-mix(in srgb, var(--lc-pass) 12%, transparent), transparent 50%),
    linear-gradient(180deg, color-mix(in srgb, var(--lc-petrol-wash) 55%, var(--lc-vellum)) 0%, var(--lc-vellum) 42%);
  box-shadow:
    0 22px 56px rgba(15,26,24,.12),
    0 6px 18px rgba(10,75,87,.08),
    inset 0 1px 0 rgb(255 255 255 / .55);
}
.lc-portal-ubo__card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px;
  background: linear-gradient(90deg, var(--lc-petrol), var(--lc-petrol-bright), var(--lc-pass));
}
html[data-theme="dark"] .lc-portal-ubo__card {
  box-shadow:
    0 22px 56px rgba(0,0,0,.55),
    0 6px 18px rgba(0,0,0,.3),
    inset 0 1px 0 rgb(255 255 255 / .04);
  background:
    radial-gradient(120% 80% at 100% 0%, color-mix(in srgb, var(--lc-petrol-bright) 18%, transparent), transparent 55%),
    radial-gradient(90% 70% at 0% 100%, color-mix(in srgb, var(--lc-pass) 12%, transparent), transparent 50%),
    linear-gradient(180deg, color-mix(in srgb, var(--lc-petrol-wash) 70%, var(--lc-vellum)) 0%, var(--lc-vellum) 48%);
}
.lc-portal-ubo__head {
  display: grid; grid-template-columns: 3.1rem 1fr; gap: .95rem;
  align-items: start; padding: 1.65rem 1.65rem 0;
}
.lc-portal-ubo__mark {
  width: 3.1rem; height: 3.1rem; border-radius: 14px;
  display: grid; place-items: center;
  color: var(--lc-petrol);
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--lc-petrol-wash) 40%, #fff), var(--lc-petrol-wash));
  border: 1px solid color-mix(in srgb, var(--lc-petrol) 22%, var(--lc-rule));
  box-shadow: 0 8px 20px rgba(10,75,87,.12);
}
.lc-portal-ubo__mark svg {
  width: 1.35rem; height: 1.35rem; fill: none; stroke: currentColor;
  stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round;
}
.lc-portal-ubo__copy { min-width: 0; padding-top: .15rem; }
.lc-portal-ubo__title {
  margin: 0;
  font-size: clamp(1.15rem, 2.4vw + .55rem, 1.55rem); font-weight: 750;
  letter-spacing: -.03em; line-height: 1.15;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lc-portal-ubo__lede {
  margin: .45rem 0 0; font-size: .9rem; color: var(--lc-ink-2); line-height: 1.45;
  text-wrap: pretty;
}
.lc-portal-ubo__form {
  display: flex; flex-direction: column; gap: 1.15rem;
  margin: 1.35rem 1.65rem 0; padding: 1.2rem 1.15rem 1.15rem;
  border: 1px solid var(--lc-rule); border-radius: 14px;
  background: color-mix(in srgb, var(--lc-vellum) 88%, var(--lc-paper));
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .4);
}
html[data-theme="dark"] .lc-portal-ubo__form {
  background: color-mix(in srgb, var(--lc-sunk) 55%, var(--lc-vellum));
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .03);
}
.lc-portal-ubo__field { display: flex; flex-direction: column; gap: .4rem; }
.lc-portal-ubo__field label { font-size: .78rem; font-weight: 700; letter-spacing: .02em; color: var(--lc-ink-2); }
.lc-portal-ubo__field input {
  padding: .85rem 1rem; border: 1px solid var(--lc-rule); border-radius: 10px;
  font: inherit; font-size: 1rem; background: var(--lc-vellum);
  color: var(--lc-ink); transition: border-color 160ms ease, box-shadow 160ms ease;
}
.lc-portal-ubo__field--key input {
  font-family: var(--lc-mono); font-size: 1.2rem; font-weight: 600;
  letter-spacing: .14em; text-align: center;
}
.lc-portal-ubo__field input:focus {
  outline: none; border-color: var(--lc-petrol-bright);
  box-shadow: 0 0 0 3px rgba(12,114,134,.14);
}
.lc-portal-ubo__field .lc-field__meter {
  justify-content: center; margin-top: .15rem;
}
.lc-portal-ubo__foot {
  display: flex; flex-direction: column; align-items: center; gap: .85rem;
  padding: 1.15rem 1.65rem 1.55rem;
}
.lc-portal-ubo__seal {
  margin: 0; font-size: .72rem; font-weight: 650; letter-spacing: .04em;
  text-transform: uppercase; color: var(--lc-ink-3);
}
.lc-portal-ubo__foot .lc-portal-btn--ghost {
  min-width: 11rem;
}
.lc-portal-ubo__hint { font-size: .75rem; color: var(--lc-ink-3); margin-top: .2rem; }

/* ---- entrance animations -------------------------------------------------- */

@keyframes lc-fade-up {
  from { opacity: 0; transform: translate3d(0, 16px, 0); }
  to { opacity: 1; transform: none; }
}
.lc-portal-hero__left > * { animation: lc-fade-up 600ms cubic-bezier(.22,1,.36,1) both; }
.lc-portal-hero__left > *:nth-child(1) { animation-delay: 60ms; }
.lc-portal-hero__left > *:nth-child(2) { animation-delay: 140ms; }
.lc-portal-hero__left > *:nth-child(3) { animation-delay: 220ms; }
.lc-portal-hero__left > *:nth-child(4) { animation-delay: 300ms; }
.lc-portal-hero__right { animation: lc-fade-up 700ms cubic-bezier(.22,1,.36,1) 200ms both; }
.lc-portal-auth > * { animation: lc-fade-up 600ms cubic-bezier(.22,1,.36,1) both; }
.lc-portal-auth > *:nth-child(1) { animation-delay: 60ms; }
.lc-portal-auth > *:nth-child(2) { animation-delay: 160ms; }
.lc-portal-ubo > * { animation: lc-fade-up 600ms cubic-bezier(.22,1,.36,1) both; }
.lc-portal-ubo > *:nth-child(1) { animation-delay: 60ms; }
.lc-portal-ubo > *:nth-child(2) { animation-delay: 160ms; }

@media (prefers-reduced-motion: reduce) {
  .lc-app-bg__orb, .lc.applicant-home, .lc.auth-channel { animation: none !important; }
  .lc-portal-hero__left > *, .lc-portal-hero__right,
  .lc-portal-auth > *, .lc-portal-ubo > *,
  .lc-portal-step { animation: none !important; }
  .lc-portal-steps.is-walking .lc-portal-step[data-walk-active],
  .lc-portal-steps.is-walking .lc-portal-step.is-active { transform: none; }
}

/* ===========================================================================
   Redesigned error pages — centered card with icon
   =========================================================================== */

.lc-error-page {
  min-height: 80vh; display: flex; align-items: center; justify-content: center;
  padding: 2rem 1.5rem;
}
.lc-error-card {
  max-width: 30rem; width: 100%; text-align: center;
  background: var(--lc-vellum); border: 1px solid var(--lc-rule);
  border-radius: 14px; box-shadow: 0 12px 40px rgb(15 26 24 / .10), 0 4px 12px rgb(15 26 24 / .06);
  padding: 2.5rem 2rem; position: relative; overflow: hidden;
}
.lc-error-card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px;
  background: linear-gradient(90deg, var(--lc-fail), var(--lc-hold), var(--lc-petrol));
}
/* Authorization denials stay on the brand hue — never amber "hold" wash. */
.lc-error-card--deny::before {
  background: linear-gradient(90deg, var(--lc-petrol-deep), var(--lc-petrol), var(--lc-petrol-bright));
}
.lc-error-card__icon {
  width: 64px; height: 64px; border-radius: 16px; margin: 0 auto 1.25rem;
  display: flex; align-items: center; justify-content: center; font-size: 1.75rem;
  background: var(--lc-fail-wash); color: var(--lc-fail);
}
.lc-error-card__icon--404 { background: var(--lc-hold-wash); color: var(--lc-hold); }
.lc-error-card__icon--500 { background: var(--lc-fail-wash); color: var(--lc-fail); }
.lc-error-card__icon--403 { background: var(--lc-petrol-wash); color: var(--lc-petrol); }
.lc-error-card__icon svg { width: 28px; height: 28px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.lc-error-card__eyebrow {
  margin: 0 0 .55rem;
  font-size: .75rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--lc-petrol);
}
.lc-error-card .lc-eyebrow { margin-bottom: .5rem; }
.lc-error-card .lc-title {
  font-size: clamp(1.05rem, 2.4vw + .5rem, 1.5rem); font-weight: 700;
  letter-spacing: -.025em; margin: 0 0 .5rem; line-height: 1.2;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lc-error-card .lc-lede {
  font-size: .9375rem; color: var(--lc-ink-2); margin: 0 0 1.25rem; max-width: none;
  text-wrap: pretty;
}
.lc-error-card .lc-status-note {
  text-align: left; max-width: none; margin: 0 0 1.5rem;
}
.lc-error-card__actions {
  display: flex; flex-wrap: wrap; gap: .65rem; justify-content: center;
}
.lc-error-card__actions .lc-btn { min-height: 2.75rem; }
@media (max-width: 36rem) {
  .lc-error-card__actions { flex-direction: column; align-items: stretch; }
  .lc-error-card__actions .lc-btn { width: 100%; justify-content: center; }
}

/* ===========================================================================
   Redesigned notifications / notices / toasts
   =========================================================================== */

.lc .notice,
.lc .error-summary {
  display: flex; gap: .65rem; align-items: flex-start;
  padding: .85rem 1rem; border: 1px solid var(--lc-rule); border-radius: 8px;
  font-size: var(--lc-t-base); font-weight: 400; line-height: 1.5;
  background: var(--lc-vellum); box-shadow: 0 1px 2px rgb(15 26 24 / .04);
  margin: 0 0 1rem; max-width: var(--lc-measure);
}
.lc .notice--info { border-color: var(--lc-petrol); background: var(--lc-petrol-wash); color: var(--lc-petrol); }
.lc .notice--success { border-color: var(--lc-pass); background: var(--lc-pass-wash); color: var(--lc-pass); }
.lc .notice--warning { border-color: var(--lc-hold); background: var(--lc-hold-wash); color: var(--lc-hold); }
.lc .notice--danger,
.lc .error-summary { border-color: var(--lc-fail); background: var(--lc-fail-wash); color: var(--lc-fail); }
.lc .notice--error { border-color: var(--lc-fail); background: var(--lc-fail-wash); color: var(--lc-fail); }
.lc .notice strong, .lc .error-summary strong { display: block; margin-bottom: .1rem; color: inherit; font-weight: 700; }
.lc .error-summary h2 { margin: 0 0 .25rem; font-size: var(--lc-t-base); color: var(--lc-fail); }
.lc .error-summary ul { margin: .25rem 0 0; padding-left: 1.1rem; }
.lc .notice a, .lc .error-summary a { color: inherit; text-decoration: underline; text-underline-offset: .1em; }

/* Inline lc-note redesign — keep the left-rule motif but add rounded corners */
.lc-note {
  border-left: 3px solid var(--lc-rule-2);
  padding: .6rem .9rem .6rem 1rem;
  font-size: var(--lc-t-base); color: var(--lc-ink-2);
  max-width: var(--lc-measure);
  border-radius: 0 10px 10px 0;
  background: var(--lc-vellum);
  margin: 0 0 1rem;
}
.lc-wizard__card .lc-note { max-width: none; }
.lc-note--live { border-left-color: var(--lc-petrol); background: var(--lc-petrol-wash); }
.lc-note--hold { border-left-color: var(--lc-hold); background: var(--lc-hold-wash); }
.lc-note--fail { border-left-color: var(--lc-fail); background: var(--lc-fail-wash); }
.lc-note--pass { border-left-color: var(--lc-pass); background: var(--lc-pass-wash); }
.lc-note strong { display: block; color: var(--lc-ink); }
.lc-note--fail strong { color: var(--lc-fail); }
.lc-note--fail ul { margin: .35rem 0 0; padding-left: 1.05rem; }
.lc-note--fail a { color: var(--lc-fail); }

/* Status note — icon + text, rounded, tinted wash */
.lc-status-note {
  display: flex; gap: .65rem; padding: .85rem 1rem; border-radius: 12px;
  margin: 0 0 1.25rem; max-width: 42rem;
}
.lc-wizard__card .lc-status-note { max-width: none; }
.lc-status-note--live { background: var(--lc-petrol-wash); color: var(--lc-petrol); }
.lc-status-note--hold { background: var(--lc-hold-wash); color: var(--lc-hold); }
.lc-status-note--pass { background: var(--lc-pass-wash); color: var(--lc-pass); }
.lc-status-note__icon { width: 20px; height: 20px; flex: none; margin-top: .1rem; }
.lc-status-note__icon svg { width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.lc-status-note__text { font-size: .8125rem; line-height: 1.5; }
.lc-status-note__text strong { display: block; margin-bottom: .1rem; }

/* Toast — transient floating notification.
   Anchored top-centre under the masthead, never at the foot of the viewport:
   a bottom toast covers the wizard's primary action exactly when the applicant
   is about to commit. Auto-dismisses; the dismiss control is a real button in
   the same size family as every other action, not a bare text link. */
.lc-toast {
  position: fixed; top: calc(3.75rem + env(safe-area-inset-top, 0px)); left: 50%;
  transform: translateX(-50%);
  z-index: 90;
  display: flex; align-items: flex-start; gap: .65rem;
  width: max-content; max-width: min(26rem, calc(100vw - 2rem));
  padding: .8rem .9rem .8rem 1rem;
  background: var(--lc-vellum); border: 1px solid var(--lc-rule); border-radius: 12px;
  box-shadow: 0 16px 40px -12px rgb(15 26 24 / .28), 0 2px 8px rgb(15 26 24 / .08);
  animation: lc-toast-in .35s cubic-bezier(.22, 1, .36, 1);
}
@keyframes lc-toast-in {
  from { opacity: 0; transform: translate(-50%, -8px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}
.lc-toast.is-leaving {
  opacity: 0; transform: translate(-50%, -8px);
  transition: opacity .25s ease, transform .25s ease;
}
.lc-toast__icon { width: 20px; height: 20px; flex: none; margin-top: .1rem; color: var(--lc-petrol); }
.lc-toast__icon svg { width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.lc-toast__text { min-width: 0; font-size: .8125rem; line-height: 1.45; color: var(--lc-ink-2); }
.lc-toast__text strong { display: block; color: var(--lc-ink); font-weight: 650; }
.lc-toast__dismiss {
  flex: none; align-self: center;
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 2.25rem; padding: .4rem 1.1rem;
  border: 1px solid var(--lc-petrol); border-radius: 8px;
  background: var(--lc-petrol); color: #fff;
  font: inherit; font-size: .8125rem; font-weight: 600;
  cursor: pointer; transition: background 140ms ease, border-color 140ms ease;
}
.lc-toast__dismiss:hover { background: var(--lc-petrol-dark, #1a6b6b); border-color: var(--lc-petrol-dark, #1a6b6b); }
.lc-toast__dismiss:focus-visible { outline: 2px solid var(--lc-petrol); outline-offset: 2px; }
@media (max-width: 30rem) {
  /* Narrow phones: text above, button full-width below — the side-by-side
     layout squeezes the label into a column too thin to read. */
  .lc-toast { flex-direction: column; align-items: stretch; width: calc(100vw - 2rem); }
  .lc-toast__icon { display: none; }
  .lc-toast__dismiss { width: 100%; min-height: 2.5rem; }
}
@media (prefers-reduced-motion: reduce) {
  .lc-toast { animation: none; }
  .lc-toast.is-leaving { transition: none; }
}

/* ===========================================================================
   Redesigned applicant wizard — centered card layout
   =========================================================================== */

.lc-wizard {
  max-width: 560px; margin: 0 auto; padding: 2rem 1.5rem 3rem;
  display: flex; flex-direction: column; align-items: center;
}
.lc-wizard__header { text-align: center; margin-bottom: 2rem; width: 100%; }
.lc-wizard__title {
  font-size: clamp(1.05rem, 2.4vw + .5rem, 1.5rem); font-weight: 700;
  letter-spacing: -.025em; margin: 0; line-height: 1.2;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 100%;
}
.lc-wizard__lede {
  font-size: .9375rem; color: var(--lc-ink-2); margin: .4rem auto 0; max-width: 28rem;
  line-height: 1.5; text-wrap: pretty;
}
.lc-wizard__lede:empty { display: none; }

/* Provider-hosted steps (Sumsub): the SDK owns the card interior. */
.lc-wizard--provider { max-width: min(40rem, 100%); }
.lc-wizard--provider .lc-wizard__card { padding: 0; overflow: hidden; }
.lc-wizard--provider .lc-provider,
.lc-wizard--provider .sumsub-websdk-container {
  border: 0; border-radius: 0; background: transparent;
  width: 100%; min-height: min(70vh, 42rem);
}
.lc-wizard--provider .sumsub-websdk-container > iframe,
.lc-wizard--provider .sumsub-websdk-container iframe {
  width: 100% !important; max-width: 100%;
}
.lc-wizard--provider .lc-note {
  margin: 0; padding: .9rem 1.15rem 1.15rem; border-radius: 0;
}

/* Phones: drop stacked gutters so Greek copy and embedded SDKs stay readable. */
@media (max-width: 46rem) {
  .lc.applicant-channel:not(.applicant-home) > main.lc-shell {
    width: 100%;
    max-width: none;
    padding-inline: .5rem;
    box-sizing: border-box;
  }
  .lc-wizard {
    max-width: none;
    width: 100%;
    padding: 1.1rem 0 2rem;
  }
  .lc-wizard__header { margin-bottom: 1.1rem; }
  .lc-wizard__title {
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
    text-wrap: balance;
  }
  .lc-wizard__lede { max-width: none; }
  .lc-wizard__card {
    padding: 1.15rem 1rem;
    border-radius: 12px;
  }
  .lc-wizard--provider { max-width: none; padding-block: .85rem 1.5rem; }
  .lc-wizard--provider .lc-wizard__card {
    padding: 0;
    border-radius: 12px;
  }
  .lc-wizard--provider .lc-provider,
  .lc-wizard--provider .sumsub-websdk-container {
    min-height: min(78vh, 48rem);
  }
  .lc-wizard--provider .lc-note { padding: .85rem 1rem 1rem; }
  .lc-wizard__actions {
    flex-direction: column;
    align-items: stretch;
  }
  .lc-wizard__actions > .lc-btn {
    width: 100%;
    justify-content: center;
  }
}

/* Step circles with connectors — label under the circle so the rail stays
   optically centered (side labels of uneven Greek length used to skew it). */
.lc-wizard__steps {
  display: flex; align-items: flex-start; justify-content: center; gap: 0;
  margin-bottom: 1.5rem; flex-wrap: nowrap;
  width: 100%; max-width: 100%;
}
.lc-wstep {
  display: flex; flex-direction: column; align-items: center; gap: .35rem;
  flex: 1 1 0; min-width: 0; max-width: 5.75rem;
}
.lc-wstep__circle {
  width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: .75rem; font-weight: 700; font-family: var(--lc-mono);
  border: 1.5px solid var(--lc-rule); background: var(--lc-vellum); color: var(--lc-ink-3);
  transition: all 200ms ease; flex: none;
}
.lc-wstep--done .lc-wstep__circle { background: var(--lc-pass); border-color: var(--lc-pass); color: #fff; }
.lc-wstep--active {
  position: relative;
  z-index: 1;
}
.lc-wstep--active .lc-wstep__circle {
  width: 38px; height: 38px;
  background: var(--lc-petrol); border-color: var(--lc-petrol); color: #fff;
  border-width: 2px;
  box-shadow:
    0 0 0 4px color-mix(in srgb, var(--lc-petrol-wash) 92%, #fff),
    0 0 0 7px color-mix(in srgb, var(--lc-petrol) 22%, transparent),
    0 6px 14px rgb(10 75 87 / .22);
  transform: translateY(-1px);
}
.lc-wstep__label {
  font-size: .6875rem; font-weight: 600; color: var(--lc-ink-3);
  text-align: center; line-height: 1.25; max-width: 100%;
  overflow-wrap: anywhere;
}
.lc-wstep--active .lc-wstep__label {
  color: var(--lc-petrol-deep, var(--lc-petrol));
  font-weight: 800;
  font-size: .72rem;
}
.lc-wstep--done .lc-wstep__label { color: var(--lc-ink-2); }
.lc-wstep__connector {
  flex: 0 0 1.25rem; width: 1.25rem; height: 2px; background: var(--lc-rule);
  margin: 15px .1rem 0; /* vertically centers on the 32px circle */
}
@media (min-width: 36rem) {
  .lc-wstep__connector { flex-basis: 1.75rem; width: 1.75rem; }
}
.lc-wstep--done + .lc-wstep__connector { background: var(--lc-pass); }
.lc-wstep--active + .lc-wstep__connector {
  background: linear-gradient(90deg, var(--lc-petrol), var(--lc-rule));
}

/* Wizard card */
.lc-wizard__card {
  background: var(--lc-vellum); border: 1px solid var(--lc-rule); border-radius: 16px;
  box-shadow: 0 12px 40px rgb(15 26 24 / .08), 0 2px 8px rgb(15 26 24 / .04);
  padding: 1.75rem;
  width: 100%;
}
.lc-wizard__card > form,
.lc-wizard__card > .lc-form { width: 100%; }
.lc-wizard__card > * { width: 100%; }
.lc-wizard__section-label {
  font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
  color: var(--lc-ink-3); margin: 0 0 .75rem; text-align: left;
}
.lc-wizard__scroll { display: flex; flex-direction: column; gap: .85rem; width: 100%; min-width: 0; }
.lc-wizard__actions {
  display: flex; align-items: center; justify-content: flex-start; gap: .85rem;
  margin-top: .5rem; flex-wrap: wrap;
}
.lc-wizard__actions--stack {
  flex-direction: column; align-items: stretch; gap: .55rem;
}
.lc-wizard__actions--stack > .lc-btn {
  width: 100%; justify-content: center;
}
.lc-link-back {
  display: inline-flex; align-self: center; justify-content: center;
  margin-top: .15rem; padding: .35rem .5rem;
  font-size: .8125rem; font-weight: 650; color: var(--lc-ink-3);
  text-decoration: none; text-align: center;
}
.lc-link-back:hover { color: var(--lc-petrol); text-decoration: underline; }
.lc-wizard__save { font-size: .75rem; color: var(--lc-ink-3); text-align: left; }

/* Info box */
.lc-info-box {
  background: var(--lc-sunk); border: 1px solid var(--lc-rule); border-radius: 12px;
  padding: 1rem 1.1rem; margin-top: 1.5rem;
}
.lc-info-box__title { font-size: .8125rem; font-weight: 700; margin-bottom: .25rem; }
.lc-info-box__body { font-size: .8125rem; color: var(--lc-ink-2); line-height: 1.5; }
.lc-wizard__card .lc-info-box { margin-top: 0; margin-bottom: 1.5rem; }
.lc-wizard__card .lc-status-note { margin-bottom: 1rem; }
.lc-wizard__card .lc-status-note--live { margin-top: 1.25rem; margin-bottom: 1.25rem; }
.lc-wizard__card .lc-ref-card { margin-bottom: 1.5rem; }
.lc-wizard__card .lc-source-data { margin-bottom: 1.5rem; }
.lc-wizard__card > .lc-disclose { margin-top: 1.5rem; }

/* Full-bleed sticky Continue — authorization + IDV + mismatch + KYB desk */
.lc-wizard--auth,
.lc-wizard--idv,
.lc-wizard--mismatch,
.lc-wizard--kyb {
  max-width: none;
  width: 100%;
  padding: 1rem 0 0;
  align-items: stretch;
  min-height: calc(100dvh - 8.25rem);
}
.lc-wizard--auth .lc-wizard__header,
.lc-wizard--idv .lc-wizard__header,
.lc-wizard--mismatch .lc-wizard__header,
.lc-wizard--kyb .lc-wizard__header {
  margin-bottom: .85rem;
  text-align: left;
}
.lc-wizard--auth .lc-wizard__lede,
.lc-wizard--idv .lc-wizard__lede,
.lc-wizard--mismatch .lc-wizard__lede,
.lc-wizard--kyb .lc-wizard__lede { margin-left: 0; max-width: none; }
.lc-wizard--auth .lc-wizard__card,
.lc-wizard--idv .lc-wizard__card,
.lc-wizard--mismatch .lc-wizard__card,
.lc-wizard--kyb .lc-wizard__card {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  max-height: calc(100dvh - 10.5rem);
  padding: 1rem .9rem .85rem;
  border-radius: 12px;
}
.lc-wizard--auth .lc-auth-form,
.lc-wizard--idv .lc-idv-form,
.lc-wizard--mismatch .lc-mismatch-form {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  gap: .75rem;
}
.lc-wizard--auth .lc-wizard__scroll,
.lc-wizard--idv .lc-wizard__scroll,
.lc-wizard--mismatch .lc-wizard__scroll,
.lc-wizard--kyb .lc-wizard__scroll {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding-right: .1rem;
  gap: .7rem;
}
.lc-wizard--auth .lc-wizard__actions,
.lc-wizard--idv .lc-wizard__actions,
.lc-wizard--mismatch .lc-wizard__actions,
.lc-wizard--kyb .lc-wizard__actions {
  flex: 0 0 auto;
  margin-top: 0;
  padding-top: .7rem;
  border-top: 1px solid var(--lc-rule);
  background: var(--lc-vellum);
}
.lc-wizard--auth .lc-wizard__actions > .lc-btn,
.lc-wizard--idv .lc-wizard__actions > .lc-btn,
.lc-wizard--mismatch .lc-wizard__actions > .lc-btn,
.lc-wizard--kyb .lc-wizard__actions > .lc-btn {
  width: 100%;
  justify-content: center;
}

/* Compact company KYB accordion desk */
.lc-kyb-summary {
  display: grid; gap: .15rem;
  padding: .7rem .8rem; margin: 0;
  border: 1px solid var(--lc-rule); border-radius: 10px;
  background: var(--lc-sunk); text-align: left;
}
.lc-kyb-summary__company {
  margin: 0; font-size: .9375rem; font-weight: 700; color: var(--lc-ink);
  overflow-wrap: anywhere;
}
.lc-kyb-summary__company span { font-weight: 500; color: var(--lc-ink-2); }
.lc-kyb-summary__meta {
  margin: 0; font-size: .75rem; color: var(--lc-ink-2);
  display: flex; flex-wrap: wrap; gap: .3rem;
}
.lc-kyb-summary__ref {
  margin: .15rem 0 0; font-size: .6875rem; color: var(--lc-ink-3);
}
.lc-kyb-summary__ref code { font-family: var(--lc-mono); }
.lc-kyb-panels { display: flex; flex-direction: column; gap: .45rem; }
.lc-kyb-panel {
  border: 1px solid var(--lc-rule); border-radius: 10px;
  background: var(--lc-vellum); overflow: hidden;
}
.lc-kyb-panel > summary {
  list-style: none; cursor: pointer;
  display: flex; align-items: center; gap: .55rem;
  padding: .7rem .8rem; min-height: 0;
  font-size: .8125rem; font-weight: 650; color: var(--lc-ink);
}
.lc-kyb-panel > summary::-webkit-details-marker { display: none; }
.lc-kyb-panel > summary::after {
  content: "+"; margin-left: auto; flex: none;
  font-family: var(--lc-mono); font-weight: 400; color: var(--lc-ink-3);
}
.lc-kyb-panel[open] > summary::after { content: "\2212"; }
.lc-kyb-panel[open] {
  border-color: color-mix(in srgb, var(--lc-petrol) 42%, var(--lc-rule));
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--lc-petrol) 18%, transparent),
    0 8px 18px rgb(10 75 87 / .08);
}
.lc-kyb-panel[open] > summary {
  background: color-mix(in srgb, var(--lc-petrol-wash) 70%, var(--lc-vellum));
  color: var(--lc-petrol-deep, var(--lc-petrol));
}
.lc-kyb-panel[open] .lc-kyb-panel__step {
  background: var(--lc-petrol);
  color: #fff;
}
.lc-kyb-panel__step {
  flex: none; font-family: var(--lc-mono); font-size: .6875rem;
  font-weight: 700; color: var(--lc-petrol); letter-spacing: .04em;
  width: 1.55rem; height: 1.55rem; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--lc-petrol-wash);
}
.lc-kyb-panel__title { flex: 1 1 auto; min-width: 0; text-align: left; line-height: 1.3; }
.lc-kyb-panel[open] .lc-kyb-panel__title { font-weight: 800; }
.lc-kyb-panel__badge {
  flex: none; font-size: .6875rem; font-weight: 700;
  color: var(--lc-pass); background: var(--lc-pass-wash);
  border-radius: 999px; padding: .12rem .45rem;
}
.lc-kyb-panel--done > summary { color: var(--lc-ink-2); }
.lc-kyb-panel--done:not([open]) .lc-kyb-panel__step {
  background: var(--lc-pass); color: #fff;
}
.lc-kyb-panel__body {
  padding: 0 .8rem .8rem;
  display: flex; flex-direction: column; gap: .55rem;
  border-top: 1px solid var(--lc-rule);
  padding-top: .7rem; text-align: left;
}
.lc-kyb-panel .lc-wizard__field-hint {
  margin: 0; font-size: .75rem; line-height: 1.4; color: var(--lc-ink-2);
}
.lc-kyb-panel .lc-field { margin-bottom: .55rem; }
.lc-kyb-panel .lc-wizard__actions {
  border-top: 0; padding-top: .15rem; background: transparent;
}
.lc-kyb-list {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-direction: column; gap: .35rem;
}
.lc-kyb-list li {
  display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .6rem;
  padding: .45rem .55rem; border-radius: 8px;
  background: var(--lc-sunk); border: 1px solid var(--lc-rule);
  font-size: .78rem;
}
.lc-kyb-list li strong { color: var(--lc-ink); }
.lc-kyb-list li span { color: var(--lc-ink-2); overflow-wrap: anywhere; }
.lc-kyb-facts {
  display: grid; gap: .35rem; margin: 0;
}
.lc-kyb-facts > div {
  display: flex; justify-content: space-between; gap: .75rem;
  padding: .35rem 0; border-bottom: 1px solid var(--lc-rule);
  font-size: .78rem;
}
.lc-kyb-facts > div:last-child { border-bottom: 0; }
.lc-kyb-facts dt { margin: 0; color: var(--lc-ink-3); font-weight: 600; }
.lc-kyb-facts dd { margin: 0; font-weight: 650; color: var(--lc-ink); text-align: right; }
.lc-kyb-break { overflow-wrap: anywhere; word-break: break-all; }
.lc-wizard--kyb .lc-wizard__actions--stack {
  display: flex; flex-direction: column; gap: .4rem;
}
.lc-wizard--kyb .lc-link-back { font-size: .75rem; }
.lc-wizard--mismatch .lc-wizard__actions--stack {
  display: flex;
  flex-direction: column;
  gap: .45rem;
}
.lc-wizard--mismatch .lc-link-back {
  align-self: center;
  margin-top: .15rem;
  font-size: .75rem;
}

/* Compact mismatch field rows — always stacked, consistent width */
.lc-mismatch-panel { margin: 0; }
.lc-mismatch-panel .lc-source-data__cat { margin: 0 0 .35rem; }
.lc-mismatch-panel .lc-wizard__field-hint {
  margin: 0 0 .55rem;
  font-size: .75rem;
  line-height: 1.4;
  color: var(--lc-ink-2);
}
.lc-mismatch--compact {
  margin: 0;
  padding: 0;
  border: 0;
  border-top: 0;
  min-width: 0;
}
.lc-mismatch--compact .lc-mismatch__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .4rem;
  margin: 0;
  padding: .7rem 0;
  border-bottom: 1px solid var(--lc-rule);
  align-items: stretch;
}
.lc-mismatch--compact .lc-mismatch__row:first-child { padding-top: .15rem; }
.lc-mismatch--compact .lc-mismatch__row:last-child {
  border-bottom: 0;
  padding-bottom: .15rem;
}
.lc-mismatch--compact .lc-mismatch__check {
  flex: none;
  width: 100%;
  min-width: 0;
  margin: 0;
  gap: .55rem;
}
.lc-mismatch--compact .lc-mismatch__check .lc-choice__label {
  font-size: .8125rem;
  font-weight: 650;
  color: var(--lc-ink);
}
.lc-wizard__card .lc-mismatch--compact .lc-mismatch__proposed {
  flex: none;
  width: 100%;
  min-width: 0;
  margin: 0;
  padding-left: 1.85rem;
  text-align: left;
}
.lc-wizard__card .lc-mismatch--compact .lc-mismatch__proposed label {
  display: block;
  margin: 0 0 .25rem;
  font-size: .6875rem;
  font-weight: 600;
  letter-spacing: .02em;
  color: var(--lc-ink-3);
}
.lc-wizard__card .lc-mismatch--compact .lc-mismatch__proposed input {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: .55rem .7rem;
  font-size: .8125rem;
  border: 1px solid var(--lc-rule);
  border-radius: 8px;
  background: var(--lc-vellum);
  color: var(--lc-ink);
}
.lc-wizard__card .lc-mismatch--compact .lc-mismatch__proposed input:focus {
  outline: none;
  border-color: var(--lc-petrol);
  box-shadow: 0 0 0 2px var(--lc-petrol-wash);
}
.lc-wizard__card .lc-mismatch-panel,
.lc-wizard__card .lc-mismatch--compact { text-align: left; }
.lc-wizard--auth .lc-wizard__section-label { margin: 0; }
.lc-wizard--auth .lc-wizard__field-hint { margin: .2rem 0 .45rem; }
.lc-wizard--auth .lc-wizard__fieldset { margin: 0; }
.lc-wizard--auth .lc-choice--confirm,
.lc-wizard--idv .lc-choice--confirm { margin-top: .15rem; padding: .7rem .8rem; }
.lc-idv-consent { margin: 0; }
.lc-idv-consent .lc-source-data__cat { margin-bottom: .45rem; }
.lc-idv-consent__body {
  margin: 0;
  font-size: .8125rem;
  line-height: 1.45;
  color: var(--lc-ink-2);
}
.lc-auth-notice { max-width: none; border-top: 0; border: 1px solid var(--lc-rule); border-radius: 10px; background: var(--lc-sunk); }
.lc-auth-notice > summary {
  display: flex; align-items: center; justify-content: space-between; gap: .75rem;
  padding: .65rem .8rem; min-height: 0; cursor: pointer; list-style: none;
  text-align: left;
}
.lc-auth-notice > summary::-webkit-details-marker { display: none; }
.lc-auth-notice > summary::after { margin-left: auto; flex: none; }
.lc-auth-notice__summary {
  display: flex; flex-direction: column; align-items: flex-start; gap: .15rem;
  flex: 1 1 auto; min-width: 0;
  font-size: .8125rem; font-weight: 650; color: var(--lc-ink); line-height: 1.3;
  text-align: left;
}
.lc-auth-notice__meta {
  display: block; margin: 0; padding: 0;
  font-size: .6875rem; font-weight: 600; letter-spacing: .02em;
  color: var(--lc-ink-3); line-height: 1.3;
}
.lc-auth-notice__title {
  display: block; margin: 0; padding: 0;
  font-size: .8125rem; font-weight: 650; color: var(--lc-ink); line-height: 1.3;
}
.lc-auth-notice .lc-disclose__body {
  padding: 0 .8rem .75rem;
  font-size: .78rem; color: var(--lc-ink-2); line-height: 1.45;
  text-align: left;
}
.lc-auth-cats__head {
  display: flex; align-items: baseline; justify-content: space-between; gap: .75rem;
}
.lc-auth-cats__all {
  appearance: none; border: 0; background: transparent; cursor: pointer;
  padding: 0; font: inherit; font-size: .75rem; font-weight: 700;
  color: var(--lc-petrol); text-decoration: underline; text-underline-offset: .12em;
}
.lc-auth-cats__all:hover { color: var(--lc-petrol-bright); }
.lc-wizard--auth .lc-choices--check,
.lc-choices--check-dense {
  grid-template-columns: 1fr 1fr;
  gap: .4rem;
}
.lc-wizard--auth .lc-choices--check .lc-choice,
.lc-choices--check-dense .lc-choice {
  padding: .55rem .65rem;
  border-radius: 8px;
}
.lc-wizard--auth .lc-choices--check .lc-choice__label,
.lc-choices--check-dense .lc-choice__label {
  font-size: .78rem;
  line-height: 1.25;
}
@media (max-width: 22rem) {
  .lc-wizard--auth .lc-choices--check,
  .lc-choices--check-dense { grid-template-columns: 1fr; }
}
@media (max-width: 46rem) {
  .lc.applicant-channel:not(.applicant-home) > main.lc-shell:has(.lc-wizard--auth),
  .lc.applicant-channel:not(.applicant-home) > main.lc-shell:has(.lc-wizard--idv),
  .lc.applicant-channel:not(.applicant-home) > main.lc-shell:has(.lc-wizard--mismatch),
  .lc.applicant-channel:not(.applicant-home) > main.lc-shell:has(.lc-wizard--kyb) {
    width: 100%;
    max-width: none;
    padding-inline: .45rem;
    box-sizing: border-box;
  }
  .lc-wizard--auth,
  .lc-wizard--idv,
  .lc-wizard--mismatch,
  .lc-wizard--kyb { padding-top: .75rem; min-height: calc(100dvh - 7.5rem); }
  .lc-wizard--auth .lc-wizard__card,
  .lc-wizard--idv .lc-wizard__card,
  .lc-wizard--mismatch .lc-wizard__card,
  .lc-wizard--kyb .lc-wizard__card {
    max-height: calc(100dvh - 9.25rem);
    padding: .85rem .7rem .7rem;
  }
  .lc-wizard--auth .lc-wizard__title,
  .lc-wizard--idv .lc-wizard__title,
  .lc-wizard--mismatch .lc-wizard__title,
  .lc-wizard--kyb .lc-wizard__title { white-space: normal; }
  .lc-wizard__card .lc-mismatch--compact .lc-mismatch__proposed { padding-left: 1.7rem; }
}

/* Notice card — legal notice shown above authorization form */
.lc-notice-card {
  background: var(--lc-sunk); border: 1px solid var(--lc-rule); border-left: 3px solid var(--lc-petrol);
  border-radius: 12px; padding: 1.1rem 1.25rem; margin-bottom: 1.5rem;
}
.lc-notice-card__header {
  display: flex; align-items: center; gap: .6rem; margin-bottom: .6rem;
}
.lc-notice-card__icon {
  width: 32px; height: 32px; border-radius: 8px; flex: none;
  display: flex; align-items: center; justify-content: center;
  background: var(--lc-vellum); color: var(--lc-petrol);
  border: 1px solid var(--lc-rule);
}
.lc-notice-card__icon svg { width: 18px; height: 18px; }
.lc-notice-card__badge {
  font-family: var(--lc-mono); font-size: .625rem; font-weight: 600;
  color: var(--lc-ink-3); text-transform: uppercase; letter-spacing: .06em;
  padding: .2rem .5rem; border-radius: 4px; background: var(--lc-vellum);
  border: 1px solid var(--lc-rule);
}
.lc-notice-card__title {
  font-size: .9375rem; font-weight: 700; margin: 0 0 .35rem; color: var(--lc-ink);
  line-height: 1.35;
}
.lc-notice-card__body {
  font-size: .8125rem; color: var(--lc-ink-2); line-height: 1.55; margin: 0;
}
.lc-notice-card__chips { margin: .25rem 0 0; }
.lc-notice-card__chips .lc-mark { font-size: .75rem; }

/* ===========================================================================
   Choice cards — boxed selection with icon
   =========================================================================== */

.lc-choice-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .65rem; margin-bottom: 1.25rem; }
@media (max-width: 30rem) { .lc-choice-grid { grid-template-columns: 1fr; } }
.lc-choice-card {
  border: 1.5px solid var(--lc-rule); border-radius: 12px; padding: .85rem 1rem;
  cursor: pointer; transition: all 160ms ease; background: var(--lc-vellum);
  /* Icon | label/meta column — never label+meta as a horizontal flex pair. */
  display: grid; grid-template-columns: auto minmax(0, 1fr);
  column-gap: .75rem; row-gap: .15rem; align-items: center;
  position: relative; text-align: left;
}
.lc-choice-card:hover { border-color: var(--lc-rule-2); box-shadow: 0 2px 8px rgb(15 26 24 / .06); }
.lc-choice-card input { position: absolute; opacity: 0; pointer-events: none; }
/* Highlight follows the radio — never a static Twig class that sticks on the
   default option after the applicant switches. */
.lc-choice-card:has(input:checked),
.lc-choice-card--selected { border-color: var(--lc-petrol); background: var(--lc-petrol-wash); }
.lc-choice-card__icon {
  grid-row: 1 / -1; align-self: center;
  width: 36px; height: 36px; border-radius: 10px;
  color: var(--lc-ink-3); display: flex; align-items: center; justify-content: center;
  background: var(--lc-sunk); transition: all 160ms ease;
}
.lc-choice-card:has(input:checked) .lc-choice-card__icon,
.lc-choice-card--selected .lc-choice-card__icon { background: var(--lc-petrol); color: #fff; }
.lc-choice-card__icon svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.lc-choice-card__label { grid-column: 2; font-size: .875rem; font-weight: 700; line-height: 1.25; }
.lc-choice-card__meta { grid-column: 2; font-size: .75rem; color: var(--lc-ink-3); line-height: 1.35; }

/* ===========================================================================
   Form fields — modern rounded inputs
   =========================================================================== */

/* Contact: compact flag+prefix dial, phone number takes the row. */
.lc-phone {
  display: grid;
  grid-template-columns: 1fr;
  gap: .45rem;
  align-items: stretch;
  width: 100%;
}
.lc-phone__code { display: none; min-width: 0; }
.contact-form:has(input[value="SMS"]:checked) .lc-phone,
.lc-phone--sms {
  grid-template-columns: 4.85rem minmax(0, 1fr);
  gap: .35rem;
}
.contact-form:has(input[value="SMS"]:checked) .lc-phone__code,
.lc-phone--sms .lc-phone__code { display: block; }
.lc-phone .contact-form__country,
.lc-wizard__card .lc-phone .contact-form__country {
  width: 100%;
  min-height: 48px;
  padding: .55rem .2rem .55rem .4rem;
  border: 1.5px solid var(--lc-rule);
  border-radius: 10px;
  background: var(--lc-vellum);
  color: var(--lc-ink);
  font: inherit;
  font-size: .8125rem;
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
  outline: none;
  text-overflow: clip;
}
.lc-phone .contact-form__country:focus {
  border-color: var(--lc-petrol-bright);
  box-shadow: 0 0 0 4px var(--lc-petrol-wash);
}
.lc-phone .contact-form__input,
.lc-wizard__card .lc-phone .contact-form__input {
  width: 100%;
  min-width: 0;
}
.lc-wizard__card .lc-phone .contact-form__input.is-invalid,
.lc-wizard__card .contact-form__input.is-invalid {
  border-color: var(--lc-fail);
  box-shadow: 0 0 0 4px var(--lc-fail-wash);
}
.lc-field [data-contact-error]:not([hidden]) {
  display: block;
  margin-top: .35rem;
}
@media (max-width: 30rem) {
  .contact-form:has(input[value="SMS"]:checked) .lc-phone,
  .lc-phone--sms { grid-template-columns: 5.1rem minmax(0, 1fr); }
  .lc-phone .contact-form__country {
    font-size: .75rem;
    padding-inline: .3rem .15rem;
  }
}

.lc-wizard__card .lc-field { margin-bottom: 1.25rem; text-align: left; }
.lc-wizard__card .lc-field label,
.lc-wizard__card .lc-field__legend {
  font-size: .875rem; font-weight: 600; margin-bottom: .35rem; display: block; text-align: left;
}
.lc-wizard__card .lc-field input[type="text"],
.lc-wizard__card .lc-field input[type="email"],
.lc-wizard__card .lc-field input[type="tel"],
.lc-wizard__card .lc-field input[type="number"],
.lc-wizard__card .lc-field textarea,
.lc-wizard__card .lc-field select {
  width: 100%; min-height: 48px; padding: .65rem .9rem;
  border: 1.5px solid var(--lc-rule); border-radius: 10px;
  background: var(--lc-vellum); color: var(--lc-ink); font: inherit; font-size: 1rem;
  outline: none; transition: border-color 120ms ease, box-shadow 120ms ease;
  text-align: left;
}
.lc-wizard__card .lc-field input:focus,
.lc-wizard__card .lc-field textarea:focus,
.lc-wizard__card .lc-field select:focus {
  border-color: var(--lc-petrol-bright); box-shadow: 0 0 0 4px var(--lc-petrol-wash);
}
.lc-wizard__card .lc-field__hint,
.lc-wizard__card .lc-field__meter,
.lc-wizard__card .lc-field__errors {
  font-size: .75rem; color: var(--lc-ink-3); margin-top: .3rem;
  display: flex; align-items: center; gap: .3rem; justify-content: flex-start; text-align: left;
}
.lc-wizard__card .lc-field__errors { color: var(--lc-fail); display: block; padding-left: 1.05rem; }
.lc-wizard__card .lc-field__counter { font-family: var(--lc-mono); font-weight: 600; color: var(--lc-petrol); }
.lc-wizard__field-hint { font-size: .75rem; color: var(--lc-ink-3); margin: -.25rem 0 .75rem; text-align: left; }
.lc-wizard__fieldset { border: none; padding: 0; margin: 0 0 1.5rem; text-align: left; }
.lc-wizard__card .lc-segmented { justify-content: flex-start; }
.lc-wizard__card .lc-note,
.lc-wizard__card .lc-info-box,
.lc-wizard__card .lc-notice-card,
.lc-wizard__card .lc-status-note,
.lc-wizard__card .lc-ref-card,
.lc-wizard__card .lc-source-data,
.lc-wizard__card .lc-disclose { text-align: left; }

/* Verify code — minimal OTP entry */
.lc-verify-form { width: 100%; }
.lc-verify-form .lc-wizard__actions {
  justify-content: stretch;
  align-items: stretch;
}
.lc-verify-form .lc-wizard__actions > .lc-btn {
  width: 100%;
  justify-content: center;
}
.lc-verify-code { display: flex; flex-direction: column; align-items: center; gap: .5rem; }
.lc-verify-code input {
  width: 14rem; max-width: 100%; text-align: center;
  font-family: var(--lc-mono); font-size: 1.75rem; font-weight: 600;
  letter-spacing: .35em; padding: .85rem 1rem;
  border: 1.5px solid var(--lc-rule); border-radius: 14px;
  background: var(--lc-vellum); color: var(--lc-ink);
  outline: none; transition: border-color 160ms ease, box-shadow 160ms ease;
}
.lc-verify-code input:focus {
  border-color: var(--lc-petrol-bright); box-shadow: 0 0 0 4px var(--lc-petrol-wash);
}
.lc-verify-code input::placeholder {
  font-size: 1rem; letter-spacing: .1em; color: var(--lc-ink-3); font-weight: 400;
}
.lc-verify-code .form-error, .lc-verify-code .lc-field__error {
  font-size: .75rem; color: var(--lc-fail); text-align: center; margin: 0;
}
.lc-verify-note {
  font-size: .6875rem; color: var(--lc-ink-3); text-align: center;
  margin: 1rem 0 0; line-height: 1.5;
}

/* Checkbox/confirmation choice inside wizard card */
.lc-wizard__card .lc-choice--confirm {
  display: flex; align-items: flex-start; gap: .65rem;
  padding: .85rem 1rem; border: 1.5px solid var(--lc-rule); border-radius: 10px;
  background: var(--lc-vellum); cursor: pointer; transition: all 160ms ease;
  margin-top: .25rem;
}
.lc-wizard__card .lc-choice--confirm:hover { border-color: var(--lc-rule-2); box-shadow: 0 2px 8px rgb(15 26 24 / .04); }
.lc-wizard__card .lc-choice--confirm:has(input:checked) { border-color: var(--lc-petrol); background: var(--lc-petrol-wash); }
.lc-wizard__card .lc-choice--confirm .lc-choice__mark--box {
  width: 20px; height: 20px; border-radius: 6px; border: 1.5px solid var(--lc-rule-2);
  background: var(--lc-vellum); flex: none; margin-top: .1rem; transition: all 160ms ease;
}
.lc-wizard__card .lc-choice--confirm:has(input:checked) .lc-choice__mark--box {
  background: var(--lc-petrol); border-color: var(--lc-petrol);
  position: relative;
}
.lc-wizard__card .lc-choice--confirm:has(input:checked) .lc-choice__mark--box::after {
  content: ""; position: absolute; left: 5px; top: 2px;
  width: 5px; height: 9px;
  border: solid #fff; border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.lc-wizard__card .lc-choice--confirm input { position: absolute; opacity: 0; pointer-events: none; }
.lc-wizard__card .lc-choice--confirm .lc-choice__label { font-size: .875rem; font-weight: 500; }

/* Category checkboxes inside wizard card */
.lc-wizard__card .lc-choices--check { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
@media (max-width: 30rem) { .lc-wizard__card .lc-choices--check { grid-template-columns: 1fr; } }
.lc-wizard__card .lc-choices--check .lc-choice {
  display: flex; align-items: center; gap: .55rem;
  padding: .75rem .85rem; border: 1.5px solid var(--lc-rule); border-radius: 10px;
  background: var(--lc-vellum); cursor: pointer; transition: all 160ms ease;
}
.lc-wizard__card .lc-choices--check .lc-choice:hover { border-color: var(--lc-rule-2); background: var(--lc-sunk); box-shadow: 0 2px 8px rgb(15 26 24 / .04); }
.lc-wizard__card .lc-choices--check .lc-choice:has(input:checked) { border-color: var(--lc-petrol); background: var(--lc-petrol-wash); }
.lc-wizard__card .lc-choices--check .lc-choice__mark--box {
  width: 20px; height: 20px; border-radius: 6px; border: 1.5px solid var(--lc-rule-2);
  background: var(--lc-vellum); flex: none; transition: all 160ms ease;
}
.lc-wizard__card .lc-choices--check .lc-choice:has(input:checked) .lc-choice__mark--box {
  background: var(--lc-petrol); border-color: var(--lc-petrol);
  position: relative;
}
.lc-wizard__card .lc-choices--check .lc-choice:has(input:checked) .lc-choice__mark--box::after {
  content: ""; position: absolute; left: 5px; top: 2px;
  width: 5px; height: 9px;
  border: solid #fff; border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.lc-wizard__card .lc-choices--check .lc-choice input { position: absolute; opacity: 0; pointer-events: none; }
.lc-wizard__card .lc-choices--check .lc-choice__label { font-size: .8125rem; font-weight: 500; }

/* ===========================================================================
   Status tracker — timeline with dots, progress bar
   =========================================================================== */

/* width:100% is required: this page sits in a column flex main, and
   margin-inline:auto alone would shrink-wrap it to the buttons' max-content,
   which is what made the action row wrap into a staggered staircase. */
.lc-status-page {
  width: 100%; max-width: 640px; margin-inline: auto;
  padding: 1.35rem 1.5rem 2.5rem;
}
.lc-status-page--terminal {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: calc(100dvh - 9.5rem);
  padding-block: 2.25rem 2.75rem;
}
.lc-status-hero { text-align: center; margin-bottom: .85rem; }
.lc-status-page--terminal .lc-status-hero { margin-bottom: 1.35rem; }
.lc-status-hero__icon {
  width: 44px; height: 44px; border-radius: 12px; margin: 0 auto .65rem;
  display: flex; align-items: center; justify-content: center; font-size: 1.25rem;
  position: relative;
}
.lc-status-hero__icon--dominant {
  width: 5.25rem; height: 5.25rem; border-radius: 1.35rem; margin-bottom: 1rem;
  box-shadow: 0 10px 28px rgb(23 96 62 / .16);
}
.lc-status-hero__icon--live { background: var(--lc-petrol-wash); color: var(--lc-petrol-bright); }
.lc-status-hero__icon--pass { background: var(--lc-pass-wash); color: var(--lc-pass); }
.lc-status-hero__icon--hold { background: var(--lc-hold-wash); color: var(--lc-hold); }
.lc-status-hero__icon--fail { background: var(--lc-fail-wash); color: var(--lc-fail); }
.lc-status-hero__icon::after {
  content: ""; position: absolute; inset: -3px; border-radius: 15px;
  border: 1.5px solid currentColor; opacity: .28; animation: lc-ripple 2.5s ease-out infinite;
}
.lc-status-hero__icon--dominant::after {
  inset: -6px; border-radius: 1.65rem; border-width: 2px; opacity: .34;
}
@keyframes lc-ripple { 0% { opacity: .3; transform: scale(1); } 100% { opacity: 0; transform: scale(1.3); } }
.lc-status-hero__title {
  font-size: clamp(1.05rem, 2.4vw + .5rem, 1.35rem); font-weight: 700;
  letter-spacing: -.025em; margin: 0; line-height: 1.2;
  text-align: center;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 100%;
}
.lc-status-page--terminal .lc-status-hero__title {
  font-size: clamp(1.2rem, 2.8vw + .55rem, 1.55rem);
  white-space: normal; text-wrap: balance;
}
.lc-status-hero__sub {
  font-size: .8125rem; color: var(--lc-ink-2); margin: .25rem 0 0;
  text-align: center; text-wrap: pretty; line-height: 1.4;
}
.lc-status-page--terminal .lc-status-hero__sub {
  font-size: .875rem; margin-top: .4rem;
}
.lc-status-page .lc-status-note {
  max-width: none;
  margin: 0 0 .85rem;
}
.lc-status-note--compact {
  gap: .5rem; padding: .55rem .75rem; border-radius: 10px; align-items: flex-start;
}
.lc-status-note--compact .lc-status-note__icon { width: 16px; height: 16px; margin-top: .15rem; }
.lc-status-note--compact .lc-status-note__text {
  margin: 0; font-size: .75rem; line-height: 1.4;
}
.lc-status-note--compact .lc-status-note__text strong {
  display: inline; margin: 0 .25rem 0 0; font-weight: 700;
}

.lc-tracker {
  background: var(--lc-vellum); border: 1px solid var(--lc-rule); border-radius: 14px;
  box-shadow: 0 2px 8px rgb(15 26 24 / .06), 0 1px 3px rgb(15 26 24 / .04);
  padding: 1.25rem 1.15rem; margin-bottom: 1rem;
}
.lc-tracker__item {
  display: grid; grid-template-columns: 36px 1fr auto; gap: .75rem; align-items: start;
  padding-bottom: 1.1rem; position: relative;
}
.lc-tracker__item:last-child { padding-bottom: 0; }
.lc-tracker__item::before {
  content: ""; position: absolute; left: 17px; top: 36px; bottom: 0; width: 2px;
  background: var(--lc-rule); border-radius: 1px;
}
.lc-tracker__item:last-child::before { display: none; }
.lc-tracker__item--done::before { background: var(--lc-pass); }
.lc-tracker__dot {
  width: 36px; height: 36px; border-radius: 50%; flex: none; z-index: 1;
  display: flex; align-items: center; justify-content: center; font-size: .8125rem;
  border: 2px solid;
}
.lc-tracker__dot--done { background: var(--lc-pass); border-color: var(--lc-pass); color: #fff; }
.lc-tracker__dot--active { background: var(--lc-petrol); border-color: var(--lc-petrol); color: #fff; box-shadow: 0 0 0 3px var(--lc-petrol-wash); }
.lc-tracker__dot--pending { background: var(--lc-vellum); border-color: var(--lc-rule); color: var(--lc-ink-3); }
.lc-tracker__content { padding-top: .25rem; text-align: left; min-width: 0; }
.lc-tracker__title { font-size: .9375rem; font-weight: 700; text-align: left; }
.lc-tracker__title--pending { color: var(--lc-ink-3); font-weight: 500; }
.lc-tracker__desc { font-size: .8125rem; color: var(--lc-ink-2); margin-top: .15rem; line-height: 1.45; text-align: left; }
.lc-tracker__time { font-size: .6875rem; color: var(--lc-ink-3); font-family: var(--lc-mono); padding-top: .5rem; white-space: nowrap; }

.lc-tracker__progress { margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--lc-rule); }
.lc-tracker__progress-bar { height: 8px; background: var(--lc-sunk); border-radius: 4px; overflow: hidden; }
.lc-tracker__progress-fill {
  height: 100%; border-radius: 4px;
  background: linear-gradient(90deg, var(--lc-pass), var(--lc-petrol-bright));
  transition: width 600ms ease;
}
.lc-tracker__progress-text {
  font-size: .75rem; color: var(--lc-ink-3); margin-top: .5rem;
  display: flex; justify-content: space-between; font-family: var(--lc-mono);
}

/* Stack full-width so Greek labels never leave a half-row orphan; primary
   stays first, secondaries share equal height and edge alignment. */
.lc-status-actions {
  display: flex; flex-direction: column; gap: .65rem;
  margin-bottom: 0;
}
.lc-status-actions > .lc-btn {
  width: 100%; justify-content: center; text-align: center;
}

@media (max-width: 46rem) {
  .lc.applicant-channel:not(.applicant-home) > main.lc-shell:has(.lc-status-page) {
    width: 100%;
    max-width: none;
    padding-inline: .5rem;
    box-sizing: border-box;
  }
  .lc-status-page {
    max-width: none;
    width: 100%;
    padding: 1rem 0 1.75rem;
  }
  .lc-status-page--terminal {
    min-height: calc(100dvh - 8.5rem);
    padding-block: 1.75rem 2.25rem;
  }
  .lc-status-hero { margin-bottom: .7rem; }
  .lc-status-page--terminal .lc-status-hero { margin-bottom: 1.15rem; }
  .lc-status-hero__icon--dominant {
    width: 4.75rem; height: 4.75rem; border-radius: 1.2rem;
  }
  .lc-status-hero__title {
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
    text-wrap: balance;
  }
  .lc-tracker {
    border-radius: 12px;
    padding: 1.05rem .9rem;
  }
  .lc-status-page .lc-status-note--compact {
    margin-bottom: .7rem;
  }
}

/* Reference card */
.lc-ref-card {
  background: var(--lc-sunk); border: 1px solid var(--lc-rule); border-radius: 12px;
  padding: 1.1rem 1.25rem; margin-bottom: 1.25rem;
}
.lc-ref-card__title {
  font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
  color: var(--lc-ink-3); margin-bottom: .75rem;
}
.lc-ref-row {
  display: flex; justify-content: space-between; align-items: baseline; gap: 1rem;
  padding: .45rem 0; font-size: .8125rem; border-bottom: 1px solid var(--lc-rule);
}
.lc-ref-row:last-child { border-bottom: 0; }
.lc-ref-row__label { color: var(--lc-ink-3); text-align: left; flex: 1 1 auto; min-width: 0; }
.lc-ref-row__value { font-weight: 600; text-align: right; flex: 0 1 auto; min-width: 0; overflow-wrap: anywhere; }
.lc-ref-card--focus { border-color: var(--lc-petrol); box-shadow: 0 0 0 1px var(--lc-petrol-wash); }

/* Applicant data tables — same register as queue-table but scoped to the
   applicant channel so they read as part of the wizard card, not a legacy
   import. */
.lc-table-wrap { overflow-x: auto; }
.lc table.lc-data-table {
  width: 100%; border-collapse: collapse;
  font-size: var(--lc-t-small); font-variant-numeric: tabular-nums;
}
.lc-data-table th {
  text-align: left; white-space: nowrap; padding: .5rem .65rem;
  border-bottom: 2px solid var(--lc-rule-ink);
  font-size: var(--lc-t-micro); font-weight: 600; letter-spacing: .09em;
  text-transform: uppercase; color: var(--lc-ink-3);
}
.lc-data-table td { padding: .6rem .65rem; border-bottom: 1px solid var(--lc-rule); vertical-align: top; }
.lc-data-table tbody tr:hover td { background: var(--lc-paper); }

/* ===========================================================================
   Source data review — government data display
   =========================================================================== */

.lc-source-data {
  background: var(--lc-vellum); border: 1px solid var(--lc-rule); border-radius: 12px;
  box-shadow: 0 2px 8px rgb(15 26 24 / .06), 0 1px 3px rgb(15 26 24 / .04);
  padding: 1.25rem 1.35rem; margin-bottom: 1.25rem;
}
.lc-source-data__head {
  display: flex; align-items: flex-start; justify-content: space-between;
  margin-bottom: .85rem; flex-wrap: wrap; gap: .45rem;
}
.lc-source-data__title { font-size: 1.05rem; font-weight: 750; margin: 0; letter-spacing: -.01em; }
.lc-source-data__badge { margin-bottom: .3rem; display: inline-flex; }
.lc-source-data__time { font-size: .75rem; color: var(--lc-ink-3); }
.lc-source-data__boundary {
  font-size: .8125rem; color: var(--lc-ink-2); padding: .55rem 0;
  margin: 0 0 .35rem; border-bottom: 1px solid var(--lc-rule);
  background: none; border-radius: 0;
}
.lc-source-data__category { margin: 0; }
.lc-source-data__category + .lc-source-data__category { margin-top: .55rem; }
.lc-source-data__cat {
  font-size: .78rem; font-weight: 750; text-transform: uppercase; letter-spacing: .04em;
  color: var(--lc-petrol-deep); margin: 0 0 .35rem;
  padding: .45rem .65rem;
  background: color-mix(in srgb, var(--lc-petrol-wash) 88%, var(--lc-vellum));
  border: 1px solid color-mix(in srgb, var(--lc-petrol) 18%, var(--lc-rule));
  border-radius: 8px;
}
.lc-source-data__list {
  display: grid; grid-template-columns: 1fr 1fr; gap: .45rem .75rem;
  margin: 0; padding: 0; list-style: none;
}
@media (max-width: 30rem) { .lc-source-data__list { grid-template-columns: 1fr; } }
.lc-source-data__field {
  padding: .55rem 0; background: none; border-radius: 0;
  border-bottom: 1px solid var(--lc-rule);
}
.lc-source-data__field dt { font-size: .7rem; color: var(--lc-ink-3); margin-bottom: .1rem; }
.lc-source-data__field dd {
  margin: 0; font-size: .9375rem; font-weight: 650; font-family: inherit;
  color: var(--lc-ink); letter-spacing: -.01em;
}
.lc-source-data__facts { margin: 0; border-top: 1px solid var(--lc-rule); }
.lc-source-data__facts > div { padding: .55rem 0; }
.lc-source-data__facts dt { font-size: .75rem; }
.lc-source-data__facts dd {
  text-align: right; font-weight: 650; font-family: inherit;
  font-size: .9375rem; color: var(--lc-ink);
}

/* ===========================================================================
   Redesigned operator drawer
   =========================================================================== */

.lc .op-drawer {
  border: 0; padding: 0; background: none;
  max-width: 34rem; width: calc(100% - 2rem);
  margin: auto;
}
.lc .op-drawer::backdrop { background: rgb(20 26 25 / 50%); backdrop-filter: blur(4px); }
.lc .op-drawer__panel {
  border: 1px solid var(--lc-rule); border-radius: 14px;
  background: var(--lc-vellum); padding: 1.5rem;
  display: flex; flex-direction: column; gap: 1rem;
  box-shadow: 0 12px 40px rgb(15 26 24 / .15), 0 4px 12px rgb(15 26 24 / .08);
}
.lc .op-drawer__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.lc .op-drawer__header h2 { font-size: 1.125rem; font-weight: 700; letter-spacing: -.015em; margin: 0; }
.lc .op-drawer__meta {
  display: flex; flex-wrap: wrap; gap: .35rem .8rem; margin-top: .35rem;
  font-size: .75rem; color: var(--lc-ink-3);
}
.lc .op-drawer__close {
  border: 0; background: var(--lc-sunk); border-radius: 6px;
  width: 32px; height: 32px; font-size: 1.1rem; line-height: 1; cursor: pointer;
  color: var(--lc-ink-3); display: flex; align-items: center; justify-content: center;
  transition: background 120ms ease, color 120ms ease; flex: none;
}
.lc .op-drawer__close:hover { background: var(--lc-rule); color: var(--lc-ink); }

/* ===========================================================================
   Wizard entrance animations
   =========================================================================== */

.lc-wizard > * { animation: lc-fade-up 600ms cubic-bezier(.22,1,.36,1) both; }
.lc-wizard > *:nth-child(1) { animation-delay: 60ms; }
.lc-wizard > *:nth-child(2) { animation-delay: 160ms; }
.lc-wizard__card > * { animation: lc-fade-up 500ms cubic-bezier(.22,1,.36,1) both; }
.lc-wizard__card > *:nth-child(1) { animation-delay: 200ms; }
.lc-wizard__card > *:nth-child(2) { animation-delay: 280ms; }
.lc-wizard__card > *:nth-child(3) { animation-delay: 360ms; }
.lc-wizard__card > *:nth-child(4) { animation-delay: 440ms; }
.lc-wizard__card > *:nth-child(5) { animation-delay: 520ms; }

.lc-status-page > * { animation: lc-fade-up 600ms cubic-bezier(.22,1,.36,1) both; }
.lc-status-page > *:nth-child(1) { animation-delay: 60ms; }
.lc-status-page > *:nth-child(2) { animation-delay: 140ms; }
.lc-status-page > *:nth-child(3) { animation-delay: 220ms; }
.lc-status-page > *:nth-child(4) { animation-delay: 300ms; }
.lc-status-page > *:nth-child(5) { animation-delay: 380ms; }

.lc-error-card { animation: lc-fade-up 600ms cubic-bezier(.22,1,.36,1) both; }

@media (prefers-reduced-motion: reduce) {
  .lc-wizard > *, .lc-wizard__card > *, .lc-status-page > *, .lc-error-card,
  .lc-status-hero__icon::after { animation: none !important; }
}

/* ===========================================================================
   Filter button + modal — replaces left sidebar filters on all table screens
   =========================================================================== */

.lc-filter-toolbar {
  display: flex; align-items: center; gap: .6rem; flex-wrap: wrap;
  padding: .65rem .85rem; border-bottom: 1px solid var(--lc-rule);
  background: var(--lc-sunk);
}

.lc-filter-btn {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .35rem .75rem; border: 1px solid var(--lc-rule-2); border-radius: 6px;
  font-size: .75rem; font-weight: 600; color: var(--lc-ink-2);
  background: var(--lc-vellum); cursor: pointer; transition: all 140ms ease;
  text-decoration: none; white-space: nowrap;
}
.lc-filter-btn:hover { border-color: var(--lc-petrol); color: var(--lc-petrol); background: var(--lc-petrol-wash); }
.lc-filter-btn--active { border-color: var(--lc-petrol); color: var(--lc-petrol); background: var(--lc-petrol-wash); }
.lc-filter-btn__icon { display: flex; align-items: center; }
.lc-filter-btn__icon svg { width: 14px; height: 14px; }
.lc-filter-btn__count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 18px; height: 18px; padding: 0 .3rem;
  border-radius: 9px; background: var(--lc-petrol); color: #fff;
  font-size: .625rem; font-weight: 700; font-family: var(--lc-mono);
}
.lc-filter-btn--active .lc-filter-btn__count { background: var(--lc-petrol); }

.lc-filter-summary {
  display: flex; align-items: center; gap: .35rem; flex-wrap: wrap;
  font-size: .6875rem; color: var(--lc-ink-3); margin-left: auto;
}
.lc-filter-summary__tag {
  display: inline-flex; align-items: center; gap: .25rem;
  padding: .15rem .4rem; border-radius: 3px;
  background: var(--lc-vellum); border: 1px solid var(--lc-rule);
  font-size: .625rem; color: var(--lc-ink-2);
}
.lc-filter-summary__tag a {
  text-decoration: none; color: var(--lc-ink-3); font-size: .875rem;
  line-height: 1; margin-left: .15rem;
}
.lc-filter-summary__tag a:hover { color: var(--lc-fail); }
.lc-filter-summary__clear {
  font-size: .625rem; color: var(--lc-ink-3); text-decoration: none;
  border-bottom: 1px dotted var(--lc-ink-3);
}
.lc-filter-summary__clear:hover { color: var(--lc-fail); border-color: var(--lc-fail); }

/* Filter modal — uses <dialog> with op-drawer infrastructure */
.lc .lc-filter-modal {
  max-width: 28rem; width: calc(100% - 2rem); margin: auto;
}
.lc-filter-modal__panel {
  border: 1px solid var(--lc-rule); border-radius: 14px;
  background: var(--lc-vellum); padding: 0;
  box-shadow: 0 12px 40px rgb(15 26 24 / .15), 0 4px 12px rgb(15 26 24 / .08);
  display: flex; flex-direction: column;
}
.lc-filter-modal__header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 1.1rem 1.25rem .75rem; border-bottom: 1px solid var(--lc-rule);
}
.lc-filter-modal__header h2 { font-size: 1rem; font-weight: 700; margin: 0; letter-spacing: -.01em; }
.lc-filter-modal__close {
  border: 0; background: var(--lc-sunk); border-radius: 6px;
  width: 30px; height: 30px; font-size: 1.05rem; line-height: 1; cursor: pointer;
  color: var(--lc-ink-3); display: flex; align-items: center; justify-content: center;
  transition: background 120ms ease, color 120ms ease; flex: none;
}
.lc-filter-modal__close:hover { background: var(--lc-rule); color: var(--lc-ink); }

.lc-filter-modal__body { padding: 1rem 1.25rem; display: flex; flex-direction: column; gap: 1.25rem; }

.lc-filter-modal__group { display: flex; flex-direction: column; gap: .35rem; }
.lc-filter-modal__group-title {
  font-size: .625rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .08em; color: var(--lc-ink-3); margin-bottom: .25rem;
}
.lc-filter-modal__opt {
  display: flex; align-items: center; gap: .5rem; padding: .35rem .4rem;
  font-size: .75rem; color: var(--lc-ink-2); cursor: pointer;
  text-decoration: none; border-radius: 4px; transition: background 100ms ease;
}
.lc-filter-modal__opt:hover { background: var(--lc-sunk); color: var(--lc-ink); }
.lc-filter-modal__opt.active { color: var(--lc-petrol); font-weight: 600; }
.lc-filter-modal__opt__box {
  width: 14px; height: 14px; border: 1.5px solid var(--lc-rule-2); border-radius: 3px;
  flex-shrink: 0; transition: all 120ms ease; position: relative;
}
.lc-filter-modal__opt.active .lc-filter-modal__opt__box {
  background: var(--lc-petrol); border-color: var(--lc-petrol);
}
.lc-filter-modal__opt.active .lc-filter-modal__opt__box::after {
  content: ''; position: absolute; left: 3px; top: 0px;
  width: 4px; height: 8px; border: solid #fff; border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.lc-filter-modal__opt__n {
  margin-left: auto; font-family: var(--lc-mono); font-size: .625rem; color: var(--lc-ink-3);
}
.lc-filter-modal__opt__radio {
  width: 14px; height: 14px; border: 1.5px solid var(--lc-rule-2); border-radius: 50%;
  flex-shrink: 0; transition: all 120ms ease; position: relative;
}
.lc-filter-modal__opt.active .lc-filter-modal__opt__radio {
  border-color: var(--lc-petrol);
}
.lc-filter-modal__opt.active .lc-filter-modal__opt__radio::after {
  content: ''; position: absolute; left: 2px; top: 2px;
  width: 6px; height: 6px; border-radius: 50%; background: var(--lc-petrol);
}
.lc-filter-modal__none { font-size: .75rem; color: var(--lc-ink-3); padding: .25rem .4rem; }

.lc-filter-modal__footer {
  display: flex; align-items: center; justify-content: space-between; gap: .6rem;
  padding: .75rem 1.25rem 1.1rem; border-top: 1px solid var(--lc-rule);
}
/* Footer actions are real buttons in the system size family — the clear
   control was a dotted footnote and Apply was two sizes below every other
   primary action, so the pair read as decoration. */
.lc-filter-modal__clear {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 2.5rem; padding: .45rem .95rem;
  border: 1px solid var(--lc-rule); border-radius: 8px; background: transparent;
  font-size: .8125rem; font-weight: 600; color: var(--lc-ink-2); text-decoration: none;
  transition: color 140ms ease, border-color 140ms ease, background 140ms ease;
}
.lc-filter-modal__clear:hover { color: var(--lc-fail); border-color: var(--lc-fail); background: var(--lc-fail-wash); }
.lc-filter-modal__apply {
  display: inline-flex; align-items: center; justify-content: center; gap: .3rem;
  min-height: 2.5rem; padding: .5rem 1.15rem; border: 1px solid var(--lc-petrol); border-radius: 8px;
  font-size: .8125rem; font-weight: 600; color: #fff; background: var(--lc-petrol);
  cursor: pointer; transition: all 140ms ease; text-decoration: none;
}
.lc-filter-modal__apply:hover { background: var(--lc-petrol-dark, #1a6b6b); }
.lc-filter-modal__clear:focus-visible,
.lc-filter-modal__apply:focus-visible { outline: 2px solid var(--lc-petrol); outline-offset: 2px; }

/* Full-width table without sidebar */
.lc-op-queue-full { min-width: 0; display: flex; flex-direction: column; gap: .75rem; }

/* ===========================================================================
   Data review — record + decision rail split

   The review step is the one wizard screen whose job is comparison, not
   input. It widens the wizard so the state record sits next to the trust /
   confirm rail, keeping the acknowledgement and CTA in view while the
   applicant scans the returned values. Other steps keep the 560px measure.
   =========================================================================== */
.lc-wizard--review {
  max-width: min(62rem, 100%);
  width: 100%;
  align-items: stretch;
  padding-inline: 0;
}
.lc-wizard--review .lc-wizard__header {
  max-width: none; margin: 0 0 .85rem; text-align: left;
}
.lc-wizard--review .lc-wizard__lede { margin-left: 0; max-width: 40rem; }
.lc-wizard--review .lc-wizard__card { padding: 0; overflow: hidden; }

.lc-review {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(16rem, 19.5rem);
  align-items: stretch;
}

/* Left: the record the state returned */
.lc-review__record { padding: 1.15rem 1.25rem 1.35rem; min-width: 0; }
.lc-review__record .lc-source-data--record {
  border: none; box-shadow: none; padding: 0; margin: 0; background: none;
}
.lc-source-data__count { display: none; }
.lc-source-data__cat {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
}
.lc-review__record .lc-source-data__cat {
  margin-top: .7rem;
}
.lc-review__record .lc-source-data__category:first-of-type .lc-source-data__cat {
  margin-top: .15rem;
}

/* Right: trust + confirm rail */
.lc-review__side {
  position: sticky; top: 1rem;
  border-left: 1px solid var(--lc-rule);
  background: color-mix(in srgb, var(--lc-sunk) 38%, var(--lc-vellum));
  padding: 1.15rem 1.15rem 1.25rem;
  display: flex; flex-direction: column; gap: .85rem;
  align-self: stretch;
}
.lc-review__side-title {
  margin: 0 0 .55rem; font-size: .72rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .08em; color: var(--lc-ink-3);
}
.lc-review__trust { display: flex; flex-direction: column; gap: .55rem; }
.lc-review__trust .lc-status-note,
.lc-review__side .lc-status-note { margin: 0; max-width: none; }
.lc-review__form { display: flex; flex-direction: column; gap: .85rem; margin-top: auto; }
.lc-review__cta { display: flex; }
.lc-review__cta .lc-btn { width: 100%; justify-content: center; }
.lc-review__next {
  display: flex; flex-direction: column; gap: .55rem; margin-top: auto;
}
.lc-review__next .lc-btn { width: 100%; justify-content: center; }

/* Bottom sheet / next-step chooser after government data review. */
.lc-sheet {
  border: 0; padding: 0; background: transparent;
  width: min(28rem, calc(100vw - 1.25rem));
  max-width: calc(100vw - 1.25rem);
  margin: auto auto .75rem;
}
.lc-sheet::backdrop { background: rgb(20 26 25 / .45); backdrop-filter: blur(3px); }
.lc-sheet[open] { animation: lc-sheet-in 260ms cubic-bezier(.22, 1, .36, 1); }
@keyframes lc-sheet-in {
  from { opacity: 0; transform: translate3d(0, 1.25rem, 0); }
  to { opacity: 1; transform: none; }
}
.lc-sheet__panel {
  background: var(--lc-vellum);
  border: 1px solid var(--lc-rule);
  border-radius: 18px 18px 14px 14px;
  padding: .55rem 1.15rem 1.1rem;
  box-shadow: 0 18px 48px rgb(15 26 24 / .18);
  display: flex; flex-direction: column; gap: .65rem;
}
.lc-sheet__handle {
  width: 2.5rem; height: .28rem; border-radius: 99px;
  background: var(--lc-rule-2); margin: .15rem auto .25rem;
}
.lc-sheet__title {
  margin: 0; font-size: 1.05rem; font-weight: 750; letter-spacing: -.015em;
  text-align: center; color: var(--lc-ink);
}
.lc-sheet__body {
  margin: 0; text-align: center; color: var(--lc-ink-2);
  font-size: .875rem; line-height: 1.45;
}
.lc-sheet__actions {
  display: flex; flex-direction: column; gap: .5rem; margin-top: .25rem;
}
.lc-sheet__actions .lc-btn { width: 100%; justify-content: center; }
.lc-sheet__dismiss {
  appearance: none; border: 0; background: transparent; cursor: pointer;
  align-self: center; padding: .35rem .75rem;
  font: inherit; font-size: .8125rem; font-weight: 650; color: var(--lc-ink-3);
}
.lc-sheet__dismiss:hover { color: var(--lc-ink); }
@media (max-width: 46rem) {
  .lc-sheet {
    width: 100%;
    max-width: none;
    margin: auto 0 0;
    align-self: end;
  }
  .lc-sheet__panel {
    border-radius: 18px 18px 0 0;
    padding-bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
  }
}

@media (max-width: 56rem) {
  .lc.applicant-channel:not(.applicant-home) > main.lc-shell:has(.lc-wizard--review) {
    width: 100%;
    max-width: none;
    padding-inline: .45rem;
    box-sizing: border-box;
  }
  .lc-wizard--review {
    max-width: none;
    min-height: calc(100dvh - 8rem);
    padding-top: .75rem;
  }
  .lc-wizard--review .lc-wizard__card {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    max-height: calc(100dvh - 9.5rem);
  }
  .lc-wizard--review .lc-review {
    grid-template-columns: 1fr;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
  }
  .lc-review__record {
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 1rem .85rem;
  }
  .lc-review__side {
    position: sticky; bottom: 0; z-index: 2;
    border-left: none; border-top: 1px solid var(--lc-rule);
    padding: .85rem .85rem calc(.75rem + env(safe-area-inset-bottom, 0px));
    background: var(--lc-vellum);
  }
  .lc-review__trust .lc-status-note--live { display: none; }
  .lc-review__side-title { display: none; }
}

/* ===========================================================================
   Info modal — centered popup for access-denied / wrong-account notices
   =========================================================================== */

.lc-info-modal {
  max-width: min(30rem, calc(100vw - 2rem)); margin: auto;
  border: 0; padding: 0; background: transparent;
}
.lc-info-modal::backdrop { background: rgb(10 30 34 / 45%); backdrop-filter: blur(3px); }
.lc-info-modal__card {
  background: var(--lc-vellum);
  border: 1px solid var(--lc-rule); border-radius: 14px;
  padding: 2rem 2rem 1.5rem;
  box-shadow: 0 24px 48px -24px rgb(20 26 25 / .45);
  position: relative; overflow: hidden; text-align: left;
}
.lc-info-modal__card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px;
  background: linear-gradient(90deg, var(--lc-petrol-deep), var(--lc-petrol), var(--lc-petrol-bright));
}
.lc-info-modal__icon {
  width: 52px; height: 52px; border-radius: 14px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--lc-petrol-wash); color: var(--lc-petrol);
  margin-bottom: 1.25rem;
}
.lc-info-modal__icon svg { width: 26px; height: 26px; }
.lc-info-modal__title {
  font-size: 1.15rem; font-weight: 700; letter-spacing: -.015em;
  color: var(--lc-ink); margin: 0; text-wrap: balance;
}
.lc-info-modal__body {
  margin-top: .75rem; color: var(--lc-ink-2);
  font-size: .875rem; line-height: 1.6;
}
.lc-info-modal__guidance {
  margin-top: 1rem; padding: .85rem 1rem;
  background: var(--lc-petrol-wash); border: 1px solid rgb(10 75 87 / .12);
  border-radius: 10px;
  font-size: .8125rem; color: var(--lc-petrol-deep); line-height: 1.55;
}
.lc-info-modal__guidance strong { color: var(--lc-petrol-deep); }
.lc-info-modal__actions {
  display: flex; flex-wrap: wrap; gap: .6rem; justify-content: flex-end;
  margin-top: 1.5rem;
}

/* ===========================================================================
   Inline-style replacement utilities
   =========================================================================== */

/* Empty-state padding variants */
.lc-op-panel__body--pad-sm { padding: 1rem 1.25rem; }
.lc-op-panel__body--pad { padding: 1.25rem; }
.lc-op-panel__body--pad-lg { padding: 2.5rem 1.25rem; }
.empty-state--slim { padding: 1rem 1.25rem; }

/* SLA cell color variants */
.lc-sla-cell--breach { color: var(--lc-fail); font-weight: 600; }
.lc-sla-cell--warn { color: var(--lc-hold); font-weight: 600; }

/* Inline link with spacing */
.lc-inline-link { margin-left: .5rem; color: var(--lc-petrol); }

/* KPI card value — compact text */
.lc-op-kpi-card__value--compact { font-size: .875rem; letter-spacing: 0; }
.lc-op-kpi-card__delta--muted { color: var(--lc-ink-3); font-weight: 400; }

/* Analytics panel body padding */
.lc-op-panel__body--pad-analytics { padding: 1rem; }

/* Monitoring automation stack */
.lc-automation-stack { display: flex; flex-direction: column; gap: 1rem; }

/* PEP hold empty state */
.lc-pep-empty { text-align: center; }
.lc-pep-empty__icon { font-size: 2rem; margin-bottom: .5rem; opacity: .3; }

/* Wizard step inactive opacity */
.lc-wstep--inactive { opacity: .6; }

/* Inline form */
.lc-form--inline { display: inline; }

/* Mono font for ref values */
.lc-ref-row__value--mono { font-family: var(--lc-mono); }

/* Progress tracker spacing */
.lc-tracker__progress--spaced { margin-top: .85rem; padding-top: .85rem; }

/* Validation error summary spacing */
.lc-validation-summary { margin-bottom: 1.5rem; }

/* Auth/UBO card spacing */
.lc-portal-auth__title--spaced { margin-top: .6rem; }
.lc-portal-auth__error--spaced { margin-top: 1rem; }
.lc-portal-btn--block { width: 100%; }

/* Sequence list spacing */
.lc-seq--spaced { margin-top: .75rem; }

/* KPI row — 2 columns */
.lc-op-kpi-row--cols-2 { grid-template-columns: repeat(2, 1fr); }

/* ---- eligibility decision ------------------------------------------------ */
.lc-eligibility-blockers { border-left: 3px solid var(--lc-fail); margin-bottom: 1rem; }
.lc-eligibility-blockers__title { color: var(--lc-fail); }
.lc-eligibility-blockers__body { padding: .85rem 1rem; }
.lc-blockers {
  margin: 0; padding-left: 1.05rem; color: var(--lc-fail);
  font-size: var(--lc-t-small); display: flex; flex-direction: column; gap: .35rem;
}
.lc-eligibility-ready { border-left: 3px solid var(--lc-pass); }
.lc-eligibility-ready__body { padding: .85rem 1rem; }
.lc-eligibility-ready__body .lc-note--pass {
  border-left: 3px solid var(--lc-pass); padding: .1rem 0 .1rem 1rem;
  font-size: var(--lc-t-base); color: var(--lc-pass); font-weight: 600;
}

/* ---------------------------------------------------------------------------
   Greek display caps (html[lang="el"])
   All-caps Greek drops the tonos: ΚΑΤΑΣΤΑΣΗ, never ΚΑΤΆΣΤΑΣΗ. Browsers keep
   the accent when text-transform does the uppercasing, so for Greek the
   transform is switched off on every micro-label context and el-caps.js
   rewrites the text itself in accent-less caps. Without JS the labels render
   in title case — off-design, but never a wrong accent.
   Keep this list in sync with SELECTORS in public/js/el-caps.js.
   --------------------------------------------------------------------------- */
html[lang="el"] .lc-eyebrow,
html[lang="el"] .lc .eyebrow,
html[lang="el"] .lc-mast__sys,
html[lang="el"] .lc-env,
html[lang="el"] .lc-aside__t,
html[lang="el"] .lc-fgroup__t,
html[lang="el"] .lc-table thead th,
html[lang="el"] .lc .table th,
html[lang="el"] .lc-tally__k,
html[lang="el"] .lc .card-heading-row .card-kicker,
html[lang="el"] .lc-case-group,
html[lang="el"] .lc-case-stat__label,
html[lang="el"] .lc-op .audit-integrity__label,
html[lang="el"] .lc-op .audit-head__label,
html[lang="el"] .lc .audit-table th,
html[lang="el"] .lc .donut__caption,
html[lang="el"] .lc .ops-table th,
html[lang="el"] .lc-checks__badge,
html[lang="el"] .lc-error-card__eyebrow,
html[lang="el"] .lc-evidence-stats__label,
html[lang="el"] .lc-filter-modal__group-title,
html[lang="el"] .lc-gov-cat__title,
html[lang="el"] .lc-gov-field dt,
html[lang="el"] .lc-notice-card__badge,
html[lang="el"] .lc-op-data-table thead th,
html[lang="el"] .lc-op-fact-list dt,
html[lang="el"] .lc-op-kpi-card__label,
html[lang="el"] .lc-op-queue-filters__t,
html[lang="el"] .lc-op-sidebar__env,
html[lang="el"] .lc-portal-auth__or,
html[lang="el"] .lc-ref-card__title,
html[lang="el"] .lc-review__side-title,
html[lang="el"] .lc-source-data__cat,
html[lang="el"] .lc-wizard__section-label {
  text-transform: none;
}

/* ---- Sumsub evidence gallery ---------------------------------------------- */
.lc .sumsub-evidence-gallery { min-height: 2rem; }
.lc .sumsub-evidence-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr));
  gap: .75rem;
}
.lc .sumsub-evidence-thumb {
  display: flex; flex-direction: column; gap: .35rem; align-items: stretch;
  padding: .5rem; border: 1px solid var(--lc-rule); border-radius: 6px;
  background: var(--lc-vellum); cursor: pointer; transition: border-color .15s, box-shadow .15s;
}
.lc .sumsub-evidence-thumb:hover {
  border-color: var(--lc-petrol); box-shadow: 0 2px 8px rgb(0 0 0 / .08);
}
.lc .sumsub-evidence-thumb__img-wrap {
  aspect-ratio: 3/4; overflow: hidden; border-radius: 4px; background: var(--lc-sunk);
}
.lc .sumsub-evidence-thumb__img-wrap img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.lc .sumsub-evidence-thumb .lc-mark { font-size: var(--lc-t-micro); align-self: flex-start; }
.lc .sumsub-evidence-thumb .lc-sec__n { font-size: var(--lc-t-micro); }

/* Lightbox */
.lc .sumsub-lightbox {
  position: fixed; inset: 0; z-index: 9999; display: none;
  background: rgb(14 20 27 / .85); align-items: center; justify-content: center;
  padding: 2rem;
}
.lc .sumsub-lightbox--open { display: flex; }
.lc .sumsub-lightbox__close {
  position: absolute; top: 1rem; right: 1.5rem;
  background: none; border: 0; color: var(--lc-vellum); font-size: 2rem;
  cursor: pointer; line-height: 1; padding: .25rem .5rem;
}
.lc .sumsub-lightbox__close:hover { color: #fff; }
.lc .sumsub-lightbox__figure {
  margin: 0; max-width: 90vw; max-height: 85vh; display: flex; flex-direction: column; gap: .5rem;
  align-items: center;
}
.lc .sumsub-lightbox__img {
  max-width: 100%; max-height: 75vh; object-fit: contain; border-radius: 8px;
  box-shadow: 0 8px 32px rgb(0 0 0 / .3);
}
.lc .sumsub-lightbox__caption {
  color: var(--lc-vellum); font-size: var(--lc-t-small); text-align: center;
}

/* ---- Sumsub enriched evidence sections ------------------------------------ */
.lc .lc-sumsub-section {
  margin-bottom: 1rem; padding-bottom: .75rem;
  border-bottom: 1px solid var(--lc-rule);
}
.lc .lc-sumsub-section:last-child { border-bottom: 0; margin-bottom: 0; padding-bottom: 0; }
.lc .lc-sumsub-section__title {
  font-size: var(--lc-t-small); font-weight: 600; color: var(--lc-ink);
  margin: 0 0 .5rem; text-transform: uppercase; letter-spacing: .04em;
}
.lc .lc-sumsub-section--meta .lc-gov-field dt { min-width: 8rem; }
.lc .lc-gov-fields--compact { gap: .25rem .75rem; }
.lc .lc-gov-fields--compact .lc-gov-field dt { font-size: var(--lc-t-micro); }
.lc .lc-gov-fields--compact .lc-gov-field dd { font-size: var(--lc-t-small); }
.lc .lc-sumsub-review-badges { display: flex; gap: .5rem; flex-wrap: wrap; }
.lc .lc-sumsub-steps { display: flex; flex-direction: column; gap: .4rem; }
.lc .lc-sumsub-step { display: flex; align-items: center; gap: .5rem; }
.lc .lc-sumsub-step .lc-mark { font-size: var(--lc-t-micro); min-width: 4.5rem; justify-content: center; }
.lc .lc-sumsub-labels { display: flex; gap: .4rem; flex-wrap: wrap; }
.lc .lc-sumsub-docs { display: flex; flex-direction: column; gap: .6rem; }
.lc .lc-sumsub-doc {
  padding: .5rem .75rem; border: 1px solid var(--lc-rule); border-radius: 6px;
  background: var(--lc-vellum);
}
.lc .lc-sumsub-doc__type { display: flex; align-items: center; gap: .5rem; margin-bottom: .35rem; }

/* ---- Case detail redesign -------------------------------------------------- */
.lc .lc-case-hero {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 1rem; padding: 1.25rem 1.5rem; border-radius: 10px;
  border: 1px solid var(--lc-rule); background: var(--lc-vellum);
  margin-bottom: 1.25rem;
}
.lc .lc-case-hero--pass { border-left: 4px solid var(--lc-pass); background: linear-gradient(135deg, var(--lc-pass-wash) 0%, var(--lc-vellum) 60%); }
.lc .lc-case-hero--hold { border-left: 4px solid var(--lc-hold); background: linear-gradient(135deg, var(--lc-hold-wash) 0%, var(--lc-vellum) 60%); }
.lc .lc-case-hero--live { border-left: 4px solid var(--lc-petrol-bright); background: linear-gradient(135deg, var(--lc-petrol-wash) 0%, var(--lc-vellum) 60%); }
.lc .lc-case-hero--fail { border-left: 4px solid var(--lc-fail); background: linear-gradient(135deg, var(--lc-fail-wash) 0%, var(--lc-vellum) 60%); }
.lc .lc-case-hero__main { display: flex; flex-direction: column; gap: .35rem; }
.lc .lc-case-hero__state { display: flex; align-items: center; gap: .5rem; }
.lc .lc-case-hero__state-mark {
  width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0;
}
.lc .lc-case-hero--pass .lc-case-hero__state-mark { background: var(--lc-pass); }
.lc .lc-case-hero--hold .lc-case-hero__state-mark { background: var(--lc-hold); }
.lc .lc-case-hero--live .lc-case-hero__state-mark { background: var(--lc-petrol-bright); animation: lc-pulse 2s ease-in-out infinite; }
.lc .lc-case-hero--fail .lc-case-hero__state-mark { background: var(--lc-fail); }
@keyframes lc-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .4; } }
.lc .lc-case-hero__state-label { font-size: var(--lc-t-small); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--lc-ink); }
.lc .lc-case-hero__ref { font-size: 1.5rem; font-weight: 700; color: var(--lc-ink); margin: 0; font-family: var(--lc-mono); letter-spacing: -.02em; }
.lc .lc-case-hero__meta { display: flex; flex-wrap: wrap; gap: .75rem; font-size: var(--lc-t-micro); color: var(--lc-ink-3); }
.lc .lc-case-hero__actions { flex-shrink: 0; }

/* KPI cards */
.lc .lc-case-kpis {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(7rem, 1fr));
  gap: .5rem; margin-bottom: 1.25rem;
}
.lc .lc-case-kpi {
  display: flex; flex-direction: column; align-items: center; gap: .25rem;
  padding: .75rem .5rem; border: 1px solid var(--lc-rule); border-radius: 8px;
  background: var(--lc-vellum); text-align: center;
}
.lc .lc-case-kpi--pass { border-color: var(--lc-pass); background: var(--lc-pass-wash); }
.lc .lc-case-kpi--hold { border-color: var(--lc-hold); background: var(--lc-hold-wash); }
.lc .lc-case-kpi--fail { border-color: var(--lc-fail); background: var(--lc-fail-wash); }
.lc .lc-case-kpi__icon { color: var(--lc-ink-3); display: flex; }
.lc .lc-case-kpi__icon svg { width: 18px; height: 18px; }
.lc .lc-case-kpi--pass .lc-case-kpi__icon { color: var(--lc-pass); }
.lc .lc-case-kpi--hold .lc-case-kpi__icon { color: var(--lc-hold); }
.lc .lc-case-kpi--fail .lc-case-kpi__icon { color: var(--lc-fail); }
.lc .lc-case-kpi__value { font-size: 1.1rem; font-weight: 700; color: var(--lc-ink); line-height: 1.2; font-family: var(--lc-mono); }
.lc .lc-case-kpi--pass .lc-case-kpi__value { color: var(--lc-pass); }
.lc .lc-case-kpi--hold .lc-case-kpi__value { color: var(--lc-hold); }
.lc .lc-case-kpi--fail .lc-case-kpi__value { color: var(--lc-fail); }
.lc .lc-case-kpi__label { font-size: var(--lc-t-micro); color: var(--lc-ink-3); line-height: 1.2; }

/* Sections */
.lc .lc-case-section { margin-bottom: 1.5rem; }
.lc .lc-case-section__title {
  font-size: var(--lc-t-small); font-weight: 700; text-transform: uppercase;
  letter-spacing: .05em; color: var(--lc-ink-2); margin: 0 0 .5rem;
  padding-bottom: .35rem; border-bottom: 2px solid var(--lc-rule);
}

/* Case cards */
.lc .lc-case-card {
  border: 1px solid var(--lc-rule); border-radius: 8px; background: var(--lc-vellum);
  overflow: hidden; margin-bottom: .5rem;
}
.lc .lc-case-card--pass { border-left: 3px solid var(--lc-pass); }
.lc .lc-case-card--hold { border-left: 3px solid var(--lc-hold); }
.lc .lc-case-card--fail { border-left: 3px solid var(--lc-fail); }
.lc .lc-case-card--pending { border-left: 3px solid var(--lc-rule-2); }
.lc .lc-case-card--attention { border-left: 3px solid var(--lc-hold); background: var(--lc-hold-wash); }
.lc .lc-case-card--empty { padding: 1.5rem; text-align: center; }
.lc .lc-case-card__header {
  display: flex; flex-wrap: wrap; align-items: center; gap: .5rem;
  padding: .6rem .85rem; border-bottom: 1px solid var(--lc-rule);
  background: var(--lc-sunk);
}
.lc .lc-case-card__title { font-size: var(--lc-t-small); font-weight: 600; margin: 0; }
.lc .lc-case-card__body { padding: .85rem; }

/* IDV hero card */
.lc .lc-case-card__idv-hero { display: flex; flex-direction: column; gap: .75rem; padding: 1rem .85rem; }
.lc .lc-case-card__idv-status { display: flex; align-items: center; gap: .75rem; }
.lc .lc-case-card--pass .lc-case-card__idv-status svg { color: var(--lc-pass); }
.lc .lc-case-card--hold .lc-case-card__idv-status svg { color: var(--lc-hold); }
.lc .lc-case-card--pending .lc-case-card__idv-status svg { color: var(--lc-ink-3); }
.lc .lc-case-card__idv-outcome { font-size: 1.1rem; font-weight: 700; margin: 0; color: var(--lc-ink); }
.lc .lc-case-card--pass .lc-case-card__idv-outcome { color: var(--lc-pass); }
.lc .lc-case-card--hold .lc-case-card__idv-outcome { color: var(--lc-hold); }
.lc .lc-case-card__idv-detail { font-size: var(--lc-t-micro); color: var(--lc-ink-3); margin: 0; font-family: var(--lc-mono); }
.lc .lc-case-card__idv-meta { display: flex; flex-direction: column; gap: .25rem; padding-top: .5rem; border-top: 1px solid var(--lc-rule); }
.lc .lc-case-card__idv-session { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }

/* ---- Case workspace: next-action banner + tabs ---------------------------- */
.lc .lc-case-banner {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem;
  padding: 1rem 1.15rem; border: 1px solid var(--lc-rule); border-radius: 12px;
  background: var(--lc-vellum); margin-bottom: 1rem;
}
.lc .lc-case-banner--hold { border-left: 4px solid var(--lc-hold); background: linear-gradient(135deg, var(--lc-hold-wash), var(--lc-vellum) 70%); }
.lc .lc-case-banner--live { border-left: 4px solid var(--lc-petrol-bright); background: linear-gradient(135deg, var(--lc-petrol-wash), var(--lc-vellum) 70%); }
.lc .lc-case-banner--pass { border-left: 4px solid var(--lc-pass); background: linear-gradient(135deg, var(--lc-pass-wash), var(--lc-vellum) 70%); }
.lc .lc-case-banner--fail { border-left: 4px solid var(--lc-fail); background: linear-gradient(135deg, var(--lc-fail-wash), var(--lc-vellum) 70%); }
.lc .lc-case-banner__kicker {
  margin: 0 0 .2rem; font-size: .68rem; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; color: var(--lc-ink-3);
}
.lc .lc-case-banner__title { margin: 0 0 .25rem; font-size: 1.05rem; font-weight: 700; color: var(--lc-ink); }
.lc .lc-case-banner__body { margin: 0; font-size: var(--lc-t-small); color: var(--lc-ink-2); max-width: 40rem; line-height: 1.45; }
.lc .lc-case-banner__chips { display: flex; flex-wrap: wrap; gap: .35rem; list-style: none; margin: .65rem 0 0; padding: 0; }
.lc .lc-case-banner__chip {
  font-size: .68rem; font-weight: 650; padding: .2rem .5rem; border-radius: 999px;
  background: var(--lc-vellum); border: 1px solid var(--lc-rule); color: var(--lc-ink-2);
}
.lc .lc-case-banner__actions { flex: none; display: flex; align-items: center; }
.lc .lc-case-banner__waiting {
  font-size: var(--lc-t-small); font-weight: 650; color: var(--lc-ink-2);
  padding: .45rem .75rem; border-radius: 8px; background: rgb(255 255 255 / .65);
  border: 1px solid var(--lc-rule);
}

.lc .lc-case-tabs {
  display: flex; flex-wrap: wrap; gap: .25rem; margin: 0 0 1rem;
  border-bottom: 1px solid var(--lc-rule); padding-bottom: .15rem;
}
.lc .lc-case-tabs__tab {
  appearance: none; border: 0; background: transparent; cursor: pointer;
  padding: .55rem .85rem; font: inherit; font-size: var(--lc-t-small); font-weight: 650;
  color: var(--lc-ink-3); border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.lc .lc-case-tabs__tab:hover { color: var(--lc-ink); }
.lc .lc-case-tabs__tab.is-active {
  color: var(--lc-petrol); border-bottom-color: var(--lc-petrol);
}
.lc .lc-case-tabpanel[hidden] { display: none !important; }
.lc .lc-case-kpis--compact { margin-bottom: 1rem; }
.lc .lc-case-overview-status {
  display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(12rem, .8fr);
  gap: 1rem 1.25rem; margin: 0 0 1.15rem; padding: 1rem 1.1rem;
  border: 1px solid var(--lc-rule); border-radius: 12px; background: var(--lc-vellum);
}
.lc .lc-case-overview-status .lc-dec__t { margin: 0 0 .55rem; }
.lc .lc-case-overview-status__risk { padding-left: 1rem; border-left: 1px solid var(--lc-rule); }
@media (max-width: 52rem) {
  .lc .lc-case-overview-status { grid-template-columns: 1fr; }
  .lc .lc-case-overview-status__risk { padding-left: 0; border-left: 0; padding-top: .85rem; border-top: 1px solid var(--lc-rule); }
}
.lc .lc-case-snapshot {
  display: flex; flex-direction: column; gap: .85rem;
  margin-bottom: 1rem; padding: 1rem 1.1rem;
  border: 1px solid var(--lc-rule); border-radius: 12px; background: var(--lc-vellum);
}
.lc .lc-case-snapshot__eyebrow {
  margin: 0 0 .2rem; font-size: .68rem; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; color: var(--lc-ink-3);
}
.lc .lc-case-snapshot__name {
  margin: 0 0 .45rem; font-size: 1.25rem; font-weight: 750; letter-spacing: -.02em;
  color: var(--lc-ink); line-height: 1.25;
}
.lc .lc-case-snapshot__meta {
  display: flex; flex-wrap: wrap; align-items: center; gap: .45rem .75rem;
  margin: 0 0 .45rem; font-size: var(--lc-t-small); color: var(--lc-ink-2);
}
.lc .lc-case-snapshot__story {
  margin: 0; max-width: 42rem;
  font-size: var(--lc-t-small); color: var(--lc-ink-2); line-height: 1.45;
}
.lc .lc-case-snapshot__facts {
  margin: 0; padding-top: .85rem; border-top: 1px solid var(--lc-rule);
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem 1rem;
}
@media (max-width: 52rem) {
  .lc .lc-case-snapshot__facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 28rem) {
  .lc .lc-case-snapshot__facts { grid-template-columns: 1fr; }
}
.lc .lc-case-snapshot__facts > div { display: grid; gap: .15rem; min-width: 0; }
.lc .lc-case-snapshot__facts dt {
  margin: 0; font-size: .68rem; font-weight: 650;
  text-transform: uppercase; letter-spacing: .04em; color: var(--lc-ink-3);
}
.lc .lc-case-snapshot__facts dd {
  margin: 0; font-size: var(--lc-t-small); font-weight: 650;
  color: var(--lc-ink); line-height: 1.35; overflow-wrap: anywhere;
}
.lc .lc-case-snapshot__facts .lc-id {
  font-family: var(--lc-mono); font-size: .82em; font-weight: 600;
}
.lc .lc-case-decision { margin-bottom: .85rem; }
.lc .lc-case-decision__headline { margin: 0 0 .15rem; font-size: var(--lc-t-base); font-weight: 700; }
.lc .lc-case-decision__reason { margin: 0 0 .4rem; font-size: var(--lc-t-small); color: var(--lc-ink-2); }
.lc .lc-case-tech { margin-top: .35rem; font-size: var(--lc-t-small); color: var(--lc-ink-3); }
.lc .lc-case-tech summary { cursor: pointer; font-weight: 650; }
.lc .lc-case-sidebar__state { margin: 0 0 .35rem; }
.lc .lc-case-sidebar__story { margin: 0 0 .85rem; font-size: var(--lc-t-small); color: var(--lc-ink-2); line-height: 1.4; }
.lc .lc-case-full-flow { margin-top: 1rem; }

/* Journey path tab — step list + detail overview */
.lc .lc-path-summary {
  display: flex; flex-direction: column; gap: .75rem;
  margin-bottom: .85rem; padding: .85rem 1rem;
  border: 1px solid var(--lc-rule); border-radius: 12px; background: var(--lc-vellum);
}
.lc .lc-path-summary__top {
  display: flex; align-items: flex-start; justify-content: space-between; gap: .85rem 1.25rem;
}
.lc .lc-path-summary__main { min-width: 0; flex: 1 1 auto; }
.lc .lc-path-summary__eyebrow {
  margin: 0 0 .15rem; font-size: .68rem; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; color: var(--lc-ink-3);
}
.lc .lc-path-summary__title { margin: 0 0 .25rem; font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; }
.lc .lc-path-summary__story { margin: 0; font-size: var(--lc-t-small); color: var(--lc-ink-2); line-height: 1.4; max-width: 40rem; }
.lc .lc-path-summary__current {
  display: flex; flex-direction: column; align-items: flex-end; gap: .25rem; flex: 0 0 auto;
}
.lc .lc-path-summary__current-label {
  font-size: .62rem; font-weight: 650; text-transform: uppercase; letter-spacing: .05em; color: var(--lc-ink-3);
}
.lc .lc-path-summary__stats {
  margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem; padding-top: .7rem; border-top: 1px solid var(--lc-rule);
}
.lc .lc-path-summary__stats > div {
  display: flex; flex-direction: column; gap: .15rem;
  min-width: 0; padding: .45rem .6rem;
  border-radius: 8px; background: var(--lc-sunk);
}
.lc .lc-path-summary__stats dt {
  font-size: .62rem; font-weight: 650; text-transform: uppercase; letter-spacing: .04em; color: var(--lc-ink-3);
}
.lc .lc-path-summary__stats dd {
  margin: 0; font-size: .875rem; font-weight: 700; font-family: var(--lc-mono);
  letter-spacing: -.01em; line-height: 1.2;
}
.lc .lc-path-summary__stat--wide dd {
  font-size: .75rem; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lc .lc-path-hint { margin: 0 0 .85rem; font-size: var(--lc-t-small); color: var(--lc-ink-3); }
.lc .lc-path-layout {
  display: grid; grid-template-columns: minmax(14rem, 17rem) minmax(0, 1fr);
  gap: .85rem; align-items: start;
}
.lc .lc-path-steps {
  list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .25rem;
  max-height: min(70vh, 40rem); overflow: auto; padding-right: .15rem;
}
.lc .lc-path-step {
  appearance: none; width: 100%; text-align: left; cursor: pointer;
  display: grid; grid-template-columns: 1.6rem 1fr; gap: .45rem; align-items: start;
  padding: .55rem .65rem; border: 1px solid var(--lc-rule); border-radius: 10px;
  background: var(--lc-vellum); color: var(--lc-ink-2); font: inherit;
}
.lc .lc-path-step:hover { border-color: var(--lc-rule-2); color: var(--lc-ink); }
.lc .lc-path-step.is-selected {
  border-color: var(--lc-petrol); background: var(--lc-petrol-wash); color: var(--lc-ink);
  box-shadow: inset 0 -2px 0 var(--lc-petrol);
}
.lc .lc-path-step[data-state="done"] .lc-path-step__n { color: var(--lc-pass); }
.lc .lc-path-step[data-state="current"] .lc-path-step__n { color: var(--lc-petrol); font-weight: 700; }
.lc .lc-path-step[data-state="skipped"] { opacity: .45; }
.lc .lc-path-step__n { font-family: var(--lc-mono); font-size: .7rem; opacity: .75; padding-top: .1rem; }
.lc .lc-path-step__body { display: grid; gap: .1rem; min-width: 0; }
.lc .lc-path-step__t { font-size: var(--lc-t-small); font-weight: 650; line-height: 1.3; }
.lc .lc-path-step__status { font-size: .68rem; color: var(--lc-ink-3); }
.lc .lc-path-detail {
  border: 1px solid var(--lc-rule); border-radius: 12px; background: var(--lc-vellum);
  padding: 1rem 1.1rem; min-height: 16rem;
}
.lc .lc-path-detail__panel[hidden] { display: none !important; }
.lc .lc-path-detail__eyebrow {
  margin: 0 0 .2rem; font-size: .68rem; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; color: var(--lc-ink-3);
}
.lc .lc-path-detail__title { margin: 0 0 .4rem; font-size: 1.15rem; font-weight: 750; }
.lc .lc-path-detail__meta { display: flex; flex-wrap: wrap; gap: .45rem .7rem; align-items: center; margin: 0 0 .55rem; }
.lc .lc-path-detail__story { margin: 0 0 .9rem; font-size: var(--lc-t-small); color: var(--lc-ink-2); line-height: 1.45; }
.lc .lc-path-detail__signals { display: grid; gap: .7rem; margin-bottom: .9rem; }
.lc .lc-path-signal {
  border: 1px solid var(--lc-rule); border-radius: 10px; padding: .7rem .8rem; background: var(--lc-sunk);
}
.lc .lc-path-signal--muted { background: transparent; }
.lc .lc-path-signal__t { margin: 0 0 .4rem; font-size: var(--lc-t-small); font-weight: 700; }
.lc .lc-path-signal__line { margin: 0; font-size: var(--lc-t-small); color: var(--lc-ink-2); }
.lc .lc-path-audit { list-style: none; margin: 0; padding: 0; display: grid; gap: .35rem; }
.lc .lc-path-audit li {
  display: grid; grid-template-columns: minmax(7rem, auto) minmax(0, 1fr) auto;
  gap: .35rem .55rem; font-size: .72rem; align-items: baseline;
}
.lc .lc-path-audit__when { color: var(--lc-ink-3); font-family: var(--lc-mono); }
.lc .lc-path-audit__what { min-width: 0; overflow-wrap: anywhere; }
.lc .lc-path-audit__who { color: var(--lc-ink-3); }
.lc .lc-path-detail__actions { display: flex; flex-wrap: wrap; gap: .45rem; }
@media (max-width: 52rem) {
  .lc .lc-path-layout { grid-template-columns: 1fr; }
  .lc .lc-path-summary__top { flex-direction: column; align-items: stretch; }
  .lc .lc-path-summary__current { align-items: flex-start; }
  .lc .lc-path-summary__stats { grid-template-columns: 1fr 1fr; }
  .lc .lc-path-summary__stat--wide { grid-column: 1 / -1; }
  .lc .lc-path-steps { max-height: none; }
  .lc .lc-path-audit li { grid-template-columns: 1fr; }
}
@media (max-width: 30rem) {
  .lc .lc-path-summary__stats { grid-template-columns: 1fr; }
  .lc .lc-path-summary__stat--wide { grid-column: auto; }
}
@media (max-width: 40rem) {
  .lc .lc-case-banner { flex-direction: column; }
  .lc .lc-case-tabs__tab { padding: .5rem .65rem; }
}
