/* Gabarito, embedded rather than fetched.
   A font request to a third party is that third party learning who read a page
   about a named person, and on this site that is not an acceptable leak. The
   face is a variable latin subset carried inline, so the whole site needs no
   outside request at all. Before launch this should become a real .woff2 file
   in the WordPress Font Library so it can be cached and preloaded separately
   from the stylesheet. */
@font-face {
  font-family: 'Gabarito';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url(data:font/woff2;base64,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) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/*
 * Backstory profile styling.
 *
 * A blend of two things that do not usually go together, and the combination
 * is the point.
 *
 * FROM GEMA (PixelGrade), the editorial half: a serif display face for names
 * and numbers, small letterspaced uppercase micro-labels, and captions in
 * bordered boxes overlapping the bottom edge of a photograph. That vocabulary
 * makes a page read as a record rather than a feed, which matters on a page
 * carrying criticism of a named person.
 *
 * FROM WATI, the friendly half: chunky rounded cards with thick borders in a
 * darker shade of their own fill, soft saturated pastels, pill buttons with
 * solid fills and a hard offset shadow, and highlighter marks behind key
 * phrases.
 *
 * Neither alone is right. Pure editorial reads austere — an intranet with good
 * typography. Pure SaaS pastel reads flippant on a page about a real person.
 * Editorial type inside friendly containers is warm without being glib.
 *
 * Colour is used structurally rather than decoratively: each kind of block
 * keeps its own hue, so the page is navigable by colour as well as by heading.
 *
 * Scoped under .bs-wrap with its own variables, so the theme underneath is
 * neither fought nor depended on.
 */

/* The tokens live on :root rather than on .bs-wrap because this sheet now
   styles the site header and footer too, and those sit outside the wrapper.
   Nothing inside .bs-wrap changes — it inherits every one of them. */
:root {
	--bs-ink: #14161a;
	--bs-body: #2f333a;
	--bs-muted: #737a84;
	--bs-rule: #e6e3dd;

	/* Pastel fills, each with a border two steps darker. */
	--bs-mint: #d6f5e3;
	--bs-mint-edge: #1f9d5c;
	--bs-sky: #d9ecfb;
	--bs-sky-edge: #2b7fc4;
	--bs-sand: #fbf0d8;
	--bs-sand-edge: #c08a1e;
	--bs-coral: #fde3dd;
	--bs-coral-edge: #c2452b;
	--bs-lilac: #ece2fa;
	--bs-lilac-edge: #7a52c4;
	--bs-paper: #faf9f6;

	/* ONE measure for everything a person reads, set in rem so every block
	   comes out at the identical width whatever its own font-size. Capping by
	   characters instead gave the page three different widths — prose at
	   598px, the details table at 557px and the entry lists at 528px — because
	   each block sizes its own text differently. Nothing lined up. */
	--bs-measure: 37rem;

	/* One gap for the whole header row. It lives here rather than in each rule
	   because two different containers have to agree on it: the header row
	   itself, and the actions group inside it. When they held their own values
	   the spacing between the three links came out uneven — 44px on one side of
	   the Add a person pill and 16px on the other. */
	--bs-header-gap: 1.5rem;

	--bs-radius: 18px;
	--bs-border: 2px;
	/* Archivo for both. The old Palatino stack read bookish and dated on a site
	   about living people; a grotesk with tight tracking at display sizes reads
	   as a platform rather than a paperback. Two tokens rather than one so the
	   display face can be changed later without touching the interface. */
	--bs-display: 'Gabarito', system-ui, -apple-system, "Segoe UI", sans-serif;
	--bs-ui: 'Gabarito', system-ui, -apple-system, "Segoe UI", sans-serif;

}

.bs-wrap {
	font-family: var(--bs-ui);
	color: var(--bs-body);
	font-size: 1.02rem;
	line-height: 1.7;
	margin-top: 2rem;
}

/* ONE right edge for the whole profile. The measure was being applied to the
   tables, the entry lists and the reviews but not to plain paragraphs or to
   the masthead, so biography prose ran at 874px — about 110 characters a line
   — and the page had three different right edges. Capping the column rather
   than each block is also what lets a section's tool link sit on the same edge
   as the text it acts on. */
.bs-layout {
	display: grid;
	grid-template-columns: 190px minmax(0, var(--bs-measure));
	justify-content: center;
	gap: 3.5rem;
	align-items: start;
}

/* THE MEASURE BELONGS TO THE COLUMN, NOT TO THE BLOCKS IN IT.

   Above this width the grid caps the reading column at the measure and every
   block inside it therefore shares one right edge. Below it the column used to
   be a bare 1fr, so it ran the full container — and the handful of components
   carrying a max-width of their own (the facts table, the claim box, the
   review cards) stopped at the measure while the masthead, the lane boxes and
   the section bodies did not. Between about 600px and 900px that put two
   different right edges on the same page, which is what it looked like: some
   sections wider than others.

   Capping the track instead fixes every one of them at once, and minmax(0, …)
   rather than a bare max-width also lets the track shrink below its content's
   min-content size — without that, the facts table forced the whole column
   wider than a 320px screen and the page scrolled sideways. */
@media (max-width: 900px) {
	.bs-layout {
		grid-template-columns: minmax(0, var(--bs-measure));
		gap: 1.5rem;
	}
}

/* ------------------------------------------------------------ photo column */

/* Photos are a column beside the page, not another band across it. The section
   keeps its place in the document and grid placement lifts it into a second
   column, so a narrow screen gets it back in reading order with no second copy
   in the markup and no script moving nodes. Only column-gap is set: the photo
   section spans many rows, and a row-gap would be multiplied by every empty
   row it spans. */
@media (min-width: 1180px) {
	.bs-layout.bs-has-rail {
		grid-template-columns: 190px minmax(0, calc(var(--bs-measure) + 13rem + 2.5rem));
	}

	.bs-main.bs-has-rail {
		display: grid;
		grid-template-columns: minmax(0, var(--bs-measure)) 13rem;
		column-gap: 2.5rem;
		align-items: start;
	}

	.bs-main.bs-has-rail > * { grid-column: 1; }

	.bs-main.bs-has-rail > #bs-photos {
		grid-column: 2;
		grid-row: 1 / span 99;
		align-self: start;
	}

	.bs-main.bs-has-rail > #bs-photos .bs-gallery { columns: 1; }
}

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

.bs-nav {
	position: sticky;
	top: 2rem;
	font-size: 0.68rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	background: var(--bs-paper);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	padding: 1.35rem 1.25rem;
}

.bs-nav ul { list-style: none; margin: 0; padding: 0; }
.bs-nav li { margin: 0 0 0.8rem; }
.bs-nav li:last-child { margin-bottom: 0; }

.bs-nav a {
	color: var(--bs-muted);
	text-decoration: none;
	box-shadow: inset 0 -0.35em 0 transparent;
	transition: color 0.15s ease, box-shadow 0.15s ease;
}

.bs-nav a:hover, .bs-nav a:focus {
	color: var(--bs-ink);
	box-shadow: inset 0 -0.35em 0 var(--bs-mint);
}

/* The index on a narrow screen.

   Seventeen links is a sidebar on a wide screen and a wall on a narrow one.
   Wrapped it was five rows standing between somebody and the name of the
   person they came to read about; on one scrolling line three labels in four
   sat off the edge with nothing to say so. A native <details> is a disclosure
   with no script behind it — closed it is a single control, open it is the
   whole index in columns. Above 900px the summary is dropped and the content
   forced visible, which is what puts the plain list back in the sidebar. */
.bs-nav-menu { margin: 0; }

.bs-nav-toggle {
	display: flex;
	align-items: center;
	gap: 0.7rem;
	cursor: pointer;
	color: var(--bs-ink);
	list-style: none;
}

.bs-nav-toggle::-webkit-details-marker { display: none; }

/* Three bars from one element, so the icon needs no markup of its own. */
.bs-nav-toggle::before {
	content: '';
	flex: 0 0 auto;
	width: 1.05rem;
	height: 2px;
	background: currentColor;
	box-shadow: 0 -0.36rem 0 currentColor, 0 0.36rem 0 currentColor;
}

@media (min-width: 901px) {
	.bs-nav-toggle { display: none; }
	.bs-nav-menu::details-content { content-visibility: visible; block-size: auto; }
}

/* Where ::details-content is not supported the list cannot be forced open
   from CSS at all, so the summary stays and the sidebar index opens on a
   click rather than standing open. */
@supports not selector(::details-content) {
	@media (min-width: 901px) {
		.bs-nav-toggle { display: flex; }
	}
}

@media (max-width: 900px) {
	.bs-nav { position: static; padding: 0.85rem 1.1rem; }

	.bs-nav ul {
		display: grid;
		grid-template-columns: repeat(auto-fill, minmax(7rem, 1fr));
		gap: 0.95rem 1rem;
		margin: 0.9rem 0 0;
		padding: 0.85rem 0 0;
		border-top: 1px solid var(--bs-rule);
	}

	.bs-nav li { margin: 0; }
}

/* ----------------------------------------------------------------- masthead */

/* A grid rather than a flex row, because the identity line is not part of the
   text column any more: the photograph and the name sit side by side on the
   first row, and the small-caps line runs the full width underneath both. */
.bs-masthead {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 0 1.5rem;
	align-items: center;
	background: var(--bs-sand);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	padding: 1.5rem;
	margin-bottom: 2rem;
}

@media (max-width: 600px) {
	.bs-masthead { grid-template-columns: minmax(0, 1fr); align-items: start; gap: 1.25rem; padding: 1.5rem; }
}

/* The follow control belongs to the person, not to the page under them, so it
   sits in the masthead card with the face and the name rather than floating
   below the ratings. A third track only when there is something to put in it:
   signed out there is no control, and an empty auto track would still take
   its column gap and hold the text column short of the card's edge. */
.bs-masthead:has(.bs-follow) { grid-template-columns: auto minmax(0, 1fr) auto; }

.bs-masthead .bs-follow {
	grid-column: 3;
	grid-row: 1;
	align-self: start;
	justify-self: end;
	margin: 0;
}

/* Every .button carries a top margin for the field it usually follows. Here
   it follows nothing — it is placed in its own corner of the grid. */
