/*
 * Contact and Partner with Us.
 *
 * Everything here is namespaced away from the classes the rest of the site
 * already owns. `.pub-field` is declared twice in this codebase with
 * contradictory rules and `.pub-facts` is a navy-band grid in the destinations
 * sheet; a third claimant on either would win or lose on stylesheet order,
 * which is not a thing to build on. Hence `.pub-enq__field` and `.pub-cfacts`.
 *
 * Tokens only — no literal colours or sizes except where a value is genuinely
 * one-off and says so.
 */

/*
 * The same gutter as the rest of the site.
 *
 * Everywhere else, content sits in `.pub-shell` — `min(1320px, 100%)` with
 * `padding-inline: clamp(20px, 5vw, 64px)`, which comes to 1192px of content on
 * a 1440px screen. These pages are laid out by WordPress's constrained layout
 * instead, which caps the box at 1320px and adds no side padding at all. At a
 * viewport of exactly 1320px that means text touching both edges of the
 * browser, and at any width it means these pages are measurably wider than
 * every other page on the site.
 *
 * Matching the shell is the point: "full width" means the same width as the
 * home page, not a second geometry that happens to be larger.
 */
.pub-band > .wp-block-post-title,
.pub-band > .wp-block-post-content {
	padding-inline: clamp(20px, 5vw, 64px);
}

/* ------------------------------------------------------------ the head --- */

/*
 * Greeting left, proposition right. Each is on its own axis so the panel is
 * never answering a sentence that has scrolled off the top of the screen.
 */
.pub-contact {
	display: grid;
	grid-template-columns: 0.85fr 1.15fr;
	gap: var(--wp--preset--spacing--70);
	align-items: start;
	margin-block-end: var(--wp--preset--spacing--80);
}

@media (max-width: 860px) {
	.pub-contact {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--wp--preset--spacing--50);
	}
}

.pub-welcome__big {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--display);
	font-weight: 800;
	line-height: 0.95;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--navy);
	margin: 0 0 var(--wp--preset--spacing--30);
}

.pub-welcome__gloss {
	font-size: var(--wp--preset--font-size--lead);
	line-height: 1.6;
	color: var(--wp--preset--color--grey-700);
	margin: 0;
	max-inline-size: 42ch;
}

.pub-contact__title {
	font-size: var(--wp--preset--font-size--title);
	line-height: 1.1;
	margin: 0 0 var(--wp--preset--spacing--30);
}

.pub-contact__lede {
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.6;
	color: var(--wp--preset--color--grey-700);
	margin: 0 0 var(--wp--preset--spacing--50);
}

/* ----------------------------------------------------------- the panel --- */

.pub-panel {
	padding: var(--wp--preset--spacing--50);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-100);
	border-radius: var(--wp--custom--radius--lg);
	background: var(--wp--preset--color--off-white);
}

/*
 * The eyebrow is Marigold by default, which is right on the navy bands it was
 * written for and unreadable on this near-white panel. Navy here, scoped, so
 * the default is left alone for everywhere else.
 */
.pub-panel .pub-eyebrow {
	color: var(--wp--preset--color--navy);
	margin-block-start: var(--wp--preset--spacing--40);
}

.pub-panel .pub-eyebrow:first-child {
	margin-block-start: 0;
}

.pub-hint {
	font-size: var(--wp--preset--font-size--body-sm);
	line-height: 1.55;
	color: var(--wp--preset--color--grey-700);
	margin: 0 0 var(--wp--preset--spacing--20);
}

.pub-hint a,
.pub-cfacts a {
	color: var(--wp--preset--color--blue);
	font-weight: 700;
	text-underline-offset: 3px;
}

/* ------------------------------------------------------------- facts ----- */

.pub-cfacts {
	margin: 0 0 var(--wp--preset--spacing--40);
	display: grid;
	gap: var(--wp--preset--spacing--30);
}

.pub-cfacts--wide {
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: var(--wp--preset--spacing--50);
	margin-block-end: var(--wp--preset--spacing--60);
}

.pub-cfacts > div + div {
	padding-block-start: var(--wp--preset--spacing--30);
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-100);
}

/* Side by side, each column is its own item — a rule across the top of one
   would read as a divider between two unrelated things. */
.pub-cfacts--wide > div + div {
	padding-block-start: 0;
	border-block-start: 0;
}

.pub-cfacts dt {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--micro);
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--grey-500);
	margin-block-end: 4px;
}

