/* Hallmark · pre-emit critique: P5 H4 E4 S5 R5 V4 */
/* Hallmark · macrostructure: resource-gateway · theme: studied-DNA (source: SWU Library wireframes) · nav: inherited · footer: inherited */

html,
body.swu-library-page {
	overflow-x: clip;
}

.swu-library-page {
	background: var(--swu-library-white);
}

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

.swu-library {
	background: var(--swu-library-white);
	color: var(--swu-library-ink);
	font-family: var(--swu-library-body);
	max-width: 100%;
	overflow-x: clip;
}

.swu-library button,
.swu-library input,
.swu-library select {
	font: inherit;
}

.swu-library button {
	cursor: pointer;
}

.swu-library__filters input[type="date"] { min-width: 0; width: 100%; min-height: 44px; padding: 10px; background: white; color: var(--swu-library-ink); border: 1px solid var(--swu-library-blue); }
.swu-library__results [data-swu-library-pdfs] { margin: 32px 0; }
.swu-library__results [data-swu-library-pdf-list] { display: grid; gap: 16px; }

/* ---------------------------------------------------------------- hero -- */

.swu-library__hero {
	background:
		radial-gradient(120% 90% at 50% -22%, var(--swu-library-blue-soft) 0%, rgba(240, 248, 255, 0) 62%),
		var(--swu-library-white);
	/* Was `hidden` for bleeding artwork that no longer exists; it clipped the
	   type-ahead panel to two rows. */
	overflow: visible;
	padding: clamp(48px, 7vw, 92px) var(--swu-library-gutter) clamp(34px, 4vw, 54px);
	position: relative;
	text-align: center;
	z-index: 2;
}

.swu-library__hero-inner,
.swu-library__landing,
.swu-library__results {
	margin-inline: auto;
	max-width: var(--swu-library-width);
}

.swu-library__hero-inner {
	position: relative;
	z-index: 1;
}

.swu-library__eyebrow {
	color: var(--swu-library-blue);
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.16em;
	margin: 0 0 14px;
	text-transform: uppercase;
}

.swu-library .swu-library__hero h1 {
	color: var(--swu-library-navy-deep) !important;
	font-family: var(--swu-library-display);
	font-size: clamp(54px, 7.5vw, 104px);
	font-weight: 700;
	letter-spacing: -0.045em;
	line-height: 1;
	margin: 0;
	min-width: 0;
	overflow-wrap: anywhere;
}

/* A small blue publisher tab above the Montserrat Library wordmark. */
.swu-library .swu-library__hero h1.swu-library__wordmark {
	align-items: flex-start;
	display: inline-flex;
	flex-direction: column;
	font-family: "Montserrat", sans-serif !important;
	gap: 13px;
	text-align: left;
}

.swu-library__wordmark-brand {
	background: var(--swu-brand-mediterranean);
	border-radius: 0;
	color: var(--swu-brand-white);
	display: block;
	font-family: "Montserrat", sans-serif;
	font-size: clamp(17px, 2vw, 23px);
	font-weight: 700;
	letter-spacing: -0.045em;
	line-height: 1.25;
	margin-left: 5px;
	padding: 9px 16px;
	position: relative;
}

.swu-library__wordmark-brand::after {
	border-right: 8px solid transparent;
	border-top: 8px solid var(--swu-brand-mediterranean);
	content: "";
	left: 0;
	position: absolute;
	top: 100%;
}

.swu-library__wordmark-brand > span {
	font-weight: 400;
}

.swu-library__wordmark-title {
	display: block;
	font-family: "Montserrat", sans-serif;
	letter-spacing: -0.015em;
}

.swu-library__intro {
	color: var(--swu-library-muted);
	font-size: clamp(16px, 1.5vw, 19px);
	line-height: 1.6;
	margin: clamp(14px, 2vw, 20px) auto 0;
	max-width: 720px;
}

/* The suggestion panel anchors to the search pill, so both need a shell. */
.swu-library__search-shell {
	margin: clamp(28px, 4vw, 44px) auto 0;
	max-width: 780px;
	position: relative;
}

.swu-library__search {
	align-items: center;
	background: var(--swu-library-white);
	border: 1.5px solid var(--swu-library-edge);
	border-radius: 0;
	box-shadow: var(--swu-library-lift);
	display: grid;
	grid-template-columns: 62px minmax(0, 1fr) auto;
	min-height: 70px;
	transition: border-color 160ms ease, box-shadow 160ms ease;
}

.swu-library__search:hover {
	border-color: var(--swu-library-edge-strong);
}

.swu-library__search:focus-within {
	border-color: var(--swu-library-blue);
	box-shadow: 0 0 0 4px rgba(0, 148, 255, 0.18), var(--swu-library-lift-hover);
}

.swu-library__search-icon {
	fill: none;
	height: 22px;
	justify-self: center;
	stroke: var(--swu-library-blue);
	stroke-linecap: round;
	stroke-width: 1.9;
	width: 22px;
}

.swu-library .swu-library__search input,
.swu-library .swu-library__search input[type="search"] {
	appearance: none !important;
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	color: var(--swu-library-navy-deep) !important;
	font-size: clamp(16px, 1.4vw, 18px);
	height: auto !important;
	margin: 0 !important;
	min-height: 0 !important;
	min-width: 0;
	outline: 0 !important;
	padding: 16px 12px 16px 0 !important;
	text-align: start;
	width: 100%;
}

.swu-library__search input::placeholder {
	color: var(--swu-library-placeholder);
	opacity: 1;
}