.bs-masthead .bs-follow .button { margin-top: 0; }

/* One column is not enough to hold a portrait and a control side by side and
   still have the name read as a heading, so the name and headline drop to
   their own row underneath both. */
@media (max-width: 600px) {
	.bs-masthead:has(.bs-follow) { grid-template-columns: minmax(0, 1fr) auto; }
	.bs-masthead:has(.bs-follow) .bs-masthead-text { grid-column: 1 / -1; }
	.bs-masthead .bs-follow { grid-column: 2; }
}

.bs-masthead-text { min-width: 0; }

/* Occupation, organisation and where they are from, on one line. Everything
   here is already public further down the page; it is up here so that the top
   of the page says what the page is about. */
.bs-identity {
	grid-column: 1 / -1;
	margin: 1.1rem 0 0;
	font-size: 0.68rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--bs-ink);
	opacity: 0.72;
	line-height: 1.9;
}

.bs-dot { margin: 0 0.6rem; opacity: 0.5; }

.bs-portrait {
	flex: 0 0 auto;
	width: 104px;
	height: 104px;
	overflow: hidden;
	background: #fff;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 14px;
	box-shadow: 6px 6px 0 var(--bs-ink);
}

.bs-portrait img { width: 100%; height: 100%; object-fit: cover; object-position: center 22%; display: block; }

/* Not italic any more. A sans italic under a heavy sans name reads as a
   mistake rather than as emphasis; the size and the colour do the work. */
.bs-headline {
	font-family: var(--bs-display);
	font-size: 1.25rem;
	line-height: 1.4;
	font-weight: 400;
	color: var(--bs-body);
	margin: 0;
}

/* With the name now sitting above it, the headline has to step back on a
   narrow screen or the two compete — they were 32px against 24px. This has to
   come after the base rule rather than in the masthead media block further up,
   or the base font-size wins on source order. */
@media (max-width: 600px) {
	.bs-headline { font-size: 1.2rem; }
}

/* -------------------------------------------------------------- lane ratings */

.bs-lanes {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
	gap: 1.25rem;
	margin: 0 0 2.75rem;
}

.bs-lane {
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	padding: 1.35rem 1.5rem 1.5rem;
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	background: var(--bs-mint);
}

.bs-lane:nth-child(2) { background: var(--bs-sky); }

.bs-lane-label {
	font-size: 0.62rem;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--bs-ink);
	opacity: 0.7;
}

.bs-lane-value {
	font-family: var(--bs-display);
	font-size: 3rem;
	line-height: 1.05;
	color: var(--bs-ink);
}

/* The count sits at readable weight — "2.0 from 4 reviews" has to read as one
   statement, or the figure looks more authoritative than it is. */
.bs-lane-count { font-size: 0.8rem; letter-spacing: 0.05em; color: var(--bs-ink); }

.bs-lane-none {
	font-size: 0.9rem;
	color: var(--bs-ink);
	opacity: 0.65;
	font-style: italic;
	padding-top: 0.5rem;
}

.bs-review-count {
	display: inline-block;
	background: var(--bs-paper);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.4rem 1.1rem;
	font-size: 0.7rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	margin: 0 0 2.5rem;
}

/* ----------------------------------------------------------------- sections */

.bs-section { margin: 0 0 3.25rem; scroll-margin-top: 2rem; }

.bs-section-head > h3 {
	display: inline-block;
	font-family: inherit;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--bs-ink);
	background: var(--bs-mint);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.35rem 1rem;
	margin: 0;
}

/* The docblock above claims colour is structural. It was not: every heading
   was the same mint, twelve times down the page, which is decoration. Cycling
   five hues gives the page landmarks, so scrolling back to a section is a
   colour memory rather than a reading task. */
.bs-section:nth-of-type(5n+2) .bs-section-head > h3 { background: var(--bs-sky); }
.bs-section:nth-of-type(5n+3) .bs-section-head > h3 { background: var(--bs-sand); }
.bs-section:nth-of-type(5n+4) .bs-section-head > h3 { background: var(--bs-lilac); }
.bs-section:nth-of-type(5n+5) .bs-section-head > h3 { background: var(--bs-coral); }

/* Prose gets a measure. Full-width paragraphs on a wide screen run to well
   over a hundred characters, which is where the eye starts losing the line. */
.bs-section > p { max-width: var(--bs-measure); }

.bs-section h4 {
	font-family: var(--bs-display);
	font-weight: 400;
	font-size: 1.3rem;
	color: var(--bs-ink);
	margin: 2.25rem 0 0.9rem;
}

.bs-section > h4:first-child { margin-top: 0; }
.bs-section p:last-child { margin-bottom: 0; }

/* ----------------------------------------------------------- entry listings */

/* Work history, education, achievements, portfolio: one entry per line, with
   the year lifted into its own column. A column of years can be scanned; a
   year at the end of a sentence has to be read. */

.bs-entries {
	list-style: none;
	margin: 0;
	padding: 0;
	max-width: var(--bs-measure);
	border-top: 1px solid var(--bs-rule);
}

.bs-entries li {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1.5rem;
	padding: 0.65rem 0;
	border-bottom: 1px solid var(--bs-rule);
	margin: 0;
}

.bs-entry-what { color: var(--bs-ink); }

.bs-entry-when {
	flex: 0 0 auto;
	font-size: 0.68rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--bs-muted);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

@media (max-width: 480px) {
	.bs-entries li { flex-direction: column; gap: 0.15rem; }
	.bs-entry-when { font-size: 0.64rem; }
}

/* -------------------------------------------------------------- facts table */

.bs-facts {
	width: 100%;
	max-width: var(--bs-measure);
	border-collapse: separate;
	border-spacing: 0;
	font-size: 0.95rem;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	overflow: hidden;
	background: #fff;
}

.bs-facts th, .bs-facts td { text-align: left; padding: 0.8rem 1.1rem; vertical-align: top; }
.bs-facts tr + tr th, .bs-facts tr + tr td { border-top: 1px solid var(--bs-rule); }

.bs-facts th {
	width: 32%;
	font-weight: 400;
	font-size: 0.66rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--bs-muted);
	padding-top: 1.05rem;
	background: var(--bs-paper);
}

.bs-facts td { color: var(--bs-ink); }

/* A value somebody typed can be one unbreakable string, and a website address
   usually is. An unbreakable string sets the table's minimum width, the grid
   track is sized from that minimum, and on a 320px screen the whole column
   was therefore wider than the phone. overflow-wrap: anywhere is the value
   that lowers min-content as well as wrapping the line — word-break: break-word
   wraps but leaves the minimum where it was, which would have looked fixed
   while the page still scrolled sideways. */
.bs-facts td,
.bs-article a,
.bs-entries a { overflow-wrap: anywhere; }

@media (max-width: 600px) {
	.bs-facts th { width: auto; display: block; padding-bottom: 0.2rem; }
	.bs-facts td { display: block; padding-top: 0.1rem; }
	.bs-facts tr + tr th { border-top: 1px solid var(--bs-rule); }
	.bs-facts tr + tr td { border-top: 0; }
}

/* ------------------------------------------------------------------ reviews */

.bs-review {
	max-width: var(--bs-measure);
	background: #fff;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	padding: 1.5rem 1.6rem;
	margin-bottom: 1.25rem;
}

.bs-review-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.7rem; margin-bottom: 0.6rem; }
.bs-stars { letter-spacing: 0.12em; color: var(--bs-sand-edge); }

.bs-review-head strong {
	font-family: var(--bs-display);
	font-weight: 400;
	font-size: 1.2rem;
	color: var(--bs-ink);
}

.bs-byline, .bs-meta {
	font-size: 0.66rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--bs-muted);
}

.bs-reply {
	margin: 1.25rem 0 0;
	padding: 1rem 1.2rem;
	background: var(--bs-lilac);
	border: var(--bs-border) solid var(--bs-lilac-edge);
	border-radius: 14px;
}

.bs-reply + .bs-reply { margin-top: 0.85rem; }

.bs-reply-label {
	font-size: 0.64rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--bs-lilac-edge);
	display: block;
	margin-bottom: 0.3rem;
	font-weight: 700;
}

/* ------------------------------------------------------------------ gallery */

/* Masonry, by multi-column rather than grid.

   A grid puts every photograph in a row of a single height, so a portrait
   beside a landscape leaves a band of white under the short one — and, when
   the figures stretched to fill that band, left the caption floating in it.
   Columns have no rows at all: each photograph is exactly as tall as it is
   and the next one starts where it ends. grid-template-rows: masonry is the
   eventual answer but is not shipping anywhere yet.

   Column WIDTH rather than count, so the same rule gives three columns across
   a page, one in the 13rem photo rail, and one on a phone, with nothing to
   restate per breakpoint. */
.bs-gallery {
	columns: 15rem;
	column-gap: 1.75rem;
}

/* break-inside is what stops a column splitting a photograph from its
   caption across the column break. */
.bs-photo {
	margin: 0 0 2.25rem;
	position: relative;
	padding-bottom: 0.85rem;
	break-inside: avoid;
}

/* ------------------------------------------------------ flagging a photo */

/* The list under the upload form. Not a gallery: a gallery invites looking,
   and this is a list to act on, so it is rows with the picture small and the
   action at the end of the line. */
.bs-photo-list { margin: 2.75rem 0 0; }

.bs-photo-list > h3 {
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	background: var(--bs-sand);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.35rem 1rem;
	display: inline-block;
	margin: 0 0 0.9rem;
}

.bs-photo-rows { list-style: none; margin: 1.1rem 0 0; padding: 0; }

.bs-photo-row {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 0.7rem 0;
	border-bottom: 1px solid var(--bs-rule);
}

.bs-photo-row:last-child { border-bottom: 0; }

.bs-photo-thumb { flex: 0 0 auto; line-height: 0; }

.bs-photo-thumb img {
	width: 56px;
	height: 56px;
	object-fit: cover;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 10px;
}

.bs-photo-said { flex: 1 1 auto; min-width: 0; font-size: 0.9rem; }

.bs-photo-row .bs-tool { flex: 0 0 auto; }

.bs-photo img {
	width: 100%;
	height: auto;
	display: block;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 14px;
}

/* Gema's overlapping caption box, rounded to match everything else. This is
   what stops a grid of photographs looking like an upload folder. */