.pub-cfacts dd {
	margin: 0;
	font-size: var(--wp--preset--font-size--body);
	font-weight: 700;
	line-height: 1.3;
	color: var(--wp--preset--color--navy);
}

.pub-cfacts dd small {
	display: block;
	margin-block-start: 6px;
	font-size: var(--wp--preset--font-size--body-sm);
	font-weight: 400;
	line-height: 1.5;
	color: var(--wp--preset--color--grey-700);
}

.pub-statement {
	margin-block: var(--wp--preset--spacing--60) 0;
	padding: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
	border-inline-start: var(--wp--custom--border--strong) solid var(--wp--preset--color--yellow);
	background: var(--wp--preset--color--off-white);
	border-radius: 0 var(--wp--custom--radius--md) var(--wp--custom--radius--md) 0;
	font-size: var(--wp--preset--font-size--body-sm);
	line-height: 1.6;
	color: var(--wp--preset--color--grey-700);
}

.pub-brief-intro {
	margin-block: var(--wp--preset--spacing--70) var(--wp--preset--spacing--40);
	max-inline-size: 76ch;
}

/*
 * Left, not centred.
 *
 * WordPress's constrained layout writes `margin-left: auto !important` onto
 * every direct child, which centres anything narrower than the container — so
 * the heading sat in the middle of the page while the form under it, wrapped
 * in a block div and therefore full width, stayed left. Two elements meant to
 * line up, one of them indented by a rule neither asked for.
 *
 * `!important` is the only thing that beats `!important`. This is the one
 * place in this sheet that uses it, and it is here because the declaration it
 * overrides is machine-generated and cannot be reached any other way.
 */
.pub-band .pub-brief-intro,
.pub-band .pub-statement {
	margin-inline: 0 !important;
}

/*
 * The page runs the full 1320px shell; prose and forms do not.
 *
 * A line of body text 1300px long is unreadable, and the enquiry form's field
 * rows are `auto-fit` — given that much room they fan out to six columns and
 * the eye has nowhere to land. Both keep their own measure inside the wider
 * page. This caps `.pub-enquiry` only: the partner form is `.pub-enq` and is
 * already inside a 440px column.
 */
.pub-enquiry {
	max-inline-size: 980px;
}

.pub-statement {
	max-inline-size: 90ch;
}

.pub-brief-intro h2 {
	font-size: var(--wp--preset--font-size--subhead);
	line-height: 1.15;
	margin: 0 0 var(--wp--preset--spacing--20);
}

/* -------------------------------------------------------------- forms ---- */

.pub-enquiry,
.pub-enq {
	display: grid;
	gap: var(--wp--preset--spacing--50);
	padding: var(--wp--preset--spacing--60);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-100);
	border-radius: var(--wp--custom--radius--lg);
	background: var(--wp--preset--color--white);
}

@media (max-width: 600px) {
	.pub-enquiry,
	.pub-enq {
		padding: var(--wp--preset--spacing--40);
	}
}

.pub-enquiry fieldset,
.pub-enq fieldset {
	margin: 0;
	padding: 0;
	border: 0;
	display: grid;
	gap: var(--wp--preset--spacing--30);
}

.pub-enquiry legend,
.pub-enq legend {
	/*
	 * A legend is not a grid item — it is taken out of flow by the browser,
	 * so `gap` never applies to it and it needs its own bottom margin. Float
	 * plus a clearing width is the reliable way to make it behave like a
	 * block across engines.
	 */
	float: left;
	inline-size: 100%;
	padding: 0;
	margin-block-end: var(--wp--preset--spacing--30);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--lead);
	font-weight: 800;
	line-height: 1.2;
	color: var(--wp--preset--color--navy);
}

.pub-enq__grid {
	display: grid;
	gap: var(--wp--preset--spacing--30);
}

.pub-enq__grid--2 {
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.pub-enq__grid--3 {
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

.pub-enq__field {
	margin: 0;
	display: grid;
	gap: 6px;
	min-inline-size: 0;
}

.pub-enq__field > label {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--micro);
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--grey-500);
}

.pub-enq__field input,
.pub-enq__field select,
.pub-enq__field textarea {
	inline-size: 100%;
	box-sizing: border-box;
	min-block-size: var(--wp--custom--control--height);
	padding: 10px 14px;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-300);
	border-radius: var(--wp--custom--radius--md);
	background: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--body-sm);
	line-height: 1.5;
	color: var(--wp--preset--color--navy);
}

.pub-enq__field textarea {
	min-block-size: 0;
	resize: vertical;
}

