/**
 * LieferantenCheck front end.
 *
 * Scoped to .lc- classes so it layers over whatever theme is active — Twenty
 * Twenty-Five now, Divi later — without fighting it. Colour is used sparingly
 * and never as the only carrier of meaning: severity is always stated in words
 * as well, because a warning that depends on seeing red is not a warning.
 */

.lc-main {
	max-width: 52rem;
	margin: 0 auto;
	padding: 2rem 1.25rem 4rem;
}

/* --- Severity banner --------------------------------------------------- */

.lc-banner {
	border-left: 4px solid currentColor;
	padding: 1rem 1.25rem;
	margin: 0 0 2rem;
	border-radius: 0 4px 4px 0;
}

.lc-banner__label {
	font-weight: 700;
	margin: 0 0 0.35rem;
	font-size: 1.0625rem;
}

.lc-banner__blurb {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.5;
}

.lc-banner--strong-evidence {
	color: #8a1c1c;
	background: #fdf2f2;
}

.lc-banner--caution {
	color: #8a5a00;
	background: #fff8ec;
}

.lc-banner--unverified {
	color: #3d4852;
	background: #f4f5f7;
}

/* --- Part-number landing page ------------------------------------------ */

.lc-part__eyebrow {
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-size: 0.75rem;
	font-weight: 700;
	opacity: 0.7;
	margin: 0 0 0.5rem;
}

.lc-part__code {
	font-size: clamp(1.75rem, 5vw, 2.75rem);
	margin: 0 0 1rem;
	word-break: break-word;
}

.lc-part__code code,
.lc-term__name code {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	background: none;
	padding: 0;
}

.lc-part__verdict {
	font-size: 1.125rem;
	line-height: 1.6;
	margin: 0 0 0.75rem;
}

.lc-part__action {
	font-weight: 700;
	margin: 0 0 2rem;
}

.lc-part__case {
	border-top: 1px solid rgba(0, 0, 0, 0.12);
	padding-top: 1.5rem;
	margin-top: 1.5rem;
}

/* --- Verified facts ---------------------------------------------------- */

.lc-facts {
	margin: 2.5rem 0;
}

.lc-facts__intro {
	font-size: 0.9375rem;
	opacity: 0.8;
	margin: 0 0 1.25rem;
}

/* `!important` is deliberate and narrow. Divi styles lists through
   `#left-area ol` — an ID selector, so specificity 1-0-1 — which no practical
   class selector can outrank. Left alone it re-adds decimal markers to lists
   that already draw their own numbers (the warning signs render "1 1.") and
   forces `list-style-position: inside`, which drops the marker onto its own
   line above any block-level first child. These four lists are the plugin's
   own components; defending them from a global theme rule is the correct use
   of the escape hatch. */
.lc-facts__list,
.lc-flags__list,
.lc-parts__list,
.lc-cases {
	list-style: none !important;
	margin: 0;
	padding: 0 !important;
}

.lc-fact {
	border: 1px solid rgba(0, 0, 0, 0.12);
	border-radius: 6px;
	padding: 1rem 1.25rem;
	margin: 0 0 0.75rem;
}

.lc-fact--high {
	border-left: 4px solid #8a1c1c;
}

.lc-fact--medium {
	border-left: 4px solid #b5760a;
}

.lc-fact--context {
	border-left: 4px solid rgba(0, 0, 0, 0.25);
}

.lc-fact__label {
	font-size: 1rem;
	margin: 0 0 0.35rem;
}

.lc-fact__subject {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 0.8125rem;
	opacity: 0.7;
	margin: 0 0 0.5rem;
	word-break: break-all;
}

.lc-fact__value {
	font-weight: 600;
	margin: 0 0 0.4rem;
}

.lc-fact__detail {
	margin: 0;
	line-height: 1.6;
	font-size: 0.9375rem;
}

.lc-fact__source {
	margin: 0.6rem 0 0;
	font-size: 0.8125rem;
	opacity: 0.7;
}

.lc-fact__source-label {
	font-weight: 600;
}

.lc-facts__verified {
	font-size: 0.8125rem;
	opacity: 0.7;
	margin: 1rem 0 0;
}

/* --- Assessment -------------------------------------------------------- */

/* Visually distinct from the facts block on purpose: readers must be able to
   tell at a glance where records stop and interpretation starts. */
.lc-assessment {
	margin: 2.5rem 0;
	padding: 1.25rem 1.5rem;
	background: rgba(0, 0, 0, 0.03);
	border-radius: 6px;
}

.lc-assessment__disclaimer {
	font-size: 0.875rem;
	font-style: italic;
	opacity: 0.85;
	margin: 0 0 1rem;
}

.lc-assessment__body p {
	line-height: 1.65;
}

/* --- Red flags --------------------------------------------------------- */

.lc-flags {
	margin: 2.5rem 0;
}

.lc-flags__list {
	counter-reset: lc-flag;
}

.lc-flag {
	counter-increment: lc-flag;
	padding: 0 0 0 2.5rem;
	position: relative;
	margin: 0 0 1.25rem;
}

.lc-flag::before {
	content: counter(lc-flag);
	position: absolute;
	left: 0;
	top: 0;
	width: 1.75rem;
	height: 1.75rem;
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.08);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0.8125rem;
	font-weight: 700;
}

.lc-flag__title {
	font-size: 1rem;
	margin: 0 0 0.3rem;
}

.lc-flag__detail {
	margin: 0;
	line-height: 1.6;
	font-size: 0.9375rem;
}

/* --- Part links, cases, correction ------------------------------------- */

.lc-parts__list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.lc-parts__item a {
	display: inline-block;
	padding: 0.4rem 0.75rem;
	border: 1px solid rgba(0, 0, 0, 0.2);
	border-radius: 4px;
	text-decoration: none;
}

.lc-case {
	margin: 0 0 1.25rem;
}

.lc-case__link {
	font-weight: 600;
}

.lc-case__excerpt {
	margin: 0.25rem 0 0;
	font-size: 0.9375rem;
	line-height: 1.55;
}

.lc-correction {
	margin: 3rem 0 0;
	padding: 1.25rem 1.5rem;
	border: 1px dashed rgba(0, 0, 0, 0.25);
	border-radius: 6px;
	font-size: 0.9375rem;
}

.lc-correction__heading {
	font-size: 1rem;
	margin: 0 0 0.5rem;
}

/* --- Lookup results panel ---------------------------------------------- */

/* The lookup is placed by whoever builds the page, and on this site that means
   the hero: a dark photographic band with centred, light-on-dark type. Every
   result element inherited from that context and rendered dark text on a dark
   background — unreadable, and indistinguishable from a broken site.

   The panel therefore declares its own colours instead of inheriting them.
   Headings are set explicitly because a bare `h2` rule in a theme beats
   inheritance, and `text-align` is reset because a centred hero would otherwise
   centre a registry table and a six-item checklist. */

.lc-results {
	background: #ffffff;
	color: #1c2c3d;
	border: 1px solid rgba(28, 44, 61, 0.18);
	border-radius: 8px;
	padding: 1.75rem;
	margin: 0 0 2rem;
	text-align: left;
}

.lc-results h2,
.lc-results h3,
.lc-results p,
.lc-results li,
.lc-results strong,
.lc-results code,
.lc-results th,
.lc-results td,
.lc-results caption,
.lc-results label {
	color: #1c2c3d;
}

.lc-results a {
	color: #0b4f8a;
}

.lc-results a:hover,
.lc-results a:focus {
	color: #08365e;
}

/* Divi centres and re-sizes headings inside its modules; inside the panel the
   plugin's own scale applies. */
.lc-results h2 {
	text-align: left;
	font-size: 1.25rem;
	line-height: 1.35;
}

.lc-results h3 {
	text-align: left;
	font-size: 1.05rem;
	line-height: 1.4;
}

.lc-results > *:last-child,
.lc-results .lc-flags {
	margin-bottom: 0;
}

/* --- Lookup ------------------------------------------------------------ */

.lc-lookup {
	margin: 0 0 2rem;
}

.lc-lookup__label {
	display: block;
	font-weight: 600;
	margin: 0 0 0.5rem;
}

.lc-lookup__row {
	display: flex;
	gap: 0.5rem;
	flex-wrap: wrap;
}

.lc-lookup__input {
	flex: 1 1 16rem;
	padding: 0.7rem 0.9rem;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 1rem;
	border: 2px solid rgba(0, 0, 0, 0.3);
	border-radius: 4px;
}