.bs-photo figcaption {
	position: absolute;
	left: 9%;
	right: 9%;
	bottom: 0;
	background: #fff;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.45rem 0.8rem;
	text-align: center;
	font-size: 0.62rem;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	line-height: 1.4;
	color: var(--bs-ink);
}

/* ----------------------------------------------------------------- articles */

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

.bs-article {
	background: #fff;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 14px;
	padding: 1.1rem 1.3rem;
	margin-bottom: 0.9rem;
}

.bs-article a {
	font-family: var(--bs-display);
	font-size: 1.12rem;
	color: var(--bs-ink);
	text-decoration: none;
	box-shadow: inset 0 -0.3em 0 var(--bs-sand);
}

.bs-article a:hover { box-shadow: inset 0 -0.9em 0 var(--bs-sand); }
.bs-article-meta { color: var(--bs-muted); font-size: 0.76rem; letter-spacing: 0.04em; }

.bs-article-subject {
	display: inline-block;
	font-size: 0.6rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	background: var(--bs-mint);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.15rem 0.6rem;
	white-space: nowrap;
}

.bs-article-note { margin: 0.5rem 0 0; color: var(--bs-muted); font-size: 0.93rem; }

.bs-article-record { border-color: var(--bs-lilac-edge); }

/* Lilac, not coral. A red badge would be telling the reader that the court
   record is the bad news on the page, and making that call is exactly the
   editorialising this whole section is built to avoid. */
.bs-record-badge {
	display: inline-block;
	font-size: 0.6rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	background: var(--bs-lilac);
	border: var(--bs-border) solid var(--bs-lilac-edge);
	border-radius: 999px;
	padding: 0.15rem 0.6rem;
	margin-right: 0.35rem;
	white-space: nowrap;
}

.bs-article-citation {
	margin: 0.5rem 0 0;
	font-size: 0.82rem;
	letter-spacing: 0.03em;
	color: var(--bs-muted);
}

.bs-article-outcome {
	margin: 0.35rem 0 0;
	font-size: 0.93rem;
	color: var(--bs-body);
}

/* The outcome control lives inside an article card, so it keeps the field
   styling .bs-form supplies and drops the card chrome. A bordered panel inside
   a bordered panel reads as a second item on the list. */
.bs-outcome-form {
	max-width: none;
	background: transparent;
	border: 0;
	border-radius: 0;
	border-top: 1px solid var(--bs-rule);
	padding: 0.85rem 0 0;
	margin: 0.85rem 0 0;
}

/* -------------------------------------------------------------------- forms */

.bs-form {
	max-width: var(--bs-measure);
	background: var(--bs-paper);
	padding: 1.75rem;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	margin: 1.5rem 0;
}

.bs-form label {
	display: block;
	font-size: 0.64rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--bs-muted);
	margin: 1.25rem 0 0.4rem;
}

.bs-form label:first-of-type { margin-top: 0; }

.bs-form input[type="text"], .bs-form input[type="url"], .bs-form input[type="email"],
.bs-form input[type="date"], .bs-form input[type="tel"], .bs-form select, .bs-form textarea {
	width: 100%;
	padding: 0.7rem 0.9rem;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 12px;
	background: #fff;
	font: inherit;
	font-size: 0.95rem;
	color: var(--bs-ink);
}

.bs-form input:focus, .bs-form select:focus, .bs-form textarea:focus {
	outline: 0;
	box-shadow: 4px 4px 0 var(--bs-sky-edge);
}

.bs-form textarea { min-height: 7.5rem; resize: vertical; }

/* SCOPED TO THE WRAPPER, NOT TO A LIST OF CONTEXTS.

   This used to enumerate every block that contained a button, which meant
   every new component had to be added in three places and any that was
   forgotten fell through to the theme's dark grey default. That is where each
   of the grey buttons came from, one at a time. Everything the plugin renders
   sits inside .bs-wrap or, on the protective-order page, .bs-po — so the two
   wrappers are the rule, and a component added tomorrow is styled already. */
.bs-wrap .button,
.bs-po .button {
	display: inline-block;
	margin-top: 1.4rem;
	padding: 0.75rem 1.9rem;
	background: var(--bs-mint);
	color: var(--bs-ink);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	cursor: pointer;
	text-decoration: none;
	box-shadow: 4px 4px 0 var(--bs-ink);
	transition: transform 0.1s ease, box-shadow 0.1s ease;
}

.bs-wrap .button:hover,
.bs-po .button:hover {
	transform: translate(2px, 2px);
	box-shadow: 2px 2px 0 var(--bs-ink);
}

.bs-wrap .button:active,
.bs-po .button:active {
	transform: translate(4px, 4px);
	box-shadow: 0 0 0 var(--bs-ink);
}

.bs-hint { font-size: 0.83rem; color: var(--bs-muted); margin: 0.4rem 0 0; line-height: 1.55; }

.bs-sworn, .bs-sworn label {
	text-transform: none;
	letter-spacing: 0;
	font-size: 0.9rem;
	color: var(--bs-body);
}

.bs-sworn input { width: auto; margin-right: 0.5rem; }

details.bs-attach, details.bs-report { margin: 1.25rem 0; }

details.bs-attach summary, details.bs-report summary {
	display: inline-block;
	cursor: pointer;
	font-size: 0.64rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-weight: 700;
	color: var(--bs-ink);
	background: var(--bs-sky);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.4rem 1rem;
}

/* ------------------------------------------------------- notices and panels */

.bs-gate {
	max-width: var(--bs-measure);
	background: var(--bs-sky);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	padding: 2.5rem 2rem;
	text-align: center;
}

.bs-gate h3 {
	font-family: var(--bs-display);
	font-size: 1.5rem;
	border: 0;
	background: none;
	padding: 0;
	text-transform: none;
	letter-spacing: 0;
	color: var(--bs-ink);
	margin-bottom: 0.9rem;
}

/* The assault question. Coral, because it is the one thing on this page that
   should stop somebody mid-scroll — and closed, because five paragraphs about
   protective orders above every review makes the notice ordinary, and a
   notice that is scrolled past is not a notice. */
.bs-assault {
	max-width: var(--bs-measure);
	background: var(--bs-coral);
	border: var(--bs-border) solid var(--bs-coral-edge);
	border-radius: var(--bs-radius);
	margin: 0 0 2rem;
}

.bs-assault > summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 0.75rem 1rem;
	padding: 1.25rem 1.5rem;
	cursor: pointer;
	list-style: none;
}

/* Safari draws its own triangle through ::-webkit-details-marker, which
   list-style alone does not reach. */
.bs-assault > summary::-webkit-details-marker { display: none; }

.bs-assault-q {
	font-family: var(--bs-display);
	font-size: 1.15rem;
	line-height: 1.35;
	color: var(--bs-coral-edge);
}

.bs-assault-cue {
	flex: 0 0 auto;
	font-size: 0.6rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--bs-coral-edge);
	border: 1px solid var(--bs-coral-edge);
	border-radius: 999px;
	padding: 0.3rem 0.8rem;
	white-space: nowrap;
}

.bs-assault[open] > summary { padding-bottom: 0.5rem; }
.bs-assault[open] .bs-assault-cue { opacity: 0.55; }

