  /*
 * LAPOP STYLE *
 * /


@import url('https://fonts.googleapis.com/css2?family=Libre+Caslon+Display&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Antonio:wght@100..700&display=swap');

@font-face {
  font-family: "Theinhardt";
  src: url("/center-for-global-democracy/data/wp-content/plugins/lapop/fonts/theinhardt-regular.otf") format("opentype");
}
@font-face {
  font-family: "Theinhardt Bold";
  src: url("/center-for-global-democracy/data/wp-content/plugins/lapop/fonts/theinhardt-bold.otf") format("opentype");
}
@font-face {
  font-family: "Theinhardt Medium";
  src: url("/center-for-global-democracy/data/wp-content/plugins/lapop/fonts/theinhardt-medium.otf") format("opentype");
}

.ui-igtrialwatermark {
	display: none;
}
h1,h2,h3,h4 {
	font-family: "Libre Caslon Display", serif;
}
body {
	font-family: "Inter", sans-serif !important;
}

/* Reusable visually-hidden utility — keeps content in the accessibility tree */
.visually-hidden {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ============================================================
 * SEARCH PANEL
 * ============================================================ */

.fSelectorWrap {
	max-width: 1000px;
	margin: 0 auto 32px;
	box-sizing: border-box;
	background: #f7f5f1;
	border: 1px solid #d0dbd1;
	border-left: 4px solid #4D6850;
	border-radius: 12px;
	padding: 22px 26px 18px;
	box-shadow: 0 2px 12px rgba(61, 80, 63, 0.07);
	text-align: left;
}

/* Sans rather than the display serif, matching the admin screens and the agreement modal.
   !important guards against the block theme's own heading sizes. */
.fSelectorWrap > h1 {
	font-size: 1.6rem !important;
	font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-weight: 700;
	color: #1e2e1f;
	margin-bottom: 16px;
	letter-spacing: -0.015em;
	line-height: 1.25;
}

.entry-content a {
	color: #4D6850 !Important;
}
	.entry-content a:hover {
		color: #3A4F3D !important;
	}
.btn-primary {
	background-color: #4D6850 !important;
	border-color: #3A4F3D !important;
}
	.btn-primary:hover {
		background-color: #3A4F3D !important;
	}
.wp-block-navigation li a {
	font-family: "Theinhardt Medium" !important;
	font-size: 15px;
	transition: box-shadow .2s cubic-bezier(0.645, 0.045, 0.355, 1), color .2s cubic-bezier(0.645, 0.045, 0.355, 1);
	text-decoration: none !important;
}
	.wp-block-navigation li a:hover {
		color: #946e24 !important;
	}
	.wp-block-navigation li.current-menu-item a {
		color: #946e24 !important;
	}

/* No decorative chevron on nav items. This was the plugin's own ::after, applied to
   every link regardless of whether it had a submenu — which read as "there is more here"
   on Directory and Logout, where there is not. WordPress renders its own indicator for
   items that genuinely have children, so nothing is lost. The padding-right that made
   room for the chevron goes with it. */

/* ============================================================
 * SEARCH INPUTS
 * ============================================================ */

/* Row containers replaced by .fFilterGrid — see the filter-grid block below. */

/* Main text search input */
.searchTitle {
	border-radius: 8px;
	border: 1.5px solid #b0beb1;
	padding: 7px 12px;
	height: 38px;
	min-width: 200px;
	font-size: 14px;
	font-family: inherit;
	color: #1e2e1f;
	transition: border-color 0.2s, box-shadow 0.2s;
	box-sizing: border-box;
}
.searchTitle:focus {
	border-color: #4D6850;
	box-shadow: 0 0 0 3px rgba(77, 104, 80, 0.15);
	outline: none;
}
.searchTitle::placeholder {
	color: #9aaa9b;
}

/* Search icon */
.feyeglass {
	vertical-align: middle;
	font-size: 20px;
	color: #4D6850;
	margin-right: 5px;
	position: relative;
	top: -1px;
}

/* All filter selects — consistent height and style */
select {
  font-family: "Theinhardt", sans-serif;
  font-size: 14px;
  color: #1e2e1f;
  background: #fff;
}
select option {
  font-family: "Theinhardt", sans-serif;
  font-size: 14px;
  color: #333;
  background: #fff;
}

select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  padding: 7px 36px 7px 10px;
  border: 1.5px solid #b0beb1;
  border-radius: 8px;
  background-color: #fff;
  font-size: 14px;
  font-family: inherit;
  color: #1e2e1f;
  height: 38px;
  box-sizing: border-box;
  cursor: pointer;
  transition: border-color 0.2s, box-shadow 0.2s;
}

select:focus {
  box-shadow: 0 0 0 3px rgba(77, 104, 80, 0.15);
  outline: none;
  border-color: #4D6850 !important;
}

select {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='%235a6b5c'><path d='M7 10l5 5 5-5z'/></svg>");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 16px 16px;
  padding-right: 34px;
}

/* ============================================================
 * SEARCH PANEL — FILTER GRID
 *
 * One grid for every control, so they share column edges instead of each row sizing
 * itself. Controls fill their cell rather than carrying fixed widths, which also means a
 * long option (a country name, a new project) can never stretch a control and knock the
 * layout out of line again.
 * ============================================================ */

.fFilterGrid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px 16px;
	align-items: end;
}

.fField {
	display: flex;
	flex-direction: column;
	gap: 5px;
	min-width: 0;
}
.fField--wide {
	grid-column: span 2;
}
.fField--check {
	grid-column: 1 / -1;
	flex-direction: row;
	align-items: center;
	margin-top: 2px;
}

/* .secondSRow keeps its class for the study-year badge code; neutralise the old
   row styling it used to carry so it behaves as a plain grid cell. */
.fFilterGrid .secondSRow {
	display: flex;
	margin: 0;
	padding: 0;
	border: 0;
}

.fLabel {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #5a6b5c;
	line-height: 1.3;
}

/* Every control fills its cell, so the columns line up down the panel */
.fFilterGrid select,
.fFilterGrid .searchTitle {
	width: 100%;
	max-width: 100%;
	margin: 0;
	text-overflow: ellipsis;
}