.pub-enq__field input:focus-visible,
.pub-enq__field select:focus-visible,
.pub-enq__field textarea:focus-visible {
	outline: 2px solid var(--wp--preset--color--blue);
	outline-offset: 1px;
	border-color: var(--wp--preset--color--blue);
}

.pub-enq__field input::placeholder,
.pub-enq__field textarea::placeholder {
	color: var(--wp--preset--color--grey-500);
}

/*
 * The file input. Browsers will not let us restyle the button inside it, so
 * the box around it is what gets dressed — a dashed drop-target that reads as
 * "put something here" rather than as a form control that lost its styling.
 */
.pub-enq__field--file input[type="file"] {
	padding: var(--wp--preset--spacing--30);
	border-style: dashed;
	border-width: var(--wp--custom--border--strong);
	border-color: var(--wp--preset--color--grey-300);
	background: var(--wp--preset--color--off-white);
	font-size: var(--wp--preset--font-size--body-sm);
	cursor: pointer;
}

.pub-enq__field--file input[type="file"]:hover {
	border-color: var(--wp--preset--color--blue);
}

.pub-enq__field--file input[type="file"]::file-selector-button {
	margin-inline-end: var(--wp--preset--spacing--30);
	padding: 6px 14px;
	border: 0;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--micro);
	font-weight: 700;
	cursor: pointer;
}

/* A checkbox sitting in a row of labelled fields has no label of its own to
   line up with, so it takes the height back manually. */
.pub-enq__field--check {
	align-content: end;
	padding-block-end: 10px;
}

/* Consent reads as a sentence, not as a control with a label bolted on. */
.pub-enq__field--consent {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: start;
	gap: var(--wp--preset--spacing--20);
}

.pub-enq__field--consent input {
	inline-size: 18px;
	block-size: 18px;
	min-block-size: 0;
	padding: 0;
	margin-block-start: 2px;
}

.pub-enq__field--consent label {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--body-sm);
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
	line-height: 1.5;
	color: var(--wp--preset--color--grey-700);
}

/* --------------------------------------------------------- the choices --- */

.pub-enq__choices {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
	gap: 10px;
}

.pub-enq__choices--stack {
	grid-template-columns: minmax(0, 1fr);
}

/*
 * A whole tappable row rather than a 13px square with words beside it. The
 * label is the target, which is the difference between a form that works on a
 * phone and one that does not.
 */
.pub-enq__choice {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: start;
	gap: 10px;
	min-block-size: var(--wp--custom--control--touch-min);
	padding: 11px 14px;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-300);
	border-radius: var(--wp--custom--radius--md);
	background: var(--wp--preset--color--white);
	font-size: var(--wp--preset--font-size--body-sm);
	line-height: 1.4;
	color: var(--wp--preset--color--navy);
	cursor: pointer;
	transition: border-color var(--wp--custom--dur--fast) var(--wp--custom--ease--standard),
		background-color var(--wp--custom--dur--fast) var(--wp--custom--ease--standard);
}

.pub-enq__choice:hover {
	border-color: var(--wp--preset--color--blue);
	background: var(--wp--preset--color--off-white);
}

.pub-enq__choice input {
	inline-size: 18px;
	block-size: 18px;
	margin: 1px 0 0;
	accent-color: var(--wp--preset--color--blue);
}

/* :has is the only way to style the row from the state of the input inside
   it without a script. Where it is unsupported the row simply does not
   highlight — the checkbox itself still shows the answer. */
.pub-enq__choice:has(input:checked) {
	border-color: var(--wp--preset--color--navy);
	background: var(--wp--preset--color--off-white);
	font-weight: 700;
}

.pub-enq__choice:has(input:focus-visible) {
	outline: 2px solid var(--wp--preset--color--blue);
	outline-offset: 2px;
}

.pub-enq__choice--wide {
	font-size: var(--wp--preset--font-size--body);
	padding: 14px 16px;
}

/* ----------------------------------------------------- notices and end --- */

.pub-enq__notice,
.pub-enquiry__notice {
	margin: 0;
	padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
	border-radius: var(--wp--custom--radius--md);
	font-size: var(--wp--preset--font-size--body-sm);
	font-weight: 700;
	background: var(--wp--preset--color--yellow-light);
	border-inline-start: var(--wp--custom--border--strong) solid var(--wp--preset--color--yellow);
	color: var(--wp--preset--color--navy);
}