.bs-assault-body { padding: 0 1.5rem 1.5rem; }
.bs-assault-body p:last-child { margin-bottom: 0; }
.bs-assault p { font-size: 0.95rem; }
.bs-assault .button { background: #fff; }

.bs-modes {
	list-style: none;
	margin: 1.25rem 0 0;
	padding: 0;
	font-size: 0.87rem;
	line-height: 1.6;
	color: var(--bs-body);
}

.bs-modes li {
	background: #fff;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 14px;
	padding: 0.9rem 1.1rem;
	margin-bottom: 0.7rem;
}

.bs-modes strong {
	display: block;
	color: var(--bs-ink);
	font-size: 0.64rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	margin-bottom: 0.35rem;
}

.bs-pending-photo, .bs-word-error, .bs-takedown-error {
	background: var(--bs-coral);
	border: var(--bs-border) solid var(--bs-coral-edge);
	border-radius: 14px;
	padding: 0.95rem 1.2rem;
	font-size: 0.92rem;
	margin: 0 0 1.5rem;
}

/* The inline wording warning. Sand rather than coral: a nudge while somebody
   is still writing, not a refusal. */
.bs-live-warning {
	background: var(--bs-sand);
	border: var(--bs-border) solid var(--bs-sand-edge);
	border-radius: 14px;
	padding: 0.9rem 1.1rem;
	margin: 1.25rem 0 0;
	font-size: 0.88rem;
	line-height: 1.55;
	color: var(--bs-ink);
}

.bs-ref {
	display: inline-block;
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: 1.4rem;
	letter-spacing: 0.14em;
	background: var(--bs-mint);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 12px;
	padding: 0.5rem 1.1rem;
}

.bs-note { font-size: 0.9rem; color: var(--bs-muted); }

/* ------------------------------------------------------- review page & photos */

.bs-write-title {
	max-width: var(--bs-measure);
	font-family: var(--bs-display);
	font-size: 2rem;
	line-height: 1.25;
	color: var(--bs-ink);
	margin: 0 0 1.5rem;
}

.bs-write { margin: 1.5rem 0 0; }
.bs-write .button {
	display: inline-block;
	padding: 0.75rem 1.9rem;
	background: var(--bs-mint);
	color: var(--bs-ink);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	box-shadow: 4px 4px 0 var(--bs-ink);
	transition: transform 0.1s ease, box-shadow 0.1s ease;
}

.bs-write .button:hover { transform: translate(2px, 2px); box-shadow: 2px 2px 0 var(--bs-ink); }

.bs-form input[type="file"] {
	display: block;
	width: 100%;
	font-size: 0.9rem;
	padding: 0.6rem 0;
}

/* Evidence photos sit inside the review card, smaller than gallery images —
   they are support for what was written, not the point of it. */
.bs-review-photos {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	gap: 1rem;
	margin: 1rem 0 0;
}

.bs-review-photo { margin: 0; }

.bs-review-photo img {
	width: 100%;
	height: auto;
	display: block;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 12px;
}

.bs-review-photo figcaption {
	margin-top: 0.4rem;
	font-size: 0.72rem;
	letter-spacing: 0.04em;
	color: var(--bs-muted);
	line-height: 1.4;
}

/* ------------------------------------------------------------- taking over */

/* The block that offers the profile to whoever it is about. It used to be a
   form asking people to argue their identity to a moderator, which was the
   wrong model entirely — this is a wiki, and an unheld profile is simply
   taken. What is left is a short statement of position and one or two
   buttons, so it is styled as a panel rather than as a form. */

.bs-claim {
	background: var(--bs-lilac);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	padding: 1.5rem 1.6rem;
	max-width: var(--bs-measure);
}

.bs-claim--yours { background: var(--bs-mint); }
.bs-claim--held { background: var(--bs-paper); }
.bs-claim--signedout { background: var(--bs-sand); }

.bs-claim h4 {
	font-family: var(--bs-display);
	font-weight: 400;
	font-size: 1.3rem;
	color: var(--bs-ink);
	margin: 0 0 0.6rem;
}

.bs-claim p { color: var(--bs-ink); margin: 0 0 1rem; }
.bs-claim p:last-child { margin-bottom: 0; }

/* A form that is nothing but a button is not a panel. The base .bs-form rule
   supplies a paper background, a 2px border, an 18px radius and 1.75rem of
   padding, all of which are right for a form with fields in it and all of
   which draw a box around a lone button. Reset those four, and nothing else. */
.bs-form--inline {
	background: none;
	border: 0;
	border-radius: 0;
	padding: 0;
	margin: 0 0 1rem;
}

.bs-form--inline:last-child { margin-bottom: 0; }

.bs-claim .button {
	display: inline-block;
	font-size: 0.7rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	background: var(--bs-ink);
	color: #fff;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.7rem 1.4rem;
	cursor: pointer;
	box-shadow: 4px 4px 0 rgba(20, 22, 26, 0.25);
	transition: transform 0.1s ease, box-shadow 0.1s ease;
}

.bs-claim .button:hover { transform: translate(2px, 2px); box-shadow: 2px 2px 0 rgba(20, 22, 26, 0.25); }

.bs-claim .button-secondary {
	background: transparent;
	color: var(--bs-ink);
	box-shadow: 4px 4px 0 rgba(20, 22, 26, 0.15);
}

.bs-note { font-size: 0.85rem; color: var(--bs-ink); opacity: 0.8; }

/* The one promise on this panel that must not read as small print. */
.bs-note--hard {
	opacity: 1;
	font-size: 0.85rem;
	border-top: 1px solid rgba(20, 22, 26, 0.2);
	padding-top: 0.9rem;
	margin-top: 1.1rem;
}

/* ------------------------------------------------- section heading + tools */

/* The heading and its editing control share a line. This is a wiki, so the
   unit somebody edits is a section, and the way in belongs beside the thing
   it edits rather than in one long form at the foot of the page. */

.bs-section-head {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin: 0 0 1.4rem;
}

/* The auto right margin pushes the edit, add and attach links to the right
   edge of the column, the same edge as the content they act on. It has to sit
   in THIS rule rather than the appearance rule further up, because this one
   comes later in the file and was resetting the margin back to zero. */
.bs-section-head > h3 { margin: 0 auto 0 0; }

/* Muted text on a rule-coloured border read as a disabled grey button. A
   section's action is never disabled, so it carries ink on an ink border and
   fills with sand on hover — the same tan as every other call to action. */
.bs-tool {
	font-size: 0.6rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--bs-ink);
	text-decoration: none;
	background: #fff;
	border: 1px solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.3rem 0.8rem;
	white-space: nowrap;
	transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}

.bs-tool:hover, .bs-tool:focus {
	color: var(--bs-ink);
	border-color: var(--bs-ink);
	background: var(--bs-sand);
}

/* The one line on the site that is a turning point rather than a note: the
   search found nobody, so the next thing is to add them. It used to be muted
   italic at 0.9rem, which is the styling for an aside — it read as an apology
   and the eye went past it. */
.bs-empty {
	font-size: 0.9rem;
	color: var(--bs-muted);
	font-style: italic;
}


/* Only the failed-search line gets the loud treatment. Everywhere else an
   empty state is an aside — an empty section on a profile is normal and does
   not want announcing. Scoping this by page was the fix after the loud
   version leaked onto every empty section of every profile. */
.bs-find > .bs-empty {
	font-family: var(--bs-display);
	font-size: 1.3rem;
	font-weight: 600;
	letter-spacing: -0.015em;
	line-height: 1.3;
	color: var(--bs-ink);
	font-style: normal;
}

/* ------------------------------------------------------- empty portrait box */

/* The masthead keeps its shape whether or not there is a photograph, and the
   most obvious gap on the page carries the way to fill it. */

.bs-portrait--empty {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.35rem;
	text-decoration: none;
	background: rgba(255, 255, 255, 0.55);
	border-style: dashed;
	box-shadow: none;
	color: var(--bs-ink);
	transition: background 0.15s ease, box-shadow 0.15s ease;
}

.bs-portrait--empty:hover, .bs-portrait--empty:focus {
	background: #fff;
	box-shadow: 6px 6px 0 var(--bs-ink);
}

.bs-portrait-plus { font-size: 1.7rem; line-height: 1; opacity: 0.55; }

.bs-portrait-add {
	font-size: 0.58rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	opacity: 0.75;
	text-align: center;
}

/* ------------------------------------------------------- the review form */

/* Four decisions, each one a step, rather than one undifferentiated column
   of fields. The order matters: the lane is chosen first because it decides
   which average the review moves and what the rest of the form should be
   asking. */

.bs-step {
	border: 0;
	border-top: 1px solid var(--bs-rule);
	padding: 1.6rem 0 0;
	margin: 0 0 1.6rem;
}

.bs-step:first-of-type { border-top: 0; padding-top: 0; }

.bs-step > legend {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	font-family: var(--bs-display);
	font-size: 1.25rem;
	color: var(--bs-ink);
	padding: 0;
	margin: 0 0 1rem;
}

.bs-step-n {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.6rem;
	height: 1.6rem;
	border-radius: 999px;
	background: var(--bs-ink);
	color: #fff;
	font-family: inherit;
	font-size: 0.75rem;
	flex: 0 0 auto;
}

/* Radio cards. The input stays in the document for keyboard and screen
   readers rather than being display:none, which would remove it from the
   tab order along with the visual box.

   Taking it out of flow needs a containing block, or the browser scrolls the
   page to wherever the hidden input happens to render when the label passes
   focus to it — which read as the page jumping several hundred pixels and
   the click "doing nothing".

   The containing block is each CARD, not the group. Anchoring to the group
   was still wrong: three stacked cards put the third one a few hundred pixels
   below the group's origin, so choosing it scrolled back up to the first.
   Per-card, the focus target is already under the finger. */

.bs-choice-input {
	position: absolute;
	top: 0;
	left: 0;
	width: 1px;
	height: 1px;
	opacity: 0;
	pointer-events: none;
}

.bs-choice-wrap { position: relative; display: flex; }
.bs-choice-wrap > .bs-choice { flex: 1 1 auto; }

.bs-choices { display: grid; gap: 0.75rem; }
.bs-choices--two { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }

.bs-form .bs-choice {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	background: #fff;
	border: var(--bs-border) solid var(--bs-rule);
	border-radius: 14px;
	padding: 0.9rem 1.1rem;
	cursor: pointer;
	margin: 0;
	text-transform: none;
	letter-spacing: 0;
	font-size: inherit;
	color: var(--bs-body);
	transition: border-color 0.12s ease, background 0.12s ease;
}

.bs-form .bs-choice:hover { border-color: var(--bs-ink); }

.bs-form .bs-choice-input:checked + .bs-choice {
	border-color: var(--bs-ink);
	background: var(--bs-mint);
	box-shadow: 4px 4px 0 var(--bs-ink);
}

/* A tick, so the chosen card is obvious at a glance rather than a shade of
   green somebody has to compare against its neighbour. */
.bs-form .bs-choice-label::before {
	content: "";
	display: inline-block;
	width: 0.95rem;
	height: 0.95rem;
	margin-right: 0.5rem;
	vertical-align: -1px;
	border: 2px solid var(--bs-muted);
	border-radius: 999px;
}

.bs-form .bs-choice-input:checked + .bs-choice .bs-choice-label::before {
	border-color: var(--bs-ink);
	background: var(--bs-ink);
	box-shadow: inset 0 0 0 2px #fff;
}

.bs-form .bs-choice-input:focus-visible + .bs-choice { box-shadow: 0 0 0 3px var(--bs-sky-edge); }

.bs-form .bs-choice-label { font-weight: 700; color: var(--bs-ink); font-size: 1rem; }
.bs-form .bs-choice-detail { font-size: 0.88rem; line-height: 1.55; color: var(--bs-body); }

/* The relationship list follows the lane. Both are in the markup so the
   server never has to guess and a browser without :has() shows both rather
   than showing the wrong one. */
.bs-rel { margin-bottom: 0.5rem; }

.bs-write:has(input[name="review_kind"][value="professional"]:checked) .bs-rel--personal { display: none; }
.bs-write:has(input[name="review_kind"][value="personal"]:checked) .bs-rel--professional { display: none; }

/* Stars, laid out largest-first in the markup so the CSS sibling selector can
   light up everything to the left of the one hovered or chosen. */
.bs-rating { position: relative; display: flex; flex-direction: row-reverse; justify-content: flex-end; align-items: center; gap: 0.35rem; margin: 0 0 1.4rem; }

.bs-form .bs-star {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.4rem;
	height: 2.4rem;
	margin: 0;
	cursor: pointer;
	font-size: 1.9rem;
	line-height: 1;
	color: var(--bs-rule);
	text-transform: none;
	letter-spacing: 0;
	transition: color 0.12s ease, transform 0.12s ease;
}

.bs-form .bs-star:hover { color: var(--bs-sand-edge); transform: scale(1.08); }

/* Markup runs five down to one and the row is reversed, so "everything after
   the chosen one in the DOM" is everything to its left on screen. */
.bs-form .bs-choice-input:checked + .bs-star,
.bs-form .bs-choice-input:checked + .bs-star ~ .bs-star {
	color: var(--bs-sand-edge);
}