/* Search box: icon sits inside the field rather than floating beside it */
.fSearchBox {
	position: relative;
	display: block;
}
.fSearchBox .feyeglass {
	position: absolute;
	left: 10px;
	top: 50%;
	transform: translateY(-50%);
	margin: 0;
	font-size: 19px;
	color: #6b826d;
	pointer-events: none;
}
.fSearchBox .searchTitle {
	padding-left: 36px;
	min-width: 0;
}

.fField--action .btn.dsReset {
	width: 100%;
	margin: 0;
}

/* Merged-set checkbox reads as one control */
.fFilterGrid .checkWrap {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-size: 13px;
	color: #3d4a3e;
	cursor: pointer;
}
.fFilterGrid .checkWrap input[type="checkbox"] {
	width: 16px;
	height: 16px;
	margin: 0;
	accent-color: #4D6850;
	cursor: pointer;
}

/* Study-year tags drop below the combo inside the same cell */
.fFilterGrid .pubStore {
	display: block;
	width: 100%;
	margin-top: 6px;
}
.fFilterGrid .pubStore strong {
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
}

/* igCombo: make the generated widget fill its cell and read as one control, rather
   than a text field with a detached button sitting beside it. */
.fFilterGrid .ui-igcombo-wrapper,
.fFilterGrid .ui-igcombo {
	width: 100% !important;
	max-width: 100% !important;
}
/* Width and flex only. Deliberately NO height and NO overflow on .ui-igcombo: a height
   constraint there clips the dropdown internals, which was diagnosed and fixed once
   already (see the note above the .ui-igcombo.ui-corner-all rule). The existing 36px
   heights on the fieldholder and button are left to size the widget as they already do. */
.fFilterGrid .ui-igcombo {
	display: flex !important;
	align-items: center;
	box-sizing: border-box;
}
.fFilterGrid .ui-igcombo .ui-igcombo-fieldholder-ltr,
.fFilterGrid .ui-igcombo .ui-igcombo-fieldholder-rtl {
	flex: 1 1 auto !important;
	width: auto !important;
	min-width: 0 !important;
}
.fFilterGrid .ui-igcombo input.ui-igcombo-field {
	width: 100% !important;
}
.fFilterGrid .ui-igcombo .ui-igcombo-button-ltr,
.fFilterGrid .ui-igcombo .ui-igcombo-button-rtl {
	flex: 0 0 34px !important;
	width: 34px !important;
}

/* ---- Narrower viewports ---- */

@media all and (max-width: 900px) {
	.fFilterGrid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.fField--wide {
		grid-column: 1 / -1;
	}
}

@media all and (max-width: 560px) {
	.fFilterGrid {
		grid-template-columns: minmax(0, 1fr);
		gap: 12px;
	}
	.fField--wide,
	.fField--action,
	.fField--check {
		grid-column: 1 / -1;
	}
	/* The blank spacer label only exists to line the Reset button up with the labelled
	   fields beside it. In a single column there is nothing to line up with, and it
	   would just leave an empty row above the button. */
	.fField--action .fLabel {
		display: none;
	}
	.fField--action {
		margin-top: 2px;
	}
}

/* igCombo */
.ui-igcombo.ui-corner-all {
  border-radius: 8px !important;
  overflow: hidden;
}
.ui-igcombo .ui-igcombo-fieldholder-ltr {
  border-radius: 8px 0 0 8px !important;
}
.ui-igcombo .ui-igcombo-fieldholder-rtl {
  border-radius: 0 8px 8px 0 !important;
}
.ui-igcombo .ui-igcombo-button-ltr {
  border-radius: 0 8px 8px 0 !important;
}
.ui-igcombo .ui-igcombo-button-rtl {
  border-radius: 8px 0 0 8px !important;
}
.ui-igcombo-dropdown.ui-corner-all {
  border-radius: 8px !important;
  overflow: hidden;
}
.ui-igcombo input.ui-igcombo-field::placeholder {
  color: #9aaa9b;
  opacity: 1;
  font-size: 14px;
  padding-left: 6px;
}

/* Outer wrapper: let it self-size from the inner elements so the dropdown
   can expand freely — height constrained here clips the dropdown internals */
.ui-igcombo.ui-corner-all {
  box-sizing: border-box;
}
.ui-igcombo .ui-igcombo-fieldholder-ltr,
.ui-igcombo .ui-igcombo-fieldholder-rtl {
  height: 36px !important;
  display: inline-flex !important;
  align-items: center;
}
.ui-igcombo input.ui-igcombo-field {
  height: 34px !important;
  padding: 0 8px !important;
  font-size: 14px !important;
  font-family: inherit !important;
  border: none !important;
  box-sizing: border-box;
}
.ui-igcombo .ui-igcombo-button-ltr,
.ui-igcombo .ui-igcombo-button-rtl {
  height: 36px !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
}

