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

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scrollbar-gutter: stable;
}

html:has(body.home),
html:has(body.front-page) {
	scrollbar-gutter: auto;
	overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}

body {
	margin: 0;
	font-family: var(--lbo-font-serif);
	font-size: var(--lbo-text-body);
	font-weight: 400;
	line-height: var(--lbo-leading-body);
	font-variant-numeric: lining-nums proportional-nums;
	font-feature-settings: "lnum" 1, "pnum" 1, "onum" 0;
	color: var(--lbo-ink);
	background: var(--lbo-paper);
	-webkit-font-smoothing: antialiased;
}

body,
.lbo-style-body,
.lbo-style-list {
	font-synthesis: none;
}

a,
button {
	-webkit-tap-highlight-color: transparent;
}

:focus {
	outline: none;
}

.lbo-using-keyboard :focus-visible {
	outline: 2px solid var(--lbo-focus);
	outline-offset: 3px;
}

.lbo-skip {
	position: absolute;
	left: 0.75rem;
	top: 0.75rem;
	z-index: 80;
	padding: 0.4rem 0.7rem;
	background: var(--lbo-paper);
	color: var(--lbo-ink);
	font-family: var(--lbo-font-sans);
	font-size: 0.875rem;
	text-decoration: none;
	transform: translateY(-200%);
}

.lbo-skip:focus {
	transform: none;
	outline: 2px solid var(--lbo-ink);
	outline-offset: 2px;
}

a {
	color: inherit;
}

.lbo-prose a,
.lbo-style-body a,
.lbo-part__body a,
.lbo-chapter-body a,
.lbo-style-caption a,
.lbo-style-quote a,
.lbo-style-quote-author a,
.lbo-box a,
.lbo-case a,
.lbo-callout a {
	text-decoration: none;
	border-bottom: none;
}

.lbo-style-kicker {
	margin: 0;
	font-family: var(--lbo-font-serif);
	font-size: var(--lbo-text-kicker);
	font-weight: 300;
	line-height: var(--lbo-leading-opener);
	color: var(--lbo-chapter);
}

.lbo-style-opener-title {
	margin: 0.4rem 0 0;
	font-family: var(--lbo-font-sans);
	font-size: var(--lbo-text-opener);
	font-weight: 500;
	line-height: var(--lbo-leading-opener);
}

.lbo-style-h1,
.lbo-style-h2,
.lbo-style-h3,
.lbo-style-h4,
.lbo-prose h2 {
	font-family: var(--lbo-font-sans);
	color: var(--lbo-ink);
	page-break-after: avoid;
}

.lbo-style-h1,
.lbo-style-h2,
.lbo-style-h3,
.lbo-style-h4,
.lbo-prose h2 {
	border-top: 1px solid var(--lbo-chapter);
}

.lbo-style-h1 {
	margin: 2.5rem 0 1rem;
	padding-top: 1.25rem;
	font-size: var(--lbo-text-h1);
	font-weight: var(--lbo-weight-h1);
	line-height: var(--lbo-leading-heading);
}

.lbo-style-h2,
.lbo-prose h2 {
	margin: 2.25rem 0 0.85rem;
	padding-top: 1.25rem;
	font-size: var(--lbo-text-h2);
	font-weight: var(--lbo-weight-h2);
	line-height: var(--lbo-leading-heading);
}

.lbo-style-h3 {
	margin: 2.25rem 0 0.85rem;
	/* Rule-to-text: same 0.5rem as signed-off H3 / .lbo-box__subhead. H1/H2 keep 1.25rem. */
	padding-top: var(--lbo-space-2);
	font-size: var(--lbo-text-h3);
	font-weight: var(--lbo-weight-h3);
	line-height: var(--lbo-leading-heading);
	letter-spacing: 0;
	text-transform: none;
}

.lbo-style-body + .lbo-style-h1,
.lbo-style-body + .lbo-style-h2,
.lbo-style-body + .lbo-style-h3,
.lbo-style-body + .lbo-style-h4,
.lbo-prose + .lbo-style-h1,
.lbo-prose + .lbo-style-h2,
.lbo-prose + .lbo-style-h3,
.lbo-prose + .lbo-style-h4,
p + .lbo-style-h1,
p + .lbo-style-h2,
p + .lbo-style-h3,
p + .lbo-style-h4,
.lbo-prose p + h2 {
	margin-top: calc(2.25rem + var(--lbo-space-copy-break));
}