.lc-lookup__submit,
.lc-report__submit {
	padding: 0.7rem 1.5rem;
	font-size: 1rem;
	font-weight: 600;
	border: 0;
	border-radius: 4px;
	background: #1c2c3d;
	color: #fff;
	cursor: pointer;
}

.lc-lookup__miss {
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-radius: 6px;
	padding: 1.25rem 1.5rem;
	margin: 0 0 2rem;
}

.lc-lookup__miss-heading {
	font-size: 1.125rem;
	margin: 0 0 0.75rem;
}

/* Sits above the heading when an address was typed and its domain is what got
   checked. Small and quiet on purpose: it is orientation, not a finding, and it
   must not compete with the h2 it explains. */
.lc-lookup__miss-lead {
	margin: 0 0 0.5rem;
	font-size: 0.9375rem;
	line-height: 1.6;
	opacity: 0.85;
}

/* A registry answer promoted to the page's finding brings the record with it,
   so the domain-check furniture now renders inside this block as well as inside
   its own. It used to get its spacing from `.lc-domain-check__result p`, which
   is no longer an ancestor here. */
.lc-lookup__miss p {
	margin: 0 0 0.5rem;
	line-height: 1.6;
}

.lc-lookup__miss > p:last-child {
	margin-bottom: 0;
}

.lc-lookup__miss .lc-domain-check__table {
	margin-top: 0.25rem;
}

/* Where the live search answered, its finding is the heading and the block is
   tinted to match. The colour is the only thing that survives being skim-read,
   so it must not overstate: `ordinary` is deliberately neutral grey-green
   rather than a green tick, because a real part number is not a clean bill of
   health for the person who sent it. */
.lc-lookup__miss--alarm {
	border-left: 4px solid #a02020;
}

.lc-lookup__miss--thin {
	border-left: 4px solid #b5760a;
}

.lc-lookup__miss--ordinary {
	border-left: 4px solid #4a7c59;
}

/* A miss is the most dangerous moment on the site: the visitor is primed to
   read silence as clearance. Give the caveat the same weight as a warning. */
.lc-lookup__miss-warning {
	margin: 0;
	line-height: 1.6;
	border-left: 4px solid #b5760a;
	padding-left: 1rem;
}

/* Our own database, demoted. This used to be the h2 — the page opened by
   announcing we knew nothing and then listed eight distributors, which read as
   the site contradicting itself. It is still stated, because a visitor must
   never infer that our silence is a clearance; it is no longer the answer. */
.lc-lookup__miss-note {
	margin: 1rem 0 0;
	font-size: 0.9375rem;
	line-height: 1.6;
	opacity: 0.85;
}

.lc-lookup__miss-warning + .lc-lookup__miss-note {
	padding-left: 1rem;
}

.lc-lookup__hit {
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-left: 4px solid #a02020;
	border-radius: 6px;
	padding: 1.25rem 1.5rem;
	margin: 0 0 2rem;
}

.lc-lookup__hit-heading {
	font-size: 1.125rem;
	margin: 0 0 0.75rem;
}

/* --- Self-check --------------------------------------------------------- */

/* The database is small and always will be, so this block carries most of the
   page's actual value: two checks the visitor can run on any code and any
   supplier, neither of which needs us to have heard of the campaign. */

.lc-selfcheck {
	margin: 0 0 2.5rem;
}

.lc-selfcheck__heading {
	font-size: 1.25rem;
	margin: 0 0 1rem;
}

/* Numbered, with the marker in the gutter. Divi's `list-style-position: inside`
   would otherwise put "1." on a line of its own above the step heading. */
.lc-selfcheck__steps {
	list-style-type: decimal !important;
	list-style-position: outside !important;
	margin: 0;
	padding: 0 0 0 1.75rem !important;
}

/* No colour. `.lc-selfcheck` paints no background of its own, so a named ink
   here is ink on whatever is behind it — the `.lc-host-check` fault, one
   property along and currently invisible only because the theme happens to
   override this exact selector from a file that loads later. Remove that rule
   and the step numerals go dark-on-dark.

   `color` is inherited by `::marker`, and the value it inherits is right under
   both stylesheets: `#1c2c3d` from this file's own white panel, the scheme-aware
   token under the theme. Dropping the declaration changes nothing on either
   site and stops the plugin depending on the theme to be legible. */
.lc-selfcheck__steps > li::marker {
	font-weight: 600;
}

.lc-selfcheck__step {
	margin: 0 0 2rem;
	padding-left: 0.25rem;
}

.lc-selfcheck__step-title {
	font-size: 1.05rem;
	margin: 0 0 0.4rem;
}

.lc-selfcheck__step-hint {
	margin: 0 0 0.75rem;
	line-height: 1.6;
}

.lc-selfcheck__links {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0 0 0.75rem;
}

.lc-selfcheck__engine {
	display: inline-block;
	padding: 0.45rem 1rem;
	border: 1px solid rgba(0, 0, 0, 0.3);
	border-radius: 4px;
	text-decoration: none;
	font-weight: 600;
}

.lc-selfcheck__engine:hover,
.lc-selfcheck__engine:focus {
	border-color: #1c2c3d;
	background: rgba(28, 44, 61, 0.06);
}

.lc-selfcheck__step-read {
	margin: 0;
	line-height: 1.6;
	font-size: 0.9375rem;
}

/* --- Search check ------------------------------------------------------- */

/* The verdict from the live exact-phrase search. Every colour here is stated
   rather than inherited: the lookup can sit in the dark hero (#16202b), and a
   block that inherits its heading colour there renders dark on dark. */

/* Spaced as a top-level answer, not as a note inside a list step. It sits
   directly under the "no record" line it corrects and above the self-check,
   so it needs to read as the page's finding rather than as an aside. */
.lc-search-check {
	background: #fff;
	color: #1c2c3d;
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-left-width: 4px;
	border-radius: 6px;
	padding: 1.15rem 1.35rem;
	margin: 0 0 2.25rem;
}


.lc-search-check p {
	margin: 0 0 0.6rem;
	line-height: 1.6;
}

.lc-search-check p:last-child {
	margin-bottom: 0;
}

/* Colours are forced with a doubled class, and the reason is worth recording.
   The theme's lc-components.css is enqueued *after* this file and carries
   `.lc-results p { color: var(--lc-fg-soft) }` and `.lc-results a { ... }` at
   exactly the specificity these rules would otherwise have (0,0,1,1). Equal
   specificity is decided by source order, so the theme won and the verdict
   rendered in a grey chosen for the dark page background — on this light panel
   it was barely readable. Doubling the block class lifts these to (0,0,2,1),
   which wins outright without reaching for `!important` and starting an arms
   race the theme can always escalate. Anything printed inside this panel needs
   to be listed here; inheriting is what broke it. */
.lc-search-check.lc-search-check p,
.lc-search-check.lc-search-check strong,
.lc-search-check.lc-search-check span,
.lc-search-check.lc-search-check code {
	color: #1c2c3d;
}

.lc-search-check.lc-search-check .lc-search-check__source,
.lc-search-check.lc-search-check .lc-search-check__source code {
	color: #4a5a6a;
}

.lc-search-check.lc-search-check a.lc-search-check__seller,
.lc-search-check.lc-search-check a.lc-search-check__document {
	color: #1c4f8a;
}

/* The sentence under the heading: what the finding means. Set slightly larger
   than the rest of the panel because on a miss this is the first thing after
   the h2, and it is where the actual reasoning lives. */
.lc-search-check__detail {
	font-size: 1.0625rem;
}

/* One seller, or none at all — the shape this site exists to document. */
.lc-search-check--alarm {
	border-left-color: #a32020;
	background: #fdf6f6;
}

/* Two or three. Unusual, but not on its own the pattern. */
.lc-search-check--thin {
	border-left-color: #b57d1a;
	background: #fdfaf4;
}

/* Several independent sellers: an ordinary catalogue part. */
.lc-search-check--ordinary {
	border-left-color: #2b6b3f;
	background: #f6faf7;
}

.lc-search-check__label {
	font-weight: 600;
}

.lc-search-check__sellers,
.lc-search-check__documents,
.lc-search-check__enquiries {
	font-size: 0.9375rem;
}

.lc-search-check__seller,
.lc-search-check__document {
	color: #1c4f8a;
	text-decoration: underline;
	word-break: break-word;
}