/* Study-year free-text input (second row) */
.pubyearSearch {
  height: 38px;
  border: 1.5px solid #b0beb1;
  border-radius: 8px;
  padding: 7px 12px;
  font-size: 14px;
  font-family: inherit;
  color: #1e2e1f;
  box-sizing: border-box;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.pubyearSearch:focus {
  border-color: #4D6850;
  box-shadow: 0 0 0 3px rgba(77, 104, 80, 0.15);
  outline: none;
}
/* end select */

/* Reset — outlined green button, fills on hover */
.dsReset {
	background: transparent !important;
	border: 1.5px solid #4D6850 !important;
	color: #4D6850 !important;
	border-radius: 8px !important;
	padding: 6px 16px !important;
	font-size: 13px !important;
	font-weight: 600;
	letter-spacing: 0.02em;
	transition: background 0.18s, color 0.18s !important;
	cursor: pointer;
	height: 38px;
	line-height: 1;
}
.dsReset:hover {
	background: #4D6850 !important;
	color: #ffffff !important;
}

/* Filter labels (Project, Search by Study Year, Merged) */
.projlabel span,
.searchbylabel {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: #5a6b5c;
	margin-right: 5px;
}

/* Checkbox filter row */
.checkWrap {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	margin-right: 12px;
}
.checkWrap input[type="checkbox"] {
	accent-color: #4D6850;
	width: 15px;
	height: 15px;
	cursor: pointer;
}

/* stylize select row */
.fdivider {
	border-top: solid black 1px;
	padding-top: 10px;
}
	.fdivider.fdown {
		margin-top: 10px;
		margin-bottom: 10px;
	}
	.fdivider.nobord {
		border-top: none !important;
	}
.fdivider h2 {
	text-align: center;
	margin: 0 auto;
}
.fopts .checkbox-inline {
	display: inline-block;
	margin-right: 10px;
}
.fscrollbox {
	display: inline-block;
	padding: 20px;
	border: 1px solid rgba(0, 0, 0, .125);
	border-radius: .25rem;
}

.crow {
	border-bottom: solid grey 1px;
}
	.crow:hover {
		cursor: pointer;
		background: #dfdcdc;
	}
	.crow .fdel {
		font-size: 14px;
		float: right;
	}
		.crow .fdel:hover {
			color: black;
			font-size: 14px;
			font-weight: bold;
		}

/**
 * wp-core-ui select *
 */

.backDsetEdit_wrapper select {
  background-position: right 1px top 55% !important;
  width: 40px;
  margin-right: 7px;
}

/**
 * hide file changes *
 */

.formFile, .fileinput-exists {
	display: none;
}
.langCount, .datName {
	display: contents;
}
.removeQuest, .removeDat, .removeRes {
	display: none;
}
.dfirsthide, .resfirsthide {
	visibility: hidden;
}
.resName {
	display: contents;
}
.removeResDiv {
	width: 100%;
}
.removeDatDiv {
	width: 100%;
}

/* label utility */
.label-on-left {
	display: flex;
	align-items: center;
}
.fdata {
	margin-right: 10px;
}

/* ============================================================
 * CATALOGUE CARDS
 * ============================================================ */

/* Grid wrapper — breaks out of the constrained content column just like
   fSelectorWrap, but wider (1200px cap) so each of the 2 columns gets
   a comfortable ~580px at typical desktop widths. */
.boxyWrapper {
	max-width: 1200px;
	margin: 0 auto;
	box-sizing: border-box;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
	align-items: start;
}

.box {
	background: #f7f5f1;
	border: 1px solid #d8e4d9;
	border-left: 4px solid #4D6850;
	border-radius: 12px;
	box-shadow: 0 2px 10px rgba(61, 80, 63, 0.06);
	color: #2a3020;
	display: block;
	padding: 18px 20px 16px;
	margin-bottom: 0;
	height: initial;
	transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.boxyWrapper > .box:only-child {
	grid-column: 1 / -1;
	max-width: 600px;
	margin-left: auto;
	margin-right: auto;
	width: 100%;
}

.box:hover {
	box-shadow: 0 6px 22px rgba(61, 80, 63, 0.13);
	transform: translateY(-2px);
}

/* Card action icons — float right, icon-button style */
.dataLink,
.dataSend,
.dataDelete,
.allcat {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border-radius: 6px;
	color: #6b826d !important;
	text-decoration: none !important;
	font-size: 0;
	float: right;
	margin-left: 4px;
	transition: background 0.15s, color 0.15s;
}
.dataLink .material-symbols-outlined,
.dataSend .material-symbols-outlined,
.allcat .material-symbols-outlined {
	font-size: 17px;
}
.dataDelete .material-symbols-outlined {
	font-size: 17px;
}
.dataLink:hover,
.dataSend:hover,
.allcat:hover {
	background: #eef3ee;
	color: #3A4F3D !important;
}
.dataDelete:hover {
	background: #fdecea;
	color: #b91c1c !important;
}

/* Nav tabs — underline style, no box border */
.dnav.nav-tabs {
	border-bottom: 2px solid #e0e8e1 !important;
	margin-top: 8px;
	margin-bottom: 14px;
	clear: both;
}
.dnav .nav-link {
	color: #4f6654 !important;
	border: none !important;
	border-bottom: 2px solid transparent !important;
	margin-bottom: -2px;
	padding: 5px 16px;
	font-size: 11px !important;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.07em;
	border-radius: 0 !important;
	background: transparent !important;
	transition: color 0.15s, border-color 0.15s;
}
.dnav .nav-link.active {
	color: #4D6850 !important;
	border-bottom-color: #4D6850 !important;
	background: transparent !important;
}
.dnav .nav-link:hover:not(.active) {
	color: #3A4F3D !important;
	border-bottom-color: #b0c8b2 !important;
	background: transparent !important;
}

/* Dataset metadata table */
.dsetTable {
	width: 100%;
	margin-top: 0;
	border-collapse: collapse;
}
.dsetTable td {
	padding: 7px 8px;
	border: none;
	vertical-align: top;
	font-size: 14px;
	line-height: 1.4;
}
.dsetTable.is-bordered td {
	border: 1px solid #e0e8e1;
}

/* Label column */
.tdfirst {
	width: 36%;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: #526454;
	padding-top: 9px;
	white-space: nowrap;
}

/* Alternating row shading (Excel zebra-stripe) */
.tdarker {
	background: #ebe6de;
}
.tlight {
	background: transparent;
}
.tdarker:hover,
.tlight:hover {
	background: #e2ddd5;
}

/* Study title row — make it the card's visual headline */
.tabDiv[tabno="1"] .dsetTable tbody tr:first-child td {
	padding-bottom: 10px;
	border-bottom: 2px solid #e0e8e1;
}
.tabDiv[tabno="1"] .dsetTable tbody tr:first-child .shownValue {
	color: #1a2e1c;
}

.dpresent {
	display: block;
}
.dficon {
	float: right;
}
.tabDiv {
	display: none;
}
.tabDiv.active {
	display: block;
}

/**
 * edit dataset
 */
.editTools {
	float: right;
}
	.ahide {
		display: none !important;
	}
	.ainprogress {
		display: none !important;
	}
	.editbox {
		display: inline-block;
	}

/* Visually hidden but kept in the accessibility tree for WCAG heading structure. */
.wp-block-post-title {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
	color: #1a1a1a;
}

/**
 * Top spacing on the pages that render our UI.
 *
 * twentytwentyfive's page.html stacks two separate spacing--60 gaps above the
 * content -- a margin-top on <main> and a padding-top on the group inside it.
 * That preset is clamp(30px, 7vw, 70px), so on any desktop viewport it lands on
 * 70px twice. With the header's own 20px bottom padding that is ~160px of void
 * above the logo or the search panel.
 *
 * A third gap comes from the constrained layout: it gives every child after the
 * first a margin-block-start of blockGap (1.2rem). The shortcode emits a hidden
 * #homepagePopup before .fSelectorWrap, so the panel is never the first child
 * and picks up that margin too -- hence zeroing it explicitly below.
 *
 * .lp-app is set by lp_app_body_class() on the front page and on any page
 * carrying the directory shortcode, so this cannot drift when page IDs differ
 * between environments. Ordinary content pages keep the theme's default rhythm.
 *
 * The theme's page-no-title.html would also flatten this, but it drops
 * wp:post-title entirely and would undo the hidden H1 kept above.
 */
.lp-app main.wp-block-group {
	margin-top: 0;
}
.lp-app main > .wp-block-group {
	padding-top: var(--wp--preset--spacing--30);
}
.lp-app .fSelectorWrap {
	margin-top: 0;
}

/**
 * adding files *
 */
.file_generator {
	margin-top: 14px
}
.newfile {
}
.nofile {
	display: none;
}
.fnupload {
	margin-right: 5px;
}
.fnupload.is-busy {
	opacity: 0.65;
	pointer-events: none;
}

/* ============================================================
 * FEATURE BADGES (yearbox pills)
 * ============================================================ */

.pubyear {
	width: 50%;
}
.pubblockContainer {
	display: inline-block;
	margin-top: 6px;
	float: right;
	width: 300px;
}

/* Pill badge — base */
.yearbox {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	border-radius: 20px;
	border: 1.5px solid #c0cfc1;
	padding: 3px 10px 3px 8px;
	margin-right: 5px;
	margin-bottom: 4px;
	background: #f4f8f4;
	color: #3a5c3e;
	transition: background 0.15s, border-color 0.15s;
}

/* "Yes" features — green tint */
.yearbox[type="yes"] {
	background: #eaf2ea;
	border-color: #4D6850;
	color: #2d4d30;
}

/* "No"/antonym features — neutral grey */
.yearbox[type="no"] {
	background: #f7f7f7;
	border-color: #c8c8c8;
	color: #636363;
}

.yearname {
	font-size: 12px;
	font-weight: 500;
}

/* Study-year edit mode hovers (admin only) */
.currYearEdit .yearbox:not(.currYearEdit .editbox .yearbox):hover,
.dsetTable .colspan .yearbox:hover {
	background: #2a3020;
	color: white;
	border-color: #2a3020;
	cursor: pointer;
}
.dsetTable .colspan .editbox .yearbox {
	box-shadow: 4px 3px 3px rgba(0,0,0,0.15) !important;
}
.dsetTable .colspan .editbox .yearbox:active {
	transform: translateY(.35rem);
	box-shadow: 0 0 0 #1f4fbf, inset 0 .12rem .35rem rgba(0,0,0,.3);
}

.ui-igcombo-highlight {
	pointer-events: auto !important;
	cursor: pointer;
}
.instusecancel {
	font-size: 8pt !important;
	vertical-align: 2px;
	cursor: pointer;
	opacity: 0.55;
}
.shownValue .yearbox .instusecancel {
	display: none;
}

/* Year badge grouping in edit mode */
.yboxwrap {
	margin-top: 10px;
}

/* Resources tab section headers ("Questionnaires", "Technical Document").
   Kept at medium weight and just under body size so they stay subordinate to the
   document links below them, which are bold 14px. Sentence case rather than uppercase
   is the main readability gain at this size. The colour is also darker than before:
   #6b826d at 11px measured ~3.9:1 against the card background, below the 4.5:1 WCAG AA
   floor for normal-size text; #3A4F3D clears 8:1. */
.badgeheader {
	font-family: inherit;
	font-size: 13px;
	font-weight: 500;
	text-transform: none;
	letter-spacing: normal;
	color: #3A4F3D;
	padding: 12px 0 5px;
	border-bottom: 1px solid #e8ede8;
	margin-bottom: 8px;
	text-align: left !important;
}

/***
 * ip editing *
 **/
.editIpTools .itools .material-symbols-outlined {
	font-size: 20px;
}
.iprow .editBox {
	display: none;
}

/* ============================================================
 * ADMIN SCREENS
 * Dataset Administration · Datatype Management · Configure IP Authentication
 *
 * The markup carries ~100 class references from a Material Dashboard-era theme
 * (label-floating, material-input, checkbox-material, btn-fill, card-content,
 * help-block, label-on-left) whose stylesheet was never enqueued — only Bootstrap
 * 4.5.3 is. That is why these screens looked half-finished rather than merely dated.
 *
 * Everything below gives those hooks real meaning instead of re-adding a 2016
 * dependency. Scoped to .lp-admin so nothing leaks into the rest of wp-admin, and no
 * class or id is renamed: the admin JS selects on nearly all of them.
 * ============================================================ */

.lp-admin {
	--lp-green: #4D6850;
	--lp-green-dark: #3A4F3D;
	--lp-gold: #C8A46A;
	--lp-ink: #1e2e1f;
	--lp-body: #384139;
	--lp-muted: #647566;
	--lp-line: #dde4de;
	--lp-surface: #ffffff;
	--lp-tint: #f5f8f5;

	max-width: 1180px;
	margin: 18px 20px 48px 0;
	font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 14px;
	line-height: 1.55;
	color: var(--lp-body);
}

/* ---- Headings ---------------------------------------------------------- */

/* Everything in here is sans. The global h1–h4 rule sets Libre Caslon Display, a
   high-contrast display serif drawn for large sizes — at admin heading sizes it reads
   thin and spindly. Hierarchy comes from weight and size instead of typeface. */
.lp-admin h1,
.lp-admin h2,
.lp-admin h3,
.lp-admin h4 {
	font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

.lp-admin > h1 {
	font-size: 1.55rem;
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.015em;
	color: var(--lp-ink);
	margin: 0 0 20px;
	padding: 0 0 14px;
	border-bottom: 2px solid var(--lp-line);
}

/* Section headers inside cards carry inline text-align/margin from the markup */
.lp-admin .card h1 {
	font-family: "Inter", sans-serif;
	font-size: 0.78rem !important;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--lp-muted);
	text-align: left !important;
	margin: 0 !important;
}
.lp-admin .card h2 {
	font-family: "Inter", sans-serif;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--lp-muted);
	text-align: left;
	margin: 0;
}

/* ---- Cards ------------------------------------------------------------- */
/* Inline max-width:80%/90% in the markup has to be beaten with !important */

.lp-admin .card {
	max-width: none !important;
	width: 100%;
	background: var(--lp-surface);
	border: 1px solid var(--lp-line);
	border-radius: 12px;
	box-shadow: 0 1px 3px rgba(30, 46, 31, 0.06);
	padding: 24px 28px;
	margin-bottom: 26px;
	overflow: visible;
}
.lp-admin .card-header-text {
	margin-bottom: 18px;
}
.lp-admin .card-title {
	font-size: 1.05rem;
	font-weight: 700;
	letter-spacing: -0.005em;
	color: var(--lp-ink);
	margin: 0 0 18px;
}
.lp-admin .card-content {
	display: block;
}

/* ---- Form rows --------------------------------------------------------- */

.lp-admin .row {
	margin-bottom: 4px;
	align-items: flex-start;
}
.lp-admin .form-group {
	margin-bottom: 18px;
}
.lp-admin .label-on-left {
	display: block;
	padding-top: 9px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--lp-muted);
}
/* Empty placeholders left over from the old theme */
.lp-admin .control-label:empty,
.lp-admin .material-input {
	display: none;
}