.swu-library__search input::-webkit-search-cancel-button {
	cursor: pointer;
}

.swu-library .swu-library__search button {
	background: var(--swu-library-blue) !important;
	border: 0 !important;
	border-radius: 0 !important;
	color: var(--swu-library-white) !important;
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.01em;
	margin: 7px;
	min-height: 54px;
	min-width: 124px;
	padding: 0 26px;
	transition: background 160ms ease;
}

.swu-library .swu-library__search button:hover {
	background: var(--swu-library-blue-deep) !important;
}

.swu-library__suggestions {
	background: var(--swu-library-white);
	border: 1px solid var(--swu-library-edge);
	border-radius: 0;
	box-shadow: var(--swu-library-lift-hover);
	color: var(--swu-library-ink);
	left: 0;
	overflow: hidden;
	padding: 8px;
	position: absolute;
	right: 0;
	text-align: left;
	max-height: min(52vh, 380px);
	overflow-y: auto;
	top: calc(100% + 10px);
	z-index: 30;
}

.swu-library__suggestions a {
	border-radius: 0;
	color: var(--swu-library-navy);
	display: block;
	font-size: 15px;
	min-height: 44px;
	padding: 12px 14px;
	text-align: start;
	text-decoration: none;
}

.swu-library__suggestions a:hover {
	background: var(--swu-library-frost);
	color: var(--swu-library-blue);
}

.swu-library__scope {
	color: var(--swu-library-muted);
	font-size: 14px;
	line-height: 1.7;
	margin: 18px auto 0;
	max-width: 800px;
}

.swu-library__scope a {
	color: var(--swu-library-blue);
	font-weight: 700;
	text-decoration: none;
}

.swu-library__scope a:hover {
	text-decoration: underline;
}

/*
 * The Elementor header mounts a site-wide search bar (`#search-bar`, plus a
 * responsive clone). The Library has its own scoped search directly below it,
 * so two identical fields stacked up. `search-lab.js` skips mounting here; this
 * collapses the now-empty header row. Matched structurally so an Elementor
 * re-save that renumbers the element id cannot resurrect the bar.
 */
body.swu-library-page .elementor-location-header .e-con:has(> .e-con-inner > [id="search-bar"]),
body.swu-library-page .elementor-location-header .e-con:has(> .e-con-inner > [id^="swu-search-bar-responsive"]),
body.swu-library-page .elementor-location-header .swu-global-search-host,
body.swu-library-page .elementor-location-header [id="search-bar"],
body.swu-library-page .elementor-location-header [id^="swu-search-bar-responsive"] {
	display: none !important;
}

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

.swu-library__landing,
.swu-library__results {
	padding: clamp(16px, 2vw, 26px) var(--swu-library-gutter) clamp(64px, 8vw, 104px);
}

.swu-library__tiles {
	display: grid;
	gap: 20px;
	grid-template-columns: repeat(6, minmax(0, 1fr));
}