.lc-search-check__source {
	font-size: 0.875rem;
	color: #4a5a6a;
}

/* --- Host check ---------------------------------------------------------- */

/* Renders into the domain enrich slot, underneath the public-record table, so
   it inherits that slot's surroundings and needs no card of its own — only a
   rule separating it from the table above.

   **Having no card is exactly why it must not name a colour.** Every other
   block in this file that hard-codes `#1c2c3d` also paints itself `#fff` or
   `#fdf6f6`, so the ink and the surface that justifies it travel together. This
   one paints nothing, so a named ink is ink on whatever happens to be behind
   it — and what is behind it is not fixed. Standalone, `.lc-results` above is
   this file's white panel and the ink is right; under the theme,
   `lc-components.css` loads later and answers that panel with
   `background: none` plus a scheme-aware `color`, which in the dark scheme puts
   `#1c2c3d` on `#10202f`. **Measured at 1.16:1** — heading, labels, values,
   reading and abuse line, the whole block gone, while the code computing it
   worked perfectly.

   So it derives from its surroundings the way `.lc-lang` does at the foot of
   this file, and for the same reason: a block that cannot see its background
   must not hold an opinion about it. Both stylesheets set a colour on
   `.lc-results` itself, so inheriting is correct under either.

   `--unresolved` below keeps its declarations. It does paint. */
.lc-host-check {
	margin: 1.25rem 0 0;
	padding: 1rem 0 0;
	/* Mid-grey with alpha, not `rgba(0, 0, 0, .12)`: a black rule on the dark
	   scheme is the same bug one property along, and a missing 1px separator is
	   harder to notice than unreadable text. One neutral value reads as a quiet
	   rule on white and on #10202f, which is what a separator with no opinion
	   about its background needs. */
	border-top: 1px solid rgba(128, 128, 128, 0.35);
}

.lc-host-check p {
	margin: 0 0 0.5rem;
	line-height: 1.6;
}

.lc-host-check p:last-child {
	margin-bottom: 0;
}

/* Scoped to `--unresolved`, and that scope is the fix.

   This was written as `.lc-host-check.lc-host-check p, dt, dd, span, code`,
   copied from `.lc-sellers` below, where the doubled class is right: that block
   paints itself white, so it has to out-specify the theme's `.lc-results p` or
   its own card goes light-on-light. Copying it here inverted the intent —
   the ordinary block has no card, so out-specifying the theme is precisely how
   it ends up as ink on the dark scheme's page.

   `--unresolved` is the one branch that really does paint (`#fdf6f6`), so it is
   the one branch that really does need to win. Everything else in this block now
   inherits. */
.lc-host-check--unresolved.lc-host-check--unresolved h3,
.lc-host-check--unresolved.lc-host-check--unresolved p,
.lc-host-check--unresolved.lc-host-check--unresolved dt,
.lc-host-check--unresolved.lc-host-check--unresolved dd,
.lc-host-check--unresolved.lc-host-check--unresolved span,
.lc-host-check--unresolved.lc-host-check--unresolved code {
	color: #1c2c3d;
}

.lc-host-check__heading {
	font-size: 1rem;
	font-weight: 600;
	margin: 0 0 0.6rem;
}

/* Label beside value, not above it. Unlike the seller expander this is not
   inside a narrow table cell, and there are at most four rows — so a two-column
   grid reads faster and a network name is short enough to sit next to its
   label. Collapses to one column where there is no room. */
.lc-host-check__facts {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.3rem 0.9rem;
	margin: 0 0 0.75rem;
	font-size: 0.9375rem;
}

@media (max-width: 30rem) {
	.lc-host-check__facts {
		grid-template-columns: 1fr;
		gap: 0.1rem;
	}

	.lc-host-check__facts dt {
		margin-top: 0.4rem;
	}
}

.lc-host-check.lc-host-check .lc-host-check__facts dt {
	font-weight: 600;
	margin: 0;
}

.lc-host-check.lc-host-check .lc-host-check__facts dd {
	margin: 0;
	/* Operator names run long — RIPE returns "Robert Meyer trading as
	   \"Mittwald CM Service GmbH & Co. KG\"" as a single unbreakable string. */
	word-break: break-word;
}

/* There is no tone class on this block and that is the point: hosting is a
   fact, not a finding. A German supplier on a server in Lithuania is ordinary,
   so a coloured edge here would turn a reseller's choice of host into an
   accusation. The one exception is a name that does not resolve at all. */
.lc-host-check--unresolved {
	border-left: 4px solid #a32020;
	border-top: 0;
	padding: 0.85rem 1.1rem;
	margin-top: 1.25rem;
	background: #fdf6f6;
	border-radius: 0 6px 6px 0;
}

.lc-host-check__reading {
	font-size: 0.9375rem;
}

/* The one line on this page that tells somebody already defrauded what to do
   next, rather than helping them decide. */
.lc-host-check__abuse {
	font-size: 0.9375rem;
}

/* Quieter than the body, derived rather than named — same argument as the block
   itself. `#4a5a6a` was 2.33:1 on the dark scheme.

   The doubled class stays: `.lc-results p` from the theme is 0,1,1 and would
   otherwise take this line back to full body colour, losing the one thing the
   rule is for. `color: inherit` picks up whichever scheme-aware value the panel
   resolved, and the alpha does the quietening. On this file's own white panel
   that composites to rgb(74, 90, 106) — the value it replaces, exactly — so the
   light rendering is unchanged and only the dark one moves, to 8.9:1. */
.lc-host-check.lc-host-check .lc-host-check__source {
	font-size: 0.875rem;
	color: inherit;
	opacity: 0.78;
}

/* --- Seller panel and dialog ---------------------------------------------- */

/* The panel body. Inside the `<details>` it is a block in a table cell; inside
   the dialog it is the whole content. Same markup either way — lc-sellers.js
   moves this element rather than copying it, so the DOM never holds two answers
   for one seller. */
.lc-sellers__panel {
	margin: 0.5rem 0 0;
	padding: 0.5rem 0 0;
	border-top: 1px solid rgba(0, 0, 0, 0.12);
	font-weight: 400;
	/* The cell is `white-space: nowrap` so the toggle stays on one line; the
	   panel under it is prose and must not inherit that. */
	white-space: normal;
}

/* **No `.lc-sellers` ancestor in any of these, deliberately.**

   `lc-sellers.js` *moves* the panel out of the table and into a `<dialog>` that
   is a child of `<body>`. So a rule written `.lc-sellers .lc-sellers__panel-x`
   stops matching at exactly the moment the panel becomes visible to most
   readers — and goes on matching in the inline `<details>` fallback, which is
   the one place a screenshot of the table would still show it styled correctly.
   These two were written that way and lost their sizing in the dialog.

   Doubled class instead: the same specificity, with no opinion about where the
   element currently lives. */
.lc-sellers__panel-title.lc-sellers__panel-title {
	margin: 0 0 0.5rem;
	font-size: 1rem;
	font-weight: 600;
}

.lc-sellers__panel-finding.lc-sellers__panel-finding {
	margin: 0 0 0.5rem;
	font-size: 0.9375rem;
	line-height: 1.6;
}

/* The one finding in the panel, and the only thing in it bearing on the
   question the table exists to answer. It paints, so it names its ink — the
   pairing section 9 of the contrast harness enforces. */
.lc-sellers__panel-shared {
	margin: 0 0 0.75rem;
	padding: 0.5rem 0.75rem;
	border-left: 4px solid #a32020;
	border-radius: 0 4px 4px 0;
	background: #fdf6f6;
	font-size: 0.9375rem;
	line-height: 1.6;
}

.lc-sellers__panel-shared.lc-sellers__panel-shared,
.lc-sellers__panel-shared.lc-sellers__panel-shared span,
.lc-sellers__panel-shared.lc-sellers__panel-shared code {
	color: #1c2c3d;
}

/* Filled on open, and empty until then. No min-height: a reserved gap that
   never fills is worse than one that appears, because most panels are opened
   once and the reader has nothing to compare the space against. */
.lc-sellers__more:not(:empty) {
	margin: 1rem 0 0;
}

/* The dialog. Sits on `.lc-sellers`' own colours by way of the class below, so
   like every other block here it travels with a surface it names. */
.lc-sellers__dialog {
	width: min(46rem, calc(100vw - 2rem));
	max-height: calc(100vh - 4rem);
	padding: 1.5rem;
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-radius: 8px;
	background: #fff;
	color: #1c2c3d;
	overflow-y: auto;
}