.bs-form .bs-choice-input:focus-visible + .bs-star { outline: 2px solid var(--bs-sky-edge); outline-offset: 2px; border-radius: 6px; }

.bs-form .bs-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

/* ------------------------------------------------------------- task pages */

/* Write-a-review and edit-a-section are single-column pages with no index
   beside them. A profile can leave its right-hand side open because the
   sticky nav balances the left; these cannot, so the column was sitting
   against the left edge of a container nearly twice its width. Centre it. */

.bs-wrap--task {
	max-width: var(--bs-measure);
	margin-inline: auto;
}

/* Inside a column already at the measure, the children must not also try to
   cap themselves, or the form ends up narrower than the heading above it. */
.bs-wrap--task .bs-form,
.bs-wrap--task .bs-assault,
.bs-wrap--task .bs-write-title,
.bs-wrap--task .bs-gate { max-width: none; }

/* The free-text relationship field, shown only when "another way" is picked.
   Where :has() is unsupported the field simply shows, which is one harmless
   extra input rather than a dead end. */
.bs-rel-other { display: none; }

.bs-rel--professional:has(option[value="other_work"]:checked) .bs-rel-other,
.bs-rel--personal:has(option[value="other_life"]:checked) .bs-rel-other { display: block; }

@supports not selector(:has(*)) {
	.bs-rel-other { display: block; }
}

/* ------------------------------------------------------------------- FAQ */

/* The other language, named in the language it leads to. Somebody who cannot
   read this page cannot read the word "Spanish" on it either. */
.bs-lang { text-align: right; margin: 0 0 1.25rem; }

.bs-lang a {
	font-size: 0.62rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--bs-ink);
	text-decoration: none;
	background: #fff;
	border: 1px solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.3rem 0.8rem;
	display: inline-block;
	transition: background 0.15s ease;
}

.bs-lang a:hover, .bs-lang a:focus { background: var(--bs-sand); }

.bs-faq-intro { font-size: 1.05rem; margin: 0 0 2.5rem; }

.bs-faq-group { margin: 0 0 2.75rem; }

.bs-faq-group > h2 {
	font-family: inherit;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--bs-ink);
	background: var(--bs-mint);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.35rem 1rem;
	display: inline-block;
	margin: 0 0 1.2rem;
}

.bs-faq-group:nth-of-type(6n+2) > h2 { background: var(--bs-sky); }
.bs-faq-group:nth-of-type(6n+3) > h2 { background: var(--bs-sand); }
.bs-faq-group:nth-of-type(6n+4) > h2 { background: var(--bs-lilac); }
.bs-faq-group:nth-of-type(6n+5) > h2 { background: var(--bs-coral); }

.bs-faq-item {
	border-bottom: 1px solid var(--bs-rule);
}

.bs-faq-item > summary {
	display: flex;
	align-items: baseline;
	gap: 0.75rem;
	padding: 0.85rem 0;
	cursor: pointer;
	font-family: var(--bs-display);
	font-size: 1.1rem;
	color: var(--bs-ink);
	list-style: none;
}

.bs-faq-item > summary::-webkit-details-marker { display: none; }

/* A plain +/- rather than a chevron glyph, so it renders identically
   everywhere without loading anything. */
.bs-faq-item > summary::before {
	content: "+";
	flex: 0 0 auto;
	width: 1.1rem;
	font-family: inherit;
	color: var(--bs-muted);
}

.bs-faq-item[open] > summary::before { content: "\2013"; }

.bs-faq-answer { padding: 0 0 1.1rem 1.85rem; }
.bs-faq-answer p { margin: 0 0 0.9rem; }
.bs-faq-answer p:last-child { margin-bottom: 0; }

/* The FAQ copy now lives in the page's own blocks so it can be edited and
   translated. Core's details block has no answer wrapper and the group
   heading is a sibling rather than a parent, so the same look is expressed
   against that shape. Both sets of selectors are kept: the shortcode still
   renders the old structure wherever it is used. */
.bs-faq > h2,
.bs-terms > h2 {
	font-family: inherit;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--bs-ink);
	background: var(--bs-mint);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.35rem 1rem;
	display: inline-block;
	margin: 2.75rem 0 1.2rem;
}

.bs-faq > h2:first-of-type,
.bs-terms > h2:first-of-type { margin-top: 0; }

.bs-faq > h2:nth-of-type(6n+2),
.bs-terms > h2:nth-of-type(6n+2) { background: var(--bs-sky); }
.bs-faq > h2:nth-of-type(6n+3),
.bs-terms > h2:nth-of-type(6n+3) { background: var(--bs-sand); }
.bs-faq > h2:nth-of-type(6n+4),
.bs-terms > h2:nth-of-type(6n+4) { background: var(--bs-lilac); }
.bs-faq > h2:nth-of-type(6n+5),
.bs-terms > h2:nth-of-type(6n+5) { background: var(--bs-coral); }

.bs-faq > .bs-faq-item > p { margin: 0 0 0.9rem 1.85rem; }
.bs-faq > .bs-faq-item > p:last-child { margin-bottom: 1.1rem; }

/* --------------------------------------------------------- social accounts */

/* Network name and handle, not brand marks. Every one of these companies
   publishes its own brand asset kit with its own rules; drawing their logos
   from memory would be both inaccurate and theirs rather than ours. Dropping
   in official assets later changes this block and nothing else. */

.bs-socials {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
}

.bs-social { margin: 0; }

.bs-social a {
	display: inline-flex;
	align-items: baseline;
	gap: 0.5rem;
	text-decoration: none;
	background: #fff;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.45rem 1rem;
	transition: background 0.15s ease;
}

.bs-social a:hover { background: var(--bs-mint); }

.bs-social-net {
	font-size: 0.6rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--bs-muted);
}

.bs-social-handle { color: var(--bs-ink); font-size: 0.92rem; }

/* The edit side: a fixed row per network, with the address prefix shown as
   static text so it is obvious only the handle is being typed. */

.bs-social-field { margin: 0 0 1rem; }
.bs-social-field:last-child { margin-bottom: 0; }

.bs-form .bs-social-field > label { margin: 0 0 0.35rem; }

.bs-social-input {
	display: flex;
	align-items: stretch;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 12px;
	background: #fff;
	overflow: hidden;
}

.bs-social-prefix {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	padding: 0 0.1rem 0 0.85rem;
	font-size: 0.85rem;
	color: var(--bs-muted);
	white-space: nowrap;
	background: var(--bs-paper);
	border-right: 1px solid var(--bs-rule);
}

.bs-form .bs-social-input input[type="text"] {
	border: 0;
	border-radius: 0;
	background: transparent;
	min-width: 0;
}

.bs-form .bs-social-input input[type="text"]:focus { box-shadow: none; }
.bs-social-input:focus-within { box-shadow: 4px 4px 0 var(--bs-sky-edge); }

@media (max-width: 560px) {
	.bs-social-input { flex-direction: column; }
	.bs-social-prefix {
		padding: 0.45rem 0.85rem 0;
		border-right: 0;
		border-bottom: 1px solid var(--bs-rule);
		font-size: 0.72rem;
	}
}

/* ------------------------------------------- the verification gate */

/* Selecting "show my name" without being verified withdraws the rest of the
   form rather than letting somebody write six paragraphs and be refused at
   the end. Driven by the radio itself, so it holds with scripting off. */

.bs-verify-gate { display: none; }

.bs-write:has(input[data-needs-verifying]:checked) .bs-verify-gate { display: block; }
.bs-write:has(input[data-needs-verifying]:checked) .bs-rest { display: none; }

.bs-verify-gate {
	margin: 1.25rem 0 0;
	padding: 1.35rem 1.5rem;
	background: var(--bs-sand);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
}

.bs-verify-gate h4 {
	font-family: var(--bs-display);
	font-weight: 400;
	font-size: 1.2rem;
	color: var(--bs-ink);
	margin: 0 0 0.6rem;
}

.bs-verify-gate p { margin: 0 0 0.9rem; font-size: 0.92rem; }
.bs-verify-gate p:last-child { margin-bottom: 0; }

.bs-form .bs-choice--locked { opacity: 0.75; }

.bs-form .bs-choice-lock {
	align-self: flex-start;
	margin-top: 0.4rem;
	font-size: 0.58rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--bs-sand-edge);
	border: 1px solid var(--bs-sand-edge);
	border-radius: 999px;
	padding: 0.25rem 0.7rem;
}

.bs-form .bs-choice-input:checked + .bs-choice--locked {
	background: var(--bs-sand);
	opacity: 1;
}

/* Without :has() the gate would never show, so the copy appears inline and
   the rest of the form stays put — a visible explanation beats a silent one. */
@supports not selector(:has(*)) {
	.bs-verify-gate { display: block; }
}

/* ---------------------------------------------------------- inline editing */

/* Save and Cancel sit directly under the field, never at the foot of the
   page: on a phone the keyboard covers the lower half of the screen, and a
   way out that is hidden behind it is not a way out. */

.bs-inline { margin: 0; max-width: var(--bs-measure); }

.bs-inline-field {
	width: 100%;
	padding: 0.8rem 1rem;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 12px;
	background: #fff;
	font: inherit;
	font-size: 1rem;
	line-height: 1.6;
	color: var(--bs-ink);
	resize: vertical;
}

/* 16px minimum, or iOS zooms the whole page in when the field takes focus
   and the reader is left scrolled sideways. */
@media (max-width: 700px) {
	.bs-inline-field { font-size: 16px; }
}

.bs-inline-field:focus { outline: 0; box-shadow: 4px 4px 0 var(--bs-sky-edge); }

.bs-inline-bar {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin-top: 0.85rem;
}

.bs-inline-bar .button {
	font-size: 0.7rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	background: var(--bs-ink);
	color: #fff;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.65rem 1.4rem;
	cursor: pointer;
}

.bs-inline-bar .button[disabled] { opacity: 0.6; cursor: default; }

.bs-inline-cancel {
	background: none;
	border: 0;
	padding: 0.65rem 0.4rem;
	font: inherit;
	font-size: 0.85rem;
	color: var(--bs-muted);
	cursor: pointer;
	text-decoration: underline;
}

.bs-inline-status { font-size: 0.85rem; color: var(--bs-muted); }