:is(.lbo-style-body, .lbo-prose, p) + :is(.lbo-box, .lbo-callout) {
	margin-top: calc(2rem + var(--lbo-space-copy-break));
}

:is(.lbo-style-body, .lbo-prose, p) + .lbo-figure {
	margin-top: calc(1.75rem + var(--lbo-space-copy-break));
}

:is(.lbo-style-body, .lbo-prose, p) + .lbo-case {
	margin-top: calc(2.5rem + var(--lbo-space-copy-break));
}

.lbo-style-h4 {
	margin: 1.5rem 0 1.75rem;
	padding-top: 1.25rem;
	font-size: var(--lbo-text-intro);
	font-weight: 400;
	line-height: var(--lbo-leading-heading);
}

/* Print H4 lead clause is Medium, the same weight as H1. The rest stays Regular. */
h2.lbo-style-h4 strong {
	font-weight: var(--lbo-weight-h1);
}

h2.lbo-style-h4 strong em {
	font-weight: inherit;
}

.lbo-chapter-body .lbo-part__body > .lbo-style-h4:first-child,
.lbo-chapter-body .lbo-wrap > .lbo-style-h4:first-child {
	margin-top: 0;
}

.lbo-style-h4 p {
	margin: 0;
	font: inherit;
	color: inherit;
}

.lbo-style-h4 p:empty {
	display: none;
}

.lbo-style-h5,
.lbo-style-standfirst {
	margin: 0 0 1rem;
	font-family: var(--lbo-font-serif);
	font-size: var(--lbo-text-standfirst);
	font-weight: 300;
	font-style: italic;
	line-height: var(--lbo-leading-standfirst);
}

.lbo-style-body,
.lbo-prose p,
.lbo-part__body p,
.lbo-style-h4,
.lbo-style-h5 {
	hanging-punctuation: first last allow-end;
}

.lbo-style-body,
.lbo-prose p {
	margin: 0 0 1rem;
	max-width: var(--lbo-measure);
}

/* Print B7 Reference: 7.5pt / 10pt, body serif. */
.lbo-prose p.lbo-style-reference,
.lbo-part__body p.lbo-style-reference {
	font-family: var(--lbo-font-serif);
	font-size: var(--lbo-text-mono);
	line-height: calc(10 / 7.5);
	margin: 0 0 0.67em;
}

.lbo-style-reference a {
	word-break: break-word;
}

.lbo-style-list,
.lbo-prose ul,
.lbo-prose ol,
.lbo-part__body ul:not(.lbo-sidebar__authors, .lbo-imprint-logos),
.lbo-part__body ol,
.lbo-case__summary ul,
.lbo-case__summary ol,
.lbo-box__body ul,
.lbo-box__body ol {
	margin: 0 0 1rem;
	max-width: var(--lbo-measure);
}

.lbo-prose ol,
.lbo-part__body ol,
.lbo-case__summary ol,
.lbo-box__body ol {
	padding-left: 1.35em;
}

.lbo-style-list,
.lbo-prose ul,
.lbo-part__body ul:not(.lbo-sidebar__authors, .lbo-imprint-logos),
.lbo-case__summary ul,
.lbo-box__body ul {
	padding-left: 0;
	list-style: none;
}

.lbo-style-list > li,
.lbo-prose ul > li,
.lbo-part__body > ul:not(.lbo-imprint-logos) > li,
.lbo-part__body .lbo-prose ul > li,
.lbo-part__body .lbo-style-body ul > li,
.lbo-part__body .lbo-box ul > li,
.lbo-case__summary ul > li,
.lbo-box__body ul > li {
	position: relative;
	padding-left: 1.05em;
}

.lbo-style-list > li::before,
.lbo-prose ul > li::before,
.lbo-part__body > ul:not(.lbo-imprint-logos) > li::before,
.lbo-part__body .lbo-prose ul > li::before,
.lbo-part__body .lbo-style-body ul > li::before,
.lbo-part__body .lbo-box ul > li::before,
.lbo-case__summary ul > li::before,
.lbo-box__body ul > li::before {
	content: "\25CB";
	position: absolute;
	left: 0;
	top: 0.2em;
	font-family: var(--lbo-font-serif);
	font-weight: 400;
	font-style: normal;
	font-size: 0.72em;
	line-height: inherit;
	color: inherit;
}