/* A modal over a page that may be dark needs its own backdrop rather than the
   UA's, which is near-transparent black and disappears on one of them. */
.lc-sellers__dialog::backdrop {
	background: rgba(10, 18, 28, 0.6);
}

.lc-sellers__dialog.lc-sellers__dialog h3,
.lc-sellers__dialog.lc-sellers__dialog h4,
.lc-sellers__dialog.lc-sellers__dialog p,
.lc-sellers__dialog.lc-sellers__dialog dt,
.lc-sellers__dialog.lc-sellers__dialog dd,
.lc-sellers__dialog.lc-sellers__dialog th,
.lc-sellers__dialog.lc-sellers__dialog td,
.lc-sellers__dialog.lc-sellers__dialog caption,
.lc-sellers__dialog.lc-sellers__dialog span,
.lc-sellers__dialog.lc-sellers__dialog code,
.lc-sellers__dialog.lc-sellers__dialog strong {
	color: #1c2c3d;
}

/* Inside the dialog the panel is the content, not an expander in a cell. */
.lc-sellers__dialog .lc-sellers__panel {
	margin: 0;
	padding: 0;
	border-top: 0;
}

/* The registry list stacks label above value inside the table, because there it
   lives in a column a few words wide. The dialog has room for the two-column
   grid `.lc-host-check__facts` uses, and the same reason applies: at most half a
   dozen rows, and a registrar name is short enough to sit beside its label.

   Scoped to the dialog rather than changed at source — the `<details>` fallback
   is still in a narrow cell and still needs the stacked form. */
@media (min-width: 30rem) {

	.lc-sellers__dialog .lc-sellers__facts {
		display: grid;
		grid-template-columns: auto 1fr;
		gap: 0.3rem 1.25rem;
		/* The base rule pins this to `width: 14rem` so an open panel cannot
		   decide the width of the table's narrowest column. In the dialog there
		   is no column to protect, and leaving it capped squeezed both halves of
		   the grid into 224px — a registration date wrapping to three lines
		   inside a 780px box. */
		width: auto;
	}

	.lc-sellers__dialog .lc-sellers__facts dt {
		font-weight: 600;
	}

	.lc-sellers__dialog .lc-sellers__facts dd {
		margin: 0;
		word-break: break-word;
	}
}

.lc-sellers__dialog-close {
	float: right;
	margin: -0.25rem -0.25rem 0 0.75rem;
	padding: 0.35rem 0.75rem;
	border: 1px solid rgba(0, 0, 0, 0.25);
	border-radius: 4px;
	background: #f2f4f6;
	color: #1c2c3d;
	font: inherit;
	font-size: 0.875rem;
	cursor: pointer;
}

.lc-sellers__dialog-close:hover,
.lc-sellers__dialog-close:focus-visible {
	background: #e4e8ec;
}

/* --- Site facts ----------------------------------------------------------- */

/* Neutral observations about opening the address: where it led, and how many
   other names share its certificate. Shaped like `.lc-host-check`, not like
   `.lc-site-check` below — that block paints an adverse edge unconditionally
   because it only ever holds findings, and this one renders for ordinary
   suppliers that simply redirect to `www`.

   **Names no colour, for the reason section 9 of the contrast harness
   enforces**: it paints no background, so any ink named here would be ink on
   whatever is behind it — white under this stylesheet, `#10202f` under the
   theme's dark scheme. That pairing is what made `.lc-host-check` unreadable at
   1.16:1. */
.lc-site-facts {
	margin: 1.25rem 0 0;
	padding: 1rem 0 0;
	border-top: 1px solid rgba(128, 128, 128, 0.35);
}

.lc-site-facts__heading {
	font-size: 1rem;
	font-weight: 600;
	margin: 0 0 0.6rem;
}

/* Label beside value, the same two-column grid the hosting facts use and for
   the same reasons: at most two rows, and a hostname is short enough to sit
   next to its label. Collapses where there is no room. */
.lc-site-facts__list {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.3rem 0.9rem;
	margin: 0 0 0.75rem;
	font-size: 0.9375rem;
}

@media (max-width: 30rem) {

	.lc-site-facts__list {
		grid-template-columns: 1fr;
		gap: 0.1rem;
	}

	.lc-site-facts__list dt {
		margin-top: 0.4rem;
	}
}

.lc-site-facts.lc-site-facts .lc-site-facts__list dt {
	font-weight: 600;
	margin: 0;
}

.lc-site-facts.lc-site-facts .lc-site-facts__list dd {
	margin: 0;
	word-break: break-word;
}

.lc-site-facts__reading {
	font-size: 0.9375rem;
	line-height: 1.6;
	margin: 0 0 0.5rem;
}

/* Quieter than the body, derived rather than named — the `.lc-host-check__source`
   argument, unchanged. The doubled class is what stops the theme's `.lc-results p`
   taking it back to full body colour. */
.lc-site-facts.lc-site-facts .lc-site-facts__source {
	font-size: 0.875rem;
	color: inherit;
	opacity: 0.78;
	margin: 0;
}

/* --- Site check ---------------------------------------------------------- */

/* Renders into the domain enrich slot, after the hosting facts. Unlike that
   block this one only ever appears when something is wrong — there is no
   "the website works" state — so it carries the adverse edge unconditionally
   rather than through a tone modifier. */
.lc-site-check {
	margin: 1.25rem 0 0;
	padding: 0.85rem 1.1rem;
	border-left: 4px solid #a32020;
	border-radius: 0 6px 6px 0;
	background: #fdf6f6;
}

.lc-site-check p {
	margin: 0 0 0.5rem;
	line-height: 1.6;
}

.lc-site-check p:last-child {
	margin-bottom: 0;
}

/* Doubled class, same reason as the blocks below it.

   `h3` is in the list, and both this block and `.lc-host-check--unresolved`
   omitted it until now. The heading looked fine because a heading carries no
   colour of its own — it took `.lc-results h3` from the theme, which is
   scheme-aware and therefore *light* on the dark scheme, printed on the
   `#fdf6f6` this block paints unconditionally. The wording survived because the
   sentence inside is wrapped in a `span`, which was listed; what did not was the
   `LC_Icons` glyph beside it, which is `currentColor` and inherits from the h3.

   So the alert triangle marking a finding rendered at roughly 1.2:1 on its own
   background for every reader whose OS is in dark mode — invisible in the one
   place the design uses a glyph to mark that something is wrong. Contrast probes
   miss it because it is a stroke and not text. */
.lc-site-check.lc-site-check h3,
.lc-site-check.lc-site-check p,
.lc-site-check.lc-site-check li,
.lc-site-check.lc-site-check span,
.lc-site-check.lc-site-check code {
	color: #1c2c3d;
}

.lc-site-check__heading {
	font-size: 1rem;
	font-weight: 600;
	margin: 0 0 0.6rem;
}

/* A list because there can be more than one finding at once — a site can be
   unreachable, or land elsewhere on a certificate for a third name. Scoped
   `!important` for the Divi `#left-area ol` problem recorded in CLAUDE.md:
   an ID selector outranks any class, so without this the list renders with
   double numbering and inside positioning wherever that theme is active. */
.lc-site-check .lc-site-check__list {
	margin: 0 0 0.5rem !important;
	padding-left: 1.25rem !important;
	list-style-position: outside !important;
}

.lc-site-check .lc-site-check__item {
	margin: 0 0 0.35rem;
	line-height: 1.6;
}

/* Counted, never a verdict: shared hosting puts hundreds of unrelated sites on
   one certificate, so this is a question rather than an answer and is set back
   from the findings above it. */
.lc-site-check__siblings {
	font-size: 0.9375rem;
}

.lc-site-check.lc-site-check .lc-site-check__source {
	font-size: 0.875rem;
	color: #4a5a6a;
}

/* --- Imprint facts -------------------------------------------------------- */

/* What the supplier's § 5 DDG imprint states, in its own words. Shaped like
   `.lc-site-facts` above and for the identical reason: a complete imprint is
   what every fraud in the archive also had, several of them copied from a real
   business, so this block renders for compliant and fraudulent suppliers alike
   and must not shade either.

   **Names no colour, for the reason section 9 of the contrast harness
   enforces**: it paints no background, so ink named here would land on whatever
   is behind it — white under this stylesheet, `#10202f` under the theme's dark
   scheme. That is the 1.16:1 pairing. */