/* ------------------------------------------------------------------ terms */

.bs-draft-note {
	background: var(--bs-sand);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	padding: 1.1rem 1.35rem;
	margin: 0 0 2.5rem;
	font-size: 0.92rem;
	line-height: 1.6;
}

.bs-terms p { max-width: var(--bs-measure); }
.bs-terms .bs-faq-group > h2 { margin-bottom: 1rem; }

/* One person may write once in each lane. Where both exist the pair is
   marked, because a reader who cannot tell two reviews came from one person
   would otherwise weigh them as two. Never shown beside a named review — the
   label would identify the author of the anonymous one. */
.bs-paired {
	font-size: 0.6rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--bs-lilac-edge);
	border: 1px solid var(--bs-lilac-edge);
	border-radius: 999px;
	padding: 0.2rem 0.65rem;
	white-space: nowrap;
}


/* ============================================================ site chrome ==
   GeneratePress ships the header white with no rule under it, the wordmark in
   its own system sans, and the page on a cool grey. Everything the site
   actually contains is paper inside a 2px ink edge, so the chrome was the one
   part of the page that did not belong to the site. These are deliberate
   overrides of theme defaults, not values added where nothing was set.
   ========================================================================= */

/* The page ground, the header fill and the ink are set in the theme's own
   global colour palette, so GeneratePress produces them everywhere without
   this sheet overriding anything. The rule under the header is the one thing
   the theme has no setting for, so it lives here. */
/* The theme sets the body family in its own inline CSS, so this is the one
   place the stylesheet restates a family: everything outside .bs-wrap — page
   titles, the protective-order page — is rendered by WordPress and would
   otherwise keep the old system sans while the rest of the site changed. */
body, button, input, select, textarea { font-family: var(--bs-ui); }

/* WordPress prints the page title, so it is styled here rather than in the
   markup. Same display treatment as a profile name, for the same reason: it
   is the thing the page is about. */
.entry-title {
	font-family: var(--bs-display);
	font-weight: 800;
	letter-spacing: -0.025em;
	line-height: 1.05;
	color: var(--bs-ink);
}

.site-header { border-bottom: var(--bs-border) solid var(--bs-ink); }

/* The header row has to be allowed to wrap: on a narrow screen the search
   field drops to a line of its own rather than squeezing the wordmark. */
.inside-header { flex-wrap: wrap; gap: 0.9rem var(--bs-header-gap); }

/* The wordmark takes the same treatment as every other object on the site:
   a pastel fill, an ink edge, and a hard offset shadow. -webkit-text-stroke
   is the only way to put a real edge on letterforms, and it is supported
   everywhere that matters; where it is not, the fill colour is replaced by
   ink so the mark stays legible rather than turning into pale mush. */
.main-title a {
	font-family: var(--bs-display);
	font-size: 1.7rem;
	font-weight: 800;
	letter-spacing: -0.025em;
	color: var(--bs-ink);
}

@supports (-webkit-text-stroke: 2px black) {
	.main-title a {
		color: var(--bs-mint);
		-webkit-text-stroke: 2px var(--bs-ink);
		paint-order: stroke fill;
		text-shadow: 3px 3px 0 var(--bs-ink);
	}

	.main-title a:hover { color: var(--bs-sand); }
}

/* The header's three links are now all rendered by the plugin, side by side
   in one container, so they can be styled once. They used to be two plain
   links plus one theme menu item, and a theme menu item is a 60px-tall box
   while a plain link is a 16px one — which is exactly why the underline sat
   low under one and high under the other. Same element, same box, same
   underline. */
.bs-header-link {
	font-size: 0.66rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--bs-ink);
	text-decoration: none;
	white-space: nowrap;
	line-height: 1.2;
}

.bs-header-link:hover,
.bs-header-link:focus,
.bs-header-link.is-current { box-shadow: inset 0 -0.55em 0 var(--bs-sand); }

/* Search sits in the header on every page because it is the mechanic the
   site turns on. flex lets it take the middle on a wide screen; the wrap
   above lets it have its own row on a narrow one. */
.bs-header-search {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	flex: 1 1 15rem;

	/* A flex item will not shrink below its content by default, and the Search
	   button will not wrap its label, so on a 320px screen the form stayed
	   307px wide and pushed the whole header off the right edge. */
	min-width: 0;
	max-width: 26rem;
}

.bs-header-search input[type="search"] {
	flex: 1 1 auto;
	min-width: 0;
	padding: 0.5rem 0.95rem;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	background: #fff;
	font: inherit;
	font-size: 0.9rem;
	color: var(--bs-ink);
}

.bs-header-search input[type="search"]:focus {
	outline: 0;
	box-shadow: 3px 3px 0 var(--bs-sky-edge);
}

/* White, not mint. The header carries exactly one coloured call to action
   and it is "Add a person" — two mint pills side by side would be two. */
.bs-header-search button {
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	background: #fff;
	color: var(--bs-ink);
	padding: 0.5rem 1.1rem;
	font: inherit;
	font-size: 0.66rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	cursor: pointer;
}

.bs-header-search button:hover { background: var(--bs-sand); }

/* The header carries the two jobs somebody comes here to do — find a person,
   add a person — plus the account. Reporting, the protective-order guide and
   the terms are not jobs; they are things you need once, and they live in the
   footer. Trustpilot, Glassdoor and RateMyProfessors all draw the same line. */
.bs-header-actions {
	display: flex;
	align-items: center;
	gap: var(--bs-header-gap);
}

.bs-header-add {
	font-size: 0.66rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--bs-ink);
	text-decoration: none;
	background: var(--bs-mint);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	padding: 0.5rem 1.1rem;
	white-space: nowrap;
}

.bs-header-add:hover { background: var(--bs-sand); }

/* The control that leaves a profile for the sales page, and the one that
   acts once you are there. Both are the block's whole point, so both sit
   under the middle of it. */
.bs-verify-cta { text-align: center; margin: 1.1rem 0 0; }

.bs-verify-cta .button { display: inline-block; }

.bs-verify-for {
	text-align: center;
	font-size: 0.68rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--bs-ink);
	margin: 0 0 1.5rem;
}

.bs-plan .bs-form { margin-top: 1.2rem; }

.bs-plan .bs-hint { margin-top: 1.2rem; text-align: center; }

/* Wordmark, search, then the three links. */
.site-branding { order: 1; }
.bs-header-search { order: 2; }
.bs-header-actions { order: 3; }

/* Narrow: the wordmark keeps the left, the search takes what is left of that
   row and finishes against the right edge, and the three links drop to a row
   of their own finishing against the same edge. One right margin down the
   header instead of three things fighting for one line. */
@media (max-width: 900px) {
	/* GeneratePress turns the header into a centred COLUMN below 768px
	   (.inside-header{flex-direction:column;text-align:center}). That is the
	   theme default being overridden here, not a value being added: the row
	   has to stay a row for the wordmark to keep the left and for the links to
	   finish against the right edge. */
	.inside-header {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		text-align: left;
		row-gap: 0.85rem;
	}

	.main-title a { font-size: 2.05rem; }

	.bs-header-search {
		flex: 1 1 auto;
		max-width: none;
		margin-left: auto;
		justify-content: flex-end;
	}

	.bs-header-actions {
		flex: 0 0 100%;
		justify-content: flex-end;
	}
}

@media (max-width: 480px) {
	.bs-header-search { flex-basis: 100%; margin-left: 0; }

	/* The wordmark has a row to itself down here, and the theme centres a
	   branding block that is alone on its line. It stays on the left, where
	   it is at every other width. */
	.site-branding { text-align: left; }

	/* A flex item will not shrink below its content by default, so three
	   nowrap links on one line pushed past the right margin rather than
	   wrapping. Letting the row wrap is what keeps them inside it. */
	/* Tight enough that the three links still share one line on a 390px phone,
	   which is most of them. Narrower than that they wrap, still ranged right. */
	.bs-header-actions {
		flex-wrap: wrap;
		min-width: 0;
		gap: 0.5rem 0.7rem;
	}

	.bs-header-add { padding: 0.5rem 0.9rem; }
}

/* ================================================================= the name */

/* Set at the size the page is actually about, inside the masthead card with
   the portrait and the headline, so the three read as one object instead of a
   title with an unrelated box beneath it. */
.bs-name {
	font-family: var(--bs-display);
	font-size: clamp(1.85rem, 4.4vw, 2.35rem);
	line-height: 1.05;
	letter-spacing: -0.025em;
	font-weight: 800;
	color: var(--bs-ink);
	margin: 0 0 0.5rem;
}

/* ====================================================================== hero */

/* The pages without a nav rail get their own column width, so the hero, the
   cards and the mint prompt all finish on one edge. Without it the prompt ran
   the full 1120px while the search field above it stopped at 592. */
.bs-find {
	max-width: 48rem;
	margin-inline: auto;
}


/* The homepage runs wider than the other hero page because it carries a
   second column: 37rem of prose — the same measure as everywhere else — a
   3rem gutter and a 21rem rail come to 61rem, inside the 70rem the theme
   gives the content area. The hero is untouched by the extra width; its
   strap and its search field already cap themselves at the measure. */
.bs-home {
	max-width: 61rem;
	margin-inline: auto;
}

/* The home page is the search and then the people. The explainer prose that
   used to sit between them has gone: somebody who came here came to look a
   person up, and what the site is and what it costs are one link away in the
   header and the footer. */
.bs-home-featured { margin: 0; }

/* ---------------------------------------------------------------- account */

/* A subscription is a line: what it is, what it costs, and the way out of it.
   The way out is not hidden — a service that buries cancelling is the service
   people complain about — but it is quiet, because it is not what most
   people came to this page to do. */
.bs-subs { list-style: none; margin: 0 0 2rem; padding: 0; }

.bs-sub {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 1rem;
	padding: 0.9rem 0;
	border-bottom: 1px solid var(--bs-rule);
}

.bs-sub:last-child { border-bottom: 0; }

.bs-sub-name { flex: 1 1 12rem; font-family: var(--bs-display); font-size: 1.05rem; }

/* Narrow enough and a long name shares its line with the price, wraps to two
   lines around it, and the two read as one tangled sentence. Below here the
   name takes the line and the price and the control sit under it. */