.pub-enq__hint,
.pub-enquiry .pub-enq__hint {
	font-size: var(--wp--preset--font-size--body-sm);
	line-height: 1.55;
	color: var(--wp--preset--color--grey-700);
	margin: 0;
}

.pub-enq__submit,
.pub-enquiry__submit {
	justify-self: start;
}

/*
 * The honeypot. Off-screen rather than display:none — a bot that reads the
 * computed style skips a hidden field, and a field nothing fills in catches
 * nothing. aria-hidden and tabindex keep it away from people.
 */
.pub-enq__hp,
.pub-enquiry__hp {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.pub-enq--done,
.pub-enquiry--done {
	border-color: var(--wp--preset--color--navy);
	border-inline-start-width: var(--wp--custom--border--strong);
}

.pub-enq--done h2,
.pub-enquiry--done h2 {
	font-size: var(--wp--preset--font-size--title);
	line-height: 1.15;
	margin: 0;
}

.pub-enq--done p,
.pub-enquiry--done p {
	margin: 0;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.6;
	color: var(--wp--preset--color--grey-700);
}

/* ------------------------------------------------------- partner page ---- */

/*
 * Read on the left, fill on the right.
 *
 * The right column sticks under the header so a supplier can work through the
 * "how we work" section without losing the form, which is the whole point of
 * the split. Two things make that behave:
 *
 *   - `align-self: start`, or the grid stretches the column to the full height
 *     of the left one and there is nothing left for `sticky` to do;
 *   - a max height and its own scrollbar, because a sticky element taller than
 *     the viewport pins its top and puts its own submit button permanently
 *     out of reach.
 */
.pub-ptr {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 440px;
	gap: var(--wp--preset--spacing--70);
	align-items: start;
}

.pub-ptr__aside {
	position: sticky;
	inset-block-start: calc(var(--pub-header-h) + var(--wp--preset--spacing--40));
	align-self: start;
	max-block-size: calc(100dvh - var(--pub-header-h) - var(--wp--preset--spacing--70));
	overflow-y: auto;
	overscroll-behavior: contain;
	/* Room for the scrollbar so it never sits on the form's own border. */
	padding-inline-end: 4px;

	/*
	 * The scrollbar is the only thing telling a reader this panel continues
	 * below the fold, so it is always painted rather than left to appear on
	 * hover. A form that looks cut off is a form people assume is broken.
	 */
	scrollbar-gutter: stable;
	scrollbar-width: thin;
	scrollbar-color: var(--wp--preset--color--grey-300) transparent;
}

.pub-ptr__aside::-webkit-scrollbar {
	inline-size: 8px;
}

.pub-ptr__aside::-webkit-scrollbar-thumb {
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--grey-300);
}

.pub-ptr__aside::-webkit-scrollbar-thumb:hover {
	background: var(--wp--preset--color--grey-500);
}

.pub-ptr__panel {
	margin-block-end: var(--wp--preset--spacing--40);
}

.pub-ptr__formtitle {
	font-size: var(--wp--preset--font-size--title);
	line-height: 1.1;
	margin: 0 0 var(--wp--preset--spacing--20);
}

/*
 * The form is in a 440px column rather than across the page, so its own
 * responsive rules — written for a full-width block — would put a single
 * field on each row and make it twice as tall as it needs to be.
 */
.pub-ptr__aside .pub-enq {
	padding: var(--wp--preset--spacing--50);
	gap: var(--wp--preset--spacing--40);
}

.pub-ptr__aside .pub-enq__choices {
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 8px;
}

.pub-ptr__aside .pub-enq__choices--stack {
	grid-template-columns: minmax(0, 1fr);
}

.pub-ptr__aside .pub-enq__choice {
	padding: 9px 11px;
	font-size: var(--wp--preset--font-size--micro);
}

.pub-ptr__aside .pub-enq__choice--wide {
	font-size: var(--wp--preset--font-size--body-sm);
	padding: 12px 14px;
}

.pub-ptr__aside .pub-enq__grid--2 {
	grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}

/*
 * Below this the columns stack, and the stickiness goes with them. A panel
 * that scrolls inside a page that also scrolls is a trap on a touchscreen:
 * the wrong one moves and the reader cannot tell why.
 */
@media (max-width: 1080px) {
	.pub-ptr {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--wp--preset--spacing--60);
	}

	.pub-ptr__aside {
		position: static;
		max-block-size: none;
		overflow-y: visible;
		padding-inline-end: 0;
	}
}

.pub-phero {
	padding-block-end: var(--wp--preset--spacing--40);
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-100);
}