/* ---- Inputs ------------------------------------------------------------ */

.lp-admin .form-control,
.lp-admin input[type="text"],
.lp-admin input[type="date"],
.lp-admin textarea,
.lp-admin select,
.lp-admin .form-select {
	width: 100%;
	max-width: 520px;
	height: auto;
	min-height: 40px;
	padding: 8px 12px;
	font-family: inherit;
	font-size: 14px;
	color: var(--lp-ink);
	background-color: #fff;
	border: 1.5px solid #c3cfc4;
	border-radius: 8px;
	box-shadow: none;
	transition: border-color 0.15s, box-shadow 0.15s;
}
.lp-admin textarea {
	min-height: 92px;
	resize: vertical;
}
/* IP ranges read better monospaced, and long lists need the room */
.lp-admin #addressList {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 13px;
	line-height: 1.5;
	min-height: 76px;
}
.lp-admin .form-control:focus,
.lp-admin input:focus,
.lp-admin textarea:focus,
.lp-admin select:focus {
	border-color: var(--lp-green) !important;
	box-shadow: 0 0 0 3px rgba(77, 104, 80, 0.15) !important;
	outline: none;
}
/* Accepted-notation reference under the IP address field */
.lp-admin .lpIpForms {
	list-style: none;
	margin: 6px 0 0;
	padding: 10px 12px;
	max-width: 520px;
	background: var(--lp-tint);
	border: 1px solid var(--lp-line);
	border-radius: 8px;
}
.lp-admin .lpIpForms li {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 4px 10px;
	margin: 0 0 5px;
	font-size: 12px;
	line-height: 1.5;
}
.lp-admin .lpIpForms li:last-child {
	margin-bottom: 0;
}
.lp-admin .lpIpForms span {
	color: var(--lp-muted);
}
.lp-admin code,
.ipBulkHint code {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 12px;
	background: #eaf1ea;
	border: 1px solid #d3e0d4;
	border-radius: 4px;
	padding: 1px 5px;
	color: #2d4d30;
	white-space: nowrap;
}