.lc-impressum-facts {
	margin: 1.25rem 0 0;
	padding: 1rem 0 0;
	border-top: 1px solid rgba(128, 128, 128, 0.35);
}

.lc-impressum-facts__heading {
	font-size: 1rem;
	font-weight: 600;
	margin: 0 0 0.6rem;
}

/* Label beside value, the same grid the site and hosting facts use. A company
   name is longer than a hostname, so it collapses one breakpoint earlier. */
.lc-impressum-facts__list {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.3rem 0.9rem;
	margin: 0 0 0.75rem;
	font-size: 0.9375rem;
}

@media (max-width: 36rem) {

	.lc-impressum-facts__list {
		grid-template-columns: 1fr;
		gap: 0.1rem;
	}

	.lc-impressum-facts__list dt {
		margin-top: 0.4rem;
	}
}

.lc-impressum-facts.lc-impressum-facts .lc-impressum-facts__list dt {
	font-weight: 600;
	margin: 0;
}

.lc-impressum-facts.lc-impressum-facts .lc-impressum-facts__list dd {
	margin: 0;
	word-break: break-word;
}

.lc-impressum-facts__reading {
	font-size: 0.9375rem;
	line-height: 1.6;
	margin: 0 0 0.5rem;
}

/* Derived rather than named, the `.lc-host-check__source` argument unchanged.
   The doubled class stops the theme's `.lc-results p` taking it back to full
   body colour. */
.lc-impressum-facts.lc-impressum-facts .lc-impressum-facts__source {
	font-size: 0.875rem;
	color: inherit;
	opacity: 0.78;
	margin: 0;
}

/* --- Imprint check -------------------------------------------------------- */

/* The adverse half: no imprint at all, a registered legal form with no register
   entry beside it, or a VAT number VIES does not recognise. Like
   `.lc-site-check` it only ever appears when something is wrong, so it carries
   the adverse edge unconditionally rather than through a tone modifier. */
.lc-impressum-check {
	margin: 1.25rem 0 0;
	padding: 0.85rem 1.1rem;
	border-left: 4px solid #a32020;
	border-radius: 0 6px 6px 0;
	background: #fdf6f6;
}

.lc-impressum-check p {
	margin: 0 0 0.5rem;
	line-height: 1.6;
}

.lc-impressum-check p:last-child {
	margin-bottom: 0;
}

/* Doubled class, and `h3` is in the list. This block paints `#fdf6f6`
   unconditionally; a heading carries no colour of its own and would otherwise
   take the theme's scheme-aware `.lc-results h3`, which is *light* on the dark
   scheme. The `LC_Icons` glyph beside the wording is `currentColor` and inherits
   from that h3 — so omitting it renders the alert triangle at roughly 1.2:1 on
   its own background, invisible in the one place the design uses a glyph to say
   something is wrong. A contrast probe misses it because a stroke is not text. */
.lc-impressum-check.lc-impressum-check h3,
.lc-impressum-check.lc-impressum-check p,
.lc-impressum-check.lc-impressum-check li,
.lc-impressum-check.lc-impressum-check span,
.lc-impressum-check.lc-impressum-check code {
	color: #1c2c3d;
}

.lc-impressum-check__heading {
	font-size: 1rem;
	font-weight: 600;
	margin: 0 0 0.6rem;
}

/* A list because more than one can be true at once — an imprint can name a GmbH
   with no register entry *and* quote a VAT number that does not exist. Scoped
   `!important` for the Divi `#left-area ol` problem recorded in CLAUDE.md. */
.lc-impressum-check .lc-impressum-check__list {
	margin: 0 0 0.5rem !important;
	padding-left: 1.25rem !important;
	list-style-position: outside !important;
}

.lc-impressum-check .lc-impressum-check__item {
	margin: 0 0 0.35rem;
	line-height: 1.6;
}

.lc-impressum-check.lc-impressum-check .lc-impressum-check__source {
	font-size: 0.875rem;
	color: #4a5a6a;
}

/* --- VAT check ----------------------------------------------------------- */

.lc-vat-check {
	background: #fff;
	color: #1c2c3d;
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-left-width: 4px;
	border-radius: 6px;
	padding: 1.15rem 1.35rem;
	margin: 0 0 2.25rem;
}

.lc-vat-check p {
	margin: 0 0 0.6rem;
	line-height: 1.6;
}

.lc-vat-check p:last-child {
	margin-bottom: 0;
}

/* Doubled class, for the reason recorded above the equivalent search-check
   rules: the theme's lc-components.css is enqueued after this file and sets
   `.lc-results p { color: var(--lc-fg-soft) }` at the same specificity a single
   class would have here. Equal specificity is settled by source order, so the
   theme wins and the panel renders in a grey chosen for a dark background.
   Anything printed inside this block has to be named here; inheriting is what
   broke the search-check panel. */
.lc-vat-check.lc-vat-check p,
.lc-vat-check.lc-vat-check strong,
.lc-vat-check.lc-vat-check span,
.lc-vat-check.lc-vat-check code {
	color: #1c2c3d;
}

.lc-vat-check.lc-vat-check .lc-vat-check__source {
	color: #4a5a6a;
}

/* The first sentence after the h2, where the reasoning lives. */
.lc-vat-check__detail {
	font-size: 1.0625rem;
}

/* A number VIES does not hold. The only tone this block has.

   There is deliberately no `--ordinary` variant here, and its absence is the
   invariant rather than an omission: a green edge beside "this VAT number is
   registered" reads as a cleared supplier, and a registered number identifies
   nobody — most member states, Germany among them, will not disclose the
   holder. The valid branch renders on plain white with a caveat instead, the
   same shape as an old domain in LC_Domain_Check. */
.lc-vat-check--alarm {
	border-left-color: #a32020;
	background: #fdf6f6;
}

/* How the input was read. Present only on the adverse branch, where a reader
   who typed a part number needs to see the misreading rather than be told
   their code is a fake company. */
.lc-vat-check__reading,
.lc-vat-check__caveat {
	font-size: 0.9375rem;
}

.lc-vat-check__source {
	font-size: 0.875rem;
	color: #4a5a6a;
}

/* --- Domain check ------------------------------------------------------- */

.lc-domain-check {
	margin: 0 0 1rem;
}

.lc-domain-check__label {
	display: block;
	font-weight: 600;
	margin: 0 0 0.5rem;
}

.lc-domain-check__result {
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-radius: 6px;
	padding: 1rem 1.25rem;
	margin: 0 0 1rem;
}

.lc-domain-check__result p {
	margin: 0 0 0.5rem;
	line-height: 1.6;
}

.lc-domain-check__result p:last-child {
	margin-bottom: 0;
}

.lc-domain-check__table {
	width: 100%;
	border-collapse: collapse;
	margin: 0 0 0.75rem;
}

.lc-domain-check__table caption {
	text-align: left;
	font-weight: 600;
	padding: 0 0 0.5rem;
}

.lc-domain-check__table th,
.lc-domain-check__table td {
	text-align: left;
	vertical-align: top;
	padding: 0.4rem 0.75rem 0.4rem 0;
	border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}

.lc-domain-check__table th {
	width: 12rem;
	font-weight: 600;
}

.lc-domain-check__table td {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 0.9375rem;
	word-break: break-word;
}

.lc-domain-check__source,
.lc-domain-check__note {
	font-size: 0.875rem;
	line-height: 1.6;
	opacity: 0.85;
}

/* The registry answering is not the same as the registry clearing anyone.
   Keep the interpretation visually attached to the record it belongs to. */
.lc-domain-check__note {
	border-left: 3px solid rgba(0, 0, 0, 0.2);
	padding-left: 0.75rem;
	opacity: 1;
}

/* --- Records disclosure --------------------------------------------------- */

/* Holds the registry table and the enrich slot under one control, so the two
   sentences that interpret them sit above the fold instead of below four
   screens of tables. LC_Lookup::records_panel() has the reasoning.

   **Nothing here names a colour.** This block renders inside `.lc-results`,
   which is a white panel under this stylesheet alone and a transparent one under
   the theme, where its text colour follows the scheme — the pair of surfaces
   that made `.lc-host-check` unreadable at 1.16:1. Borders derive from
   `currentColor` at low alpha for the same reason, so the control keeps whatever
   contrast the panel around it already has. */
.lc-domain-check__records {
	margin: 0 0 1.25rem;
	border: 1px solid rgba(128, 128, 128, 0.35);
	border-radius: 6px;
}