.pub-phero__title {
	font-size: var(--wp--preset--font-size--headline);
	line-height: 1.05;
	letter-spacing: -0.015em;
	margin: 0 0 var(--wp--preset--spacing--30);
}

.pub-phero__lede {
	font-size: var(--wp--preset--font-size--lead);
	line-height: 1.6;
	color: var(--wp--preset--color--grey-700);
	margin: 0;
	max-inline-size: 62ch;
}

.pub-tiles {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: var(--wp--preset--spacing--40);
}

.pub-tiles > li {
	padding: var(--wp--preset--spacing--40);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-100);
	border-radius: var(--wp--custom--radius--lg);
	background: var(--wp--preset--color--white);
}

.pub-tiles--plain > li {
	background: var(--wp--preset--color--off-white);
	border-color: transparent;
}

.pub-tiles h3 {
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.25;
	margin: 0 0 8px;
	color: var(--wp--preset--color--navy);
}

.pub-tiles p {
	margin: 0;
	font-size: var(--wp--preset--font-size--body-sm);
	line-height: 1.6;
	color: var(--wp--preset--color--grey-700);
}

/*
 * The six steps. Numbered by the list itself rather than by hand, so inserting
 * a step in the middle does not mean renumbering the five under it.
 */
.pub-steps {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--wp--preset--spacing--40);
	counter-reset: pub-step;
}

.pub-step {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: var(--wp--preset--spacing--40);
	align-items: start;
	padding-block-end: var(--wp--preset--spacing--40);
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-100);
}

.pub-step:last-child {
	padding-block-end: 0;
	border-block-end: 0;
}

.pub-step__n {
	display: grid;
	place-items: center;
	inline-size: 44px;
	block-size: 44px;
	border-radius: var(--wp--custom--radius--circle);
	background: var(--wp--preset--color--yellow);
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--body);
	font-weight: 800;
	line-height: 1;
}

.pub-step h3 {
	font-size: var(--wp--preset--font-size--lead);
	line-height: 1.2;
	margin: 0 0 6px;
	color: var(--wp--preset--color--navy);
}

.pub-step p {
	margin: 0;
	font-size: var(--wp--preset--font-size--body-sm);
	line-height: 1.65;
	color: var(--wp--preset--color--grey-700);
	max-inline-size: 68ch;
}

@media (max-width: 600px) {
	.pub-step {
		gap: var(--wp--preset--spacing--30);
	}

	.pub-step__n {
		inline-size: 36px;
		block-size: 36px;
		font-size: var(--wp--preset--font-size--body-sm);
	}
}

/* --------------------------------------------------------- legal pages --- */

/*
 * Contents rail beside the text.
 *
 * The page runs the full 1320px shell like everything else, but a policy set
 * across 1300px is unreadable — so the width buys a permanent contents list
 * rather than longer lines. It is the same trade as the partner page: use the
 * room for a second column, not for wider prose.
 */
.pub-legal {
	display: grid;
	grid-template-columns: 260px minmax(0, 1fr);
	gap: var(--wp--preset--spacing--80);
	align-items: start;
	margin-block-start: var(--wp--preset--spacing--50);
}

.pub-legal--map {
	grid-template-columns: minmax(0, 1fr);
}

.pub-legal__rail {
	position: sticky;
	inset-block-start: calc(var(--pub-header-h) + var(--wp--preset--spacing--40));
	align-self: start;
	max-block-size: calc(100dvh - var(--pub-header-h) - var(--wp--preset--spacing--70));
	overflow-y: auto;
	scrollbar-width: thin;
	scrollbar-color: var(--wp--preset--color--grey-300) transparent;
	padding-inline-end: var(--wp--preset--spacing--30);
	border-inline-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-100);
}

.pub-legal__rail ul {
	list-style: none;
	margin: 0 0 var(--wp--preset--spacing--50);
	padding: 0;
	display: grid;
	gap: 2px;
}

.pub-legal__rail a {
	display: block;
	padding: 7px 10px;
	border-radius: var(--wp--custom--radius--sm);
	font-size: var(--wp--preset--font-size--body-sm);
	line-height: 1.35;
	color: var(--wp--preset--color--grey-700);
	text-decoration: none;
	transition: background-color var(--wp--custom--dur--fast) var(--wp--custom--ease--standard);
}

.pub-legal__rail a:hover,
.pub-legal__rail a:focus-visible {
	background: var(--wp--preset--color--off-white);
	color: var(--wp--preset--color--navy);
}