.ipBulkHint {
	display: block;
	margin-top: 6px;
	font-size: 11px;
	line-height: 1.6;
	color: #5a6b5c;
}
.ipBulkHint code {
	font-size: 11px;
	padding: 0 3px;
}

.lp-admin .help-block {
	display: block;
	margin-top: 5px;
	font-size: 12px;
	line-height: 1.45;
	color: var(--lp-muted);
}

/* ---- Checkboxes -------------------------------------------------------- */

.lp-admin .checkbox-inline,
.lp-admin .checkbox {
	display: inline-flex;
	align-items: center;
	margin: 0 18px 10px 0;
}
.lp-admin .checkbox-inline label,
.lp-admin .checkbox label {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-size: 13px;
	color: var(--lp-body);
	cursor: pointer;
}
.lp-admin input[type="checkbox"] {
	width: 16px;
	height: 16px;
	min-height: 0;
	margin: 0;
	accent-color: var(--lp-green);
	cursor: pointer;
}
.lp-admin .checkbox-material {
	display: none; /* decorative span from the old theme */
}

/* ---- Buttons ----------------------------------------------------------- */

.lp-admin .btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 38px;
	padding: 8px 18px !important;
	margin: 4px 8px 4px 0;
	font-family: inherit;
	font-size: 13px !important;
	font-weight: 600;
	letter-spacing: 0.01em;
	border-radius: 8px !important;
	border: 1.5px solid transparent !important;
	box-shadow: none !important;
	cursor: pointer;
	transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.lp-admin .btn-success,
.lp-admin .btn-fill,
.lp-admin .btn-primary {
	background: var(--lp-green) !important;
	border-color: var(--lp-green) !important;
	color: #fff !important;
}
.lp-admin .btn-success:hover,
.lp-admin .btn-fill:hover,
.lp-admin .btn-primary:hover {
	background: var(--lp-green-dark) !important;
	border-color: var(--lp-green-dark) !important;
}
.lp-admin .btn-danger {
	background: transparent !important;
	border-color: #b4534f !important;
	color: #9c3b38 !important;
}
.lp-admin .btn-danger:hover {
	background: #9c3b38 !important;
	color: #fff !important;
}
.lp-admin .btn-info {
	background: transparent !important;
	border-color: #c3cfc4 !important;
	color: var(--lp-body) !important;
}
.lp-admin .btn-info:hover {
	border-color: var(--lp-green) !important;
	color: var(--lp-green) !important;
}
.lp-admin .btn:focus-visible {
	outline: 3px solid rgba(77, 104, 80, 0.35);
	outline-offset: 2px;
}

/* ---- File pickers ------------------------------------------------------ */

.lp-admin .fileinput {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	margin-top: 10px;
}
.lp-admin .btn-file {
	background: var(--lp-tint) !important;
	border: 1.5px solid #c3cfc4 !important;
	color: var(--lp-green-dark) !important;
	cursor: pointer;
}
.lp-admin .btn-file:hover {
	border-color: var(--lp-green) !important;
	background: #eaf1ea !important;
}
.lp-admin .fileinput-filename {
	font-size: 12px;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	color: var(--lp-muted);
	word-break: break-all;
}
.lp-admin .fileinput .close {
	font-size: 18px;
	line-height: 1;
	color: #9c3b38;
	opacity: 0.7;
	text-decoration: none;
}
.lp-admin .fileinput .close:hover {
	opacity: 1;
}