@media (max-width: 600px) {
	.bs-sub { row-gap: 0.65rem; }
	.bs-sub-name { flex: 1 1 100%; }
}

.bs-sub-name a { color: var(--bs-ink); text-decoration: none; box-shadow: inset 0 -0.3em 0 var(--bs-sand); }

.bs-sub-name a:hover { box-shadow: inset 0 -0.9em 0 var(--bs-sand); }

.bs-sub-plan, .bs-sub-note {
	font-size: 0.62rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--bs-ink);
}

/* The one place on the site where a button is NOT centred, and deliberately:
   it belongs to its own row, at the end of it, not under the middle of the
   page. */
.bs-sub .bs-form { margin: 0 0 0 auto; }

.bs-sub .bs-form .button { margin-left: 0; margin-right: 0; }

/* A settings label is a sentence, not a field name, so it is not shouted. */
.bs-checks { list-style: none; margin: 0 0 1.25rem; padding: 0; }

.bs-checks li { padding: 0.35rem 0; }

.bs-checks label {
	display: flex;
	align-items: baseline;
	gap: 0.6rem;
	font-size: 0.95rem;
	letter-spacing: 0;
	text-transform: none;
	font-weight: 400;
	cursor: pointer;
}

.bs-follow { margin: 0 0 2.25rem; }

/* Signed out, the account page is one sentence and one button. The sentence
   was ranged left under a centred button, which reads as two unrelated things
   rather than one prompt. */
.bs-account-out { text-align: center; }

/* Sign out is a link, not the theme default blue. */
.bs-account .bs-note a {
	color: var(--bs-ink);
	text-decoration: none;
	box-shadow: inset 0 -0.3em 0 var(--bs-sand);
}

.bs-account .bs-note a:hover { box-shadow: inset 0 -0.9em 0 var(--bs-sand); }


.bs-hero { margin: 0 0 2.75rem; }


/* Centred on the three pages whose whole content is the search box and what
   surrounds it — the homepage, find and add. The column is centred in the
   content area as well as the text inside it, because at 61rem inside a 70rem
   container it was sitting left with the slack all on one side. */
/* .bs-find rather than .bs-find .bs-hero, because the add page writes the
   title, strap and field as bare children with no hero wrapper round them —
   matching on the wrapper centred half of that page and left the heading
   where it was. */
.bs-home .bs-hero,
.bs-find { text-align: center; }


/* The result cards keep their own alignment. A centred name and headline
   beside a left-hand portrait reads as a mistake rather than a choice. */
.bs-find .bs-cards { text-align: left; }


/* One result should sit under the middle of a centred page, not against the
   left edge of an invisible grid. Bounded tracks rather than 1fr, because with
   1fr the tracks always fill the width and there is nothing spare to centre. */
.bs-find .bs-cards {
	grid-template-columns: repeat(auto-fit, minmax(17rem, 22rem));
	justify-content: center;
}


/* .bs-form carries margin: 1.5rem 0, which is right in a left-ranged column
   and wrong here: the add page's second step is a 37rem form inside a 48rem
   centred wrapper, so the whole card sat 176px left of the title above it. */
.bs-home .bs-hero-strap,
.bs-find .bs-hero-strap,
.bs-home .bs-hero-search,
.bs-find .bs-hero-search,
.bs-find .bs-form,
.bs-find > .bs-add-prompt { margin-inline: auto; }


.bs-home .bs-hero-search,
.bs-find .bs-hero-search { justify-content: center; }

.bs-hero-title {
	font-family: var(--bs-display);
	font-size: clamp(2.1rem, 6vw, 3.4rem);
	line-height: 1.02;
	letter-spacing: -0.03em;
	font-weight: 800;
	color: var(--bs-ink);
	margin: 0 0 0.75rem;
}

.bs-hero-strap {
	max-width: var(--bs-measure);
	margin: 0 0 1.75rem;
	font-size: 1.05rem;
	color: var(--bs-body);
}

.bs-hero-search {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	max-width: var(--bs-measure);
}

.bs-hero-search input[type="search"] {
	flex: 1 1 14rem;
	min-width: 0;
	padding: 0.9rem 1.2rem;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	background: #fff;
	font: inherit;
	font-size: 1.05rem;
	color: var(--bs-ink);
}

.bs-hero-search input[type="search"]:focus {
	outline: 0;
	box-shadow: 4px 4px 0 var(--bs-sky-edge);
}

/* Used bare on the add page rather than inside .bs-hero, so it carries no
   bottom margin of its own and the heading under it was sitting on top of it. */
.bs-find > .bs-hero-search { margin-bottom: 2.5rem; }

/* =============================================================== people list */

.bs-cards {
	list-style: none;
	margin: 0 0 2.5rem;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr));
	gap: 1rem;
}

.bs-card { margin: 0; }

.bs-card-link {
	display: flex;
	gap: 1rem;
	align-items: center;
	height: 100%;
	padding: 1rem 1.1rem;
	background: #fff;
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 14px;
	text-decoration: none;
	box-shadow: none;
}

.bs-card-link:hover { background: var(--bs-sand); }

.bs-card-portrait {
	flex: 0 0 auto;
	width: 64px;
	height: 64px;
	border-radius: 50%;
	overflow: hidden;
	background: var(--bs-rule);
	border: var(--bs-border) solid var(--bs-ink);
}

.bs-card-img { display: block; width: 100%; height: 100%; object-fit: cover; }

.bs-card-text { display: block; min-width: 0; }

.bs-card-name {
	display: block;
	font-family: var(--bs-display);
	font-weight: 600;
	letter-spacing: -0.02em;
	font-size: 1.15rem;
	line-height: 1.25;
	color: var(--bs-ink);
}

.bs-card-headline {
	display: block;
	margin-top: 0.2rem;
	font-size: 0.92rem;
	line-height: 1.45;
	color: var(--bs-body);
}

.bs-card-meta {
	display: block;
	margin-top: 0.4rem;
	font-size: 0.63rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--bs-muted);
}


/* The rating on a card, in place of the occupation-and-town line where a
   card is not being used to tell two people of the same name apart. The
   star colour and tracking come from .bs-stars, which the profile page
   already sets; only the size is a card's business. */
.bs-card-rating {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.15rem 0.5rem;
	margin-top: 0.45rem;
}


.bs-card-rating .bs-stars {
	font-size: 0.95rem;
	line-height: 1;
}


.bs-card-score {
	font-family: var(--bs-display);
	font-weight: 700;
	font-size: 0.95rem;
	line-height: 1;
	color: var(--bs-ink);
}


/* The same micro-label as the line it replaces, so a card carrying a rating
   and a card carrying an occupation still read as the same object. */
.bs-card-reviews {
	font-size: 0.63rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--bs-muted);
}

.bs-found {
	margin: 0 0 1rem;
	font-size: 0.66rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--bs-muted);
}

.bs-find .bs-empty { margin: 0 0 2rem; }

/* The bar that turns a failed search into a profile. Mint, like everything
   else on the site that is the thing to do next. */
.bs-add-prompt {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem 1.5rem;

	/* As wide as what is in it, and no wider. Left to stretch it ran the full
	   column with its content sitting in the left half, which reads as a panel
	   that failed to load rather than as a thing to press. fit-content already
	   clamps to the space available, so on a narrow screen it still fills the
	   column and the flex wrap puts the button under the question. */
	width: fit-content;
	background: var(--bs-mint);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	padding: 1.5rem 1.75rem;
	margin: 0 0 2.5rem;
}

.bs-add-lead {
	margin: 0;
	font-family: var(--bs-display);
	font-weight: 600;
	letter-spacing: -0.015em;
	font-size: 1.2rem;
	color: var(--bs-ink);
}

.bs-add-prompt .bs-hint { margin: 0; }


/* The bar was built for a short question with a button beside it. On the add
   page it carries a paragraph instead, and fit-content then made it as wide
   as the longest sentence — one very long line of small text in a green
   band. Capping the text at a readable width makes the bar that width, and
   the flex wrap drops the button underneath where it belongs. */
.bs-add-lead {
	max-width: 26rem;
	font-size: 1rem;
	line-height: 1.55;
	margin: 0;
}


/* Two lines or more and the button is no longer a thing sitting beside a
   question, so it starts the next line rather than floating against the
   middle of a paragraph.

   justify-content does the narrow case with one declaration and no
   breakpoint: the box is fit-content, so while everything sits on one line
   it is exactly as wide as its content and centring changes nothing. The
   moment the button wraps onto a line of its own, that line centres under
   the question instead of starting at the left margin. */
.bs-add-prompt {
	align-items: flex-start;
	justify-content: center;
}


.bs-add-prompt .button { align-self: center; margin-top: 0.9rem; }


/* Both paragraphs are capped, not only the lead: fit-content sizes the bar to
   its widest child, so an uncapped hint stretched the box to the full column
   and left one very long line of 13px text inside a green band.

   Ranged left inside the box, too. The page around it is centred, which is
   right for a heading and a search field and wrong for three lines of prose. */
.bs-add-prompt {
	text-align: left;
	gap: 0.35rem 1.5rem;
}


.bs-add-prompt .bs-hint {
	max-width: 26rem;
	font-size: 0.95rem;
	line-height: 1.55;
	margin: 0;
}


.bs-add-prompt .bs-add-lead { font-weight: 600; }


/* One component, two content shapes. Under a search result it carries a
   paragraph as well as the question, and the side-by-side arrangement then
   leaves the button floating in the middle of an empty half. :has() picks out
   the longer form without a second class in the markup: heading, paragraph,
   button, in one column, at the width the paragraph already reads at. */
.bs-add-prompt:has(.bs-hint) {
	display: block;
	max-width: 30rem;
	padding: 1.6rem 1.75rem 1.75rem;
}


.bs-add-prompt:has(.bs-hint) .bs-add-lead { margin-bottom: 0.5rem; }


.bs-add-prompt:has(.bs-hint) .bs-hint { max-width: none; }


.bs-add-prompt:has(.bs-hint) .button { margin-top: 1.25rem; }


/* Sand rather than the mint every other button on the site wears, because
   this is the only one that sits inside a mint panel: mint on mint left the
   control relying on its border alone to read as a control. Shape, ink edge,
   shadow and press behaviour are untouched — it is the same button, just not
   camouflaged against its own background. */