.lc-results .lc-domain-check__records-toggle {
	display: block;
	padding: 0.75rem 1rem;
	font-size: 0.9375rem;
	font-weight: 600;
	cursor: pointer;
	/* Native markers differ per engine and one of them is a filled triangle that
	   reads as a bullet. Replaced below with one that states its own direction,
	   the same substitution `.lc-sellers__record-toggle` makes. */
	list-style: none;
}

.lc-domain-check__records-toggle::-webkit-details-marker {
	display: none;
}

.lc-domain-check__records-toggle::after {
	content: "\25B8";
	float: right;
	/* Sits on the text baseline rather than the line box, so the glyph does not
	   drift when the summary wraps to two lines on a phone. */
	line-height: inherit;
}

.lc-domain-check__records[open] > .lc-domain-check__records-toggle::after {
	content: "\25BE";
}

.lc-domain-check__records-toggle:hover,
.lc-domain-check__records-toggle:focus-visible {
	background: rgba(128, 128, 128, 0.12);
}

/* Rounded to match the container, or the hover fill paints square corners over
   the border radius above it. Both ends, because a closed control is the whole
   box and an open one is only its top. */
.lc-domain-check__records-toggle {
	border-radius: 5px;
}

.lc-domain-check__records[open] > .lc-domain-check__records-toggle {
	border-radius: 5px 5px 0 0;
	border-bottom: 1px solid rgba(128, 128, 128, 0.35);
}

.lc-domain-check__records-body {
	padding: 1rem;
}

/* The tables inside already carry their own captions, so the first of them has
   no need of the margin it would use standing alone. */
.lc-domain-check__records-body > .lc-domain-check__table:first-child {
	margin-top: 0;
}

/* Printed output opens it. A disclosure answers a screen having limited height;
   paper has as much as it needs, and a record that prints closed is a record
   missing from the page somebody filed before transferring money.

   Three declarations because engines hide the content three different ways:
   `display` for the old UA rule, `content-visibility` for Chrome's slot, and
   `::details-content` for the newer pseudo-element that replaced it. Each is
   inert where it is not understood, and any one of them landing is enough.

   Verified by promoting this block to `@media screen` in a scratch copy and
   measuring: with `details.open === false` the body reports `display: block` and
   a height of 830px, so the content really is revealed rather than merely
   restyled. Printing to PDF proves nothing here — the text cannot be read back
   out of it without a PDF library this box does not have, and a rendered page
   that merely *looks* right is what the measurement replaces.

   The summary stays. It is the only thing naming what the table below it is. */
@media print {

	.lc-domain-check__records > .lc-domain-check__records-body {
		display: block !important;
		content-visibility: visible !important;
	}

	.lc-domain-check__records::details-content {
		display: block !important;
		content-visibility: visible !important;
	}

	.lc-domain-check__records-toggle::after {
		content: "";
	}
}

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

/* --- Glyphs -------------------------------------------------------------- */

/* `LC_Icons` draws every path in `currentColor` and declares no colour of its
   own, so a glyph is legible wherever its text is — including inside the panels
   that hard-code their own foreground against the dark hero. Nothing below may
   set `color` for the same reason.

   Every glyph is `aria-hidden` and duplicates something stated in words beside
   it, so `display: none` here would lose no information. That is the test a new
   glyph has to pass before it is added. */
.lc-icon {
	flex: 0 0 auto;
	/* Only reached where a glyph sits in running text rather than in one of the
	   flex rows below. `middle` centres on the x-height and leaves the glyph
	   sitting visibly low against its sentence. */
	vertical-align: -0.125em;
}

/* A glyph beside a heading or a cell value is one flex item and the words are
   the other, so a sentence that wraps indents under itself instead of running
   back under the icon.

   `flex-start` and not `baseline`: an `<svg>` is a replaced element whose
   baseline is its bottom edge, so baseline alignment hangs the whole glyph above
   the text. The offset centres it on the first line box instead, and is in `em`
   so it tracks the font size of whatever it is placed beside — the same set is
   used at 15px in a table cell and at 18px beside a heading. */
.lc-icon-row {
	display: flex;
	align-items: flex-start;
	gap: 0.45rem;
}

.lc-icon-row > .lc-icon {
	margin-top: 0.25em;
	vertical-align: baseline;
}

/* For the two places a flex row is not available: a `<caption>`, whose
   `display: table-caption` cannot be replaced without taking it out of the
   table's caption slot, and the seller-link paragraph, where the label and the
   eight links after it are one wrapping sentence. */
.lc-icon-inline {
	margin-right: 0.4rem;
}

/* --- Report form ------------------------------------------------------- */

.lc-report__field {
	margin: 0 0 1.25rem;
}

.lc-report__field label {
	display: block;
	font-weight: 600;
	margin: 0 0 0.35rem;
}

.lc-report__hint {
	display: block;
	font-size: 0.875rem;
	opacity: 0.75;
	margin: 0 0 0.4rem;
	line-height: 1.5;
}

.lc-report__field input[type="text"],
.lc-report__field textarea {
	width: 100%;
	padding: 0.6rem 0.75rem;
	font-size: 1rem;
	border: 1px solid rgba(0, 0, 0, 0.3);
	border-radius: 4px;
	font-family: inherit;
}

.lc-report__field textarea {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 0.875rem;
}

.lc-report__privacy {
	font-size: 0.875rem;
	opacity: 0.8;
}

.lc-report__status {
	padding: 0.9rem 1.15rem;
	border-radius: 4px;
	margin: 0 0 1.5rem;
	border-left: 4px solid currentColor;
}

.lc-report__status--ok {
	color: #17603a;
	background: #eefaf3;
}

.lc-report__status--error {
	color: #8a5a00;
	background: #fff8ec;
}

/* The two routes to the same evidence, grouped so that "either one" is carried
   by the markup and not only by the wording. Every colour below is derived from
   `currentColor`, so this block needs no dark-mode counterpart: it is legible on
   the dark hero, on white, and on the brand blue without being told which. */
.lc-report__evidence {
	border: 0;
	padding: 0;
	margin: 0 0 1.25rem;
	min-inline-size: 0; /* A fieldset otherwise refuses to shrink below its content. */
}

.lc-report__legend {
	padding: 0;
	font-weight: 600;
	font-size: 1.0625rem;
	margin: 0 0 0.35rem;
}

/* Left native. Restyling a file control means hiding it behind its label, which
   costs keyboard focus unless done very carefully — and this form's job is to
   work rather than to match. */
.lc-report__field--file input[type="file"] {
	display: block;
	max-width: 100%;
	font-size: 0.9375rem;
	font-family: inherit;
}

/* Real text in the flow, never a `::before`: it is the word that tells somebody
   using a screen reader that the second field is an alternative, not a second
   requirement. */
.lc-report__or {
	margin: 0 0 1.25rem;
	font-weight: 600;
	opacity: 0.7;
	text-transform: lowercase;
}

.lc-report__how {
	margin: 0 0 1.25rem;
	font-size: 0.875rem;
	border-top: 1px solid currentColor;
	border-color: color-mix(in srgb, currentColor 22%, transparent);
	padding-top: 0.75rem;
}

.lc-report__how > summary {
	cursor: pointer;
	font-weight: 600;
	opacity: 0.85;
}

.lc-report__clients {
	margin: 0.85rem 0 0;
}

.lc-report__clients dt {
	font-weight: 600;
	margin: 0.9rem 0 0.2rem;
}

.lc-report__clients dt:first-child {
	margin-top: 0;
}

.lc-report__clients dd {
	margin: 0;
	opacity: 0.8;
	line-height: 1.55;
}

/* --- Donations --------------------------------------------------------- */

.lc-donate {
	margin: 3rem 0 0;
	padding: 1.5rem;
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-radius: 6px;
}

.lc-donate__heading {
	font-size: 1.125rem;
	margin: 0 0 0.5rem;
}

.lc-donate__intro {
	margin: 0 0 1rem;
	line-height: 1.6;
	font-size: 0.9375rem;
}

.lc-donate__links {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin: 0 0 1rem;
}

.lc-donate__link {
	display: inline-block;
	padding: 0.6rem 1.15rem;
	border-radius: 4px;
	text-decoration: none;
	font-weight: 600;
	border: 2px solid currentColor;
}