/* ---- Taxonomy list boxes ---------------------------------------------- */

.lp-admin .fscrollbox {
	display: block;
	height: 190px !important;
	padding: 6px !important;
	border: 1.5px solid #c3cfc4;
	border-radius: 8px;
	background: var(--lp-tint);
}
.lp-admin .crow {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 6px 10px;
	border: none;
	border-radius: 6px;
	font-size: 13px;
}
.lp-admin .crow:hover {
	background: #e6efe7;
}
.lp-admin .crow .cname {
	color: var(--lp-ink);
}
.lp-admin .crow .fdel {
	float: none;
	font-size: 16px !important;
	color: #b0837f;
	cursor: pointer;
	transition: color 0.15s;
}
.lp-admin .crow .fdel:hover {
	color: #9c3b38;
	font-weight: normal;
}

/* ---- Dividers ---------------------------------------------------------- */

.lp-admin .fdivider {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	border-top: 1px solid var(--lp-line);
	margin-top: 24px;
	padding-top: 18px;
}
.lp-admin .fdivider.nobord {
	border-top: none !important;
	margin-top: 8px;
	padding-top: 0;
}
.lp-admin .fdivider.fdown {
	margin-bottom: 14px;
}

/* ---- DataTables -------------------------------------------------------- */

.lp-admin table.dataTable {
	width: 100% !important;
	border-collapse: separate;
	border-spacing: 0;
	font-size: 13px;
}
.lp-admin table.dataTable thead th,
.lp-admin table.dataTable tfoot th {
	background: var(--lp-tint);
	border-bottom: 1px solid var(--lp-line) !important;
	padding: 11px 12px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--lp-muted);
	text-align: left;
}
.lp-admin table.dataTable tbody td {
	padding: 11px 12px;
	border-top: 1px solid #eef2ee;
	vertical-align: top;
	color: var(--lp-body);
}
.lp-admin table.dataTable tbody tr:hover td {
	background: #f8faf8;
}
.lp-admin .dt-container .dt-search input,
.lp-admin .dt-container .dt-length select {
	min-height: 34px;
	border: 1.5px solid #c3cfc4;
	border-radius: 7px;
	padding: 5px 10px;
	max-width: 240px;
}
.lp-admin .dt-container .dt-paging .dt-paging-button {
	border-radius: 6px !important;
	font-size: 12px;
}
.lp-admin .dt-container .dt-paging .dt-paging-button.current {
	background: var(--lp-green) !important;
	border-color: var(--lp-green) !important;
	color: #fff !important;
}
.lp-admin .dt-container .dt-info,
.lp-admin .dt-container .dt-length,
.lp-admin .dt-container .dt-search {
	font-size: 12px;
	color: var(--lp-muted);
}

/* Row action icons in the IP table */
.lp-admin .editIpTools {
	display: flex;
	gap: 4px;
}
.lp-admin .editIpTools .itools {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border-radius: 7px;
	color: var(--lp-muted) !important;
	text-decoration: none !important;
	transition: background 0.15s, color 0.15s;
}
.lp-admin .editIpTools .itools:hover {
	background: #eaf1ea;
	color: var(--lp-green-dark) !important;
}
.lp-admin .editIpTools .adelete:hover {
	background: #fbeceb;
	color: #9c3b38 !important;
}

/* ---- Narrow screens ---------------------------------------------------- */

@media all and (max-width: 900px) {
	.lp-admin {
		margin-right: 0;
	}
	.lp-admin .card {
		padding: 18px 16px;
	}
	.lp-admin .label-on-left {
		padding-top: 0;
		margin-bottom: 4px;
	}
	.lp-admin .form-control,
	.lp-admin select,
	.lp-admin .form-select,
	.lp-admin textarea {
		max-width: 100%;
	}
}

/* Duplicate-record merge panel */
.lpMergePanel {
	max-width: 90%;
	background: #fdf8ec;
	border: 1px solid #e6d9b8;
	border-left: 4px solid #C8A46A;
	border-radius: 8px;
	padding: 16px 20px;
	margin: 16px 0 22px;
}
.lpMergePanel.clean {
	background: #f2f7f2;
	border-color: #cfe0d0;
	border-left-color: #4D6850;
}
.lpMergePanel h4 {
	margin: 0 0 8px;
	font-size: 1.1rem;
	color: #1e2e1f;
}
.lpMergePanel p {
	margin: 0 0 10px;
	font-size: 13px;
	line-height: 1.5;
}
.lpMergePanel .lpMergeNote {
	color: #5a6b5c;
}
/* Usage reports */
.lpUsageFilters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 12px;
}
.lpUsageFilters label {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #5a6b5c;
	margin: 0;
}
.lp-admin .lpUsageFilters input[type="date"],
.lp-admin .lpUsageFilters select {
	max-width: 200px;
	min-width: 140px;
	margin: 0;
}
.lp-admin .lpUsageFilters .btn {
	margin: 0;
}
.lp-admin .lpUsageTable {
	width: 100%;
	font-size: 12px;
}
.lp-admin .lpUsageTable td {
	word-break: break-word;
}

/* Bulk Project assignment */
.lpProjectPanel {
	background: #f2f7f2;
	border-color: #cfe0d0;
	border-left-color: #4D6850;
}
.lpProjectControls {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 12px;
	margin: 12px 0;
}
.lpProjectControls label {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #5a6b5c;
	margin: 0;
}
.lp-admin .lpProjectControls select {
	max-width: 300px;
	min-width: 180px;
	margin: 0;
}
.lp-admin .lpProjectControls .btn {
	margin: 0;
}

/* Encoding-repair preview */
.lpEncodingSamples {
	width: 100%;
	margin: 10px 0 12px;
	border-collapse: collapse;
	font-size: 12px;
	table-layout: fixed;
}
.lpEncodingSamples th {
	text-align: left;
	padding: 6px 8px;
	border-bottom: 1px solid #e6d9b8;
	font-size: 10px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: #7a6a45;
}
.lpEncodingSamples td {
	padding: 6px 8px;
	border-bottom: 1px solid #f0e7d4;
	vertical-align: top;
	word-break: break-word;
}
.lpEncodingSamples code {
	white-space: normal;
}