.lbo-style-quote {
	/* B4 SpaceAfter 12pt (from BASE); 12/10 × body. */ 
	margin: 1.5rem 0 calc(var(--lbo-text-body) * 1.2);
	max-width: var(--lbo-measure);
	font-family: var(--lbo-font-serif);
	font-size: var(--lbo-text-quote);
	font-weight: 300;
	font-style: italic;
	line-height: var(--lbo-leading-quote);
	hanging-punctuation: first last allow-end;
}

/* In-flow italic: same size and leading as B1, still a blockquote. */
.lbo-style-quote--body,
body[data-lbo-part="introduction"] .lbo-part__body > .lbo-quote:first-of-type .lbo-style-quote {
	font-size: var(--lbo-text-body);
	font-weight: 400;
	line-height: var(--lbo-leading-body);
	margin: 0 0 1rem;
}

.lbo-style-quote::before {
	content: "\201C";
	margin-left: -0.5em;
}

.lbo-style-quote::after {
	content: "\201D";
}

/* Spanish and French pages: guillemets. French keeps a narrow no-break space inside. */
html:lang(es) .lbo-style-quote::before {
	content: "\00AB";
}

html:lang(es) .lbo-style-quote::after {
	content: "\00BB";
}

/* Spanish: full stop follows the closing guillemet. */
html:lang(es) .lbo-style-quote:has(.lbo-style-quote__text)::before,
html:lang(es) .lbo-style-quote:has(.lbo-style-quote__text)::after {
	content: none;
}

html:lang(es) .lbo-style-quote__text::before {
	content: "\00AB";
	margin-left: -0.5em;
}

html:lang(es) .lbo-style-quote__text::after {
	content: "\00BB";
}

html:lang(es) .lbo-style-quote__stop {
	font-style: inherit;
}

html:lang(fr) .lbo-style-quote::before {
	content: "\00AB\202F";
}

html:lang(fr) .lbo-style-quote::after {
	content: "\202F\00BB";
}

.lbo-style-quote-author,
.lbo-style-caption,
.lbo-mono {
	font-family: var(--lbo-font-mono);
	font-size: var(--lbo-text-mono);
	font-weight: 400;
	font-style: normal;
	line-height: var(--lbo-leading-mono);
	font-synthesis: none;
}

.lbo-style-sidebar {
	font-family: var(--lbo-font-mono);
	font-size: var(--lbo-text-mono);
	font-weight: 400;
	font-style: normal;
	line-height: var(--lbo-leading-mono);
	font-synthesis: none;
}

.lbo-style-quote-author {
	margin: 0 0 1.5rem;
}

.lbo-style-caption {
	margin: 0.4rem 0 1.25rem;
	color: var(--lbo-ink);
}

.lbo-figure > figcaption.lbo-style-caption {
	margin-top: 0.5lh;
}

.lbo-style-caption > span,
.lbo-style-caption > p {
	display: block;
	margin: 0;
}

.lbo-style-caption > span + span,
.lbo-style-caption > p + p,
.lbo-sidebar__block p + p {
	margin-top: 0.5lh;
}

strong,
b {
	font-weight: 700;
}

em,
i {
	font-style: italic;
}

.lbo-mono,
.lbo-style-quote-author,
.lbo-style-caption,
.lbo-style-sidebar {
	font-weight: 400 !important;
	font-style: normal !important;
}

/* Forewords sign-off: B1 body serif, bold name, role on the next line.
   Print B5 Quote — Author (standalone people/place, and in-case attributions)
   stays Founders Grotesk Mono at caption size. */
.lbo-part__body .lbo-style-quote-author:has(> strong) {
	font-family: var(--lbo-font-serif);
	font-size: var(--lbo-text-body);
	font-weight: 400 !important;
	font-style: normal !important;
	line-height: var(--lbo-leading-body);
}

.lbo-part__body .lbo-style-quote-author:has(> strong) strong {
	font-weight: 700 !important;
	font-style: inherit !important;
}