.swu-library__tile {
	background: linear-gradient(168deg, var(--swu-library-white) 0%, var(--swu-library-frost) 100%);
	border: 1px solid var(--swu-library-hairline);
	border-radius: 0;
	box-shadow: var(--swu-library-lift);
	container-type: inline-size;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	padding: clamp(26px, 2.4vw, 34px);
	position: relative;
	transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

.swu-library__tile:hover,
.swu-library__tile:focus-within {
	border-color: var(--swu-library-edge);
	box-shadow: var(--swu-library-lift-hover);
	transform: translateY(-3px);
}

.swu-library__tile--topic,
.swu-library__tile--popular {
	grid-column: span 3;
}

.swu-library__tile--all,
.swu-library__tile--language,
.swu-library__tile--swubot {
	grid-column: span 2;
}

.swu-library__tile-head {
	position: relative;
	z-index: 2;
}

/* The language card's chips take the slack so the card reads as full. */
.swu-library__tile--language .swu-library__chips {
	flex: 1 1 auto;
}

.swu-library .swu-library__tile h3 {
	color: var(--swu-library-navy-deep) !important;
	font-family: var(--swu-library-display);
	font-size: clamp(25px, 2.2vw, 32px);
	font-weight: 700;
	letter-spacing: -0.03em;
	line-height: 1.1;
	margin: 0;
	min-width: 0;
	overflow-wrap: anywhere;
}

.swu-library__tile-head > p {
	color: var(--swu-library-muted);
	font-size: 14.5px;
	line-height: 1.55;
	margin: 9px 0 0;
	max-width: 40ch;
	text-wrap: balance;
}

/* Footer holds the action; `margin-top: auto` pins it to the tile baseline. */
.swu-library__tile-foot {
	align-items: center;
	display: flex;
	gap: 14px;
	margin-top: auto;
	padding-top: clamp(20px, 2.4vw, 30px);
	position: relative;
	z-index: 2;
}

.swu-library__tile-hint {
	color: var(--swu-library-muted);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

/*
 * The whole footer row is one control. The circle is a <span> inside it, so
 * only the control itself needs to out-rank the theme's button reset.
 */
.swu-library .swu-library__tile-action {
	align-items: center;
	background: none !important;
	border: 0 !important;
	display: inline-flex !important;
	gap: 14px;
	padding: 0 !important;
	text-align: left;
	text-decoration: none !important;
	width: auto !important;
}

.swu-library__tile-go {
	align-items: center;
	border: 1.5px solid var(--swu-library-line);
	border-radius: 0;
	color: var(--swu-library-blue);
	display: inline-flex;
	flex: 0 0 auto;
	height: 50px;
	justify-content: center;
	transition: background 160ms ease, border-color 160ms ease, color 160ms ease;
	width: 50px;
}

.swu-library__tile-go svg {
	fill: none;
	height: 22px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.9;
	transition: transform 160ms ease;
	width: 22px;
}

.swu-library__tile-hint {
	color: var(--swu-library-muted);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.swu-library__tile:hover .swu-library__tile-go,
.swu-library__tile-action:hover .swu-library__tile-go,
.swu-library__tile-action:focus-visible .swu-library__tile-go {
	background: var(--swu-library-blue);
	border-color: var(--swu-library-blue);
	color: var(--swu-library-white);
}

.swu-library__tile-action:hover .swu-library__tile-go svg {
	transform: translateX(2px);
}

.swu-library__tile-action:hover .swu-library__tile-hint {
	color: var(--swu-library-blue-deep);
}

/* ---- Compact topic and format pills, consistent with language choices ---- */

.swu-library__choices {
	align-content: flex-start;
	display: flex;
	flex-wrap: wrap;
	gap: 7px;
	list-style: none;
	margin: clamp(14px, 1.8vw, 20px) 0 0;
	padding: 0;
	position: relative;
	z-index: 2;
}

.swu-library__choices li {
	display: flex;
	max-width: 100%;
	min-width: 0;
}

.swu-library .swu-library__choices button {
	align-items: center;
	background: var(--swu-library-white) !important;
	border: 1px solid var(--swu-library-edge) !important;
	border-radius: 0 !important;
	color: var(--swu-library-navy) !important;
	display: inline-flex !important;
	font-family: inherit;
	font-size: 12.5px;
	font-weight: 600;
	gap: 7px;
	line-height: 1.45;
	min-height: 38px;
	padding: 8px 13px !important;
	text-align: left;
	transition: background 140ms ease, border-color 140ms ease, color 140ms ease;
	width: auto !important;
}

.swu-library__choices button span {
	min-width: 0;
	overflow-wrap: anywhere;
}


.swu-library .swu-library__choices button:hover {
	background: var(--swu-library-blue) !important;
	border-color: var(--swu-library-blue) !important;
	color: var(--swu-library-white) !important;
}

@media (pointer: coarse) {
	.swu-library .swu-library__choices button {
		min-height: 44px;
	}
}

/* Give the six formats their own balanced layout within the shared card row. */
.swu-library__tile--all .swu-library__choices {
	align-content: start;
	display: grid;
	flex: 1 0 auto;
	gap: 12px;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin-top: 24px;
	min-height: 220px;
}

.swu-library .swu-library__tile--all .swu-library__choices button {
	border-radius: 0 !important;
	font-size: 13px;
	justify-content: center;
	min-height: 54px;
	padding: 12px 8px !important;
	text-align: center;
	width: 100% !important;
}

/* ---- Most Popular: the real leaderboard ---- */

.swu-library__rank {
	display: grid;
	gap: 2px;
	list-style: none;
	margin: clamp(18px, 2vw, 24px) 0 0;
	padding: 0;
	position: relative;
	z-index: 2;
}

.swu-library__rank a {
	align-items: center;
	border-radius: 0;
	color: var(--swu-library-navy);
	display: grid;
	gap: 14px;
	grid-template-columns: 28px minmax(0, 1fr);
	padding: 9px 10px;
	text-decoration: none;
	transition: background 140ms ease;
}

.swu-library__rank a:hover {
	background: var(--swu-library-blue-soft);
}

.swu-library__rank-num {
	color: var(--swu-library-blue);
	font-family: var(--swu-library-display);
	font-size: 20px;
	font-variant-numeric: tabular-nums;
	font-weight: 700;
	line-height: 1;
	opacity: 0.9;
	text-align: center;
}

.swu-library__rank-title {
	font-size: 14.5px;
	font-weight: 600;
	line-height: 1.35;
	overflow: hidden;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.swu-library__rank a:hover .swu-library__rank-title {
	color: var(--swu-library-blue-deep);
}

/* ---- Browse All: headline figure ---- */

.swu-library__stat {
	align-items: baseline;
	display: flex;
	flex-wrap: wrap;
	gap: 0 10px;
	margin: clamp(16px, 2vw, 22px) 0 0;
	position: relative;
	z-index: 2;
}

.swu-library__stat strong {
	color: var(--swu-library-navy) !important;
	font-family: var(--swu-library-display);
	font-size: clamp(32px, 2.9vw, 40px);
	font-weight: 700;
	letter-spacing: -0.04em;
	line-height: 1;
}

.swu-library__stat span {
	color: var(--swu-library-muted);
	font-size: 13.5px;
	font-weight: 600;
}

/* ---- By Language: language pills ---- */

.swu-library__chips {
	align-content: flex-start;
	display: flex;
	flex-wrap: wrap;
	gap: 7px;
	margin-top: clamp(14px, 1.8vw, 20px);
	position: relative;
	z-index: 2;
}

.swu-library .swu-library__chips button {
	align-items: center;
	background: var(--swu-library-white) !important;
	border: 1px solid var(--swu-library-edge) !important;
	border-radius: 0 !important;
	color: var(--swu-library-navy) !important;
	display: inline-flex !important;
	font-size: 12.5px;
	font-weight: 600;
	gap: 7px;
	padding: 7px 8px 7px 13px !important;
	transition: background 140ms ease, border-color 140ms ease, color 140ms ease;
	width: auto !important;
}

.swu-library .swu-library__chips button b {
	background: var(--swu-library-blue-soft);
	border-radius: 0;
	color: var(--swu-library-blue-deep);
	font-size: 11px;
	font-variant-numeric: tabular-nums;
	font-weight: 700;
	padding: 2px 7px;
	transition: background 140ms ease, color 140ms ease;
}

.swu-library .swu-library__chips button:hover {
	background: var(--swu-library-blue) !important;
	border-color: var(--swu-library-blue) !important;
	color: var(--swu-library-white) !important;
}

.swu-library .swu-library__chips button:hover b {
	background: rgba(255, 255, 255, 0.22);
	color: var(--swu-library-white);
}

/* ---- Ask SWUBot: the one filled card ---- */

.swu-library__tile--swubot {
	background: linear-gradient(158deg, var(--swu-library-navy) 0%, var(--swu-library-navy-deep) 100%);
	border-color: var(--swu-library-navy-deep);
}

.swu-library .swu-library__tile--swubot h3 {
	color: var(--swu-library-white) !important;
}

.swu-library__tile--swubot .swu-library__tile-head > p {
	color: var(--swu-library-on-navy);
}

.swu-library__tile--swubot .swu-library__tile-hint {
	color: var(--swu-library-on-navy);
}

.swu-library__tile--swubot .swu-library__tile-go {
	border-color: var(--swu-library-on-navy-line);
	color: var(--swu-library-white);
}

.swu-library__tile--swubot:hover .swu-library__tile-go,
.swu-library .swu-library__tile--swubot .swu-library__tile-go:hover {
	background: var(--swu-library-white);
	border-color: var(--swu-library-white);
	color: var(--swu-library-navy-deep);
}

.swu-library__tile--swubot .swu-library__tile-action:hover .swu-library__tile-hint {
	color: var(--swu-library-white);
}

/* ---- Tile artwork ---- */

.swu-library__tile-art {
	pointer-events: none;
	position: absolute;
	z-index: 1;
}

.swu-library__tile-art--chat {
	flex: 1 1 auto;
	margin-top: clamp(14px, 2vw, 22px);
	max-width: 300px;
	min-height: 96px;
	position: static;
	width: 100%;
}

.swu-library__art-stroke {
	fill: none;
	opacity: 0.5;
	stroke: var(--swu-library-blue-bright);
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 2;
}

.swu-library__art-fill {
	fill: var(--swu-library-blue);
	opacity: 0.55;
}

.swu-library__art-lines {
	fill: none;
	opacity: 0.42;
	stroke: var(--swu-library-blue-bright);
	stroke-linecap: round;
	stroke-width: 5;
}

.swu-library__art-dots--light circle {
	fill: var(--swu-library-white);
	opacity: 0.95;
}

/* ------------------------------------------------- supporting note row -- */

.swu-library__notes {
	background: linear-gradient(168deg, var(--swu-library-white) 0%, var(--swu-library-frost) 100%);
	border: 1px solid var(--swu-library-hairline);
	border-radius: 0;
	box-shadow: var(--swu-library-lift);
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin-top: 20px;
	overflow: hidden;
}

.swu-library__note {
	display: grid;
	gap: 18px;
	grid-template-columns: auto minmax(0, 1fr);
	padding: clamp(26px, 2.4vw, 34px);
}

.swu-library__note + .swu-library__note {
	border-left: 1px solid var(--swu-library-hairline);
}

.swu-library__note-seal {
	font-size: 11px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--swu-library-gold);
	margin-bottom: 0;
}

.swu-library__note-icon--gold {
	border-color: var(--swu-library-sand);
	color: var(--swu-library-gold);
}

.swu-library__note-icon {
	align-items: center;
	border: 1.5px solid var(--swu-library-edge);
	border-radius: 0;
	color: var(--swu-library-blue);
	display: inline-flex;
	flex: none;
	height: 46px;
	justify-content: center;
	width: 46px;
}

.swu-library__note-icon svg {
	fill: none;
	height: 21px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.7;
	width: 21px;
}

.swu-library .swu-library__note h3 {
	color: var(--swu-library-navy-deep) !important;
	font-family: var(--swu-library-display);
	font-size: 17px;
	font-weight: 700;
	letter-spacing: -0.01em;
	line-height: 1.3;
	margin: 0;
	min-width: 0;
	overflow-wrap: anywhere;
}

.swu-library__note-body {
	display: flex;
	flex-direction: column;
}

.swu-library__note-body p {
	color: var(--swu-library-muted);
	font-size: 14px;
	line-height: 1.6;
	margin: 8px 0 0;
}

.swu-library__note-body a,
.swu-library__note-seal {
	color: var(--swu-library-blue);
	align-self: flex-start;
	font-size: 14px;
	font-weight: 700;
	margin-top: auto;
	padding-top: 12px;
	text-decoration: none;
}

.swu-library__note-body a span {
	display: inline-block;
	margin-left: 6px;
	transition: transform 160ms ease;
}

.swu-library__note-body a:hover {
	text-decoration: underline;
}

.swu-library__note-body a:hover span {
	transform: translateX(3px);
}

/* ------------------------------------------------------------- results -- */

.swu-library__results[hidden],
.swu-library__landing[hidden],
.swu-library__loading[hidden],
.swu-library__empty[hidden],
.swu-library__error[hidden],
.swu-library__pagination[hidden],
.swu-library__results-head p[hidden] {
	display: none;
}

.swu-library__results-head {
	align-items: baseline;
	display: flex;
	flex-wrap: wrap;
	gap: 12px 28px;
	justify-content: space-between;
}

.swu-library__results-head > button {
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	color: var(--swu-library-blue-deep) !important;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.06em;
	min-height: 44px;
	order: 2;
	padding: 0 !important;
	text-transform: uppercase;
}

.swu-library__results-head > div {
	min-width: 0;
}

.swu-library__results-head .swu-library__eyebrow {
	color: var(--swu-library-blue-deep);
	margin-bottom: 6px;
}

/* Was clamp(38px, 5vw, 66px) — it dwarfed the results it was labelling. */
.swu-library .swu-library__results-head h2 {
	color: var(--swu-library-navy-deep);
	font-family: var(--swu-library-display);
	font-size: clamp(22px, 2.2vw, 30px) !important;
	letter-spacing: -0.02em !important;
	line-height: 1.2 !important;
}

.swu-library__results-head p:last-child {
	color: var(--swu-library-muted);
	font-size: 14px;
	margin: 8px 0 0;
}

/*
 * Filters sit in a left rail so the results start at the top of the page and
 * the content leads. The rail sticks while the grid scrolls past it.
 */
.swu-library__results-layout {
	align-items: start;
	display: grid;
	gap: clamp(18px, 2.2vw, 30px);
	grid-template-columns: 274px minmax(0, 1fr);
	margin-top: clamp(24px, 3vw, 36px);
}

.swu-library__filters {
	background: linear-gradient(168deg, var(--swu-library-white) 0%, var(--swu-library-frost) 100%);
	border: 1px solid var(--swu-library-hairline);
	border-radius: 0;
	padding: 18px;
}

.swu-library__filters-heading {
	align-items: center;
	display: flex;
	justify-content: space-between;
	margin-bottom: 4px;
}

.swu-library .swu-library__filters h3 {
	color: var(--swu-library-navy-deep);
	font-family: var(--swu-library-display);
	font-size: 15px;
	font-weight: 700;
	letter-spacing: 0.01em;
	margin: 0;
}

.swu-library__filters-heading button {
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	color: var(--swu-library-blue) !important;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.06em;
	min-height: 44px;
	padding: 0 !important;
	text-transform: uppercase;
}

.swu-library__filter-group {
	border: 0;
	border-top: 1px solid var(--swu-library-hairline);
	margin: 0;
	padding: 14px 0 0;
}

.swu-library__filter-group legend {
	color: var(--swu-library-muted);
	float: none;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.1em;
	margin-bottom: 9px;
	padding: 0;
	text-transform: uppercase;
	width: auto;
}

.swu-library__chip-flag {
	font-size: 13px;
	line-height: 1;
	margin-right: 1px;
}

.swu-library__bubble-flag {
	font-size: 13px;
	line-height: 1;
	margin-right: 5px;
}

.swu-library__bubbles {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	padding-bottom: 14px;
}

.swu-library .swu-library__bubbles button {
	background: var(--swu-library-white) !important;
	border: 1px solid var(--swu-library-edge) !important;
	border-radius: 0 !important;
	color: var(--swu-library-navy) !important;
	font-size: 12px;
	font-weight: 600;
	padding: 6px 11px !important;
	transition: background 140ms ease, border-color 140ms ease, color 140ms ease;
	width: auto !important;
}

.swu-library .swu-library__bubbles button:hover {
	border-color: var(--swu-library-blue);
	color: var(--swu-library-blue-deep) !important;
}

.swu-library .swu-library__bubbles button[aria-pressed="true"] {
	background: var(--swu-library-blue) !important;
	border-color: var(--swu-library-blue) !important;
	color: var(--swu-library-white) !important;
}

.swu-library__filter-group--dates {
	padding-bottom: 4px;
}

.swu-library__dates {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	padding-bottom: 6px;
}

.swu-library__dates label {
	display: block;
}

.swu-library .swu-library__dates input[type="date"] {
	background: var(--swu-library-white);
	border: 1px solid var(--swu-library-edge);
	border-radius: 0;
	color: var(--swu-library-navy);
	font-size: 12.5px;
	min-height: 34px;
	padding: 6px 14px;
	width: auto;
}

/* Live search keeps the previous results visible while the next set loads. */
.swu-library__grid.is-busy {
	opacity: 0.55;
	transition: opacity 120ms ease;
}

.swu-library__grid {
	display: grid;
	gap: 18px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.swu-library__card {
	background: var(--swu-library-white);
	border: 1px solid var(--swu-library-hairline);
	border-radius: 0;
	display: flex;
	flex-direction: column;
	min-width: 0;
	overflow: hidden;
	transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

.swu-library__card:hover {
	border-color: var(--swu-library-edge);
	box-shadow: var(--swu-library-lift-hover);
	transform: translateY(-3px);
}

.swu-library__card-media {
	aspect-ratio: 4 / 3;
	background:
		linear-gradient(135deg, rgba(0, 119, 174, 0.12), rgba(0, 32, 60, 0.03)),
		var(--swu-library-frost);
	display: block;
	overflow: hidden;
	position: relative;
}

.swu-library__card-media--blank {
	background:
		radial-gradient(120% 100% at 30% 0%, var(--swu-library-blue-soft) 0%, rgba(201, 230, 242, 0) 70%),
		var(--swu-library-frost);
}

.swu-library__card-glyph {
	align-items: center;
	display: flex;
	height: 100%;
	justify-content: center;
	width: 100%;
}

.swu-library__card-glyph svg {
	fill: none;
	height: 44%;
	max-height: 66px;
	opacity: 0.34;
	stroke: var(--swu-library-blue);
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 2;
}

.swu-library__card-media img {
	height: 100%;
	object-fit: cover;
	transition: transform 240ms ease;
	width: 100%;
}

.swu-library__card:hover .swu-library__card-media--blank {
	background:
		radial-gradient(120% 100% at 30% 0%, var(--swu-library-blue-soft) 0%, rgba(201, 230, 242, 0) 70%),
		var(--swu-library-frost);
}

.swu-library__card-glyph {
	align-items: center;
	display: flex;
	height: 100%;
	justify-content: center;
	width: 100%;
}

.swu-library__card-glyph svg {
	fill: none;
	height: 44%;
	max-height: 66px;
	opacity: 0.34;
	stroke: var(--swu-library-blue);
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 2;
}

.swu-library__card-media img {
	transform: scale(1.035);
}

.swu-library__card-type {
	align-self: flex-start;
	background: var(--swu-library-blue-soft);
	border-radius: 0;
	color: var(--swu-library-blue-deep);
	display: table;
	font-size: 9.5px;
	font-weight: 800;
	letter-spacing: 0.1em;
	margin: 0;
	max-width: 100%;
	padding: 5px 9px;
	text-transform: uppercase;
}

.swu-library__card--lead .swu-library__card-type {
	background: var(--swu-library-navy-deep);
	color: var(--swu-library-white);
}

.swu-library__card--lead .swu-library__card-type::after {
	content: " · PDF";
	opacity: 0.7;
}

/* The researched long-form PDFs carry a visible mark of their own. */
.swu-library__card--lead {
	border-color: var(--swu-library-edge);
}

.swu-library__card--lead::before {
	background: linear-gradient(90deg, var(--swu-library-gold) 0%, var(--swu-library-sand) 100%);
	content: "";
	height: 3px;
	left: 0;
	position: absolute;
	right: 0;
	top: 0;
	z-index: 3;
}

.swu-library__card {
	position: relative;
}

/*
 * The leading booklet is inverted rather than widened. A wider frame only
 * added grey margin around these portrait cover shots, and a single dark card
 * in a field of white ones is the stronger signal at the same size.
 */
.swu-library .swu-library__card--hero {
	background: linear-gradient(158deg, var(--swu-library-navy) 0%, var(--swu-library-navy-deep) 100%);
	border-color: var(--swu-library-navy-deep);
}

.swu-library .swu-library__card--hero h3 a {
	color: var(--swu-library-white);
}

.swu-library .swu-library__card--hero h3 a:hover {
	color: var(--swu-library-line);
}

.swu-library .swu-library__card--hero .swu-library__card-inside {
	color: var(--swu-library-line);
}

.swu-library .swu-library__card--hero .swu-library__card-type {
	background: var(--swu-library-gold);
	color: var(--swu-library-navy-deep);
}

.swu-library .swu-library__card--hero .swu-library__card-type::after {
	opacity: 0.8;
}

.swu-library .swu-library__card--hero .swu-library__flag {
	background: rgba(255, 255, 255, 0.12);
	border-color: var(--swu-library-on-navy-line);
	color: var(--swu-library-white);
}

.swu-library .swu-library__card--hero a.swu-library__flag:hover {
	background: var(--swu-library-white);
	border-color: var(--swu-library-white);
	color: var(--swu-library-navy-deep);
}

.swu-library .swu-library__card--hero .swu-library__card-media--blank {
	background: rgba(255, 255, 255, 0.07);
}

.swu-library .swu-library__card--hero .swu-library__card-glyph svg {
	stroke: var(--swu-library-white);
}

.swu-library__card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 12px;
	padding: 18px 18px 20px;
}

.swu-library .swu-library__card h3 {
	font-family: var(--swu-library-display);
	font-size: 15px !important;
	font-weight: 700 !important;
	letter-spacing: -0.015em !important;
	line-height: 1.3 !important;
	margin: 0 !important;
}

.swu-library__card h3 a {
	color: var(--swu-library-navy-deep);
	display: -webkit-box;
	overflow: hidden;
	text-decoration: none;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
}

.swu-library__card h3 a:hover {
	color: var(--swu-library-blue);
}

.swu-library__card-inside {
	color: var(--swu-library-blue-deep);
	font-size: 11.5px;
	font-weight: 700;
	margin: 0;
}

/*
 * Result cards no longer highlight at all. The PDF-excerpt panel still does,
 * because pointing at the phrase inside a page is that panel's whole job —
 * but in the brand tint rather than the default yellow.
 */
.swu-library mark,
.swu-library__results mark,
.swu-library [data-swu-library-pdf-list] mark {
	background: var(--swu-library-blue-soft) !important;
	color: var(--swu-library-navy-deep) !important;
	padding: 0 2px;
}

.swu-library__flags {
	display: flex;
	flex-wrap: wrap;
	gap: 5px;
	margin-top: auto;
	padding-top: 6px;
}

.swu-library__flag {
	align-items: center;
	background: var(--swu-library-frost);
	border: 1px solid var(--swu-library-hairline);
	border-radius: 0;
	color: var(--swu-library-navy);
	display: inline-flex;
	font-size: 12px;
	gap: 4px;
	line-height: 1;
	padding: 3px 7px;
	text-decoration: none;
}

a.swu-library__flag:hover {
	background: var(--swu-library-blue-soft);
	border-color: var(--swu-library-blue);
}

.swu-library__flag-glyph {
	font-size: 13px;
	line-height: 1;
}

.swu-library__flag i {
	font-size: 9.5px;
	font-style: normal;
	font-weight: 800;
	letter-spacing: 0.04em;
	opacity: 0.75;
}

.swu-library__flag--more {
	font-size: 10px;
	font-weight: 800;
	opacity: 0.8;
}

.swu-library__loading {
	display: grid;
	gap: 24px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.swu-library__loading > div {
	background: var(--swu-library-white);
	border: 1px solid var(--swu-library-line);
	padding: 0 20px 22px;
}

.swu-library__loading span,
.swu-library__loading i,
.swu-library__loading b {
	animation: swu-library-pulse 1.15s ease-in-out infinite alternate;
	background: var(--swu-library-blue-soft);
	display: block;
}

.swu-library__loading span {
	aspect-ratio: 4 / 3;
	margin: 0 -20px 20px;
}

.swu-library__loading i {
	height: 22px;
	width: 80%;
}

.swu-library__loading b {
	height: 12px;
	margin-top: 12px;
	width: 55%;
}

@keyframes swu-library-pulse {
	to {
		background: var(--swu-library-frost);
	}
}

.swu-library__empty,
.swu-library__error {
	background: var(--swu-library-white);
	border-left: 4px solid var(--swu-library-blue);
	display: grid;
	gap: 6px;
	padding: 28px;
}

.swu-library__error {
	border-left-color: var(--swu-library-alert);
}

.swu-library__empty strong,
.swu-library__error strong {
	color: var(--swu-library-navy);
	font-size: 16px;
}

.swu-library__empty span,
.swu-library__error span {
	color: var(--swu-library-muted);
	font-size: 14px;
}

.swu-library__pagination {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	justify-content: center;
	margin-top: 38px;
}

.swu-library .swu-library__pagination button {
	background: var(--swu-library-white) !important;
	border: 1px solid var(--swu-library-line) !important;
	border-radius: 0 !important;
	color: var(--swu-library-navy) !important;
	font-size: 12px;
	font-weight: 800;
	min-height: 40px;
	min-width: 40px;
	padding: 8px 12px;
}

.swu-library .swu-library__pagination button.is-current,
.swu-library .swu-library__pagination button:hover {
	background: var(--swu-library-navy) !important;
	border-color: var(--swu-library-navy) !important;
	color: var(--swu-library-white) !important;
}

.swu-library .swu-library__pagination button:disabled {
	cursor: not-allowed;
	opacity: 0.38;
}

.swu-library button:focus-visible,
.swu-library a:focus-visible,
.swu-library input:focus-visible,
.swu-library select:focus-visible {
	outline: 3px solid var(--swu-library-blue-deep);
	outline-offset: 3px;
}

/* Inverted so the ring keeps its contrast on the one dark card. */
.swu-library__tile--swubot :focus-visible {
	outline-color: var(--swu-library-focus);
}

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

@media (max-width: 1180px) {
	.swu-library__tile--topic,
	.swu-library__tile--popular {
		grid-column: span 6;
	}
}

@media (max-width: 900px) {
	.swu-library__tile--all,
	.swu-library__tile--language,
	.swu-library__tile--swubot {
		grid-column: span 3;
		min-height: 0;
	}

	.swu-library__tile--swubot {
		grid-column: span 6;
	}

	.swu-library__notes {
		grid-template-columns: 1fr;
	}

	.swu-library__note + .swu-library__note {
		border-left: 0;
		border-top: 1px solid var(--swu-library-hairline);
	}
}

@media (max-width: 900px) {
	.swu-library__results-layout {
		grid-template-columns: 1fr;
	}

	.swu-library__filters {
		margin-bottom: 4px;
	}
}

@media (max-width: 620px) {
	/*
	 * The theme's header is fixed and 72px tall at this breakpoint; without
	 * extra lead-in it sliced the top two-thirds off the "Library" wordmark.
	 */
	.swu-library__hero {
		padding-inline: 16px;
		padding-top: 104px;
	}

	.swu-library .swu-library__hero h1 {
		font-size: clamp(44px, 13vw, 62px);
	}

	.swu-library__search {
		border-radius: 0;
		grid-template-columns: 48px minmax(0, 1fr);
		min-height: 60px;
	}

	.swu-library .swu-library__search button {
		grid-column: 1 / -1;
		margin: 0 7px 7px;
		min-height: 50px;
		min-width: 0 !important;
	}

	.swu-library__landing,
	.swu-library__results {
		padding-inline: 16px;
	}

	.swu-library__tile {
		padding: 24px 20px 28px;
	}

	.swu-library__tile--topic,
	.swu-library__tile--popular,
	.swu-library__tile--all,
	.swu-library__tile--language,
	.swu-library__tile--swubot {
		grid-column: span 6;
		min-height: 0;
	}

	.swu-library .swu-library__chips button {
		padding: 11px 10px 11px 15px !important;
	}

	.swu-library__rank a {
		padding: 13px 8px;
	}

	.swu-library__tile-art--chat {
		opacity: 0.55;
		width: 180px;
	}

	.swu-library__note {
		padding: 24px 22px;
	}

	.swu-library__results-head {
		align-items: flex-start;
		flex-direction: column;
	}

	.swu-library__grid,
	.swu-library__loading {
		grid-template-columns: 1fr;
	}
}

@media (prefers-reduced-motion: reduce) {
	.swu-library__tile,
	.swu-library .swu-library__tile-go,
	.swu-library .swu-library__tile-go svg,
	.swu-library .swu-library__choices button,
	.swu-library .swu-library__chips button,
	.swu-library__note-body a span {
		transition: none;
	}

	.swu-library__tile:hover,
	.swu-library__tile:focus-within {
		transform: none;
	}

	.swu-library .swu-library__tile-go:hover svg,
	.swu-library__note-body a:hover span {
		transform: none;
	}
}

@media (max-width: 760px) {
	.swu-library__grid,
	.swu-library__loading {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Editorial feature, part of the landing state so filters hide it naturally. */
.swu-library__featured {
	align-items: stretch;
	background: var(--swu-library-frost);
	border: 1px solid var(--swu-library-hairline);
	border-radius: 0;
	display: grid;
	grid-template-columns: minmax(240px, 0.8fr) minmax(0, 1.7fr);
	margin-bottom: 28px;
	overflow: hidden;
}
.swu-library__featured-art {
	background: var(--swu-library-blue-soft);
	padding: 24px;
	display: grid;
	place-items: center;
}
.swu-library__featured-art img {
	display: block;
	width: 100%;
	height: 240px;
	object-fit: contain;
	border-radius: 0;
}
.swu-library__featured-body {
	align-self: center;
	padding: clamp(24px, 3vw, 42px);
}
.swu-library .swu-library__featured h2 {
	color: var(--swu-library-navy);
	font-family: var(--swu-brand-font);
	font-size: clamp(24px, 2.6vw, 36px);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.2;
	margin: 0 0 24px;
	text-wrap: balance;
}
.swu-library .swu-library__featured-link {
	align-items: center;
	background: var(--swu-library-blue);
	border-radius: 0;
	color: var(--swu-library-white);
	display: inline-flex;
	font-size: 14px;
	font-weight: 700;
	gap: 18px;
	min-height: 46px;
	padding: 12px 20px;
	text-decoration: none;
}
.swu-library .swu-library__featured-link:hover {
	background: var(--swu-library-blue-deep);
}
.swu-library__featured--text { grid-template-columns: 1fr; }
@media (max-width: 620px) {
	.swu-library__featured { grid-template-columns: minmax(0, 1fr); }
	.swu-library__featured-art img { height: 200px; }
}

/* September 22: list navigation and clearly separated filter/PDF sections. */
.swu-library__filters {
	background: var(--swu-library-frost);
	border-color: var(--swu-library-edge);
}
.swu-library__filters-heading { margin-bottom: 0; }
.swu-library__filters-heading button { font-weight: 600; letter-spacing: 0; text-transform: none; text-decoration: underline; }
.swu-library__bubbles { display: grid; gap: 0; }
.swu-library .swu-library__bubbles button {
	align-items: center;
	background: transparent !important;
	border: 0 !important;
	color: var(--swu-library-navy-deep) !important;
	display: flex;
	font-size: 13px;
	font-weight: 500;
	gap: 7px;
	line-height: 1.45;
	min-height: 38px;
	padding: 7px 0 !important;
	text-align: left;
	width: 100% !important;
}
.swu-library__bubbles button::before {
	background: white;
	border: 1px solid var(--swu-library-blue-deep);
	content: "";
	flex: 0 0 14px;
	height: 14px;
}
.swu-library__bubbles button[aria-pressed="true"]::before {
	background: var(--swu-library-blue-deep);
	box-shadow: inset 0 0 0 3px white;
}
.swu-library .swu-library__bubbles button:is(:hover, [aria-pressed="true"]) {
	background: transparent !important;
	color: var(--swu-library-blue-deep) !important;
	font-weight: 700;
}
.swu-library__dates label { display: grid; font-size: 12px; gap: 6px; }
.swu-library__tile--topic .swu-library__choices,
.swu-library__tile--language .swu-library__chips { display: grid; gap: 0; align-content: start; }
.swu-library :is(.swu-library__tile--topic .swu-library__choices, .swu-library__chips) button {
	background: transparent !important;
	border: 0 !important;
	border-bottom: 1px solid var(--swu-library-hairline) !important;
	color: var(--swu-library-navy-deep) !important;
	font-size: 14px;
	font-weight: 500;
	min-height: 44px;
	padding: 10px 0 !important;
	width: 100% !important;
}
.swu-library :is(.swu-library__tile--topic .swu-library__choices, .swu-library__chips) button:hover { color: var(--swu-library-blue-deep) !important; text-decoration: underline; }
.swu-library .swu-library__chips button b {
	background: transparent;
	color: var(--swu-library-blue-deep);
	margin-left: auto;
}
.swu-library .swu-library__chips button:hover b { background: transparent; color: var(--swu-library-blue-deep); }
.swu-library__tile--topic .swu-library__tile-art { opacity: 0.12; }
.swu-library .swu-library__tile h3 { font-size: 26px; font-weight: 700; }
.swu-library__featured { background: var(--swu-library-frost); border: 1px solid var(--swu-library-edge); }
.swu-library .swu-library__results-head h2,
.swu-library [data-swu-library-pdfs] > h3 {
	color: var(--swu-library-navy-deep);
	font-family: var(--swu-library-display);
	font-size: clamp(22px, 2vw, 28px);
	font-weight: 700;
	line-height: 1.25;
}
.swu-library [data-swu-library-pdfs] {
	background: var(--swu-library-frost);
	border: 1px solid var(--swu-library-edge);
	margin-top: 34px;
	padding: 22px;
}
.swu-library [data-swu-library-pdf-count] { color: var(--swu-library-blue-deep); font-size: 12px; font-weight: 700; }
.swu-library [data-swu-library-pdf-list] { margin-top: 20px; }
.swu-library__results { scroll-margin-top: 100px; }