/* Expired-subscription notice */
.lpExpiredPanel {
	background: #fbf1f1;
	border-color: #e6c9c9;
	border-left-color: #b4534f;
}
.lpExpiredPanel h4 {
	color: #7d1d1d;
}
.lpExpiredList {
	font-size: 13px;
	line-height: 1.9;
}
.ipExpiredOn {
	font-size: 11px;
	color: #9c3b38;
	white-space: nowrap;
}
/* Row-level flag in the institutions table */
.ipExpired {
	display: inline-block;
	margin-left: 6px;
	padding: 1px 7px;
	border-radius: 10px;
	background: #f6dcdb;
	border: 1px solid #dfb3b1;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #7d1d1d;
	vertical-align: 1px;
}
.lp-admin table.dataTable tbody tr.ipRowExpired td {
	background: #fdf7f7;
}
.lp-admin table.dataTable tbody tr.ipRowExpired:hover td {
	background: #fbefef;
}

.lpMergePanel .lpMergeWarn {
	background: #fff4f4;
	border-left: 3px solid #b91c1c;
	padding: 8px 12px;
	color: #6b2020;
}

/* IP ranges: one row per institution, every range shown and edited in that row */
.iprange .ipPill {
	display: inline-block;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 12px;
	background: #eaf2ea;
	border: 1px solid #c0cfc1;
	border-radius: 12px;
	padding: 2px 9px;
	margin: 0 4px 4px 0;
	color: #2d4d30;
	white-space: nowrap;
}
.iprange .ipNone {
	font-size: 12px;
	font-style: italic;
	color: #7d867e;
}
.ipEditRow {
	display: flex;
	align-items: center;
	gap: 4px;
	margin-bottom: 4px;
}
.ipEditRow .ipRangeInput {
	flex: 1 1 auto;
	min-width: 160px;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 12px;
	padding: 3px 8px;
	border: 1px solid #b0beb1;
	border-radius: 6px;
}
/* Entry the server refused — flagged so it can be found among dozens of rows */
.ipEditRow .ipRangeInput.ipBadEntry {
	border-color: #b91c1c;
	background: #fff6f6;
}
.ipEditRow .ipRangeInput.ipBadEntry:focus {
	border-color: #b91c1c;
	box-shadow: 0 0 0 3px rgba(185, 28, 28, 0.15);
}
.ipEditRow .ipRangeInput:focus {
	border-color: #4D6850;
	outline: none;
	box-shadow: 0 0 0 3px rgba(77, 104, 80, 0.15);
}
.ipRangeRemove {
	line-height: 1;
	color: #a03030 !important;
	text-decoration: none !important;
}
.ipRangeRemove:hover {
	color: #7d1d1d !important;
}
.ipRangeRemove .material-symbols-outlined {
	font-size: 16px;
}
.ipRangeAdd,
.ipBulkAdd {
	display: inline-block;
	margin-top: 3px;
	font-size: 12px;
	font-weight: 600;
	color: #4D6850 !important;
	text-decoration: none !important;
}
.ipRangeAdd:hover,
.ipBulkAdd:hover {
	color: #3A4F3D !important;
	text-decoration: underline !important;
}

/* Bulk paste — for institutions carrying dozens of ranges */
.ipBulkWrap {
	display: block;
	margin-top: 8px;
	padding-top: 8px;
	border-top: 1px dashed #d5ded6;
}
.ipBulkInput {
	display: block;
	width: 100%;
	min-width: 200px;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 12px;
	line-height: 1.4;
	padding: 5px 8px;
	border: 1px solid #b0beb1;
	border-radius: 6px;
	resize: vertical;
}
.ipBulkInput:focus {
	border-color: #4D6850;
	outline: none;
	box-shadow: 0 0 0 3px rgba(77, 104, 80, 0.15);
}
.ipBulkNote {
	margin-left: 8px;
	font-size: 11px;
	color: #5a6b5c;
}
/**
 * ip address fancybox *
 */
#homepagePopup {
	text-align: center;
}

/* ============================================================
 * NOTIFICATIONS — toasts and inline field errors
 * Replaces alert(). Not scoped to .lp-admin: these are used on the public catalogue
 * as well as the admin screens.
 * ============================================================ */