/* margin-top on the shared button rule is there for the forms, where the
   button follows a field and has to clear it. Here it stands BESIDE the
   question rather than under anything, and the inherited 1.4rem was pushing
   it 22px below the optical centre and making the panel that much taller
   than the things inside it. */
.bs-add-prompt .button {
	background: var(--bs-sand);
	margin-top: 0;
}

/* The two attestations on the add form. Not uppercase micro-labels like every
   other label here: these are sentences somebody has to read and agree to, and
   setting them in the interface voice makes them skim-past furniture. */
/* A subheading inside a form. The uppercase micro-label is for field names;
   this separates two groups of fields and has to read louder than one. */
.bs-form-sub {
	font-family: var(--bs-display);
	font-weight: 700;
	font-size: 1.05rem;
	letter-spacing: -0.015em;
	color: var(--bs-ink);
	margin: 2rem 0 0.5rem;
}

.bs-botcheck { margin: 1.5rem 0 0; }

.bs-check { margin: 1.25rem 0 0; }

.bs-check label {
	display: flex;
	gap: 0.65rem;
	align-items: flex-start;
	margin: 0;
	font-size: 0.93rem;
	line-height: 1.55;
	letter-spacing: 0;
	text-transform: none;
	color: var(--bs-body);
}

.bs-check input {
	flex: 0 0 auto;
	width: 1.1rem;
	height: 1.1rem;
	margin-top: 0.2rem;
	accent-color: var(--bs-mint-edge);
}

/* ================================================================= homepage */

.bs-home-heading {
	font-family: var(--bs-display);
	font-size: 1.4rem;
	letter-spacing: -0.02em;
	font-weight: 700;
	color: var(--bs-ink);
	margin: 0 0 1.1rem;
}

/* =================================================================== footer */

.bs-footer-links {
	margin: 0 0 0.5rem;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.4rem 1.4rem;
}

.bs-footer-links a {
	font-size: 0.66rem;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--bs-ink);
	text-decoration: none;
}

.bs-footer-links a:hover { box-shadow: inset 0 -0.55em 0 var(--bs-sand); }

/* GeneratePress tints the mobile toggle with a 2% black wash, which reads as
   a grey smudge on paper. It is a control like any other here. */
.mobile-menu-control-wrapper .menu-toggle { background-color: transparent; }

.bs-footer-note {
	margin: 0;
	font-size: 0.83rem;
	color: var(--bs-muted);
}



/* ==================================================================== titles
   The same treatment as the wordmark — pastel fill inside an ink edge — minus
   the offset shadow, which stays the logo's alone. paint-order puts the
   stroke behind the fill so the letterforms keep their weight instead of
   being eaten from both sides. These come last in the sheet because each of
   the three rules above already sets a colour.
   ======================================================================== */

.entry-title,
.bs-hero-title,
.bs-name {
	color: var(--bs-lilac);
	-webkit-text-stroke: 3px var(--bs-ink);
	paint-order: stroke fill;
	letter-spacing: 0.01em;
}


/* Without a stroke the pastel fill on its own is unreadable, so fall back to
   solid ink rather than to pale mush. */
@supports not ((-webkit-text-stroke: 2px black) or (text-stroke: 2px black)) {
	.entry-title,
	.bs-hero-title,
	.bs-name {
		color: var(--bs-ink);
	}
}


/* WordPress prints these above the content, so they are the page's own title
   and centre with the column. .bs-name is left where it is: it sits inside
   the masthead card beside the portrait, where centring would pull it away
   from the picture it belongs to. */
/* The page title above it is already hollow. Two hollow headings in the same
   colour, stacked, read as one thing that has gone wrong rather than as a
   hierarchy — so the second is solid ink and smaller. */
.entry-title { text-align: center; }


.bs-write-title { text-align: center; }


/* It was borrowing the review-count class, which is why it looked like stray
   small print rather than the way back. Same quiet grey button as the other
   routes out of a page, centred over the heading it belongs to. */
.bs-back {
	text-align: center;
	margin: 0 0 1.25rem;
}


.bs-back .button { margin-top: 0; }


/* The confirmation belongs where the eye already is after a submit — the top
   of the page — not at the foot of a form somebody has just scrolled past. */
.bs-done {
	background: var(--bs-mint);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	padding: 0.9rem 1.25rem;
	margin: 0 0 1.5rem;
	text-align: center;
	font-weight: 600;
}



/* ===================================================== reviews and plans */

/* A rating box jumps to the reviews it summarises, so it has to stop looking
   like a panel and start looking like a control on hover. */
.bs-lane { text-decoration: none; transition: transform 0.1s ease, box-shadow 0.1s ease; }


.bs-lane:hover { transform: translate(-2px, -2px); box-shadow: 4px 4px 0 var(--bs-ink); }


/* With no reviews under it the button is the whole section rather than a tool
   in the corner, so it stands in the middle where the list would have been. */
.bs-write--empty { text-align: center; margin: 0.5rem 0 0; }


/* Quiet grey, because this is a route out of the page rather than the thing
   the page wants you to do. Same shape as every other button so it still
   reads as one. */
/* Scoped under .bs-wrap so it outranks the shared button rule, which names two
   classes and would otherwise win on specificity and paint these mint. A way
   back is not the thing the page wants you to press. */
.bs-wrap .bs-button--quiet {
	background: var(--bs-sand);
	box-shadow: 3px 3px 0 var(--bs-ink);
}


.bs-review-reply { margin: 0.9rem 0 0; }


/* The two cards are the same height because the grid stretches them, so the
   button in the shorter one used to float in the middle of its own card while
   the other sat at the bottom. A column with the last child pushed down puts
   both on the same line. */
.bs-plan {
	display: flex;
	flex-direction: column;
}

.bs-plan > :last-child { margin-top: auto; }

.bs-plans {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
	gap: 1.25rem;
	margin: 1.5rem 0 2.5rem;
}


.bs-plan {
	background: var(--bs-sky);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: var(--bs-radius);
	padding: 1.35rem 1.5rem 1.6rem;
}


.bs-plan--verified { background: var(--bs-mint); }


.bs-plan h2 {
	font-family: var(--bs-display);
	font-size: 1.25rem;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--bs-ink);
	margin: 0 0 0.35rem;
}


.bs-plan-price {
	font-family: var(--bs-display);
	font-size: 1.6rem;
	line-height: 1.1;
	color: var(--bs-ink);
	margin: 0 0 0.9rem;
}


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


.bs-plan-list li {
	font-size: 0.92rem;
	line-height: 1.5;
	padding: 0.4rem 0;
	border-bottom: 1px solid rgba(20, 22, 26, 0.12);
}


.bs-plan-list li:last-child { border-bottom: 0; }



/* ================================================ report, add, uploads */

/* The prose above the form ran the full 1120px container while the form under
   it stopped at the measure, so the two had different right edges and the
   paragraphs were the widest text on the site. One column, centred. */
.bs-takedown {
	max-width: var(--bs-measure);
	margin-inline: auto;
}


/* margin-top on the shared button rule is for the forms, where a button
   follows a field. In a hero search it sits BESIDE the field, and the
   inherited 1.4rem was dropping it below the field's centre line on the
   homepage, on find and on add. */
.bs-hero-search .button { margin-top: 0; }


.bs-hero-search { align-items: center; }


/* The add page asks a two-clause question, and at the full measure the break
   fell mid-clause. Narrower, it breaks at the comma, where the sentence
   already pauses. */
.bs-add > .bs-hero-strap { max-width: 27rem; }


/* File inputs are the one control the browser draws itself. ::file-selector-button
   is the standard way to restyle that button, so the upload control matches
   every other button here without hiding the input behind a fake label. */
.bs-wrap input[type="file"] { font: inherit; font-size: 0.9rem; color: var(--bs-body); }


.bs-wrap input[type="file"]::file-selector-button {
	margin-right: 0.9rem;
	padding: 0.5rem 1.2rem;
	background: var(--bs-sand);
	color: var(--bs-ink);
	border: var(--bs-border) solid var(--bs-ink);
	border-radius: 999px;
	font: inherit;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	cursor: pointer;
	box-shadow: 3px 3px 0 var(--bs-ink);
	transition: transform 0.1s ease, box-shadow 0.1s ease;
}


.bs-wrap input[type="file"]::file-selector-button:hover {
	transform: translate(2px, 2px);
	box-shadow: 1px 1px 0 var(--bs-ink);
}



/* Under each photograph, quiet: a way to object, not an invitation to. */
.bs-photo-flag {
	display: block;
	margin-top: 1.6rem;
	font-size: 0.6rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-align: center;
	color: var(--bs-muted);
	text-decoration: none;
}


.bs-photo-flag:hover { color: var(--bs-ink); box-shadow: inset 0 -0.5em 0 var(--bs-sand); }



/* The protective-order prompt on the review form: the route out is centred
   under what it follows, like every other single control in a panel. */
.bs-assault-cta { text-align: center; margin: 1.25rem 0 0; }



/* The pill lies over the foot of the photograph rather than under it, and it
   stays one line: two lines of caption climbing up the image is what made it
   look detached. */
.bs-photo figcaption {
	bottom: 0.35rem;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}



/* No button on this site is ranged left. A button is the thing the block is
   asking for, and it sits under the middle of what it follows.

   Two different jobs, and conflating them is what kept leaving buttons on the
   left margin. text-align centres a container's inline content, so it belongs
   on the block AROUND a button — never on the button, where it only centres
   the label. A button sitting in a block that ranges its text left has to be
   centred by its own box instead, and auto margins only do that once it is
   display: block with a width of its own.

   Order matters too: .bs-form is the same specificity as the centring rule,
   so with it last it was quietly winning and putting the claim button back on
   the left margin. */
.bs-form { text-align: left; }

.bs-claim,
.bs-form.bs-form--inline,
.bs-write,
.bs-review-reply { text-align: center; }

.bs-form .button,
.bs-form button.button,
.bs-account .button,
.bs-gate .button,
.bs-back .button {
	display: block;
	width: fit-content;
	margin-left: auto;
	margin-right: auto;
}

.bs-form .bs-submit,
.bs-form p:last-child { text-align: center; }