.pub-legal__stamp {
	margin: 0;
	padding-block-start: var(--wp--preset--spacing--30);
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-100);
	font-size: var(--wp--preset--font-size--micro);
	line-height: 1.5;
	color: var(--wp--preset--color--grey-500);
}

.pub-legal__stamp strong {
	color: var(--wp--preset--color--navy);
}

/* The text keeps a reading measure regardless of how wide the page is. */
.pub-legal__body {
	max-inline-size: 74ch;
}

.pub-legal--map .pub-legal__body {
	max-inline-size: none;
}

.pub-legal__lede {
	margin: 0 0 var(--wp--preset--spacing--60);
	font-size: var(--wp--preset--font-size--lead);
	line-height: 1.6;
	color: var(--wp--preset--color--grey-700);
}

/*
 * Anchored sections need somewhere to land. Without this the header — which is
 * sticky — sits on top of whichever heading you just jumped to.
 */
.pub-legal__sec {
	scroll-margin-block-start: calc(var(--pub-header-h) + var(--wp--preset--spacing--40));
	margin-block-end: var(--wp--preset--spacing--60);
}

.pub-legal__sec h2 {
	font-size: var(--wp--preset--font-size--title);
	line-height: 1.2;
	margin: 0 0 var(--wp--preset--spacing--30);
	color: var(--wp--preset--color--navy);
}

.pub-legal__sec p {
	margin: 0 0 var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.7;
	color: var(--wp--preset--color--grey-700);
}

.pub-legal__sec a {
	color: var(--wp--preset--color--blue);
	font-weight: 700;
	text-underline-offset: 3px;
}

.pub-legal__sec strong {
	color: var(--wp--preset--color--navy);
}

.pub-legal__list {
	margin: 0 0 var(--wp--preset--spacing--30);
	padding-inline-start: var(--wp--preset--spacing--50);
	display: grid;
	gap: 10px;
}

.pub-legal__list li {
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.6;
	color: var(--wp--preset--color--grey-700);
}

/* The sitemap's country/city nesting. */
.pub-legal__tree ul {
	margin-block: 8px 0;
	padding-inline-start: var(--wp--preset--spacing--50);
	display: grid;
	gap: 6px;
	list-style: circle;
}

.pub-legal--map .pub-legal__list {
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	align-items: start;
}

/* A rate table is the one thing on these pages that may need to scroll. */
.pub-legal__scroll {
	overflow-x: auto;
	margin-block-end: var(--wp--preset--spacing--40);
}

.pub-legal__table {
	inline-size: 100%;
	border-collapse: collapse;
	font-size: var(--wp--preset--font-size--body-sm);
}

.pub-legal__table caption {
	caption-side: bottom;
	padding-block-start: 10px;
	font-size: var(--wp--preset--font-size--micro);
	color: var(--wp--preset--color--grey-500);
	text-align: start;
}

.pub-legal__table th,
.pub-legal__table td {
	padding: 11px 14px;
	text-align: start;
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-100);
	vertical-align: top;
}

.pub-legal__table thead th {
	font-size: var(--wp--preset--font-size--micro);
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--grey-500);
	border-block-end-color: var(--wp--preset--color--grey-300);
	white-space: nowrap;
}

.pub-legal__table tbody th {
	font-weight: 700;
	color: var(--wp--preset--color--navy);
}

.pub-legal__table tbody td {
	color: var(--wp--preset--color--grey-700);
}

.pub-legal__foot {
	margin: 0;
	padding: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
	border-inline-start: var(--wp--custom--border--strong) solid var(--wp--preset--color--yellow);
	background: var(--wp--preset--color--off-white);
	border-radius: 0 var(--wp--custom--radius--md) var(--wp--custom--radius--md) 0;
	font-size: var(--wp--preset--font-size--body-sm);
	line-height: 1.6;
	color: var(--wp--preset--color--grey-700);
}

/*
 * The rail is a desktop affordance. On a phone it becomes an ordinary list at
 * the top of the page — useful to jump from, and no longer trying to stick to
 * anything.
 */
@media (max-width: 900px) {
	.pub-legal {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--wp--preset--spacing--50);
	}

	.pub-legal__rail {
		position: static;
		max-block-size: none;
		overflow-y: visible;
		padding-inline-end: 0;
		padding-block-end: var(--wp--preset--spacing--40);
		border-inline-end: 0;
		border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--grey-100);
	}

	.pub-legal__rail ul {
		grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
		margin-block-end: var(--wp--preset--spacing--40);
	}
}