#lpToastHost {
	position: fixed;
	right: 18px;
	bottom: 18px;
	z-index: 100000; /* above fancybox (99992) and the wp admin bar */
	display: flex;
	flex-direction: column;
	gap: 10px;
	max-width: min(380px, calc(100vw - 36px));
	pointer-events: none;
}
.lpToast {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 12px 14px;
	border-radius: 10px;
	border: 1px solid #d8e4d9;
	border-left: 4px solid #4D6850;
	background: #ffffff;
	box-shadow: 0 6px 24px rgba(30, 46, 31, 0.16);
	font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 13px;
	line-height: 1.5;
	color: #2a3020;
	pointer-events: auto;
	opacity: 0;
	transform: translateY(10px);
	transition: opacity 0.22s ease, transform 0.22s ease;
}
.lpToast.is-in {
	opacity: 1;
	transform: translateY(0);
}
.lpToast--success { border-left-color: #4D6850; }
.lpToast--error   { border-left-color: #b4534f; }
.lpToast--info    { border-left-color: #C8A46A; }

.lpToastBody {
	flex: 1 1 auto;
	white-space: pre-line; /* honour newlines in longer messages */
}
.lpToastClose {
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	padding: 0;
	border: none;
	background: transparent;
	font-size: 18px;
	line-height: 1;
	color: #8a938b;
	cursor: pointer;
	border-radius: 4px;
}
.lpToastClose:hover {
	color: #2a3020;
	background: #f0f3f0;
}

@media (prefers-reduced-motion: reduce) {
	.lpToast {
		transition: none;
		transform: none;
	}
}

/* Inline validation, pinned to the control that is wrong */
.lpFieldError {
	display: none;
	margin-top: 5px;
	font-size: 12px;
	line-height: 1.45;
	color: #9c3b38;
}
.lpFieldError.is-shown {
	display: block;
}
.lpFieldBad {
	border-color: #b4534f !important;
}
.lpFieldBad:focus {
	box-shadow: 0 0 0 3px rgba(180, 83, 79, 0.18) !important;
}
/* Row-editor note doubling as an error slot */
.ipBulkNote.isError {
	color: #9c3b38;
	font-weight: 600;
}

/* ============================================================
 * SITE USAGE AGREEMENT
 * ============================================================ */

.lp-agreement {
	max-width: 520px;
	padding: 28px 32px 24px;
	background: #f7f5f1;
	border-left: 4px solid #4D6850;
	border-radius: 12px;
}
/* Sans, not the display serif from the global h1–h4 rule — this is something a visitor
   has to read and act on, not a brand flourish. */
.lp-agreement h2 {
	font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 1.35rem;
	font-weight: 700;
	letter-spacing: -0.015em;
	line-height: 1.25;
	color: #1e2e1f;
	margin: 0 0 14px;
}
.lp-agreement p {
	font-size: 15px;
	line-height: 1.55;
	color: #2a3020;
	margin: 0 0 22px;
}
.lp-agreement a {
	color: #4D6850;
	text-decoration: underline;
}
.lp-agreement a:hover,
.lp-agreement a:focus {
	color: #3A4F3D;
}
.lpAgreementAccept {
	font-size: 14px !important;
	padding: 8px 22px !important;
	border-radius: 8px !important;
}

/* Full terms — scrolls inside itself so the modal never drives page scroll */
.lp-agreement-terms {
	max-width: 760px;
	max-height: 78vh;
	overflow-y: auto;
	padding: 28px 34px;
	background: #ffffff;
	border-radius: 12px;
}
.lp-agreement-terms h2 {
	font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 1.2rem;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: #1e2e1f;
	margin: 0 0 18px;
}
.lp-terms-list {
	margin: 0;
	padding-left: 22px;
}
.lp-terms-list > li {
	font-size: 14px;
	line-height: 1.6;
	color: #2a3020;
	margin-bottom: 18px;
	padding-left: 4px;
}
.lp-terms-list p {
	margin: 0 0 12px;
	line-height: 1.6;
}
.lp-terms-list ul {
	margin: 10px 0 0;
	padding-left: 20px;
	list-style: disc;
}
.lp-terms-list ul li {
	margin-bottom: 8px;
}

@media all and (max-width: 600px) {
	.lp-agreement,
	.lp-agreement-terms {
		padding: 20px 18px;
	}
	.lp-agreement-terms {
		max-height: 70vh;
	}
}

/**
 * project selector *
 */
.projlift {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

/* Study-year search label positioning */
.syearlabel {
	position: relative;
	margin-right: 6px;
}
.pubStore {
	display: inline-block;
	position: relative;
}

/***
 * add country *
 **/
#countrySubmit, .btn.addtax {
	margin: 10px;
}

/***
 * delete dataset *
 */
/* (handled above with .dataDelete) */

/**
 * catalogue "all" icon *
 */
.allcat {
	font-size: 0;
	margin-left: 2px;
}

/**
 * mobile cleanup *
 */

/* ============================================================
 * RESPONSIVE
 * ============================================================ */

/* Narrow (≤ 1300px): single-column card grid. The filter panel has its own
   breakpoints in the filter-grid block above. */
@media all and (max-width: 1300px) {
	.fSelectorWrap {
		text-align: left;
		margin: 0 auto 24px;
		box-sizing: border-box;
	}
	.boxyWrapper {
		grid-template-columns: 1fr;
	}
}

/* Phone (≤ 480px): full-width inputs, drop all hardcoded offsets */
@media all and (max-width: 480px) {
	.fSelectorWrap {
		padding: 16px 14px 14px;
		border-left-width: 3px;
	}
	/* Control widths are handled by .fFilterGrid — every field is already one column
	   wide at this size. Rules here would only fight it. */
	/* Year badge block: full width, stop floating right */
	.pubblockContainer {
		width: 100%;
		float: none;
		display: block;
		margin-top: 6px;
	}
}

/* Fancybox modal: keep the close button on-screen on narrow viewports */
@media all and (max-width: 600px) {
	/* Top padding equal to toolbar height so content never hides under the button */
	.fancybox-slide {
		padding: 50px 10px 10px !important;
	}
	.fancybox-slide--html .fancybox-content {
		max-width: 100% !important;
		width: auto !important;
		padding: 20px !important;
		box-sizing: border-box;
	}
	/* Stretch toolbar across full viewport so the close button stays at top-right */
	.fancybox-toolbar {
		width: 100%;
		box-sizing: border-box;
	}
}

/**
 * WordPress theme — WCAG AA contrast fixes
 */

/* Skip-to-content link — ensure visible-on-focus colors meet 3:1 against white */
a.skip-link,
a.skip-link:link,
a.skip-link:visited {
	color: #1a1a1a !important;
	background-color: #ffffff !important;
}

/**
 * Ultimate Member — WCAG AA contrast fixes
 */

/* "Keep me signed in" label */
.um-form .um-field-checkbox-option,
.um .um-field-checkbox-option {
	color: #333333 !important;
}

/* Primary login / submit button */
.um-form #um-submit-btn,
.um #um-submit-btn,
.um-form .um-button:not(.um-alt),
.um .um-button:not(.um-alt) {
	background-color: #4D6850 !important;
	border-color: #3A4F3D !important;
	color: #ffffff !important;
}
.um-form #um-submit-btn:hover,
.um #um-submit-btn:hover,
.um-form .um-button:not(.um-alt):hover,
.um .um-button:not(.um-alt):hover {
	background-color: #3A4F3D !important;
}

/* Secondary / alt button — outlined style, dark text on white */
.um-form .um-button.um-alt,
.um .um-button.um-alt {
	color: #4D6850 !important;
	border-color: #4D6850 !important;
	background-color: transparent !important;
}
.um-form .um-button.um-alt:hover,
.um .um-button.um-alt:hover {
	color: #3A4F3D !important;
	border-color: #3A4F3D !important;
}

/* "Forgot your password?" link */
.um .um-link-alt,
.um .um-link-alt:link,
.um .um-link-alt:visited {
	color: #4D6850 !important;
}
.um .um-link-alt:hover {
	color: #3A4F3D !important;
}