/* Small, quiet, and always present. It is a commitment, not a sales point. */
.lc-donate__integrity {
	margin: 0;
	font-size: 0.8125rem;
	line-height: 1.55;
	opacity: 0.8;
	border-top: 1px solid rgba(0, 0, 0, 0.12);
	padding-top: 0.85rem;
}

@media (prefers-color-scheme: dark) {

	.lc-lookup__input,
	.lc-report__field input[type="text"],
	.lc-report__field textarea {
		background: rgba(255, 255, 255, 0.06);
		color: inherit;
		border-color: rgba(255, 255, 255, 0.3);
	}

	.lc-lookup__submit,
	.lc-report__submit {
		background: #cfd8e3;
		color: #10202f;
	}

	.lc-report__status--ok {
		color: #8ee0b4;
		background: rgba(23, 96, 58, 0.2);
	}

	.lc-report__status--error {
		color: #ffd699;
		background: rgba(138, 90, 0, 0.2);
	}

	/* `.lc-lookup__miss` was in this rule and had to come out. Two reasons, and
	   the second is the serious one:

	   1. It always renders inside `.lc-results`, which sets a white background
	      unconditionally — outside any media query, deliberately, so the answer
	      is readable whatever surrounds it. Lightening its border for a dark
	      scheme lightened a border on a permanently white panel.
	   2. `border-color` sets all four sides, at the same specificity as
	      `.lc-lookup__miss--alarm`, and later in the file — so it overwrote the
	      tone colour. Every alarm, thin and ordinary left border turned
	      rgba(255,255,255,.18) on white, i.e. invisible, for every visitor whose
	      OS is in dark mode. The block's whole severity signal was gone, and the
	      code that computes it was working perfectly.

	   Found with a screenshot; unreachable by reading the PHP. */
	.lc-donate {
		border-color: rgba(255, 255, 255, 0.18);
	}

	.lc-donate__integrity {
		border-top-color: rgba(255, 255, 255, 0.15);
	}
}

@media (prefers-color-scheme: dark) {

	.lc-banner--strong-evidence {
		color: #ffb4b4;
		background: rgba(138, 28, 28, 0.18);
	}

	.lc-banner--caution {
		color: #ffd699;
		background: rgba(138, 90, 0, 0.18);
	}

	.lc-banner--unverified {
		color: #d6d9dd;
		background: rgba(255, 255, 255, 0.06);
	}

	.lc-fact,
	.lc-correction {
		border-color: rgba(255, 255, 255, 0.18);
	}

	.lc-fact--high {
		border-left-color: #ff6b6b;
	}

	.lc-fact--medium {
		border-left-color: #ffb454;
	}

	.lc-assessment {
		background: rgba(255, 255, 255, 0.05);
	}

	.lc-flag::before {
		background: rgba(255, 255, 255, 0.12);
	}
}

/* --- Enrichment --------------------------------------------------------- */

/* Loaded after the page has already answered. Everything below is additive:
   it corroborates the verdict above it and never replaces or contradicts it,
   because a visitor with JavaScript off has to reach the same conclusion. */

.lc-enrich {
	margin: 0;
}

.lc-enrich--working {
	margin: 0.75rem 0 1.5rem;
	font-size: 0.9375rem;
	opacity: 0.7;
}

/* --- Seller independence ------------------------------------------------ */

/* Answers the question the seller count cannot: eight websites only means
   eight businesses if eight people registered them. Colours are declared
   rather than inherited, for the dark-hero reason recorded above. */

.lc-sellers {
	background: #fff;
	color: #1c2c3d;
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-left-width: 4px;
	border-radius: 6px;
	padding: 1.15rem 1.35rem;
	margin: 0 0 2.25rem;
}

.lc-sellers.lc-sellers h3,
.lc-sellers.lc-sellers p,
.lc-sellers.lc-sellers th,
.lc-sellers.lc-sellers td,
.lc-sellers.lc-sellers code,
.lc-sellers.lc-sellers strong,
.lc-sellers.lc-sellers caption {
	color: #1c2c3d;
}

.lc-sellers__heading {
	font-size: 1.0625rem;
	margin: 0 0 0.6rem;
}

.lc-sellers__headline {
	margin: 0 0 0.9rem;
	line-height: 1.6;
}

/* The table's overflow, and the reason the registry control could move out of
   the first column in 0.9.5.

   The header row is `white-space: nowrap` and there is no width media query
   anywhere in this file, so before this container the widest cell decided the
   width of the *page* — a fourth column would have pushed a phone sideways
   rather than scrolling the table. Now the overflow is the table's own.

   `tabindex="0"` is on the element in the markup, which is what makes the
   overflow reachable without a pointer; the focus ring below is therefore not
   decorative and must not be removed. `overflow-y: hidden` and not the default
   `visible`: a single `overflow-x: auto` axis computes to `auto` on both, and an
   open registry record would then get its own vertical scrollbar. */
.lc-sellers__scroll {
	overflow-x: auto;
	overflow-y: hidden;
	margin: 0 0 0.75rem;
	/*
	 * `position: relative` is not cosmetic and must not be removed.
	 *
	 * `overflow` clips a descendant only where the clipping element is also that
	 * descendant's containing block. Every "Registry record" control carries a
	 * `.lc-visually-hidden` span naming its domain, and that class is
	 * `position: absolute` — with no positioned ancestor it resolves against the
	 * *initial* containing block, so this box could not clip it, and at 390px the
	 * span sat 41px past the right edge of the viewport and pulled
	 * `documentElement.scrollWidth` out with it. The page scrolled sideways on a
	 * phone: precisely the failure the fourth column was supposed to avoid, and
	 * invisible, because the span that caused it is 1px and clipped to nothing.
	 *
	 * Found by measuring `documentElement.scrollWidth` against `clientWidth`, not
	 * by looking. Any future absolutely positioned thing inside this table is
	 * covered by the same declaration.
	 */
	position: relative;
}

.lc-sellers__scroll:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 1px;
}

.lc-sellers__table {
	width: 100%;
	border-collapse: collapse;
	/* The container above owns the bottom margin now; keeping it here too would
	   double it. */
	margin: 0;
	font-size: 0.9375rem;
}

.lc-sellers__table th,
.lc-sellers__table td {
	text-align: left;
	vertical-align: top;
	padding: 0.4rem 0.75rem 0.4rem 0;
	border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}

.lc-sellers__table thead th {
	font-weight: 600;
	white-space: nowrap;
}

.lc-sellers__table tbody th {
	font-weight: 600;
	/* Kept for the genuinely long ones — a 26-character domain has no break
	   opportunity of its own and would otherwise widen the table without limit. */
	word-break: break-word;
	/*
	 * A floor, so an ordinary domain is not the thing that gets sacrificed.
	 *
	 * With four columns and three of them holding a date, a sentence and a
	 * control, this column was the one the table algorithm squeezed: at 540px
	 * `hydraulicsinc.com` came out as three lines of six characters. 11rem is one
	 * line for a typical domain, and it makes the table prefer to *scroll* below
	 * about 560px rather than shred its first column — which is the trade the
	 * scroll container was added to make available.
	 */
	min-width: 11rem;
}

/* The three outcomes of "is the code on the page", stated in words, marked by
   shape, and only then tinted. In that order deliberately: the sentence is the
   evidence, the silhouette survives a monochrome print-out, and the colour is
   the last and least of the three carriers.

   `unread` is left at the body colour on purpose. A site that refused us says
   nothing either way, and tinting it would turn our own network conditions into
   a finding about the seller. */
.lc-sellers .lc-sellers__listed--found .lc-sellers__listed-icon {
	color: #2b6b3f;
}

.lc-sellers .lc-sellers__listed--absent .lc-sellers__listed-icon {
	color: #a32020;
}

.lc-sellers .lc-sellers__listed--unread .lc-sellers__listed-icon {
	opacity: 0.55;
}

/* The cells in this column start after a glyph; the header has to start there
   too or the column reads as two columns half a word apart. The value is the
   glyph box plus `.lc-icon-row`'s gap, stated as the sum so changing either one
   in one place cannot silently un-align the header.

   Scoped through `.lc-sellers__table` and not written flat: the cell padding is
   set by `.lc-sellers__table th` as a shorthand, which outranks a bare
   `.lc-sellers__listed-head { padding-left }` and would drop it silently. */
.lc-sellers__table .lc-sellers__listed-head {
	padding-left: calc(15px + 0.45rem);
}

/* The header cell is visually empty — the control below it already reads
   "Registry record" — so nothing should reserve width for a label that is not
   drawn. */
.lc-sellers__record-head {
	width: 1%;
}

.lc-sellers__dup {
	display: block;
	font-weight: 400;
	font-size: 0.875rem;
	opacity: 0.8;
}

/* Per-seller registry record, opened from the last column.

   No colour is declared anywhere below and none may be: `.lc-sellers` sets its
   own background and text colour unconditionally and has no dark-mode block, so
   everything here inherits a known pair. A `prefers-color-scheme` rule for this
   panel would be a second opinion about a background it cannot see — the
   mistake that erased the severity borders on every `.lc-lookup__miss`. */
.lc-sellers__record {
	/* It sits in its own cell as of 0.9.5. The 0.35rem that used to separate it
	   from the domain above it would now push it out of line with the rest of the
	   row. */
	margin: 0;
	font-weight: 400;
}

.lc-sellers .lc-sellers__record-toggle {
	display: inline-block;
	font-size: 0.8125rem;
	/* Lighter than the row header beside it; the control is not a heading. */
	font-weight: 400;
	cursor: pointer;
	/* Native markers differ per engine and one of them is a filled triangle
	   that reads as a bullet inside a table cell. */
	list-style: none;
	text-decoration: underline;
	text-underline-offset: 0.15em;
	opacity: 0.85;
	/* One line. Squeezed by a long third column the label would otherwise break
	   in the middle of a row, and holding it here means the column is exactly as
	   wide as its own words — no `min-width` to keep in step with the label's
	   length in each language. The *open* panel is bounded separately, on
	   `.lc-sellers__facts`. */
	white-space: nowrap;
}

.lc-sellers .lc-sellers__record-toggle::-webkit-details-marker {
	display: none;
}

.lc-sellers .lc-sellers__record-toggle::before {
	content: "\25B8\00a0";
	text-decoration: none;
	display: inline-block;
}

.lc-sellers__record[open] > .lc-sellers__record-toggle::before {
	content: "\25BE\00a0";
}

.lc-sellers .lc-sellers__record-toggle:hover,
.lc-sellers .lc-sellers__record-toggle:focus-visible {
	opacity: 1;
}

.lc-sellers__facts {
	margin: 0.5rem 0 0;
	padding: 0.5rem 0 0;
	border-top: 1px solid rgba(0, 0, 0, 0.1);
	font-size: 0.8125rem;
	font-weight: 400;
	/* Label above value rather than beside it. This is the narrowest column in
	   the table and holds the longest single values in it — a nameserver list of
	   four Azure hostnames — so a second column inside the cell would spend the
	   width the values need on repeating the labels. */
	line-height: 1.5;
	/* An open panel must not be what decides the column's width. 14rem is wide
	   enough for "Network Solutions, LLC" on one line and narrow enough that four
	   rows of it still fit the card; anything longer wraps, which is what
	   `word-break` on the values below is for. */
	width: 14rem;
	max-width: 100%;
}

.lc-sellers .lc-sellers__facts dt {
	font-weight: 600;
	margin: 0.4rem 0 0;
}

.lc-sellers .lc-sellers__facts dt:first-child {
	margin-top: 0;
}

.lc-sellers .lc-sellers__facts dd {
	margin: 0;
	/* Registrar names and nameserver lists are long and unbreakable. */
	word-break: break-word;
}

.lc-sellers.lc-sellers .lc-sellers__record-source {
	margin: 0.5rem 0 0;
	font-size: 0.75rem;
	font-weight: 400;
	line-height: 1.5;
	color: #4a5a6a;
	/* Same bound as the facts list above it, and for the same reason: this is the
	   longest line in the panel on a `.co.uk` and would otherwise be the thing
	   that sets the column's open width. */
	width: 14rem;
	max-width: 100%;
}

/* The count of sellers that actually publish the code. Sits between the table
   and the source note, and is the sentence a reader scanning five rows of prose
   will not add up for themselves — so it carries the body weight rather than
   the source line's smaller, greyer one. */
.lc-sellers.lc-sellers .lc-sellers__summary {
	margin: 0 0 0.6rem;
	line-height: 1.6;
	font-size: 0.9375rem;
	font-weight: 600;
}

.lc-sellers.lc-sellers .lc-sellers__source {
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.6;
	color: #4a5a6a;
}

/* One operator behind several domains, or one launch. Both mean the count
   above overstates how many businesses actually stock the part. */
.lc-sellers--duplicated,
.lc-sellers--clustered,
.lc-sellers--shared {
	border-left-color: #a32020;
	background: #fdf6f6;
}

/* Registered years apart, on different registrars: a real trade. */
.lc-sellers--independent {
	border-left-color: #2b6b3f;
	background: #f6faf7;
}

/* Not enough registry data to say either way. The table still shows the dates
   it has; no conclusion is drawn, and none is implied by colour. */
.lc-sellers--unclear {
	border-left-color: rgba(0, 0, 0, 0.25);
}

/* --- Third-party advisory ----------------------------------------------- */

/* Only ever rendered on a hit. A clean answer from a phishing feed says
   nothing about a fake supplier — they host no malware and steal no
   passwords — so there is no "all clear" state to style here. */

.lc-advisory {
	background: #fdf6f6;
	color: #1c2c3d;
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-left: 4px solid #a32020;
	border-radius: 6px;
	padding: 1.15rem 1.35rem;
	margin: 1rem 0 0;
}

.lc-advisory.lc-advisory p,
.lc-advisory.lc-advisory strong {
	color: #1c2c3d;
	margin: 0 0 0.6rem;
	line-height: 1.6;
}

.lc-advisory.lc-advisory a {
	color: #1c4f8a;
}

.lc-advisory.lc-advisory .lc-advisory__source {
	margin-bottom: 0;
	font-size: 0.875rem;
	color: #4a5a6a;
}

/* --- Language switcher --------------------------------------------------- */

/* Every other block here knows what it sits on. This one does not: it is meant
   for a header, a footer, or the dark hero at #16202b, and it is placed by
   whoever drops the shortcode. So nothing below names a colour — text, border
   and focus ring all derive from `currentColor`, which means the switcher
   inherits whatever contrast the surrounding text already has and is legible on
   a white page and on the dark hero without being told which it got.

   That is also why there is no `prefers-color-scheme` block for it. A dark-mode
   rule here would be a second opinion about a background this block cannot see,
   and the last one of those in this file silently erased the severity borders
   on every `.lc-lookup__miss` for anyone whose OS was in dark mode. */
.lc-lang {
	display: inline-block;
}

.lc-lang__list {
	display: flex;
	align-items: center;
	gap: 0.35rem;
	/* Same Divi defence as the other lists in this file — see the note above
	   `.lc-flags__list`. */
	list-style: none !important;
	margin: 0;
	padding: 0 !important;
}

.lc-lang__item {
	margin: 0;
}

.lc-lang .lc-lang__link {
	display: block;
	/* Kept tight on purpose. This sits in a masthead beside a navigation that is
	   already close to full, so every 0.1rem here is width the menu does not
	   have to give up. */
	padding: 0.25rem 0.45rem;
	border: 1px solid transparent;
	border-radius: 4px;
	font-size: 0.8125rem;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: 0.04em;
	color: currentColor;
	text-decoration: none;
	/* Dims the inactive language without making it hard to read: measured at
	   5.8:1 on white and 7.9:1 on the #16202b hero, against the 4.5:1 AA floor.
	   0.65 looked identical at a glance and left only 4.6:1 on white. The
	   current language is marked by its border and weight regardless, so
	   dimming the other one harder buys nothing and costs legibility. */
	opacity: 0.72;
}

.lc-lang .lc-lang__link:hover,
.lc-lang .lc-lang__link:focus {
	opacity: 1;
	text-decoration: none;
	/* Mid-grey at low alpha darkens a light background and lightens a dark one,
	   so one value covers both. */
	background: rgba(127, 127, 127, 0.18);
}

.lc-lang .lc-lang__link:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

/* The active language is marked by weight, full opacity and a border — three
   signals, none of them colour. Consistent with the severity banners: anything
   that carries meaning is also stated in a way you do not have to see. */
.lc-lang .lc-lang__link--current {
	opacity: 1;
	border-color: currentColor;
}

/* "DE" is the visible label. The full native name is here for screen readers,
   which would otherwise read the abbreviation out one letter at a time. */
.lc-lang__name {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}
